[
  {
    "path": ".changeset/README.md",
    "content": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works\nwith multi-package repos, or single-package repos to help you version and publish your code. You can\nfind the full documentation for it [in our repository](https://github.com/changesets/changesets)\n\nWe have a quick list of common questions to get you started engaging with this project in\n[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)\n"
  },
  {
    "path": ".changeset/config.json",
    "content": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@1.5.0/schema.json\",\n  \"changelog\": [\n    \"@changesets/changelog-github\",\n    { \"repo\": \"ianstormtaylor/slate\" }\n  ],\n  \"commit\": false,\n  \"linked\": [\n    [\"slate\", \"slate-dom\", \"slate-history\", \"slate-hyperscript\", \"slate-react\"]\n  ],\n  \"access\": \"public\",\n  \"baseBranch\": \"main\",\n  \"updateInternalDependencies\": \"patch\",\n  \"ignore\": [],\n  \"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH\": {\n    \"useCalculatedVersionForSnapshots\": true,\n    \"onlyUpdatePeerDependentsWhenOutOfRange\": true\n  }\n}\n"
  },
  {
    "path": ".changeset/early-suns-judge.md",
    "content": "---\n'slate': patch\n---\n\nDo not allow paths to contain strings when getting nodes\n"
  },
  {
    "path": ".changeset/modern-crabs-try.md",
    "content": "---\n'slate-react': patch\n---\n\nFix Slate component to properly handle editor updates by adding `editor` as a dependency in the useEffect hook.\n"
  },
  {
    "path": ".changeset/olive-planes-work.md",
    "content": "---\n'slate': minor\n---\n\nAdded `force` property to `normalizeNode` passed from `normalize` method\n"
  },
  {
    "path": ".changeset/popular-games-sip.md",
    "content": "---\n'slate-dom': patch\n---\n\nFix text node lookup for toSlatePoint\n"
  },
  {
    "path": ".editorconfig",
    "content": "# editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\ntrim_trailing_whitespace = false\n\n[*.txt]\ninsert_final_newline = false\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": ".eslintignore",
    "content": "*.md\n.github/\n.next/\nbuild/\ndist/\nlib/\nnode_modules/\nsite/out/\ntmp/\nnext.config.js\n.yarn/\n"
  },
  {
    "path": ".eslintrc.json",
    "content": "{\n  \"root\": true,\n  \"extends\": [\n    \"plugin:import/typescript\",\n    \"plugin:prettier/recommended\",\n    \"plugin:react-hooks/recommended\"\n  ],\n  \"plugins\": [\"@typescript-eslint\", \"import\", \"react\"],\n  \"parser\": \"@typescript-eslint/parser\",\n  \"parserOptions\": {\n    \"sourceType\": \"module\",\n    \"ecmaVersion\": 2020,\n    \"ecmaFeatures\": {\n      \"jsx\": true\n    }\n  },\n  \"ignorePatterns\": [\"**/next-env.d.ts\"],\n  \"settings\": {\n    \"import/extensions\": [\".js\", \".ts\", \".jsx\", \".tsx\"],\n    \"react\": {\n      \"version\": \"18\"\n    }\n  },\n  \"env\": {\n    \"browser\": true,\n    \"es6\": true,\n    \"mocha\": true,\n    \"node\": true\n  },\n  \"rules\": {\n    \"constructor-super\": \"error\",\n    \"dot-notation\": [\n      \"error\",\n      {\n        \"allowKeywords\": true\n      }\n    ],\n    \"eqeqeq\": [\"error\", \"smart\"],\n    \"import/default\": \"error\",\n    \"import/export\": \"error\",\n    \"import/first\": \"error\",\n    \"import/named\": \"error\",\n    \"import/namespace\": \"error\",\n    \"import/newline-after-import\": \"error\",\n    \"import/no-deprecated\": \"error\",\n    \"import/no-extraneous-dependencies\": [\n      \"error\",\n      {\n        \"peerDependencies\": true\n      }\n    ],\n    \"import/no-mutable-exports\": \"error\",\n    \"import/no-named-as-default\": \"error\",\n    \"import/no-named-as-default-member\": \"error\",\n    \"import/no-unresolved\": \"error\",\n    \"linebreak-style\": \"error\",\n    \"no-array-constructor\": \"error\",\n    \"no-class-assign\": \"error\",\n    \"no-console\": \"error\",\n    \"no-const-assign\": \"error\",\n    \"no-debugger\": \"error\",\n    \"no-dupe-args\": \"error\",\n    \"no-dupe-class-members\": \"error\",\n    \"no-dupe-keys\": \"error\",\n    \"no-duplicate-case\": \"error\",\n    \"no-empty\": \"error\",\n    \"no-empty-character-class\": \"error\",\n    \"no-empty-pattern\": \"error\",\n    \"no-ex-assign\": \"error\",\n    \"no-extend-native\": \"error\",\n    \"no-extra-boolean-cast\": \"error\",\n    \"no-func-assign\": \"error\",\n    \"no-invalid-regexp\": \"error\",\n    \"no-native-reassign\": \"error\",\n    \"no-negated-in-lhs\": \"error\",\n    \"no-new-object\": \"error\",\n    \"no-new-symbol\": \"error\",\n    \"no-path-concat\": \"error\",\n    \"no-redeclare\": \"error\",\n    \"no-regex-spaces\": \"error\",\n    \"no-sequences\": \"error\",\n    \"no-tabs\": \"error\",\n    \"no-this-before-super\": \"error\",\n    \"no-throw-literal\": \"error\",\n    \"no-unneeded-ternary\": \"error\",\n    \"no-unreachable\": \"error\",\n    \"no-unsafe-finally\": \"error\",\n    \"no-unsafe-negation\": \"error\",\n    \"no-useless-call\": \"error\",\n    \"no-useless-computed-key\": \"error\",\n    \"no-useless-constructor\": \"error\",\n    \"no-useless-rename\": \"error\",\n    \"no-var\": \"error\",\n    \"no-void\": \"error\",\n    \"no-with\": \"error\",\n    \"object-shorthand\": [\"error\", \"always\"],\n    \"prefer-arrow-callback\": \"error\",\n    \"prefer-const\": [\n      \"error\",\n      {\n        \"destructuring\": \"all\",\n        \"ignoreReadBeforeAssign\": true\n      }\n    ],\n    \"prefer-rest-params\": \"error\",\n    \"prefer-spread\": \"error\",\n    \"prefer-template\": \"error\",\n    \"prettier/prettier\": \"error\",\n    \"radix\": \"error\",\n    \"react/jsx-boolean-value\": [\"error\", \"never\"],\n    \"react/jsx-no-duplicate-props\": \"error\",\n    \"react/jsx-no-target-blank\": \"error\",\n    \"react/jsx-no-undef\": \"error\",\n    \"react/jsx-uses-react\": \"error\",\n    \"react/jsx-uses-vars\": \"error\",\n    \"react/jsx-wrap-multilines\": \"error\",\n    \"react/no-deprecated\": \"error\",\n    \"react/no-did-mount-set-state\": \"error\",\n    \"react/no-did-update-set-state\": \"error\",\n    \"react/no-string-refs\": \"error\",\n    \"react/no-unknown-property\": \"error\",\n    \"react/react-in-jsx-scope\": \"error\",\n    \"react/self-closing-comp\": \"error\",\n    \"react/sort-prop-types\": \"error\",\n    \"spaced-comment\": [\n      \"error\",\n      \"always\",\n      {\n        \"exceptions\": [\"-\"]\n      }\n    ],\n    \"use-isnan\": \"error\",\n    \"valid-typeof\": \"error\",\n    \"yield-star-spacing\": [\"error\", \"after\"],\n    \"yoda\": [\"error\", \"never\"]\n  },\n  \"overrides\": [\n    {\n      \"files\": \"**/test/**/*.{js,jsx,ts,tsx}\",\n      \"rules\": {\n        \"import/no-extraneous-dependencies\": \"off\",\n        \"import/no-unresolved\": \"off\",\n        \"react/no-unknown-property\": \"off\"\n      }\n    },\n    {\n      \"files\": \"**/*.{ts,tsx}\",\n      \"rules\": {\n        \"import/named\": \"off\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": ".gitattributes",
    "content": "* text=auto eol=lf\n"
  },
  {
    "path": ".gitbook.yaml",
    "content": "root: ./docs\nstructure:\n  readme: Introduction.md\n  summary: Summary.md\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-core.md",
    "content": "---\nname: \"\\U0001F6A8 Bug: Core\"\nabout: A bug that occurs in Slate's core logic, on all platforms\ntitle: ''\nlabels: bug\nassignees: ''\n\n---\n\n**Description**\nA clear and concise description of what the bug is.\n\n**Recording**\nA GIF or video showing the issue happening. (If you don't include this, there's a very good chance your issue will be closed, because it's much too hard to figure out exactly what is going wrong, and it makes maintenance much harder.)\n\n**Sandbox**\nA link to a sandbox where the error can be reproduced. (You can start from the base sandbox here: https://codesandbox.io/s/slate-reproductions-c7gyg or refer to the Slate website too.)\n\n**Steps**\nTo reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expectation**\nA clear and concise description of what you expected to happen. (Often it's helpful to test out the behavior of other editors like Google Docs, Medium, Notion, etc. to see how they handle the same issue.)\n\n**Environment**\n- Slate Version: [e.g. 0.59]\n- Operating System: [e.g. iOS]\n- Browser: [e.g. Chrome, Safari]\n- TypeScript Version: [e.g. 3.9.7 - required only if it's a TypeScript issue]\n\n**Context**\nAdd any other context about the problem here. (The fastest way to have an issue fixed is to create a pull request with working, tested code and we'll help merge it. Slate is solving a pretty complex problem, and we can't do it without active contributors, so thank you so much for your help!)\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-platform.md",
    "content": "---\nname: \"\\U0001F5A5 Bug: Platform\"\nabout: A bug that occurs in a specific browser or platform\ntitle: ''\nlabels: bug, ⚑ cross platform\nassignees: ''\n\n---\n\n**Description**\nA clear and concise description of what the bug is.\n\n**Recording**\nA GIF or video showing the issue happening. (If you don't include this, there's a very good chance your issue will be closed, because it's much too hard to figure out exactly what is going wrong, and it makes maintenance much harder.)\n\n**Sandbox**\nA link to a sandbox where the error can be reproduced. (You can start from the base sandbox here: https://codesandbox.io/s/slate-reproductions-c7gyg or refer to the Slate website too.)\n\n**Steps**\nTo reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expectation**\nA clear and concise description of what you expected to happen. (Often it's helpful to test out the behavior of other editors like Google Docs, Medium, Notion, etc. to see how they handle the same issue.)\n\n**Environment**\n- Slate Version: [e.g. 0.59]\n- Operating System: [e.g. iOS]\n- Browser: [e.g. Chrome, Safari]\n\n**Context**\nAdd any other context about the problem here. (The fastest way to have an issue fixed is to create a pull request with working, tested code and we'll help merge it. Slate is solving a pretty complex problem, and we can't do it without active contributors, so thank you so much for your help!)\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: \"💬 Support: Slack\"\n    url: https://join.slack.com/t/slate-js/shared_invite/zt-f8t986ip-7dA1DyiqPpzootz1snKXkw\n    about: Please ask and answer questions in our Slack channel.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/request-feature.md",
    "content": "---\nname: \"\\U0001F4E6 Request: Feature\"\nabout: An idea or request for new functionality\ntitle: ''\nlabels: feature\nassignees: ''\n\n---\n\n**Problem**\nA clear and concise description of what the problem is. (Eg. I'm always frustrated when [...])\n\n**Solution**\nA clear and concise description of what you want to happen.\n\n**Alternatives**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Context**\nAdd any other context about the problem here. (The fastest way to have an issue fixed is to create a pull request with working, tested code and we'll help merge it. Slate is solving a pretty complex problem, and we can't do it without active contributors, so thank you so much for your help!)\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/request-improvement.md",
    "content": "---\nname: \"\\U0001F6E0 Request: Improvement\"\nabout: An improvement to existing functionality\ntitle: ''\nlabels: improvement\nassignees: ''\n\n---\n\n**Problem**\nA clear and concise description of what the problem is. (Eg. I'm always frustrated when [...])\n\n**Solution**\nA clear and concise description of what you want to happen.\n\n**Alternatives**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Context**\nAdd any other context about the problem here. (The fastest way to have an issue fixed is to create a pull request with working, tested code and we'll help merge it. Slate is solving a pretty complex problem, and we can't do it without active contributors, so thank you so much for your help!)\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "**Description**\nA clear and concise description of what this pull request solves. (Please do not just link to a long issue thread. Instead include a clear description here or your pull request will likely not be reviewed as quickly.)\n\n**Issue**\nFixes: (link to issue)\n\n**Example**\nA GIF or video showing the old and new behaviors after this pull request is merged. Or a code sample showing the usage of a new API. (If you don't include this, your pull request will not be reviewed as quickly, because it's much too hard to figure out exactly what is going wrong, and it makes maintenance much harder.)\n\n**Context**\nIf your change is non-trivial, please include a description of how the new logic works, and why you decided to solve it the way you did. (This is incredibly helpful so that reviewers don't have to guess your intentions based on the code, and without it your pull request will likely not be reviewed as quickly.)\n\n**Checks**\n- [ ] The new code matches the existing patterns and styles.\n- [ ] The tests pass with `yarn test`.\n- [ ] The linter passes with `yarn lint`. (Fix errors with `yarn fix`.)\n- [ ] The relevant examples still work. (Run examples with `yarn start`.)\n- [ ] You've [added a changeset](https://github.com/atlassian/changesets/blob/master/docs/adding-a-changeset.md) if changing functionality. (Add one with `yarn changeset add`.)\n\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  - push\n  - pull_request\n\npermissions:\n  contents: read # to fetch code (actions/checkout)\n\njobs:\n  ci:\n    name: ${{ matrix.command }}\n    # Pin the version to avoid dependency installation issues\n    runs-on: ubuntu-22.04\n    strategy:\n      matrix:\n        command:\n          - 'test'\n          - 'test:integration'\n          - 'lint:eslint'\n          - 'lint:prettier'\n          - 'lint:typescript'\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v4\n\n      - name: Setup node\n        uses: actions/setup-node@v4\n        with:\n          node-version: 22.17\n          cache: yarn\n\n      - name: Run ${{ matrix.command }}\n        run: yarn && yarn build && yarn ${{ matrix.command }}\n        env:\n          CI: true\n\n      - name: Upload Playwright test results\n        if: ${{ !cancelled() && matrix.command == 'test:integration' }}\n        uses: actions/upload-artifact@v4\n        with:\n          name: test-results\n          path: test-results\n          retention-days: 30\n"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "content": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# You may wish to alter this file to override the set of languages analyzed,\n# or to provide custom queries or build logic.\n#\n# ******** NOTE ********\n# We have attempted to detect the languages in your repository. Please check\n# the `language` matrix defined below to confirm you have the correct set of\n# supported CodeQL languages.\n#\nname: \"CodeQL\"\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    # The branches below must be a subset of the branches above\n    branches: [ main ]\n  schedule:\n    - cron: '16 22 * * 3'\n\njobs:\n  analyze:\n    name: Analyze\n    runs-on: ubuntu-latest\n    permissions:\n      actions: read\n      contents: read\n      security-events: write\n\n    strategy:\n      fail-fast: false\n      matrix:\n        language: [ 'javascript' ]\n        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]\n        # Learn more about CodeQL language support at https://git.io/codeql-language-support\n\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n\n    # Initializes the CodeQL tools for scanning.\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v3\n      with:\n        languages: ${{ matrix.language }}\n        # If you wish to specify custom queries, you can do so here or in a config file.\n        # By default, queries listed here will override any specified in a config file.\n        # Prefix the list here with \"+\" to use these queries and those in the config file.\n        # queries: ./path/to/local/query, your-org/your-repo/queries@main\n\n    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).\n    # If this step fails, then you should remove it and run the build manually (see below)\n    - name: Autobuild\n      uses: github/codeql-action/autobuild@v3\n\n    # ℹ️ Command-line programs to run using the OS shell.\n    # 📚 https://git.io/JvXDl\n\n    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines\n    #    and modify them (or add more) to build your code if your project\n    #    uses a compiled language\n\n    #- run: |\n    #   make bootstrap\n    #   make release\n\n    - name: Perform CodeQL Analysis\n      uses: github/codeql-action/analyze@v3\n"
  },
  {
    "path": ".github/workflows/comment.yml",
    "content": "# https://github.com/marketplace/actions/automatic-rebase  (https://github.com/cirrus-actions/rebase)\nname: Comment\n\non:\n  issue_comment:\n    types:\n      - created\n\npermissions:\n  contents: read # to fetch code (actions/checkout)\n  pull-requests: read # to get info about PR (cirrus-actions/rebase)\n\njobs:\n  rebase:\n    permissions:\n      contents: write # to push code to rebase (cirrus-actions/rebase)\n      pull-requests: read # to get info about PR (cirrus-actions/rebase)\n\n    name: rebase\n    runs-on: ubuntu-latest\n    if: |\n      github.event.issue.pull_request &&\n      startsWith(github.event.comment.body, '/rebase')\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Rebase PR\n        uses: cirrus-actions/rebase@1.3.1\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n  release_next:\n    permissions:\n      contents: read # to fetch code (actions/checkout)\n      pull-requests: write # to create or update comment (peter-evans/create-or-update-comment)\n\n    name: release:next\n    runs-on: ubuntu-latest\n    if: |\n      github.event.issue.pull_request &&\n      github.event.sender.login == 'ianstormtaylor' &&\n      startsWith(github.event.comment.body, '/release:next')\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Checkout pull request\n        run: hub pr checkout ${{ github.event.issue.number }}\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Setup node\n        uses: actions/setup-node@v4\n        with:\n          node-version: 22.17\n          cache: yarn\n          registry-url: https://registry.npmjs.org\n          key: node22\n\n      - name: Install dependencies\n        run: yarn\n\n      - name: Prepare release\n        run: yarn prerelease\n\n      # https://github.com/atlassian/changesets/blob/master/docs/snapshot-releases.md\n      - name: Release to @pr channel\n        run: |\n          yarn changeset version --snapshot\n          yarn changeset publish --tag pr\n        env:\n          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Get released version\n        id: version\n        run: echo ::set-output name=version::$(node -p \"require('./packages/slate/package.json').version\")\n\n      - name: Create comment\n        uses: peter-evans/create-or-update-comment@v1\n        with:\n          issue-number: ${{ github.event.issue.number }}\n          body: |\n            A new release has been made for this pull request. You can install it with `yarn add slate@${{ steps.version.outputs.version }}`.\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\n\non:\n  push:\n    branches:\n      - main\n\npermissions: {}\n\njobs:\n  release:\n    name: ${{ matrix.channel }}\n    runs-on: ubuntu-latest\n\n    permissions:\n      contents: write\n      pull-requests: write\n      id-token: write\n\n    strategy:\n      max-parallel: 1\n      matrix:\n        channel: [latest, dev]\n\n    steps:\n      - name: Checkout repo\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Setup node\n        uses: actions/setup-node@v4\n        with:\n          node-version: 22.17\n          cache: yarn\n          # IMPORTANT: do NOT set registry-url here (avoid auth/.npmrc side effects)\n\n      - name: Enable Corepack (Yarn)\n        run: corepack enable\n\n      - name: Upgrade npm (OIDC fixes ship in npm releases)\n        run: npm i -g npm@latest\n\n      - name: Configure npm registry (no token)\n        run: |\n          cat > ~/.npmrc <<'EOF'\n          registry=https://registry.npmjs.org/\n          EOF\n\n      - name: Debug npm auth config\n        run: |\n          npm -v\n          echo \"=== user npmrc ===\"\n          cat ~/.npmrc || true\n          echo \"=== any auth/token config? ===\"\n          npm config list -l | grep -iE 'auth|token|always-auth' || true\n\n      - name: Install dependencies\n        run: yarn install\n\n      - name: Prepare release\n        run: yarn prerelease\n\n      - name: Create or update release PR\n        if: matrix.channel == 'latest'\n        id: changesets\n        uses: changesets/action@v1\n        with:\n          version: yarn changesetversion\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Publish to npm (OIDC)\n        if: matrix.channel == 'latest' && steps.changesets.outputs.hasChangesets == 'false'\n        run: yarn changeset publish\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Release to @dev channel\n        if: matrix.channel == 'dev'\n        run: |\n          yarn changeset version --snapshot\n          yarn changeset publish --tag dev\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".gitignore",
    "content": "*.log\n.next/\n.idea/\n*.tsbuildinfo\nbuild/\ndist/\nlib/\nnode_modules/\npackages/*/yarn.lock\nsite/out/\ntmp/\ntest-results/\ncoverage\n.DS_Store\n\n# Recommendation from https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored (not using Zero-installs)\n.yarn/*\n!.yarn/releases\n!.yarn/plugins\n!/.yarn/sdks/\n!/.yarn/sdks/**/lib/\n!.yarn/versions\n.pnp.*\n"
  },
  {
    "path": ".markdownlint.json",
    "content": "{\n  \"MD001\": false,\n  \"MD013\": false\n}\n"
  },
  {
    "path": ".prettierignore",
    "content": ".babelrc\n.github\n.next/\nbuild/\ndist/\nlib/\nnode_modules/\npackage.json\nsite/out/\ntmp/\n.yarn/\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"singleQuote\": true,\n  \"semi\": false,\n  \"arrowParens\": \"avoid\",\n  \"trailingComma\": \"es5\"\n}\n"
  },
  {
    "path": ".vscode/extensions.json",
    "content": "{\n  \"recommendations\": [\n    \"arcanis.vscode-zipfs\",\n    \"dbaeumer.vscode-eslint\",\n    \"esbenp.prettier-vscode\"\n  ]\n}\n"
  },
  {
    "path": ".vscode/launch.json",
    "content": "{\n  // Use IntelliSense to learn about possible attributes.\n  // Hover to view descriptions of existing attributes.\n  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"args\": [\n        \"mocha\",\n        \"--require\",\n        \"${workspaceFolder}/config/babel/register.cjs\",\n        \"${workspaceFolder}/packages/{slate,slate-history,slate-hyperscript}/test/**/*.{js,ts}\",\n        \"--grep\",\n        \"${fileBasenameNoExtension}\",\n        \"--timeout\",\n        \"999999\"\n      ],\n      \"internalConsoleOptions\": \"openOnSessionStart\",\n      \"name\": \"Mocha Tests\",\n      \"program\": \"${workspaceFolder}/.yarn/releases/yarn-4.0.2.cjs\",\n      \"request\": \"launch\",\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"type\": \"node\"\n    },\n    {\n      \"type\": \"firefox\",\n      \"request\": \"launch\",\n      \"reAttach\": true,\n      \"name\": \"Debug in Firefox\",\n      \"url\": \"http://localhost:3000\",\n      \"webRoot\": \"${workspaceFolder}\",\n      \"outFiles\": [\n        \"${workspaceFolder}/packages/*/dist/**/*.js\",\n        \"!**/node_modules/**\"\n      ],\n      \"pathMappings\": [\n        {\n          \"url\": \"webpack://_n_e/src/interfaces\",\n          \"path\": \"${workspaceFolder}/packages/slate/src/interfaces\"\n        },\n        {\n          \"url\": \"webpack://_n_e/src/transforms\",\n          \"path\": \"${workspaceFolder}/packages/slate/src/transforms\"\n        },\n        {\n          \"url\": \"webpack://_n_e/src/utils\",\n          \"path\": \"${workspaceFolder}/packages/slate/src/utils\"\n        },\n        {\n          \"url\": \"webpack://_n_e/src/components\",\n          \"path\": \"${workspaceFolder}/packages/slate-react/src/components\"\n        },\n        {\n          \"url\": \"webpack://_n_e/src/hooks\",\n          \"path\": \"${workspaceFolder}/packages/slate-react/src/hooks\"\n        },\n        {\n          \"url\": \"webpack://_n_e/src/plugin\",\n          \"path\": \"${workspaceFolder}/packages/slate-react/src/plugin\"\n        },\n        {\n          \"url\": \"webpack://_n_e/src/utils\",\n          \"path\": \"${workspaceFolder}/packages/slate-react/src/utils\"\n        }\n      ]\n    },\n    {\n      \"type\": \"pwa-chrome\",\n      \"request\": \"launch\",\n      \"name\": \"Launch Chrome against localhost\",\n      \"url\": \"http://localhost:3000\",\n      \"webRoot\": \"${workspaceFolder}\",\n      \"outFiles\": [\n        \"${workspaceFolder}/packages/*/dist/**/*.js\",\n        \"!**/node_modules/**\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"search.exclude\": {\n    \"**/.yarn\": true,\n    \"**/.pnp.*\": true\n  },\n  \"eslint.nodePath\": \".yarn/sdks\",\n  \"prettier.prettierPath\": \".yarn/sdks/prettier/index.cjs\",\n  \"typescript.tsdk\": \".yarn/sdks/typescript/lib\",\n  \"typescript.enablePromptUseWorkspaceTsdk\": true\n}\n"
  },
  {
    "path": ".yarn/releases/yarn-4.0.2.cjs",
    "content": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var n_e=Object.create;var MT=Object.defineProperty;var i_e=Object.getOwnPropertyDescriptor;var s_e=Object.getOwnPropertyNames;var o_e=Object.getPrototypeOf,a_e=Object.prototype.hasOwnProperty;var Be=(t=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(t,{get:(e,r)=>(typeof require<\"u\"?require:e)[r]}):t)(function(t){if(typeof require<\"u\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+t+'\" is not supported')});var Et=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Kt=(t,e)=>{for(var r in e)MT(t,r,{get:e[r],enumerable:!0})},l_e=(t,e,r,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of s_e(e))!a_e.call(t,a)&&a!==r&&MT(t,a,{get:()=>e[a],enumerable:!(o=i_e(e,a))||o.enumerable});return t};var $e=(t,e,r)=>(r=t!=null?n_e(o_e(t)):{},l_e(e||!t||!t.__esModule?MT(r,\"default\",{value:t,enumerable:!0}):r,t));var vi={};Kt(vi,{SAFE_TIME:()=>F7,S_IFDIR:()=>wD,S_IFLNK:()=>ID,S_IFMT:()=>Mu,S_IFREG:()=>Hw});var Mu,wD,Hw,ID,F7,T7=Et(()=>{Mu=61440,wD=16384,Hw=32768,ID=40960,F7=456789e3});var ar={};Kt(ar,{EBADF:()=>Io,EBUSY:()=>c_e,EEXIST:()=>g_e,EINVAL:()=>A_e,EISDIR:()=>h_e,ENOENT:()=>f_e,ENOSYS:()=>u_e,ENOTDIR:()=>p_e,ENOTEMPTY:()=>m_e,EOPNOTSUPP:()=>y_e,EROFS:()=>d_e,ERR_DIR_CLOSED:()=>OT});function Rl(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function c_e(t){return Rl(\"EBUSY\",t)}function u_e(t,e){return Rl(\"ENOSYS\",`${t}, ${e}`)}function A_e(t){return Rl(\"EINVAL\",`invalid argument, ${t}`)}function Io(t){return Rl(\"EBADF\",`bad file descriptor, ${t}`)}function f_e(t){return Rl(\"ENOENT\",`no such file or directory, ${t}`)}function p_e(t){return Rl(\"ENOTDIR\",`not a directory, ${t}`)}function h_e(t){return Rl(\"EISDIR\",`illegal operation on a directory, ${t}`)}function g_e(t){return Rl(\"EEXIST\",`file already exists, ${t}`)}function d_e(t){return Rl(\"EROFS\",`read-only filesystem, ${t}`)}function m_e(t){return Rl(\"ENOTEMPTY\",`directory not empty, ${t}`)}function y_e(t){return Rl(\"EOPNOTSUPP\",`operation not supported, ${t}`)}function OT(){return Rl(\"ERR_DIR_CLOSED\",\"Directory handle was closed\")}var BD=Et(()=>{});var Ea={};Kt(Ea,{BigIntStatsEntry:()=>ey,DEFAULT_MODE:()=>HT,DirEntry:()=>UT,StatEntry:()=>$m,areStatsEqual:()=>jT,clearStats:()=>vD,convertToBigIntStats:()=>C_e,makeDefaultStats:()=>R7,makeEmptyStats:()=>E_e});function R7(){return new $m}function E_e(){return vD(R7())}function vD(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r==\"number\"?t[e]=0:typeof r==\"bigint\"?t[e]=BigInt(0):_T.types.isDate(r)&&(t[e]=new Date(0))}return t}function C_e(t){let e=new ey;for(let r in t)if(Object.hasOwn(t,r)){let o=t[r];typeof o==\"number\"?e[r]=BigInt(o):_T.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function jT(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var _T,HT,UT,$m,ey,qT=Et(()=>{_T=$e(Be(\"util\")),HT=33188,UT=class{constructor(){this.name=\"\";this.path=\"\";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},$m=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=HT;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ey=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(HT);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function D_e(t){let e,r;if(e=t.match(B_e))t=e[1];else if(r=t.match(v_e))t=`\\\\\\\\${r[1]?\".\\\\\":\"\"}${r[2]}`;else return t;return t.replace(/\\//g,\"\\\\\")}function P_e(t){t=t.replace(/\\\\/g,\"/\");let e,r;return(e=t.match(w_e))?t=`/${e[1]}`:(r=t.match(I_e))&&(t=`/unc/${r[1]?\".dot/\":\"\"}${r[2]}`),t}function DD(t,e){return t===ue?L7(e):GT(e)}var jw,Bt,dr,ue,K,N7,w_e,I_e,B_e,v_e,GT,L7,Ca=Et(()=>{jw=$e(Be(\"path\")),Bt={root:\"/\",dot:\".\",parent:\"..\"},dr={home:\"~\",nodeModules:\"node_modules\",manifest:\"package.json\",lockfile:\"yarn.lock\",virtual:\"__virtual__\",pnpJs:\".pnp.js\",pnpCjs:\".pnp.cjs\",pnpData:\".pnp.data.json\",pnpEsmLoader:\".pnp.loader.mjs\",rc:\".yarnrc.yml\",env:\".env\"},ue=Object.create(jw.default),K=Object.create(jw.default.posix);ue.cwd=()=>process.cwd();K.cwd=process.platform===\"win32\"?()=>GT(process.cwd()):process.cwd;process.platform===\"win32\"&&(K.resolve=(...t)=>t.length>0&&K.isAbsolute(t[0])?jw.default.posix.resolve(...t):jw.default.posix.resolve(K.cwd(),...t));N7=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?\".\":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};ue.contains=(t,e)=>N7(ue,t,e);K.contains=(t,e)=>N7(K,t,e);w_e=/^([a-zA-Z]:.*)$/,I_e=/^\\/\\/(\\.\\/)?(.*)$/,B_e=/^\\/([a-zA-Z]:.*)$/,v_e=/^\\/unc\\/(\\.dot\\/)?(.*)$/;GT=process.platform===\"win32\"?P_e:t=>t,L7=process.platform===\"win32\"?D_e:t=>t;ue.fromPortablePath=L7;ue.toPortablePath=GT});async function PD(t,e){let r=\"0123456789abcdef\";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function M7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:Lg,mtime:Lg}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await YT(A,p,t,n,r,u,{...a,didParentExist:!0});for(let I of A)await I();await Promise.all(p.map(I=>I()))}async function YT(t,e,r,o,a,n,u){let A=u.didParentExist?await O7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=u.stableTime?{atime:Lg,mtime:Lg}:p,I;switch(!0){case p.isDirectory():I=await x_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():I=await Q_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():I=await F_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(u.linkStrategy?.type!==\"HardlinkFromIndex\"||!p.isFile())&&((I||A?.mtime?.getTime()!==E.getTime()||A?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,E)),I=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),I=!0)),I}async function O7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function x_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!==\"EEXIST\")throw v}}),h=!0);let E=await n.readdirPromise(u),I=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of E.sort())await YT(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),I)&&(h=!0);else(await Promise.all(E.map(async b=>{await YT(t,e,r,r.pathUtils.join(o,b),n,n.pathUtils.join(u,b),I)}))).some(b=>b)&&(h=!0);return h}async function b_e(t,e,r,o,a,n,u,A,p,h){let E=await n.checksumFilePromise(u,{algorithm:\"sha1\"}),I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${E}.dat`),v;(te=>(te[te.Lock=0]=\"Lock\",te[te.Rename=1]=\"Rename\"))(v||={});let b=1,C=await O7(r,I);if(a){let U=C&&a.dev===C.dev&&a.ino===C.ino,J=C?.mtimeMs!==S_e;if(U&&J&&h.autoRepair&&(b=0,C=null),!U)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let T=!C&&b===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,\"0\")}`:null,L=!1;return t.push(async()=>{if(!C&&(b===0&&await r.lockPromise(I,async()=>{let U=await n.readFilePromise(u);await r.writeFilePromise(I,U)}),b===1&&T)){let U=await n.readFilePromise(u);await r.writeFilePromise(T,U);try{await r.linkPromise(T,I)}catch(J){if(J.code===\"EEXIST\")L=!0,await r.unlinkPromise(T);else throw J}}a||await r.linkPromise(I,o)}),e.push(async()=>{C||await r.lutimesPromise(I,Lg,Lg),T&&!L&&await r.unlinkPromise(T)}),!1}async function k_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function Q_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type===\"HardlinkFromIndex\"?b_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):k_e(t,e,r,o,a,n,u,A,p)}async function F_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(DD(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Lg,S_e,WT=Et(()=>{Ca();Lg=new Date(456789e3*1e3),S_e=Lg.getTime()});function SD(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>\"u\")return null;let u=t.pathUtils.join(e,n);return Object.assign(t.statSync(u),{name:n,path:void 0})};return new qw(e,a,o)}var qw,U7=Et(()=>{BD();qw=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw OT()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<\"u\"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<\"u\"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function _7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var H7,ty,j7=Et(()=>{H7=Be(\"events\");qT();ty=class extends H7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status=\"ready\";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new ty(r,o,a);return n.start(),n}start(){_7(this.status,\"ready\"),this.status=\"running\",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(\"change\",this.lastStats,this.lastStats)},3)}stop(){_7(this.status,\"running\"),this.status=\"stopped\",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(\"stop\")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let o=this.bigint?new ey:new $m;return vD(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;jT(a,n)||(this.lastStats=a,this.emit(\"change\",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener(\"change\",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener(\"change\",r);let o=this.changeListeners.get(r);typeof o<\"u\"&&clearInterval(o),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function ry(t,e,r,o){let a,n,u,A;switch(typeof r){case\"function\":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=xD.get(t);typeof p>\"u\"&&xD.set(t,p=new Map);let h=p.get(e);return typeof h>\"u\"&&(h=ty.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function Mg(t,e,r){let o=xD.get(t);if(typeof o>\"u\")return;let a=o.get(e);typeof a>\"u\"||(typeof r>\"u\"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function Og(t){let e=xD.get(t);if(!(typeof e>\"u\"))for(let r of e.keys())Mg(t,r)}var xD,VT=Et(()=>{j7();xD=new WeakMap});function T_e(t){let e=t.match(/\\r?\\n/g);if(e===null)return G7.EOL;let r=e.filter(a=>a===`\\r\n`).length,o=e.length-r;return r>o?`\\r\n`:`\n`}function Ug(t,e){return e.replace(/\\r?\\n/g,T_e(t))}var q7,G7,hf,Ou,_g=Et(()=>{q7=Be(\"crypto\"),G7=Be(\"os\");WT();Ca();hf=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let u=await this.readdirPromise(a);if(r)for(let A of u.sort())o.push(this.pathUtils.join(a,A));else throw new Error(\"Not supported\")}else yield a}}async checksumFilePromise(e,{algorithm:r=\"sha512\"}={}){let o=await this.openPromise(e,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,q7.createHash)(r),A=0;for(;(A=await this.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest(\"hex\")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code===\"ENOENT\")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(u=>this.removePromise(this.pathUtils.resolve(e,u))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(u){if(u.code!==\"EBUSY\"&&u.code!==\"ENOTEMPTY\")throw u;n<o&&await new Promise(A=>setTimeout(A,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code===\"ENOENT\")return;throw a}if(o.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{await this.mkdirPromise(A)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=A,r!=null&&await this.chmodPromise(A,r),o!=null)await this.utimesPromise(A,o[0],o[1]);else{let p=await this.statPromise(this.pathUtils.dirname(A));await this.utimesPromise(A,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{this.mkdirSync(A)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=A,r!=null&&this.chmodSync(A,r),o!=null)this.utimesSync(A,o[0],o[1]);else{let p=this.statSync(this.pathUtils.dirname(A));this.utimesSync(A,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:u=!1,linkStrategy:A=null}={}){return await M7(this,e,o,r,{overwrite:a,stableSort:n,stableTime:u,linkStrategy:A})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=o.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),o.pathUtils.join(r,h),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!u||a){u&&this.removeSync(e);let p=o.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!u||a){u&&this.removeSync(e);let p=o.readlinkSync(r);this.symlinkSync(DD(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,\"0\")})`);let A=n.mode&511;this.chmodSync(e,A)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n=\"\";try{n=await this.readFilePromise(e,\"utf8\")}catch{}let u=o?Ug(n,r):r;n!==u&&await this.writeFilePromise(e,u,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n=\"\";try{n=this.readFileSync(e,\"utf8\")}catch{}let u=o?Ug(n,r):r;n!==u&&this.writeFileSync(e,u,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code===\"EXDEV\")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code===\"EXDEV\")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A=async()=>{let p;try{[p]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;u===null;)try{u=await this.openPromise(o,\"wx\")}catch(p){if(p.code===\"EEXIST\"){if(!await A())try{await this.unlinkPromise(o);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${o})`)}else throw p}await this.writePromise(u,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(u),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,\"utf8\");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,\"utf8\");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r,{compact:o=!1}={}){let a=o?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)}\n`)}writeJsonSync(e,r,{compact:o=!1}={}){let a=o?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)}\n`)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<\"u\"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},Ou=class extends hf{constructor(){super(K)}}});var Ps,gf=Et(()=>{_g();Ps=class extends hf{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r==\"string\"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r==\"string\"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(u,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(u,a,o)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e==\"number\"?e:this.mapToBase(e)}}});var Uu,Y7=Et(()=>{gf();Uu=class extends Ps{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});function W7(t){let e=t;return typeof t.path==\"string\"&&(e.path=ue.toPortablePath(t.path)),e}var V7,Rn,Hg=Et(()=>{V7=$e(Be(\"fs\"));_g();Ca();Rn=class extends Ou{constructor(r=V7.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return Bt.root}resolve(r){return K.resolve(r)}async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.open(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}openSync(r,o,a){return this.realFs.openSync(ue.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<\"u\"?this.realFs.opendir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(ue.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>{let n=a;return Object.defineProperty(n,\"path\",{value:r,configurable:!0,writable:!0}),n})}opendirSync(r,o){let n=typeof o<\"u\"?this.realFs.opendirSync(ue.fromPortablePath(r),o):this.realFs.opendirSync(ue.fromPortablePath(r));return Object.defineProperty(n,\"path\",{value:r,configurable:!0,writable:!0}),n}async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{this.realFs.read(r,o,a,n,u,(h,E)=>{h?p(h):A(E)})})}readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o==\"string\"?this.realFs.write(r,o,a,this.makeCallback(A,p)):this.realFs.write(r,o,a,n,u,this.makeCallback(A,p)))}writeSync(r,o,a,n,u){return typeof o==\"string\"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,u)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(ue.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}realpathSync(r){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(ue.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(ue.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(ue.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(ue.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(ue.fromPortablePath(r),o):this.realFs.statSync(ue.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(ue.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(ue.fromPortablePath(r),o):this.realFs.lstatSync(ue.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(ue.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,u))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.chown(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}chownSync(r,o,a){return this.realFs.chownSync(ue.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.realFs.copyFile(ue.fromPortablePath(r),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(ue.fromPortablePath(r),ue.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.appendFile(A,o,a,this.makeCallback(n,u)):this.realFs.appendFile(A,o,this.makeCallback(n,u))})}appendFileSync(r,o,a){let n=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.writeFile(A,o,a,this.makeCallback(n,u)):this.realFs.writeFile(A,o,this.makeCallback(n,u))})}writeFileSync(r,o,a){let n=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(ue.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(ue.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.utimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}utimesSync(r,o,a){this.realFs.utimesSync(ue.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.lutimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}lutimesSync(r,o,a){this.realFs.lutimesSync(ue.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(ue.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(ue.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.symlink(ue.fromPortablePath(r.replace(/\\/+$/,\"\")),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(ue.fromPortablePath(r.replace(/\\/+$/,\"\")),ue.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof r==\"string\"?ue.fromPortablePath(r):r;this.realFs.readFile(u,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r==\"string\"?ue.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o?o.recursive&&process.platform===\"win32\"?o.withFileTypes?this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(W7)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(ue.toPortablePath)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.readdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}readdirSync(r,o){return o?o.recursive&&process.platform===\"win32\"?o.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(r),o).map(W7):this.realFs.readdirSync(ue.fromPortablePath(r),o).map(ue.toPortablePath):this.realFs.readdirSync(ue.fromPortablePath(r),o):this.realFs.readdirSync(ue.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(ue.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}readlinkSync(r){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(ue.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(ue.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(ue.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(ue.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var gn,K7=Et(()=>{Hg();gf();Ca();gn=class extends Ps{constructor(r,{baseFs:o=new Rn}={}){super(K);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?K.normalize(r):this.baseFs.resolve(K.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var J7,_u,z7=Et(()=>{Hg();gf();Ca();J7=Bt.root,_u=class extends Ps{constructor(r,{baseFs:o=new Rn}={}){super(K);this.target=this.pathUtils.resolve(Bt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Bt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(J7,r));if(o.match(/^\\.\\.\\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(J7,this.pathUtils.relative(this.target,r))}}});var ny,X7=Et(()=>{gf();ny=class extends Ps{constructor(r,o){super(o);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var jg,wa,_p,Z7=Et(()=>{jg=Be(\"fs\");_g();Hg();VT();BD();Ca();wa=4278190080,_p=class extends Ou{constructor({baseFs:r=new Rn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:u=!0,maxAge:A=5e3,typeCheck:p=jg.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:I}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error(\"The magic byte must be set to a round value between 1 and 127 included\");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=u?new Map:null,this.factoryPromise=E,this.factorySync=I,this.filter=o,this.getMountPoint=h,this.magic=a<<24,this.maxAge=A,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Og(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(Og(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:u})=>this.remapFd(n,await n.openPromise(u,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:u})=>this.remapFd(n,n.openSync(u,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,u){if((r&wa)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"read\");let[p,h]=A;return await p.readPromise(h,o,a,n,u)}readSync(r,o,a,n,u){if((r&wa)!==this.magic)return this.baseFs.readSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"readSync\");let[p,h]=A;return p.readSync(h,o,a,n,u)}async writePromise(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o==\"string\"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"write\");let[p,h]=A;return typeof o==\"string\"?await p.writePromise(h,o,a):await p.writePromise(h,o,a,n,u)}writeSync(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o==\"string\"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"writeSync\");let[p,h]=A;return typeof o==\"string\"?p.writeSync(h,o,a):p.writeSync(h,o,a,n,u)}async closePromise(r){if((r&wa)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>\"u\")throw Io(\"close\");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&wa)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>\"u\")throw Io(\"closeSync\");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:u})=>{let A=a.createReadStream(u,o);return A.path=ue.fromPortablePath(this.pathUtils.join(n,u)),A})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>\"u\"&&(u=await this.baseFs.realpathPromise(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>\"u\"&&(u=this.baseFs.realpathSync(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fstat\");let[n,u]=a;return n.fstatPromise(u,o)}fstatSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fstatSync\");let[n,u]=a;return n.fstatSync(u,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fchmod\");let[n,u]=a;return n.fchmodPromise(u,o)}fchmodSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fchmodSync\");let[n,u]=a;return n.fchmodSync(u,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Io(\"fchown\");let[u,A]=n;return u.fchownPromise(A,o,a)}fchownSync(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Io(\"fchownSync\");let[u,A]=n;return u.fchownSync(A,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:u})=>await n.chownPromise(u,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:u})=>n.chownSync(u,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},async(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return await a.renamePromise(n,A)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return a.renameSync(n,A)}))}async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&jg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:\"EXDEV\"});if(a&jg.constants.COPYFILE_EXCL&&await this.existsPromise(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=await u.readFilePromise(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:\"EINVAL\"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(u,{subPath:A})=>await n(this.baseFs,r,u,A)),async(u,{subPath:A})=>await this.makeCallPromise(o,async()=>await n(u,A,this.baseFs,o),async(p,{subPath:h})=>u!==p?await n(u,A,p,h):await u.copyFilePromise(A,h,a)))}copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&jg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:\"EXDEV\"});if(a&jg.constants.COPYFILE_EXCL&&this.existsSync(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=u.readFileSync(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:\"EINVAL\"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(u,{subPath:A})=>n(this.baseFs,r,u,A)),(u,{subPath:A})=>this.makeCallSync(o,()=>n(u,A,this.baseFs,o),(p,{subPath:h})=>u!==p?n(u,A,p,h):u.copyFileSync(A,h,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:u})=>await n.appendFilePromise(u,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:u})=>n.appendFileSync(u,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:u})=>await n.writeFilePromise(u,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:u})=>n.writeFileSync(u,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:u})=>await n.utimesPromise(u,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:u})=>n.utimesSync(u,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:u})=>await n.lutimesPromise(u,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:u})=>n.lutimesSync(u,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:u})=>await n.symlinkPromise(r,u))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:u})=>n.symlinkSync(r,u))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"ftruncate\");let[n,u]=a;return n.ftruncatePromise(u,o)}ftruncateSync(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"ftruncateSync\");let[n,u]=a;return n.ftruncateSync(u,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:u})=>n.watch(u,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>ry(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>Mg(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return await o();let u=this.resolve(r),A=this.findMount(u);return A?n&&A.subPath===\"/\"?await o():await this.getMountPromise(A.archivePath,async p=>await a(p,A)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return o();let u=this.resolve(r),A=this.findMount(u);return!A||n&&A.subPath===\"/\"?o():this.getMountSync(A.archivePath,p=>a(p,A))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o=\"\";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(this.typeCheck!==null&&(this.baseFs.lstatSync(o).mode&jg.constants.S_IFMT)!==this.typeCheck){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(Bt.root,r.substring(o.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[u,{childFs:A,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||A.hasOpenFileHandles?.())){if(o>=p){A.saveAndClose?.(),this.mountInstances.delete(u),n-=1;continue}else if(r===null||n<=0){a=p;break}A.saveAndClose?.(),this.mountInstances.delete(u),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-o).unref())}async getMountPromise(r,o){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await o(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await o(a)}finally{a.saveAndClose?.()}}}getMountSync(r,o){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,o(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return o(a)}finally{a.saveAndClose?.()}}}}});var Zt,KT,Gw,$7=Et(()=>{_g();Ca();Zt=()=>Object.assign(new Error(\"ENOSYS: unsupported filesystem access\"),{code:\"ENOSYS\"}),KT=class extends hf{constructor(){super(K)}getExtractHint(){throw Zt()}getRealPath(){throw Zt()}resolve(){throw Zt()}async openPromise(){throw Zt()}openSync(){throw Zt()}async opendirPromise(){throw Zt()}opendirSync(){throw Zt()}async readPromise(){throw Zt()}readSync(){throw Zt()}async writePromise(){throw Zt()}writeSync(){throw Zt()}async closePromise(){throw Zt()}closeSync(){throw Zt()}createWriteStream(){throw Zt()}createReadStream(){throw Zt()}async realpathPromise(){throw Zt()}realpathSync(){throw Zt()}async readdirPromise(){throw Zt()}readdirSync(){throw Zt()}async existsPromise(e){throw Zt()}existsSync(e){throw Zt()}async accessPromise(){throw Zt()}accessSync(){throw Zt()}async statPromise(){throw Zt()}statSync(){throw Zt()}async fstatPromise(e){throw Zt()}fstatSync(e){throw Zt()}async lstatPromise(e){throw Zt()}lstatSync(e){throw Zt()}async fchmodPromise(){throw Zt()}fchmodSync(){throw Zt()}async chmodPromise(){throw Zt()}chmodSync(){throw Zt()}async fchownPromise(){throw Zt()}fchownSync(){throw Zt()}async chownPromise(){throw Zt()}chownSync(){throw Zt()}async mkdirPromise(){throw Zt()}mkdirSync(){throw Zt()}async rmdirPromise(){throw Zt()}rmdirSync(){throw Zt()}async linkPromise(){throw Zt()}linkSync(){throw Zt()}async symlinkPromise(){throw Zt()}symlinkSync(){throw Zt()}async renamePromise(){throw Zt()}renameSync(){throw Zt()}async copyFilePromise(){throw Zt()}copyFileSync(){throw Zt()}async appendFilePromise(){throw Zt()}appendFileSync(){throw Zt()}async writeFilePromise(){throw Zt()}writeFileSync(){throw Zt()}async unlinkPromise(){throw Zt()}unlinkSync(){throw Zt()}async utimesPromise(){throw Zt()}utimesSync(){throw Zt()}async lutimesPromise(){throw Zt()}lutimesSync(){throw Zt()}async readFilePromise(){throw Zt()}readFileSync(){throw Zt()}async readlinkPromise(){throw Zt()}readlinkSync(){throw Zt()}async truncatePromise(){throw Zt()}truncateSync(){throw Zt()}async ftruncatePromise(e,r){throw Zt()}ftruncateSync(e,r){throw Zt()}watch(){throw Zt()}watchFile(){throw Zt()}unwatchFile(){throw Zt()}},Gw=KT;Gw.instance=new KT});var Hp,eY=Et(()=>{gf();Ca();Hp=class extends Ps{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return ue.fromPortablePath(r)}mapToBase(r){return ue.toPortablePath(r)}}});var R_e,JT,N_e,mi,tY=Et(()=>{Hg();gf();Ca();R_e=/^[0-9]+$/,JT=/^(\\/(?:[^/]+\\/)*?(?:\\$\\$virtual|__virtual__))((?:\\/((?:[^/]+-)?[a-f0-9]+)(?:\\/([^/]+))?)?((?:\\/.*)?))$/,N_e=/^([^/]+-)?[a-f0-9]+$/,mi=class extends Ps{constructor({baseFs:r=new Rn}={}){super(K);this.baseFs=r}static makeVirtualPath(r,o,a){if(K.basename(r)!==\"__virtual__\")throw new Error('Assertion failed: Virtual folders must be named \"__virtual__\"');if(!K.basename(o).match(N_e))throw new Error(\"Assertion failed: Virtual components must be ended by an hexadecimal hash\");let u=K.relative(K.dirname(r),a).split(\"/\"),A=0;for(;A<u.length&&u[A]===\"..\";)A+=1;let p=u.slice(A);return K.join(r,o,String(A),...p)}static resolveVirtual(r){let o=r.match(JT);if(!o||!o[3]&&o[5])return r;let a=K.dirname(o[1]);if(!o[3]||!o[4])return a;if(!R_e.test(o[4]))return r;let u=Number(o[4]),A=\"../\".repeat(u),p=o[5]||\".\";return mi.resolveVirtual(K.join(a,A,p))}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(r){let o=r.match(JT);if(!o)return this.baseFs.realpathSync(r);if(!o[5])return r;let a=this.baseFs.realpathSync(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}async realpathPromise(r){let o=r.match(JT);if(!o)return await this.baseFs.realpathPromise(r);if(!o[5])return r;let a=await this.baseFs.realpathPromise(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}mapToBase(r){if(r===\"\")return r;if(this.pathUtils.isAbsolute(r))return mi.resolveVirtual(r);let o=mi.resolveVirtual(this.baseFs.resolve(Bt.dot)),a=mi.resolveVirtual(this.baseFs.resolve(r));return K.relative(o,a)||Bt.dot}mapFromBase(r){return r}}});function L_e(t,e){return typeof zT.default.isUtf8<\"u\"?zT.default.isUtf8(t):Buffer.byteLength(e)===t.byteLength}var zT,kD,rY,bD,nY=Et(()=>{zT=$e(Be(\"buffer\")),kD=Be(\"url\"),rY=Be(\"util\");gf();Ca();bD=class extends Ps{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r==\"string\")return r;if(r instanceof kD.URL)return(0,kD.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(!L_e(r,o))throw new Error(\"Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942\");return o}throw new Error(`Unsupported path type: ${(0,rY.inspect)(r)}`)}}});var iY,Bo,df,jp,QD,FD,iy,Rc,Nc,M_e,O_e,U_e,__e,Yw,sY=Et(()=>{iY=Be(\"readline\"),Bo=Symbol(\"kBaseFs\"),df=Symbol(\"kFd\"),jp=Symbol(\"kClosePromise\"),QD=Symbol(\"kCloseResolve\"),FD=Symbol(\"kCloseReject\"),iy=Symbol(\"kRefs\"),Rc=Symbol(\"kRef\"),Nc=Symbol(\"kUnref\"),Yw=class{constructor(e,r){this[M_e]=1;this[O_e]=void 0;this[U_e]=void 0;this[__e]=void 0;this[Bo]=r,this[df]=e}get fd(){return this[df]}async appendFile(e,r){try{this[Rc](this.appendFile);let o=(typeof r==\"string\"?r:r?.encoding)??void 0;return await this[Bo].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[Nc]()}}async chown(e,r){try{return this[Rc](this.chown),await this[Bo].fchownPromise(this.fd,e,r)}finally{this[Nc]()}}async chmod(e){try{return this[Rc](this.chmod),await this[Bo].fchmodPromise(this.fd,e)}finally{this[Nc]()}}createReadStream(e){return this[Bo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Bo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error(\"Method not implemented.\")}sync(){throw new Error(\"Method not implemented.\")}async read(e,r,o,a){try{this[Rc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??=0,o??=0,o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[Bo].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[Nc]()}}async readFile(e){try{this[Rc](this.readFile);let r=(typeof e==\"string\"?e:e?.encoding)??void 0;return await this[Bo].readFilePromise(this.fd,r)}finally{this[Nc]()}}readLines(e){return(0,iY.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Rc](this.stat),await this[Bo].fstatPromise(this.fd,e)}finally{this[Nc]()}}async truncate(e){try{return this[Rc](this.truncate),await this[Bo].ftruncatePromise(this.fd,e)}finally{this[Nc]()}}utimes(e,r){throw new Error(\"Method not implemented.\")}async writeFile(e,r){try{this[Rc](this.writeFile);let o=(typeof r==\"string\"?r:r?.encoding)??void 0;await this[Bo].writeFilePromise(this.fd,e,o)}finally{this[Nc]()}}async write(...e){try{if(this[Rc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[Nc]()}}async writev(e,r){try{this[Rc](this.writev);let o=0;if(typeof r<\"u\")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);o+=n.bytesWritten}return{buffers:e,bytesWritten:o}}finally{this[Nc]()}}readv(e,r){throw new Error(\"Method not implemented.\")}close(){if(this[df]===-1)return Promise.resolve();if(this[jp])return this[jp];if(this[iy]--,this[iy]===0){let e=this[df];this[df]=-1,this[jp]=this[Bo].closePromise(e).finally(()=>{this[jp]=void 0})}else this[jp]=new Promise((e,r)=>{this[QD]=e,this[FD]=r}).finally(()=>{this[jp]=void 0,this[FD]=void 0,this[QD]=void 0});return this[jp]}[(Bo,df,M_e=iy,O_e=jp,U_e=QD,__e=FD,Rc)](e){if(this[df]===-1){let r=new Error(\"file closed\");throw r.code=\"EBADF\",r.syscall=e.name,r}this[iy]++}[Nc](){if(this[iy]--,this[iy]===0){let e=this[df];this[df]=-1,this[Bo].closePromise(e).then(this[QD],this[FD])}}}});function Ww(t,e){e=new bD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof u?.[sy.promisify.custom]<\"u\"&&(n[sy.promisify.custom]=u[sy.promisify.custom])};{r(t,\"exists\",(o,...a)=>{let u=typeof a[a.length-1]==\"function\"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(A=>{u(A)},()=>{u(!1)})})}),r(t,\"read\",(...o)=>{let[a,n,u,A,p,h]=o;if(o.length<=3){let E={};o.length<3?h=o[1]:(E=o[1],h=o[2]),{buffer:n=Buffer.alloc(16384),offset:u=0,length:A=n.byteLength,position:p}=E}if(u==null&&(u=0),A|=0,A===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,u,A,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let o of oY){let a=o.replace(/Promise$/,\"\");if(typeof t[a]>\"u\")continue;let n=e[o];if(typeof n>\"u\")continue;r(t,a,(...A)=>{let h=typeof A[A.length-1]==\"function\"?A.pop():()=>{};process.nextTick(()=>{n.apply(e,A).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,\"existsSync\",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,\"readSync\",(...o)=>{let[a,n,u,A,p]=o;return o.length<=3&&({offset:u=0,length:A=n.byteLength,position:p}=o[2]||{}),u==null&&(u=0),A|=0,A===0?0:(p==null&&(p=-1),e.readSync(a,n,u,A,p))});for(let o of H_e){let a=o;if(typeof t[a]>\"u\")continue;let n=e[o];typeof n>\"u\"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of oY){let n=a.replace(/Promise$/,\"\");if(typeof o[n]>\"u\")continue;let u=e[a];typeof u>\"u\"||a!==\"open\"&&r(o,n,(A,...p)=>A instanceof Yw?A[n].apply(A,p):u.call(e,A,...p))}r(o,\"open\",async(...a)=>{let n=await e.openPromise(...a);return new Yw(n,e)})}t.read[sy.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[sy.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function TD(t,e){let r=Object.create(t);return Ww(r,e),r}var sy,H_e,oY,aY=Et(()=>{sy=Be(\"util\");nY();sY();H_e=new Set([\"accessSync\",\"appendFileSync\",\"createReadStream\",\"createWriteStream\",\"chmodSync\",\"fchmodSync\",\"chownSync\",\"fchownSync\",\"closeSync\",\"copyFileSync\",\"linkSync\",\"lstatSync\",\"fstatSync\",\"lutimesSync\",\"mkdirSync\",\"openSync\",\"opendirSync\",\"readlinkSync\",\"readFileSync\",\"readdirSync\",\"readlinkSync\",\"realpathSync\",\"renameSync\",\"rmdirSync\",\"statSync\",\"symlinkSync\",\"truncateSync\",\"ftruncateSync\",\"unlinkSync\",\"unwatchFile\",\"utimesSync\",\"watch\",\"watchFile\",\"writeFileSync\",\"writeSync\"]),oY=new Set([\"accessPromise\",\"appendFilePromise\",\"fchmodPromise\",\"chmodPromise\",\"fchownPromise\",\"chownPromise\",\"closePromise\",\"copyFilePromise\",\"linkPromise\",\"fstatPromise\",\"lstatPromise\",\"lutimesPromise\",\"mkdirPromise\",\"openPromise\",\"opendirPromise\",\"readdirPromise\",\"realpathPromise\",\"readFilePromise\",\"readdirPromise\",\"readlinkPromise\",\"renamePromise\",\"rmdirPromise\",\"statPromise\",\"symlinkPromise\",\"truncatePromise\",\"ftruncatePromise\",\"unlinkPromise\",\"utimesPromise\",\"writeFilePromise\",\"writeSync\"])});function lY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,\"0\");return`${t}${e}`}function cY(){if(XT)return XT;let t=ue.toPortablePath(uY.default.tmpdir()),e=oe.realpathSync(t);return process.once(\"exit\",()=>{oe.rmtempSync()}),XT={tmpdir:t,realTmpdir:e}}var uY,Lc,XT,oe,AY=Et(()=>{uY=$e(Be(\"os\"));Hg();Ca();Lc=new Set,XT=null;oe=Object.assign(new Rn,{detachTemp(t){Lc.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=cY();for(;;){let o=lY(\"xfs-\");try{this.mkdirSync(K.join(e,o))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=K.join(r,o);if(Lc.add(a),typeof t>\"u\")return a;try{return t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=cY();for(;;){let o=lY(\"xfs-\");try{await this.mkdirPromise(K.join(e,o))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=K.join(r,o);if(Lc.add(a),typeof t>\"u\")return a;try{return await t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Lc.values()).map(async t=>{try{await oe.removePromise(t,{maxRetries:0}),Lc.delete(t)}catch{}}))},rmtempSync(){for(let t of Lc)try{oe.removeSync(t),Lc.delete(t)}catch{}}})});var Vw={};Kt(Vw,{AliasFS:()=>Uu,BasePortableFakeFS:()=>Ou,CustomDir:()=>qw,CwdFS:()=>gn,FakeFS:()=>hf,Filename:()=>dr,JailFS:()=>_u,LazyFS:()=>ny,MountFS:()=>_p,NoFS:()=>Gw,NodeFS:()=>Rn,PortablePath:()=>Bt,PosixFS:()=>Hp,ProxiedFS:()=>Ps,VirtualFS:()=>mi,constants:()=>vi,errors:()=>ar,extendFs:()=>TD,normalizeLineEndings:()=>Ug,npath:()=>ue,opendir:()=>SD,patchFs:()=>Ww,ppath:()=>K,setupCopyIndex:()=>PD,statUtils:()=>Ea,unwatchAllFiles:()=>Og,unwatchFile:()=>Mg,watchFile:()=>ry,xfs:()=>oe});var Pt=Et(()=>{T7();BD();qT();WT();U7();VT();_g();Ca();Ca();Y7();_g();K7();z7();X7();Z7();$7();Hg();eY();gf();tY();aY();AY()});var dY=_((axt,gY)=>{gY.exports=hY;hY.sync=q_e;var fY=Be(\"fs\");function j_e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(\";\"),r.indexOf(\"\")!==-1))return!0;for(var o=0;o<r.length;o++){var a=r[o].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function pY(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:j_e(e,r)}function hY(t,e,r){fY.stat(t,function(o,a){r(o,o?!1:pY(a,t,e))})}function q_e(t,e){return pY(fY.statSync(t),t,e)}});var wY=_((lxt,CY)=>{CY.exports=yY;yY.sync=G_e;var mY=Be(\"fs\");function yY(t,e,r){mY.stat(t,function(o,a){r(o,o?!1:EY(a,e))})}function G_e(t,e){return EY(mY.statSync(t),e)}function EY(t,e){return t.isFile()&&Y_e(t,e)}function Y_e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),u=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),A=parseInt(\"100\",8),p=parseInt(\"010\",8),h=parseInt(\"001\",8),E=A|p,I=r&h||r&p&&a===u||r&A&&o===n||r&E&&n===0;return I}});var BY=_((uxt,IY)=>{var cxt=Be(\"fs\"),RD;process.platform===\"win32\"||global.TESTING_WINDOWS?RD=dY():RD=wY();IY.exports=ZT;ZT.sync=W_e;function ZT(t,e,r){if(typeof e==\"function\"&&(r=e,e={}),!r){if(typeof Promise!=\"function\")throw new TypeError(\"callback not provided\");return new Promise(function(o,a){ZT(t,e||{},function(n,u){n?a(n):o(u)})})}RD(t,e||{},function(o,a){o&&(o.code===\"EACCES\"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function W_e(t,e){try{return RD.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code===\"EACCES\")return!1;throw r}}});var kY=_((Axt,bY)=>{var oy=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",vY=Be(\"path\"),V_e=oy?\";\":\":\",DY=BY(),PY=t=>Object.assign(new Error(`not found: ${t}`),{code:\"ENOENT\"}),SY=(t,e)=>{let r=e.colon||V_e,o=t.match(/\\//)||oy&&t.match(/\\\\/)?[\"\"]:[...oy?[process.cwd()]:[],...(e.path||process.env.PATH||\"\").split(r)],a=oy?e.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",n=oy?a.split(r):[\"\"];return oy&&t.indexOf(\".\")!==-1&&n[0]!==\"\"&&n.unshift(\"\"),{pathEnv:o,pathExt:n,pathExtExe:a}},xY=(t,e,r)=>{typeof e==\"function\"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=SY(t,e),u=[],A=h=>new Promise((E,I)=>{if(h===o.length)return e.all&&u.length?E(u):I(PY(t));let v=o[h],b=/^\".*\"$/.test(v)?v.slice(1,-1):v,C=vY.join(b,t),T=!b&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+C:C;E(p(T,h,0))}),p=(h,E,I)=>new Promise((v,b)=>{if(I===a.length)return v(A(E+1));let C=a[I];DY(h+C,{pathExt:n},(T,L)=>{if(!T&&L)if(e.all)u.push(h+C);else return v(h+C);return v(p(h,E,I+1))})});return r?A(0).then(h=>r(null,h),r):A(0)},K_e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=SY(t,e),n=[];for(let u=0;u<r.length;u++){let A=r[u],p=/^\".*\"$/.test(A)?A.slice(1,-1):A,h=vY.join(p,t),E=!p&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+h:h;for(let I=0;I<o.length;I++){let v=E+o[I];try{if(DY.sync(v,{pathExt:a}))if(e.all)n.push(v);else return v}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw PY(t)};bY.exports=xY;xY.sync=K_e});var FY=_((fxt,$T)=>{\"use strict\";var QY=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(e).reverse().find(o=>o.toUpperCase()===\"PATH\")||\"Path\"};$T.exports=QY;$T.exports.default=QY});var LY=_((pxt,NY)=>{\"use strict\";var TY=Be(\"path\"),J_e=kY(),z_e=FY();function RY(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let u;try{u=J_e.sync(t.command,{path:r[z_e({env:r})],pathExt:e?TY.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return u&&(u=TY.resolve(a?t.options.cwd:\"\",u)),u}function X_e(t){return RY(t)||RY(t,!0)}NY.exports=X_e});var MY=_((hxt,tR)=>{\"use strict\";var eR=/([()\\][%!^\"`<>&|;, *?])/g;function Z_e(t){return t=t.replace(eR,\"^$1\"),t}function $_e(t,e){return t=`${t}`,t=t.replace(/(\\\\*)\"/g,'$1$1\\\\\"'),t=t.replace(/(\\\\*)$/,\"$1$1\"),t=`\"${t}\"`,t=t.replace(eR,\"^$1\"),e&&(t=t.replace(eR,\"^$1\")),t}tR.exports.command=Z_e;tR.exports.argument=$_e});var UY=_((gxt,OY)=>{\"use strict\";OY.exports=/^#!(.*)/});var HY=_((dxt,_Y)=>{\"use strict\";var e8e=UY();_Y.exports=(t=\"\")=>{let e=t.match(e8e);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,\"\").split(\" \"),a=r.split(\"/\").pop();return a===\"env\"?o:o?`${a} ${o}`:a}});var qY=_((mxt,jY)=>{\"use strict\";var rR=Be(\"fs\"),t8e=HY();function r8e(t){let r=Buffer.alloc(150),o;try{o=rR.openSync(t,\"r\"),rR.readSync(o,r,0,150,0),rR.closeSync(o)}catch{}return t8e(r.toString())}jY.exports=r8e});var VY=_((yxt,WY)=>{\"use strict\";var n8e=Be(\"path\"),GY=LY(),YY=MY(),i8e=qY(),s8e=process.platform===\"win32\",o8e=/\\.(?:com|exe)$/i,a8e=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function l8e(t){t.file=GY(t);let e=t.file&&i8e(t.file);return e?(t.args.unshift(t.file),t.command=e,GY(t)):t.file}function c8e(t){if(!s8e)return t;let e=l8e(t),r=!o8e.test(e);if(t.options.forceShell||r){let o=a8e.test(e);t.command=n8e.normalize(t.command),t.command=YY.command(t.command),t.args=t.args.map(n=>YY.argument(n,o));let a=[t.command].concat(t.args).join(\" \");t.args=[\"/d\",\"/s\",\"/c\",`\"${a}\"`],t.command=process.env.comspec||\"cmd.exe\",t.options.windowsVerbatimArguments=!0}return t}function u8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:c8e(o)}WY.exports=u8e});var zY=_((Ext,JY)=>{\"use strict\";var nR=process.platform===\"win32\";function iR(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:\"ENOENT\",errno:\"ENOENT\",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function A8e(t,e){if(!nR)return;let r=t.emit;t.emit=function(o,a){if(o===\"exit\"){let n=KY(a,e,\"spawn\");if(n)return r.call(t,\"error\",n)}return r.apply(t,arguments)}}function KY(t,e){return nR&&t===1&&!e.file?iR(e.original,\"spawn\"):null}function f8e(t,e){return nR&&t===1&&!e.file?iR(e.original,\"spawnSync\"):null}JY.exports={hookChildProcess:A8e,verifyENOENT:KY,verifyENOENTSync:f8e,notFoundError:iR}});var aR=_((Cxt,ay)=>{\"use strict\";var XY=Be(\"child_process\"),sR=VY(),oR=zY();function ZY(t,e,r){let o=sR(t,e,r),a=XY.spawn(o.command,o.args,o.options);return oR.hookChildProcess(a,o),a}function p8e(t,e,r){let o=sR(t,e,r),a=XY.spawnSync(o.command,o.args,o.options);return a.error=a.error||oR.verifyENOENTSync(a.status,o),a}ay.exports=ZY;ay.exports.spawn=ZY;ay.exports.sync=p8e;ay.exports._parse=sR;ay.exports._enoent=oR});var eW=_((wxt,$Y)=>{\"use strict\";function h8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function qg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,qg)}h8e(qg,Error);qg.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function g8e(t,e){e=e!==void 0?e:{};var r={},o={Start:pg},a=pg,n=function(N){return N||[]},u=function(N,V,re){return[{command:N,type:V}].concat(re||[])},A=function(N,V){return[{command:N,type:V||\";\"}]},p=function(N){return N},h=\";\",E=Br(\";\",!1),I=\"&\",v=Br(\"&\",!1),b=function(N,V){return V?{chain:N,then:V}:{chain:N}},C=function(N,V){return{type:N,line:V}},T=\"&&\",L=Br(\"&&\",!1),U=\"||\",J=Br(\"||\",!1),te=function(N,V){return V?{...N,then:V}:N},le=function(N,V){return{type:N,chain:V}},pe=\"|&\",Ae=Br(\"|&\",!1),ye=\"|\",ae=Br(\"|\",!1),we=\"=\",Pe=Br(\"=\",!1),g=function(N,V){return{name:N,args:[V]}},Ee=function(N){return{name:N,args:[]}},De=\"(\",ce=Br(\"(\",!1),ne=\")\",ee=Br(\")\",!1),Ie=function(N,V){return{type:\"subshell\",subshell:N,args:V}},ke=\"{\",ht=Br(\"{\",!1),H=\"}\",lt=Br(\"}\",!1),Re=function(N,V){return{type:\"group\",group:N,args:V}},Qe=function(N,V){return{type:\"command\",args:V,envs:N}},be=function(N){return{type:\"envs\",envs:N}},_e=function(N){return N},Te=function(N){return N},Je=/^[0-9]/,He=Cs([[\"0\",\"9\"]],!1,!1),x=function(N,V,re){return{type:\"redirection\",subtype:V,fd:N!==null?parseInt(N):null,args:[re]}},w=\">>\",S=Br(\">>\",!1),y=\">&\",F=Br(\">&\",!1),z=\">\",X=Br(\">\",!1),Z=\"<<<\",ie=Br(\"<<<\",!1),Se=\"<&\",Ne=Br(\"<&\",!1),ot=\"<\",dt=Br(\"<\",!1),jt=function(N){return{type:\"argument\",segments:[].concat(...N)}},$t=function(N){return N},xt=\"$'\",an=Br(\"$'\",!1),Qr=\"'\",mr=Br(\"'\",!1),xr=function(N){return[{type:\"text\",text:N}]},Wr='\"\"',Vn=Br('\"\"',!1),Ns=function(){return{type:\"text\",text:\"\"}},Ri='\"',ps=Br('\"',!1),io=function(N){return N},Si=function(N){return{type:\"arithmetic\",arithmetic:N,quoted:!0}},Ls=function(N){return{type:\"shell\",shell:N,quoted:!0}},so=function(N){return{type:\"variable\",...N,quoted:!0}},cc=function(N){return{type:\"text\",text:N}},cu=function(N){return{type:\"arithmetic\",arithmetic:N,quoted:!1}},ap=function(N){return{type:\"shell\",shell:N,quoted:!1}},lp=function(N){return{type:\"variable\",...N,quoted:!1}},Ms=function(N){return{type:\"glob\",pattern:N}},Dn=/^[^']/,oo=Cs([\"'\"],!0,!1),Os=function(N){return N.join(\"\")},ml=/^[^$\"]/,yl=Cs([\"$\",'\"'],!0,!1),ao=`\\\\\n`,Kn=Br(`\\\\\n`,!1),Mn=function(){return\"\"},Ni=\"\\\\\",On=Br(\"\\\\\",!1),_i=/^[\\\\$\"`]/,tr=Cs([\"\\\\\",\"$\",'\"',\"`\"],!1,!1),Me=function(N){return N},ii=\"\\\\a\",Oa=Br(\"\\\\a\",!1),hr=function(){return\"a\"},uc=\"\\\\b\",uu=Br(\"\\\\b\",!1),Ac=function(){return\"\\b\"},El=/^[Ee]/,vA=Cs([\"E\",\"e\"],!1,!1),Au=function(){return\"\\x1B\"},Ce=\"\\\\f\",Tt=Br(\"\\\\f\",!1),fc=function(){return\"\\f\"},Hi=\"\\\\n\",fu=Br(\"\\\\n\",!1),Yt=function(){return`\n`},Cl=\"\\\\r\",DA=Br(\"\\\\r\",!1),cp=function(){return\"\\r\"},pc=\"\\\\t\",PA=Br(\"\\\\t\",!1),Qn=function(){return\"\t\"},hi=\"\\\\v\",hc=Br(\"\\\\v\",!1),SA=function(){return\"\\v\"},sa=/^[\\\\'\"?]/,Li=Cs([\"\\\\\",\"'\",'\"',\"?\"],!1,!1),_o=function(N){return String.fromCharCode(parseInt(N,16))},Ze=\"\\\\x\",lo=Br(\"\\\\x\",!1),gc=\"\\\\u\",pu=Br(\"\\\\u\",!1),ji=\"\\\\U\",hu=Br(\"\\\\U\",!1),xA=function(N){return String.fromCodePoint(parseInt(N,16))},Ua=/^[0-7]/,dc=Cs([[\"0\",\"7\"]],!1,!1),hs=/^[0-9a-fA-f]/,_t=Cs([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"f\"]],!1,!1),Fn=cg(),Ci=\"{}\",oa=Br(\"{}\",!1),co=function(){return\"{}\"},Us=\"-\",aa=Br(\"-\",!1),la=\"+\",Ho=Br(\"+\",!1),wi=\".\",gs=Br(\".\",!1),ds=function(N,V,re){return{type:\"number\",value:(N===\"-\"?-1:1)*parseFloat(V.join(\"\")+\".\"+re.join(\"\"))}},ms=function(N,V){return{type:\"number\",value:(N===\"-\"?-1:1)*parseInt(V.join(\"\"))}},_s=function(N){return{type:\"variable\",...N}},Un=function(N){return{type:\"variable\",name:N}},Pn=function(N){return N},ys=\"*\",We=Br(\"*\",!1),tt=\"/\",It=Br(\"/\",!1),nr=function(N,V,re){return{type:V===\"*\"?\"multiplication\":\"division\",right:re}},$=function(N,V){return V.reduce((re,he)=>({left:re,...he}),N)},me=function(N,V,re){return{type:V===\"+\"?\"addition\":\"subtraction\",right:re}},Le=\"$((\",ft=Br(\"$((\",!1),pt=\"))\",Rt=Br(\"))\",!1),er=function(N){return N},Zr=\"$(\",qi=Br(\"$(\",!1),es=function(N){return N},xi=\"${\",jo=Br(\"${\",!1),bA=\":-\",kA=Br(\":-\",!1),up=function(N,V){return{name:N,defaultValue:V}},ng=\":-}\",gu=Br(\":-}\",!1),ig=function(N){return{name:N,defaultValue:[]}},du=\":+\",uo=Br(\":+\",!1),QA=function(N,V){return{name:N,alternativeValue:V}},mc=\":+}\",ca=Br(\":+}\",!1),sg=function(N){return{name:N,alternativeValue:[]}},yc=function(N){return{name:N}},Pm=\"$\",og=Br(\"$\",!1),$n=function(N){return e.isGlobPattern(N)},Ap=function(N){return N},ag=/^[a-zA-Z0-9_]/,FA=Cs([[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\"],!1,!1),Hs=function(){return lg()},mu=/^[$@*?#a-zA-Z0-9_\\-]/,Ha=Cs([\"$\",\"@\",\"*\",\"?\",\"#\",[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\",\"-\"],!1,!1),Gi=/^[()}<>$|&; \\t\"']/,ua=Cs([\"(\",\")\",\"}\",\"<\",\">\",\"$\",\"|\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),yu=/^[<>&; \\t\"']/,Es=Cs([\"<\",\">\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),Ec=/^[ \\t]/,Cc=Cs([\" \",\"\t\"],!1,!1),G=0,Dt=0,wl=[{line:1,column:1}],bi=0,wc=[],ct=0,Eu;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function lg(){return t.substring(Dt,G)}function mw(){return Ic(Dt,G)}function TA(N,V){throw V=V!==void 0?V:Ic(Dt,G),fg([Ag(N)],t.substring(Dt,G),V)}function fp(N,V){throw V=V!==void 0?V:Ic(Dt,G),Sm(N,V)}function Br(N,V){return{type:\"literal\",text:N,ignoreCase:V}}function Cs(N,V,re){return{type:\"class\",parts:N,inverted:V,ignoreCase:re}}function cg(){return{type:\"any\"}}function ug(){return{type:\"end\"}}function Ag(N){return{type:\"other\",description:N}}function pp(N){var V=wl[N],re;if(V)return V;for(re=N-1;!wl[re];)re--;for(V=wl[re],V={line:V.line,column:V.column};re<N;)t.charCodeAt(re)===10?(V.line++,V.column=1):V.column++,re++;return wl[N]=V,V}function Ic(N,V){var re=pp(N),he=pp(V);return{start:{offset:N,line:re.line,column:re.column},end:{offset:V,line:he.line,column:he.column}}}function Ct(N){G<bi||(G>bi&&(bi=G,wc=[]),wc.push(N))}function Sm(N,V){return new qg(N,null,null,V)}function fg(N,V,re){return new qg(qg.buildMessage(N,V),N,V,re)}function pg(){var N,V,re;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();return V!==r?(re=Cu(),re===r&&(re=null),re!==r?(Dt=N,V=n(re),N=V):(G=N,N=r)):(G=N,N=r),N}function Cu(){var N,V,re,he,ze;if(N=G,V=wu(),V!==r){for(re=[],he=Qt();he!==r;)re.push(he),he=Qt();re!==r?(he=hg(),he!==r?(ze=xm(),ze===r&&(ze=null),ze!==r?(Dt=N,V=u(V,he,ze),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;if(N===r)if(N=G,V=wu(),V!==r){for(re=[],he=Qt();he!==r;)re.push(he),he=Qt();re!==r?(he=hg(),he===r&&(he=null),he!==r?(Dt=N,V=A(V,he),N=V):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function xm(){var N,V,re,he,ze;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r)if(re=Cu(),re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();he!==r?(Dt=N,V=p(re),N=V):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function hg(){var N;return t.charCodeAt(G)===59?(N=h,G++):(N=r,ct===0&&Ct(E)),N===r&&(t.charCodeAt(G)===38?(N=I,G++):(N=r,ct===0&&Ct(v))),N}function wu(){var N,V,re;return N=G,V=Aa(),V!==r?(re=yw(),re===r&&(re=null),re!==r?(Dt=N,V=b(V,re),N=V):(G=N,N=r)):(G=N,N=r),N}function yw(){var N,V,re,he,ze,mt,fr;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r)if(re=bm(),re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();if(he!==r)if(ze=wu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,V=C(re,ze),N=V):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function bm(){var N;return t.substr(G,2)===T?(N=T,G+=2):(N=r,ct===0&&Ct(L)),N===r&&(t.substr(G,2)===U?(N=U,G+=2):(N=r,ct===0&&Ct(J))),N}function Aa(){var N,V,re;return N=G,V=gg(),V!==r?(re=Bc(),re===r&&(re=null),re!==r?(Dt=N,V=te(V,re),N=V):(G=N,N=r)):(G=N,N=r),N}function Bc(){var N,V,re,he,ze,mt,fr;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r)if(re=Il(),re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();if(he!==r)if(ze=Aa(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,V=le(re,ze),N=V):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function Il(){var N;return t.substr(G,2)===pe?(N=pe,G+=2):(N=r,ct===0&&Ct(Ae)),N===r&&(t.charCodeAt(G)===124?(N=ye,G++):(N=r,ct===0&&Ct(ae))),N}function Iu(){var N,V,re,he,ze,mt;if(N=G,V=Eg(),V!==r)if(t.charCodeAt(G)===61?(re=we,G++):(re=r,ct===0&&Ct(Pe)),re!==r)if(he=qo(),he!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(Dt=N,V=g(V,he),N=V):(G=N,N=r)}else G=N,N=r;else G=N,N=r;else G=N,N=r;if(N===r)if(N=G,V=Eg(),V!==r)if(t.charCodeAt(G)===61?(re=we,G++):(re=r,ct===0&&Ct(Pe)),re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();he!==r?(Dt=N,V=Ee(V),N=V):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function gg(){var N,V,re,he,ze,mt,fr,Cr,yn,oi,Mi;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r)if(t.charCodeAt(G)===40?(re=De,G++):(re=r,ct===0&&Ct(ce)),re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();if(he!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===41?(fr=ne,G++):(fr=r,ct===0&&Ct(ee)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=ja();oi!==r;)yn.push(oi),oi=ja();if(yn!==r){for(oi=[],Mi=Qt();Mi!==r;)oi.push(Mi),Mi=Qt();oi!==r?(Dt=N,V=Ie(ze,yn),N=V):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r)if(t.charCodeAt(G)===123?(re=ke,G++):(re=r,ct===0&&Ct(ht)),re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();if(he!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===125?(fr=H,G++):(fr=r,ct===0&&Ct(lt)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=ja();oi!==r;)yn.push(oi),oi=ja();if(yn!==r){for(oi=[],Mi=Qt();Mi!==r;)oi.push(Mi),Mi=Qt();oi!==r?(Dt=N,V=Re(ze,yn),N=V):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r){for(re=[],he=Iu();he!==r;)re.push(he),he=Iu();if(re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();if(he!==r){if(ze=[],mt=hp(),mt!==r)for(;mt!==r;)ze.push(mt),mt=hp();else ze=r;if(ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,V=Qe(re,ze),N=V):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r}else G=N,N=r;if(N===r){for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r){if(re=[],he=Iu(),he!==r)for(;he!==r;)re.push(he),he=Iu();else re=r;if(re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();he!==r?(Dt=N,V=be(re),N=V):(G=N,N=r)}else G=N,N=r}else G=N,N=r}}}return N}function RA(){var N,V,re,he,ze;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r){if(re=[],he=gp(),he!==r)for(;he!==r;)re.push(he),he=gp();else re=r;if(re!==r){for(he=[],ze=Qt();ze!==r;)he.push(ze),ze=Qt();he!==r?(Dt=N,V=_e(re),N=V):(G=N,N=r)}else G=N,N=r}else G=N,N=r;return N}function hp(){var N,V,re;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();if(V!==r?(re=ja(),re!==r?(Dt=N,V=Te(re),N=V):(G=N,N=r)):(G=N,N=r),N===r){for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();V!==r?(re=gp(),re!==r?(Dt=N,V=Te(re),N=V):(G=N,N=r)):(G=N,N=r)}return N}function ja(){var N,V,re,he,ze;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();return V!==r?(Je.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(He)),re===r&&(re=null),re!==r?(he=dg(),he!==r?(ze=gp(),ze!==r?(Dt=N,V=x(re,he,ze),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function dg(){var N;return t.substr(G,2)===w?(N=w,G+=2):(N=r,ct===0&&Ct(S)),N===r&&(t.substr(G,2)===y?(N=y,G+=2):(N=r,ct===0&&Ct(F)),N===r&&(t.charCodeAt(G)===62?(N=z,G++):(N=r,ct===0&&Ct(X)),N===r&&(t.substr(G,3)===Z?(N=Z,G+=3):(N=r,ct===0&&Ct(ie)),N===r&&(t.substr(G,2)===Se?(N=Se,G+=2):(N=r,ct===0&&Ct(Ne)),N===r&&(t.charCodeAt(G)===60?(N=ot,G++):(N=r,ct===0&&Ct(dt))))))),N}function gp(){var N,V,re;for(N=G,V=[],re=Qt();re!==r;)V.push(re),re=Qt();return V!==r?(re=qo(),re!==r?(Dt=N,V=Te(re),N=V):(G=N,N=r)):(G=N,N=r),N}function qo(){var N,V,re;if(N=G,V=[],re=ws(),re!==r)for(;re!==r;)V.push(re),re=ws();else V=r;return V!==r&&(Dt=N,V=jt(V)),N=V,N}function ws(){var N,V;return N=G,V=Ii(),V!==r&&(Dt=N,V=$t(V)),N=V,N===r&&(N=G,V=km(),V!==r&&(Dt=N,V=$t(V)),N=V,N===r&&(N=G,V=Qm(),V!==r&&(Dt=N,V=$t(V)),N=V,N===r&&(N=G,V=Go(),V!==r&&(Dt=N,V=$t(V)),N=V))),N}function Ii(){var N,V,re,he;return N=G,t.substr(G,2)===xt?(V=xt,G+=2):(V=r,ct===0&&Ct(an)),V!==r?(re=ln(),re!==r?(t.charCodeAt(G)===39?(he=Qr,G++):(he=r,ct===0&&Ct(mr)),he!==r?(Dt=N,V=xr(re),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function km(){var N,V,re,he;return N=G,t.charCodeAt(G)===39?(V=Qr,G++):(V=r,ct===0&&Ct(mr)),V!==r?(re=mp(),re!==r?(t.charCodeAt(G)===39?(he=Qr,G++):(he=r,ct===0&&Ct(mr)),he!==r?(Dt=N,V=xr(re),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Qm(){var N,V,re,he;if(N=G,t.substr(G,2)===Wr?(V=Wr,G+=2):(V=r,ct===0&&Ct(Vn)),V!==r&&(Dt=N,V=Ns()),N=V,N===r)if(N=G,t.charCodeAt(G)===34?(V=Ri,G++):(V=r,ct===0&&Ct(ps)),V!==r){for(re=[],he=NA();he!==r;)re.push(he),he=NA();re!==r?(t.charCodeAt(G)===34?(he=Ri,G++):(he=r,ct===0&&Ct(ps)),he!==r?(Dt=N,V=io(re),N=V):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function Go(){var N,V,re;if(N=G,V=[],re=dp(),re!==r)for(;re!==r;)V.push(re),re=dp();else V=r;return V!==r&&(Dt=N,V=io(V)),N=V,N}function NA(){var N,V;return N=G,V=Gr(),V!==r&&(Dt=N,V=Si(V)),N=V,N===r&&(N=G,V=yp(),V!==r&&(Dt=N,V=Ls(V)),N=V,N===r&&(N=G,V=Dc(),V!==r&&(Dt=N,V=so(V)),N=V,N===r&&(N=G,V=mg(),V!==r&&(Dt=N,V=cc(V)),N=V))),N}function dp(){var N,V;return N=G,V=Gr(),V!==r&&(Dt=N,V=cu(V)),N=V,N===r&&(N=G,V=yp(),V!==r&&(Dt=N,V=ap(V)),N=V,N===r&&(N=G,V=Dc(),V!==r&&(Dt=N,V=lp(V)),N=V,N===r&&(N=G,V=Ew(),V!==r&&(Dt=N,V=Ms(V)),N=V,N===r&&(N=G,V=pa(),V!==r&&(Dt=N,V=cc(V)),N=V)))),N}function mp(){var N,V,re;for(N=G,V=[],Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));re!==r;)V.push(re),Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));return V!==r&&(Dt=N,V=Os(V)),N=V,N}function mg(){var N,V,re;if(N=G,V=[],re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl))),re!==r)for(;re!==r;)V.push(re),re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl)));else V=r;return V!==r&&(Dt=N,V=Os(V)),N=V,N}function fa(){var N,V,re;return N=G,t.substr(G,2)===ao?(V=ao,G+=2):(V=r,ct===0&&Ct(Kn)),V!==r&&(Dt=N,V=Mn()),N=V,N===r&&(N=G,t.charCodeAt(G)===92?(V=Ni,G++):(V=r,ct===0&&Ct(On)),V!==r?(_i.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(tr)),re!==r?(Dt=N,V=Me(re),N=V):(G=N,N=r)):(G=N,N=r)),N}function ln(){var N,V,re;for(N=G,V=[],re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));re!==r;)V.push(re),re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));return V!==r&&(Dt=N,V=Os(V)),N=V,N}function Ao(){var N,V,re;return N=G,t.substr(G,2)===ii?(V=ii,G+=2):(V=r,ct===0&&Ct(Oa)),V!==r&&(Dt=N,V=hr()),N=V,N===r&&(N=G,t.substr(G,2)===uc?(V=uc,G+=2):(V=r,ct===0&&Ct(uu)),V!==r&&(Dt=N,V=Ac()),N=V,N===r&&(N=G,t.charCodeAt(G)===92?(V=Ni,G++):(V=r,ct===0&&Ct(On)),V!==r?(El.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(vA)),re!==r?(Dt=N,V=Au(),N=V):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ce?(V=Ce,G+=2):(V=r,ct===0&&Ct(Tt)),V!==r&&(Dt=N,V=fc()),N=V,N===r&&(N=G,t.substr(G,2)===Hi?(V=Hi,G+=2):(V=r,ct===0&&Ct(fu)),V!==r&&(Dt=N,V=Yt()),N=V,N===r&&(N=G,t.substr(G,2)===Cl?(V=Cl,G+=2):(V=r,ct===0&&Ct(DA)),V!==r&&(Dt=N,V=cp()),N=V,N===r&&(N=G,t.substr(G,2)===pc?(V=pc,G+=2):(V=r,ct===0&&Ct(PA)),V!==r&&(Dt=N,V=Qn()),N=V,N===r&&(N=G,t.substr(G,2)===hi?(V=hi,G+=2):(V=r,ct===0&&Ct(hc)),V!==r&&(Dt=N,V=SA()),N=V,N===r&&(N=G,t.charCodeAt(G)===92?(V=Ni,G++):(V=r,ct===0&&Ct(On)),V!==r?(sa.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Li)),re!==r?(Dt=N,V=Me(re),N=V):(G=N,N=r)):(G=N,N=r),N===r&&(N=LA()))))))))),N}function LA(){var N,V,re,he,ze,mt,fr,Cr,yn,oi,Mi,wg;return N=G,t.charCodeAt(G)===92?(V=Ni,G++):(V=r,ct===0&&Ct(On)),V!==r?(re=qa(),re!==r?(Dt=N,V=_o(re),N=V):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ze?(V=Ze,G+=2):(V=r,ct===0&&Ct(lo)),V!==r?(re=G,he=G,ze=qa(),ze!==r?(mt=si(),mt!==r?(ze=[ze,mt],he=ze):(G=he,he=r)):(G=he,he=r),he===r&&(he=qa()),he!==r?re=t.substring(re,G):re=he,re!==r?(Dt=N,V=_o(re),N=V):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===gc?(V=gc,G+=2):(V=r,ct===0&&Ct(pu)),V!==r?(re=G,he=G,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(ze=[ze,mt,fr,Cr],he=ze):(G=he,he=r)):(G=he,he=r)):(G=he,he=r)):(G=he,he=r),he!==r?re=t.substring(re,G):re=he,re!==r?(Dt=N,V=_o(re),N=V):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===ji?(V=ji,G+=2):(V=r,ct===0&&Ct(hu)),V!==r?(re=G,he=G,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(yn=si(),yn!==r?(oi=si(),oi!==r?(Mi=si(),Mi!==r?(wg=si(),wg!==r?(ze=[ze,mt,fr,Cr,yn,oi,Mi,wg],he=ze):(G=he,he=r)):(G=he,he=r)):(G=he,he=r)):(G=he,he=r)):(G=he,he=r)):(G=he,he=r)):(G=he,he=r)):(G=he,he=r),he!==r?re=t.substring(re,G):re=he,re!==r?(Dt=N,V=xA(re),N=V):(G=N,N=r)):(G=N,N=r)))),N}function qa(){var N;return Ua.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(dc)),N}function si(){var N;return hs.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(_t)),N}function pa(){var N,V,re,he,ze;if(N=G,V=[],re=G,t.charCodeAt(G)===92?(he=Ni,G++):(he=r,ct===0&&Ct(On)),he!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,he=Me(ze),re=he):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(he=Ci,G+=2):(he=r,ct===0&&Ct(oa)),he!==r&&(Dt=re,he=co()),re=he,re===r&&(re=G,he=G,ct++,ze=Fm(),ct--,ze===r?he=void 0:(G=he,he=r),he!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,he=Me(ze),re=he):(G=re,re=r)):(G=re,re=r))),re!==r)for(;re!==r;)V.push(re),re=G,t.charCodeAt(G)===92?(he=Ni,G++):(he=r,ct===0&&Ct(On)),he!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,he=Me(ze),re=he):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(he=Ci,G+=2):(he=r,ct===0&&Ct(oa)),he!==r&&(Dt=re,he=co()),re=he,re===r&&(re=G,he=G,ct++,ze=Fm(),ct--,ze===r?he=void 0:(G=he,he=r),he!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,he=Me(ze),re=he):(G=re,re=r)):(G=re,re=r)));else V=r;return V!==r&&(Dt=N,V=Os(V)),N=V,N}function vc(){var N,V,re,he,ze,mt;if(N=G,t.charCodeAt(G)===45?(V=Us,G++):(V=r,ct===0&&Ct(aa)),V===r&&(t.charCodeAt(G)===43?(V=la,G++):(V=r,ct===0&&Ct(Ho))),V===r&&(V=null),V!==r){if(re=[],Je.test(t.charAt(G))?(he=t.charAt(G),G++):(he=r,ct===0&&Ct(He)),he!==r)for(;he!==r;)re.push(he),Je.test(t.charAt(G))?(he=t.charAt(G),G++):(he=r,ct===0&&Ct(He));else re=r;if(re!==r)if(t.charCodeAt(G)===46?(he=wi,G++):(he=r,ct===0&&Ct(gs)),he!==r){if(ze=[],Je.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(He)),mt!==r)for(;mt!==r;)ze.push(mt),Je.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(He));else ze=r;ze!==r?(Dt=N,V=ds(V,re,ze),N=V):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;if(N===r){if(N=G,t.charCodeAt(G)===45?(V=Us,G++):(V=r,ct===0&&Ct(aa)),V===r&&(t.charCodeAt(G)===43?(V=la,G++):(V=r,ct===0&&Ct(Ho))),V===r&&(V=null),V!==r){if(re=[],Je.test(t.charAt(G))?(he=t.charAt(G),G++):(he=r,ct===0&&Ct(He)),he!==r)for(;he!==r;)re.push(he),Je.test(t.charAt(G))?(he=t.charAt(G),G++):(he=r,ct===0&&Ct(He));else re=r;re!==r?(Dt=N,V=ms(V,re),N=V):(G=N,N=r)}else G=N,N=r;if(N===r&&(N=G,V=Dc(),V!==r&&(Dt=N,V=_s(V)),N=V,N===r&&(N=G,V=Ga(),V!==r&&(Dt=N,V=Un(V)),N=V,N===r)))if(N=G,t.charCodeAt(G)===40?(V=De,G++):(V=r,ct===0&&Ct(ce)),V!==r){for(re=[],he=Qt();he!==r;)re.push(he),he=Qt();if(re!==r)if(he=ts(),he!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.charCodeAt(G)===41?(mt=ne,G++):(mt=r,ct===0&&Ct(ee)),mt!==r?(Dt=N,V=Pn(he),N=V):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r}return N}function Bl(){var N,V,re,he,ze,mt,fr,Cr;if(N=G,V=vc(),V!==r){for(re=[],he=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=he,ze=nr(V,mt,Cr),he=ze):(G=he,he=r)):(G=he,he=r)}else G=he,he=r;else G=he,he=r;for(;he!==r;){for(re.push(he),he=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=he,ze=nr(V,mt,Cr),he=ze):(G=he,he=r)):(G=he,he=r)}else G=he,he=r;else G=he,he=r}re!==r?(Dt=N,V=$(V,re),N=V):(G=N,N=r)}else G=N,N=r;return N}function ts(){var N,V,re,he,ze,mt,fr,Cr;if(N=G,V=Bl(),V!==r){for(re=[],he=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=he,ze=me(V,mt,Cr),he=ze):(G=he,he=r)):(G=he,he=r)}else G=he,he=r;else G=he,he=r;for(;he!==r;){for(re.push(he),he=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=he,ze=me(V,mt,Cr),he=ze):(G=he,he=r)):(G=he,he=r)}else G=he,he=r;else G=he,he=r}re!==r?(Dt=N,V=$(V,re),N=V):(G=N,N=r)}else G=N,N=r;return N}function Gr(){var N,V,re,he,ze,mt;if(N=G,t.substr(G,3)===Le?(V=Le,G+=3):(V=r,ct===0&&Ct(ft)),V!==r){for(re=[],he=Qt();he!==r;)re.push(he),he=Qt();if(re!==r)if(he=ts(),he!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.substr(G,2)===pt?(mt=pt,G+=2):(mt=r,ct===0&&Ct(Rt)),mt!==r?(Dt=N,V=er(he),N=V):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;return N}function yp(){var N,V,re,he;return N=G,t.substr(G,2)===Zr?(V=Zr,G+=2):(V=r,ct===0&&Ct(qi)),V!==r?(re=Cu(),re!==r?(t.charCodeAt(G)===41?(he=ne,G++):(he=r,ct===0&&Ct(ee)),he!==r?(Dt=N,V=es(re),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Dc(){var N,V,re,he,ze,mt;return N=G,t.substr(G,2)===xi?(V=xi,G+=2):(V=r,ct===0&&Ct(jo)),V!==r?(re=Ga(),re!==r?(t.substr(G,2)===bA?(he=bA,G+=2):(he=r,ct===0&&Ct(kA)),he!==r?(ze=RA(),ze!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(lt)),mt!==r?(Dt=N,V=up(re,ze),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===xi?(V=xi,G+=2):(V=r,ct===0&&Ct(jo)),V!==r?(re=Ga(),re!==r?(t.substr(G,3)===ng?(he=ng,G+=3):(he=r,ct===0&&Ct(gu)),he!==r?(Dt=N,V=ig(re),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===xi?(V=xi,G+=2):(V=r,ct===0&&Ct(jo)),V!==r?(re=Ga(),re!==r?(t.substr(G,2)===du?(he=du,G+=2):(he=r,ct===0&&Ct(uo)),he!==r?(ze=RA(),ze!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(lt)),mt!==r?(Dt=N,V=QA(re,ze),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===xi?(V=xi,G+=2):(V=r,ct===0&&Ct(jo)),V!==r?(re=Ga(),re!==r?(t.substr(G,3)===mc?(he=mc,G+=3):(he=r,ct===0&&Ct(ca)),he!==r?(Dt=N,V=sg(re),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===xi?(V=xi,G+=2):(V=r,ct===0&&Ct(jo)),V!==r?(re=Ga(),re!==r?(t.charCodeAt(G)===125?(he=H,G++):(he=r,ct===0&&Ct(lt)),he!==r?(Dt=N,V=yc(re),N=V):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.charCodeAt(G)===36?(V=Pm,G++):(V=r,ct===0&&Ct(og)),V!==r?(re=Ga(),re!==r?(Dt=N,V=yc(re),N=V):(G=N,N=r)):(G=N,N=r)))))),N}function Ew(){var N,V,re;return N=G,V=yg(),V!==r?(Dt=G,re=$n(V),re?re=void 0:re=r,re!==r?(Dt=N,V=Ap(V),N=V):(G=N,N=r)):(G=N,N=r),N}function yg(){var N,V,re,he,ze;if(N=G,V=[],re=G,he=G,ct++,ze=Cg(),ct--,ze===r?he=void 0:(G=he,he=r),he!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,he=Me(ze),re=he):(G=re,re=r)):(G=re,re=r),re!==r)for(;re!==r;)V.push(re),re=G,he=G,ct++,ze=Cg(),ct--,ze===r?he=void 0:(G=he,he=r),he!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,he=Me(ze),re=he):(G=re,re=r)):(G=re,re=r);else V=r;return V!==r&&(Dt=N,V=Os(V)),N=V,N}function Eg(){var N,V,re;if(N=G,V=[],ag.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(FA)),re!==r)for(;re!==r;)V.push(re),ag.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(FA));else V=r;return V!==r&&(Dt=N,V=Hs()),N=V,N}function Ga(){var N,V,re;if(N=G,V=[],mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha)),re!==r)for(;re!==r;)V.push(re),mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha));else V=r;return V!==r&&(Dt=N,V=Hs()),N=V,N}function Fm(){var N;return Gi.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(ua)),N}function Cg(){var N;return yu.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(Es)),N}function Qt(){var N,V;if(N=[],Ec.test(t.charAt(G))?(V=t.charAt(G),G++):(V=r,ct===0&&Ct(Cc)),V!==r)for(;V!==r;)N.push(V),Ec.test(t.charAt(G))?(V=t.charAt(G),G++):(V=r,ct===0&&Ct(Cc));else N=r;return N}if(Eu=a(),Eu!==r&&G===t.length)return Eu;throw Eu!==r&&G<t.length&&Ct(ug()),fg(wc,bi<t.length?t.charAt(bi):null,bi<t.length?Ic(bi,bi+1):Ic(bi,bi))}$Y.exports={SyntaxError:qg,parse:g8e}});function LD(t,e={isGlobPattern:()=>!1}){try{return(0,tW.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function ly(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${MD(r)}${o===\";\"?a!==t.length-1||e?\";\":\"\":\" &\"}`).join(\" \")}function MD(t){return`${cy(t.chain)}${t.then?` ${lR(t.then)}`:\"\"}`}function lR(t){return`${t.type} ${MD(t.line)}`}function cy(t){return`${uR(t)}${t.then?` ${cR(t.then)}`:\"\"}`}function cR(t){return`${t.type} ${cy(t.chain)}`}function uR(t){switch(t.type){case\"command\":return`${t.envs.length>0?`${t.envs.map(e=>ND(e)).join(\" \")} `:\"\"}${t.args.map(e=>AR(e)).join(\" \")}`;case\"subshell\":return`(${ly(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Kw(e)).join(\" \")}`:\"\"}`;case\"group\":return`{ ${ly(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Kw(e)).join(\" \")}`:\"\"}`;case\"envs\":return t.envs.map(e=>ND(e)).join(\" \");default:throw new Error(`Unsupported command type:  \"${t.type}\"`)}}function ND(t){return`${t.name}=${t.args[0]?Gg(t.args[0]):\"\"}`}function AR(t){switch(t.type){case\"redirection\":return Kw(t);case\"argument\":return Gg(t);default:throw new Error(`Unsupported argument type: \"${t.type}\"`)}}function Kw(t){return`${t.subtype} ${t.args.map(e=>Gg(e)).join(\" \")}`}function Gg(t){return t.segments.map(e=>fR(e)).join(\"\")}function fR(t){let e=(o,a)=>a?`\"${o}\"`:o,r=o=>o===\"\"?\"''\":o.match(/[()}<>$|&;\"'\\n\\t ]/)?o.match(/['\\t\\p{C}]/u)?o.match(/'/)?`\"${o.replace(/[\"$\\t\\p{C}]/u,m8e)}\"`:`$'${o.replace(/[\\t\\p{C}]/u,nW)}'`:`'${o}'`:o;switch(t.type){case\"text\":return r(t.text);case\"glob\":return t.pattern;case\"shell\":return e(`\\${${ly(t.shell)}}`,t.quoted);case\"variable\":return e(typeof t.defaultValue>\"u\"?typeof t.alternativeValue>\"u\"?`\\${${t.name}}`:t.alternativeValue.length===0?`\\${${t.name}:+}`:`\\${${t.name}:+${t.alternativeValue.map(o=>Gg(o)).join(\" \")}}`:t.defaultValue.length===0?`\\${${t.name}:-}`:`\\${${t.name}:-${t.defaultValue.map(o=>Gg(o)).join(\" \")}}`,t.quoted);case\"arithmetic\":return`$(( ${OD(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: \"${t.type}\"`)}}function OD(t){let e=a=>{switch(a){case\"addition\":return\"+\";case\"subtraction\":return\"-\";case\"multiplication\":return\"*\";case\"division\":return\"/\";default:throw new Error(`Can't extract operator from arithmetic expression of type \"${a}\"`)}},r=(a,n)=>n?`( ${a} )`:a,o=a=>r(OD(a),![\"number\",\"variable\"].includes(a.type));switch(t.type){case\"number\":return String(t.value);case\"variable\":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var tW,rW,d8e,nW,m8e,iW=Et(()=>{tW=$e(eW());rW=new Map([[\"\\f\",\"\\\\f\"],[`\n`,\"\\\\n\"],[\"\\r\",\"\\\\r\"],[\"\t\",\"\\\\t\"],[\"\\v\",\"\\\\v\"],[\"\\0\",\"\\\\0\"]]),d8e=new Map([[\"\\\\\",\"\\\\\\\\\"],[\"$\",\"\\\\$\"],['\"','\\\\\"'],...Array.from(rW,([t,e])=>[t,`\"$'${e}'\"`])]),nW=t=>rW.get(t)??`\\\\x${t.charCodeAt(0).toString(16).padStart(2,\"0\")}`,m8e=t=>d8e.get(t)??`\"$'${nW(t)}'\"`});var oW=_((Nxt,sW)=>{\"use strict\";function y8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Yg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Yg)}y8e(Yg,Error);Yg.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function E8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:Qe},a=Qe,n=\"/\",u=De(\"/\",!1),A=function(He,x){return{from:He,descriptor:x}},p=function(He){return{descriptor:He}},h=\"@\",E=De(\"@\",!1),I=function(He,x){return{fullName:He,description:x}},v=function(He){return{fullName:He}},b=function(){return we()},C=/^[^\\/@]/,T=ce([\"/\",\"@\"],!0,!1),L=/^[^\\/]/,U=ce([\"/\"],!0,!1),J=0,te=0,le=[{line:1,column:1}],pe=0,Ae=[],ye=0,ae;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function we(){return t.substring(te,J)}function Pe(){return ht(te,J)}function g(He,x){throw x=x!==void 0?x:ht(te,J),Re([Ie(He)],t.substring(te,J),x)}function Ee(He,x){throw x=x!==void 0?x:ht(te,J),lt(He,x)}function De(He,x){return{type:\"literal\",text:He,ignoreCase:x}}function ce(He,x,w){return{type:\"class\",parts:He,inverted:x,ignoreCase:w}}function ne(){return{type:\"any\"}}function ee(){return{type:\"end\"}}function Ie(He){return{type:\"other\",description:He}}function ke(He){var x=le[He],w;if(x)return x;for(w=He-1;!le[w];)w--;for(x=le[w],x={line:x.line,column:x.column};w<He;)t.charCodeAt(w)===10?(x.line++,x.column=1):x.column++,w++;return le[He]=x,x}function ht(He,x){var w=ke(He),S=ke(x);return{start:{offset:He,line:w.line,column:w.column},end:{offset:x,line:S.line,column:S.column}}}function H(He){J<pe||(J>pe&&(pe=J,Ae=[]),Ae.push(He))}function lt(He,x){return new Yg(He,null,null,x)}function Re(He,x,w){return new Yg(Yg.buildMessage(He,x),He,x,w)}function Qe(){var He,x,w,S;return He=J,x=be(),x!==r?(t.charCodeAt(J)===47?(w=n,J++):(w=r,ye===0&&H(u)),w!==r?(S=be(),S!==r?(te=He,x=A(x,S),He=x):(J=He,He=r)):(J=He,He=r)):(J=He,He=r),He===r&&(He=J,x=be(),x!==r&&(te=He,x=p(x)),He=x),He}function be(){var He,x,w,S;return He=J,x=_e(),x!==r?(t.charCodeAt(J)===64?(w=h,J++):(w=r,ye===0&&H(E)),w!==r?(S=Je(),S!==r?(te=He,x=I(x,S),He=x):(J=He,He=r)):(J=He,He=r)):(J=He,He=r),He===r&&(He=J,x=_e(),x!==r&&(te=He,x=v(x)),He=x),He}function _e(){var He,x,w,S,y;return He=J,t.charCodeAt(J)===64?(x=h,J++):(x=r,ye===0&&H(E)),x!==r?(w=Te(),w!==r?(t.charCodeAt(J)===47?(S=n,J++):(S=r,ye===0&&H(u)),S!==r?(y=Te(),y!==r?(te=He,x=b(),He=x):(J=He,He=r)):(J=He,He=r)):(J=He,He=r)):(J=He,He=r),He===r&&(He=J,x=Te(),x!==r&&(te=He,x=b()),He=x),He}function Te(){var He,x,w;if(He=J,x=[],C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,ye===0&&H(T)),w!==r)for(;w!==r;)x.push(w),C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,ye===0&&H(T));else x=r;return x!==r&&(te=He,x=b()),He=x,He}function Je(){var He,x,w;if(He=J,x=[],L.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,ye===0&&H(U)),w!==r)for(;w!==r;)x.push(w),L.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,ye===0&&H(U));else x=r;return x!==r&&(te=He,x=b()),He=x,He}if(ae=a(),ae!==r&&J===t.length)return ae;throw ae!==r&&J<t.length&&H(ee()),Re(Ae,pe<t.length?t.charAt(pe):null,pe<t.length?ht(pe,pe+1):ht(pe,pe))}sW.exports={SyntaxError:Yg,parse:E8e}});function UD(t){let e=t.match(/^\\*{1,2}\\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,aW.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function _D(t){let e=\"\";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+=\"/\"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var aW,lW=Et(()=>{aW=$e(oW())});var Vg=_((Mxt,Wg)=>{\"use strict\";function cW(t){return typeof t>\"u\"||t===null}function C8e(t){return typeof t==\"object\"&&t!==null}function w8e(t){return Array.isArray(t)?t:cW(t)?[]:[t]}function I8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r<o;r+=1)a=n[r],t[a]=e[a];return t}function B8e(t,e){var r=\"\",o;for(o=0;o<e;o+=1)r+=t;return r}function v8e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}Wg.exports.isNothing=cW;Wg.exports.isObject=C8e;Wg.exports.toArray=w8e;Wg.exports.repeat=B8e;Wg.exports.isNegativeZero=v8e;Wg.exports.extend=I8e});var uy=_((Oxt,uW)=>{\"use strict\";function Jw(t,e){Error.call(this),this.name=\"YAMLException\",this.reason=t,this.mark=e,this.message=(this.reason||\"(unknown reason)\")+(this.mark?\" \"+this.mark.toString():\"\"),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||\"\"}Jw.prototype=Object.create(Error.prototype);Jw.prototype.constructor=Jw;Jw.prototype.toString=function(e){var r=this.name+\": \";return r+=this.reason||\"(unknown reason)\",!e&&this.mark&&(r+=\" \"+this.mark.toString()),r};uW.exports=Jw});var pW=_((Uxt,fW)=>{\"use strict\";var AW=Vg();function pR(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.line=o,this.column=a}pR.prototype.getSnippet=function(e,r){var o,a,n,u,A;if(!this.buffer)return null;for(e=e||4,r=r||75,o=\"\",a=this.position;a>0&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){o=\" ... \",a+=5;break}for(n=\"\",u=this.position;u<this.buffer.length&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(u))===-1;)if(u+=1,u-this.position>r/2-1){n=\" ... \",u-=5;break}return A=this.buffer.slice(a,u),AW.repeat(\" \",e)+o+A+n+`\n`+AW.repeat(\" \",e+this.position-a+o.length)+\"^\"};pR.prototype.toString=function(e){var r,o=\"\";return this.name&&(o+='in \"'+this.name+'\" '),o+=\"at line \"+(this.line+1)+\", column \"+(this.column+1),e||(r=this.getSnippet(),r&&(o+=`:\n`+r)),o};fW.exports=pR});var os=_((_xt,gW)=>{\"use strict\";var hW=uy(),D8e=[\"kind\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"defaultStyle\",\"styleAliases\"],P8e=[\"scalar\",\"sequence\",\"mapping\"];function S8e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(o){e[String(o)]=r})}),e}function x8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(D8e.indexOf(r)===-1)throw new hW('Unknown option \"'+r+'\" is met in definition of \"'+t+'\" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=S8e(e.styleAliases||null),P8e.indexOf(this.kind)===-1)throw new hW('Unknown kind \"'+this.kind+'\" is specified for \"'+t+'\" YAML type.')}gW.exports=x8e});var Kg=_((Hxt,mW)=>{\"use strict\";var dW=Vg(),HD=uy(),b8e=os();function hR(t,e,r){var o=[];return t.include.forEach(function(a){r=hR(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,u){n.tag===a.tag&&n.kind===a.kind&&o.push(u)}),r.push(a)}),r.filter(function(a,n){return o.indexOf(n)===-1})}function k8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function o(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e<r;e+=1)arguments[e].forEach(o);return t}function Ay(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&e.loadKind!==\"scalar\")throw new HD(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\")}),this.compiledImplicit=hR(this,\"implicit\",[]),this.compiledExplicit=hR(this,\"explicit\",[]),this.compiledTypeMap=k8e(this.compiledImplicit,this.compiledExplicit)}Ay.DEFAULT=null;Ay.create=function(){var e,r;switch(arguments.length){case 1:e=Ay.DEFAULT,r=arguments[0];break;case 2:e=arguments[0],r=arguments[1];break;default:throw new HD(\"Wrong number of arguments for Schema.create function\")}if(e=dW.toArray(e),r=dW.toArray(r),!e.every(function(o){return o instanceof Ay}))throw new HD(\"Specified list of super schemas (or a single Schema object) contains a non-Schema object.\");if(!r.every(function(o){return o instanceof b8e}))throw new HD(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");return new Ay({include:e,explicit:r})};mW.exports=Ay});var EW=_((jxt,yW)=>{\"use strict\";var Q8e=os();yW.exports=new Q8e(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(t){return t!==null?t:\"\"}})});var wW=_((qxt,CW)=>{\"use strict\";var F8e=os();CW.exports=new F8e(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(t){return t!==null?t:[]}})});var BW=_((Gxt,IW)=>{\"use strict\";var T8e=os();IW.exports=new T8e(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(t){return t!==null?t:{}}})});var jD=_((Yxt,vW)=>{\"use strict\";var R8e=Kg();vW.exports=new R8e({explicit:[EW(),wW(),BW()]})});var PW=_((Wxt,DW)=>{\"use strict\";var N8e=os();function L8e(t){if(t===null)return!0;var e=t.length;return e===1&&t===\"~\"||e===4&&(t===\"null\"||t===\"Null\"||t===\"NULL\")}function M8e(){return null}function O8e(t){return t===null}DW.exports=new N8e(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:L8e,construct:M8e,predicate:O8e,represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"}},defaultStyle:\"lowercase\"})});var xW=_((Vxt,SW)=>{\"use strict\";var U8e=os();function _8e(t){if(t===null)return!1;var e=t.length;return e===4&&(t===\"true\"||t===\"True\"||t===\"TRUE\")||e===5&&(t===\"false\"||t===\"False\"||t===\"FALSE\")}function H8e(t){return t===\"true\"||t===\"True\"||t===\"TRUE\"}function j8e(t){return Object.prototype.toString.call(t)===\"[object Boolean]\"}SW.exports=new U8e(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:_8e,construct:H8e,predicate:j8e,represent:{lowercase:function(t){return t?\"true\":\"false\"},uppercase:function(t){return t?\"TRUE\":\"FALSE\"},camelcase:function(t){return t?\"True\":\"False\"}},defaultStyle:\"lowercase\"})});var kW=_((Kxt,bW)=>{\"use strict\";var q8e=Vg(),G8e=os();function Y8e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function W8e(t){return 48<=t&&t<=55}function V8e(t){return 48<=t&&t<=57}function K8e(t){if(t===null)return!1;var e=t.length,r=0,o=!1,a;if(!e)return!1;if(a=t[r],(a===\"-\"||a===\"+\")&&(a=t[++r]),a===\"0\"){if(r+1===e)return!0;if(a=t[++r],a===\"b\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(a!==\"0\"&&a!==\"1\")return!1;o=!0}return o&&a!==\"_\"}if(a===\"x\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(!Y8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!==\"_\"}for(;r<e;r++)if(a=t[r],a!==\"_\"){if(!W8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!==\"_\"}if(a===\"_\")return!1;for(;r<e;r++)if(a=t[r],a!==\"_\"){if(a===\":\")break;if(!V8e(t.charCodeAt(r)))return!1;o=!0}return!o||a===\"_\"?!1:a!==\":\"?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(r))}function J8e(t){var e=t,r=1,o,a,n=[];return e.indexOf(\"_\")!==-1&&(e=e.replace(/_/g,\"\")),o=e[0],(o===\"-\"||o===\"+\")&&(o===\"-\"&&(r=-1),e=e.slice(1),o=e[0]),e===\"0\"?0:o===\"0\"?e[1]===\"b\"?r*parseInt(e.slice(2),2):e[1]===\"x\"?r*parseInt(e,16):r*parseInt(e,8):e.indexOf(\":\")!==-1?(e.split(\":\").forEach(function(u){n.unshift(parseInt(u,10))}),e=0,a=1,n.forEach(function(u){e+=u*a,a*=60}),r*e):r*parseInt(e,10)}function z8e(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&t%1===0&&!q8e.isNegativeZero(t)}bW.exports=new G8e(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:K8e,construct:J8e,predicate:z8e,represent:{binary:function(t){return t>=0?\"0b\"+t.toString(2):\"-0b\"+t.toString(2).slice(1)},octal:function(t){return t>=0?\"0\"+t.toString(8):\"-0\"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?\"0x\"+t.toString(16).toUpperCase():\"-0x\"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:\"decimal\",styleAliases:{binary:[2,\"bin\"],octal:[8,\"oct\"],decimal:[10,\"dec\"],hexadecimal:[16,\"hex\"]}})});var TW=_((Jxt,FW)=>{\"use strict\";var QW=Vg(),X8e=os(),Z8e=new RegExp(\"^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");function $8e(t){return!(t===null||!Z8e.test(t)||t[t.length-1]===\"_\")}function eHe(t){var e,r,o,a;return e=t.replace(/_/g,\"\").toLowerCase(),r=e[0]===\"-\"?-1:1,a=[],\"+-\".indexOf(e[0])>=0&&(e=e.slice(1)),e===\".inf\"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===\".nan\"?NaN:e.indexOf(\":\")>=0?(e.split(\":\").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,o=1,a.forEach(function(n){e+=n*o,o*=60}),r*e):r*parseFloat(e,10)}var tHe=/^[-+]?[0-9]+e/;function rHe(t,e){var r;if(isNaN(t))switch(e){case\"lowercase\":return\".nan\";case\"uppercase\":return\".NAN\";case\"camelcase\":return\".NaN\"}else if(Number.POSITIVE_INFINITY===t)switch(e){case\"lowercase\":return\".inf\";case\"uppercase\":return\".INF\";case\"camelcase\":return\".Inf\"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case\"lowercase\":return\"-.inf\";case\"uppercase\":return\"-.INF\";case\"camelcase\":return\"-.Inf\"}else if(QW.isNegativeZero(t))return\"-0.0\";return r=t.toString(10),tHe.test(r)?r.replace(\"e\",\".e\"):r}function nHe(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&(t%1!==0||QW.isNegativeZero(t))}FW.exports=new X8e(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:$8e,construct:eHe,predicate:nHe,represent:rHe,defaultStyle:\"lowercase\"})});var gR=_((zxt,RW)=>{\"use strict\";var iHe=Kg();RW.exports=new iHe({include:[jD()],implicit:[PW(),xW(),kW(),TW()]})});var dR=_((Xxt,NW)=>{\"use strict\";var sHe=Kg();NW.exports=new sHe({include:[gR()]})});var UW=_((Zxt,OW)=>{\"use strict\";var oHe=os(),LW=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),MW=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");function aHe(t){return t===null?!1:LW.exec(t)!==null||MW.exec(t)!==null}function lHe(t){var e,r,o,a,n,u,A,p=0,h=null,E,I,v;if(e=LW.exec(t),e===null&&(e=MW.exec(t)),e===null)throw new Error(\"Date resolve error\");if(r=+e[1],o=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,o,a));if(n=+e[4],u=+e[5],A=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+=\"0\";p=+p}return e[9]&&(E=+e[10],I=+(e[11]||0),h=(E*60+I)*6e4,e[9]===\"-\"&&(h=-h)),v=new Date(Date.UTC(r,o,a,n,u,A,p)),h&&v.setTime(v.getTime()-h),v}function cHe(t){return t.toISOString()}OW.exports=new oHe(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:aHe,construct:lHe,instanceOf:Date,represent:cHe})});var HW=_(($xt,_W)=>{\"use strict\";var uHe=os();function AHe(t){return t===\"<<\"||t===null}_W.exports=new uHe(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:AHe})});var GW=_((ebt,qW)=>{\"use strict\";var Jg;try{jW=Be,Jg=jW(\"buffer\").Buffer}catch{}var jW,fHe=os(),mR=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\\r`;function pHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=mR;for(r=0;r<a;r++)if(e=n.indexOf(t.charAt(r)),!(e>64)){if(e<0)return!1;o+=6}return o%8===0}function hHe(t){var e,r,o=t.replace(/[\\r\\n=]/g,\"\"),a=o.length,n=mR,u=0,A=[];for(e=0;e<a;e++)e%4===0&&e&&(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)),u=u<<6|n.indexOf(o.charAt(e));return r=a%4*6,r===0?(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)):r===18?(A.push(u>>10&255),A.push(u>>2&255)):r===12&&A.push(u>>4&255),Jg?Jg.from?Jg.from(A):new Jg(A):A}function gHe(t){var e=\"\",r=0,o,a,n=t.length,u=mR;for(o=0;o<n;o++)o%3===0&&o&&(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]),r=(r<<8)+t[o];return a=n%3,a===0?(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]):a===2?(e+=u[r>>10&63],e+=u[r>>4&63],e+=u[r<<2&63],e+=u[64]):a===1&&(e+=u[r>>2&63],e+=u[r<<4&63],e+=u[64],e+=u[64]),e}function dHe(t){return Jg&&Jg.isBuffer(t)}qW.exports=new fHe(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:pHe,construct:hHe,predicate:dHe,represent:gHe})});var WW=_((rbt,YW)=>{\"use strict\";var mHe=os(),yHe=Object.prototype.hasOwnProperty,EHe=Object.prototype.toString;function CHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A.length;r<o;r+=1){if(a=A[r],u=!1,EHe.call(a)!==\"[object Object]\")return!1;for(n in a)if(yHe.call(a,n))if(!u)u=!0;else return!1;if(!u)return!1;if(e.indexOf(n)===-1)e.push(n);else return!1}return!0}function wHe(t){return t!==null?t:[]}YW.exports=new mHe(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:CHe,construct:wHe})});var KW=_((nbt,VW)=>{\"use strict\";var IHe=os(),BHe=Object.prototype.toString;function vHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1){if(o=u[e],BHe.call(o)!==\"[object Object]\"||(a=Object.keys(o),a.length!==1))return!1;n[e]=[a[0],o[a[0]]]}return!0}function DHe(t){if(t===null)return[];var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1)o=u[e],a=Object.keys(o),n[e]=[a[0],o[a[0]]];return n}VW.exports=new IHe(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:vHe,construct:DHe})});var zW=_((ibt,JW)=>{\"use strict\";var PHe=os(),SHe=Object.prototype.hasOwnProperty;function xHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(SHe.call(r,e)&&r[e]!==null)return!1;return!0}function bHe(t){return t!==null?t:{}}JW.exports=new PHe(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:xHe,construct:bHe})});var fy=_((sbt,XW)=>{\"use strict\";var kHe=Kg();XW.exports=new kHe({include:[dR()],implicit:[UW(),HW()],explicit:[GW(),WW(),KW(),zW()]})});var $W=_((obt,ZW)=>{\"use strict\";var QHe=os();function FHe(){return!0}function THe(){}function RHe(){return\"\"}function NHe(t){return typeof t>\"u\"}ZW.exports=new QHe(\"tag:yaml.org,2002:js/undefined\",{kind:\"scalar\",resolve:FHe,construct:THe,predicate:NHe,represent:RHe})});var tV=_((abt,eV)=>{\"use strict\";var LHe=os();function MHe(t){if(t===null||t.length===0)return!1;var e=t,r=/\\/([gim]*)$/.exec(t),o=\"\";return!(e[0]===\"/\"&&(r&&(o=r[1]),o.length>3||e[e.length-o.length-1]!==\"/\"))}function OHe(t){var e=t,r=/\\/([gim]*)$/.exec(t),o=\"\";return e[0]===\"/\"&&(r&&(o=r[1]),e=e.slice(1,e.length-o.length-1)),new RegExp(e,o)}function UHe(t){var e=\"/\"+t.source+\"/\";return t.global&&(e+=\"g\"),t.multiline&&(e+=\"m\"),t.ignoreCase&&(e+=\"i\"),e}function _He(t){return Object.prototype.toString.call(t)===\"[object RegExp]\"}eV.exports=new LHe(\"tag:yaml.org,2002:js/regexp\",{kind:\"scalar\",resolve:MHe,construct:OHe,predicate:_He,represent:UHe})});var iV=_((lbt,nV)=>{\"use strict\";var qD;try{rV=Be,qD=rV(\"esprima\")}catch{typeof window<\"u\"&&(qD=window.esprima)}var rV,HHe=os();function jHe(t){if(t===null)return!1;try{var e=\"(\"+t+\")\",r=qD.parse(e,{range:!0});return!(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")}catch{return!1}}function qHe(t){var e=\"(\"+t+\")\",r=qD.parse(e,{range:!0}),o=[],a;if(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")throw new Error(\"Failed to resolve function\");return r.body[0].expression.params.forEach(function(n){o.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type===\"BlockStatement\"?new Function(o,e.slice(a[0]+1,a[1]-1)):new Function(o,\"return \"+e.slice(a[0],a[1]))}function GHe(t){return t.toString()}function YHe(t){return Object.prototype.toString.call(t)===\"[object Function]\"}nV.exports=new HHe(\"tag:yaml.org,2002:js/function\",{kind:\"scalar\",resolve:jHe,construct:qHe,predicate:YHe,represent:GHe})});var zw=_((ubt,oV)=>{\"use strict\";var sV=Kg();oV.exports=sV.DEFAULT=new sV({include:[fy()],explicit:[$W(),tV(),iV()]})});var DV=_((Abt,Xw)=>{\"use strict\";var mf=Vg(),pV=uy(),WHe=pW(),hV=fy(),VHe=zw(),Gp=Object.prototype.hasOwnProperty,GD=1,gV=2,dV=3,YD=4,yR=1,KHe=2,aV=3,JHe=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,zHe=/[\\x85\\u2028\\u2029]/,XHe=/[,\\[\\]\\{\\}]/,mV=/^(?:!|!!|![a-z\\-]+!)$/i,yV=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function lV(t){return Object.prototype.toString.call(t)}function Hu(t){return t===10||t===13}function Xg(t){return t===9||t===32}function Ia(t){return t===9||t===32||t===10||t===13}function py(t){return t===44||t===91||t===93||t===123||t===125}function ZHe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function $He(t){return t===120?2:t===117?4:t===85?8:0}function e6e(t){return 48<=t&&t<=57?t-48:-1}function cV(t){return t===48?\"\\0\":t===97?\"\\x07\":t===98?\"\\b\":t===116||t===9?\"\t\":t===110?`\n`:t===118?\"\\v\":t===102?\"\\f\":t===114?\"\\r\":t===101?\"\\x1B\":t===32?\" \":t===34?'\"':t===47?\"/\":t===92?\"\\\\\":t===78?\"\\x85\":t===95?\"\\xA0\":t===76?\"\\u2028\":t===80?\"\\u2029\":\"\"}function t6e(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var EV=new Array(256),CV=new Array(256);for(zg=0;zg<256;zg++)EV[zg]=cV(zg)?1:0,CV[zg]=cV(zg);var zg;function r6e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||VHe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function wV(t,e){return new pV(e,new WHe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Sr(t,e){throw wV(t,e)}function WD(t,e){t.onWarning&&t.onWarning.call(null,wV(t,e))}var uV={YAML:function(e,r,o){var a,n,u;e.version!==null&&Sr(e,\"duplication of %YAML directive\"),o.length!==1&&Sr(e,\"YAML directive accepts exactly one argument\"),a=/^([0-9]+)\\.([0-9]+)$/.exec(o[0]),a===null&&Sr(e,\"ill-formed argument of the YAML directive\"),n=parseInt(a[1],10),u=parseInt(a[2],10),n!==1&&Sr(e,\"unacceptable YAML version of the document\"),e.version=o[0],e.checkLineBreaks=u<2,u!==1&&u!==2&&WD(e,\"unsupported YAML version of the document\")},TAG:function(e,r,o){var a,n;o.length!==2&&Sr(e,\"TAG directive accepts exactly two arguments\"),a=o[0],n=o[1],mV.test(a)||Sr(e,\"ill-formed tag handle (first argument) of the TAG directive\"),Gp.call(e.tagMap,a)&&Sr(e,'there is a previously declared suffix for \"'+a+'\" tag handle'),yV.test(n)||Sr(e,\"ill-formed tag prefix (second argument) of the TAG directive\"),e.tagMap[a]=n}};function qp(t,e,r,o){var a,n,u,A;if(e<r){if(A=t.input.slice(e,r),o)for(a=0,n=A.length;a<n;a+=1)u=A.charCodeAt(a),u===9||32<=u&&u<=1114111||Sr(t,\"expected valid JSON character\");else JHe.test(A)&&Sr(t,\"the stream contains non-printable characters\");t.result+=A}}function AV(t,e,r,o){var a,n,u,A;for(mf.isObject(r)||Sr(t,\"cannot merge mappings; the provided source object is unacceptable\"),a=Object.keys(r),u=0,A=a.length;u<A;u+=1)n=a[u],Gp.call(e,n)||(e[n]=r[n],o[n]=!0)}function hy(t,e,r,o,a,n,u,A){var p,h;if(Array.isArray(a))for(a=Array.prototype.slice.call(a),p=0,h=a.length;p<h;p+=1)Array.isArray(a[p])&&Sr(t,\"nested arrays are not supported inside keys\"),typeof a==\"object\"&&lV(a[p])===\"[object Object]\"&&(a[p]=\"[object Object]\");if(typeof a==\"object\"&&lV(a)===\"[object Object]\"&&(a=\"[object Object]\"),a=String(a),e===null&&(e={}),o===\"tag:yaml.org,2002:merge\")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)AV(t,e,n[p],r);else AV(t,e,n,r);else!t.json&&!Gp.call(r,a)&&Gp.call(e,a)&&(t.line=u||t.line,t.position=A||t.position,Sr(t,\"duplicated mapping key\")),e[a]=n,delete r[a];return e}function ER(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position++:e===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):Sr(t,\"a line break is expected\"),t.line+=1,t.lineStart=t.position}function Wi(t,e,r){for(var o=0,a=t.input.charCodeAt(t.position);a!==0;){for(;Xg(a);)a=t.input.charCodeAt(++t.position);if(e&&a===35)do a=t.input.charCodeAt(++t.position);while(a!==10&&a!==13&&a!==0);if(Hu(a))for(ER(t),a=t.input.charCodeAt(t.position),o++,t.lineIndent=0;a===32;)t.lineIndent++,a=t.input.charCodeAt(++t.position);else break}return r!==-1&&o!==0&&t.lineIndent<r&&WD(t,\"deficient indentation\"),o}function VD(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r===45||r===46)&&r===t.input.charCodeAt(e+1)&&r===t.input.charCodeAt(e+2)&&(e+=3,r=t.input.charCodeAt(e),r===0||Ia(r)))}function CR(t,e){e===1?t.result+=\" \":e>1&&(t.result+=mf.repeat(`\n`,e-1))}function n6e(t,e,r){var o,a,n,u,A,p,h,E,I=t.kind,v=t.result,b;if(b=t.input.charCodeAt(t.position),Ia(b)||py(b)||b===35||b===38||b===42||b===33||b===124||b===62||b===39||b===34||b===37||b===64||b===96||(b===63||b===45)&&(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&py(a)))return!1;for(t.kind=\"scalar\",t.result=\"\",n=u=t.position,A=!1;b!==0;){if(b===58){if(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&py(a))break}else if(b===35){if(o=t.input.charCodeAt(t.position-1),Ia(o))break}else{if(t.position===t.lineStart&&VD(t)||r&&py(b))break;if(Hu(b))if(p=t.line,h=t.lineStart,E=t.lineIndent,Wi(t,!1,-1),t.lineIndent>=e){A=!0,b=t.input.charCodeAt(t.position);continue}else{t.position=u,t.line=p,t.lineStart=h,t.lineIndent=E;break}}A&&(qp(t,n,u,!1),CR(t,t.line-p),n=u=t.position,A=!1),Xg(b)||(u=t.position+1),b=t.input.charCodeAt(++t.position)}return qp(t,n,u,!1),t.result?!0:(t.kind=I,t.result=v,!1)}function i6e(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,o=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(qp(t,o,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)o=t.position,t.position++,a=t.position;else return!0;else Hu(r)?(qp(t,o,a,!0),CR(t,Wi(t,!1,e)),o=a=t.position):t.position===t.lineStart&&VD(t)?Sr(t,\"unexpected end of the document within a single quoted scalar\"):(t.position++,a=t.position);Sr(t,\"unexpected end of the stream within a single quoted scalar\")}function s6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!==34)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,r=o=t.position;(A=t.input.charCodeAt(t.position))!==0;){if(A===34)return qp(t,r,t.position,!0),t.position++,!0;if(A===92){if(qp(t,r,t.position,!0),A=t.input.charCodeAt(++t.position),Hu(A))Wi(t,!1,e);else if(A<256&&EV[A])t.result+=CV[A],t.position++;else if((u=$He(A))>0){for(a=u,n=0;a>0;a--)A=t.input.charCodeAt(++t.position),(u=ZHe(A))>=0?n=(n<<4)+u:Sr(t,\"expected hexadecimal character\");t.result+=t6e(n),t.position++}else Sr(t,\"unknown escape sequence\");r=o=t.position}else Hu(A)?(qp(t,r,o,!0),CR(t,Wi(t,!1,e)),r=o=t.position):t.position===t.lineStart&&VD(t)?Sr(t,\"unexpected end of the document within a double quoted scalar\"):(t.position++,o=t.position)}Sr(t,\"unexpected end of the stream within a double quoted scalar\")}function o6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,E,I,v={},b,C,T,L;if(L=t.input.charCodeAt(t.position),L===91)p=93,I=!1,n=[];else if(L===123)p=125,I=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),L=t.input.charCodeAt(++t.position);L!==0;){if(Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===p)return t.position++,t.tag=a,t.anchor=u,t.kind=I?\"mapping\":\"sequence\",t.result=n,!0;r||Sr(t,\"missed comma between flow collection entries\"),C=b=T=null,h=E=!1,L===63&&(A=t.input.charCodeAt(t.position+1),Ia(A)&&(h=E=!0,t.position++,Wi(t,!0,e))),o=t.line,gy(t,e,GD,!1,!0),C=t.tag,b=t.result,Wi(t,!0,e),L=t.input.charCodeAt(t.position),(E||t.line===o)&&L===58&&(h=!0,L=t.input.charCodeAt(++t.position),Wi(t,!0,e),gy(t,e,GD,!1,!0),T=t.result),I?hy(t,n,v,C,b,T):h?n.push(hy(t,null,v,C,b,T)):n.push(b),Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===44?(r=!0,L=t.input.charCodeAt(++t.position)):r=!1}Sr(t,\"unexpected end of the stream within a flow collection\")}function a6e(t,e){var r,o,a=yR,n=!1,u=!1,A=e,p=0,h=!1,E,I;if(I=t.input.charCodeAt(t.position),I===124)o=!1;else if(I===62)o=!0;else return!1;for(t.kind=\"scalar\",t.result=\"\";I!==0;)if(I=t.input.charCodeAt(++t.position),I===43||I===45)yR===a?a=I===43?aV:KHe:Sr(t,\"repeat of a chomping mode identifier\");else if((E=e6e(I))>=0)E===0?Sr(t,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):u?Sr(t,\"repeat of an indentation width identifier\"):(A=e+E-1,u=!0);else break;if(Xg(I)){do I=t.input.charCodeAt(++t.position);while(Xg(I));if(I===35)do I=t.input.charCodeAt(++t.position);while(!Hu(I)&&I!==0)}for(;I!==0;){for(ER(t),t.lineIndent=0,I=t.input.charCodeAt(t.position);(!u||t.lineIndent<A)&&I===32;)t.lineIndent++,I=t.input.charCodeAt(++t.position);if(!u&&t.lineIndent>A&&(A=t.lineIndent),Hu(I)){p++;continue}if(t.lineIndent<A){a===aV?t.result+=mf.repeat(`\n`,n?1+p:p):a===yR&&n&&(t.result+=`\n`);break}for(o?Xg(I)?(h=!0,t.result+=mf.repeat(`\n`,n?1+p:p)):h?(h=!1,t.result+=mf.repeat(`\n`,p+1)):p===0?n&&(t.result+=\" \"):t.result+=mf.repeat(`\n`,p):t.result+=mf.repeat(`\n`,n?1+p:p),n=!0,u=!0,p=0,r=t.position;!Hu(I)&&I!==0;)I=t.input.charCodeAt(++t.position);qp(t,r,t.position,!1)}return!0}function fV(t,e){var r,o=t.tag,a=t.anchor,n=[],u,A=!1,p;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(t.position);p!==0&&!(p!==45||(u=t.input.charCodeAt(t.position+1),!Ia(u)));){if(A=!0,t.position++,Wi(t,!0,-1)&&t.lineIndent<=e){n.push(null),p=t.input.charCodeAt(t.position);continue}if(r=t.line,gy(t,e,dV,!1,!0),n.push(t.result),Wi(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&p!==0)Sr(t,\"bad indentation of a sequence entry\");else if(t.lineIndent<e)break}return A?(t.tag=o,t.anchor=a,t.kind=\"sequence\",t.result=n,!0):!1}function l6e(t,e,r){var o,a,n,u,A=t.tag,p=t.anchor,h={},E={},I=null,v=null,b=null,C=!1,T=!1,L;for(t.anchor!==null&&(t.anchorMap[t.anchor]=h),L=t.input.charCodeAt(t.position);L!==0;){if(o=t.input.charCodeAt(t.position+1),n=t.line,u=t.position,(L===63||L===58)&&Ia(o))L===63?(C&&(hy(t,h,E,I,v,null),I=v=b=null),T=!0,C=!0,a=!0):C?(C=!1,a=!0):Sr(t,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),t.position+=1,L=o;else if(gy(t,r,gV,!1,!0))if(t.line===n){for(L=t.input.charCodeAt(t.position);Xg(L);)L=t.input.charCodeAt(++t.position);if(L===58)L=t.input.charCodeAt(++t.position),Ia(L)||Sr(t,\"a whitespace character is expected after the key-value separator within a block mapping\"),C&&(hy(t,h,E,I,v,null),I=v=b=null),T=!0,C=!1,a=!1,I=t.tag,v=t.result;else if(T)Sr(t,\"can not read an implicit mapping pair; a colon is missed\");else return t.tag=A,t.anchor=p,!0}else if(T)Sr(t,\"can not read a block mapping entry; a multiline key may not be an implicit key\");else return t.tag=A,t.anchor=p,!0;else break;if((t.line===n||t.lineIndent>e)&&(gy(t,e,YD,!0,a)&&(C?v=t.result:b=t.result),C||(hy(t,h,E,I,v,b,n,u),I=v=b=null),Wi(t,!0,-1),L=t.input.charCodeAt(t.position)),t.lineIndent>e&&L!==0)Sr(t,\"bad indentation of a mapping entry\");else if(t.lineIndent<e)break}return C&&hy(t,h,E,I,v,null),T&&(t.tag=A,t.anchor=p,t.kind=\"mapping\",t.result=h),T}function c6e(t){var e,r=!1,o=!1,a,n,u;if(u=t.input.charCodeAt(t.position),u!==33)return!1;if(t.tag!==null&&Sr(t,\"duplication of a tag property\"),u=t.input.charCodeAt(++t.position),u===60?(r=!0,u=t.input.charCodeAt(++t.position)):u===33?(o=!0,a=\"!!\",u=t.input.charCodeAt(++t.position)):a=\"!\",e=t.position,r){do u=t.input.charCodeAt(++t.position);while(u!==0&&u!==62);t.position<t.length?(n=t.input.slice(e,t.position),u=t.input.charCodeAt(++t.position)):Sr(t,\"unexpected end of the stream within a verbatim tag\")}else{for(;u!==0&&!Ia(u);)u===33&&(o?Sr(t,\"tag suffix cannot contain exclamation marks\"):(a=t.input.slice(e-1,t.position+1),mV.test(a)||Sr(t,\"named tag handle cannot contain such characters\"),o=!0,e=t.position+1)),u=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),XHe.test(n)&&Sr(t,\"tag suffix cannot contain flow indicator characters\")}return n&&!yV.test(n)&&Sr(t,\"tag name cannot contain such characters: \"+n),r?t.tag=n:Gp.call(t.tagMap,a)?t.tag=t.tagMap[a]+n:a===\"!\"?t.tag=\"!\"+n:a===\"!!\"?t.tag=\"tag:yaml.org,2002:\"+n:Sr(t,'undeclared tag handle \"'+a+'\"'),!0}function u6e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&Sr(t,\"duplication of an anchor property\"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!Ia(r)&&!py(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Sr(t,\"name of an anchor node must contain at least one character\"),t.anchor=t.input.slice(e,t.position),!0}function A6e(t){var e,r,o;if(o=t.input.charCodeAt(t.position),o!==42)return!1;for(o=t.input.charCodeAt(++t.position),e=t.position;o!==0&&!Ia(o)&&!py(o);)o=t.input.charCodeAt(++t.position);return t.position===e&&Sr(t,\"name of an alias node must contain at least one character\"),r=t.input.slice(e,t.position),Gp.call(t.anchorMap,r)||Sr(t,'unidentified alias \"'+r+'\"'),t.result=t.anchorMap[r],Wi(t,!0,-1),!0}function gy(t,e,r,o,a){var n,u,A,p=1,h=!1,E=!1,I,v,b,C,T;if(t.listener!==null&&t.listener(\"open\",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=u=A=YD===r||dV===r,o&&Wi(t,!0,-1)&&(h=!0,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)),p===1)for(;c6e(t)||u6e(t);)Wi(t,!0,-1)?(h=!0,A=n,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)):A=!1;if(A&&(A=h||a),(p===1||YD===r)&&(GD===r||gV===r?C=e:C=e+1,T=t.position-t.lineStart,p===1?A&&(fV(t,T)||l6e(t,T,C))||o6e(t,C)?E=!0:(u&&a6e(t,C)||i6e(t,C)||s6e(t,C)?E=!0:A6e(t)?(E=!0,(t.tag!==null||t.anchor!==null)&&Sr(t,\"alias node should not have any properties\")):n6e(t,C,GD===r)&&(E=!0,t.tag===null&&(t.tag=\"?\")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(E=A&&fV(t,T))),t.tag!==null&&t.tag!==\"!\")if(t.tag===\"?\"){for(t.result!==null&&t.kind!==\"scalar\"&&Sr(t,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+t.kind+'\"'),I=0,v=t.implicitTypes.length;I<v;I+=1)if(b=t.implicitTypes[I],b.resolve(t.result)){t.result=b.construct(t.result),t.tag=b.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else Gp.call(t.typeMap[t.kind||\"fallback\"],t.tag)?(b=t.typeMap[t.kind||\"fallback\"][t.tag],t.result!==null&&b.kind!==t.kind&&Sr(t,\"unacceptable node kind for !<\"+t.tag+'> tag; it should be \"'+b.kind+'\", not \"'+t.kind+'\"'),b.resolve(t.result)?(t.result=b.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Sr(t,\"cannot resolve a node with !<\"+t.tag+\"> explicit tag\")):Sr(t,\"unknown tag !<\"+t.tag+\">\");return t.listener!==null&&t.listener(\"close\",t),t.tag!==null||t.anchor!==null||E}function f6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(u=t.input.charCodeAt(t.position))!==0&&(Wi(t,!0,-1),u=t.input.charCodeAt(t.position),!(t.lineIndent>0||u!==37));){for(n=!0,u=t.input.charCodeAt(++t.position),r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);for(o=t.input.slice(r,t.position),a=[],o.length<1&&Sr(t,\"directive name must not be less than one character in length\");u!==0;){for(;Xg(u);)u=t.input.charCodeAt(++t.position);if(u===35){do u=t.input.charCodeAt(++t.position);while(u!==0&&!Hu(u));break}if(Hu(u))break;for(r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}u!==0&&ER(t),Gp.call(uV,o)?uV[o](t,o,a):WD(t,'unknown document directive \"'+o+'\"')}if(Wi(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Wi(t,!0,-1)):n&&Sr(t,\"directives end mark is expected\"),gy(t,t.lineIndent-1,YD,!1,!0),Wi(t,!0,-1),t.checkLineBreaks&&zHe.test(t.input.slice(e,t.position))&&WD(t,\"non-ASCII line breaks are interpreted as content\"),t.documents.push(t.result),t.position===t.lineStart&&VD(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Wi(t,!0,-1));return}if(t.position<t.length-1)Sr(t,\"end of the stream or a document separator is expected\");else return}function IV(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`\n`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var r=new r6e(t,e),o=t.indexOf(\"\\0\");for(o!==-1&&(r.position=o,Sr(r,\"null byte is not allowed in input\")),r.input+=\"\\0\";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)f6e(r);return r.documents}function BV(t,e,r){e!==null&&typeof e==\"object\"&&typeof r>\"u\"&&(r=e,e=null);var o=IV(t,r);if(typeof e!=\"function\")return o;for(var a=0,n=o.length;a<n;a+=1)e(o[a])}function vV(t,e){var r=IV(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new pV(\"expected a single document in the stream, but found more\")}}function p6e(t,e,r){return typeof e==\"object\"&&e!==null&&typeof r>\"u\"&&(r=e,e=null),BV(t,e,mf.extend({schema:hV},r))}function h6e(t,e){return vV(t,mf.extend({schema:hV},e))}Xw.exports.loadAll=BV;Xw.exports.load=vV;Xw.exports.safeLoadAll=p6e;Xw.exports.safeLoad=h6e});var KV=_((fbt,vR)=>{\"use strict\";var $w=Vg(),eI=uy(),g6e=zw(),d6e=fy(),TV=Object.prototype.toString,RV=Object.prototype.hasOwnProperty,m6e=9,Zw=10,y6e=13,E6e=32,C6e=33,w6e=34,NV=35,I6e=37,B6e=38,v6e=39,D6e=42,LV=44,P6e=45,MV=58,S6e=61,x6e=62,b6e=63,k6e=64,OV=91,UV=93,Q6e=96,_V=123,F6e=124,HV=125,vo={};vo[0]=\"\\\\0\";vo[7]=\"\\\\a\";vo[8]=\"\\\\b\";vo[9]=\"\\\\t\";vo[10]=\"\\\\n\";vo[11]=\"\\\\v\";vo[12]=\"\\\\f\";vo[13]=\"\\\\r\";vo[27]=\"\\\\e\";vo[34]='\\\\\"';vo[92]=\"\\\\\\\\\";vo[133]=\"\\\\N\";vo[160]=\"\\\\_\";vo[8232]=\"\\\\L\";vo[8233]=\"\\\\P\";var T6e=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"];function R6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Object.keys(e),a=0,n=o.length;a<n;a+=1)u=o[a],A=String(e[u]),u.slice(0,2)===\"!!\"&&(u=\"tag:yaml.org,2002:\"+u.slice(2)),p=t.compiledTypeMap.fallback[u],p&&RV.call(p.styleAliases,A)&&(A=p.styleAliases[A]),r[u]=A;return r}function PV(t){var e,r,o;if(e=t.toString(16).toUpperCase(),t<=255)r=\"x\",o=2;else if(t<=65535)r=\"u\",o=4;else if(t<=4294967295)r=\"U\",o=8;else throw new eI(\"code point within a string may not be greater than 0xFFFFFFFF\");return\"\\\\\"+r+$w.repeat(\"0\",o-e.length)+e}function N6e(t){this.schema=t.schema||g6e,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=$w.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=R6e(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=\"\",this.duplicates=[],this.usedDuplicates=null}function SV(t,e){for(var r=$w.repeat(\" \",e),o=0,a=-1,n=\"\",u,A=t.length;o<A;)a=t.indexOf(`\n`,o),a===-1?(u=t.slice(o),o=A):(u=t.slice(o,a+1),o=a+1),u.length&&u!==`\n`&&(n+=r),n+=u;return n}function wR(t,e){return`\n`+$w.repeat(\" \",t.indent*e)}function L6e(t,e){var r,o,a;for(r=0,o=t.implicitTypes.length;r<o;r+=1)if(a=t.implicitTypes[r],a.resolve(e))return!0;return!1}function BR(t){return t===E6e||t===m6e}function dy(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==65279||65536<=t&&t<=1114111}function M6e(t){return dy(t)&&!BR(t)&&t!==65279&&t!==y6e&&t!==Zw}function xV(t,e){return dy(t)&&t!==65279&&t!==LV&&t!==OV&&t!==UV&&t!==_V&&t!==HV&&t!==MV&&(t!==NV||e&&M6e(e))}function O6e(t){return dy(t)&&t!==65279&&!BR(t)&&t!==P6e&&t!==b6e&&t!==MV&&t!==LV&&t!==OV&&t!==UV&&t!==_V&&t!==HV&&t!==NV&&t!==B6e&&t!==D6e&&t!==C6e&&t!==F6e&&t!==S6e&&t!==x6e&&t!==v6e&&t!==w6e&&t!==I6e&&t!==k6e&&t!==Q6e}function jV(t){var e=/^\\n* /;return e.test(t)}var qV=1,GV=2,YV=3,WV=4,KD=5;function U6e(t,e,r,o,a){var n,u,A,p=!1,h=!1,E=o!==-1,I=-1,v=O6e(t.charCodeAt(0))&&!BR(t.charCodeAt(t.length-1));if(e)for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),!dy(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&xV(u,A)}else{for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),u===Zw)p=!0,E&&(h=h||n-I-1>o&&t[I+1]!==\" \",I=n);else if(!dy(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&xV(u,A)}h=h||E&&n-I-1>o&&t[I+1]!==\" \"}return!p&&!h?v&&!a(t)?qV:GV:r>9&&jV(t)?KD:h?WV:YV}function _6e(t,e,r,o){t.dump=function(){if(e.length===0)return\"''\";if(!t.noCompatMode&&T6e.indexOf(e)!==-1)return\"'\"+e+\"'\";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),u=o||t.flowLevel>-1&&r>=t.flowLevel;function A(p){return L6e(t,p)}switch(U6e(e,u,t.indent,n,A)){case qV:return e;case GV:return\"'\"+e.replace(/'/g,\"''\")+\"'\";case YV:return\"|\"+bV(e,t.indent)+kV(SV(e,a));case WV:return\">\"+bV(e,t.indent)+kV(SV(H6e(e,n),a));case KD:return'\"'+j6e(e,n)+'\"';default:throw new eI(\"impossible error: invalid scalar style\")}}()}function bV(t,e){var r=jV(t)?String(e):\"\",o=t[t.length-1]===`\n`,a=o&&(t[t.length-2]===`\n`||t===`\n`),n=a?\"+\":o?\"\":\"-\";return r+n+`\n`}function kV(t){return t[t.length-1]===`\n`?t.slice(0,-1):t}function H6e(t,e){for(var r=/(\\n+)([^\\n]*)/g,o=function(){var h=t.indexOf(`\n`);return h=h!==-1?h:t.length,r.lastIndex=h,QV(t.slice(0,h),e)}(),a=t[0]===`\n`||t[0]===\" \",n,u;u=r.exec(t);){var A=u[1],p=u[2];n=p[0]===\" \",o+=A+(!a&&!n&&p!==\"\"?`\n`:\"\")+QV(p,e),a=n}return o}function QV(t,e){if(t===\"\"||t[0]===\" \")return t;for(var r=/ [^ ]/g,o,a=0,n,u=0,A=0,p=\"\";o=r.exec(t);)A=o.index,A-a>e&&(n=u>a?u:A,p+=`\n`+t.slice(a,n),a=n+1),u=A;return p+=`\n`,t.length-a>e&&u>a?p+=t.slice(a,u)+`\n`+t.slice(u+1):p+=t.slice(a),p.slice(1)}function j6e(t){for(var e=\"\",r,o,a,n=0;n<t.length;n++){if(r=t.charCodeAt(n),r>=55296&&r<=56319&&(o=t.charCodeAt(n+1),o>=56320&&o<=57343)){e+=PV((r-55296)*1024+o-56320+65536),n++;continue}a=vo[r],e+=!a&&dy(r)?t[n]:a||PV(r)}return e}function q6e(t,e,r){var o=\"\",a=t.tag,n,u;for(n=0,u=r.length;n<u;n+=1)Zg(t,e,r[n],!1,!1)&&(n!==0&&(o+=\",\"+(t.condenseFlow?\"\":\" \")),o+=t.dump);t.tag=a,t.dump=\"[\"+o+\"]\"}function G6e(t,e,r,o){var a=\"\",n=t.tag,u,A;for(u=0,A=r.length;u<A;u+=1)Zg(t,e+1,r[u],!0,!0)&&((!o||u!==0)&&(a+=wR(t,e)),t.dump&&Zw===t.dump.charCodeAt(0)?a+=\"-\":a+=\"- \",a+=t.dump);t.tag=n,t.dump=a||\"[]\"}function Y6e(t,e,r){var o=\"\",a=t.tag,n=Object.keys(r),u,A,p,h,E;for(u=0,A=n.length;u<A;u+=1)E=\"\",u!==0&&(E+=\", \"),t.condenseFlow&&(E+='\"'),p=n[u],h=r[p],Zg(t,e,p,!1,!1)&&(t.dump.length>1024&&(E+=\"? \"),E+=t.dump+(t.condenseFlow?'\"':\"\")+\":\"+(t.condenseFlow?\"\":\" \"),Zg(t,e,h,!1,!1)&&(E+=t.dump,o+=E));t.tag=a,t.dump=\"{\"+o+\"}\"}function W6e(t,e,r,o){var a=\"\",n=t.tag,u=Object.keys(r),A,p,h,E,I,v;if(t.sortKeys===!0)u.sort();else if(typeof t.sortKeys==\"function\")u.sort(t.sortKeys);else if(t.sortKeys)throw new eI(\"sortKeys must be a boolean or a function\");for(A=0,p=u.length;A<p;A+=1)v=\"\",(!o||A!==0)&&(v+=wR(t,e)),h=u[A],E=r[h],Zg(t,e+1,h,!0,!0,!0)&&(I=t.tag!==null&&t.tag!==\"?\"||t.dump&&t.dump.length>1024,I&&(t.dump&&Zw===t.dump.charCodeAt(0)?v+=\"?\":v+=\"? \"),v+=t.dump,I&&(v+=wR(t,e)),Zg(t,e+1,E,!0,I)&&(t.dump&&Zw===t.dump.charCodeAt(0)?v+=\":\":v+=\": \",v+=t.dump,a+=v));t.tag=n,t.dump=a||\"{}\"}function FV(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,u=a.length;n<u;n+=1)if(A=a[n],(A.instanceOf||A.predicate)&&(!A.instanceOf||typeof e==\"object\"&&e instanceof A.instanceOf)&&(!A.predicate||A.predicate(e))){if(t.tag=r?A.tag:\"?\",A.represent){if(p=t.styleMap[A.tag]||A.defaultStyle,TV.call(A.represent)===\"[object Function]\")o=A.represent(e,p);else if(RV.call(A.represent,p))o=A.represent[p](e,p);else throw new eI(\"!<\"+A.tag+'> tag resolver accepts not \"'+p+'\" style');t.dump=o}return!0}return!1}function Zg(t,e,r,o,a,n){t.tag=null,t.dump=r,FV(t,r,!1)||FV(t,r,!0);var u=TV.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>e);var A=u===\"[object Object]\"||u===\"[object Array]\",p,h;if(A&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!==\"?\"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump=\"*ref_\"+p;else{if(A&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),u===\"[object Object]\")o&&Object.keys(t.dump).length!==0?(W6e(t,e,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(Y6e(t,e,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump));else if(u===\"[object Array]\"){var E=t.noArrayIndent&&e>0?e-1:e;o&&t.dump.length!==0?(G6e(t,E,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(q6e(t,E,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump))}else if(u===\"[object String]\")t.tag!==\"?\"&&_6e(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new eI(\"unacceptable kind of an object to dump \"+u)}t.tag!==null&&t.tag!==\"?\"&&(t.dump=\"!<\"+t.tag+\"> \"+t.dump)}return!0}function V6e(t,e){var r=[],o=[],a,n;for(IR(t,r,o),a=0,n=o.length;a<n;a+=1)e.duplicates.push(r[o[a]]);e.usedDuplicates=new Array(n)}function IR(t,e,r){var o,a,n;if(t!==null&&typeof t==\"object\")if(a=e.indexOf(t),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(e.push(t),Array.isArray(t))for(a=0,n=t.length;a<n;a+=1)IR(t[a],e,r);else for(o=Object.keys(t),a=0,n=o.length;a<n;a+=1)IR(t[o[a]],e,r)}function VV(t,e){e=e||{};var r=new N6e(e);return r.noRefs||V6e(t,r),Zg(r,0,t,!0,!0)?r.dump+`\n`:\"\"}function K6e(t,e){return VV(t,$w.extend({schema:d6e},e))}vR.exports.dump=VV;vR.exports.safeDump=K6e});var zV=_((pbt,ki)=>{\"use strict\";var JD=DV(),JV=KV();function zD(t){return function(){throw new Error(\"Function \"+t+\" is deprecated and cannot be used.\")}}ki.exports.Type=os();ki.exports.Schema=Kg();ki.exports.FAILSAFE_SCHEMA=jD();ki.exports.JSON_SCHEMA=gR();ki.exports.CORE_SCHEMA=dR();ki.exports.DEFAULT_SAFE_SCHEMA=fy();ki.exports.DEFAULT_FULL_SCHEMA=zw();ki.exports.load=JD.load;ki.exports.loadAll=JD.loadAll;ki.exports.safeLoad=JD.safeLoad;ki.exports.safeLoadAll=JD.safeLoadAll;ki.exports.dump=JV.dump;ki.exports.safeDump=JV.safeDump;ki.exports.YAMLException=uy();ki.exports.MINIMAL_SCHEMA=jD();ki.exports.SAFE_SCHEMA=fy();ki.exports.DEFAULT_SCHEMA=zw();ki.exports.scan=zD(\"scan\");ki.exports.parse=zD(\"parse\");ki.exports.compose=zD(\"compose\");ki.exports.addConstructor=zD(\"addConstructor\")});var ZV=_((hbt,XV)=>{\"use strict\";var J6e=zV();XV.exports=J6e});var eK=_((gbt,$V)=>{\"use strict\";function z6e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function $g(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,$g)}z6e($g,Error);$g.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function X6e(t,e){e=e!==void 0?e:{};var r={},o={Start:pu},a=pu,n=function($){return[].concat(...$)},u=\"-\",A=Qn(\"-\",!1),p=function($){return $},h=function($){return Object.assign({},...$)},E=\"#\",I=Qn(\"#\",!1),v=hc(),b=function(){return{}},C=\":\",T=Qn(\":\",!1),L=function($,me){return{[$]:me}},U=\",\",J=Qn(\",\",!1),te=function($,me){return me},le=function($,me,Le){return Object.assign({},...[$].concat(me).map(ft=>({[ft]:Le})))},pe=function($){return $},Ae=function($){return $},ye=sa(\"correct indentation\"),ae=\" \",we=Qn(\" \",!1),Pe=function($){return $.length===nr*It},g=function($){return $.length===(nr+1)*It},Ee=function(){return nr++,!0},De=function(){return nr--,!0},ce=function(){return DA()},ne=sa(\"pseudostring\"),ee=/^[^\\r\\n\\t ?:,\\][{}#&*!|>'\"%@`\\-]/,Ie=hi([\"\\r\",`\n`,\"\t\",\" \",\"?\",\":\",\",\",\"]\",\"[\",\"{\",\"}\",\"#\",\"&\",\"*\",\"!\",\"|\",\">\",\"'\",'\"',\"%\",\"@\",\"`\",\"-\"],!0,!1),ke=/^[^\\r\\n\\t ,\\][{}:#\"']/,ht=hi([\"\\r\",`\n`,\"\t\",\" \",\",\",\"]\",\"[\",\"{\",\"}\",\":\",\"#\",'\"',\"'\"],!0,!1),H=function(){return DA().replace(/^ *| *$/g,\"\")},lt=\"--\",Re=Qn(\"--\",!1),Qe=/^[a-zA-Z\\/0-9]/,be=hi([[\"a\",\"z\"],[\"A\",\"Z\"],\"/\",[\"0\",\"9\"]],!1,!1),_e=/^[^\\r\\n\\t :,]/,Te=hi([\"\\r\",`\n`,\"\t\",\" \",\":\",\",\"],!0,!1),Je=\"null\",He=Qn(\"null\",!1),x=function(){return null},w=\"true\",S=Qn(\"true\",!1),y=function(){return!0},F=\"false\",z=Qn(\"false\",!1),X=function(){return!1},Z=sa(\"string\"),ie='\"',Se=Qn('\"',!1),Ne=function(){return\"\"},ot=function($){return $},dt=function($){return $.join(\"\")},jt=/^[^\"\\\\\\0-\\x1F\\x7F]/,$t=hi(['\"',\"\\\\\",[\"\\0\",\"\u001f\"],\"\\x7F\"],!0,!1),xt='\\\\\"',an=Qn('\\\\\"',!1),Qr=function(){return'\"'},mr=\"\\\\\\\\\",xr=Qn(\"\\\\\\\\\",!1),Wr=function(){return\"\\\\\"},Vn=\"\\\\/\",Ns=Qn(\"\\\\/\",!1),Ri=function(){return\"/\"},ps=\"\\\\b\",io=Qn(\"\\\\b\",!1),Si=function(){return\"\\b\"},Ls=\"\\\\f\",so=Qn(\"\\\\f\",!1),cc=function(){return\"\\f\"},cu=\"\\\\n\",ap=Qn(\"\\\\n\",!1),lp=function(){return`\n`},Ms=\"\\\\r\",Dn=Qn(\"\\\\r\",!1),oo=function(){return\"\\r\"},Os=\"\\\\t\",ml=Qn(\"\\\\t\",!1),yl=function(){return\"\t\"},ao=\"\\\\u\",Kn=Qn(\"\\\\u\",!1),Mn=function($,me,Le,ft){return String.fromCharCode(parseInt(`0x${$}${me}${Le}${ft}`))},Ni=/^[0-9a-fA-F]/,On=hi([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"F\"]],!1,!1),_i=sa(\"blank space\"),tr=/^[ \\t]/,Me=hi([\" \",\"\t\"],!1,!1),ii=sa(\"white space\"),Oa=/^[ \\t\\n\\r]/,hr=hi([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),uc=`\\r\n`,uu=Qn(`\\r\n`,!1),Ac=`\n`,El=Qn(`\n`,!1),vA=\"\\r\",Au=Qn(\"\\r\",!1),Ce=0,Tt=0,fc=[{line:1,column:1}],Hi=0,fu=[],Yt=0,Cl;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function DA(){return t.substring(Tt,Ce)}function cp(){return _o(Tt,Ce)}function pc($,me){throw me=me!==void 0?me:_o(Tt,Ce),gc([sa($)],t.substring(Tt,Ce),me)}function PA($,me){throw me=me!==void 0?me:_o(Tt,Ce),lo($,me)}function Qn($,me){return{type:\"literal\",text:$,ignoreCase:me}}function hi($,me,Le){return{type:\"class\",parts:$,inverted:me,ignoreCase:Le}}function hc(){return{type:\"any\"}}function SA(){return{type:\"end\"}}function sa($){return{type:\"other\",description:$}}function Li($){var me=fc[$],Le;if(me)return me;for(Le=$-1;!fc[Le];)Le--;for(me=fc[Le],me={line:me.line,column:me.column};Le<$;)t.charCodeAt(Le)===10?(me.line++,me.column=1):me.column++,Le++;return fc[$]=me,me}function _o($,me){var Le=Li($),ft=Li(me);return{start:{offset:$,line:Le.line,column:Le.column},end:{offset:me,line:ft.line,column:ft.column}}}function Ze($){Ce<Hi||(Ce>Hi&&(Hi=Ce,fu=[]),fu.push($))}function lo($,me){return new $g($,null,null,me)}function gc($,me,Le){return new $g($g.buildMessage($,me),$,me,Le)}function pu(){var $;return $=xA(),$}function ji(){var $,me,Le;for($=Ce,me=[],Le=hu();Le!==r;)me.push(Le),Le=hu();return me!==r&&(Tt=$,me=n(me)),$=me,$}function hu(){var $,me,Le,ft,pt;return $=Ce,me=hs(),me!==r?(t.charCodeAt(Ce)===45?(Le=u,Ce++):(Le=r,Yt===0&&Ze(A)),Le!==r?(ft=Pn(),ft!==r?(pt=dc(),pt!==r?(Tt=$,me=p(pt),$=me):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$}function xA(){var $,me,Le;for($=Ce,me=[],Le=Ua();Le!==r;)me.push(Le),Le=Ua();return me!==r&&(Tt=$,me=h(me)),$=me,$}function Ua(){var $,me,Le,ft,pt,Rt,er,Zr,qi;if($=Ce,me=Pn(),me===r&&(me=null),me!==r){if(Le=Ce,t.charCodeAt(Ce)===35?(ft=E,Ce++):(ft=r,Yt===0&&Ze(I)),ft!==r){if(pt=[],Rt=Ce,er=Ce,Yt++,Zr=tt(),Yt--,Zr===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?(Zr=t.charAt(Ce),Ce++):(Zr=r,Yt===0&&Ze(v)),Zr!==r?(er=[er,Zr],Rt=er):(Ce=Rt,Rt=r)):(Ce=Rt,Rt=r),Rt!==r)for(;Rt!==r;)pt.push(Rt),Rt=Ce,er=Ce,Yt++,Zr=tt(),Yt--,Zr===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?(Zr=t.charAt(Ce),Ce++):(Zr=r,Yt===0&&Ze(v)),Zr!==r?(er=[er,Zr],Rt=er):(Ce=Rt,Rt=r)):(Ce=Rt,Rt=r);else pt=r;pt!==r?(ft=[ft,pt],Le=ft):(Ce=Le,Le=r)}else Ce=Le,Le=r;if(Le===r&&(Le=null),Le!==r){if(ft=[],pt=We(),pt!==r)for(;pt!==r;)ft.push(pt),pt=We();else ft=r;ft!==r?(Tt=$,me=b(),$=me):(Ce=$,$=r)}else Ce=$,$=r}else Ce=$,$=r;if($===r&&($=Ce,me=hs(),me!==r?(Le=oa(),Le!==r?(ft=Pn(),ft===r&&(ft=null),ft!==r?(t.charCodeAt(Ce)===58?(pt=C,Ce++):(pt=r,Yt===0&&Ze(T)),pt!==r?(Rt=Pn(),Rt===r&&(Rt=null),Rt!==r?(er=dc(),er!==r?(Tt=$,me=L(Le,er),$=me):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,me=hs(),me!==r?(Le=co(),Le!==r?(ft=Pn(),ft===r&&(ft=null),ft!==r?(t.charCodeAt(Ce)===58?(pt=C,Ce++):(pt=r,Yt===0&&Ze(T)),pt!==r?(Rt=Pn(),Rt===r&&(Rt=null),Rt!==r?(er=dc(),er!==r?(Tt=$,me=L(Le,er),$=me):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))){if($=Ce,me=hs(),me!==r)if(Le=co(),Le!==r)if(ft=Pn(),ft!==r)if(pt=aa(),pt!==r){if(Rt=[],er=We(),er!==r)for(;er!==r;)Rt.push(er),er=We();else Rt=r;Rt!==r?(Tt=$,me=L(Le,pt),$=me):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;if($===r)if($=Ce,me=hs(),me!==r)if(Le=co(),Le!==r){if(ft=[],pt=Ce,Rt=Pn(),Rt===r&&(Rt=null),Rt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?(Zr=Pn(),Zr===r&&(Zr=null),Zr!==r?(qi=co(),qi!==r?(Tt=pt,Rt=te(Le,qi),pt=Rt):(Ce=pt,pt=r)):(Ce=pt,pt=r)):(Ce=pt,pt=r)):(Ce=pt,pt=r),pt!==r)for(;pt!==r;)ft.push(pt),pt=Ce,Rt=Pn(),Rt===r&&(Rt=null),Rt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?(Zr=Pn(),Zr===r&&(Zr=null),Zr!==r?(qi=co(),qi!==r?(Tt=pt,Rt=te(Le,qi),pt=Rt):(Ce=pt,pt=r)):(Ce=pt,pt=r)):(Ce=pt,pt=r)):(Ce=pt,pt=r);else ft=r;ft!==r?(pt=Pn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(Rt=C,Ce++):(Rt=r,Yt===0&&Ze(T)),Rt!==r?(er=Pn(),er===r&&(er=null),er!==r?(Zr=dc(),Zr!==r?(Tt=$,me=le(Le,ft,Zr),$=me):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r}return $}function dc(){var $,me,Le,ft,pt,Rt,er;if($=Ce,me=Ce,Yt++,Le=Ce,ft=tt(),ft!==r?(pt=_t(),pt!==r?(t.charCodeAt(Ce)===45?(Rt=u,Ce++):(Rt=r,Yt===0&&Ze(A)),Rt!==r?(er=Pn(),er!==r?(ft=[ft,pt,Rt,er],Le=ft):(Ce=Le,Le=r)):(Ce=Le,Le=r)):(Ce=Le,Le=r)):(Ce=Le,Le=r),Yt--,Le!==r?(Ce=me,me=void 0):me=r,me!==r?(Le=We(),Le!==r?(ft=Fn(),ft!==r?(pt=ji(),pt!==r?(Rt=Ci(),Rt!==r?(Tt=$,me=pe(pt),$=me):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,me=tt(),me!==r?(Le=Fn(),Le!==r?(ft=xA(),ft!==r?(pt=Ci(),pt!==r?(Tt=$,me=pe(ft),$=me):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))if($=Ce,me=Us(),me!==r){if(Le=[],ft=We(),ft!==r)for(;ft!==r;)Le.push(ft),ft=We();else Le=r;Le!==r?(Tt=$,me=Ae(me),$=me):(Ce=$,$=r)}else Ce=$,$=r;return $}function hs(){var $,me,Le;for(Yt++,$=Ce,me=[],t.charCodeAt(Ce)===32?(Le=ae,Ce++):(Le=r,Yt===0&&Ze(we));Le!==r;)me.push(Le),t.charCodeAt(Ce)===32?(Le=ae,Ce++):(Le=r,Yt===0&&Ze(we));return me!==r?(Tt=Ce,Le=Pe(me),Le?Le=void 0:Le=r,Le!==r?(me=[me,Le],$=me):(Ce=$,$=r)):(Ce=$,$=r),Yt--,$===r&&(me=r,Yt===0&&Ze(ye)),$}function _t(){var $,me,Le;for($=Ce,me=[],t.charCodeAt(Ce)===32?(Le=ae,Ce++):(Le=r,Yt===0&&Ze(we));Le!==r;)me.push(Le),t.charCodeAt(Ce)===32?(Le=ae,Ce++):(Le=r,Yt===0&&Ze(we));return me!==r?(Tt=Ce,Le=g(me),Le?Le=void 0:Le=r,Le!==r?(me=[me,Le],$=me):(Ce=$,$=r)):(Ce=$,$=r),$}function Fn(){var $;return Tt=Ce,$=Ee(),$?$=void 0:$=r,$}function Ci(){var $;return Tt=Ce,$=De(),$?$=void 0:$=r,$}function oa(){var $;return $=ds(),$===r&&($=la()),$}function co(){var $,me,Le;if($=ds(),$===r){if($=Ce,me=[],Le=Ho(),Le!==r)for(;Le!==r;)me.push(Le),Le=Ho();else me=r;me!==r&&(Tt=$,me=ce()),$=me}return $}function Us(){var $;return $=wi(),$===r&&($=gs(),$===r&&($=ds(),$===r&&($=la()))),$}function aa(){var $;return $=wi(),$===r&&($=ds(),$===r&&($=Ho())),$}function la(){var $,me,Le,ft,pt,Rt;if(Yt++,$=Ce,ee.test(t.charAt(Ce))?(me=t.charAt(Ce),Ce++):(me=r,Yt===0&&Ze(Ie)),me!==r){for(Le=[],ft=Ce,pt=Pn(),pt===r&&(pt=null),pt!==r?(ke.test(t.charAt(Ce))?(Rt=t.charAt(Ce),Ce++):(Rt=r,Yt===0&&Ze(ht)),Rt!==r?(pt=[pt,Rt],ft=pt):(Ce=ft,ft=r)):(Ce=ft,ft=r);ft!==r;)Le.push(ft),ft=Ce,pt=Pn(),pt===r&&(pt=null),pt!==r?(ke.test(t.charAt(Ce))?(Rt=t.charAt(Ce),Ce++):(Rt=r,Yt===0&&Ze(ht)),Rt!==r?(pt=[pt,Rt],ft=pt):(Ce=ft,ft=r)):(Ce=ft,ft=r);Le!==r?(Tt=$,me=H(),$=me):(Ce=$,$=r)}else Ce=$,$=r;return Yt--,$===r&&(me=r,Yt===0&&Ze(ne)),$}function Ho(){var $,me,Le,ft,pt;if($=Ce,t.substr(Ce,2)===lt?(me=lt,Ce+=2):(me=r,Yt===0&&Ze(Re)),me===r&&(me=null),me!==r)if(Qe.test(t.charAt(Ce))?(Le=t.charAt(Ce),Ce++):(Le=r,Yt===0&&Ze(be)),Le!==r){for(ft=[],_e.test(t.charAt(Ce))?(pt=t.charAt(Ce),Ce++):(pt=r,Yt===0&&Ze(Te));pt!==r;)ft.push(pt),_e.test(t.charAt(Ce))?(pt=t.charAt(Ce),Ce++):(pt=r,Yt===0&&Ze(Te));ft!==r?(Tt=$,me=H(),$=me):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;return $}function wi(){var $,me;return $=Ce,t.substr(Ce,4)===Je?(me=Je,Ce+=4):(me=r,Yt===0&&Ze(He)),me!==r&&(Tt=$,me=x()),$=me,$}function gs(){var $,me;return $=Ce,t.substr(Ce,4)===w?(me=w,Ce+=4):(me=r,Yt===0&&Ze(S)),me!==r&&(Tt=$,me=y()),$=me,$===r&&($=Ce,t.substr(Ce,5)===F?(me=F,Ce+=5):(me=r,Yt===0&&Ze(z)),me!==r&&(Tt=$,me=X()),$=me),$}function ds(){var $,me,Le,ft;return Yt++,$=Ce,t.charCodeAt(Ce)===34?(me=ie,Ce++):(me=r,Yt===0&&Ze(Se)),me!==r?(t.charCodeAt(Ce)===34?(Le=ie,Ce++):(Le=r,Yt===0&&Ze(Se)),Le!==r?(Tt=$,me=Ne(),$=me):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,t.charCodeAt(Ce)===34?(me=ie,Ce++):(me=r,Yt===0&&Ze(Se)),me!==r?(Le=ms(),Le!==r?(t.charCodeAt(Ce)===34?(ft=ie,Ce++):(ft=r,Yt===0&&Ze(Se)),ft!==r?(Tt=$,me=ot(Le),$=me):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)),Yt--,$===r&&(me=r,Yt===0&&Ze(Z)),$}function ms(){var $,me,Le;if($=Ce,me=[],Le=_s(),Le!==r)for(;Le!==r;)me.push(Le),Le=_s();else me=r;return me!==r&&(Tt=$,me=dt(me)),$=me,$}function _s(){var $,me,Le,ft,pt,Rt;return jt.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze($t)),$===r&&($=Ce,t.substr(Ce,2)===xt?(me=xt,Ce+=2):(me=r,Yt===0&&Ze(an)),me!==r&&(Tt=$,me=Qr()),$=me,$===r&&($=Ce,t.substr(Ce,2)===mr?(me=mr,Ce+=2):(me=r,Yt===0&&Ze(xr)),me!==r&&(Tt=$,me=Wr()),$=me,$===r&&($=Ce,t.substr(Ce,2)===Vn?(me=Vn,Ce+=2):(me=r,Yt===0&&Ze(Ns)),me!==r&&(Tt=$,me=Ri()),$=me,$===r&&($=Ce,t.substr(Ce,2)===ps?(me=ps,Ce+=2):(me=r,Yt===0&&Ze(io)),me!==r&&(Tt=$,me=Si()),$=me,$===r&&($=Ce,t.substr(Ce,2)===Ls?(me=Ls,Ce+=2):(me=r,Yt===0&&Ze(so)),me!==r&&(Tt=$,me=cc()),$=me,$===r&&($=Ce,t.substr(Ce,2)===cu?(me=cu,Ce+=2):(me=r,Yt===0&&Ze(ap)),me!==r&&(Tt=$,me=lp()),$=me,$===r&&($=Ce,t.substr(Ce,2)===Ms?(me=Ms,Ce+=2):(me=r,Yt===0&&Ze(Dn)),me!==r&&(Tt=$,me=oo()),$=me,$===r&&($=Ce,t.substr(Ce,2)===Os?(me=Os,Ce+=2):(me=r,Yt===0&&Ze(ml)),me!==r&&(Tt=$,me=yl()),$=me,$===r&&($=Ce,t.substr(Ce,2)===ao?(me=ao,Ce+=2):(me=r,Yt===0&&Ze(Kn)),me!==r?(Le=Un(),Le!==r?(ft=Un(),ft!==r?(pt=Un(),pt!==r?(Rt=Un(),Rt!==r?(Tt=$,me=Mn(Le,ft,pt,Rt),$=me):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)))))))))),$}function Un(){var $;return Ni.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze(On)),$}function Pn(){var $,me;if(Yt++,$=[],tr.test(t.charAt(Ce))?(me=t.charAt(Ce),Ce++):(me=r,Yt===0&&Ze(Me)),me!==r)for(;me!==r;)$.push(me),tr.test(t.charAt(Ce))?(me=t.charAt(Ce),Ce++):(me=r,Yt===0&&Ze(Me));else $=r;return Yt--,$===r&&(me=r,Yt===0&&Ze(_i)),$}function ys(){var $,me;if(Yt++,$=[],Oa.test(t.charAt(Ce))?(me=t.charAt(Ce),Ce++):(me=r,Yt===0&&Ze(hr)),me!==r)for(;me!==r;)$.push(me),Oa.test(t.charAt(Ce))?(me=t.charAt(Ce),Ce++):(me=r,Yt===0&&Ze(hr));else $=r;return Yt--,$===r&&(me=r,Yt===0&&Ze(ii)),$}function We(){var $,me,Le,ft,pt,Rt;if($=Ce,me=tt(),me!==r){for(Le=[],ft=Ce,pt=Pn(),pt===r&&(pt=null),pt!==r?(Rt=tt(),Rt!==r?(pt=[pt,Rt],ft=pt):(Ce=ft,ft=r)):(Ce=ft,ft=r);ft!==r;)Le.push(ft),ft=Ce,pt=Pn(),pt===r&&(pt=null),pt!==r?(Rt=tt(),Rt!==r?(pt=[pt,Rt],ft=pt):(Ce=ft,ft=r)):(Ce=ft,ft=r);Le!==r?(me=[me,Le],$=me):(Ce=$,$=r)}else Ce=$,$=r;return $}function tt(){var $;return t.substr(Ce,2)===uc?($=uc,Ce+=2):($=r,Yt===0&&Ze(uu)),$===r&&(t.charCodeAt(Ce)===10?($=Ac,Ce++):($=r,Yt===0&&Ze(El)),$===r&&(t.charCodeAt(Ce)===13?($=vA,Ce++):($=r,Yt===0&&Ze(Au)))),$}let It=2,nr=0;if(Cl=a(),Cl!==r&&Ce===t.length)return Cl;throw Cl!==r&&Ce<t.length&&Ze(SA()),gc(fu,Hi<t.length?t.charAt(Hi):null,Hi<t.length?_o(Hi,Hi+1):_o(Hi,Hi))}$V.exports={SyntaxError:$g,parse:X6e}});function rK(t){return t.match(Z6e)?t:JSON.stringify(t)}function iK(t){return typeof t>\"u\"?!0:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>iK(t[e])):!1}function DR(t,e,r){if(t===null)return`null\n`;if(typeof t==\"number\"||typeof t==\"boolean\")return`${t.toString()}\n`;if(typeof t==\"string\")return`${rK(t)}\n`;if(Array.isArray(t)){if(t.length===0)return`[]\n`;let o=\"  \".repeat(e);return`\n${t.map(n=>`${o}- ${DR(n,e+1,!1)}`).join(\"\")}`}if(typeof t==\"object\"&&t){let[o,a]=t instanceof XD?[t.data,!1]:[t,!0],n=\"  \".repeat(e),u=Object.keys(o);a&&u.sort((p,h)=>{let E=tK.indexOf(p),I=tK.indexOf(h);return E===-1&&I===-1?p<h?-1:p>h?1:0:E!==-1&&I===-1?-1:E===-1&&I!==-1?1:E-I});let A=u.filter(p=>!iK(o[p])).map((p,h)=>{let E=o[p],I=rK(p),v=DR(E,e+1,!0),b=h>0||r?n:\"\",C=I.length>1024?`? ${I}\n${b}:`:`${I}:`,T=v.startsWith(`\n`)?v:` ${v}`;return`${b}${C}${T}`}).join(e===0?`\n`:\"\")||`\n`;return r?`\n${A}`:`${A}`}throw new Error(`Unsupported value type (${t})`)}function Ba(t){try{let e=DR(t,0,!1);return e!==`\n`?e:\"\"}catch(e){throw e.location&&(e.message=e.message.replace(/(\\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function $6e(t){return t.endsWith(`\n`)||(t+=`\n`),(0,nK.parse)(t)}function tje(t){if(eje.test(t))return $6e(t);let e=(0,ZD.safeLoad)(t,{schema:ZD.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!=\"object\")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error(\"Expected an indexed object, got an array instead. Does your file follow Yaml's rules?\");return e}function Vi(t){return tje(t)}var ZD,nK,Z6e,tK,XD,eje,sK=Et(()=>{ZD=$e(ZV()),nK=$e(eK()),Z6e=/^(?![-?:,\\][{}#&*!|>'\"%@` \\t\\r\\n]).([ \\t]*(?![,\\][{}:# \\t\\r\\n]).)*$/,tK=[\"__metadata\",\"version\",\"resolution\",\"dependencies\",\"peerDependencies\",\"dependenciesMeta\",\"peerDependenciesMeta\",\"binaries\"],XD=class{constructor(e){this.data=e}};Ba.PreserveOrdering=XD;eje=/^(#.*(\\r?\\n))*?#\\s+yarn\\s+lockfile\\s+v1\\r?\\n/i});var tI={};Kt(tI,{parseResolution:()=>UD,parseShell:()=>LD,parseSyml:()=>Vi,stringifyArgument:()=>AR,stringifyArgumentSegment:()=>fR,stringifyArithmeticExpression:()=>OD,stringifyCommand:()=>uR,stringifyCommandChain:()=>cy,stringifyCommandChainThen:()=>cR,stringifyCommandLine:()=>MD,stringifyCommandLineThen:()=>lR,stringifyEnvSegment:()=>ND,stringifyRedirectArgument:()=>Kw,stringifyResolution:()=>_D,stringifyShell:()=>ly,stringifyShellLine:()=>ly,stringifySyml:()=>Ba,stringifyValueArgument:()=>Gg});var Nl=Et(()=>{iW();lW();sK()});var aK=_((Cbt,PR)=>{\"use strict\";var rje=t=>{let e=!1,r=!1,o=!1;for(let a=0;a<t.length;a++){let n=t[a];e&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(t=t.slice(0,a)+\"-\"+t.slice(a),e=!1,o=r,r=!0,a++):r&&o&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+\"-\"+t.slice(a-1),o=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,o=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},oK=(t,e)=>{if(!(typeof t==\"string\"||Array.isArray(t)))throw new TypeError(\"Expected the input to be `string | string[]`\");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join(\"-\"):t=t.trim(),t.length===0?\"\":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=rje(t)),t=t.replace(/^[_.\\- ]+/,\"\").toLowerCase().replace(/[_.\\- ]+(\\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\\d+(\\w|$)/g,a=>a.toUpperCase()),r(t))};PR.exports=oK;PR.exports.default=oK});var lK=_((wbt,nje)=>{nje.exports=[{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\",pr:\"SYSTEM_PULLREQUEST_PULLREQUESTID\"},{name:\"Appcircle\",constant:\"APPCIRCLE\",env:\"AC_APPCIRCLE\"},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Codefresh\",constant:\"CODEFRESH\",env:\"CF_BUILD_ID\",pr:{any:[\"CF_PULL_REQUEST_NUMBER\",\"CF_PULL_REQUEST_ID\"]}},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"GitHub Actions\",constant:\"GITHUB_ACTIONS\",env:\"GITHUB_ACTIONS\",pr:{GITHUB_EVENT_NAME:\"pull_request\"}},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\",pr:\"CI_MERGE_REQUEST_ID\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"LayerCI\",constant:\"LAYERCI\",env:\"LAYERCI\",pr:\"LAYERCI_PULL_REQUEST\"},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Nevercode\",constant:\"NEVERCODE\",env:\"NEVERCODE\",pr:{env:\"NEVERCODE_PULL_REQUEST\",ne:\"false\"}},{name:\"Render\",constant:\"RENDER\",env:\"RENDER\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Screwdriver\",constant:\"SCREWDRIVER\",env:\"SCREWDRIVER\",pr:{env:\"SD_PULL_REQUEST\",ne:\"false\"}},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}},{name:\"Vercel\",constant:\"VERCEL\",env:\"NOW_BUILDER\"},{name:\"Visual Studio App Center\",constant:\"APPCENTER\",env:\"APPCENTER_BUILD_ID\"}]});var ed=_(Xa=>{\"use strict\";var uK=lK(),ju=process.env;Object.defineProperty(Xa,\"_vendors\",{value:uK.map(function(t){return t.constant})});Xa.name=null;Xa.isPR=null;uK.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(o){return cK(o)});if(Xa[t.constant]=r,r)switch(Xa.name=t.name,typeof t.pr){case\"string\":Xa.isPR=!!ju[t.pr];break;case\"object\":\"env\"in t.pr?Xa.isPR=t.pr.env in ju&&ju[t.pr.env]!==t.pr.ne:\"any\"in t.pr?Xa.isPR=t.pr.any.some(function(o){return!!ju[o]}):Xa.isPR=cK(t.pr);break;default:Xa.isPR=null}});Xa.isCI=!!(ju.CI||ju.CONTINUOUS_INTEGRATION||ju.BUILD_NUMBER||ju.RUN_ID||Xa.name);function cK(t){return typeof t==\"string\"?!!ju[t]:Object.keys(t).every(function(e){return ju[e]===t[e]})}});var Hn,cn,td,SR,$D,AK,xR,bR,eP=Et(()=>{(function(t){t.StartOfInput=\"\\0\",t.EndOfInput=\"\u0001\",t.EndOfPartialInput=\"\u0002\"})(Hn||(Hn={}));(function(t){t[t.InitialNode=0]=\"InitialNode\",t[t.SuccessNode=1]=\"SuccessNode\",t[t.ErrorNode=2]=\"ErrorNode\",t[t.CustomNode=3]=\"CustomNode\"})(cn||(cn={}));td=-1,SR=/^(-h|--help)(?:=([0-9]+))?$/,$D=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,AK=/^-[a-zA-Z]{2,}$/,xR=/^([^=]+)=([\\s\\S]*)$/,bR=process.env.DEBUG_CLI===\"1\"});var it,my,tP,kR,rP=Et(()=>{eP();it=class extends Error{constructor(e){super(e),this.clipanion={type:\"usage\"},this.name=\"UsageError\"}},my=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:\"none\"},this.name=\"UnknownSyntaxError\",this.candidates.length===0)this.message=\"Command not found, but we're not sure what's the alternative.\";else if(this.candidates.every(o=>o.reason!==null&&o.reason===r[0].reason)){let[{reason:o}]=this.candidates;this.message=`${o}\n\n${this.candidates.map(({usage:a})=>`$ ${a}`).join(`\n`)}`}else if(this.candidates.length===1){let[{usage:o}]=this.candidates;this.message=`Command not found; did you mean:\n\n$ ${o}\n${kR(e)}`}else this.message=`Command not found; did you mean one of:\n\n${this.candidates.map(({usage:o},a)=>`${`${a}.`.padStart(4)} ${o}`).join(`\n`)}\n\n${kR(e)}`}},tP=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:\"none\"},this.name=\"AmbiguousSyntaxError\",this.message=`Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((o,a)=>`${`${a}.`.padStart(4)} ${o}`).join(`\n`)}\n\n${kR(e)}`}},kR=t=>`While running ${t.filter(e=>e!==Hn.EndOfInput&&e!==Hn.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\\s/)||e.length===0||r!==`\"${e}\"`?r:e}).join(\" \")}`});function ije(t){let e=t.split(`\n`),r=e.filter(a=>a.match(/\\S/)),o=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(o).trimRight()).join(`\n`)}function Do(t,{format:e,paragraphs:r}){return t=t.replace(/\\r\\n?/g,`\n`),t=ije(t),t=t.replace(/^\\n+|\\n+$/g,\"\"),t=t.replace(/^(\\s*)-([^\\n]*?)\\n+/gm,`$1-$2\n\n`),t=t.replace(/\\n(\\n)?\\n*/g,(o,a)=>a||\" \"),r&&(t=t.split(/\\n/).map(o=>{let a=o.match(/^\\s*[*-][\\t ]+(.*)/);if(!a)return o.match(/(.{1,80})(?: |$)/g).join(`\n`);let n=o.length-o.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,\"g\")).map((u,A)=>\" \".repeat(n)+(A===0?\"- \":\"  \")+u).join(`\n`)}).join(`\n\n`)),t=t.replace(/(`+)((?:.|[\\n])*?)\\1/g,(o,a,n)=>e.code(a+n+a)),t=t.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(o,a,n)=>e.bold(a+n+a)),t?`${t}\n`:\"\"}var QR,fK,pK,FR=Et(()=>{QR=Array(80).fill(\"\\u2501\");for(let t=0;t<=24;++t)QR[QR.length-t]=`\\x1B[38;5;${232+t}m\\u2501`;fK={header:t=>`\\x1B[1m\\u2501\\u2501\\u2501 ${t}${t.length<80-5?` ${QR.slice(t.length+5).join(\"\")}`:\":\"}\\x1B[0m`,bold:t=>`\\x1B[1m${t}\\x1B[22m`,error:t=>`\\x1B[31m\\x1B[1m${t}\\x1B[22m\\x1B[39m`,code:t=>`\\x1B[36m${t}\\x1B[39m`},pK={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Vo(t){return{...t,[rI]:!0}}function qu(t,e){return typeof t>\"u\"?[t,e]:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function nP(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return\"validation failed\";let[,o,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=o!==\".\"||!e?`${o.replace(/^\\.(\\[|$)/,\"$1\")}: ${a}`:`: ${a}`,a}function nI(t,e){return e.length===1?new it(`${t}${nP(e[0],{mergeName:!0})}`):new it(`${t}:\n${e.map(r=>`\n- ${nP(r)}`).join(\"\")}`)}function rd(t,e,r){if(typeof r>\"u\")return e;let o=[],a=[],n=A=>{let p=e;return e=A,n.bind(null,p)};if(!r(e,{errors:o,coercions:a,coercion:n}))throw nI(`Invalid value for ${t}`,o);for(let[,A]of a)A();return e}var rI,yf=Et(()=>{rP();rI=Symbol(\"clipanion/isOption\")});var Ko={};Kt(Ko,{KeyRelationship:()=>Gu,TypeAssertionError:()=>Wp,applyCascade:()=>oI,as:()=>Bje,assert:()=>Cje,assertWithErrors:()=>wje,cascade:()=>aP,fn:()=>vje,hasAtLeastOneKey:()=>UR,hasExactLength:()=>yK,hasForbiddenKeys:()=>qje,hasKeyRelationship:()=>lI,hasMaxLength:()=>Pje,hasMinLength:()=>Dje,hasMutuallyExclusiveKeys:()=>Gje,hasRequiredKeys:()=>jje,hasUniqueItems:()=>Sje,isArray:()=>iP,isAtLeast:()=>MR,isAtMost:()=>kje,isBase64:()=>Oje,isBoolean:()=>fje,isDate:()=>hje,isDict:()=>mje,isEnum:()=>Vs,isHexColor:()=>Mje,isISO8601:()=>Lje,isInExclusiveRange:()=>Fje,isInInclusiveRange:()=>Qje,isInstanceOf:()=>Eje,isInteger:()=>OR,isJSON:()=>Uje,isLiteral:()=>gK,isLowerCase:()=>Tje,isMap:()=>dje,isNegative:()=>xje,isNullable:()=>Hje,isNumber:()=>NR,isObject:()=>dK,isOneOf:()=>LR,isOptional:()=>_je,isPartial:()=>yje,isPayload:()=>pje,isPositive:()=>bje,isRecord:()=>oP,isSet:()=>gje,isString:()=>Ey,isTuple:()=>sP,isUUID4:()=>Nje,isUnknown:()=>RR,isUpperCase:()=>Rje,makeTrait:()=>mK,makeValidator:()=>Hr,matchesRegExp:()=>sI,softAssert:()=>Ije});function jn(t){return t===null?\"null\":t===void 0?\"undefined\":t===\"\"?\"an empty string\":typeof t==\"symbol\"?`<${t.toString()}>`:Array.isArray(t)?\"an array\":JSON.stringify(t)}function yy(t,e){if(t.length===0)return\"nothing\";if(t.length===1)return jn(t[0]);let r=t.slice(0,-1),o=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>jn(n)).join(\", \")}${a}${jn(o)}`}function Yp(t,e){var r,o,a;return typeof e==\"number\"?`${(r=t?.p)!==null&&r!==void 0?r:\".\"}[${e}]`:sje.test(e)?`${(o=t?.p)!==null&&o!==void 0?o:\"\"}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:\".\"}[${JSON.stringify(e)}]`}function TR(t,e,r){return t===1?e:r}function pr({errors:t,p:e}={},r){return t?.push(`${e??\".\"}: ${r}`),!1}function uje(t,e){return r=>{t[e]=r}}function Yu(t,e){return r=>{let o=t[e];return t[e]=r,Yu(t,e).bind(null,o)}}function iI(t,e,r){let o=()=>(t(r()),a),a=()=>(t(e),o);return o}function RR(){return Hr({test:(t,e)=>!0})}function gK(t){return Hr({test:(e,r)=>e!==t?pr(r,`Expected ${jn(t)} (got ${jn(e)})`):!0})}function Ey(){return Hr({test:(t,e)=>typeof t!=\"string\"?pr(e,`Expected a string (got ${jn(t)})`):!0})}function Vs(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a==\"string\"||typeof a==\"number\"),o=new Set(e);return o.size===1?gK([...o][0]):Hr({test:(a,n)=>o.has(a)?!0:r?pr(n,`Expected one of ${yy(e,\"or\")} (got ${jn(a)})`):pr(n,`Expected a valid enumeration value (got ${jn(a)})`)})}function fje(){return Hr({test:(t,e)=>{var r;if(typeof t!=\"boolean\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o=Aje.get(t);if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a boolean (got ${jn(t)})`)}return!0}})}function NR(){return Hr({test:(t,e)=>{var r;if(typeof t!=\"number\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o;if(typeof t==\"string\"){let a;try{a=JSON.parse(t)}catch{}if(typeof a==\"number\")if(JSON.stringify(a)===t)o=a;else return pr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a number (got ${jn(t)})`)}return!0}})}function pje(t){return Hr({test:(e,r)=>{var o;if(typeof r?.coercions>\"u\")return pr(r,\"The isPayload predicate can only be used with coercion enabled\");if(typeof r.coercion>\"u\")return pr(r,\"Unbound coercion result\");if(typeof e!=\"string\")return pr(r,`Expected a string (got ${jn(e)})`);let a;try{a=JSON.parse(e)}catch{return pr(r,`Expected a JSON string (got ${jn(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Yu(n,\"value\")}))?(r.coercions.push([(o=r.p)!==null&&o!==void 0?o:\".\",r.coercion.bind(null,n.value)]),!0):!1}})}function hje(){return Hr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o;if(typeof t==\"string\"&&hK.test(t))o=new Date(t);else{let a;if(typeof t==\"string\"){let n;try{n=JSON.parse(t)}catch{}typeof n==\"number\"&&(a=n)}else typeof t==\"number\"&&(a=t);if(typeof a<\"u\")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))o=new Date(a*1e3);else return pr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a date (got ${jn(t)})`)}return!0}})}function iP(t,{delimiter:e}={}){return Hr({test:(r,o)=>{var a;let n=r;if(typeof r==\"string\"&&typeof e<\"u\"&&typeof o?.coercions<\"u\"){if(typeof o?.coercion>\"u\")return pr(o,\"Unbound coercion result\");r=r.split(e)}if(!Array.isArray(r))return pr(o,`Expected an array (got ${jn(r)})`);let u=!0;for(let A=0,p=r.length;A<p&&(u=t(r[A],Object.assign(Object.assign({},o),{p:Yp(o,A),coercion:Yu(r,A)}))&&u,!(!u&&o?.errors==null));++A);return r!==n&&o.coercions.push([(a=o.p)!==null&&a!==void 0?a:\".\",o.coercion.bind(null,r)]),u}})}function gje(t,{delimiter:e}={}){let r=iP(t,{delimiter:e});return Hr({test:(o,a)=>{var n,u;if(Object.getPrototypeOf(o).toString()===\"[object Set]\")if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");let A=[...o],p=[...o];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,I)=>E!==A[I])?new Set(p):o;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",iI(a.coercion,o,h)]),!0}else{let A=!0;for(let p of o)if(A=t(p,Object.assign({},a))&&A,!A&&a?.errors==null)break;return A}if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");let A={value:o};return r(o,Object.assign(Object.assign({},a),{coercion:Yu(A,\"value\")}))?(a.coercions.push([(u=a.p)!==null&&u!==void 0?u:\".\",iI(a.coercion,o,()=>new Set(A.value))]),!0):!1}return pr(a,`Expected a set (got ${jn(o)})`)}})}function dje(t,e){let r=iP(sP([t,e])),o=oP(e,{keys:t});return Hr({test:(a,n)=>{var u,A,p;if(Object.getPrototypeOf(a).toString()===\"[object Map]\")if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return pr(n,\"Unbound coercion result\");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let I=()=>E.some((v,b)=>v[0]!==h[b][0]||v[1]!==h[b][1])?new Map(E):a;return n.coercions.push([(u=n.p)!==null&&u!==void 0?u:\".\",iI(n.coercion,a,I)]),!0}else{let h=!0;for(let[E,I]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(I,Object.assign(Object.assign({},n),{p:Yp(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return pr(n,\"Unbound coercion result\");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(A=n.p)!==null&&A!==void 0?A:\".\",iI(n.coercion,a,()=>new Map(h.value))]),!0):!1:o(a,Object.assign(Object.assign({},n),{coercion:Yu(h,\"value\")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:\".\",iI(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return pr(n,`Expected a map (got ${jn(a)})`)}})}function sP(t,{delimiter:e}={}){let r=yK(t.length);return Hr({test:(o,a)=>{var n;if(typeof o==\"string\"&&typeof e<\"u\"&&typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");o=o.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,o)])}if(!Array.isArray(o))return pr(a,`Expected a tuple (got ${jn(o)})`);let u=r(o,Object.assign({},a));for(let A=0,p=o.length;A<p&&A<t.length&&(u=t[A](o[A],Object.assign(Object.assign({},a),{p:Yp(a,A),coercion:Yu(o,A)}))&&u,!(!u&&a?.errors==null));++A);return u}})}function oP(t,{keys:e=null}={}){let r=iP(sP([e??Ey(),t]));return Hr({test:(o,a)=>{var n;if(Array.isArray(o)&&typeof a?.coercions<\"u\")return typeof a?.coercion>\"u\"?pr(a,\"Unbound coercion result\"):r(o,Object.assign(Object.assign({},a),{coercion:void 0}))?(o=Object.fromEntries(o),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,o)]),!0):!1;if(typeof o!=\"object\"||o===null)return pr(a,`Expected an object (got ${jn(o)})`);let u=Object.keys(o),A=!0;for(let p=0,h=u.length;p<h&&(A||a?.errors!=null);++p){let E=u[p],I=o[E];if(E===\"__proto__\"||E===\"constructor\"){A=pr(Object.assign(Object.assign({},a),{p:Yp(a,E)}),\"Unsafe property name\");continue}if(e!==null&&!e(E,a)){A=!1;continue}if(!t(I,Object.assign(Object.assign({},a),{p:Yp(a,E),coercion:Yu(o,E)}))){A=!1;continue}}return A}})}function mje(t,e={}){return oP(t,e)}function dK(t,{extra:e=null}={}){let r=Object.keys(t),o=Hr({test:(a,n)=>{if(typeof a!=\"object\"||a===null)return pr(n,`Expected an object (got ${jn(a)})`);let u=new Set([...r,...Object.keys(a)]),A={},p=!0;for(let h of u){if(h===\"constructor\"||h===\"__proto__\")p=pr(Object.assign(Object.assign({},n),{p:Yp(n,h)}),\"Unsafe property name\");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,I=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<\"u\"?p=E(I,Object.assign(Object.assign({},n),{p:Yp(n,h),coercion:Yu(a,h)}))&&p:e===null?p=pr(Object.assign(Object.assign({},n),{p:Yp(n,h)}),`Extraneous property (got ${jn(I)})`):Object.defineProperty(A,h,{enumerable:!0,get:()=>I,set:uje(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(A,n)&&p),p}});return Object.assign(o,{properties:t})}function yje(t){return dK(t,{extra:oP(RR())})}function mK(t){return()=>t}function Hr({test:t}){return mK(t)()}function Cje(t,e){if(!e(t))throw new Wp}function wje(t,e){let r=[];if(!e(t,{errors:r}))throw new Wp({errors:r})}function Ije(t,e){}function Bje(t,e,{coerce:r=!1,errors:o,throw:a}={}){let n=o?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new Wp({errors:n});return{value:void 0,errors:n??!0}}let u={value:t},A=Yu(u,\"value\"),p=[];if(!e(t,{errors:n,coercion:A,coercions:p})){if(a)throw new Wp({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?u.value:{value:u.value,errors:void 0}}function vje(t,e){let r=sP(t);return(...o)=>{if(!r(o))throw new Wp;return e(...o)}}function Dje(t){return Hr({test:(e,r)=>e.length>=t?!0:pr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function Pje(t){return Hr({test:(e,r)=>e.length<=t?!0:pr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function yK(t){return Hr({test:(e,r)=>e.length!==t?pr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function Sje({map:t}={}){return Hr({test:(e,r)=>{let o=new Set,a=new Set;for(let n=0,u=e.length;n<u;++n){let A=e[n],p=typeof t<\"u\"?t(A):A;if(o.has(p)){if(a.has(p))continue;pr(r,`Expected to contain unique elements; got a duplicate with ${jn(e)}`),a.add(p)}else o.add(p)}return a.size===0}})}function xje(){return Hr({test:(t,e)=>t<=0?!0:pr(e,`Expected to be negative (got ${t})`)})}function bje(){return Hr({test:(t,e)=>t>=0?!0:pr(e,`Expected to be positive (got ${t})`)})}function MR(t){return Hr({test:(e,r)=>e>=t?!0:pr(r,`Expected to be at least ${t} (got ${e})`)})}function kje(t){return Hr({test:(e,r)=>e<=t?!0:pr(r,`Expected to be at most ${t} (got ${e})`)})}function Qje(t,e){return Hr({test:(r,o)=>r>=t&&r<=e?!0:pr(o,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function Fje(t,e){return Hr({test:(r,o)=>r>=t&&r<e?!0:pr(o,`Expected to be in the [${t}; ${e}[ range (got ${r})`)})}function OR({unsafe:t=!1}={}){return Hr({test:(e,r)=>e!==Math.round(e)?pr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?pr(r,`Expected to be a safe integer (got ${e})`):!0})}function sI(t){return Hr({test:(e,r)=>t.test(e)?!0:pr(r,`Expected to match the pattern ${t.toString()} (got ${jn(e)})`)})}function Tje(){return Hr({test:(t,e)=>t!==t.toLowerCase()?pr(e,`Expected to be all-lowercase (got ${t})`):!0})}function Rje(){return Hr({test:(t,e)=>t!==t.toUpperCase()?pr(e,`Expected to be all-uppercase (got ${t})`):!0})}function Nje(){return Hr({test:(t,e)=>cje.test(t)?!0:pr(e,`Expected to be a valid UUID v4 (got ${jn(t)})`)})}function Lje(){return Hr({test:(t,e)=>hK.test(t)?!0:pr(e,`Expected to be a valid ISO 8601 date string (got ${jn(t)})`)})}function Mje({alpha:t=!1}){return Hr({test:(e,r)=>(t?oje.test(e):aje.test(e))?!0:pr(r,`Expected to be a valid hexadecimal color string (got ${jn(e)})`)})}function Oje(){return Hr({test:(t,e)=>lje.test(t)?!0:pr(e,`Expected to be a valid base 64 string (got ${jn(t)})`)})}function Uje(t=RR()){return Hr({test:(e,r)=>{let o;try{o=JSON.parse(e)}catch{return pr(r,`Expected to be a valid JSON string (got ${jn(e)})`)}return t(o,r)}})}function aP(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Hr({test:(o,a)=>{var n,u;let A={value:o},p=typeof a?.coercions<\"u\"?Yu(A,\"value\"):void 0,h=typeof a?.coercions<\"u\"?[]:void 0;if(!t(o,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<\"u\")for(let[,I]of h)E.push(I());try{if(typeof a?.coercions<\"u\"){if(A.value!==o){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,A.value)])}(u=a?.coercions)===null||u===void 0||u.push(...h)}return r.every(I=>I(A.value,a))}finally{for(let I of E)I()}}})}function oI(t,...e){let r=Array.isArray(e[0])?e[0]:e;return aP(t,r)}function _je(t){return Hr({test:(e,r)=>typeof e>\"u\"?!0:t(e,r)})}function Hje(t){return Hr({test:(e,r)=>e===null?!0:t(e,r)})}function jje(t,e){var r;let o=new Set(t),a=aI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)||p.push(h);return p.length>0?pr(u,`Missing required ${TR(p.length,\"property\",\"properties\")} ${yy(p,\"and\")}`):!0}})}function UR(t,e){var r;let o=new Set(t),a=aI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>Object.keys(n).some(h=>a(o,h,n))?!0:pr(u,`Missing at least one property from ${yy(Array.from(o),\"or\")}`)})}function qje(t,e){var r;let o=new Set(t),a=aI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>0?pr(u,`Forbidden ${TR(p.length,\"property\",\"properties\")} ${yy(p,\"and\")}`):!0}})}function Gje(t,e){var r;let o=new Set(t),a=aI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>1?pr(u,`Mutually exclusive properties ${yy(p,\"and\")}`):!0}})}function lI(t,e,r,o){var a,n;let u=new Set((a=o?.ignore)!==null&&a!==void 0?a:[]),A=aI[(n=o?.missingIf)!==null&&n!==void 0?n:\"missing\"],p=new Set(r),h=Yje[e],E=e===Gu.Forbids?\"or\":\"and\";return Hr({test:(I,v)=>{let b=new Set(Object.keys(I));if(!A(b,t,I)||u.has(I[t]))return!0;let C=[];for(let T of p)(A(b,T,I)&&!u.has(I[T]))!==h.expect&&C.push(T);return C.length>=1?pr(v,`Property \"${t}\" ${h.message} ${TR(C.length,\"property\",\"properties\")} ${yy(C,E)}`):!0}})}var sje,oje,aje,lje,cje,hK,Aje,Eje,LR,Wp,aI,Gu,Yje,Za=Et(()=>{sje=/^[a-zA-Z_][a-zA-Z0-9_]*$/;oje=/^#[0-9a-f]{6}$/i,aje=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,lje=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,cje=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,hK=/^(?:[1-9]\\d{3}(-?)(?:(?:0[1-9]|1[0-2])\\1(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])\\1(?:29|30)|(?:0[13578]|1[02])(?:\\1)31|00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[0-5]))|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\\2)29|-?366))T(?:[01]\\d|2[0-3])(:?)[0-5]\\d(?:\\3[0-5]\\d)?(?:Z|[+-][01]\\d(?:\\3[0-5]\\d)?)$/;Aje=new Map([[\"true\",!0],[\"True\",!0],[\"1\",!0],[1,!0],[\"false\",!1],[\"False\",!1],[\"0\",!1],[0,!1]]);Eje=t=>Hr({test:(e,r)=>e instanceof t?!0:pr(r,`Expected an instance of ${t.name} (got ${jn(e)})`)}),LR=(t,{exclusive:e=!1}={})=>Hr({test:(r,o)=>{var a,n,u;let A=[],p=typeof o?.errors<\"u\"?[]:void 0;for(let h=0,E=t.length;h<E;++h){let I=typeof o?.errors<\"u\"?[]:void 0,v=typeof o?.coercions<\"u\"?[]:void 0;if(t[h](r,Object.assign(Object.assign({},o),{errors:I,coercions:v,p:`${(a=o?.p)!==null&&a!==void 0?a:\".\"}#${h+1}`}))){if(A.push([`#${h+1}`,v]),!e)break}else p?.push(I[0])}if(A.length===1){let[,h]=A[0];return typeof h<\"u\"&&((n=o?.coercions)===null||n===void 0||n.push(...h)),!0}return A.length>1?pr(o,`Expected to match exactly a single predicate (matched ${A.join(\", \")})`):(u=o?.errors)===null||u===void 0||u.push(...p),!1}});Wp=class extends Error{constructor({errors:e}={}){let r=\"Type mismatch\";if(e&&e.length>0){r+=`\n`;for(let o of e)r+=`\n- ${o}`}super(r)}};aI={missing:(t,e)=>t.has(e),undefined:(t,e,r)=>t.has(e)&&typeof r[e]<\"u\",nil:(t,e,r)=>t.has(e)&&r[e]!=null,falsy:(t,e,r)=>t.has(e)&&!!r[e]};(function(t){t.Forbids=\"Forbids\",t.Requires=\"Requires\"})(Gu||(Gu={}));Yje={[Gu.Forbids]:{expect:!1,message:\"forbids using\"},[Gu.Requires]:{expect:!0,message:\"requires using\"}}});var nt,Vp=Et(()=>{yf();nt=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:u}=await Promise.resolve().then(()=>(Za(),Ko)),A=u(a(n()),r),p=[],h=[];if(!A(this,{errors:p,coercions:h}))throw nI(\"Invalid option schema\",p);for(let[,I]of h)I()}else if(r!=null)throw new Error(\"Invalid command schema\");let o=await this.execute();return typeof o<\"u\"?o:0}};nt.isOption=rI;nt.Default=[]});function va(t){bR&&console.log(t)}function CK(){let t={nodes:[]};for(let e=0;e<cn.CustomNode;++e)t.nodes.push($a());return t}function Wje(t){let e=CK(),r=[],o=e.nodes.length;for(let a of t){r.push(o);for(let n=0;n<a.nodes.length;++n)IK(n)||e.nodes.push(eqe(a.nodes[n],o));o+=a.nodes.length-cn.CustomNode+1}for(let a of r)Cy(e,cn.InitialNode,a);return e}function Mc(t,e){return t.nodes.push(e),t.nodes.length-1}function Vje(t){let e=new Set,r=o=>{if(e.has(o))return;e.add(o);let a=t.nodes[o];for(let u of Object.values(a.statics))for(let{to:A}of u)r(A);for(let[,{to:u}]of a.dynamics)r(u);for(let{to:u}of a.shortcuts)r(u);let n=new Set(a.shortcuts.map(({to:u})=>u));for(;a.shortcuts.length>0;){let{to:u}=a.shortcuts.shift(),A=t.nodes[u];for(let[p,h]of Object.entries(A.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let I of h)E.some(({to:v})=>I.to===v)||E.push(I)}for(let[p,h]of A.dynamics)a.dynamics.some(([E,{to:I}])=>p===E&&h.to===I)||a.dynamics.push([p,h]);for(let p of A.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(cn.InitialNode)}function Kje(t,{prefix:e=\"\"}={}){if(bR){va(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)va(`${e}  ${r}: ${JSON.stringify(t.nodes[r])}`)}}function Jje(t,e,r=!1){va(`Running a vm on ${JSON.stringify(e)}`);let o=[{node:cn.InitialNode,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null,partial:!1,tokens:[]}}];Kje(t,{prefix:\"  \"});let a=[Hn.StartOfInput,...e];for(let n=0;n<a.length;++n){let u=a[n],A=u===Hn.EndOfInput||u===Hn.EndOfPartialInput,p=n-1;va(`  Processing ${JSON.stringify(u)}`);let h=[];for(let{node:E,state:I}of o){va(`    Current node is ${E}`);let v=t.nodes[E];if(E===cn.ErrorNode){h.push({node:E,state:I});continue}console.assert(v.shortcuts.length===0,\"Shortcuts should have been eliminated by now\");let b=Object.prototype.hasOwnProperty.call(v.statics,u);if(!r||n<a.length-1||b)if(b){let C=v.statics[u];for(let{to:T,reducer:L}of C)h.push({node:T,state:typeof L<\"u\"?lP(HR,L,I,u,p):I}),va(`      Static transition to ${T} found`)}else va(\"      No static transition found\");else{let C=!1;for(let T of Object.keys(v.statics))if(!!T.startsWith(u)){if(u===T)for(let{to:L,reducer:U}of v.statics[T])h.push({node:L,state:typeof U<\"u\"?lP(HR,U,I,u,p):I}),va(`      Static transition to ${L} found`);else for(let{to:L}of v.statics[T])h.push({node:L,state:{...I,remainder:T.slice(u.length)}}),va(`      Static transition to ${L} found (partial match)`);C=!0}C||va(\"      No partial static transition found\")}if(!A)for(let[C,{to:T,reducer:L}]of v.dynamics)lP(tqe,C,I,u,p)&&(h.push({node:T,state:typeof L<\"u\"?lP(HR,L,I,u,p):I}),va(`      Dynamic transition to ${T} found (via ${C})`))}if(h.length===0&&A&&e.length===1)return[{node:cn.InitialNode,state:EK}];if(h.length===0)throw new my(e,o.filter(({node:E})=>E!==cn.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===cn.ErrorNode))throw new my(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));o=Xje(h)}if(o.length>0){va(\"  Results:\");for(let n of o)va(`    - ${n.node} -> ${JSON.stringify(n.state)}`)}else va(\"  No results\");return o}function zje(t,e,{endToken:r=Hn.EndOfInput}={}){let o=Jje(t,[...e,r]);return Zje(e,o.map(({state:a})=>a))}function Xje(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function Zje(t,e){let r=e.filter(v=>v.selectedIndex!==null),o=r.filter(v=>!v.partial);if(o.length>0&&(r=o),r.length===0)throw new Error;let a=r.filter(v=>v.selectedIndex===td||v.requiredOptions.every(b=>b.some(C=>v.options.find(T=>T.name===C))));if(a.length===0)throw new my(t,r.map(v=>({usage:v.candidateUsage,reason:null})));let n=0;for(let v of a)v.path.length>n&&(n=v.path.length);let u=a.filter(v=>v.path.length===n),A=v=>v.positionals.filter(({extra:b})=>!b).length+v.options.length,p=u.map(v=>({state:v,positionalCount:A(v)})),h=0;for(let{positionalCount:v}of p)v>h&&(h=v);let E=p.filter(({positionalCount:v})=>v===h).map(({state:v})=>v),I=$je(E);if(I.length>1)throw new tP(t,I.map(v=>v.candidateUsage));return I[0]}function $je(t){let e=[],r=[];for(let o of t)o.selectedIndex===td?r.push(o):e.push(o);return r.length>0&&e.push({...EK,path:wK(...r.map(o=>o.path)),options:r.reduce((o,a)=>o.concat(a.options),[])}),e}function wK(t,e,...r){return e===void 0?Array.from(t):wK(t.filter((o,a)=>o===e[a]),...r)}function $a(){return{dynamics:[],shortcuts:[],statics:{}}}function IK(t){return t===cn.SuccessNode||t===cn.ErrorNode}function _R(t,e=0){return{to:IK(t.to)?t.to:t.to>=cn.CustomNode?t.to+e-cn.CustomNode+1:t.to+e,reducer:t.reducer}}function eqe(t,e=0){let r=$a();for(let[o,a]of t.dynamics)r.dynamics.push([o,_R(a,e)]);for(let o of t.shortcuts)r.shortcuts.push(_R(o,e));for(let[o,a]of Object.entries(t.statics))r.statics[o]=a.map(n=>_R(n,e));return r}function Ss(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}function Cy(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}function Jo(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:o,reducer:a})}function lP(t,e,r,o,a){if(Array.isArray(e)){let[n,...u]=e;return t[n](r,o,a,...u)}else return t[e](r,o,a)}var EK,tqe,HR,el,jR,wy,cP=Et(()=>{eP();rP();EK={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:td,partial:!1,tokens:[]};tqe={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!==\"-\"&&e.startsWith(\"-\"),isNotOptionLike:(t,e)=>t.ignoreOptions||e===\"-\"||!e.startsWith(\"-\"),isOption:(t,e,r,o)=>!t.ignoreOptions&&e===o,isBatchOption:(t,e,r,o)=>!t.ignoreOptions&&AK.test(e)&&[...e.slice(1)].every(a=>o.has(`-${a}`)),isBoundOption:(t,e,r,o,a)=>{let n=e.match(xR);return!t.ignoreOptions&&!!n&&$D.test(n[1])&&o.has(n[1])&&a.filter(u=>u.nameSet.includes(n[1])).every(u=>u.allowBinding)},isNegatedOption:(t,e,r,o)=>!t.ignoreOptions&&e===`--no-${o.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&SR.test(e),isUnsupportedOption:(t,e,r,o)=>!t.ignoreOptions&&e.startsWith(\"-\")&&$D.test(e)&&!o.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith(\"-\")&&!$D.test(e)},HR={setCandidateState:(t,e,r,o)=>({...t,...o}),setSelectedIndex:(t,e,r,o)=>({...t,selectedIndex:o}),setPartialIndex:(t,e,r,o)=>({...t,selectedIndex:o,partial:!0}),pushBatch:(t,e,r,o)=>{let a=t.options.slice(),n=t.tokens.slice();for(let u=1;u<e.length;++u){let A=o.get(`-${e[u]}`),p=u===1?[0,2]:[u,u+1];a.push({name:A,value:!0}),n.push({segmentIndex:r,type:\"option\",option:A,slice:p})}return{...t,options:a,tokens:n}},pushBound:(t,e,r)=>{let[,o,a]=e.match(xR),n=t.options.concat({name:o,value:a}),u=t.tokens.concat([{segmentIndex:r,type:\"option\",slice:[0,o.length],option:o},{segmentIndex:r,type:\"assign\",slice:[o.length,o.length+1]},{segmentIndex:r,type:\"value\",slice:[o.length+1,o.length+a.length+1]}]);return{...t,options:n,tokens:u}},pushPath:(t,e,r)=>{let o=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:\"path\"});return{...t,path:o,tokens:a}},pushPositional:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushExtra:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:el}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushTrue:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:o});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!1}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:o});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,o)=>{let a=t.options.concat({name:e,value:void 0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:e});return{...t,options:a,tokens:n}},pushStringValue:(t,e,r)=>{var o;let a=t.options[t.options.length-1],n=t.options.slice(),u=t.tokens.concat({segmentIndex:r,type:\"value\"});return a.value=((o=a.value)!==null&&o!==void 0?o:[]).concat([e]),{...t,options:n,tokens:u}},setStringValue:(t,e,r)=>{let o=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:\"value\"});return o.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,o)=>{let[,,a]=e.match(SR);return typeof a<\"u\"?{...t,options:[{name:\"-c\",value:String(o)},{name:\"-i\",value:a}]}:{...t,options:[{name:\"-c\",value:String(o)}]}},setError:(t,e,r,o)=>e===Hn.EndOfInput||e===Hn.EndOfPartialInput?{...t,errorMessage:`${o}.`}:{...t,errorMessage:`${o} (\"${e}\").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},el=Symbol(),jR=class{constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:o=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:o,proxy:a})}addPositional({name:e=\"arg\",required:r=!0}={}){if(!r&&this.arity.extra===el)throw new Error(\"Optional parameters cannot be declared when using .rest() or .proxy()\");if(!r&&this.arity.trailing.length>0)throw new Error(\"Optional parameters cannot be declared after the required trailing positional arguments\");!r&&this.arity.extra!==el?this.arity.extra.push(e):this.arity.extra!==el&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e=\"arg\",required:r=0}={}){if(this.arity.extra===el)throw new Error(\"Infinite lists cannot be declared multiple times in the same command\");if(this.arity.trailing.length>0)throw new Error(\"Infinite lists cannot be declared after the required trailing positional arguments\");for(let o=0;o<r;++o)this.addPositional({name:e});this.arity.extra=el}addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}addOption({names:e,description:r,arity:o=0,hidden:a=!1,required:n=!1,allowBinding:u=!0}){if(!u&&o>1)throw new Error(\"The arity cannot be higher than 1 when the option only supports the --arg=value syntax\");if(!Number.isInteger(o))throw new Error(`The arity must be an integer, got ${o}`);if(o<0)throw new Error(`The arity must be positive, got ${o}`);let A=e.reduce((p,h)=>h.length>p.length?h:p,\"\");for(let p of e)this.allOptionNames.set(p,A);this.options.push({preferredName:A,nameSet:e,description:r,arity:o,hidden:a,required:n,allowBinding:u})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&o.push(...this.paths[0]),e){for(let{preferredName:u,nameSet:A,arity:p,hidden:h,description:E,required:I}of this.options){if(h)continue;let v=[];for(let C=0;C<p;++C)v.push(` #${C}`);let b=`${A.join(\",\")}${v.join(\"\")}`;!r&&E?a.push({preferredName:u,nameSet:A,definition:b,description:E,required:I}):o.push(I?`<${b}>`:`[${b}]`)}o.push(...this.arity.leading.map(u=>`<${u}>`)),this.arity.extra===el?o.push(\"...\"):o.push(...this.arity.extra.map(u=>`[${u}]`)),o.push(...this.arity.trailing.map(u=>`<${u}>`))}return{usage:o.join(\" \"),options:a}}compile(){if(typeof this.context>\"u\")throw new Error(\"Assertion failed: No context attached\");let e=CK(),r=cn.InitialNode,o=this.usage().usage,a=this.options.filter(A=>A.required).map(A=>A.nameSet);r=Mc(e,$a()),Jo(e,cn.InitialNode,Hn.StartOfInput,r,[\"setCandidateState\",{candidateUsage:o,requiredOptions:a}]);let n=this.arity.proxy?\"always\":\"isNotOptionLike\",u=this.paths.length>0?this.paths:[[]];for(let A of u){let p=r;if(A.length>0){let v=Mc(e,$a());Cy(e,p,v),this.registerOptions(e,v),p=v}for(let v=0;v<A.length;++v){let b=Mc(e,$a());Jo(e,p,A[v],b,\"pushPath\"),p=b}if(this.arity.leading.length>0||!this.arity.proxy){let v=Mc(e,$a());Ss(e,p,\"isHelp\",v,[\"useHelp\",this.cliIndex]),Ss(e,v,\"always\",v,\"pushExtra\"),Jo(e,v,Hn.EndOfInput,cn.SuccessNode,[\"setSelectedIndex\",td]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Jo(e,p,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,p,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let h=p;for(let v=0;v<this.arity.leading.length;++v){let b=Mc(e,$a());(!this.arity.proxy||v+1!==this.arity.leading.length)&&this.registerOptions(e,b),(this.arity.trailing.length>0||v+1!==this.arity.leading.length)&&(Jo(e,b,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,b,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Ss(e,h,\"isNotOptionLike\",b,\"pushPositional\"),h=b}let E=h;if(this.arity.extra===el||this.arity.extra.length>0){let v=Mc(e,$a());if(Cy(e,h,v),this.arity.extra===el){let b=Mc(e,$a());this.arity.proxy||this.registerOptions(e,b),Ss(e,h,n,b,\"pushExtraNoLimits\"),Ss(e,b,n,b,\"pushExtraNoLimits\"),Cy(e,b,v)}else for(let b=0;b<this.arity.extra.length;++b){let C=Mc(e,$a());(!this.arity.proxy||b>0)&&this.registerOptions(e,C),Ss(e,E,n,C,\"pushExtra\"),Cy(e,C,v),E=C}E=v}this.arity.trailing.length>0&&(Jo(e,E,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,E,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let I=E;for(let v=0;v<this.arity.trailing.length;++v){let b=Mc(e,$a());this.arity.proxy||this.registerOptions(e,b),v+1<this.arity.trailing.length&&(Jo(e,b,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,b,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Ss(e,I,\"isNotOptionLike\",b,\"pushPositional\"),I=b}Ss(e,I,n,cn.ErrorNode,[\"setError\",\"Extraneous positional argument\"]),Jo(e,I,Hn.EndOfInput,cn.SuccessNode,[\"setSelectedIndex\",this.cliIndex]),Jo(e,I,Hn.EndOfPartialInput,cn.SuccessNode,[\"setSelectedIndex\",this.cliIndex])}return{machine:e,context:this.context}}registerOptions(e,r){Ss(e,r,[\"isOption\",\"--\"],r,\"inhibateOptions\"),Ss(e,r,[\"isBatchOption\",this.allOptionNames],r,[\"pushBatch\",this.allOptionNames]),Ss(e,r,[\"isBoundOption\",this.allOptionNames,this.options],r,\"pushBound\"),Ss(e,r,[\"isUnsupportedOption\",this.allOptionNames],cn.ErrorNode,[\"setError\",\"Unsupported option name\"]),Ss(e,r,[\"isInvalidOption\"],cn.ErrorNode,[\"setError\",\"Invalid option name\"]);for(let o of this.options)if(o.arity===0)for(let a of o.nameSet)Ss(e,r,[\"isOption\",a],r,[\"pushTrue\",o.preferredName]),a.startsWith(\"--\")&&!a.startsWith(\"--no-\")&&Ss(e,r,[\"isNegatedOption\",a],r,[\"pushFalse\",o.preferredName]);else{let a=Mc(e,$a());for(let n of o.nameSet)Ss(e,r,[\"isOption\",n],a,[\"pushUndefined\",o.preferredName]);for(let n=0;n<o.arity;++n){let u=Mc(e,$a());Jo(e,a,Hn.EndOfInput,cn.ErrorNode,\"setOptionArityError\"),Jo(e,a,Hn.EndOfPartialInput,cn.ErrorNode,\"setOptionArityError\"),Ss(e,a,\"isOptionLike\",cn.ErrorNode,\"setOptionArityError\");let A=o.arity===1?\"setStringValue\":\"pushStringValue\";Ss(e,a,\"isNotOptionLike\",u,A),a=u}Cy(e,a,r)}}},wy=class{constructor({binaryName:e=\"...\"}={}){this.builders=[],this.opts={binaryName:e}}static build(e,r={}){return new wy(r).commands(e).compile()}getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(`Assertion failed: Out-of-bound command index (${e})`);return this.builders[e]}commands(e){for(let r of e)r(this.command());return this}command(){let e=new jR(this.builders.length,this.opts);return this.builders.push(e),e}compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,context:u}=a.compile();e.push(n),r.push(u)}let o=Wje(e);return Vje(o),{machine:o,contexts:r,process:(a,{partial:n}={})=>{let u=n?Hn.EndOfPartialInput:Hn.EndOfInput;return zje(o,a,{endToken:u})}}}}});function vK(){return uP.default&&\"getColorDepth\"in uP.default.WriteStream.prototype?uP.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR===\"0\"?1:process.env.FORCE_COLOR===\"1\"||typeof process.stdout<\"u\"&&process.stdout.isTTY?8:1}function DK(t){let e=BK;if(typeof e>\"u\"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Be(\"async_hooks\");e=BK=new r;let o=process.stdout._write;process.stdout._write=function(n,u,A){let p=e.getStore();return typeof p>\"u\"?o.call(this,n,u,A):p.stdout.write(n,u,A)};let a=process.stderr._write;process.stderr._write=function(n,u,A){let p=e.getStore();return typeof p>\"u\"?a.call(this,n,u,A):p.stderr.write(n,u,A)}}return r=>e.run(t,r)}var uP,BK,PK=Et(()=>{uP=$e(Be(\"tty\"),1)});var Iy,SK=Et(()=>{Vp();Iy=class extends nt{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let o=new Iy(r);o.path=e.path;for(let a of e.options)switch(a.name){case\"-c\":o.commands.push(Number(a.value));break;case\"-i\":o.index=Number(a.value);break}return o}async execute(){let e=this.commands;if(typeof this.index<\"u\"&&this.index>=0&&this.index<e.length&&(e=[e[this.index]]),e.length===0)this.context.stdout.write(this.cli.usage());else if(e.length===1)this.context.stdout.write(this.cli.usage(this.contexts[e[0]].commandClass,{detailed:!0}));else if(e.length>1){this.context.stdout.write(`Multiple commands match your selection:\n`),this.context.stdout.write(`\n`);let r=0;for(let o of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[o].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(`\n`),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands.\n`)}}}});async function kK(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=FK(t);return as.from(r,e).runExit(o,a)}async function QK(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=FK(t);return as.from(r,e).run(o,a)}function FK(t){let e,r,o,a;switch(typeof process<\"u\"&&typeof process.argv<\"u\"&&(o=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?o=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],o=t[2]):t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],o=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],o=t[2],a=t[3];break}if(typeof o>\"u\")throw new Error(\"The argv parameter must be provided when running Clipanion outside of a Node context\");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}}function bK(t){return t()}var xK,as,TK=Et(()=>{eP();cP();FR();PK();Vp();SK();xK=Symbol(\"clipanion/errorCommand\");as=class{constructor({binaryLabel:e,binaryName:r=\"...\",binaryVersion:o,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new wy({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=o,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let o=new as(r),a=Array.isArray(e)?e:[e];for(let n of a)o.register(n);return o}register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeof h==\"object\"&&h!==null&&h[nt.isOption]&&o.set(p,h)}let n=this.builder.command(),u=n.cliIndex,A=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof A<\"u\")for(let p of A)n.addPath(p);this.registrations.set(e,{specs:o,builder:n,index:u});for(let[p,{definition:h}]of o.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:o,context:a,partial:n}=typeof e==\"object\"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:u,process:A}=this.builder.compile(),p=A(o,{partial:n}),h={...as.defaultContext,...a};switch(p.selectedIndex){case td:{let E=Iy.from(p,u);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=u[p.selectedIndex],I=this.registrations.get(E);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the command class to have been registered.\");let v=new E;v.context=h,v.tokens=p.tokens,v.path=p.path;try{for(let[b,{transformer:C}]of I.specs.entries())v[b]=C(I.builder,b,p,h);return v}catch(b){throw b[xK]=v,b}}break}}async run(e,r){var o,a;let n,u={...as.defaultContext,...r},A=(o=this.enableColors)!==null&&o!==void 0?o:u.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,u)}catch(E){return u.stdout.write(this.error(E,{colored:A})),1}if(n.help)return u.stdout.write(this.usage(n,{colored:A,detailed:!0})),0;n.context=u,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,I)=>this.error(E,I),format:E=>this.format(E),process:(E,I)=>this.process(E,{...u,...I}),run:(E,I)=>this.run(E,{...u,...I}),usage:(E,I)=>this.usage(E,I)};let p=this.enableCapture&&(a=DK(u))!==null&&a!==void 0?a:bK,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return u.stdout.write(this.error(E,{colored:A,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:o}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),u=typeof e.usage.category<\"u\"?Do(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,A=typeof e.usage.description<\"u\"?Do(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<\"u\"?Do(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<\"u\"?e.usage.examples.map(([E,I])=>[Do(E,{format:this.format(r),paragraphs:!1}),I.replace(/\\$0/g,this.binaryName)]):void 0;return{path:o,usage:a,category:u,description:A,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let o of this.registrations.keys()){let a=this.definition(o,{colored:e});!a||r.push(a)}return r}usage(e=null,{colored:r,detailed:o=!1,prefix:a=\"$ \"}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<\"u\";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(b=>b.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(o=!0)}let u=e!==null&&e instanceof nt?e.constructor:e,A=\"\";if(u)if(o){let{description:p=\"\",details:h=\"\",examples:E=[]}=u.usage||{};p!==\"\"&&(A+=Do(p,{format:this.format(r),paragraphs:!1}).replace(/^./,b=>b.toUpperCase()),A+=`\n`),(h!==\"\"||E.length>0)&&(A+=`${this.format(r).header(\"Usage\")}\n`,A+=`\n`);let{usage:I,options:v}=this.getUsageByRegistration(u,{inlineOptions:!1});if(A+=`${this.format(r).bold(a)}${I}\n`,v.length>0){A+=`\n`,A+=`${this.format(r).header(\"Options\")}\n`;let b=v.reduce((C,T)=>Math.max(C,T.definition.length),0);A+=`\n`;for(let{definition:C,description:T}of v)A+=`  ${this.format(r).bold(C.padEnd(b))}    ${Do(T,{format:this.format(r),paragraphs:!1})}`}if(h!==\"\"&&(A+=`\n`,A+=`${this.format(r).header(\"Details\")}\n`,A+=`\n`,A+=Do(h,{format:this.format(r),paragraphs:!0})),E.length>0){A+=`\n`,A+=`${this.format(r).header(\"Examples\")}\n`;for(let[b,C]of E)A+=`\n`,A+=Do(b,{format:this.format(r),paragraphs:!1}),A+=`${C.replace(/^/m,`  ${this.format(r).bold(a)}`).replace(/\\$0/g,this.binaryName)}\n`}}else{let{usage:p}=this.getUsageByRegistration(u);A+=`${this.format(r).bold(a)}${p}\n`}else{let p=new Map;for(let[v,{index:b}]of this.registrations.entries()){if(typeof v.usage>\"u\")continue;let C=typeof v.usage.category<\"u\"?Do(v.usage.category,{format:this.format(r),paragraphs:!1}):null,T=p.get(C);typeof T>\"u\"&&p.set(C,T=[]);let{usage:L}=this.getUsageByIndex(b);T.push({commandClass:v,usage:L})}let h=Array.from(p.keys()).sort((v,b)=>v===null?-1:b===null?1:v.localeCompare(b,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),E=typeof this.binaryLabel<\"u\",I=typeof this.binaryVersion<\"u\";E||I?(E&&I?A+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`:E?A+=`${this.format(r).header(`${this.binaryLabel}`)}\n`:A+=`${this.format(r).header(`${this.binaryVersion}`)}\n`,A+=`  ${this.format(r).bold(a)}${this.binaryName} <command>\n`):A+=`${this.format(r).bold(a)}${this.binaryName} <command>\n`;for(let v of h){let b=p.get(v).slice().sort((T,L)=>T.usage.localeCompare(L.usage,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),C=v!==null?v.trim():\"General commands\";A+=`\n`,A+=`${this.format(r).header(`${C}`)}\n`;for(let{commandClass:T,usage:L}of b){let U=T.usage.description||\"undocumented\";A+=`\n`,A+=`  ${this.format(r).bold(L)}\n`,A+=`    ${Do(U,{format:this.format(r),paragraphs:!1})}`}}A+=`\n`,A+=Do(\"You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.\",{format:this.format(r),paragraphs:!0})}return A}error(e,r){var o,{colored:a,command:n=(o=e[xK])!==null&&o!==void 0?o:null}=r===void 0?{}:r;(!e||typeof e!=\"object\"||!(\"stack\"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let u=\"\",A=e.name.replace(/([a-z])([A-Z])/g,\"$1 $2\");A===\"Error\"&&(A=\"Internal Error\"),u+=`${this.format(a).error(A)}: ${e.message}\n`;let p=e.clipanion;return typeof p<\"u\"?p.type===\"usage\"&&(u+=`\n`,u+=this.usage(n)):e.stack&&(u+=`${e.stack.replace(/^.*\\n/,\"\")}\n`),u}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:as.defaultContext.colorDepth>1)?fK:pK}getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>\"u\")throw new Error(\"Assertion failed: Unregistered command\");return this.getUsageByIndex(o.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};as.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:vK()}});var cI,RK=Et(()=>{Vp();cI=class extends nt{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}\n`)}};cI.paths=[[\"--clipanion=definitions\"]]});var uI,NK=Et(()=>{Vp();uI=class extends nt{async execute(){this.context.stdout.write(this.cli.usage())}};uI.paths=[[\"-h\"],[\"--help\"]]});function AP(t={}){return Vo({definition(e,r){var o;e.addProxy({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){return o.positionals.map(({value:a})=>a)}})}var qR=Et(()=>{yf()});var AI,LK=Et(()=>{Vp();qR();AI=class extends nt{constructor(){super(...arguments),this.args=AP()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)}\n`)}};AI.paths=[[\"--clipanion=tokens\"]]});var fI,MK=Et(()=>{Vp();fI=class extends nt{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:\"<unknown>\"}\n`)}};fI.paths=[[\"-v\"],[\"--version\"]]});var GR={};Kt(GR,{DefinitionsCommand:()=>cI,HelpCommand:()=>uI,TokensCommand:()=>AI,VersionCommand:()=>fI});var OK=Et(()=>{RK();NK();LK();MK()});function UK(t,e,r){let[o,a]=qu(e,r??{}),{arity:n=1}=a,u=t.split(\",\"),A=new Set(u);return Vo({definition(p){p.addOption({names:u,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let I,v=typeof o<\"u\"?[...o]:void 0;for(let{name:b,value:C}of E.options)!A.has(b)||(I=b,v=v??[],v.push(C));return typeof v<\"u\"?rd(I??h,v,a.validator):v}})}var _K=Et(()=>{yf()});function HK(t,e,r){let[o,a]=qu(e,r??{}),n=t.split(\",\"),u=new Set(n);return Vo({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E=v);return E}})}var jK=Et(()=>{yf()});function qK(t,e,r){let[o,a]=qu(e,r??{}),n=t.split(\",\"),u=new Set(n);return Vo({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E??(E=0),v?E+=1:E=0);return E}})}var GK=Et(()=>{yf()});function YK(t={}){return Vo({definition(e,r){var o;e.addRest({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){let a=u=>{let A=o.positionals[u];return A.extra===el||A.extra===!1&&u<e.arity.leading.length},n=0;for(;n<o.positionals.length&&a(n);)n+=1;return o.positionals.splice(0,n).map(({value:u})=>u)}})}var WK=Et(()=>{cP();yf()});function rqe(t,e,r){let[o,a]=qu(e,r??{}),{arity:n=1}=a,u=t.split(\",\"),A=new Set(u);return Vo({definition(p){p.addOption({names:u,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,I){let v,b=o;typeof a.env<\"u\"&&I.env[a.env]&&(v=a.env,b=I.env[a.env]);for(let{name:C,value:T}of E.options)!A.has(C)||(v=C,b=T);return typeof b==\"string\"?rd(v??h,b,a.validator):b}})}function nqe(t={}){let{required:e=!0}=t;return Vo({definition(r,o){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:o,required:t.required})},transformer(r,o,a){var n;for(let u=0;u<a.positionals.length;++u){if(a.positionals[u].extra===el||e&&a.positionals[u].extra===!0||!e&&a.positionals[u].extra===!1)continue;let[A]=a.positionals.splice(u,1);return rd((n=t.name)!==null&&n!==void 0?n:o,A.value,t.validator)}}})}function VK(t,...e){return typeof t==\"string\"?rqe(t,...e):nqe(t)}var KK=Et(()=>{cP();yf()});var ge={};Kt(ge,{Array:()=>UK,Boolean:()=>HK,Counter:()=>qK,Proxy:()=>AP,Rest:()=>YK,String:()=>VK,applyValidator:()=>rd,cleanValidationError:()=>nP,formatError:()=>nI,isOptionSymbol:()=>rI,makeCommandOption:()=>Vo,rerouteArguments:()=>qu});var JK=Et(()=>{yf();qR();_K();jK();GK();WK();KK()});var pI={};Kt(pI,{Builtins:()=>GR,Cli:()=>as,Command:()=>nt,Option:()=>ge,UsageError:()=>it,formatMarkdownish:()=>Do,run:()=>QK,runExit:()=>kK});var qt=Et(()=>{rP();FR();Vp();TK();OK();JK()});var zK=_((xkt,iqe)=>{iqe.exports={name:\"dotenv\",version:\"16.3.1\",description:\"Loads environment variables from .env file\",main:\"lib/main.js\",types:\"lib/main.d.ts\",exports:{\".\":{types:\"./lib/main.d.ts\",require:\"./lib/main.js\",default:\"./lib/main.js\"},\"./config\":\"./config.js\",\"./config.js\":\"./config.js\",\"./lib/env-options\":\"./lib/env-options.js\",\"./lib/env-options.js\":\"./lib/env-options.js\",\"./lib/cli-options\":\"./lib/cli-options.js\",\"./lib/cli-options.js\":\"./lib/cli-options.js\",\"./package.json\":\"./package.json\"},scripts:{\"dts-check\":\"tsc --project tests/types/tsconfig.json\",lint:\"standard\",\"lint-readme\":\"standard-markdown\",pretest:\"npm run lint && npm run dts-check\",test:\"tap tests/*.js --100 -Rspec\",prerelease:\"npm test\",release:\"standard-version\"},repository:{type:\"git\",url:\"git://github.com/motdotla/dotenv.git\"},funding:\"https://github.com/motdotla/dotenv?sponsor=1\",keywords:[\"dotenv\",\"env\",\".env\",\"environment\",\"variables\",\"config\",\"settings\"],readmeFilename:\"README.md\",license:\"BSD-2-Clause\",devDependencies:{\"@definitelytyped/dtslint\":\"^0.0.133\",\"@types/node\":\"^18.11.3\",decache:\"^4.6.1\",sinon:\"^14.0.1\",standard:\"^17.0.0\",\"standard-markdown\":\"^7.1.0\",\"standard-version\":\"^9.5.0\",tap:\"^16.3.0\",tar:\"^6.1.11\",typescript:\"^4.8.4\"},engines:{node:\">=12\"},browser:{fs:!1}}});var eJ=_((bkt,Ef)=>{var XK=Be(\"fs\"),WR=Be(\"path\"),sqe=Be(\"os\"),oqe=Be(\"crypto\"),aqe=zK(),VR=aqe.version,lqe=/(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg;function cqe(t){let e={},r=t.toString();r=r.replace(/\\r\\n?/mg,`\n`);let o;for(;(o=lqe.exec(r))!=null;){let a=o[1],n=o[2]||\"\";n=n.trim();let u=n[0];n=n.replace(/^(['\"`])([\\s\\S]*)\\1$/mg,\"$2\"),u==='\"'&&(n=n.replace(/\\\\n/g,`\n`),n=n.replace(/\\\\r/g,\"\\r\")),e[a]=n}return e}function uqe(t){let e=$K(t),r=xs.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let o=ZK(t).split(\",\"),a=o.length,n;for(let u=0;u<a;u++)try{let A=o[u].trim(),p=pqe(r,A);n=xs.decrypt(p.ciphertext,p.key);break}catch(A){if(u+1>=a)throw A}return xs.parse(n)}function Aqe(t){console.log(`[dotenv@${VR}][INFO] ${t}`)}function fqe(t){console.log(`[dotenv@${VR}][WARN] ${t}`)}function YR(t){console.log(`[dotenv@${VR}][DEBUG] ${t}`)}function ZK(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:\"\"}function pqe(t,e){let r;try{r=new URL(e)}catch(A){throw A.code===\"ERR_INVALID_URL\"?new Error(\"INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development\"):A}let o=r.password;if(!o)throw new Error(\"INVALID_DOTENV_KEY: Missing key part\");let a=r.searchParams.get(\"environment\");if(!a)throw new Error(\"INVALID_DOTENV_KEY: Missing environment part\");let n=`DOTENV_VAULT_${a.toUpperCase()}`,u=t.parsed[n];if(!u)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:u,key:o}}function $K(t){let e=WR.resolve(process.cwd(),\".env\");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(\".vault\")?e:`${e}.vault`}function hqe(t){return t[0]===\"~\"?WR.join(sqe.homedir(),t.slice(1)):t}function gqe(t){Aqe(\"Loading env from encrypted .env.vault\");let e=xs._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),xs.populate(r,e,t),{parsed:e}}function dqe(t){let e=WR.resolve(process.cwd(),\".env\"),r=\"utf8\",o=Boolean(t&&t.debug);t&&(t.path!=null&&(e=hqe(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=xs.parse(XK.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),xs.populate(n,a,t),{parsed:a}}catch(a){return o&&YR(`Failed to load ${e} ${a.message}`),{error:a}}}function mqe(t){let e=$K(t);return ZK(t).length===0?xs.configDotenv(t):XK.existsSync(e)?xs._configVault(t):(fqe(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),xs.configDotenv(t))}function yqe(t,e){let r=Buffer.from(e.slice(-64),\"hex\"),o=Buffer.from(t,\"base64\"),a=o.slice(0,12),n=o.slice(-16);o=o.slice(12,-16);try{let u=oqe.createDecipheriv(\"aes-256-gcm\",r,a);return u.setAuthTag(n),`${u.update(o)}${u.final()}`}catch(u){let A=u instanceof RangeError,p=u.message===\"Invalid key length\",h=u.message===\"Unsupported state or unable to authenticate data\";if(A||p){let E=\"INVALID_DOTENV_KEY: It must be 64 characters long (or more)\";throw new Error(E)}else if(h){let E=\"DECRYPTION_FAILED: Please check your DOTENV_KEY\";throw new Error(E)}else throw console.error(\"Error: \",u.code),console.error(\"Error: \",u.message),u}}function Eqe(t,e,r={}){let o=Boolean(r&&r.debug),a=Boolean(r&&r.override);if(typeof e!=\"object\")throw new Error(\"OBJECT_REQUIRED: Please check the processEnv argument being passed to populate\");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),o&&YR(a===!0?`\"${n}\" is already defined and WAS overwritten`:`\"${n}\" is already defined and was NOT overwritten`)):t[n]=e[n]}var xs={configDotenv:dqe,_configVault:gqe,_parseVault:uqe,config:mqe,decrypt:yqe,parse:cqe,populate:Eqe};Ef.exports.configDotenv=xs.configDotenv;Ef.exports._configVault=xs._configVault;Ef.exports._parseVault=xs._parseVault;Ef.exports.config=xs.config;Ef.exports.decrypt=xs.decrypt;Ef.exports.parse=xs.parse;Ef.exports.populate=xs.populate;Ef.exports=xs});var rJ=_((kkt,tJ)=>{\"use strict\";tJ.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var nd=_((Qkt,KR)=>{\"use strict\";var Cqe=rJ(),nJ=t=>{if(t<1)throw new TypeError(\"Expected `concurrency` to be a number from 1 and up\");let e=[],r=0,o=()=>{r--,e.length>0&&e.shift()()},a=(A,p,...h)=>{r++;let E=Cqe(A,...h);p(E),E.then(o,o)},n=(A,p,...h)=>{r<t?a(A,p,...h):e.push(a.bind(null,A,p,...h))},u=(A,...p)=>new Promise(h=>n(A,h,...p));return Object.defineProperties(u,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),u};KR.exports=nJ;KR.exports.default=nJ});function Wu(t){return`YN${t.toString(10).padStart(4,\"0\")}`}function fP(t){let e=Number(t.slice(2));if(typeof wr[e]>\"u\")throw new Error(`Unknown message name: \"${t}\"`);return e}var wr,pP=Et(()=>{wr=(Me=>(Me[Me.UNNAMED=0]=\"UNNAMED\",Me[Me.EXCEPTION=1]=\"EXCEPTION\",Me[Me.MISSING_PEER_DEPENDENCY=2]=\"MISSING_PEER_DEPENDENCY\",Me[Me.CYCLIC_DEPENDENCIES=3]=\"CYCLIC_DEPENDENCIES\",Me[Me.DISABLED_BUILD_SCRIPTS=4]=\"DISABLED_BUILD_SCRIPTS\",Me[Me.BUILD_DISABLED=5]=\"BUILD_DISABLED\",Me[Me.SOFT_LINK_BUILD=6]=\"SOFT_LINK_BUILD\",Me[Me.MUST_BUILD=7]=\"MUST_BUILD\",Me[Me.MUST_REBUILD=8]=\"MUST_REBUILD\",Me[Me.BUILD_FAILED=9]=\"BUILD_FAILED\",Me[Me.RESOLVER_NOT_FOUND=10]=\"RESOLVER_NOT_FOUND\",Me[Me.FETCHER_NOT_FOUND=11]=\"FETCHER_NOT_FOUND\",Me[Me.LINKER_NOT_FOUND=12]=\"LINKER_NOT_FOUND\",Me[Me.FETCH_NOT_CACHED=13]=\"FETCH_NOT_CACHED\",Me[Me.YARN_IMPORT_FAILED=14]=\"YARN_IMPORT_FAILED\",Me[Me.REMOTE_INVALID=15]=\"REMOTE_INVALID\",Me[Me.REMOTE_NOT_FOUND=16]=\"REMOTE_NOT_FOUND\",Me[Me.RESOLUTION_PACK=17]=\"RESOLUTION_PACK\",Me[Me.CACHE_CHECKSUM_MISMATCH=18]=\"CACHE_CHECKSUM_MISMATCH\",Me[Me.UNUSED_CACHE_ENTRY=19]=\"UNUSED_CACHE_ENTRY\",Me[Me.MISSING_LOCKFILE_ENTRY=20]=\"MISSING_LOCKFILE_ENTRY\",Me[Me.WORKSPACE_NOT_FOUND=21]=\"WORKSPACE_NOT_FOUND\",Me[Me.TOO_MANY_MATCHING_WORKSPACES=22]=\"TOO_MANY_MATCHING_WORKSPACES\",Me[Me.CONSTRAINTS_MISSING_DEPENDENCY=23]=\"CONSTRAINTS_MISSING_DEPENDENCY\",Me[Me.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]=\"CONSTRAINTS_INCOMPATIBLE_DEPENDENCY\",Me[Me.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]=\"CONSTRAINTS_EXTRANEOUS_DEPENDENCY\",Me[Me.CONSTRAINTS_INVALID_DEPENDENCY=26]=\"CONSTRAINTS_INVALID_DEPENDENCY\",Me[Me.CANT_SUGGEST_RESOLUTIONS=27]=\"CANT_SUGGEST_RESOLUTIONS\",Me[Me.FROZEN_LOCKFILE_EXCEPTION=28]=\"FROZEN_LOCKFILE_EXCEPTION\",Me[Me.CROSS_DRIVE_VIRTUAL_LOCAL=29]=\"CROSS_DRIVE_VIRTUAL_LOCAL\",Me[Me.FETCH_FAILED=30]=\"FETCH_FAILED\",Me[Me.DANGEROUS_NODE_MODULES=31]=\"DANGEROUS_NODE_MODULES\",Me[Me.NODE_GYP_INJECTED=32]=\"NODE_GYP_INJECTED\",Me[Me.AUTHENTICATION_NOT_FOUND=33]=\"AUTHENTICATION_NOT_FOUND\",Me[Me.INVALID_CONFIGURATION_KEY=34]=\"INVALID_CONFIGURATION_KEY\",Me[Me.NETWORK_ERROR=35]=\"NETWORK_ERROR\",Me[Me.LIFECYCLE_SCRIPT=36]=\"LIFECYCLE_SCRIPT\",Me[Me.CONSTRAINTS_MISSING_FIELD=37]=\"CONSTRAINTS_MISSING_FIELD\",Me[Me.CONSTRAINTS_INCOMPATIBLE_FIELD=38]=\"CONSTRAINTS_INCOMPATIBLE_FIELD\",Me[Me.CONSTRAINTS_EXTRANEOUS_FIELD=39]=\"CONSTRAINTS_EXTRANEOUS_FIELD\",Me[Me.CONSTRAINTS_INVALID_FIELD=40]=\"CONSTRAINTS_INVALID_FIELD\",Me[Me.AUTHENTICATION_INVALID=41]=\"AUTHENTICATION_INVALID\",Me[Me.PROLOG_UNKNOWN_ERROR=42]=\"PROLOG_UNKNOWN_ERROR\",Me[Me.PROLOG_SYNTAX_ERROR=43]=\"PROLOG_SYNTAX_ERROR\",Me[Me.PROLOG_EXISTENCE_ERROR=44]=\"PROLOG_EXISTENCE_ERROR\",Me[Me.STACK_OVERFLOW_RESOLUTION=45]=\"STACK_OVERFLOW_RESOLUTION\",Me[Me.AUTOMERGE_FAILED_TO_PARSE=46]=\"AUTOMERGE_FAILED_TO_PARSE\",Me[Me.AUTOMERGE_IMMUTABLE=47]=\"AUTOMERGE_IMMUTABLE\",Me[Me.AUTOMERGE_SUCCESS=48]=\"AUTOMERGE_SUCCESS\",Me[Me.AUTOMERGE_REQUIRED=49]=\"AUTOMERGE_REQUIRED\",Me[Me.DEPRECATED_CLI_SETTINGS=50]=\"DEPRECATED_CLI_SETTINGS\",Me[Me.PLUGIN_NAME_NOT_FOUND=51]=\"PLUGIN_NAME_NOT_FOUND\",Me[Me.INVALID_PLUGIN_REFERENCE=52]=\"INVALID_PLUGIN_REFERENCE\",Me[Me.CONSTRAINTS_AMBIGUITY=53]=\"CONSTRAINTS_AMBIGUITY\",Me[Me.CACHE_OUTSIDE_PROJECT=54]=\"CACHE_OUTSIDE_PROJECT\",Me[Me.IMMUTABLE_INSTALL=55]=\"IMMUTABLE_INSTALL\",Me[Me.IMMUTABLE_CACHE=56]=\"IMMUTABLE_CACHE\",Me[Me.INVALID_MANIFEST=57]=\"INVALID_MANIFEST\",Me[Me.PACKAGE_PREPARATION_FAILED=58]=\"PACKAGE_PREPARATION_FAILED\",Me[Me.INVALID_RANGE_PEER_DEPENDENCY=59]=\"INVALID_RANGE_PEER_DEPENDENCY\",Me[Me.INCOMPATIBLE_PEER_DEPENDENCY=60]=\"INCOMPATIBLE_PEER_DEPENDENCY\",Me[Me.DEPRECATED_PACKAGE=61]=\"DEPRECATED_PACKAGE\",Me[Me.INCOMPATIBLE_OS=62]=\"INCOMPATIBLE_OS\",Me[Me.INCOMPATIBLE_CPU=63]=\"INCOMPATIBLE_CPU\",Me[Me.FROZEN_ARTIFACT_EXCEPTION=64]=\"FROZEN_ARTIFACT_EXCEPTION\",Me[Me.TELEMETRY_NOTICE=65]=\"TELEMETRY_NOTICE\",Me[Me.PATCH_HUNK_FAILED=66]=\"PATCH_HUNK_FAILED\",Me[Me.INVALID_CONFIGURATION_VALUE=67]=\"INVALID_CONFIGURATION_VALUE\",Me[Me.UNUSED_PACKAGE_EXTENSION=68]=\"UNUSED_PACKAGE_EXTENSION\",Me[Me.REDUNDANT_PACKAGE_EXTENSION=69]=\"REDUNDANT_PACKAGE_EXTENSION\",Me[Me.AUTO_NM_SUCCESS=70]=\"AUTO_NM_SUCCESS\",Me[Me.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]=\"NM_CANT_INSTALL_EXTERNAL_SOFT_LINK\",Me[Me.NM_PRESERVE_SYMLINKS_REQUIRED=72]=\"NM_PRESERVE_SYMLINKS_REQUIRED\",Me[Me.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]=\"UPDATE_LOCKFILE_ONLY_SKIP_LINK\",Me[Me.NM_HARDLINKS_MODE_DOWNGRADED=74]=\"NM_HARDLINKS_MODE_DOWNGRADED\",Me[Me.PROLOG_INSTANTIATION_ERROR=75]=\"PROLOG_INSTANTIATION_ERROR\",Me[Me.INCOMPATIBLE_ARCHITECTURE=76]=\"INCOMPATIBLE_ARCHITECTURE\",Me[Me.GHOST_ARCHITECTURE=77]=\"GHOST_ARCHITECTURE\",Me[Me.RESOLUTION_MISMATCH=78]=\"RESOLUTION_MISMATCH\",Me[Me.PROLOG_LIMIT_EXCEEDED=79]=\"PROLOG_LIMIT_EXCEEDED\",Me[Me.NETWORK_DISABLED=80]=\"NETWORK_DISABLED\",Me[Me.NETWORK_UNSAFE_HTTP=81]=\"NETWORK_UNSAFE_HTTP\",Me[Me.RESOLUTION_FAILED=82]=\"RESOLUTION_FAILED\",Me[Me.AUTOMERGE_GIT_ERROR=83]=\"AUTOMERGE_GIT_ERROR\",Me[Me.CONSTRAINTS_CHECK_FAILED=84]=\"CONSTRAINTS_CHECK_FAILED\",Me[Me.UPDATED_RESOLUTION_RECORD=85]=\"UPDATED_RESOLUTION_RECORD\",Me[Me.EXPLAIN_PEER_DEPENDENCIES_CTA=86]=\"EXPLAIN_PEER_DEPENDENCIES_CTA\",Me[Me.MIGRATION_SUCCESS=87]=\"MIGRATION_SUCCESS\",Me[Me.VERSION_NOTICE=88]=\"VERSION_NOTICE\",Me[Me.TIPS_NOTICE=89]=\"TIPS_NOTICE\",Me[Me.OFFLINE_MODE_ENABLED=90]=\"OFFLINE_MODE_ENABLED\",Me))(wr||{})});var hI=_((Tkt,iJ)=>{var wqe=\"2.0.0\",Iqe=Number.MAX_SAFE_INTEGER||9007199254740991,Bqe=16,vqe=256-6,Dqe=[\"major\",\"premajor\",\"minor\",\"preminor\",\"patch\",\"prepatch\",\"prerelease\"];iJ.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Bqe,MAX_SAFE_BUILD_LENGTH:vqe,MAX_SAFE_INTEGER:Iqe,RELEASE_TYPES:Dqe,SEMVER_SPEC_VERSION:wqe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var gI=_((Rkt,sJ)=>{var Pqe=typeof process==\"object\"&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error(\"SEMVER\",...t):()=>{};sJ.exports=Pqe});var By=_((Cf,oJ)=>{var{MAX_SAFE_COMPONENT_LENGTH:JR,MAX_SAFE_BUILD_LENGTH:Sqe,MAX_LENGTH:xqe}=hI(),bqe=gI();Cf=oJ.exports={};var kqe=Cf.re=[],Qqe=Cf.safeRe=[],lr=Cf.src=[],cr=Cf.t={},Fqe=0,zR=\"[a-zA-Z0-9-]\",Tqe=[[\"\\\\s\",1],[\"\\\\d\",xqe],[zR,Sqe]],Rqe=t=>{for(let[e,r]of Tqe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Jr=(t,e,r)=>{let o=Rqe(e),a=Fqe++;bqe(t,a,e),cr[t]=a,lr[a]=e,kqe[a]=new RegExp(e,r?\"g\":void 0),Qqe[a]=new RegExp(o,r?\"g\":void 0)};Jr(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\");Jr(\"NUMERICIDENTIFIERLOOSE\",\"\\\\d+\");Jr(\"NONNUMERICIDENTIFIER\",`\\\\d*[a-zA-Z-]${zR}*`);Jr(\"MAINVERSION\",`(${lr[cr.NUMERICIDENTIFIER]})\\\\.(${lr[cr.NUMERICIDENTIFIER]})\\\\.(${lr[cr.NUMERICIDENTIFIER]})`);Jr(\"MAINVERSIONLOOSE\",`(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})`);Jr(\"PRERELEASEIDENTIFIER\",`(?:${lr[cr.NUMERICIDENTIFIER]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${lr[cr.NUMERICIDENTIFIERLOOSE]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASE\",`(?:-(${lr[cr.PRERELEASEIDENTIFIER]}(?:\\\\.${lr[cr.PRERELEASEIDENTIFIER]})*))`);Jr(\"PRERELEASELOOSE\",`(?:-?(${lr[cr.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${lr[cr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr(\"BUILDIDENTIFIER\",`${zR}+`);Jr(\"BUILD\",`(?:\\\\+(${lr[cr.BUILDIDENTIFIER]}(?:\\\\.${lr[cr.BUILDIDENTIFIER]})*))`);Jr(\"FULLPLAIN\",`v?${lr[cr.MAINVERSION]}${lr[cr.PRERELEASE]}?${lr[cr.BUILD]}?`);Jr(\"FULL\",`^${lr[cr.FULLPLAIN]}$`);Jr(\"LOOSEPLAIN\",`[v=\\\\s]*${lr[cr.MAINVERSIONLOOSE]}${lr[cr.PRERELEASELOOSE]}?${lr[cr.BUILD]}?`);Jr(\"LOOSE\",`^${lr[cr.LOOSEPLAIN]}$`);Jr(\"GTLT\",\"((?:<|>)?=?)\");Jr(\"XRANGEIDENTIFIERLOOSE\",`${lr[cr.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);Jr(\"XRANGEIDENTIFIER\",`${lr[cr.NUMERICIDENTIFIER]}|x|X|\\\\*`);Jr(\"XRANGEPLAIN\",`[v=\\\\s]*(${lr[cr.XRANGEIDENTIFIER]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIER]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIER]})(?:${lr[cr.PRERELEASE]})?${lr[cr.BUILD]}?)?)?`);Jr(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:${lr[cr.PRERELEASELOOSE]})?${lr[cr.BUILD]}?)?)?`);Jr(\"XRANGE\",`^${lr[cr.GTLT]}\\\\s*${lr[cr.XRANGEPLAIN]}$`);Jr(\"XRANGELOOSE\",`^${lr[cr.GTLT]}\\\\s*${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"COERCE\",`(^|[^\\\\d])(\\\\d{1,${JR}})(?:\\\\.(\\\\d{1,${JR}}))?(?:\\\\.(\\\\d{1,${JR}}))?(?:$|[^\\\\d])`);Jr(\"COERCERTL\",lr[cr.COERCE],!0);Jr(\"LONETILDE\",\"(?:~>?)\");Jr(\"TILDETRIM\",`(\\\\s*)${lr[cr.LONETILDE]}\\\\s+`,!0);Cf.tildeTrimReplace=\"$1~\";Jr(\"TILDE\",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAIN]}$`);Jr(\"TILDELOOSE\",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"LONECARET\",\"(?:\\\\^)\");Jr(\"CARETTRIM\",`(\\\\s*)${lr[cr.LONECARET]}\\\\s+`,!0);Cf.caretTrimReplace=\"$1^\";Jr(\"CARET\",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAIN]}$`);Jr(\"CARETLOOSE\",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"COMPARATORLOOSE\",`^${lr[cr.GTLT]}\\\\s*(${lr[cr.LOOSEPLAIN]})$|^$`);Jr(\"COMPARATOR\",`^${lr[cr.GTLT]}\\\\s*(${lr[cr.FULLPLAIN]})$|^$`);Jr(\"COMPARATORTRIM\",`(\\\\s*)${lr[cr.GTLT]}\\\\s*(${lr[cr.LOOSEPLAIN]}|${lr[cr.XRANGEPLAIN]})`,!0);Cf.comparatorTrimReplace=\"$1$2$3\";Jr(\"HYPHENRANGE\",`^\\\\s*(${lr[cr.XRANGEPLAIN]})\\\\s+-\\\\s+(${lr[cr.XRANGEPLAIN]})\\\\s*$`);Jr(\"HYPHENRANGELOOSE\",`^\\\\s*(${lr[cr.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${lr[cr.XRANGEPLAINLOOSE]})\\\\s*$`);Jr(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\");Jr(\"GTE0\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");Jr(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\")});var hP=_((Nkt,aJ)=>{var Nqe=Object.freeze({loose:!0}),Lqe=Object.freeze({}),Mqe=t=>t?typeof t!=\"object\"?Nqe:t:Lqe;aJ.exports=Mqe});var XR=_((Lkt,uJ)=>{var lJ=/^[0-9]+$/,cJ=(t,e)=>{let r=lJ.test(t),o=lJ.test(e);return r&&o&&(t=+t,e=+e),t===e?0:r&&!o?-1:o&&!r?1:t<e?-1:1},Oqe=(t,e)=>cJ(e,t);uJ.exports={compareIdentifiers:cJ,rcompareIdentifiers:Oqe}});var Po=_((Mkt,hJ)=>{var gP=gI(),{MAX_LENGTH:AJ,MAX_SAFE_INTEGER:dP}=hI(),{safeRe:fJ,t:pJ}=By(),Uqe=hP(),{compareIdentifiers:vy}=XR(),tl=class{constructor(e,r){if(r=Uqe(r),e instanceof tl){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!=\"string\")throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof e}\".`);if(e.length>AJ)throw new TypeError(`version is longer than ${AJ} characters`);gP(\"SemVer\",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let o=e.trim().match(r.loose?fJ[pJ.LOOSE]:fJ[pJ.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>dP||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>dP||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>dP||this.patch<0)throw new TypeError(\"Invalid patch version\");o[4]?this.prerelease=o[4].split(\".\").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<dP)return n}return a}):this.prerelease=[],this.build=o[5]?o[5].split(\".\"):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(\".\")}`),this.version}toString(){return this.version}compare(e){if(gP(\"SemVer.compare\",this.version,this.options,e),!(e instanceof tl)){if(typeof e==\"string\"&&e===this.version)return 0;e=new tl(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof tl||(e=new tl(e,this.options)),vy(this.major,e.major)||vy(this.minor,e.minor)||vy(this.patch,e.patch)}comparePre(e){if(e instanceof tl||(e=new tl(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let o=this.prerelease[r],a=e.prerelease[r];if(gP(\"prerelease compare\",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return vy(o,a)}while(++r)}compareBuild(e){e instanceof tl||(e=new tl(e,this.options));let r=0;do{let o=this.build[r],a=e.build[r];if(gP(\"prerelease compare\",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return vy(o,a)}while(++r)}inc(e,r,o){switch(e){case\"premajor\":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(\"pre\",r,o);break;case\"preminor\":this.prerelease.length=0,this.patch=0,this.minor++,this.inc(\"pre\",r,o);break;case\"prepatch\":this.prerelease.length=0,this.inc(\"patch\",r,o),this.inc(\"pre\",r,o);break;case\"prerelease\":this.prerelease.length===0&&this.inc(\"patch\",r,o),this.inc(\"pre\",r,o);break;case\"major\":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case\"minor\":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case\"patch\":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case\"pre\":{let a=Number(o)?1:0;if(!r&&o===!1)throw new Error(\"invalid increment argument: identifier is empty\");if(this.prerelease.length===0)this.prerelease=[a];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]==\"number\"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(\".\")&&o===!1)throw new Error(\"invalid increment argument: identifier already exists\");this.prerelease.push(a)}}if(r){let n=[r,a];o===!1&&(n=[r]),vy(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(\".\")}`),this}};hJ.exports=tl});var id=_((Okt,dJ)=>{var gJ=Po(),_qe=(t,e,r=!1)=>{if(t instanceof gJ)return t;try{return new gJ(t,e)}catch(o){if(!r)return null;throw o}};dJ.exports=_qe});var yJ=_((Ukt,mJ)=>{var Hqe=id(),jqe=(t,e)=>{let r=Hqe(t,e);return r?r.version:null};mJ.exports=jqe});var CJ=_((_kt,EJ)=>{var qqe=id(),Gqe=(t,e)=>{let r=qqe(t.trim().replace(/^[=v]+/,\"\"),e);return r?r.version:null};EJ.exports=Gqe});var BJ=_((Hkt,IJ)=>{var wJ=Po(),Yqe=(t,e,r,o,a)=>{typeof r==\"string\"&&(a=o,o=r,r=void 0);try{return new wJ(t instanceof wJ?t.version:t,r).inc(e,o,a).version}catch{return null}};IJ.exports=Yqe});var PJ=_((jkt,DJ)=>{var vJ=id(),Wqe=(t,e)=>{let r=vJ(t,null,!0),o=vJ(e,null,!0),a=r.compare(o);if(a===0)return null;let n=a>0,u=n?r:o,A=n?o:r,p=!!u.prerelease.length;if(!!A.prerelease.length&&!p)return!A.patch&&!A.minor?\"major\":u.patch?\"patch\":u.minor?\"minor\":\"major\";let E=p?\"pre\":\"\";return r.major!==o.major?E+\"major\":r.minor!==o.minor?E+\"minor\":r.patch!==o.patch?E+\"patch\":\"prerelease\"};DJ.exports=Wqe});var xJ=_((qkt,SJ)=>{var Vqe=Po(),Kqe=(t,e)=>new Vqe(t,e).major;SJ.exports=Kqe});var kJ=_((Gkt,bJ)=>{var Jqe=Po(),zqe=(t,e)=>new Jqe(t,e).minor;bJ.exports=zqe});var FJ=_((Ykt,QJ)=>{var Xqe=Po(),Zqe=(t,e)=>new Xqe(t,e).patch;QJ.exports=Zqe});var RJ=_((Wkt,TJ)=>{var $qe=id(),eGe=(t,e)=>{let r=$qe(t,e);return r&&r.prerelease.length?r.prerelease:null};TJ.exports=eGe});var Ll=_((Vkt,LJ)=>{var NJ=Po(),tGe=(t,e,r)=>new NJ(t,r).compare(new NJ(e,r));LJ.exports=tGe});var OJ=_((Kkt,MJ)=>{var rGe=Ll(),nGe=(t,e,r)=>rGe(e,t,r);MJ.exports=nGe});var _J=_((Jkt,UJ)=>{var iGe=Ll(),sGe=(t,e)=>iGe(t,e,!0);UJ.exports=sGe});var mP=_((zkt,jJ)=>{var HJ=Po(),oGe=(t,e,r)=>{let o=new HJ(t,r),a=new HJ(e,r);return o.compare(a)||o.compareBuild(a)};jJ.exports=oGe});var GJ=_((Xkt,qJ)=>{var aGe=mP(),lGe=(t,e)=>t.sort((r,o)=>aGe(r,o,e));qJ.exports=lGe});var WJ=_((Zkt,YJ)=>{var cGe=mP(),uGe=(t,e)=>t.sort((r,o)=>cGe(o,r,e));YJ.exports=uGe});var dI=_(($kt,VJ)=>{var AGe=Ll(),fGe=(t,e,r)=>AGe(t,e,r)>0;VJ.exports=fGe});var yP=_((eQt,KJ)=>{var pGe=Ll(),hGe=(t,e,r)=>pGe(t,e,r)<0;KJ.exports=hGe});var ZR=_((tQt,JJ)=>{var gGe=Ll(),dGe=(t,e,r)=>gGe(t,e,r)===0;JJ.exports=dGe});var $R=_((rQt,zJ)=>{var mGe=Ll(),yGe=(t,e,r)=>mGe(t,e,r)!==0;zJ.exports=yGe});var EP=_((nQt,XJ)=>{var EGe=Ll(),CGe=(t,e,r)=>EGe(t,e,r)>=0;XJ.exports=CGe});var CP=_((iQt,ZJ)=>{var wGe=Ll(),IGe=(t,e,r)=>wGe(t,e,r)<=0;ZJ.exports=IGe});var eN=_((sQt,$J)=>{var BGe=ZR(),vGe=$R(),DGe=dI(),PGe=EP(),SGe=yP(),xGe=CP(),bGe=(t,e,r,o)=>{switch(e){case\"===\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t===r;case\"!==\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t!==r;case\"\":case\"=\":case\"==\":return BGe(t,r,o);case\"!=\":return vGe(t,r,o);case\">\":return DGe(t,r,o);case\">=\":return PGe(t,r,o);case\"<\":return SGe(t,r,o);case\"<=\":return xGe(t,r,o);default:throw new TypeError(`Invalid operator: ${e}`)}};$J.exports=bGe});var tz=_((oQt,ez)=>{var kGe=Po(),QGe=id(),{safeRe:wP,t:IP}=By(),FGe=(t,e)=>{if(t instanceof kGe)return t;if(typeof t==\"number\"&&(t=String(t)),typeof t!=\"string\")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(wP[IP.COERCE]);else{let o;for(;(o=wP[IP.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||o.index+o[0].length!==r.index+r[0].length)&&(r=o),wP[IP.COERCERTL].lastIndex=o.index+o[1].length+o[2].length;wP[IP.COERCERTL].lastIndex=-1}return r===null?null:QGe(`${r[2]}.${r[3]||\"0\"}.${r[4]||\"0\"}`,e)};ez.exports=FGe});var nz=_((aQt,rz)=>{\"use strict\";rz.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var BP=_((lQt,iz)=>{\"use strict\";iz.exports=Cn;Cn.Node=sd;Cn.create=Cn;function Cn(t){var e=this;if(e instanceof Cn||(e=new Cn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach==\"function\")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,o=arguments.length;r<o;r++)e.push(arguments[r]);return e}Cn.prototype.removeNode=function(t){if(t.list!==this)throw new Error(\"removing node which does not belong to this list\");var e=t.next,r=t.prev;return e&&(e.prev=r),r&&(r.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=r),t.list.length--,t.next=null,t.prev=null,t.list=null,e};Cn.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}};Cn.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}};Cn.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)RGe(this,arguments[t]);return this.length};Cn.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)NGe(this,arguments[t]);return this.length};Cn.prototype.pop=function(){if(!!this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}};Cn.prototype.shift=function(){if(!!this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}};Cn.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,o=0;r!==null;o++)t.call(e,r.value,o,this),r=r.next};Cn.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,o=this.length-1;r!==null;o--)t.call(e,r.value,o,this),r=r.prev};Cn.prototype.get=function(t){for(var e=0,r=this.head;r!==null&&e<t;e++)r=r.next;if(e===t&&r!==null)return r.value};Cn.prototype.getReverse=function(t){for(var e=0,r=this.tail;r!==null&&e<t;e++)r=r.prev;if(e===t&&r!==null)return r.value};Cn.prototype.map=function(t,e){e=e||this;for(var r=new Cn,o=this.head;o!==null;)r.push(t.call(e,o.value,this)),o=o.next;return r};Cn.prototype.mapReverse=function(t,e){e=e||this;for(var r=new Cn,o=this.tail;o!==null;)r.push(t.call(e,o.value,this)),o=o.prev;return r};Cn.prototype.reduce=function(t,e){var r,o=this.head;if(arguments.length>1)r=e;else if(this.head)o=this.head.next,r=this.head.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=0;o!==null;a++)r=t(r,o.value,a),o=o.next;return r};Cn.prototype.reduceReverse=function(t,e){var r,o=this.tail;if(arguments.length>1)r=e;else if(this.tail)o=this.tail.prev,r=this.tail.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=this.length-1;o!==null;a--)r=t(r,o.value,a),o=o.prev;return r};Cn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Cn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Cn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Cn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(;a!==null&&o<e;o++,a=a.next)r.push(a.value);return r};Cn.prototype.sliceReverse=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Cn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=this.length,a=this.tail;a!==null&&o>e;o--)a=a.prev;for(;a!==null&&o>t;o--,a=a.prev)r.push(a.value);return r};Cn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(var n=[],o=0;a&&o<e;o++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var o=0;o<r.length;o++)a=TGe(this,a,r[o]);return n};Cn.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var o=r.prev;r.prev=r.next,r.next=o}return this.head=e,this.tail=t,this};function TGe(t,e,r){var o=e===t.head?new sd(r,null,e,t):new sd(r,e,e.next,t);return o.next===null&&(t.tail=o),o.prev===null&&(t.head=o),t.length++,o}function RGe(t,e){t.tail=new sd(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function NGe(t,e){t.head=new sd(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function sd(t,e,r,o){if(!(this instanceof sd))return new sd(t,e,r,o);this.list=o,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{nz()(Cn)}catch{}});var cz=_((cQt,lz)=>{\"use strict\";var LGe=BP(),od=Symbol(\"max\"),If=Symbol(\"length\"),Dy=Symbol(\"lengthCalculator\"),yI=Symbol(\"allowStale\"),ad=Symbol(\"maxAge\"),wf=Symbol(\"dispose\"),sz=Symbol(\"noDisposeOnSet\"),bs=Symbol(\"lruList\"),Oc=Symbol(\"cache\"),az=Symbol(\"updateAgeOnGet\"),tN=()=>1,nN=class{constructor(e){if(typeof e==\"number\"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!=\"number\"||e.max<0))throw new TypeError(\"max must be a non-negative number\");let r=this[od]=e.max||1/0,o=e.length||tN;if(this[Dy]=typeof o!=\"function\"?tN:o,this[yI]=e.stale||!1,e.maxAge&&typeof e.maxAge!=\"number\")throw new TypeError(\"maxAge must be a number\");this[ad]=e.maxAge||0,this[wf]=e.dispose,this[sz]=e.noDisposeOnSet||!1,this[az]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!=\"number\"||e<0)throw new TypeError(\"max must be a non-negative number\");this[od]=e||1/0,mI(this)}get max(){return this[od]}set allowStale(e){this[yI]=!!e}get allowStale(){return this[yI]}set maxAge(e){if(typeof e!=\"number\")throw new TypeError(\"maxAge must be a non-negative number\");this[ad]=e,mI(this)}get maxAge(){return this[ad]}set lengthCalculator(e){typeof e!=\"function\"&&(e=tN),e!==this[Dy]&&(this[Dy]=e,this[If]=0,this[bs].forEach(r=>{r.length=this[Dy](r.value,r.key),this[If]+=r.length})),mI(this)}get lengthCalculator(){return this[Dy]}get length(){return this[If]}get itemCount(){return this[bs].length}rforEach(e,r){r=r||this;for(let o=this[bs].tail;o!==null;){let a=o.prev;oz(this,e,o,r),o=a}}forEach(e,r){r=r||this;for(let o=this[bs].head;o!==null;){let a=o.next;oz(this,e,o,r),o=a}}keys(){return this[bs].toArray().map(e=>e.key)}values(){return this[bs].toArray().map(e=>e.value)}reset(){this[wf]&&this[bs]&&this[bs].length&&this[bs].forEach(e=>this[wf](e.key,e.value)),this[Oc]=new Map,this[bs]=new LGe,this[If]=0}dump(){return this[bs].map(e=>vP(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[bs]}set(e,r,o){if(o=o||this[ad],o&&typeof o!=\"number\")throw new TypeError(\"maxAge must be a number\");let a=o?Date.now():0,n=this[Dy](r,e);if(this[Oc].has(e)){if(n>this[od])return Py(this,this[Oc].get(e)),!1;let p=this[Oc].get(e).value;return this[wf]&&(this[sz]||this[wf](e,p.value)),p.now=a,p.maxAge=o,p.value=r,this[If]+=n-p.length,p.length=n,this.get(e),mI(this),!0}let u=new iN(e,r,n,a,o);return u.length>this[od]?(this[wf]&&this[wf](e,r),!1):(this[If]+=u.length,this[bs].unshift(u),this[Oc].set(e,this[bs].head),mI(this),!0)}has(e){if(!this[Oc].has(e))return!1;let r=this[Oc].get(e).value;return!vP(this,r)}get(e){return rN(this,e,!0)}peek(e){return rN(this,e,!1)}pop(){let e=this[bs].tail;return e?(Py(this,e),e.value):null}del(e){Py(this,this[Oc].get(e))}load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let a=e[o],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let u=n-r;u>0&&this.set(a.k,a.v,u)}}}prune(){this[Oc].forEach((e,r)=>rN(this,r,!1))}},rN=(t,e,r)=>{let o=t[Oc].get(e);if(o){let a=o.value;if(vP(t,a)){if(Py(t,o),!t[yI])return}else r&&(t[az]&&(o.value.now=Date.now()),t[bs].unshiftNode(o));return a.value}},vP=(t,e)=>{if(!e||!e.maxAge&&!t[ad])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[ad]&&r>t[ad]},mI=t=>{if(t[If]>t[od])for(let e=t[bs].tail;t[If]>t[od]&&e!==null;){let r=e.prev;Py(t,e),e=r}},Py=(t,e)=>{if(e){let r=e.value;t[wf]&&t[wf](r.key,r.value),t[If]-=r.length,t[Oc].delete(r.key),t[bs].removeNode(e)}},iN=class{constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,this.maxAge=n||0}},oz=(t,e,r,o)=>{let a=r.value;vP(t,a)&&(Py(t,r),t[yI]||(a=void 0)),a&&e.call(o,a.value,a.key,t)};lz.exports=nN});var Ml=_((uQt,pz)=>{var ld=class{constructor(e,r){if(r=OGe(r),e instanceof ld)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new ld(e.raw,r);if(e instanceof sN)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().split(/\\s+/).join(\" \"),this.set=this.raw.split(\"||\").map(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(a=>!Az(a[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&YGe(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(\" \").trim()).join(\"||\").trim(),this.range}toString(){return this.range}parseRange(e){let o=((this.options.includePrerelease&&qGe)|(this.options.loose&&GGe))+\":\"+e,a=uz.get(o);if(a)return a;let n=this.options.loose,u=n?Da[zo.HYPHENRANGELOOSE]:Da[zo.HYPHENRANGE];e=e.replace(u,t5e(this.options.includePrerelease)),ci(\"hyphen replace\",e),e=e.replace(Da[zo.COMPARATORTRIM],_Ge),ci(\"comparator trim\",e),e=e.replace(Da[zo.TILDETRIM],HGe),ci(\"tilde trim\",e),e=e.replace(Da[zo.CARETTRIM],jGe),ci(\"caret trim\",e);let A=e.split(\" \").map(I=>WGe(I,this.options)).join(\" \").split(/\\s+/).map(I=>e5e(I,this.options));n&&(A=A.filter(I=>(ci(\"loose invalid filter\",I,this.options),!!I.match(Da[zo.COMPARATORLOOSE])))),ci(\"range list\",A);let p=new Map,h=A.map(I=>new sN(I,this.options));for(let I of h){if(Az(I))return[I];p.set(I.value,I)}p.size>1&&p.has(\"\")&&p.delete(\"\");let E=[...p.values()];return uz.set(o,E),E}intersects(e,r){if(!(e instanceof ld))throw new TypeError(\"a Range is required\");return this.set.some(o=>fz(o,r)&&e.set.some(a=>fz(a,r)&&o.every(n=>a.every(u=>n.intersects(u,r)))))}test(e){if(!e)return!1;if(typeof e==\"string\")try{e=new UGe(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(r5e(this.set[r],e,this.options))return!0;return!1}};pz.exports=ld;var MGe=cz(),uz=new MGe({max:1e3}),OGe=hP(),sN=EI(),ci=gI(),UGe=Po(),{safeRe:Da,t:zo,comparatorTrimReplace:_Ge,tildeTrimReplace:HGe,caretTrimReplace:jGe}=By(),{FLAG_INCLUDE_PRERELEASE:qGe,FLAG_LOOSE:GGe}=hI(),Az=t=>t.value===\"<0.0.0-0\",YGe=t=>t.value===\"\",fz=(t,e)=>{let r=!0,o=t.slice(),a=o.pop();for(;r&&o.length;)r=o.every(n=>a.intersects(n,e)),a=o.pop();return r},WGe=(t,e)=>(ci(\"comp\",t,e),t=JGe(t,e),ci(\"caret\",t),t=VGe(t,e),ci(\"tildes\",t),t=XGe(t,e),ci(\"xrange\",t),t=$Ge(t,e),ci(\"stars\",t),t),Xo=t=>!t||t.toLowerCase()===\"x\"||t===\"*\",VGe=(t,e)=>t.trim().split(/\\s+/).map(r=>KGe(r,e)).join(\" \"),KGe=(t,e)=>{let r=e.loose?Da[zo.TILDELOOSE]:Da[zo.TILDE];return t.replace(r,(o,a,n,u,A)=>{ci(\"tilde\",t,o,a,n,u,A);let p;return Xo(a)?p=\"\":Xo(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Xo(u)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:A?(ci(\"replaceTilde pr\",A),p=`>=${a}.${n}.${u}-${A} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${u} <${a}.${+n+1}.0-0`,ci(\"tilde return\",p),p})},JGe=(t,e)=>t.trim().split(/\\s+/).map(r=>zGe(r,e)).join(\" \"),zGe=(t,e)=>{ci(\"caret\",t,e);let r=e.loose?Da[zo.CARETLOOSE]:Da[zo.CARET],o=e.includePrerelease?\"-0\":\"\";return t.replace(r,(a,n,u,A,p)=>{ci(\"caret\",t,a,n,u,A,p);let h;return Xo(n)?h=\"\":Xo(u)?h=`>=${n}.0.0${o} <${+n+1}.0.0-0`:Xo(A)?n===\"0\"?h=`>=${n}.${u}.0${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.0${o} <${+n+1}.0.0-0`:p?(ci(\"replaceCaret pr\",p),n===\"0\"?u===\"0\"?h=`>=${n}.${u}.${A}-${p} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}-${p} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A}-${p} <${+n+1}.0.0-0`):(ci(\"no pr\"),n===\"0\"?u===\"0\"?h=`>=${n}.${u}.${A}${o} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A} <${+n+1}.0.0-0`),ci(\"caret return\",h),h})},XGe=(t,e)=>(ci(\"replaceXRanges\",t,e),t.split(/\\s+/).map(r=>ZGe(r,e)).join(\" \")),ZGe=(t,e)=>{t=t.trim();let r=e.loose?Da[zo.XRANGELOOSE]:Da[zo.XRANGE];return t.replace(r,(o,a,n,u,A,p)=>{ci(\"xRange\",t,o,a,n,u,A,p);let h=Xo(n),E=h||Xo(u),I=E||Xo(A),v=I;return a===\"=\"&&v&&(a=\"\"),p=e.includePrerelease?\"-0\":\"\",h?a===\">\"||a===\"<\"?o=\"<0.0.0-0\":o=\"*\":a&&v?(E&&(u=0),A=0,a===\">\"?(a=\">=\",E?(n=+n+1,u=0,A=0):(u=+u+1,A=0)):a===\"<=\"&&(a=\"<\",E?n=+n+1:u=+u+1),a===\"<\"&&(p=\"-0\"),o=`${a+n}.${u}.${A}${p}`):E?o=`>=${n}.0.0${p} <${+n+1}.0.0-0`:I&&(o=`>=${n}.${u}.0${p} <${n}.${+u+1}.0-0`),ci(\"xRange return\",o),o})},$Ge=(t,e)=>(ci(\"replaceStars\",t,e),t.trim().replace(Da[zo.STAR],\"\")),e5e=(t,e)=>(ci(\"replaceGTE0\",t,e),t.trim().replace(Da[e.includePrerelease?zo.GTE0PRE:zo.GTE0],\"\")),t5e=t=>(e,r,o,a,n,u,A,p,h,E,I,v,b)=>(Xo(o)?r=\"\":Xo(a)?r=`>=${o}.0.0${t?\"-0\":\"\"}`:Xo(n)?r=`>=${o}.${a}.0${t?\"-0\":\"\"}`:u?r=`>=${r}`:r=`>=${r}${t?\"-0\":\"\"}`,Xo(h)?p=\"\":Xo(E)?p=`<${+h+1}.0.0-0`:Xo(I)?p=`<${h}.${+E+1}.0-0`:v?p=`<=${h}.${E}.${I}-${v}`:t?p=`<${h}.${E}.${+I+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),r5e=(t,e,r)=>{for(let o=0;o<t.length;o++)if(!t[o].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let o=0;o<t.length;o++)if(ci(t[o].semver),t[o].semver!==sN.ANY&&t[o].semver.prerelease.length>0){let a=t[o].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var EI=_((AQt,Ez)=>{var CI=Symbol(\"SemVer ANY\"),Sy=class{static get ANY(){return CI}constructor(e,r){if(r=hz(r),e instanceof Sy){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\\s+/).join(\" \"),aN(\"comparator\",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===CI?this.value=\"\":this.value=this.operator+this.semver.version,aN(\"comp\",this)}parse(e){let r=this.options.loose?gz[dz.COMPARATORLOOSE]:gz[dz.COMPARATOR],o=e.match(r);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:\"\",this.operator===\"=\"&&(this.operator=\"\"),o[2]?this.semver=new mz(o[2],this.options.loose):this.semver=CI}toString(){return this.value}test(e){if(aN(\"Comparator.test\",e,this.options.loose),this.semver===CI||e===CI)return!0;if(typeof e==\"string\")try{e=new mz(e,this.options)}catch{return!1}return oN(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Sy))throw new TypeError(\"a Comparator is required\");return this.operator===\"\"?this.value===\"\"?!0:new yz(e.value,r).test(this.value):e.operator===\"\"?e.value===\"\"?!0:new yz(this.value,r).test(e.semver):(r=hz(r),r.includePrerelease&&(this.value===\"<0.0.0-0\"||e.value===\"<0.0.0-0\")||!r.includePrerelease&&(this.value.startsWith(\"<0.0.0\")||e.value.startsWith(\"<0.0.0\"))?!1:!!(this.operator.startsWith(\">\")&&e.operator.startsWith(\">\")||this.operator.startsWith(\"<\")&&e.operator.startsWith(\"<\")||this.semver.version===e.semver.version&&this.operator.includes(\"=\")&&e.operator.includes(\"=\")||oN(this.semver,\"<\",e.semver,r)&&this.operator.startsWith(\">\")&&e.operator.startsWith(\"<\")||oN(this.semver,\">\",e.semver,r)&&this.operator.startsWith(\"<\")&&e.operator.startsWith(\">\")))}};Ez.exports=Sy;var hz=hP(),{safeRe:gz,t:dz}=By(),oN=eN(),aN=gI(),mz=Po(),yz=Ml()});var wI=_((fQt,Cz)=>{var n5e=Ml(),i5e=(t,e,r)=>{try{e=new n5e(e,r)}catch{return!1}return e.test(t)};Cz.exports=i5e});var Iz=_((pQt,wz)=>{var s5e=Ml(),o5e=(t,e)=>new s5e(t,e).set.map(r=>r.map(o=>o.value).join(\" \").trim().split(\" \"));wz.exports=o5e});var vz=_((hQt,Bz)=>{var a5e=Po(),l5e=Ml(),c5e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new l5e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===-1)&&(o=u,a=new a5e(o,r))}),o};Bz.exports=c5e});var Pz=_((gQt,Dz)=>{var u5e=Po(),A5e=Ml(),f5e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new A5e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===1)&&(o=u,a=new u5e(o,r))}),o};Dz.exports=f5e});var bz=_((dQt,xz)=>{var lN=Po(),p5e=Ml(),Sz=dI(),h5e=(t,e)=>{t=new p5e(t,e);let r=new lN(\"0.0.0\");if(t.test(r)||(r=new lN(\"0.0.0-0\"),t.test(r)))return r;r=null;for(let o=0;o<t.set.length;++o){let a=t.set[o],n=null;a.forEach(u=>{let A=new lN(u.semver.version);switch(u.operator){case\">\":A.prerelease.length===0?A.patch++:A.prerelease.push(0),A.raw=A.format();case\"\":case\">=\":(!n||Sz(A,n))&&(n=A);break;case\"<\":case\"<=\":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),n&&(!r||Sz(r,n))&&(r=n)}return r&&t.test(r)?r:null};xz.exports=h5e});var Qz=_((mQt,kz)=>{var g5e=Ml(),d5e=(t,e)=>{try{return new g5e(t,e).range||\"*\"}catch{return null}};kz.exports=d5e});var DP=_((yQt,Nz)=>{var m5e=Po(),Rz=EI(),{ANY:y5e}=Rz,E5e=Ml(),C5e=wI(),Fz=dI(),Tz=yP(),w5e=CP(),I5e=EP(),B5e=(t,e,r,o)=>{t=new m5e(t,o),e=new E5e(e,o);let a,n,u,A,p;switch(r){case\">\":a=Fz,n=w5e,u=Tz,A=\">\",p=\">=\";break;case\"<\":a=Tz,n=I5e,u=Fz,A=\"<\",p=\"<=\";break;default:throw new TypeError('Must provide a hilo val of \"<\" or \">\"')}if(C5e(t,e,o))return!1;for(let h=0;h<e.set.length;++h){let E=e.set[h],I=null,v=null;if(E.forEach(b=>{b.semver===y5e&&(b=new Rz(\">=0.0.0\")),I=I||b,v=v||b,a(b.semver,I.semver,o)?I=b:u(b.semver,v.semver,o)&&(v=b)}),I.operator===A||I.operator===p||(!v.operator||v.operator===A)&&n(t,v.semver))return!1;if(v.operator===p&&u(t,v.semver))return!1}return!0};Nz.exports=B5e});var Mz=_((EQt,Lz)=>{var v5e=DP(),D5e=(t,e,r)=>v5e(t,e,\">\",r);Lz.exports=D5e});var Uz=_((CQt,Oz)=>{var P5e=DP(),S5e=(t,e,r)=>P5e(t,e,\"<\",r);Oz.exports=S5e});var jz=_((wQt,Hz)=>{var _z=Ml(),x5e=(t,e,r)=>(t=new _z(t,r),e=new _z(e,r),t.intersects(e,r));Hz.exports=x5e});var Gz=_((IQt,qz)=>{var b5e=wI(),k5e=Ll();qz.exports=(t,e,r)=>{let o=[],a=null,n=null,u=t.sort((E,I)=>k5e(E,I,r));for(let E of u)b5e(E,e,r)?(n=E,a||(a=E)):(n&&o.push([a,n]),n=null,a=null);a&&o.push([a,null]);let A=[];for(let[E,I]of o)E===I?A.push(E):!I&&E===u[0]?A.push(\"*\"):I?E===u[0]?A.push(`<=${I}`):A.push(`${E} - ${I}`):A.push(`>=${E}`);let p=A.join(\" || \"),h=typeof e.raw==\"string\"?e.raw:String(e);return p.length<h.length?p:e}});var zz=_((BQt,Jz)=>{var Yz=Ml(),uN=EI(),{ANY:cN}=uN,II=wI(),AN=Ll(),Q5e=(t,e,r={})=>{if(t===e)return!0;t=new Yz(t,r),e=new Yz(e,r);let o=!1;e:for(let a of t.set){for(let n of e.set){let u=T5e(a,n,r);if(o=o||u!==null,u)continue e}if(o)return!1}return!0},F5e=[new uN(\">=0.0.0-0\")],Wz=[new uN(\">=0.0.0\")],T5e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===cN){if(e.length===1&&e[0].semver===cN)return!0;r.includePrerelease?t=F5e:t=Wz}if(e.length===1&&e[0].semver===cN){if(r.includePrerelease)return!0;e=Wz}let o=new Set,a,n;for(let b of t)b.operator===\">\"||b.operator===\">=\"?a=Vz(a,b,r):b.operator===\"<\"||b.operator===\"<=\"?n=Kz(n,b,r):o.add(b.semver);if(o.size>1)return null;let u;if(a&&n){if(u=AN(a.semver,n.semver,r),u>0)return null;if(u===0&&(a.operator!==\">=\"||n.operator!==\"<=\"))return null}for(let b of o){if(a&&!II(b,String(a),r)||n&&!II(b,String(n),r))return null;for(let C of e)if(!II(b,String(C),r))return!1;return!0}let A,p,h,E,I=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;I&&I.prerelease.length===1&&n.operator===\"<\"&&I.prerelease[0]===0&&(I=!1);for(let b of e){if(E=E||b.operator===\">\"||b.operator===\">=\",h=h||b.operator===\"<\"||b.operator===\"<=\",a){if(v&&b.semver.prerelease&&b.semver.prerelease.length&&b.semver.major===v.major&&b.semver.minor===v.minor&&b.semver.patch===v.patch&&(v=!1),b.operator===\">\"||b.operator===\">=\"){if(A=Vz(a,b,r),A===b&&A!==a)return!1}else if(a.operator===\">=\"&&!II(a.semver,String(b),r))return!1}if(n){if(I&&b.semver.prerelease&&b.semver.prerelease.length&&b.semver.major===I.major&&b.semver.minor===I.minor&&b.semver.patch===I.patch&&(I=!1),b.operator===\"<\"||b.operator===\"<=\"){if(p=Kz(n,b,r),p===b&&p!==n)return!1}else if(n.operator===\"<=\"&&!II(n.semver,String(b),r))return!1}if(!b.operator&&(n||a)&&u!==0)return!1}return!(a&&h&&!n&&u!==0||n&&E&&!a&&u!==0||v||I)},Vz=(t,e,r)=>{if(!t)return e;let o=AN(t.semver,e.semver,r);return o>0?t:o<0||e.operator===\">\"&&t.operator===\">=\"?e:t},Kz=(t,e,r)=>{if(!t)return e;let o=AN(t.semver,e.semver,r);return o<0?t:o>0||e.operator===\"<\"&&t.operator===\"<=\"?e:t};Jz.exports=Q5e});var zn=_((vQt,$z)=>{var fN=By(),Xz=hI(),R5e=Po(),Zz=XR(),N5e=id(),L5e=yJ(),M5e=CJ(),O5e=BJ(),U5e=PJ(),_5e=xJ(),H5e=kJ(),j5e=FJ(),q5e=RJ(),G5e=Ll(),Y5e=OJ(),W5e=_J(),V5e=mP(),K5e=GJ(),J5e=WJ(),z5e=dI(),X5e=yP(),Z5e=ZR(),$5e=$R(),e9e=EP(),t9e=CP(),r9e=eN(),n9e=tz(),i9e=EI(),s9e=Ml(),o9e=wI(),a9e=Iz(),l9e=vz(),c9e=Pz(),u9e=bz(),A9e=Qz(),f9e=DP(),p9e=Mz(),h9e=Uz(),g9e=jz(),d9e=Gz(),m9e=zz();$z.exports={parse:N5e,valid:L5e,clean:M5e,inc:O5e,diff:U5e,major:_5e,minor:H5e,patch:j5e,prerelease:q5e,compare:G5e,rcompare:Y5e,compareLoose:W5e,compareBuild:V5e,sort:K5e,rsort:J5e,gt:z5e,lt:X5e,eq:Z5e,neq:$5e,gte:e9e,lte:t9e,cmp:r9e,coerce:n9e,Comparator:i9e,Range:s9e,satisfies:o9e,toComparators:a9e,maxSatisfying:l9e,minSatisfying:c9e,minVersion:u9e,validRange:A9e,outside:f9e,gtr:p9e,ltr:h9e,intersects:g9e,simplifyRange:d9e,subset:m9e,SemVer:R5e,re:fN.re,src:fN.src,tokens:fN.t,SEMVER_SPEC_VERSION:Xz.SEMVER_SPEC_VERSION,RELEASE_TYPES:Xz.RELEASE_TYPES,compareIdentifiers:Zz.compareIdentifiers,rcompareIdentifiers:Zz.rcompareIdentifiers}});var tX=_((DQt,eX)=>{\"use strict\";function y9e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function cd(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,cd)}y9e(cd,Error);cd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function E9e(t,e){e=e!==void 0?e:{};var r={},o={Expression:y},a=y,n=\"|\",u=Re(\"|\",!1),A=\"&\",p=Re(\"&\",!1),h=\"^\",E=Re(\"^\",!1),I=function(Z,ie){return!!ie.reduce((Se,Ne)=>{switch(Ne[1]){case\"|\":return Se|Ne[3];case\"&\":return Se&Ne[3];case\"^\":return Se^Ne[3]}},Z)},v=\"!\",b=Re(\"!\",!1),C=function(Z){return!Z},T=\"(\",L=Re(\"(\",!1),U=\")\",J=Re(\")\",!1),te=function(Z){return Z},le=/^[^ \\t\\n\\r()!|&\\^]/,pe=Qe([\" \",\"\t\",`\n`,\"\\r\",\"(\",\")\",\"!\",\"|\",\"&\",\"^\"],!0,!1),Ae=function(Z){return e.queryPattern.test(Z)},ye=function(Z){return e.checkFn(Z)},ae=Te(\"whitespace\"),we=/^[ \\t\\n\\r]/,Pe=Qe([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),g=0,Ee=0,De=[{line:1,column:1}],ce=0,ne=[],ee=0,Ie;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function ke(){return t.substring(Ee,g)}function ht(){return He(Ee,g)}function H(Z,ie){throw ie=ie!==void 0?ie:He(Ee,g),S([Te(Z)],t.substring(Ee,g),ie)}function lt(Z,ie){throw ie=ie!==void 0?ie:He(Ee,g),w(Z,ie)}function Re(Z,ie){return{type:\"literal\",text:Z,ignoreCase:ie}}function Qe(Z,ie,Se){return{type:\"class\",parts:Z,inverted:ie,ignoreCase:Se}}function be(){return{type:\"any\"}}function _e(){return{type:\"end\"}}function Te(Z){return{type:\"other\",description:Z}}function Je(Z){var ie=De[Z],Se;if(ie)return ie;for(Se=Z-1;!De[Se];)Se--;for(ie=De[Se],ie={line:ie.line,column:ie.column};Se<Z;)t.charCodeAt(Se)===10?(ie.line++,ie.column=1):ie.column++,Se++;return De[Z]=ie,ie}function He(Z,ie){var Se=Je(Z),Ne=Je(ie);return{start:{offset:Z,line:Se.line,column:Se.column},end:{offset:ie,line:Ne.line,column:Ne.column}}}function x(Z){g<ce||(g>ce&&(ce=g,ne=[]),ne.push(Z))}function w(Z,ie){return new cd(Z,null,null,ie)}function S(Z,ie,Se){return new cd(cd.buildMessage(Z,ie),Z,ie,Se)}function y(){var Z,ie,Se,Ne,ot,dt,jt,$t;if(Z=g,ie=F(),ie!==r){for(Se=[],Ne=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&x(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&x(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&x(E)))),dt!==r?(jt=X(),jt!==r?($t=F(),$t!==r?(ot=[ot,dt,jt,$t],Ne=ot):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Ne!==r;)Se.push(Ne),Ne=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&x(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&x(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&x(E)))),dt!==r?(jt=X(),jt!==r?($t=F(),$t!==r?(ot=[ot,dt,jt,$t],Ne=ot):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Se!==r?(Ee=Z,ie=I(ie,Se),Z=ie):(g=Z,Z=r)}else g=Z,Z=r;return Z}function F(){var Z,ie,Se,Ne,ot,dt;return Z=g,t.charCodeAt(g)===33?(ie=v,g++):(ie=r,ee===0&&x(b)),ie!==r?(Se=F(),Se!==r?(Ee=Z,ie=C(Se),Z=ie):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=g,t.charCodeAt(g)===40?(ie=T,g++):(ie=r,ee===0&&x(L)),ie!==r?(Se=X(),Se!==r?(Ne=y(),Ne!==r?(ot=X(),ot!==r?(t.charCodeAt(g)===41?(dt=U,g++):(dt=r,ee===0&&x(J)),dt!==r?(Ee=Z,ie=te(Ne),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=z())),Z}function z(){var Z,ie,Se,Ne,ot;if(Z=g,ie=X(),ie!==r){if(Se=g,Ne=[],le.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&x(pe)),ot!==r)for(;ot!==r;)Ne.push(ot),le.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&x(pe));else Ne=r;Ne!==r?Se=t.substring(Se,g):Se=Ne,Se!==r?(Ee=g,Ne=Ae(Se),Ne?Ne=void 0:Ne=r,Ne!==r?(Ee=Z,ie=ye(Se),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)}else g=Z,Z=r;return Z}function X(){var Z,ie;for(ee++,Z=[],we.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&x(Pe));ie!==r;)Z.push(ie),we.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&x(Pe));return ee--,Z===r&&(ie=r,ee===0&&x(ae)),Z}if(Ie=a(),Ie!==r&&g===t.length)return Ie;throw Ie!==r&&g<t.length&&x(_e()),S(ne,ce<t.length?t.charAt(ce):null,ce<t.length?He(ce,ce+1):He(ce,ce))}eX.exports={SyntaxError:cd,parse:E9e}});var rX=_(PP=>{var{parse:C9e}=tX();PP.makeParser=(t=/[a-z]+/)=>(e,r)=>C9e(e,{queryPattern:t,checkFn:r});PP.parse=PP.makeParser()});var iX=_((SQt,nX)=>{\"use strict\";nX.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var pN=_((xQt,oX)=>{var BI=iX(),sX={};for(let t of Object.keys(BI))sX[BI[t]]=t;var Ar={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};oX.exports=Ar;for(let t of Object.keys(Ar)){if(!(\"channels\"in Ar[t]))throw new Error(\"missing channels property: \"+t);if(!(\"labels\"in Ar[t]))throw new Error(\"missing channel labels property: \"+t);if(Ar[t].labels.length!==Ar[t].channels)throw new Error(\"channel and label counts mismatch: \"+t);let{channels:e,labels:r}=Ar[t];delete Ar[t].channels,delete Ar[t].labels,Object.defineProperty(Ar[t],\"channels\",{value:e}),Object.defineProperty(Ar[t],\"labels\",{value:r})}Ar.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(e,r,o),n=Math.max(e,r,o),u=n-a,A,p;n===a?A=0:e===n?A=(r-o)/u:r===n?A=2+(o-e)/u:o===n&&(A=4+(e-r)/u),A=Math.min(A*60,360),A<0&&(A+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=u/(n+a):p=u/(2-n-a),[A,p*100,h*100]};Ar.rgb.hsv=function(t){let e,r,o,a,n,u=t[0]/255,A=t[1]/255,p=t[2]/255,h=Math.max(u,A,p),E=h-Math.min(u,A,p),I=function(v){return(h-v)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=I(u),r=I(A),o=I(p),u===h?a=o-r:A===h?a=1/3+e-o:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};Ar.rgb.hwb=function(t){let e=t[0],r=t[1],o=t[2],a=Ar.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,o));return o=1-1/255*Math.max(e,Math.max(r,o)),[a,n*100,o*100]};Ar.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(1-e,1-r,1-o),n=(1-e-a)/(1-a)||0,u=(1-r-a)/(1-a)||0,A=(1-o-a)/(1-a)||0;return[n*100,u*100,A*100,a*100]};function w9e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Ar.rgb.keyword=function(t){let e=sX[t];if(e)return e;let r=1/0,o;for(let a of Object.keys(BI)){let n=BI[a],u=w9e(t,n);u<r&&(r=u,o=a)}return o};Ar.keyword.rgb=function(t){return BI[t]};Ar.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;let a=e*.4124+r*.3576+o*.1805,n=e*.2126+r*.7152+o*.0722,u=e*.0193+r*.1192+o*.9505;return[a*100,n*100,u*100]};Ar.rgb.lab=function(t){let e=Ar.rgb.xyz(t),r=e[0],o=e[1],a=e[2];r/=95.047,o/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*o-16,u=500*(r-o),A=200*(o-a);return[n,u,A]};Ar.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a,n,u;if(r===0)return u=o*255,[u,u,u];o<.5?a=o*(1+r):a=o+r-o*r;let A=2*o-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?u=A+(a-A)*6*n:2*n<1?u=a:3*n<2?u=A+(a-A)*(2/3-n)*6:u=A,p[h]=u*255;return p};Ar.hsl.hsv=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=r,n=Math.max(o,.01);o*=2,r*=o<=1?o:2-o,a*=n<=1?n:2-n;let u=(o+r)/2,A=o===0?2*a/(n+a):2*r/(o+r);return[e,A*100,u*100]};Ar.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,o=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),u=255*o*(1-r),A=255*o*(1-r*n),p=255*o*(1-r*(1-n));switch(o*=255,a){case 0:return[o,p,u];case 1:return[A,o,u];case 2:return[u,o,p];case 3:return[u,A,o];case 4:return[p,u,o];case 5:return[o,u,A]}};Ar.hsv.hsl=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=Math.max(o,.01),n,u;u=(2-r)*o;let A=(2-r)*a;return n=r*a,n/=A<=1?A:2-A,n=n||0,u/=2,[e,n*100,u*100]};Ar.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a=r+o,n;a>1&&(r/=a,o/=a);let u=Math.floor(6*e),A=1-o;n=6*e-u,(u&1)!==0&&(n=1-n);let p=r+n*(A-r),h,E,I;switch(u){default:case 6:case 0:h=A,E=p,I=r;break;case 1:h=p,E=A,I=r;break;case 2:h=r,E=A,I=p;break;case 3:h=r,E=p,I=A;break;case 4:h=p,E=r,I=A;break;case 5:h=A,E=r,I=p;break}return[h*255,E*255,I*255]};Ar.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),u=1-Math.min(1,r*(1-a)+a),A=1-Math.min(1,o*(1-a)+a);return[n*255,u*255,A*255]};Ar.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a,n,u;return a=e*3.2406+r*-1.5372+o*-.4986,n=e*-.9689+r*1.8758+o*.0415,u=e*.0557+r*-.204+o*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),u=Math.min(Math.max(0,u),1),[a*255,n*255,u*255]};Ar.xyz.lab=function(t){let e=t[0],r=t[1],o=t[2];e/=95.047,r/=100,o/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let a=116*r-16,n=500*(e-r),u=200*(r-o);return[a,n,u]};Ar.lab.xyz=function(t){let e=t[0],r=t[1],o=t[2],a,n,u;n=(e+16)/116,a=r/500+n,u=n-o/200;let A=n**3,p=a**3,h=u**3;return n=A>.008856?A:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,u=h>.008856?h:(u-16/116)/7.787,a*=95.047,n*=100,u*=108.883,[a,n,u]};Ar.lab.lch=function(t){let e=t[0],r=t[1],o=t[2],a;a=Math.atan2(o,r)*360/2/Math.PI,a<0&&(a+=360);let u=Math.sqrt(r*r+o*o);return[e,u,a]};Ar.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),u=r*Math.sin(a);return[e,n,u]};Ar.rgb.ansi16=function(t,e=null){let[r,o,a]=t,n=e===null?Ar.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let u=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(r/255));return n===2&&(u+=60),u};Ar.hsv.ansi16=function(t){return Ar.rgb.ansi16(Ar.hsv.rgb(t),t[2])};Ar.rgb.ansi256=function(t){let e=t[0],r=t[1],o=t[2];return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)};Ar.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,o=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[o,a,n]};Ar.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,o=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,o,a]};Ar.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return\"000000\".substring(r.length)+r};Ar.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split(\"\").map(A=>A+A).join(\"\"));let o=parseInt(r,16),a=o>>16&255,n=o>>8&255,u=o&255;return[a,n,u]};Ar.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.max(Math.max(e,r),o),n=Math.min(Math.min(e,r),o),u=a-n,A,p;return u<1?A=n/(1-u):A=0,u<=0?p=0:a===e?p=(r-o)/u%6:a===r?p=2+(o-e)/u:p=4+(e-r)/u,p/=6,p%=1,[p*360,u*100,A*100]};Ar.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=r<.5?2*e*r:2*e*(1-r),a=0;return o<1&&(a=(r-.5*o)/(1-o)),[t[0],o*100,a*100]};Ar.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=e*r,a=0;return o<1&&(a=(r-o)/(1-o)),[t[0],o*100,a*100]};Ar.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100;if(r===0)return[o*255,o*255,o*255];let a=[0,0,0],n=e%1*6,u=n%1,A=1-u,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=u,a[2]=0;break;case 1:a[0]=A,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=u;break;case 3:a[0]=0,a[1]=A,a[2]=1;break;case 4:a[0]=u,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=A}return p=(1-r)*o,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};Ar.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e),a=0;return o>0&&(a=e/o),[t[0],a*100,o*100]};Ar.hcg.hsl=function(t){let e=t[1]/100,o=t[2]/100*(1-e)+.5*e,a=0;return o>0&&o<.5?a=e/(2*o):o>=.5&&o<1&&(a=e/(2*(1-o))),[t[0],a*100,o*100]};Ar.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e);return[t[0],(o-e)*100,(1-o)*100]};Ar.hwb.hcg=function(t){let e=t[1]/100,o=1-t[2]/100,a=o-e,n=0;return a<1&&(n=(o-a)/(1-a)),[t[0],a*100,n*100]};Ar.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Ar.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Ar.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Ar.gray.hsl=function(t){return[0,0,t[0]]};Ar.gray.hsv=Ar.gray.hsl;Ar.gray.hwb=function(t){return[0,100,t[0]]};Ar.gray.cmyk=function(t){return[0,0,0,t[0]]};Ar.gray.lab=function(t){return[t[0],0,0]};Ar.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(o.length)+o};Ar.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var lX=_((bQt,aX)=>{var SP=pN();function I9e(){let t={},e=Object.keys(SP);for(let r=e.length,o=0;o<r;o++)t[e[o]]={distance:-1,parent:null};return t}function B9e(t){let e=I9e(),r=[t];for(e[t].distance=0;r.length;){let o=r.pop(),a=Object.keys(SP[o]);for(let n=a.length,u=0;u<n;u++){let A=a[u],p=e[A];p.distance===-1&&(p.distance=e[o].distance+1,p.parent=o,r.unshift(A))}}return e}function v9e(t,e){return function(r){return e(t(r))}}function D9e(t,e){let r=[e[t].parent,t],o=SP[e[t].parent][t],a=e[t].parent;for(;e[a].parent;)r.unshift(e[a].parent),o=v9e(SP[e[a].parent][a],o),a=e[a].parent;return o.conversion=r,o}aX.exports=function(t){let e=B9e(t),r={},o=Object.keys(e);for(let a=o.length,n=0;n<a;n++){let u=o[n];e[u].parent!==null&&(r[u]=D9e(u,e))}return r}});var uX=_((kQt,cX)=>{var hN=pN(),P9e=lX(),xy={},S9e=Object.keys(hN);function x9e(t){let e=function(...r){let o=r[0];return o==null?o:(o.length>1&&(r=o),t(r))};return\"conversion\"in t&&(e.conversion=t.conversion),e}function b9e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.length>1&&(r=o);let a=t(r);if(typeof a==\"object\")for(let n=a.length,u=0;u<n;u++)a[u]=Math.round(a[u]);return a};return\"conversion\"in t&&(e.conversion=t.conversion),e}S9e.forEach(t=>{xy[t]={},Object.defineProperty(xy[t],\"channels\",{value:hN[t].channels}),Object.defineProperty(xy[t],\"labels\",{value:hN[t].labels});let e=P9e(t);Object.keys(e).forEach(o=>{let a=e[o];xy[t][o]=b9e(a),xy[t][o].raw=x9e(a)})});cX.exports=xy});var vI=_((QQt,gX)=>{\"use strict\";var AX=(t,e)=>(...r)=>`\\x1B[${t(...r)+e}m`,fX=(t,e)=>(...r)=>{let o=t(...r);return`\\x1B[${38+e};5;${o}m`},pX=(t,e)=>(...r)=>{let o=t(...r);return`\\x1B[${38+e};2;${o[0]};${o[1]};${o[2]}m`},xP=t=>t,hX=(t,e,r)=>[t,e,r],by=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let o=r();return Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0}),o},enumerable:!0,configurable:!0})},gN,ky=(t,e,r,o)=>{gN===void 0&&(gN=uX());let a=o?10:0,n={};for(let[u,A]of Object.entries(gN)){let p=u===\"ansi16\"?\"ansi\":u;u===e?n[p]=t(r,a):typeof A==\"object\"&&(n[p]=t(A[e],a))}return n};function k9e(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,o]of Object.entries(e)){for(let[a,n]of Object.entries(o))e[a]={open:`\\x1B[${n[0]}m`,close:`\\x1B[${n[1]}m`},o[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:o,enumerable:!1})}return Object.defineProperty(e,\"codes\",{value:t,enumerable:!1}),e.color.close=\"\\x1B[39m\",e.bgColor.close=\"\\x1B[49m\",by(e.color,\"ansi\",()=>ky(AX,\"ansi16\",xP,!1)),by(e.color,\"ansi256\",()=>ky(fX,\"ansi256\",xP,!1)),by(e.color,\"ansi16m\",()=>ky(pX,\"rgb\",hX,!1)),by(e.bgColor,\"ansi\",()=>ky(AX,\"ansi16\",xP,!0)),by(e.bgColor,\"ansi256\",()=>ky(fX,\"ansi256\",xP,!0)),by(e.bgColor,\"ansi16m\",()=>ky(pX,\"rgb\",hX,!0)),e}Object.defineProperty(gX,\"exports\",{enumerable:!0,get:k9e})});var mX=_((FQt,dX)=>{\"use strict\";dX.exports=(t,e=process.argv)=>{let r=t.startsWith(\"-\")?\"\":t.length===1?\"-\":\"--\",o=e.indexOf(r+t),a=e.indexOf(\"--\");return o!==-1&&(a===-1||o<a)}});var yN=_((TQt,EX)=>{\"use strict\";var Q9e=Be(\"os\"),yX=Be(\"tty\"),Ol=mX(),{env:ls}=process,Kp;Ol(\"no-color\")||Ol(\"no-colors\")||Ol(\"color=false\")||Ol(\"color=never\")?Kp=0:(Ol(\"color\")||Ol(\"colors\")||Ol(\"color=true\")||Ol(\"color=always\"))&&(Kp=1);\"FORCE_COLOR\"in ls&&(ls.FORCE_COLOR===\"true\"?Kp=1:ls.FORCE_COLOR===\"false\"?Kp=0:Kp=ls.FORCE_COLOR.length===0?1:Math.min(parseInt(ls.FORCE_COLOR,10),3));function dN(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function mN(t,e){if(Kp===0)return 0;if(Ol(\"color=16m\")||Ol(\"color=full\")||Ol(\"color=truecolor\"))return 3;if(Ol(\"color=256\"))return 2;if(t&&!e&&Kp===void 0)return 0;let r=Kp||0;if(ls.TERM===\"dumb\")return r;if(process.platform===\"win32\"){let o=Q9e.release().split(\".\");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if(\"CI\"in ls)return[\"TRAVIS\",\"CIRCLECI\",\"APPVEYOR\",\"GITLAB_CI\"].some(o=>o in ls)||ls.CI_NAME===\"codeship\"?1:r;if(\"TEAMCITY_VERSION\"in ls)return/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(ls.TEAMCITY_VERSION)?1:0;if(\"GITHUB_ACTIONS\"in ls)return 1;if(ls.COLORTERM===\"truecolor\")return 3;if(\"TERM_PROGRAM\"in ls){let o=parseInt((ls.TERM_PROGRAM_VERSION||\"\").split(\".\")[0],10);switch(ls.TERM_PROGRAM){case\"iTerm.app\":return o>=3?3:2;case\"Apple_Terminal\":return 2}}return/-256(color)?$/i.test(ls.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ls.TERM)||\"COLORTERM\"in ls?1:r}function F9e(t){let e=mN(t,t&&t.isTTY);return dN(e)}EX.exports={supportsColor:F9e,stdout:dN(mN(!0,yX.isatty(1))),stderr:dN(mN(!0,yX.isatty(2)))}});var wX=_((RQt,CX)=>{\"use strict\";var T9e=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u=\"\";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},R9e=(t,e,r,o)=>{let a=0,n=\"\";do{let u=t[o-1]===\"\\r\";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\\r\n`:`\n`)+r,a=o+1,o=t.indexOf(`\n`,a)}while(o!==-1);return n+=t.substr(a),n};CX.exports={stringReplaceAll:T9e,stringEncaseCRLFWithFirstIndex:R9e}});var PX=_((NQt,DX)=>{\"use strict\";var N9e=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,IX=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,L9e=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,M9e=/\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.)|([^\\\\])/gi,O9e=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function vX(t){let e=t[0]===\"u\",r=t[1]===\"{\";return e&&!r&&t.length===5||t[0]===\"x\"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):O9e.get(t)||t}function U9e(t,e){let r=[],o=e.trim().split(/\\s*,\\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(L9e))r.push(a[2].replace(M9e,(A,p,h)=>p?vX(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function _9e(t){IX.lastIndex=0;let e=[],r;for(;(r=IX.exec(t))!==null;){let o=r[1];if(r[2]){let a=U9e(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function BX(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}DX.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(N9e,(n,u,A,p,h,E)=>{if(u)a.push(vX(u));else if(p){let I=a.join(\"\");a=[],o.push(r.length===0?I:BX(t,r)(I)),r.push({inverse:A,styles:_9e(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");o.push(BX(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),o.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return o.join(\"\")}});var vN=_((LQt,kX)=>{\"use strict\";var DI=vI(),{stdout:CN,stderr:wN}=yN(),{stringReplaceAll:H9e,stringEncaseCRLFWithFirstIndex:j9e}=wX(),SX=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],Qy=Object.create(null),q9e=(t,e={})=>{if(e.level>3||e.level<0)throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=CN?CN.level:0;t.level=e.level===void 0?r:e.level},IN=class{constructor(e){return xX(e)}},xX=t=>{let e={};return q9e(e,t),e.template=(...r)=>W9e(e.template,...r),Object.setPrototypeOf(e,bP.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=IN,e.template};function bP(t){return xX(t)}for(let[t,e]of Object.entries(DI))Qy[t]={get(){let r=kP(this,BN(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Qy.visible={get(){let t=kP(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var bX=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of bX)Qy[t]={get(){let{level:e}=this;return function(...r){let o=BN(DI.color[SX[e]][t](...r),DI.color.close,this._styler);return kP(this,o,this._isEmpty)}}};for(let t of bX){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);Qy[e]={get(){let{level:r}=this;return function(...o){let a=BN(DI.bgColor[SX[r]][t](...o),DI.bgColor.close,this._styler);return kP(this,a,this._isEmpty)}}}}var G9e=Object.defineProperties(()=>{},{...Qy,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),BN=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},kP=(t,e,r)=>{let o=(...a)=>Y9e(o,a.length===1?\"\"+a[0]:a.join(\" \"));return o.__proto__=G9e,o._generator=t,o._styler=e,o._isEmpty=r,o},Y9e=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=H9e(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=j9e(e,a,o,n)),o+e+a},EN,W9e=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(\" \");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return EN===void 0&&(EN=PX()),EN(t,a.join(\"\"))};Object.defineProperties(bP.prototype,Qy);var PI=bP();PI.supportsColor=CN;PI.stderr=bP({level:wN?wN.level:0});PI.stderr.supportsColor=wN;PI.Level={None:0,Basic:1,Ansi256:2,TrueColor:3,0:\"None\",1:\"Basic\",2:\"Ansi256\",3:\"TrueColor\"};kX.exports=PI});var QP=_(Ul=>{\"use strict\";Ul.isInteger=t=>typeof t==\"number\"?Number.isInteger(t):typeof t==\"string\"&&t.trim()!==\"\"?Number.isInteger(Number(t)):!1;Ul.find=(t,e)=>t.nodes.find(r=>r.type===e);Ul.exceedsLimit=(t,e,r=1,o)=>o===!1||!Ul.isInteger(t)||!Ul.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=o;Ul.escapeNode=(t,e=0,r)=>{let o=t.nodes[e];!o||(r&&o.type===r||o.type===\"open\"||o.type===\"close\")&&o.escaped!==!0&&(o.value=\"\\\\\"+o.value,o.escaped=!0)};Ul.encloseBrace=t=>t.type!==\"brace\"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;Ul.isInvalidBrace=t=>t.type!==\"brace\"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Ul.isOpenOrClose=t=>t.type===\"open\"||t.type===\"close\"?!0:t.open===!0||t.close===!0;Ul.reduce=t=>t.reduce((e,r)=>(r.type===\"text\"&&e.push(r.value),r.type===\"range\"&&(r.type=\"text\"),e),[]);Ul.flatten=(...t)=>{let e=[],r=o=>{for(let a=0;a<o.length;a++){let n=o[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var FP=_((OQt,FX)=>{\"use strict\";var QX=QP();FX.exports=(t,e={})=>{let r=(o,a={})=>{let n=e.escapeInvalid&&QX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=\"\";if(o.value)return(n||u)&&QX.isOpenOrClose(o)?\"\\\\\"+o.value:o.value;if(o.value)return o.value;if(o.nodes)for(let p of o.nodes)A+=r(p);return A};return r(t)}});var RX=_((UQt,TX)=>{\"use strict\";TX.exports=function(t){return typeof t==\"number\"?t-t===0:typeof t==\"string\"&&t.trim()!==\"\"?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var qX=_((_Qt,jX)=>{\"use strict\";var NX=RX(),ud=(t,e,r)=>{if(NX(t)===!1)throw new TypeError(\"toRegexRange: expected the first argument to be a number\");if(e===void 0||t===e)return String(t);if(NX(e)===!1)throw new TypeError(\"toRegexRange: expected the second argument to be a number.\");let o={relaxZeros:!0,...r};typeof o.strictZeros==\"boolean\"&&(o.relaxZeros=o.strictZeros===!1);let a=String(o.relaxZeros),n=String(o.shorthand),u=String(o.capture),A=String(o.wrap),p=t+\":\"+e+\"=\"+a+n+u+A;if(ud.cache.hasOwnProperty(p))return ud.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let T=t+\"|\"+e;return o.capture?`(${T})`:o.wrap===!1?T:`(?:${T})`}let I=HX(t)||HX(e),v={min:t,max:e,a:h,b:E},b=[],C=[];if(I&&(v.isPadded=I,v.maxLen=String(v.max).length),h<0){let T=E<0?Math.abs(E):1;C=LX(T,Math.abs(h),v,o),h=v.a=0}return E>=0&&(b=LX(h,E,v,o)),v.negatives=C,v.positives=b,v.result=V9e(C,b,o),o.capture===!0?v.result=`(${v.result})`:o.wrap!==!1&&b.length+C.length>1&&(v.result=`(?:${v.result})`),ud.cache[p]=v,v.result};function V9e(t,e,r){let o=DN(t,e,\"-\",!1,r)||[],a=DN(e,t,\"\",!1,r)||[],n=DN(t,e,\"-?\",!0,r)||[];return o.concat(n).concat(a).join(\"|\")}function K9e(t,e){let r=1,o=1,a=OX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=OX(t,r);for(a=UX(e+1,o)-1;t<a&&a<=e;)n.add(a),o+=1,a=UX(e+1,o)-1;return n=[...n],n.sort(X9e),n}function J9e(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let o=z9e(t,e),a=o.length,n=\"\",u=0;for(let A=0;A<a;A++){let[p,h]=o[A];p===h?n+=p:p!==\"0\"||h!==\"9\"?n+=Z9e(p,h,r):u++}return u&&(n+=r.shorthand===!0?\"\\\\d\":\"[0-9]\"),{pattern:n,count:[u],digits:a}}function LX(t,e,r,o){let a=K9e(t,e),n=[],u=t,A;for(let p=0;p<a.length;p++){let h=a[p],E=J9e(String(u),String(h),o),I=\"\";if(!r.isPadded&&A&&A.pattern===E.pattern){A.count.length>1&&A.count.pop(),A.count.push(E.count[0]),A.string=A.pattern+_X(A.count),u=h+1;continue}r.isPadded&&(I=$9e(h,r,o)),E.string=I+E.pattern+_X(E.count),n.push(E),u=h+1,A=E}return n}function DN(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!MX(e,\"string\",A)&&n.push(r+A),o&&MX(e,\"string\",A)&&n.push(r+A)}return n}function z9e(t,e){let r=[];for(let o=0;o<t.length;o++)r.push([t[o],e[o]]);return r}function X9e(t,e){return t>e?1:e>t?-1:0}function MX(t,e,r){return t.some(o=>o[e]===r)}function OX(t,e){return Number(String(t).slice(0,-e)+\"9\".repeat(e))}function UX(t,e){return t-t%Math.pow(10,e)}function _X(t){let[e=0,r=\"\"]=t;return r||e>1?`{${e+(r?\",\"+r:\"\")}}`:\"\"}function Z9e(t,e,r){return`[${t}${e-t===1?\"\":\"-\"}${e}]`}function HX(t){return/^-?(0+)\\d/.test(t)}function $9e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(o){case 0:return\"\";case 1:return a?\"0?\":\"0\";case 2:return a?\"0{0,2}\":\"00\";default:return a?`0{0,${o}}`:`0{${o}}`}}ud.cache={};ud.clearCache=()=>ud.cache={};jX.exports=ud});var xN=_((HQt,XX)=>{\"use strict\";var e7e=Be(\"util\"),WX=qX(),GX=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),t7e=t=>e=>t===!0?Number(e):String(e),PN=t=>typeof t==\"number\"||typeof t==\"string\"&&t!==\"\",SI=t=>Number.isInteger(+t),SN=t=>{let e=`${t}`,r=-1;if(e[0]===\"-\"&&(e=e.slice(1)),e===\"0\")return!1;for(;e[++r]===\"0\";);return r>0},r7e=(t,e,r)=>typeof t==\"string\"||typeof e==\"string\"?!0:r.stringify===!0,n7e=(t,e,r)=>{if(e>0){let o=t[0]===\"-\"?\"-\":\"\";o&&(t=t.slice(1)),t=o+t.padStart(o?e-1:e,\"0\")}return r===!1?String(t):t},YX=(t,e)=>{let r=t[0]===\"-\"?\"-\":\"\";for(r&&(t=t.slice(1),e--);t.length<e;)t=\"0\"+t;return r?\"-\"+t:t},i7e=(t,e)=>{t.negatives.sort((u,A)=>u<A?-1:u>A?1:0),t.positives.sort((u,A)=>u<A?-1:u>A?1:0);let r=e.capture?\"\":\"?:\",o=\"\",a=\"\",n;return t.positives.length&&(o=t.positives.join(\"|\")),t.negatives.length&&(a=`-(${r}${t.negatives.join(\"|\")})`),o&&a?n=`${o}|${a}`:n=o||a,e.wrap?`(${r}${n})`:n},VX=(t,e,r,o)=>{if(r)return WX(t,e,{wrap:!1,...o});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},KX=(t,e,r)=>{if(Array.isArray(t)){let o=r.wrap===!0,a=r.capture?\"\":\"?:\";return o?`(${a}${t.join(\"|\")})`:t.join(\"|\")}return WX(t,e,r)},JX=(...t)=>new RangeError(\"Invalid range arguments: \"+e7e.inspect(...t)),zX=(t,e,r)=>{if(r.strictRanges===!0)throw JX([t,e]);return[]},s7e=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step \"${t}\" to be a number`);return[]},o7e=(t,e,r=1,o={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(o.strictRanges===!0)throw JX([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let u=a>n,A=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=SN(A)||SN(p)||SN(h),I=E?Math.max(A.length,p.length,h.length):0,v=E===!1&&r7e(t,e,o)===!1,b=o.transform||t7e(v);if(o.toRegex&&r===1)return VX(YX(t,I),YX(e,I),!0,o);let C={negatives:[],positives:[]},T=J=>C[J<0?\"negatives\":\"positives\"].push(Math.abs(J)),L=[],U=0;for(;u?a>=n:a<=n;)o.toRegex===!0&&r>1?T(a):L.push(n7e(b(a,U),I,v)),a=u?a-r:a+r,U++;return o.toRegex===!0?r>1?i7e(C,o):KX(L,null,{wrap:!1,...o}):L},a7e=(t,e,r=1,o={})=>{if(!SI(t)&&t.length>1||!SI(e)&&e.length>1)return zX(t,e,o);let a=o.transform||(v=>String.fromCharCode(v)),n=`${t}`.charCodeAt(0),u=`${e}`.charCodeAt(0),A=n>u,p=Math.min(n,u),h=Math.max(n,u);if(o.toRegex&&r===1)return VX(p,h,!1,o);let E=[],I=0;for(;A?n>=u:n<=u;)E.push(a(n,I)),n=A?n-r:n+r,I++;return o.toRegex===!0?KX(E,null,{wrap:!1,options:o}):E},TP=(t,e,r,o={})=>{if(e==null&&PN(t))return[t];if(!PN(t)||!PN(e))return zX(t,e,o);if(typeof r==\"function\")return TP(t,e,1,{transform:r});if(GX(r))return TP(t,e,0,r);let a={...o};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,SI(r)?SI(t)&&SI(e)?o7e(t,e,r,a):a7e(t,e,Math.max(Math.abs(r),1),a):r!=null&&!GX(r)?s7e(r,a):TP(t,e,1,r)};XX.exports=TP});var eZ=_((jQt,$X)=>{\"use strict\";var l7e=xN(),ZX=QP(),c7e=(t,e={})=>{let r=(o,a={})=>{let n=ZX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=n===!0||u===!0,p=e.escapeInvalid===!0?\"\\\\\":\"\",h=\"\";if(o.isOpen===!0||o.isClose===!0)return p+o.value;if(o.type===\"open\")return A?p+o.value:\"(\";if(o.type===\"close\")return A?p+o.value:\")\";if(o.type===\"comma\")return o.prev.type===\"comma\"?\"\":A?o.value:\"|\";if(o.value)return o.value;if(o.nodes&&o.ranges>0){let E=ZX.reduce(o.nodes),I=l7e(...E,{...e,wrap:!1,toRegex:!0});if(I.length!==0)return E.length>1&&I.length>1?`(${I})`:I}if(o.nodes)for(let E of o.nodes)h+=r(E,o);return h};return r(t)};$X.exports=c7e});var nZ=_((qQt,rZ)=>{\"use strict\";var u7e=xN(),tZ=FP(),Fy=QP(),Ad=(t=\"\",e=\"\",r=!1)=>{let o=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?Fy.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)o.push(Ad(n,e,r));else for(let n of e)r===!0&&typeof n==\"string\"&&(n=`{${n}}`),o.push(Array.isArray(n)?Ad(a,n,r):a+n);return Fy.flatten(o)},A7e=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,o=(a,n={})=>{a.queue=[];let u=n,A=n.queue;for(;u.type!==\"brace\"&&u.type!==\"root\"&&u.parent;)u=u.parent,A=u.queue;if(a.invalid||a.dollar){A.push(Ad(A.pop(),tZ(a,e)));return}if(a.type===\"brace\"&&a.invalid!==!0&&a.nodes.length===2){A.push(Ad(A.pop(),[\"{}\"]));return}if(a.nodes&&a.ranges>0){let I=Fy.reduce(a.nodes);if(Fy.exceedsLimit(...I,e.step,r))throw new RangeError(\"expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.\");let v=u7e(...I,e);v.length===0&&(v=tZ(a,e)),A.push(Ad(A.pop(),v)),a.nodes=[];return}let p=Fy.encloseBrace(a),h=a.queue,E=a;for(;E.type!==\"brace\"&&E.type!==\"root\"&&E.parent;)E=E.parent,h=E.queue;for(let I=0;I<a.nodes.length;I++){let v=a.nodes[I];if(v.type===\"comma\"&&a.type===\"brace\"){I===1&&h.push(\"\"),h.push(\"\");continue}if(v.type===\"close\"){A.push(Ad(A.pop(),h,p));continue}if(v.value&&v.type!==\"open\"){h.push(Ad(h.pop(),v.value));continue}v.nodes&&o(v,a)}return h};return Fy.flatten(o(t))};rZ.exports=A7e});var sZ=_((GQt,iZ)=>{\"use strict\";iZ.exports={MAX_LENGTH:1024*64,CHAR_0:\"0\",CHAR_9:\"9\",CHAR_UPPERCASE_A:\"A\",CHAR_LOWERCASE_A:\"a\",CHAR_UPPERCASE_Z:\"Z\",CHAR_LOWERCASE_Z:\"z\",CHAR_LEFT_PARENTHESES:\"(\",CHAR_RIGHT_PARENTHESES:\")\",CHAR_ASTERISK:\"*\",CHAR_AMPERSAND:\"&\",CHAR_AT:\"@\",CHAR_BACKSLASH:\"\\\\\",CHAR_BACKTICK:\"`\",CHAR_CARRIAGE_RETURN:\"\\r\",CHAR_CIRCUMFLEX_ACCENT:\"^\",CHAR_COLON:\":\",CHAR_COMMA:\",\",CHAR_DOLLAR:\"$\",CHAR_DOT:\".\",CHAR_DOUBLE_QUOTE:'\"',CHAR_EQUAL:\"=\",CHAR_EXCLAMATION_MARK:\"!\",CHAR_FORM_FEED:\"\\f\",CHAR_FORWARD_SLASH:\"/\",CHAR_HASH:\"#\",CHAR_HYPHEN_MINUS:\"-\",CHAR_LEFT_ANGLE_BRACKET:\"<\",CHAR_LEFT_CURLY_BRACE:\"{\",CHAR_LEFT_SQUARE_BRACKET:\"[\",CHAR_LINE_FEED:`\n`,CHAR_NO_BREAK_SPACE:\"\\xA0\",CHAR_PERCENT:\"%\",CHAR_PLUS:\"+\",CHAR_QUESTION_MARK:\"?\",CHAR_RIGHT_ANGLE_BRACKET:\">\",CHAR_RIGHT_CURLY_BRACE:\"}\",CHAR_RIGHT_SQUARE_BRACKET:\"]\",CHAR_SEMICOLON:\";\",CHAR_SINGLE_QUOTE:\"'\",CHAR_SPACE:\" \",CHAR_TAB:\"\t\",CHAR_UNDERSCORE:\"_\",CHAR_VERTICAL_LINE:\"|\",CHAR_ZERO_WIDTH_NOBREAK_SPACE:\"\\uFEFF\"}});var uZ=_((YQt,cZ)=>{\"use strict\";var f7e=FP(),{MAX_LENGTH:oZ,CHAR_BACKSLASH:bN,CHAR_BACKTICK:p7e,CHAR_COMMA:h7e,CHAR_DOT:g7e,CHAR_LEFT_PARENTHESES:d7e,CHAR_RIGHT_PARENTHESES:m7e,CHAR_LEFT_CURLY_BRACE:y7e,CHAR_RIGHT_CURLY_BRACE:E7e,CHAR_LEFT_SQUARE_BRACKET:aZ,CHAR_RIGHT_SQUARE_BRACKET:lZ,CHAR_DOUBLE_QUOTE:C7e,CHAR_SINGLE_QUOTE:w7e,CHAR_NO_BREAK_SPACE:I7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:B7e}=sZ(),v7e=(t,e={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");let r=e||{},o=typeof r.maxLength==\"number\"?Math.min(oZ,r.maxLength):oZ;if(t.length>o)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${o})`);let a={type:\"root\",input:t,nodes:[]},n=[a],u=a,A=a,p=0,h=t.length,E=0,I=0,v,b={},C=()=>t[E++],T=L=>{if(L.type===\"text\"&&A.type===\"dot\"&&(A.type=\"text\"),A&&A.type===\"text\"&&L.type===\"text\"){A.value+=L.value;return}return u.nodes.push(L),L.parent=u,L.prev=A,A=L,L};for(T({type:\"bos\"});E<h;)if(u=n[n.length-1],v=C(),!(v===B7e||v===I7e)){if(v===bN){T({type:\"text\",value:(e.keepEscaping?v:\"\")+C()});continue}if(v===lZ){T({type:\"text\",value:\"\\\\\"+v});continue}if(v===aZ){p++;let L=!0,U;for(;E<h&&(U=C());){if(v+=U,U===aZ){p++;continue}if(U===bN){v+=C();continue}if(U===lZ&&(p--,p===0))break}T({type:\"text\",value:v});continue}if(v===d7e){u=T({type:\"paren\",nodes:[]}),n.push(u),T({type:\"text\",value:v});continue}if(v===m7e){if(u.type!==\"paren\"){T({type:\"text\",value:v});continue}u=n.pop(),T({type:\"text\",value:v}),u=n[n.length-1];continue}if(v===C7e||v===w7e||v===p7e){let L=v,U;for(e.keepQuotes!==!0&&(v=\"\");E<h&&(U=C());){if(U===bN){v+=U+C();continue}if(U===L){e.keepQuotes===!0&&(v+=U);break}v+=U}T({type:\"text\",value:v});continue}if(v===y7e){I++;let U={type:\"brace\",open:!0,close:!1,dollar:A.value&&A.value.slice(-1)===\"$\"||u.dollar===!0,depth:I,commas:0,ranges:0,nodes:[]};u=T(U),n.push(u),T({type:\"open\",value:v});continue}if(v===E7e){if(u.type!==\"brace\"){T({type:\"text\",value:v});continue}let L=\"close\";u=n.pop(),u.close=!0,T({type:L,value:v}),I--,u=n[n.length-1];continue}if(v===h7e&&I>0){if(u.ranges>0){u.ranges=0;let L=u.nodes.shift();u.nodes=[L,{type:\"text\",value:f7e(u)}]}T({type:\"comma\",value:v}),u.commas++;continue}if(v===g7e&&I>0&&u.commas===0){let L=u.nodes;if(I===0||L.length===0){T({type:\"text\",value:v});continue}if(A.type===\"dot\"){if(u.range=[],A.value+=v,A.type=\"range\",u.nodes.length!==3&&u.nodes.length!==5){u.invalid=!0,u.ranges=0,A.type=\"text\";continue}u.ranges++,u.args=[];continue}if(A.type===\"range\"){L.pop();let U=L[L.length-1];U.value+=A.value+v,A=U,u.ranges--;continue}T({type:\"dot\",value:v});continue}T({type:\"text\",value:v})}do if(u=n.pop(),u.type!==\"root\"){u.nodes.forEach(J=>{J.nodes||(J.type===\"open\"&&(J.isOpen=!0),J.type===\"close\"&&(J.isClose=!0),J.nodes||(J.type=\"text\"),J.invalid=!0)});let L=n[n.length-1],U=L.nodes.indexOf(u);L.nodes.splice(U,1,...u.nodes)}while(n.length>0);return T({type:\"eos\"}),a};cZ.exports=v7e});var pZ=_((WQt,fZ)=>{\"use strict\";var AZ=FP(),D7e=eZ(),P7e=nZ(),S7e=uZ(),rl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let o of t){let a=rl.create(o,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(rl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};rl.parse=(t,e={})=>S7e(t,e);rl.stringify=(t,e={})=>AZ(typeof t==\"string\"?rl.parse(t,e):t,e);rl.compile=(t,e={})=>(typeof t==\"string\"&&(t=rl.parse(t,e)),D7e(t,e));rl.expand=(t,e={})=>{typeof t==\"string\"&&(t=rl.parse(t,e));let r=P7e(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};rl.create=(t,e={})=>t===\"\"||t.length<3?[t]:e.expand!==!0?rl.compile(t,e):rl.expand(t,e);fZ.exports=rl});var xI=_((VQt,yZ)=>{\"use strict\";var x7e=Be(\"path\"),Vu=\"\\\\\\\\/\",hZ=`[^${Vu}]`,Bf=\"\\\\.\",b7e=\"\\\\+\",k7e=\"\\\\?\",RP=\"\\\\/\",Q7e=\"(?=.)\",gZ=\"[^/]\",kN=`(?:${RP}|$)`,dZ=`(?:^|${RP})`,QN=`${Bf}{1,2}${kN}`,F7e=`(?!${Bf})`,T7e=`(?!${dZ}${QN})`,R7e=`(?!${Bf}{0,1}${kN})`,N7e=`(?!${QN})`,L7e=`[^.${RP}]`,M7e=`${gZ}*?`,mZ={DOT_LITERAL:Bf,PLUS_LITERAL:b7e,QMARK_LITERAL:k7e,SLASH_LITERAL:RP,ONE_CHAR:Q7e,QMARK:gZ,END_ANCHOR:kN,DOTS_SLASH:QN,NO_DOT:F7e,NO_DOTS:T7e,NO_DOT_SLASH:R7e,NO_DOTS_SLASH:N7e,QMARK_NO_DOT:L7e,STAR:M7e,START_ANCHOR:dZ},O7e={...mZ,SLASH_LITERAL:`[${Vu}]`,QMARK:hZ,STAR:`${hZ}*?`,DOTS_SLASH:`${Bf}{1,2}(?:[${Vu}]|$)`,NO_DOT:`(?!${Bf})`,NO_DOTS:`(?!(?:^|[${Vu}])${Bf}{1,2}(?:[${Vu}]|$))`,NO_DOT_SLASH:`(?!${Bf}{0,1}(?:[${Vu}]|$))`,NO_DOTS_SLASH:`(?!${Bf}{1,2}(?:[${Vu}]|$))`,QMARK_NO_DOT:`[^.${Vu}]`,START_ANCHOR:`(?:^|[${Vu}])`,END_ANCHOR:`(?:[${Vu}]|$)`},U7e={alnum:\"a-zA-Z0-9\",alpha:\"a-zA-Z\",ascii:\"\\\\x00-\\\\x7F\",blank:\" \\\\t\",cntrl:\"\\\\x00-\\\\x1F\\\\x7F\",digit:\"0-9\",graph:\"\\\\x21-\\\\x7E\",lower:\"a-z\",print:\"\\\\x20-\\\\x7E \",punct:\"\\\\-!\\\"#$%&'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~\",space:\" \\\\t\\\\r\\\\n\\\\v\\\\f\",upper:\"A-Z\",word:\"A-Za-z0-9_\",xdigit:\"A-Fa-f0-9\"};yZ.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:U7e,REGEX_BACKSLASH:/\\\\(?![*+?^${}(|)[\\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\\].,$*+?^{}()|\\\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\\\?)((\\W)(\\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,REPLACEMENTS:{\"***\":\"*\",\"**/**\":\"**\",\"**/**/**\":\"**\"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:x7e.sep,extglobChars(t){return{\"!\":{type:\"negate\",open:\"(?:(?!(?:\",close:`))${t.STAR})`},\"?\":{type:\"qmark\",open:\"(?:\",close:\")?\"},\"+\":{type:\"plus\",open:\"(?:\",close:\")+\"},\"*\":{type:\"star\",open:\"(?:\",close:\")*\"},\"@\":{type:\"at\",open:\"(?:\",close:\")\"}}},globChars(t){return t===!0?O7e:mZ}}});var bI=_(Pa=>{\"use strict\";var _7e=Be(\"path\"),H7e=process.platform===\"win32\",{REGEX_BACKSLASH:j7e,REGEX_REMOVE_BACKSLASH:q7e,REGEX_SPECIAL_CHARS:G7e,REGEX_SPECIAL_CHARS_GLOBAL:Y7e}=xI();Pa.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);Pa.hasRegexChars=t=>G7e.test(t);Pa.isRegexChar=t=>t.length===1&&Pa.hasRegexChars(t);Pa.escapeRegex=t=>t.replace(Y7e,\"\\\\$1\");Pa.toPosixSlashes=t=>t.replace(j7e,\"/\");Pa.removeBackslashes=t=>t.replace(q7e,e=>e===\"\\\\\"?\"\":e);Pa.supportsLookbehinds=()=>{let t=process.version.slice(1).split(\".\").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Pa.isWindows=t=>t&&typeof t.windows==\"boolean\"?t.windows:H7e===!0||_7e.sep===\"\\\\\";Pa.escapeLast=(t,e,r)=>{let o=t.lastIndexOf(e,r);return o===-1?t:t[o-1]===\"\\\\\"?Pa.escapeLast(t,e,o-1):`${t.slice(0,o)}\\\\${t.slice(o)}`};Pa.removePrefix=(t,e={})=>{let r=t;return r.startsWith(\"./\")&&(r=r.slice(2),e.prefix=\"./\"),r};Pa.wrapOutput=(t,e={},r={})=>{let o=r.contains?\"\":\"^\",a=r.contains?\"\":\"$\",n=`${o}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var PZ=_((JQt,DZ)=>{\"use strict\";var EZ=bI(),{CHAR_ASTERISK:FN,CHAR_AT:W7e,CHAR_BACKWARD_SLASH:kI,CHAR_COMMA:V7e,CHAR_DOT:TN,CHAR_EXCLAMATION_MARK:RN,CHAR_FORWARD_SLASH:vZ,CHAR_LEFT_CURLY_BRACE:NN,CHAR_LEFT_PARENTHESES:LN,CHAR_LEFT_SQUARE_BRACKET:K7e,CHAR_PLUS:J7e,CHAR_QUESTION_MARK:CZ,CHAR_RIGHT_CURLY_BRACE:z7e,CHAR_RIGHT_PARENTHESES:wZ,CHAR_RIGHT_SQUARE_BRACKET:X7e}=xI(),IZ=t=>t===vZ||t===kI,BZ=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},Z7e=(t,e)=>{let r=e||{},o=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],u=[],A=[],p=t,h=-1,E=0,I=0,v=!1,b=!1,C=!1,T=!1,L=!1,U=!1,J=!1,te=!1,le=!1,pe=!1,Ae=0,ye,ae,we={value:\"\",depth:0,isGlob:!1},Pe=()=>h>=o,g=()=>p.charCodeAt(h+1),Ee=()=>(ye=ae,p.charCodeAt(++h));for(;h<o;){ae=Ee();let Ie;if(ae===kI){J=we.backslashes=!0,ae=Ee(),ae===NN&&(U=!0);continue}if(U===!0||ae===NN){for(Ae++;Pe()!==!0&&(ae=Ee());){if(ae===kI){J=we.backslashes=!0,Ee();continue}if(ae===NN){Ae++;continue}if(U!==!0&&ae===TN&&(ae=Ee())===TN){if(v=we.isBrace=!0,C=we.isGlob=!0,pe=!0,a===!0)continue;break}if(U!==!0&&ae===V7e){if(v=we.isBrace=!0,C=we.isGlob=!0,pe=!0,a===!0)continue;break}if(ae===z7e&&(Ae--,Ae===0)){U=!1,v=we.isBrace=!0,pe=!0;break}}if(a===!0)continue;break}if(ae===vZ){if(n.push(h),u.push(we),we={value:\"\",depth:0,isGlob:!1},pe===!0)continue;if(ye===TN&&h===E+1){E+=2;continue}I=h+1;continue}if(r.noext!==!0&&(ae===J7e||ae===W7e||ae===FN||ae===CZ||ae===RN)===!0&&g()===LN){if(C=we.isGlob=!0,T=we.isExtglob=!0,pe=!0,ae===RN&&h===E&&(le=!0),a===!0){for(;Pe()!==!0&&(ae=Ee());){if(ae===kI){J=we.backslashes=!0,ae=Ee();continue}if(ae===wZ){C=we.isGlob=!0,pe=!0;break}}continue}break}if(ae===FN){if(ye===FN&&(L=we.isGlobstar=!0),C=we.isGlob=!0,pe=!0,a===!0)continue;break}if(ae===CZ){if(C=we.isGlob=!0,pe=!0,a===!0)continue;break}if(ae===K7e){for(;Pe()!==!0&&(Ie=Ee());){if(Ie===kI){J=we.backslashes=!0,Ee();continue}if(Ie===X7e){b=we.isBracket=!0,C=we.isGlob=!0,pe=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&ae===RN&&h===E){te=we.negated=!0,E++;continue}if(r.noparen!==!0&&ae===LN){if(C=we.isGlob=!0,a===!0){for(;Pe()!==!0&&(ae=Ee());){if(ae===LN){J=we.backslashes=!0,ae=Ee();continue}if(ae===wZ){pe=!0;break}}continue}break}if(C===!0){if(pe=!0,a===!0)continue;break}}r.noext===!0&&(T=!1,C=!1);let De=p,ce=\"\",ne=\"\";E>0&&(ce=p.slice(0,E),p=p.slice(E),I-=E),De&&C===!0&&I>0?(De=p.slice(0,I),ne=p.slice(I)):C===!0?(De=\"\",ne=p):De=p,De&&De!==\"\"&&De!==\"/\"&&De!==p&&IZ(De.charCodeAt(De.length-1))&&(De=De.slice(0,-1)),r.unescape===!0&&(ne&&(ne=EZ.removeBackslashes(ne)),De&&J===!0&&(De=EZ.removeBackslashes(De)));let ee={prefix:ce,input:t,start:E,base:De,glob:ne,isBrace:v,isBracket:b,isGlob:C,isExtglob:T,isGlobstar:L,negated:te,negatedExtglob:le};if(r.tokens===!0&&(ee.maxDepth=0,IZ(ae)||u.push(we),ee.tokens=u),r.parts===!0||r.tokens===!0){let Ie;for(let ke=0;ke<n.length;ke++){let ht=Ie?Ie+1:E,H=n[ke],lt=t.slice(ht,H);r.tokens&&(ke===0&&E!==0?(u[ke].isPrefix=!0,u[ke].value=ce):u[ke].value=lt,BZ(u[ke]),ee.maxDepth+=u[ke].depth),(ke!==0||lt!==\"\")&&A.push(lt),Ie=H}if(Ie&&Ie+1<t.length){let ke=t.slice(Ie+1);A.push(ke),r.tokens&&(u[u.length-1].value=ke,BZ(u[u.length-1]),ee.maxDepth+=u[u.length-1].depth)}ee.slashes=n,ee.parts=A}return ee};DZ.exports=Z7e});var bZ=_((zQt,xZ)=>{\"use strict\";var NP=xI(),nl=bI(),{MAX_LENGTH:LP,POSIX_REGEX_SOURCE:$7e,REGEX_NON_SPECIAL_CHARS:eYe,REGEX_SPECIAL_CHARS_BACKREF:tYe,REPLACEMENTS:SZ}=NP,rYe=(t,e)=>{if(typeof e.expandRange==\"function\")return e.expandRange(...t,e);t.sort();let r=`[${t.join(\"-\")}]`;try{new RegExp(r)}catch{return t.map(a=>nl.escapeRegex(a)).join(\"..\")}return r},Ty=(t,e)=>`Missing ${t}: \"${e}\" - use \"\\\\\\\\${e}\" to match literal characters`,MN=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");t=SZ[t]||t;let r={...e},o=typeof r.maxLength==\"number\"?Math.min(LP,r.maxLength):LP,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);let n={type:\"bos\",value:\"\",output:r.prepend||\"\"},u=[n],A=r.capture?\"\":\"?:\",p=nl.isWindows(e),h=NP.globChars(p),E=NP.extglobChars(h),{DOT_LITERAL:I,PLUS_LITERAL:v,SLASH_LITERAL:b,ONE_CHAR:C,DOTS_SLASH:T,NO_DOT:L,NO_DOT_SLASH:U,NO_DOTS_SLASH:J,QMARK:te,QMARK_NO_DOT:le,STAR:pe,START_ANCHOR:Ae}=h,ye=x=>`(${A}(?:(?!${Ae}${x.dot?T:I}).)*?)`,ae=r.dot?\"\":L,we=r.dot?te:le,Pe=r.bash===!0?ye(r):pe;r.capture&&(Pe=`(${Pe})`),typeof r.noext==\"boolean\"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:\"\",output:\"\",prefix:\"\",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:u};t=nl.removePrefix(t,g),a=t.length;let Ee=[],De=[],ce=[],ne=n,ee,Ie=()=>g.index===a-1,ke=g.peek=(x=1)=>t[g.index+x],ht=g.advance=()=>t[++g.index]||\"\",H=()=>t.slice(g.index+1),lt=(x=\"\",w=0)=>{g.consumed+=x,g.index+=w},Re=x=>{g.output+=x.output!=null?x.output:x.value,lt(x.value)},Qe=()=>{let x=1;for(;ke()===\"!\"&&(ke(2)!==\"(\"||ke(3)===\"?\");)ht(),g.start++,x++;return x%2===0?!1:(g.negated=!0,g.start++,!0)},be=x=>{g[x]++,ce.push(x)},_e=x=>{g[x]--,ce.pop()},Te=x=>{if(ne.type===\"globstar\"){let w=g.braces>0&&(x.type===\"comma\"||x.type===\"brace\"),S=x.extglob===!0||Ee.length&&(x.type===\"pipe\"||x.type===\"paren\");x.type!==\"slash\"&&x.type!==\"paren\"&&!w&&!S&&(g.output=g.output.slice(0,-ne.output.length),ne.type=\"star\",ne.value=\"*\",ne.output=Pe,g.output+=ne.output)}if(Ee.length&&x.type!==\"paren\"&&(Ee[Ee.length-1].inner+=x.value),(x.value||x.output)&&Re(x),ne&&ne.type===\"text\"&&x.type===\"text\"){ne.value+=x.value,ne.output=(ne.output||\"\")+x.value;return}x.prev=ne,u.push(x),ne=x},Je=(x,w)=>{let S={...E[w],conditions:1,inner:\"\"};S.prev=ne,S.parens=g.parens,S.output=g.output;let y=(r.capture?\"(\":\"\")+S.open;be(\"parens\"),Te({type:x,value:w,output:g.output?\"\":C}),Te({type:\"paren\",extglob:!0,value:ht(),output:y}),Ee.push(S)},He=x=>{let w=x.close+(r.capture?\")\":\"\"),S;if(x.type===\"negate\"){let y=Pe;if(x.inner&&x.inner.length>1&&x.inner.includes(\"/\")&&(y=ye(r)),(y!==Pe||Ie()||/^\\)+$/.test(H()))&&(w=x.close=`)$))${y}`),x.inner.includes(\"*\")&&(S=H())&&/^\\.[^\\\\/.]+$/.test(S)){let F=MN(S,{...e,fastpaths:!1}).output;w=x.close=`)${F})${y})`}x.prev.type===\"bos\"&&(g.negatedExtglob=!0)}Te({type:\"paren\",extglob:!0,value:ee,output:w}),_e(\"parens\")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\\]{}\"])/.test(t)){let x=!1,w=t.replace(tYe,(S,y,F,z,X,Z)=>z===\"\\\\\"?(x=!0,S):z===\"?\"?y?y+z+(X?te.repeat(X.length):\"\"):Z===0?we+(X?te.repeat(X.length):\"\"):te.repeat(F.length):z===\".\"?I.repeat(F.length):z===\"*\"?y?y+z+(X?Pe:\"\"):Pe:y?S:`\\\\${S}`);return x===!0&&(r.unescape===!0?w=w.replace(/\\\\/g,\"\"):w=w.replace(/\\\\+/g,S=>S.length%2===0?\"\\\\\\\\\":S?\"\\\\\":\"\")),w===t&&r.contains===!0?(g.output=t,g):(g.output=nl.wrapOutput(w,g,e),g)}for(;!Ie();){if(ee=ht(),ee===\"\\0\")continue;if(ee===\"\\\\\"){let S=ke();if(S===\"/\"&&r.bash!==!0||S===\".\"||S===\";\")continue;if(!S){ee+=\"\\\\\",Te({type:\"text\",value:ee});continue}let y=/^\\\\+/.exec(H()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(ee+=\"\\\\\")),r.unescape===!0?ee=ht():ee+=ht(),g.brackets===0){Te({type:\"text\",value:ee});continue}}if(g.brackets>0&&(ee!==\"]\"||ne.value===\"[\"||ne.value===\"[^\")){if(r.posix!==!1&&ee===\":\"){let S=ne.value.slice(1);if(S.includes(\"[\")&&(ne.posix=!0,S.includes(\":\"))){let y=ne.value.lastIndexOf(\"[\"),F=ne.value.slice(0,y),z=ne.value.slice(y+2),X=$7e[z];if(X){ne.value=F+X,g.backtrack=!0,ht(),!n.output&&u.indexOf(ne)===1&&(n.output=C);continue}}}(ee===\"[\"&&ke()!==\":\"||ee===\"-\"&&ke()===\"]\")&&(ee=`\\\\${ee}`),ee===\"]\"&&(ne.value===\"[\"||ne.value===\"[^\")&&(ee=`\\\\${ee}`),r.posix===!0&&ee===\"!\"&&ne.value===\"[\"&&(ee=\"^\"),ne.value+=ee,Re({value:ee});continue}if(g.quotes===1&&ee!=='\"'){ee=nl.escapeRegex(ee),ne.value+=ee,Re({value:ee});continue}if(ee==='\"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&Te({type:\"text\",value:ee});continue}if(ee===\"(\"){be(\"parens\"),Te({type:\"paren\",value:ee});continue}if(ee===\")\"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Ty(\"opening\",\"(\"));let S=Ee[Ee.length-1];if(S&&g.parens===S.parens+1){He(Ee.pop());continue}Te({type:\"paren\",value:ee,output:g.parens?\")\":\"\\\\)\"}),_e(\"parens\");continue}if(ee===\"[\"){if(r.nobracket===!0||!H().includes(\"]\")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"]\"));ee=`\\\\${ee}`}else be(\"brackets\");Te({type:\"bracket\",value:ee});continue}if(ee===\"]\"){if(r.nobracket===!0||ne&&ne.type===\"bracket\"&&ne.value.length===1){Te({type:\"text\",value:ee,output:`\\\\${ee}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"opening\",\"[\"));Te({type:\"text\",value:ee,output:`\\\\${ee}`});continue}_e(\"brackets\");let S=ne.value.slice(1);if(ne.posix!==!0&&S[0]===\"^\"&&!S.includes(\"/\")&&(ee=`/${ee}`),ne.value+=ee,Re({value:ee}),r.literalBrackets===!1||nl.hasRegexChars(S))continue;let y=nl.escapeRegex(ne.value);if(g.output=g.output.slice(0,-ne.value.length),r.literalBrackets===!0){g.output+=y,ne.value=y;continue}ne.value=`(${A}${y}|${ne.value})`,g.output+=ne.value;continue}if(ee===\"{\"&&r.nobrace!==!0){be(\"braces\");let S={type:\"brace\",value:ee,output:\"(\",outputIndex:g.output.length,tokensIndex:g.tokens.length};De.push(S),Te(S);continue}if(ee===\"}\"){let S=De[De.length-1];if(r.nobrace===!0||!S){Te({type:\"text\",value:ee,output:ee});continue}let y=\")\";if(S.dots===!0){let F=u.slice(),z=[];for(let X=F.length-1;X>=0&&(u.pop(),F[X].type!==\"brace\");X--)F[X].type!==\"dots\"&&z.unshift(F[X].value);y=rYe(z,r),g.backtrack=!0}if(S.comma!==!0&&S.dots!==!0){let F=g.output.slice(0,S.outputIndex),z=g.tokens.slice(S.tokensIndex);S.value=S.output=\"\\\\{\",ee=y=\"\\\\}\",g.output=F;for(let X of z)g.output+=X.output||X.value}Te({type:\"brace\",value:ee,output:y}),_e(\"braces\"),De.pop();continue}if(ee===\"|\"){Ee.length>0&&Ee[Ee.length-1].conditions++,Te({type:\"text\",value:ee});continue}if(ee===\",\"){let S=ee,y=De[De.length-1];y&&ce[ce.length-1]===\"braces\"&&(y.comma=!0,S=\"|\"),Te({type:\"comma\",value:ee,output:S});continue}if(ee===\"/\"){if(ne.type===\"dot\"&&g.index===g.start+1){g.start=g.index+1,g.consumed=\"\",g.output=\"\",u.pop(),ne=n;continue}Te({type:\"slash\",value:ee,output:b});continue}if(ee===\".\"){if(g.braces>0&&ne.type===\"dot\"){ne.value===\".\"&&(ne.output=I);let S=De[De.length-1];ne.type=\"dots\",ne.output+=ee,ne.value+=ee,S.dots=!0;continue}if(g.braces+g.parens===0&&ne.type!==\"bos\"&&ne.type!==\"slash\"){Te({type:\"text\",value:ee,output:I});continue}Te({type:\"dot\",value:ee,output:I});continue}if(ee===\"?\"){if(!(ne&&ne.value===\"(\")&&r.noextglob!==!0&&ke()===\"(\"&&ke(2)!==\"?\"){Je(\"qmark\",ee);continue}if(ne&&ne.type===\"paren\"){let y=ke(),F=ee;if(y===\"<\"&&!nl.supportsLookbehinds())throw new Error(\"Node.js v10 or higher is required for regex lookbehinds\");(ne.value===\"(\"&&!/[!=<:]/.test(y)||y===\"<\"&&!/<([!=]|\\w+>)/.test(H()))&&(F=`\\\\${ee}`),Te({type:\"text\",value:ee,output:F});continue}if(r.dot!==!0&&(ne.type===\"slash\"||ne.type===\"bos\")){Te({type:\"qmark\",value:ee,output:le});continue}Te({type:\"qmark\",value:ee,output:te});continue}if(ee===\"!\"){if(r.noextglob!==!0&&ke()===\"(\"&&(ke(2)!==\"?\"||!/[!=<:]/.test(ke(3)))){Je(\"negate\",ee);continue}if(r.nonegate!==!0&&g.index===0){Qe();continue}}if(ee===\"+\"){if(r.noextglob!==!0&&ke()===\"(\"&&ke(2)!==\"?\"){Je(\"plus\",ee);continue}if(ne&&ne.value===\"(\"||r.regex===!1){Te({type:\"plus\",value:ee,output:v});continue}if(ne&&(ne.type===\"bracket\"||ne.type===\"paren\"||ne.type===\"brace\")||g.parens>0){Te({type:\"plus\",value:ee});continue}Te({type:\"plus\",value:v});continue}if(ee===\"@\"){if(r.noextglob!==!0&&ke()===\"(\"&&ke(2)!==\"?\"){Te({type:\"at\",extglob:!0,value:ee,output:\"\"});continue}Te({type:\"text\",value:ee});continue}if(ee!==\"*\"){(ee===\"$\"||ee===\"^\")&&(ee=`\\\\${ee}`);let S=eYe.exec(H());S&&(ee+=S[0],g.index+=S[0].length),Te({type:\"text\",value:ee});continue}if(ne&&(ne.type===\"globstar\"||ne.star===!0)){ne.type=\"star\",ne.star=!0,ne.value+=ee,ne.output=Pe,g.backtrack=!0,g.globstar=!0,lt(ee);continue}let x=H();if(r.noextglob!==!0&&/^\\([^?]/.test(x)){Je(\"star\",ee);continue}if(ne.type===\"star\"){if(r.noglobstar===!0){lt(ee);continue}let S=ne.prev,y=S.prev,F=S.type===\"slash\"||S.type===\"bos\",z=y&&(y.type===\"star\"||y.type===\"globstar\");if(r.bash===!0&&(!F||x[0]&&x[0]!==\"/\")){Te({type:\"star\",value:ee,output:\"\"});continue}let X=g.braces>0&&(S.type===\"comma\"||S.type===\"brace\"),Z=Ee.length&&(S.type===\"pipe\"||S.type===\"paren\");if(!F&&S.type!==\"paren\"&&!X&&!Z){Te({type:\"star\",value:ee,output:\"\"});continue}for(;x.slice(0,3)===\"/**\";){let ie=t[g.index+4];if(ie&&ie!==\"/\")break;x=x.slice(3),lt(\"/**\",3)}if(S.type===\"bos\"&&Ie()){ne.type=\"globstar\",ne.value+=ee,ne.output=ye(r),g.output=ne.output,g.globstar=!0,lt(ee);continue}if(S.type===\"slash\"&&S.prev.type!==\"bos\"&&!z&&Ie()){g.output=g.output.slice(0,-(S.output+ne.output).length),S.output=`(?:${S.output}`,ne.type=\"globstar\",ne.output=ye(r)+(r.strictSlashes?\")\":\"|$)\"),ne.value+=ee,g.globstar=!0,g.output+=S.output+ne.output,lt(ee);continue}if(S.type===\"slash\"&&S.prev.type!==\"bos\"&&x[0]===\"/\"){let ie=x[1]!==void 0?\"|$\":\"\";g.output=g.output.slice(0,-(S.output+ne.output).length),S.output=`(?:${S.output}`,ne.type=\"globstar\",ne.output=`${ye(r)}${b}|${b}${ie})`,ne.value+=ee,g.output+=S.output+ne.output,g.globstar=!0,lt(ee+ht()),Te({type:\"slash\",value:\"/\",output:\"\"});continue}if(S.type===\"bos\"&&x[0]===\"/\"){ne.type=\"globstar\",ne.value+=ee,ne.output=`(?:^|${b}|${ye(r)}${b})`,g.output=ne.output,g.globstar=!0,lt(ee+ht()),Te({type:\"slash\",value:\"/\",output:\"\"});continue}g.output=g.output.slice(0,-ne.output.length),ne.type=\"globstar\",ne.output=ye(r),ne.value+=ee,g.output+=ne.output,g.globstar=!0,lt(ee);continue}let w={type:\"star\",value:ee,output:Pe};if(r.bash===!0){w.output=\".*?\",(ne.type===\"bos\"||ne.type===\"slash\")&&(w.output=ae+w.output),Te(w);continue}if(ne&&(ne.type===\"bracket\"||ne.type===\"paren\")&&r.regex===!0){w.output=ee,Te(w);continue}(g.index===g.start||ne.type===\"slash\"||ne.type===\"dot\")&&(ne.type===\"dot\"?(g.output+=U,ne.output+=U):r.dot===!0?(g.output+=J,ne.output+=J):(g.output+=ae,ne.output+=ae),ke()!==\"*\"&&(g.output+=C,ne.output+=C)),Te(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"]\"));g.output=nl.escapeLast(g.output,\"[\"),_e(\"brackets\")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\")\"));g.output=nl.escapeLast(g.output,\"(\"),_e(\"parens\")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"}\"));g.output=nl.escapeLast(g.output,\"{\"),_e(\"braces\")}if(r.strictSlashes!==!0&&(ne.type===\"star\"||ne.type===\"bracket\")&&Te({type:\"maybe_slash\",value:\"\",output:`${b}?`}),g.backtrack===!0){g.output=\"\";for(let x of g.tokens)g.output+=x.output!=null?x.output:x.value,x.suffix&&(g.output+=x.suffix)}return g};MN.fastpaths=(t,e)=>{let r={...e},o=typeof r.maxLength==\"number\"?Math.min(LP,r.maxLength):LP,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);t=SZ[t]||t;let n=nl.isWindows(e),{DOT_LITERAL:u,SLASH_LITERAL:A,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:I,NO_DOTS_SLASH:v,STAR:b,START_ANCHOR:C}=NP.globChars(n),T=r.dot?I:E,L=r.dot?v:E,U=r.capture?\"\":\"?:\",J={negated:!1,prefix:\"\"},te=r.bash===!0?\".*?\":b;r.capture&&(te=`(${te})`);let le=ae=>ae.noglobstar===!0?te:`(${U}(?:(?!${C}${ae.dot?h:u}).)*?)`,pe=ae=>{switch(ae){case\"*\":return`${T}${p}${te}`;case\".*\":return`${u}${p}${te}`;case\"*.*\":return`${T}${te}${u}${p}${te}`;case\"*/*\":return`${T}${te}${A}${p}${L}${te}`;case\"**\":return T+le(r);case\"**/*\":return`(?:${T}${le(r)}${A})?${L}${p}${te}`;case\"**/*.*\":return`(?:${T}${le(r)}${A})?${L}${te}${u}${p}${te}`;case\"**/.*\":return`(?:${T}${le(r)}${A})?${u}${p}${te}`;default:{let we=/^(.*?)\\.(\\w+)$/.exec(ae);if(!we)return;let Pe=pe(we[1]);return Pe?Pe+u+we[2]:void 0}}},Ae=nl.removePrefix(t,J),ye=pe(Ae);return ye&&r.strictSlashes!==!0&&(ye+=`${A}?`),ye};xZ.exports=MN});var QZ=_((XQt,kZ)=>{\"use strict\";var nYe=Be(\"path\"),iYe=PZ(),ON=bZ(),UN=bI(),sYe=xI(),oYe=t=>t&&typeof t==\"object\"&&!Array.isArray(t),Oi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(v=>Oi(v,e,r));return v=>{for(let b of E){let C=b(v);if(C)return C}return!1}}let o=oYe(t)&&t.tokens&&t.input;if(t===\"\"||typeof t!=\"string\"&&!o)throw new TypeError(\"Expected pattern to be a non-empty string\");let a=e||{},n=UN.isWindows(e),u=o?Oi.compileRe(t,e):Oi.makeRe(t,e,!1,!0),A=u.state;delete u.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Oi(a.ignore,E,r)}let h=(E,I=!1)=>{let{isMatch:v,match:b,output:C}=Oi.test(E,u,e,{glob:t,posix:n}),T={glob:t,state:A,regex:u,posix:n,input:E,output:C,match:b,isMatch:v};return typeof a.onResult==\"function\"&&a.onResult(T),v===!1?(T.isMatch=!1,I?T:!1):p(E)?(typeof a.onIgnore==\"function\"&&a.onIgnore(T),T.isMatch=!1,I?T:!1):(typeof a.onMatch==\"function\"&&a.onMatch(T),I?T:!0)};return r&&(h.state=A),h};Oi.test=(t,e,r,{glob:o,posix:a}={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected input to be a string\");if(t===\"\")return{isMatch:!1,output:\"\"};let n=r||{},u=n.format||(a?UN.toPosixSlashes:null),A=t===o,p=A&&u?u(t):t;return A===!1&&(p=u?u(t):t,A=p===o),(A===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?A=Oi.matchBase(t,e,r,a):A=e.exec(p)),{isMatch:Boolean(A),match:A,output:p}};Oi.matchBase=(t,e,r,o=UN.isWindows(r))=>(e instanceof RegExp?e:Oi.makeRe(e,r)).test(nYe.basename(t));Oi.isMatch=(t,e,r)=>Oi(e,r)(t);Oi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Oi.parse(r,e)):ON(t,{...e,fastpaths:!1});Oi.scan=(t,e)=>iYe(t,e);Oi.compileRe=(t,e,r=!1,o=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?\"\":\"^\",u=a.contains?\"\":\"$\",A=`${n}(?:${t.output})${u}`;t&&t.negated===!0&&(A=`^(?!${A}).*$`);let p=Oi.toRegex(A,e);return o===!0&&(p.state=t),p};Oi.makeRe=(t,e={},r=!1,o=!1)=>{if(!t||typeof t!=\"string\")throw new TypeError(\"Expected a non-empty string\");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]===\".\"||t[0]===\"*\")&&(a.output=ON.fastpaths(t,e)),a.output||(a=ON(t,e)),Oi.compileRe(a,e,r,o)};Oi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?\"i\":\"\"))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Oi.constants=sYe;kZ.exports=Oi});var TZ=_((ZQt,FZ)=>{\"use strict\";FZ.exports=QZ()});var Zo=_(($Qt,MZ)=>{\"use strict\";var NZ=Be(\"util\"),LZ=pZ(),Ku=TZ(),_N=bI(),RZ=t=>t===\"\"||t===\"./\",yi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let o=new Set,a=new Set,n=new Set,u=0,A=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E<e.length;E++){let I=Ku(String(e[E]),{...r,onResult:A},!0),v=I.state.negated||I.state.negatedExtglob;v&&u++;for(let b of t){let C=I(b,!0);!(v?!C.isMatch:C.isMatch)||(v?o.add(C.output):(o.delete(C.output),a.add(C.output)))}}let h=(u===e.length?[...n]:[...a]).filter(E=>!o.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for \"${e.join(\", \")}\"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\\\/g,\"\")):e}return h};yi.match=yi;yi.matcher=(t,e)=>Ku(t,e);yi.isMatch=(t,e,r)=>Ku(e,r)(t);yi.any=yi.isMatch;yi.not=(t,e,r={})=>{e=[].concat(e).map(String);let o=new Set,a=[],n=A=>{r.onResult&&r.onResult(A),a.push(A.output)},u=new Set(yi(t,e,{...r,onResult:n}));for(let A of a)u.has(A)||o.add(A);return[...o]};yi.contains=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${NZ.inspect(t)}\"`);if(Array.isArray(e))return e.some(o=>yi.contains(t,o,r));if(typeof e==\"string\"){if(RZ(t)||RZ(e))return!1;if(t.includes(e)||t.startsWith(\"./\")&&t.slice(2).includes(e))return!0}return yi.isMatch(t,e,{...r,contains:!0})};yi.matchKeys=(t,e,r)=>{if(!_N.isObject(t))throw new TypeError(\"Expected the first argument to be an object\");let o=yi(Object.keys(t),e,r),a={};for(let n of o)a[n]=t[n];return a};yi.some=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Ku(String(a),r);if(o.some(u=>n(u)))return!0}return!1};yi.every=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Ku(String(a),r);if(!o.every(u=>n(u)))return!1}return!0};yi.all=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${NZ.inspect(t)}\"`);return[].concat(e).every(o=>Ku(o,r)(t))};yi.capture=(t,e,r)=>{let o=_N.isWindows(r),n=Ku.makeRe(String(t),{...r,capture:!0}).exec(o?_N.toPosixSlashes(e):e);if(n)return n.slice(1).map(u=>u===void 0?\"\":u)};yi.makeRe=(...t)=>Ku.makeRe(...t);yi.scan=(...t)=>Ku.scan(...t);yi.parse=(t,e)=>{let r=[];for(let o of[].concat(t||[]))for(let a of LZ(String(o),e))r.push(Ku.parse(a,e));return r};yi.braces=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return e&&e.nobrace===!0||!/\\{.*\\}/.test(t)?[t]:LZ(t,e)};yi.braceExpand=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return yi.braces(t,{...e,expand:!0})};MZ.exports=yi});var UZ=_((eFt,OZ)=>{\"use strict\";OZ.exports=({onlyFirst:t=!1}={})=>{let e=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(e,t?void 0:\"g\")}});var MP=_((tFt,_Z)=>{\"use strict\";var aYe=UZ();_Z.exports=t=>typeof t==\"string\"?t.replace(aYe(),\"\"):t});var jZ=_((rFt,HZ)=>{function lYe(){this.__data__=[],this.size=0}HZ.exports=lYe});var Ry=_((nFt,qZ)=>{function cYe(t,e){return t===e||t!==t&&e!==e}qZ.exports=cYe});var QI=_((iFt,GZ)=>{var uYe=Ry();function AYe(t,e){for(var r=t.length;r--;)if(uYe(t[r][0],e))return r;return-1}GZ.exports=AYe});var WZ=_((sFt,YZ)=>{var fYe=QI(),pYe=Array.prototype,hYe=pYe.splice;function gYe(t){var e=this.__data__,r=fYe(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():hYe.call(e,r,1),--this.size,!0}YZ.exports=gYe});var KZ=_((oFt,VZ)=>{var dYe=QI();function mYe(t){var e=this.__data__,r=dYe(e,t);return r<0?void 0:e[r][1]}VZ.exports=mYe});var zZ=_((aFt,JZ)=>{var yYe=QI();function EYe(t){return yYe(this.__data__,t)>-1}JZ.exports=EYe});var ZZ=_((lFt,XZ)=>{var CYe=QI();function wYe(t,e){var r=this.__data__,o=CYe(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}XZ.exports=wYe});var FI=_((cFt,$Z)=>{var IYe=jZ(),BYe=WZ(),vYe=KZ(),DYe=zZ(),PYe=ZZ();function Ny(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Ny.prototype.clear=IYe;Ny.prototype.delete=BYe;Ny.prototype.get=vYe;Ny.prototype.has=DYe;Ny.prototype.set=PYe;$Z.exports=Ny});var t$=_((uFt,e$)=>{var SYe=FI();function xYe(){this.__data__=new SYe,this.size=0}e$.exports=xYe});var n$=_((AFt,r$)=>{function bYe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}r$.exports=bYe});var s$=_((fFt,i$)=>{function kYe(t){return this.__data__.get(t)}i$.exports=kYe});var a$=_((pFt,o$)=>{function QYe(t){return this.__data__.has(t)}o$.exports=QYe});var HN=_((hFt,l$)=>{var FYe=typeof global==\"object\"&&global&&global.Object===Object&&global;l$.exports=FYe});var _l=_((gFt,c$)=>{var TYe=HN(),RYe=typeof self==\"object\"&&self&&self.Object===Object&&self,NYe=TYe||RYe||Function(\"return this\")();c$.exports=NYe});var fd=_((dFt,u$)=>{var LYe=_l(),MYe=LYe.Symbol;u$.exports=MYe});var h$=_((mFt,p$)=>{var A$=fd(),f$=Object.prototype,OYe=f$.hasOwnProperty,UYe=f$.toString,TI=A$?A$.toStringTag:void 0;function _Ye(t){var e=OYe.call(t,TI),r=t[TI];try{t[TI]=void 0;var o=!0}catch{}var a=UYe.call(t);return o&&(e?t[TI]=r:delete t[TI]),a}p$.exports=_Ye});var d$=_((yFt,g$)=>{var HYe=Object.prototype,jYe=HYe.toString;function qYe(t){return jYe.call(t)}g$.exports=qYe});var pd=_((EFt,E$)=>{var m$=fd(),GYe=h$(),YYe=d$(),WYe=\"[object Null]\",VYe=\"[object Undefined]\",y$=m$?m$.toStringTag:void 0;function KYe(t){return t==null?t===void 0?VYe:WYe:y$&&y$ in Object(t)?GYe(t):YYe(t)}E$.exports=KYe});var il=_((CFt,C$)=>{function JYe(t){var e=typeof t;return t!=null&&(e==\"object\"||e==\"function\")}C$.exports=JYe});var OP=_((wFt,w$)=>{var zYe=pd(),XYe=il(),ZYe=\"[object AsyncFunction]\",$Ye=\"[object Function]\",eWe=\"[object GeneratorFunction]\",tWe=\"[object Proxy]\";function rWe(t){if(!XYe(t))return!1;var e=zYe(t);return e==$Ye||e==eWe||e==ZYe||e==tWe}w$.exports=rWe});var B$=_((IFt,I$)=>{var nWe=_l(),iWe=nWe[\"__core-js_shared__\"];I$.exports=iWe});var P$=_((BFt,D$)=>{var jN=B$(),v$=function(){var t=/[^.]+$/.exec(jN&&jN.keys&&jN.keys.IE_PROTO||\"\");return t?\"Symbol(src)_1.\"+t:\"\"}();function sWe(t){return!!v$&&v$ in t}D$.exports=sWe});var qN=_((vFt,S$)=>{var oWe=Function.prototype,aWe=oWe.toString;function lWe(t){if(t!=null){try{return aWe.call(t)}catch{}try{return t+\"\"}catch{}}return\"\"}S$.exports=lWe});var b$=_((DFt,x$)=>{var cWe=OP(),uWe=P$(),AWe=il(),fWe=qN(),pWe=/[\\\\^$.*+?()[\\]{}|]/g,hWe=/^\\[object .+?Constructor\\]$/,gWe=Function.prototype,dWe=Object.prototype,mWe=gWe.toString,yWe=dWe.hasOwnProperty,EWe=RegExp(\"^\"+mWe.call(yWe).replace(pWe,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");function CWe(t){if(!AWe(t)||uWe(t))return!1;var e=cWe(t)?EWe:hWe;return e.test(fWe(t))}x$.exports=CWe});var Q$=_((PFt,k$)=>{function wWe(t,e){return t?.[e]}k$.exports=wWe});var Jp=_((SFt,F$)=>{var IWe=b$(),BWe=Q$();function vWe(t,e){var r=BWe(t,e);return IWe(r)?r:void 0}F$.exports=vWe});var UP=_((xFt,T$)=>{var DWe=Jp(),PWe=_l(),SWe=DWe(PWe,\"Map\");T$.exports=SWe});var RI=_((bFt,R$)=>{var xWe=Jp(),bWe=xWe(Object,\"create\");R$.exports=bWe});var M$=_((kFt,L$)=>{var N$=RI();function kWe(){this.__data__=N$?N$(null):{},this.size=0}L$.exports=kWe});var U$=_((QFt,O$)=>{function QWe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}O$.exports=QWe});var H$=_((FFt,_$)=>{var FWe=RI(),TWe=\"__lodash_hash_undefined__\",RWe=Object.prototype,NWe=RWe.hasOwnProperty;function LWe(t){var e=this.__data__;if(FWe){var r=e[t];return r===TWe?void 0:r}return NWe.call(e,t)?e[t]:void 0}_$.exports=LWe});var q$=_((TFt,j$)=>{var MWe=RI(),OWe=Object.prototype,UWe=OWe.hasOwnProperty;function _We(t){var e=this.__data__;return MWe?e[t]!==void 0:UWe.call(e,t)}j$.exports=_We});var Y$=_((RFt,G$)=>{var HWe=RI(),jWe=\"__lodash_hash_undefined__\";function qWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=HWe&&e===void 0?jWe:e,this}G$.exports=qWe});var V$=_((NFt,W$)=>{var GWe=M$(),YWe=U$(),WWe=H$(),VWe=q$(),KWe=Y$();function Ly(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Ly.prototype.clear=GWe;Ly.prototype.delete=YWe;Ly.prototype.get=WWe;Ly.prototype.has=VWe;Ly.prototype.set=KWe;W$.exports=Ly});var z$=_((LFt,J$)=>{var K$=V$(),JWe=FI(),zWe=UP();function XWe(){this.size=0,this.__data__={hash:new K$,map:new(zWe||JWe),string:new K$}}J$.exports=XWe});var Z$=_((MFt,X$)=>{function ZWe(t){var e=typeof t;return e==\"string\"||e==\"number\"||e==\"symbol\"||e==\"boolean\"?t!==\"__proto__\":t===null}X$.exports=ZWe});var NI=_((OFt,$$)=>{var $We=Z$();function eVe(t,e){var r=t.__data__;return $We(e)?r[typeof e==\"string\"?\"string\":\"hash\"]:r.map}$$.exports=eVe});var tee=_((UFt,eee)=>{var tVe=NI();function rVe(t){var e=tVe(this,t).delete(t);return this.size-=e?1:0,e}eee.exports=rVe});var nee=_((_Ft,ree)=>{var nVe=NI();function iVe(t){return nVe(this,t).get(t)}ree.exports=iVe});var see=_((HFt,iee)=>{var sVe=NI();function oVe(t){return sVe(this,t).has(t)}iee.exports=oVe});var aee=_((jFt,oee)=>{var aVe=NI();function lVe(t,e){var r=aVe(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}oee.exports=lVe});var _P=_((qFt,lee)=>{var cVe=z$(),uVe=tee(),AVe=nee(),fVe=see(),pVe=aee();function My(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}My.prototype.clear=cVe;My.prototype.delete=uVe;My.prototype.get=AVe;My.prototype.has=fVe;My.prototype.set=pVe;lee.exports=My});var uee=_((GFt,cee)=>{var hVe=FI(),gVe=UP(),dVe=_P(),mVe=200;function yVe(t,e){var r=this.__data__;if(r instanceof hVe){var o=r.__data__;if(!gVe||o.length<mVe-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new dVe(o)}return r.set(t,e),this.size=r.size,this}cee.exports=yVe});var HP=_((YFt,Aee)=>{var EVe=FI(),CVe=t$(),wVe=n$(),IVe=s$(),BVe=a$(),vVe=uee();function Oy(t){var e=this.__data__=new EVe(t);this.size=e.size}Oy.prototype.clear=CVe;Oy.prototype.delete=wVe;Oy.prototype.get=IVe;Oy.prototype.has=BVe;Oy.prototype.set=vVe;Aee.exports=Oy});var pee=_((WFt,fee)=>{var DVe=\"__lodash_hash_undefined__\";function PVe(t){return this.__data__.set(t,DVe),this}fee.exports=PVe});var gee=_((VFt,hee)=>{function SVe(t){return this.__data__.has(t)}hee.exports=SVe});var mee=_((KFt,dee)=>{var xVe=_P(),bVe=pee(),kVe=gee();function jP(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new xVe;++e<r;)this.add(t[e])}jP.prototype.add=jP.prototype.push=bVe;jP.prototype.has=kVe;dee.exports=jP});var Eee=_((JFt,yee)=>{function QVe(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1}yee.exports=QVe});var wee=_((zFt,Cee)=>{function FVe(t,e){return t.has(e)}Cee.exports=FVe});var GN=_((XFt,Iee)=>{var TVe=mee(),RVe=Eee(),NVe=wee(),LVe=1,MVe=2;function OVe(t,e,r,o,a,n){var u=r&LVe,A=t.length,p=e.length;if(A!=p&&!(u&&p>A))return!1;var h=n.get(t),E=n.get(e);if(h&&E)return h==e&&E==t;var I=-1,v=!0,b=r&MVe?new TVe:void 0;for(n.set(t,e),n.set(e,t);++I<A;){var C=t[I],T=e[I];if(o)var L=u?o(T,C,I,e,t,n):o(C,T,I,t,e,n);if(L!==void 0){if(L)continue;v=!1;break}if(b){if(!RVe(e,function(U,J){if(!NVe(b,J)&&(C===U||a(C,U,r,o,n)))return b.push(J)})){v=!1;break}}else if(!(C===T||a(C,T,r,o,n))){v=!1;break}}return n.delete(t),n.delete(e),v}Iee.exports=OVe});var YN=_((ZFt,Bee)=>{var UVe=_l(),_Ve=UVe.Uint8Array;Bee.exports=_Ve});var Dee=_(($Ft,vee)=>{function HVe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){r[++e]=[a,o]}),r}vee.exports=HVe});var See=_((eTt,Pee)=>{function jVe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}Pee.exports=jVe});var Fee=_((tTt,Qee)=>{var xee=fd(),bee=YN(),qVe=Ry(),GVe=GN(),YVe=Dee(),WVe=See(),VVe=1,KVe=2,JVe=\"[object Boolean]\",zVe=\"[object Date]\",XVe=\"[object Error]\",ZVe=\"[object Map]\",$Ve=\"[object Number]\",eKe=\"[object RegExp]\",tKe=\"[object Set]\",rKe=\"[object String]\",nKe=\"[object Symbol]\",iKe=\"[object ArrayBuffer]\",sKe=\"[object DataView]\",kee=xee?xee.prototype:void 0,WN=kee?kee.valueOf:void 0;function oKe(t,e,r,o,a,n,u){switch(r){case sKe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case iKe:return!(t.byteLength!=e.byteLength||!n(new bee(t),new bee(e)));case JVe:case zVe:case $Ve:return qVe(+t,+e);case XVe:return t.name==e.name&&t.message==e.message;case eKe:case rKe:return t==e+\"\";case ZVe:var A=YVe;case tKe:var p=o&VVe;if(A||(A=WVe),t.size!=e.size&&!p)return!1;var h=u.get(t);if(h)return h==e;o|=KVe,u.set(t,e);var E=GVe(A(t),A(e),o,a,n,u);return u.delete(t),E;case nKe:if(WN)return WN.call(t)==WN.call(e)}return!1}Qee.exports=oKe});var qP=_((rTt,Tee)=>{function aKe(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];return t}Tee.exports=aKe});var Hl=_((nTt,Ree)=>{var lKe=Array.isArray;Ree.exports=lKe});var VN=_((iTt,Nee)=>{var cKe=qP(),uKe=Hl();function AKe(t,e,r){var o=e(t);return uKe(t)?o:cKe(o,r(t))}Nee.exports=AKe});var Mee=_((sTt,Lee)=>{function fKe(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var u=t[r];e(u,r,t)&&(n[a++]=u)}return n}Lee.exports=fKe});var KN=_((oTt,Oee)=>{function pKe(){return[]}Oee.exports=pKe});var GP=_((aTt,_ee)=>{var hKe=Mee(),gKe=KN(),dKe=Object.prototype,mKe=dKe.propertyIsEnumerable,Uee=Object.getOwnPropertySymbols,yKe=Uee?function(t){return t==null?[]:(t=Object(t),hKe(Uee(t),function(e){return mKe.call(t,e)}))}:gKe;_ee.exports=yKe});var jee=_((lTt,Hee)=>{function EKe(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}Hee.exports=EKe});var Ju=_((cTt,qee)=>{function CKe(t){return t!=null&&typeof t==\"object\"}qee.exports=CKe});var Yee=_((uTt,Gee)=>{var wKe=pd(),IKe=Ju(),BKe=\"[object Arguments]\";function vKe(t){return IKe(t)&&wKe(t)==BKe}Gee.exports=vKe});var LI=_((ATt,Kee)=>{var Wee=Yee(),DKe=Ju(),Vee=Object.prototype,PKe=Vee.hasOwnProperty,SKe=Vee.propertyIsEnumerable,xKe=Wee(function(){return arguments}())?Wee:function(t){return DKe(t)&&PKe.call(t,\"callee\")&&!SKe.call(t,\"callee\")};Kee.exports=xKe});var zee=_((fTt,Jee)=>{function bKe(){return!1}Jee.exports=bKe});var OI=_((MI,Uy)=>{var kKe=_l(),QKe=zee(),$ee=typeof MI==\"object\"&&MI&&!MI.nodeType&&MI,Xee=$ee&&typeof Uy==\"object\"&&Uy&&!Uy.nodeType&&Uy,FKe=Xee&&Xee.exports===$ee,Zee=FKe?kKe.Buffer:void 0,TKe=Zee?Zee.isBuffer:void 0,RKe=TKe||QKe;Uy.exports=RKe});var UI=_((pTt,ete)=>{var NKe=9007199254740991,LKe=/^(?:0|[1-9]\\d*)$/;function MKe(t,e){var r=typeof t;return e=e??NKe,!!e&&(r==\"number\"||r!=\"symbol\"&&LKe.test(t))&&t>-1&&t%1==0&&t<e}ete.exports=MKe});var YP=_((hTt,tte)=>{var OKe=9007199254740991;function UKe(t){return typeof t==\"number\"&&t>-1&&t%1==0&&t<=OKe}tte.exports=UKe});var nte=_((gTt,rte)=>{var _Ke=pd(),HKe=YP(),jKe=Ju(),qKe=\"[object Arguments]\",GKe=\"[object Array]\",YKe=\"[object Boolean]\",WKe=\"[object Date]\",VKe=\"[object Error]\",KKe=\"[object Function]\",JKe=\"[object Map]\",zKe=\"[object Number]\",XKe=\"[object Object]\",ZKe=\"[object RegExp]\",$Ke=\"[object Set]\",eJe=\"[object String]\",tJe=\"[object WeakMap]\",rJe=\"[object ArrayBuffer]\",nJe=\"[object DataView]\",iJe=\"[object Float32Array]\",sJe=\"[object Float64Array]\",oJe=\"[object Int8Array]\",aJe=\"[object Int16Array]\",lJe=\"[object Int32Array]\",cJe=\"[object Uint8Array]\",uJe=\"[object Uint8ClampedArray]\",AJe=\"[object Uint16Array]\",fJe=\"[object Uint32Array]\",ui={};ui[iJe]=ui[sJe]=ui[oJe]=ui[aJe]=ui[lJe]=ui[cJe]=ui[uJe]=ui[AJe]=ui[fJe]=!0;ui[qKe]=ui[GKe]=ui[rJe]=ui[YKe]=ui[nJe]=ui[WKe]=ui[VKe]=ui[KKe]=ui[JKe]=ui[zKe]=ui[XKe]=ui[ZKe]=ui[$Ke]=ui[eJe]=ui[tJe]=!1;function pJe(t){return jKe(t)&&HKe(t.length)&&!!ui[_Ke(t)]}rte.exports=pJe});var WP=_((dTt,ite)=>{function hJe(t){return function(e){return t(e)}}ite.exports=hJe});var VP=_((_I,_y)=>{var gJe=HN(),ste=typeof _I==\"object\"&&_I&&!_I.nodeType&&_I,HI=ste&&typeof _y==\"object\"&&_y&&!_y.nodeType&&_y,dJe=HI&&HI.exports===ste,JN=dJe&&gJe.process,mJe=function(){try{var t=HI&&HI.require&&HI.require(\"util\").types;return t||JN&&JN.binding&&JN.binding(\"util\")}catch{}}();_y.exports=mJe});var KP=_((mTt,lte)=>{var yJe=nte(),EJe=WP(),ote=VP(),ate=ote&&ote.isTypedArray,CJe=ate?EJe(ate):yJe;lte.exports=CJe});var zN=_((yTt,cte)=>{var wJe=jee(),IJe=LI(),BJe=Hl(),vJe=OI(),DJe=UI(),PJe=KP(),SJe=Object.prototype,xJe=SJe.hasOwnProperty;function bJe(t,e){var r=BJe(t),o=!r&&IJe(t),a=!r&&!o&&vJe(t),n=!r&&!o&&!a&&PJe(t),u=r||o||a||n,A=u?wJe(t.length,String):[],p=A.length;for(var h in t)(e||xJe.call(t,h))&&!(u&&(h==\"length\"||a&&(h==\"offset\"||h==\"parent\")||n&&(h==\"buffer\"||h==\"byteLength\"||h==\"byteOffset\")||DJe(h,p)))&&A.push(h);return A}cte.exports=bJe});var JP=_((ETt,ute)=>{var kJe=Object.prototype;function QJe(t){var e=t&&t.constructor,r=typeof e==\"function\"&&e.prototype||kJe;return t===r}ute.exports=QJe});var XN=_((CTt,Ate)=>{function FJe(t,e){return function(r){return t(e(r))}}Ate.exports=FJe});var pte=_((wTt,fte)=>{var TJe=XN(),RJe=TJe(Object.keys,Object);fte.exports=RJe});var gte=_((ITt,hte)=>{var NJe=JP(),LJe=pte(),MJe=Object.prototype,OJe=MJe.hasOwnProperty;function UJe(t){if(!NJe(t))return LJe(t);var e=[];for(var r in Object(t))OJe.call(t,r)&&r!=\"constructor\"&&e.push(r);return e}hte.exports=UJe});var jI=_((BTt,dte)=>{var _Je=OP(),HJe=YP();function jJe(t){return t!=null&&HJe(t.length)&&!_Je(t)}dte.exports=jJe});var zP=_((vTt,mte)=>{var qJe=zN(),GJe=gte(),YJe=jI();function WJe(t){return YJe(t)?qJe(t):GJe(t)}mte.exports=WJe});var ZN=_((DTt,yte)=>{var VJe=VN(),KJe=GP(),JJe=zP();function zJe(t){return VJe(t,JJe,KJe)}yte.exports=zJe});var wte=_((PTt,Cte)=>{var Ete=ZN(),XJe=1,ZJe=Object.prototype,$Je=ZJe.hasOwnProperty;function eze(t,e,r,o,a,n){var u=r&XJe,A=Ete(t),p=A.length,h=Ete(e),E=h.length;if(p!=E&&!u)return!1;for(var I=p;I--;){var v=A[I];if(!(u?v in e:$Je.call(e,v)))return!1}var b=n.get(t),C=n.get(e);if(b&&C)return b==e&&C==t;var T=!0;n.set(t,e),n.set(e,t);for(var L=u;++I<p;){v=A[I];var U=t[v],J=e[v];if(o)var te=u?o(J,U,v,e,t,n):o(U,J,v,t,e,n);if(!(te===void 0?U===J||a(U,J,r,o,n):te)){T=!1;break}L||(L=v==\"constructor\")}if(T&&!L){var le=t.constructor,pe=e.constructor;le!=pe&&\"constructor\"in t&&\"constructor\"in e&&!(typeof le==\"function\"&&le instanceof le&&typeof pe==\"function\"&&pe instanceof pe)&&(T=!1)}return n.delete(t),n.delete(e),T}Cte.exports=eze});var Bte=_((STt,Ite)=>{var tze=Jp(),rze=_l(),nze=tze(rze,\"DataView\");Ite.exports=nze});var Dte=_((xTt,vte)=>{var ize=Jp(),sze=_l(),oze=ize(sze,\"Promise\");vte.exports=oze});var Ste=_((bTt,Pte)=>{var aze=Jp(),lze=_l(),cze=aze(lze,\"Set\");Pte.exports=cze});var bte=_((kTt,xte)=>{var uze=Jp(),Aze=_l(),fze=uze(Aze,\"WeakMap\");xte.exports=fze});var qI=_((QTt,Lte)=>{var $N=Bte(),eL=UP(),tL=Dte(),rL=Ste(),nL=bte(),Nte=pd(),Hy=qN(),kte=\"[object Map]\",pze=\"[object Object]\",Qte=\"[object Promise]\",Fte=\"[object Set]\",Tte=\"[object WeakMap]\",Rte=\"[object DataView]\",hze=Hy($N),gze=Hy(eL),dze=Hy(tL),mze=Hy(rL),yze=Hy(nL),hd=Nte;($N&&hd(new $N(new ArrayBuffer(1)))!=Rte||eL&&hd(new eL)!=kte||tL&&hd(tL.resolve())!=Qte||rL&&hd(new rL)!=Fte||nL&&hd(new nL)!=Tte)&&(hd=function(t){var e=Nte(t),r=e==pze?t.constructor:void 0,o=r?Hy(r):\"\";if(o)switch(o){case hze:return Rte;case gze:return kte;case dze:return Qte;case mze:return Fte;case yze:return Tte}return e});Lte.exports=hd});var Gte=_((FTt,qte)=>{var iL=HP(),Eze=GN(),Cze=Fee(),wze=wte(),Mte=qI(),Ote=Hl(),Ute=OI(),Ize=KP(),Bze=1,_te=\"[object Arguments]\",Hte=\"[object Array]\",XP=\"[object Object]\",vze=Object.prototype,jte=vze.hasOwnProperty;function Dze(t,e,r,o,a,n){var u=Ote(t),A=Ote(e),p=u?Hte:Mte(t),h=A?Hte:Mte(e);p=p==_te?XP:p,h=h==_te?XP:h;var E=p==XP,I=h==XP,v=p==h;if(v&&Ute(t)){if(!Ute(e))return!1;u=!0,E=!1}if(v&&!E)return n||(n=new iL),u||Ize(t)?Eze(t,e,r,o,a,n):Cze(t,e,p,r,o,a,n);if(!(r&Bze)){var b=E&&jte.call(t,\"__wrapped__\"),C=I&&jte.call(e,\"__wrapped__\");if(b||C){var T=b?t.value():t,L=C?e.value():e;return n||(n=new iL),a(T,L,r,o,n)}}return v?(n||(n=new iL),wze(t,e,r,o,a,n)):!1}qte.exports=Dze});var Kte=_((TTt,Vte)=>{var Pze=Gte(),Yte=Ju();function Wte(t,e,r,o,a){return t===e?!0:t==null||e==null||!Yte(t)&&!Yte(e)?t!==t&&e!==e:Pze(t,e,r,o,Wte,a)}Vte.exports=Wte});var zte=_((RTt,Jte)=>{var Sze=Kte();function xze(t,e){return Sze(t,e)}Jte.exports=xze});var sL=_((NTt,Xte)=>{var bze=Jp(),kze=function(){try{var t=bze(Object,\"defineProperty\");return t({},\"\",{}),t}catch{}}();Xte.exports=kze});var ZP=_((LTt,$te)=>{var Zte=sL();function Qze(t,e,r){e==\"__proto__\"&&Zte?Zte(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}$te.exports=Qze});var oL=_((MTt,ere)=>{var Fze=ZP(),Tze=Ry();function Rze(t,e,r){(r!==void 0&&!Tze(t[e],r)||r===void 0&&!(e in t))&&Fze(t,e,r)}ere.exports=Rze});var rre=_((OTt,tre)=>{function Nze(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A=u.length;A--;){var p=u[t?A:++a];if(r(n[p],p,n)===!1)break}return e}}tre.exports=Nze});var ire=_((UTt,nre)=>{var Lze=rre(),Mze=Lze();nre.exports=Mze});var aL=_((GI,jy)=>{var Oze=_l(),lre=typeof GI==\"object\"&&GI&&!GI.nodeType&&GI,sre=lre&&typeof jy==\"object\"&&jy&&!jy.nodeType&&jy,Uze=sre&&sre.exports===lre,ore=Uze?Oze.Buffer:void 0,are=ore?ore.allocUnsafe:void 0;function _ze(t,e){if(e)return t.slice();var r=t.length,o=are?are(r):new t.constructor(r);return t.copy(o),o}jy.exports=_ze});var $P=_((_Tt,ure)=>{var cre=YN();function Hze(t){var e=new t.constructor(t.byteLength);return new cre(e).set(new cre(t)),e}ure.exports=Hze});var lL=_((HTt,Are)=>{var jze=$P();function qze(t,e){var r=e?jze(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Are.exports=qze});var eS=_((jTt,fre)=>{function Gze(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e}fre.exports=Gze});var gre=_((qTt,hre)=>{var Yze=il(),pre=Object.create,Wze=function(){function t(){}return function(e){if(!Yze(e))return{};if(pre)return pre(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();hre.exports=Wze});var tS=_((GTt,dre)=>{var Vze=XN(),Kze=Vze(Object.getPrototypeOf,Object);dre.exports=Kze});var cL=_((YTt,mre)=>{var Jze=gre(),zze=tS(),Xze=JP();function Zze(t){return typeof t.constructor==\"function\"&&!Xze(t)?Jze(zze(t)):{}}mre.exports=Zze});var Ere=_((WTt,yre)=>{var $ze=jI(),eXe=Ju();function tXe(t){return eXe(t)&&$ze(t)}yre.exports=tXe});var uL=_((VTt,wre)=>{var rXe=pd(),nXe=tS(),iXe=Ju(),sXe=\"[object Object]\",oXe=Function.prototype,aXe=Object.prototype,Cre=oXe.toString,lXe=aXe.hasOwnProperty,cXe=Cre.call(Object);function uXe(t){if(!iXe(t)||rXe(t)!=sXe)return!1;var e=nXe(t);if(e===null)return!0;var r=lXe.call(e,\"constructor\")&&e.constructor;return typeof r==\"function\"&&r instanceof r&&Cre.call(r)==cXe}wre.exports=uXe});var AL=_((KTt,Ire)=>{function AXe(t,e){if(!(e===\"constructor\"&&typeof t[e]==\"function\")&&e!=\"__proto__\")return t[e]}Ire.exports=AXe});var rS=_((JTt,Bre)=>{var fXe=ZP(),pXe=Ry(),hXe=Object.prototype,gXe=hXe.hasOwnProperty;function dXe(t,e,r){var o=t[e];(!(gXe.call(t,e)&&pXe(o,r))||r===void 0&&!(e in t))&&fXe(t,e,r)}Bre.exports=dXe});var gd=_((zTt,vre)=>{var mXe=rS(),yXe=ZP();function EXe(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n<u;){var A=e[n],p=o?o(r[A],t[A],A,r,t):void 0;p===void 0&&(p=t[A]),a?yXe(r,A,p):mXe(r,A,p)}return r}vre.exports=EXe});var Pre=_((XTt,Dre)=>{function CXe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Dre.exports=CXe});var xre=_((ZTt,Sre)=>{var wXe=il(),IXe=JP(),BXe=Pre(),vXe=Object.prototype,DXe=vXe.hasOwnProperty;function PXe(t){if(!wXe(t))return BXe(t);var e=IXe(t),r=[];for(var o in t)o==\"constructor\"&&(e||!DXe.call(t,o))||r.push(o);return r}Sre.exports=PXe});var qy=_(($Tt,bre)=>{var SXe=zN(),xXe=xre(),bXe=jI();function kXe(t){return bXe(t)?SXe(t,!0):xXe(t)}bre.exports=kXe});var Qre=_((eRt,kre)=>{var QXe=gd(),FXe=qy();function TXe(t){return QXe(t,FXe(t))}kre.exports=TXe});var Mre=_((tRt,Lre)=>{var Fre=oL(),RXe=aL(),NXe=lL(),LXe=eS(),MXe=cL(),Tre=LI(),Rre=Hl(),OXe=Ere(),UXe=OI(),_Xe=OP(),HXe=il(),jXe=uL(),qXe=KP(),Nre=AL(),GXe=Qre();function YXe(t,e,r,o,a,n,u){var A=Nre(t,r),p=Nre(e,r),h=u.get(p);if(h){Fre(t,r,h);return}var E=n?n(A,p,r+\"\",t,e,u):void 0,I=E===void 0;if(I){var v=Rre(p),b=!v&&UXe(p),C=!v&&!b&&qXe(p);E=p,v||b||C?Rre(A)?E=A:OXe(A)?E=LXe(A):b?(I=!1,E=RXe(p,!0)):C?(I=!1,E=NXe(p,!0)):E=[]:jXe(p)||Tre(p)?(E=A,Tre(A)?E=GXe(A):(!HXe(A)||_Xe(A))&&(E=MXe(p))):I=!1}I&&(u.set(p,E),a(E,p,o,n,u),u.delete(p)),Fre(t,r,E)}Lre.exports=YXe});var _re=_((rRt,Ure)=>{var WXe=HP(),VXe=oL(),KXe=ire(),JXe=Mre(),zXe=il(),XXe=qy(),ZXe=AL();function Ore(t,e,r,o,a){t!==e&&KXe(e,function(n,u){if(a||(a=new WXe),zXe(n))JXe(t,e,u,r,Ore,o,a);else{var A=o?o(ZXe(t,u),n,u+\"\",t,e,a):void 0;A===void 0&&(A=n),VXe(t,u,A)}},XXe)}Ure.exports=Ore});var fL=_((nRt,Hre)=>{function $Xe(t){return t}Hre.exports=$Xe});var qre=_((iRt,jre)=>{function eZe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}jre.exports=eZe});var pL=_((sRt,Yre)=>{var tZe=qre(),Gre=Math.max;function rZe(t,e,r){return e=Gre(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=Gre(o.length-e,0),u=Array(n);++a<n;)u[a]=o[e+a];a=-1;for(var A=Array(e+1);++a<e;)A[a]=o[a];return A[e]=r(u),tZe(t,this,A)}}Yre.exports=rZe});var Vre=_((oRt,Wre)=>{function nZe(t){return function(){return t}}Wre.exports=nZe});var zre=_((aRt,Jre)=>{var iZe=Vre(),Kre=sL(),sZe=fL(),oZe=Kre?function(t,e){return Kre(t,\"toString\",{configurable:!0,enumerable:!1,value:iZe(e),writable:!0})}:sZe;Jre.exports=oZe});var Zre=_((lRt,Xre)=>{var aZe=800,lZe=16,cZe=Date.now;function uZe(t){var e=0,r=0;return function(){var o=cZe(),a=lZe-(o-r);if(r=o,a>0){if(++e>=aZe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Xre.exports=uZe});var hL=_((cRt,$re)=>{var AZe=zre(),fZe=Zre(),pZe=fZe(AZe);$re.exports=pZe});var tne=_((uRt,ene)=>{var hZe=fL(),gZe=pL(),dZe=hL();function mZe(t,e){return dZe(gZe(t,e,hZe),t+\"\")}ene.exports=mZe});var nne=_((ARt,rne)=>{var yZe=Ry(),EZe=jI(),CZe=UI(),wZe=il();function IZe(t,e,r){if(!wZe(r))return!1;var o=typeof e;return(o==\"number\"?EZe(r)&&CZe(e,r.length):o==\"string\"&&e in r)?yZe(r[e],t):!1}rne.exports=IZe});var sne=_((fRt,ine)=>{var BZe=tne(),vZe=nne();function DZe(t){return BZe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1]:void 0,u=a>2?r[2]:void 0;for(n=t.length>3&&typeof n==\"function\"?(a--,n):void 0,u&&vZe(r[0],r[1],u)&&(n=a<3?void 0:n,a=1),e=Object(e);++o<a;){var A=r[o];A&&t(e,A,o,n)}return e})}ine.exports=DZe});var ane=_((pRt,one)=>{var PZe=_re(),SZe=sne(),xZe=SZe(function(t,e,r,o){PZe(t,e,r,o)});one.exports=xZe});var je={};Kt(je,{AsyncActions:()=>mL,BufferStream:()=>dL,CachingStrategy:()=>Ene,DefaultStream:()=>yL,allSettledSafe:()=>Uc,assertNever:()=>CL,bufferStream:()=>Vy,buildIgnorePattern:()=>NZe,convertMapsToIndexableObjects:()=>iS,dynamicRequire:()=>vf,escapeRegExp:()=>kZe,getArrayWithDefault:()=>Gy,getFactoryWithDefault:()=>ol,getMapWithDefault:()=>Yy,getSetWithDefault:()=>dd,groupBy:()=>BL,isIndexableObject:()=>gL,isPathLike:()=>LZe,isTaggedYarnVersion:()=>bZe,makeDeferred:()=>dne,mapAndFilter:()=>sl,mapAndFind:()=>WI,mergeIntoTarget:()=>wne,overrideType:()=>QZe,parseBoolean:()=>VI,parseInt:()=>Ky,parseOptionalBoolean:()=>Cne,plural:()=>nS,prettifyAsyncErrors:()=>Wy,prettifySyncErrors:()=>wL,releaseAfterUseAsync:()=>TZe,replaceEnvVariables:()=>sS,sortMap:()=>ks,toMerged:()=>MZe,tryParseOptionalBoolean:()=>IL,validateEnum:()=>FZe});function bZe(t){return!!(pne.default.valid(t)&&t.match(/^[^-]+(-rc\\.[0-9]+)?$/))}function nS(t,{one:e,more:r,zero:o=r}){return t===0?o:t===1?e:r}function kZe(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function QZe(t){}function CL(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function FZe(t,e){let r=Object.values(t);if(!r.includes(e))throw new it(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(o=>JSON.stringify(o)).join(\", \")})`);return e}function sl(t,e){let r=[];for(let o of t){let a=e(o);a!==hne&&r.push(a)}return r}function WI(t,e){for(let r of t){let o=e(r);if(o!==gne)return o}}function gL(t){return typeof t==\"object\"&&t!==null}async function Uc(t){let e=await Promise.allSettled(t),r=[];for(let o of e){if(o.status===\"rejected\")throw o.reason;r.push(o.value)}return r}function iS(t){if(t instanceof Map&&(t=Object.fromEntries(t)),gL(t))for(let e of Object.keys(t)){let r=t[e];gL(r)&&(t[e]=iS(r))}return t}function ol(t,e,r){let o=t.get(e);return typeof o>\"u\"&&t.set(e,o=r()),o}function Gy(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=[]),r}function dd(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Set),r}function Yy(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Map),r}async function TZe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function Wy(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function wL(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Vy(t){return await new Promise((e,r)=>{let o=[];t.on(\"error\",a=>{r(a)}),t.on(\"data\",a=>{o.push(a)}),t.on(\"end\",()=>{e(Buffer.concat(o))})})}function dne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),resolve:t,reject:e}}function mne(t){return YI(ue.fromPortablePath(t))}function yne(path){let physicalPath=ue.fromPortablePath(path),currentCacheEntry=YI.cache[physicalPath];delete YI.cache[physicalPath];let result;try{result=mne(physicalPath);let freshCacheEntry=YI.cache[physicalPath],dynamicModule=eval(\"module\"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{YI.cache[physicalPath]=currentCacheEntry}return result}function RZe(t){let e=lne.get(t),r=oe.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let o=yne(t);return lne.set(t,{mtime:r.mtimeMs,instance:o}),o}function vf(t,{cachingStrategy:e=2}={}){switch(e){case 0:return yne(t);case 1:return RZe(t);case 2:return mne(t);default:throw new Error(\"Unsupported caching strategy\")}}function ks(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function NZe(t){return t.length===0?null:t.map(e=>`(${Ane.default.makeRe(e,{windows:!1,dot:!0}).source})`).join(\"|\")}function sS(t,{env:e}){let r=/\\${(?<variableName>[\\d\\w_]+)(?<colon>:)?(?:-(?<fallback>[^}]*))?}/g;return t.replace(r,(...o)=>{let{variableName:a,colon:n,fallback:u}=o[o.length-1],A=Object.hasOwn(e,a),p=e[a];if(p||A&&!n)return p;if(u!=null)return u;throw new it(`Environment variable not found (${a})`)})}function VI(t){switch(t){case\"true\":case\"1\":case 1:case!0:return!0;case\"false\":case\"0\":case 0:case!1:return!1;default:throw new Error(`Couldn't parse \"${t}\" as a boolean`)}}function Cne(t){return typeof t>\"u\"?t:VI(t)}function IL(t){try{return Cne(t)}catch{return null}}function LZe(t){return!!(ue.isAbsolute(t)||t.match(/^(\\.{1,2}|~)\\//))}function wne(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value:n}=(0,une.default)(o,...a,(u,A)=>{if(Array.isArray(u)&&Array.isArray(A)){for(let p of A)u.find(h=>(0,cne.default)(h,p))||u.push(p);return u}});return n}function MZe(...t){return wne({},...t)}function BL(t,e){let r=Object.create(null);for(let o of t){let a=o[e];r[a]??=[],r[a].push(o)}return r}function Ky(t){return typeof t==\"string\"?Number.parseInt(t,10):t}var cne,une,Ane,fne,pne,EL,hne,gne,dL,mL,yL,YI,lne,Ene,jl=Et(()=>{Pt();qt();cne=$e(zte()),une=$e(ane()),Ane=$e(Zo()),fne=$e(nd()),pne=$e(zn()),EL=Be(\"stream\");hne=Symbol();sl.skip=hne;gne=Symbol();WI.skip=gne;dL=class extends EL.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,o,a){if(o!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: BufferStream only accept buffers\");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};mL=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,fne.default)(e)}set(e,r){let o=this.deferred.get(e);typeof o>\"u\"&&this.deferred.set(e,o=dne());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&o.resolve()},n=>{this.promises.get(e)===a&&o.reject(n)}),o.promise}reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(o))}async wait(){await Promise.all(this.promises.values())}},yL=class extends EL.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,o,a){if(o!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: DefaultStream only accept buffers\");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},YI=eval(\"require\");lne=new Map;Ene=(o=>(o[o.NoCache=0]=\"NoCache\",o[o.FsTime=1]=\"FsTime\",o[o.Node=2]=\"Node\",o))(Ene||{})});var Jy,vL,DL,Ine=Et(()=>{Jy=(r=>(r.HARD=\"HARD\",r.SOFT=\"SOFT\",r))(Jy||{}),vL=(o=>(o.Dependency=\"Dependency\",o.PeerDependency=\"PeerDependency\",o.PeerDependencyMeta=\"PeerDependencyMeta\",o))(vL||{}),DL=(o=>(o.Inactive=\"inactive\",o.Redundant=\"redundant\",o.Active=\"active\",o))(DL||{})});var de={};Kt(de,{LogLevel:()=>uS,Style:()=>aS,Type:()=>yt,addLogFilterSupport:()=>zI,applyColor:()=>Ks,applyHyperlink:()=>Xy,applyStyle:()=>md,json:()=>yd,jsonOrPretty:()=>_Ze,mark:()=>kL,pretty:()=>Ot,prettyField:()=>zu,prettyList:()=>bL,prettyTruncatedLocatorList:()=>cS,stripAnsi:()=>zy.default,supportsColor:()=>lS,supportsHyperlinks:()=>xL,tuple:()=>_c});function Bne(t){let e=[\"KiB\",\"MiB\",\"GiB\",\"TiB\"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let o=1024**r;return`${Math.floor(t*100/o)/100} ${e[r-1]}`}function _c(t,e){return[e,t]}function md(t,e,r){return t.get(\"enableColors\")&&r&2&&(e=JI.default.bold(e)),e}function Ks(t,e,r){if(!t.get(\"enableColors\"))return e;let o=OZe.get(r);if(o===null)return e;let a=typeof o>\"u\"?r:SL.level>=3?o[0]:o[1],n=typeof a==\"number\"?PL.ansi256(a):a.startsWith(\"#\")?PL.hex(a):PL[a];if(typeof n!=\"function\")throw new Error(`Invalid format type ${a}`);return n(e)}function Xy(t,e,r){return t.get(\"enableHyperlinks\")?UZe?`\\x1B]8;;${r}\\x1B\\\\${e}\\x1B]8;;\\x1B\\\\`:`\\x1B]8;;${r}\\x07${e}\\x1B]8;;\\x07`:e}function Ot(t,e,r){if(e===null)return Ks(t,\"null\",yt.NULL);if(Object.hasOwn(oS,r))return oS[r].pretty(t,e);if(typeof e!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Ks(t,e,r)}function bL(t,e,r,{separator:o=\", \"}={}){return[...e].map(a=>Ot(t,a,r)).join(o)}function yd(t,e){if(t===null)return null;if(Object.hasOwn(oS,e))return oS[e].json(t);if(typeof t!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function _Ze(t,e,[r,o]){return t?yd(r,o):Ot(e,r,o)}function kL(t){return{Check:Ks(t,\"\\u2713\",\"green\"),Cross:Ks(t,\"\\u2718\",\"red\"),Question:Ks(t,\"?\",\"cyan\")}}function zu(t,{label:e,value:[r,o]}){return`${Ot(t,e,yt.CODE)}: ${Ot(t,r,o)}`}function cS(t,e,r){let o=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${jr(t,h)}, `,I=QL(h).length+2;if(o.length>0&&n<I)break;o.push([E,I]),n-=I,a.shift()}if(a.length===0)return o.map(([h])=>h).join(\"\").slice(0,-2);let u=\"X\".repeat(a.length.toString().length),A=`and ${u} more.`,p=a.length;for(;o.length>1&&n<A.length;)n+=o[o.length-1][1],p+=1,o.pop();return[o.map(([h])=>h).join(\"\"),A.replace(u,Ot(t,p,yt.NUMBER))].join(\"\")}function zI(t,{configuration:e}){let r=e.get(\"logFilters\"),o=new Map,a=new Map,n=[];for(let I of r){let v=I.get(\"level\");if(typeof v>\"u\")continue;let b=I.get(\"code\");typeof b<\"u\"&&o.set(b,v);let C=I.get(\"text\");typeof C<\"u\"&&a.set(C,v);let T=I.get(\"pattern\");typeof T<\"u\"&&n.push([vne.default.matcher(T,{contains:!0}),v])}n.reverse();let u=(I,v,b)=>{if(I===null||I===0)return b;let C=a.size>0||n.length>0?(0,zy.default)(v):v;if(a.size>0){let T=a.get(C);if(typeof T<\"u\")return T??b}if(n.length>0){for(let[T,L]of n)if(T(C))return L??b}if(o.size>0){let T=o.get(Wu(I));if(typeof T<\"u\")return T??b}return b},A=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(I,v,b,C){switch(u(v,b,C)){case\"info\":A.call(I,v,b);break;case\"warning\":p.call(I,v??0,b);break;case\"error\":h.call(I,v??0,b);break}};t.reportInfo=function(...I){return E(this,...I,\"info\")},t.reportWarning=function(...I){return E(this,...I,\"warning\")},t.reportError=function(...I){return E(this,...I,\"error\")}}var JI,KI,vne,zy,Dne,yt,aS,SL,lS,xL,PL,OZe,So,oS,UZe,uS,ql=Et(()=>{Pt();JI=$e(vN()),KI=$e(ed());qt();vne=$e(Zo()),zy=$e(MP()),Dne=Be(\"util\");pP();xo();yt={NO_HINT:\"NO_HINT\",ID:\"ID\",NULL:\"NULL\",SCOPE:\"SCOPE\",NAME:\"NAME\",RANGE:\"RANGE\",REFERENCE:\"REFERENCE\",NUMBER:\"NUMBER\",PATH:\"PATH\",URL:\"URL\",ADDED:\"ADDED\",REMOVED:\"REMOVED\",CODE:\"CODE\",INSPECT:\"INSPECT\",DURATION:\"DURATION\",SIZE:\"SIZE\",SIZE_DIFF:\"SIZE_DIFF\",IDENT:\"IDENT\",DESCRIPTOR:\"DESCRIPTOR\",LOCATOR:\"LOCATOR\",RESOLUTION:\"RESOLUTION\",DEPENDENT:\"DEPENDENT\",PACKAGE_EXTENSION:\"PACKAGE_EXTENSION\",SETTING:\"SETTING\",MARKDOWN:\"MARKDOWN\",MARKDOWN_INLINE:\"MARKDOWN_INLINE\"},aS=(e=>(e[e.BOLD=2]=\"BOLD\",e))(aS||{}),SL=KI.default.GITHUB_ACTIONS?{level:2}:JI.default.supportsColor?{level:JI.default.supportsColor.level}:{level:0},lS=SL.level!==0,xL=lS&&!KI.default.GITHUB_ACTIONS&&!KI.default.CIRCLE&&!KI.default.GITLAB,PL=new JI.default.Instance(SL),OZe=new Map([[yt.NO_HINT,null],[yt.NULL,[\"#a853b5\",129]],[yt.SCOPE,[\"#d75f00\",166]],[yt.NAME,[\"#d7875f\",173]],[yt.RANGE,[\"#00afaf\",37]],[yt.REFERENCE,[\"#87afff\",111]],[yt.NUMBER,[\"#ffd700\",220]],[yt.PATH,[\"#d75fd7\",170]],[yt.URL,[\"#d75fd7\",170]],[yt.ADDED,[\"#5faf00\",70]],[yt.REMOVED,[\"#ff3131\",160]],[yt.CODE,[\"#87afff\",111]],[yt.SIZE,[\"#ffd700\",220]]]),So=t=>t;oS={[yt.ID]:So({pretty:(t,e)=>typeof e==\"number\"?Ks(t,`${e}`,yt.NUMBER):Ks(t,e,yt.CODE),json:t=>t}),[yt.INSPECT]:So({pretty:(t,e)=>(0,Dne.inspect)(e,{depth:1/0,colors:t.get(\"enableColors\"),compact:!0,breakLength:1/0}),json:t=>t}),[yt.NUMBER]:So({pretty:(t,e)=>Ks(t,`${e}`,yt.NUMBER),json:t=>t}),[yt.IDENT]:So({pretty:(t,e)=>cs(t,e),json:t=>fn(t)}),[yt.LOCATOR]:So({pretty:(t,e)=>jr(t,e),json:t=>xa(t)}),[yt.DESCRIPTOR]:So({pretty:(t,e)=>qn(t,e),json:t=>Sa(t)}),[yt.RESOLUTION]:So({pretty:(t,{descriptor:e,locator:r})=>XI(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:Sa(t),locator:e!==null?xa(e):null})}),[yt.DEPENDENT]:So({pretty:(t,{locator:e,descriptor:r})=>FL(t,e,r),json:({locator:t,descriptor:e})=>({locator:xa(t),descriptor:Sa(e)})}),[yt.PACKAGE_EXTENSION]:So({pretty:(t,e)=>{switch(e.type){case\"Dependency\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Ks(t,\"dependencies\",yt.CODE)} \\u27A4 ${cs(t,e.descriptor)}`;case\"PeerDependency\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Ks(t,\"peerDependencies\",yt.CODE)} \\u27A4 ${cs(t,e.descriptor)}`;case\"PeerDependencyMeta\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Ks(t,\"peerDependenciesMeta\",yt.CODE)} \\u27A4 ${cs(t,Js(e.selector))} \\u27A4 ${Ks(t,e.key,yt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case\"Dependency\":return`${fn(t.parentDescriptor)} > ${fn(t.descriptor)}`;case\"PeerDependency\":return`${fn(t.parentDescriptor)} >> ${fn(t.descriptor)}`;case\"PeerDependencyMeta\":return`${fn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[yt.SETTING]:So({pretty:(t,e)=>(t.get(e),Xy(t,Ks(t,e,yt.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[yt.DURATION]:So({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),o=Math.ceil((e-r*60*1e3)/1e3);return o===0?`${r}m`:`${r}m ${o}s`}else{let r=Math.floor(e/1e3),o=e-r*1e3;return o===0?`${r}s`:`${r}s ${o}ms`}},json:t=>t}),[yt.SIZE]:So({pretty:(t,e)=>Ks(t,Bne(e),yt.NUMBER),json:t=>t}),[yt.SIZE_DIFF]:So({pretty:(t,e)=>{let r=e>=0?\"+\":\"-\",o=r===\"+\"?yt.REMOVED:yt.ADDED;return Ks(t,`${r} ${Bne(Math.max(Math.abs(e),1))}`,o)},json:t=>t}),[yt.PATH]:So({pretty:(t,e)=>Ks(t,ue.fromPortablePath(e),yt.PATH),json:t=>ue.fromPortablePath(t)}),[yt.MARKDOWN]:So({pretty:(t,{text:e,format:r,paragraphs:o})=>Do(e,{format:r,paragraphs:o}),json:({text:t})=>t}),[yt.MARKDOWN_INLINE]:So({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\\n])*?)\\1/g,(r,o,a)=>Ot(t,o+a+o,yt.CODE)),e=e.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(r,o,a)=>md(t,a,2)),e),json:t=>t})};UZe=!!process.env.KONSOLE_VERSION;uS=(a=>(a.Error=\"error\",a.Warning=\"warning\",a.Info=\"info\",a.Discard=\"discard\",a))(uS||{})});var Pne=_(Zy=>{\"use strict\";Object.defineProperty(Zy,\"__esModule\",{value:!0});Zy.splitWhen=Zy.flatten=void 0;function HZe(t){return t.reduce((e,r)=>[].concat(e,r),[])}Zy.flatten=HZe;function jZe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o].push(a);return r}Zy.splitWhen=jZe});var Sne=_(AS=>{\"use strict\";Object.defineProperty(AS,\"__esModule\",{value:!0});AS.isEnoentCodeError=void 0;function qZe(t){return t.code===\"ENOENT\"}AS.isEnoentCodeError=qZe});var xne=_(fS=>{\"use strict\";Object.defineProperty(fS,\"__esModule\",{value:!0});fS.createDirentFromStats=void 0;var TL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function GZe(t,e){return new TL(t,e)}fS.createDirentFromStats=GZe});var bne=_(Xu=>{\"use strict\";Object.defineProperty(Xu,\"__esModule\",{value:!0});Xu.removeLeadingDotSegment=Xu.escape=Xu.makeAbsolute=Xu.unixify=void 0;var YZe=Be(\"path\"),WZe=2,VZe=/(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;function KZe(t){return t.replace(/\\\\/g,\"/\")}Xu.unixify=KZe;function JZe(t,e){return YZe.resolve(t,e)}Xu.makeAbsolute=JZe;function zZe(t){return t.replace(VZe,\"\\\\$2\")}Xu.escape=zZe;function XZe(t){if(t.charAt(0)===\".\"){let e=t.charAt(1);if(e===\"/\"||e===\"\\\\\")return t.slice(WZe)}return t}Xu.removeLeadingDotSegment=XZe});var Qne=_((xRt,kne)=>{kne.exports=function(e){if(typeof e!=\"string\"||e===\"\")return!1;for(var r;r=/(\\\\).|([@?!+*]\\(.*\\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Rne=_((bRt,Tne)=>{var ZZe=Qne(),Fne={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},$Ze=function(t){if(t[0]===\"!\")return!0;for(var e=0,r=-2,o=-2,a=-2,n=-2,u=-2;e<t.length;){if(t[e]===\"*\"||t[e+1]===\"?\"&&/[\\].+)]/.test(t[e])||o!==-1&&t[e]===\"[\"&&t[e+1]!==\"]\"&&(o<e&&(o=t.indexOf(\"]\",e)),o>e&&(u===-1||u>o||(u=t.indexOf(\"\\\\\",e),u===-1||u>o)))||a!==-1&&t[e]===\"{\"&&t[e+1]!==\"}\"&&(a=t.indexOf(\"}\",e),a>e&&(u=t.indexOf(\"\\\\\",e),u===-1||u>a))||n!==-1&&t[e]===\"(\"&&t[e+1]===\"?\"&&/[:!=]/.test(t[e+2])&&t[e+3]!==\")\"&&(n=t.indexOf(\")\",e),n>e&&(u=t.indexOf(\"\\\\\",e),u===-1||u>n))||r!==-1&&t[e]===\"(\"&&t[e+1]!==\"|\"&&(r<e&&(r=t.indexOf(\"|\",e)),r!==-1&&t[r+1]!==\")\"&&(n=t.indexOf(\")\",r),n>r&&(u=t.indexOf(\"\\\\\",r),u===-1||u>n))))return!0;if(t[e]===\"\\\\\"){var A=t[e+1];e+=2;var p=Fne[A];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]===\"!\")return!0}else e++}return!1},e$e=function(t){if(t[0]===\"!\")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\\]]/.test(t[e]))return!0;if(t[e]===\"\\\\\"){var r=t[e+1];e+=2;var o=Fne[r];if(o){var a=t.indexOf(o,e);a!==-1&&(e=a+1)}if(t[e]===\"!\")return!0}else e++}return!1};Tne.exports=function(e,r){if(typeof e!=\"string\"||e===\"\")return!1;if(ZZe(e))return!0;var o=$Ze;return r&&r.strict===!1&&(o=e$e),o(e)}});var Lne=_((kRt,Nne)=>{\"use strict\";var t$e=Rne(),r$e=Be(\"path\").posix.dirname,n$e=Be(\"os\").platform()===\"win32\",RL=\"/\",i$e=/\\\\/g,s$e=/[\\{\\[].*[\\}\\]]$/,o$e=/(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/,a$e=/\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;Nne.exports=function(e,r){var o=Object.assign({flipBackslashes:!0},r);o.flipBackslashes&&n$e&&e.indexOf(RL)<0&&(e=e.replace(i$e,RL)),s$e.test(e)&&(e+=RL),e+=\"a\";do e=r$e(e);while(t$e(e)||o$e.test(e));return e.replace(a$e,\"$1\")}});var Gne=_(qr=>{\"use strict\";Object.defineProperty(qr,\"__esModule\",{value:!0});qr.matchAny=qr.convertPatternsToRe=qr.makeRe=qr.getPatternParts=qr.expandBraceExpansion=qr.expandPatternsWithBraceExpansion=qr.isAffectDepthOfReadingPattern=qr.endsWithSlashGlobStar=qr.hasGlobStar=qr.getBaseDirectory=qr.isPatternRelatedToParentDirectory=qr.getPatternsOutsideCurrentDirectory=qr.getPatternsInsideCurrentDirectory=qr.getPositivePatterns=qr.getNegativePatterns=qr.isPositivePattern=qr.isNegativePattern=qr.convertToNegativePattern=qr.convertToPositivePattern=qr.isDynamicPattern=qr.isStaticPattern=void 0;var l$e=Be(\"path\"),c$e=Lne(),NL=Zo(),Mne=\"**\",u$e=\"\\\\\",A$e=/[*?]|^!/,f$e=/\\[[^[]*]/,p$e=/(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/,h$e=/[!*+?@]\\([^(]*\\)/,g$e=/,|\\.\\./;function One(t,e={}){return!Une(t,e)}qr.isStaticPattern=One;function Une(t,e={}){return t===\"\"?!1:!!(e.caseSensitiveMatch===!1||t.includes(u$e)||A$e.test(t)||f$e.test(t)||p$e.test(t)||e.extglob!==!1&&h$e.test(t)||e.braceExpansion!==!1&&d$e(t))}qr.isDynamicPattern=Une;function d$e(t){let e=t.indexOf(\"{\");if(e===-1)return!1;let r=t.indexOf(\"}\",e+1);if(r===-1)return!1;let o=t.slice(e,r);return g$e.test(o)}function m$e(t){return pS(t)?t.slice(1):t}qr.convertToPositivePattern=m$e;function y$e(t){return\"!\"+t}qr.convertToNegativePattern=y$e;function pS(t){return t.startsWith(\"!\")&&t[1]!==\"(\"}qr.isNegativePattern=pS;function _ne(t){return!pS(t)}qr.isPositivePattern=_ne;function E$e(t){return t.filter(pS)}qr.getNegativePatterns=E$e;function C$e(t){return t.filter(_ne)}qr.getPositivePatterns=C$e;function w$e(t){return t.filter(e=>!LL(e))}qr.getPatternsInsideCurrentDirectory=w$e;function I$e(t){return t.filter(LL)}qr.getPatternsOutsideCurrentDirectory=I$e;function LL(t){return t.startsWith(\"..\")||t.startsWith(\"./..\")}qr.isPatternRelatedToParentDirectory=LL;function B$e(t){return c$e(t,{flipBackslashes:!1})}qr.getBaseDirectory=B$e;function v$e(t){return t.includes(Mne)}qr.hasGlobStar=v$e;function Hne(t){return t.endsWith(\"/\"+Mne)}qr.endsWithSlashGlobStar=Hne;function D$e(t){let e=l$e.basename(t);return Hne(t)||One(e)}qr.isAffectDepthOfReadingPattern=D$e;function P$e(t){return t.reduce((e,r)=>e.concat(jne(r)),[])}qr.expandPatternsWithBraceExpansion=P$e;function jne(t){return NL.braces(t,{expand:!0,nodupes:!0})}qr.expandBraceExpansion=jne;function S$e(t,e){let{parts:r}=NL.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith(\"/\")&&(r[0]=r[0].slice(1),r.unshift(\"\")),r}qr.getPatternParts=S$e;function qne(t,e){return NL.makeRe(t,e)}qr.makeRe=qne;function x$e(t,e){return t.map(r=>qne(r,e))}qr.convertPatternsToRe=x$e;function b$e(t,e){return e.some(r=>r.test(t))}qr.matchAny=b$e});var Kne=_((FRt,Vne)=>{\"use strict\";var k$e=Be(\"stream\"),Yne=k$e.PassThrough,Q$e=Array.prototype.slice;Vne.exports=F$e;function F$e(){let t=[],e=Q$e.call(arguments),r=!1,o=e[e.length-1];o&&!Array.isArray(o)&&o.pipe==null?e.pop():o={};let a=o.end!==!1,n=o.pipeError===!0;o.objectMode==null&&(o.objectMode=!0),o.highWaterMark==null&&(o.highWaterMark=64*1024);let u=Yne(o);function A(){for(let E=0,I=arguments.length;E<I;E++)t.push(Wne(arguments[E],o));return p(),this}function p(){if(r)return;r=!0;let E=t.shift();if(!E){process.nextTick(h);return}Array.isArray(E)||(E=[E]);let I=E.length+1;function v(){--I>0||(r=!1,p())}function b(C){function T(){C.removeListener(\"merge2UnpipeEnd\",T),C.removeListener(\"end\",T),n&&C.removeListener(\"error\",L),v()}function L(U){u.emit(\"error\",U)}if(C._readableState.endEmitted)return v();C.on(\"merge2UnpipeEnd\",T),C.on(\"end\",T),n&&C.on(\"error\",L),C.pipe(u,{end:!1}),C.resume()}for(let C=0;C<E.length;C++)b(E[C]);v()}function h(){r=!1,u.emit(\"queueDrain\"),a&&u.end()}return u.setMaxListeners(0),u.add=A,u.on(\"unpipe\",function(E){E.emit(\"merge2UnpipeEnd\")}),e.length&&A.apply(null,e),u}function Wne(t,e){if(Array.isArray(t))for(let r=0,o=t.length;r<o;r++)t[r]=Wne(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(Yne(e))),!t._readableState||!t.pause||!t.pipe)throw new Error(\"Only readable stream can be merged.\");t.pause()}return t}});var zne=_(hS=>{\"use strict\";Object.defineProperty(hS,\"__esModule\",{value:!0});hS.merge=void 0;var T$e=Kne();function R$e(t){let e=T$e(t);return t.forEach(r=>{r.once(\"error\",o=>e.emit(\"error\",o))}),e.once(\"close\",()=>Jne(t)),e.once(\"end\",()=>Jne(t)),e}hS.merge=R$e;function Jne(t){t.forEach(e=>e.emit(\"close\"))}});var Xne=_($y=>{\"use strict\";Object.defineProperty($y,\"__esModule\",{value:!0});$y.isEmpty=$y.isString=void 0;function N$e(t){return typeof t==\"string\"}$y.isString=N$e;function L$e(t){return t===\"\"}$y.isEmpty=L$e});var Df=_(bo=>{\"use strict\";Object.defineProperty(bo,\"__esModule\",{value:!0});bo.string=bo.stream=bo.pattern=bo.path=bo.fs=bo.errno=bo.array=void 0;var M$e=Pne();bo.array=M$e;var O$e=Sne();bo.errno=O$e;var U$e=xne();bo.fs=U$e;var _$e=bne();bo.path=_$e;var H$e=Gne();bo.pattern=H$e;var j$e=zne();bo.stream=j$e;var q$e=Xne();bo.string=q$e});var eie=_(ko=>{\"use strict\";Object.defineProperty(ko,\"__esModule\",{value:!0});ko.convertPatternGroupToTask=ko.convertPatternGroupsToTasks=ko.groupPatternsByBaseDirectory=ko.getNegativePatternsAsPositive=ko.getPositivePatterns=ko.convertPatternsToTasks=ko.generate=void 0;var Pf=Df();function G$e(t,e){let r=Zne(t),o=$ne(t,e.ignore),a=r.filter(p=>Pf.pattern.isStaticPattern(p,e)),n=r.filter(p=>Pf.pattern.isDynamicPattern(p,e)),u=ML(a,o,!1),A=ML(n,o,!0);return u.concat(A)}ko.generate=G$e;function ML(t,e,r){let o=[],a=Pf.pattern.getPatternsOutsideCurrentDirectory(t),n=Pf.pattern.getPatternsInsideCurrentDirectory(t),u=OL(a),A=OL(n);return o.push(...UL(u,e,r)),\".\"in A?o.push(_L(\".\",n,e,r)):o.push(...UL(A,e,r)),o}ko.convertPatternsToTasks=ML;function Zne(t){return Pf.pattern.getPositivePatterns(t)}ko.getPositivePatterns=Zne;function $ne(t,e){return Pf.pattern.getNegativePatterns(t).concat(e).map(Pf.pattern.convertToPositivePattern)}ko.getNegativePatternsAsPositive=$ne;function OL(t){let e={};return t.reduce((r,o)=>{let a=Pf.pattern.getBaseDirectory(o);return a in r?r[a].push(o):r[a]=[o],r},e)}ko.groupPatternsByBaseDirectory=OL;function UL(t,e,r){return Object.keys(t).map(o=>_L(o,t[o],e,r))}ko.convertPatternGroupsToTasks=UL;function _L(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Pf.pattern.convertToNegativePattern))}}ko.convertPatternGroupToTask=_L});var rie=_(eE=>{\"use strict\";Object.defineProperty(eE,\"__esModule\",{value:!0});eE.removeDuplicateSlashes=eE.transform=void 0;var Y$e=/(?!^)\\/{2,}/g;function W$e(t){return t.map(e=>tie(e))}eE.transform=W$e;function tie(t){return t.replace(Y$e,\"/\")}eE.removeDuplicateSlashes=tie});var iie=_(gS=>{\"use strict\";Object.defineProperty(gS,\"__esModule\",{value:!0});gS.read=void 0;function V$e(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){nie(r,o);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){HL(r,a);return}e.fs.stat(t,(n,u)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){nie(r,n);return}HL(r,a);return}e.markSymbolicLink&&(u.isSymbolicLink=()=>!0),HL(r,u)})})}gS.read=V$e;function nie(t,e){t(e)}function HL(t,e){t(null,e)}});var sie=_(dS=>{\"use strict\";Object.defineProperty(dS,\"__esModule\",{value:!0});dS.read=void 0;function K$e(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let o=e.fs.statSync(t);return e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),o}catch(o){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw o}}dS.read=K$e});var oie=_(zp=>{\"use strict\";Object.defineProperty(zp,\"__esModule\",{value:!0});zp.createFileSystemAdapter=zp.FILE_SYSTEM_ADAPTER=void 0;var mS=Be(\"fs\");zp.FILE_SYSTEM_ADAPTER={lstat:mS.lstat,stat:mS.stat,lstatSync:mS.lstatSync,statSync:mS.statSync};function J$e(t){return t===void 0?zp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},zp.FILE_SYSTEM_ADAPTER),t)}zp.createFileSystemAdapter=J$e});var aie=_(qL=>{\"use strict\";Object.defineProperty(qL,\"__esModule\",{value:!0});var z$e=oie(),jL=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=z$e.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};qL.default=jL});var Ed=_(Xp=>{\"use strict\";Object.defineProperty(Xp,\"__esModule\",{value:!0});Xp.statSync=Xp.stat=Xp.Settings=void 0;var lie=iie(),X$e=sie(),YL=aie();Xp.Settings=YL.default;function Z$e(t,e,r){if(typeof e==\"function\"){lie.read(t,WL(),e);return}lie.read(t,WL(e),r)}Xp.stat=Z$e;function $$e(t,e){let r=WL(e);return X$e.read(t,r)}Xp.statSync=$$e;function WL(t={}){return t instanceof YL.default?t:new YL.default(t)}});var uie=_((qRt,cie)=>{cie.exports=eet;function eet(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=Object.keys(t),r={},o=a.length);function u(p){function h(){e&&e(p,r),e=null}n?process.nextTick(h):h()}function A(p,h,E){r[p]=E,(--o===0||h)&&u(h)}o?a?a.forEach(function(p){t[p](function(h,E){A(p,h,E)})}):t.forEach(function(p,h){p(function(E,I){A(h,E,I)})}):u(null),n=!1}});var VL=_(ES=>{\"use strict\";Object.defineProperty(ES,\"__esModule\",{value:!0});ES.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var yS=process.versions.node.split(\".\");if(yS[0]===void 0||yS[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var Aie=Number.parseInt(yS[0],10),tet=Number.parseInt(yS[1],10),fie=10,ret=10,net=Aie>fie,iet=Aie===fie&&tet>=ret;ES.IS_SUPPORT_READDIR_WITH_FILE_TYPES=net||iet});var pie=_(CS=>{\"use strict\";Object.defineProperty(CS,\"__esModule\",{value:!0});CS.createDirentFromStats=void 0;var KL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function set(t,e){return new KL(t,e)}CS.createDirentFromStats=set});var JL=_(wS=>{\"use strict\";Object.defineProperty(wS,\"__esModule\",{value:!0});wS.fs=void 0;var oet=pie();wS.fs=oet});var zL=_(IS=>{\"use strict\";Object.defineProperty(IS,\"__esModule\",{value:!0});IS.joinPathSegments=void 0;function aet(t,e,r){return t.endsWith(r)?t+e:t+r+e}IS.joinPathSegments=aet});var Eie=_(Zp=>{\"use strict\";Object.defineProperty(Zp,\"__esModule\",{value:!0});Zp.readdir=Zp.readdirWithFileTypes=Zp.read=void 0;var cet=Ed(),hie=uie(),uet=VL(),gie=JL(),die=zL();function Aet(t,e,r){if(!e.stats&&uet.IS_SUPPORT_READDIR_WITH_FILE_TYPES){mie(t,e,r);return}yie(t,e,r)}Zp.read=Aet;function mie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==null){BS(r,o);return}let n=a.map(A=>({dirent:A,name:A.name,path:die.joinPathSegments(t,A.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){XL(r,n);return}let u=n.map(A=>fet(A,e));hie(u,(A,p)=>{if(A!==null){BS(r,A);return}XL(r,p)})})}Zp.readdirWithFileTypes=mie;function fet(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(o,a)=>{if(o!==null){if(e.throwErrorOnBrokenSymbolicLink){r(o);return}r(null,t);return}t.dirent=gie.fs.createDirentFromStats(t.name,a),r(null,t)})}}function yie(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){BS(r,o);return}let n=a.map(u=>{let A=die.joinPathSegments(t,u,e.pathSegmentSeparator);return p=>{cet.stat(A,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let I={name:u,path:A,dirent:gie.fs.createDirentFromStats(u,E)};e.stats&&(I.stats=E),p(null,I)})}});hie(n,(u,A)=>{if(u!==null){BS(r,u);return}XL(r,A)})})}Zp.readdir=yie;function BS(t,e){t(e)}function XL(t,e){t(null,e)}});var vie=_($p=>{\"use strict\";Object.defineProperty($p,\"__esModule\",{value:!0});$p.readdir=$p.readdirWithFileTypes=$p.read=void 0;var pet=Ed(),het=VL(),Cie=JL(),wie=zL();function get(t,e){return!e.stats&&het.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Iie(t,e):Bie(t,e)}$p.read=get;function Iie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{let a={dirent:o,name:o.name,path:wie.joinPathSegments(t,o.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=Cie.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}$p.readdirWithFileTypes=Iie;function Bie(t,e){return e.fs.readdirSync(t).map(o=>{let a=wie.joinPathSegments(t,o,e.pathSegmentSeparator),n=pet.statSync(a,e.fsStatSettings),u={name:o,path:a,dirent:Cie.fs.createDirentFromStats(o,n)};return e.stats&&(u.stats=n),u})}$p.readdir=Bie});var Die=_(eh=>{\"use strict\";Object.defineProperty(eh,\"__esModule\",{value:!0});eh.createFileSystemAdapter=eh.FILE_SYSTEM_ADAPTER=void 0;var tE=Be(\"fs\");eh.FILE_SYSTEM_ADAPTER={lstat:tE.lstat,stat:tE.stat,lstatSync:tE.lstatSync,statSync:tE.statSync,readdir:tE.readdir,readdirSync:tE.readdirSync};function det(t){return t===void 0?eh.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},eh.FILE_SYSTEM_ADAPTER),t)}eh.createFileSystemAdapter=det});var Pie=_($L=>{\"use strict\";Object.defineProperty($L,\"__esModule\",{value:!0});var met=Be(\"path\"),yet=Ed(),Eet=Die(),ZL=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=Eet.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,met.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new yet.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};$L.default=ZL});var vS=_(th=>{\"use strict\";Object.defineProperty(th,\"__esModule\",{value:!0});th.Settings=th.scandirSync=th.scandir=void 0;var Sie=Eie(),Cet=vie(),eM=Pie();th.Settings=eM.default;function wet(t,e,r){if(typeof e==\"function\"){Sie.read(t,tM(),e);return}Sie.read(t,tM(e),r)}th.scandir=wet;function Iet(t,e){let r=tM(e);return Cet.read(t,r)}th.scandirSync=Iet;function tM(t={}){return t instanceof eM.default?t:new eM.default(t)}});var bie=_(($Rt,xie)=>{\"use strict\";function Bet(t){var e=new t,r=e;function o(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:o,release:a}}xie.exports=Bet});var Qie=_((eNt,rM)=>{\"use strict\";var vet=bie();function kie(t,e,r){if(typeof t==\"function\"&&(r=e,e=t,t=null),r<1)throw new Error(\"fastqueue concurrency must be greater than 1\");var o=vet(Det),a=null,n=null,u=0,A=null,p={push:T,drain:Gl,saturated:Gl,pause:E,paused:!1,concurrency:r,running:h,resume:b,idle:C,length:I,getQueue:v,unshift:L,empty:Gl,kill:J,killAndDrain:te,error:le};return p;function h(){return u}function E(){p.paused=!0}function I(){for(var pe=a,Ae=0;pe;)pe=pe.next,Ae++;return Ae}function v(){for(var pe=a,Ae=[];pe;)Ae.push(pe.value),pe=pe.next;return Ae}function b(){if(!!p.paused){p.paused=!1;for(var pe=0;pe<p.concurrency;pe++)u++,U()}}function C(){return u===0&&p.length()===0}function T(pe,Ae){var ye=o.get();ye.context=t,ye.release=U,ye.value=pe,ye.callback=Ae||Gl,ye.errorHandler=A,u===p.concurrency||p.paused?n?(n.next=ye,n=ye):(a=ye,n=ye,p.saturated()):(u++,e.call(t,ye.value,ye.worked))}function L(pe,Ae){var ye=o.get();ye.context=t,ye.release=U,ye.value=pe,ye.callback=Ae||Gl,u===p.concurrency||p.paused?a?(ye.next=a,a=ye):(a=ye,n=ye,p.saturated()):(u++,e.call(t,ye.value,ye.worked))}function U(pe){pe&&o.release(pe);var Ae=a;Ae?p.paused?u--:(n===a&&(n=null),a=Ae.next,Ae.next=null,e.call(t,Ae.value,Ae.worked),n===null&&p.empty()):--u===0&&p.drain()}function J(){a=null,n=null,p.drain=Gl}function te(){a=null,n=null,p.drain(),p.drain=Gl}function le(pe){A=pe}}function Gl(){}function Det(){this.value=null,this.callback=Gl,this.next=null,this.release=Gl,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,o){var a=t.callback,n=t.errorHandler,u=t.value;t.value=null,t.callback=Gl,t.errorHandler&&n(r,u),a.call(t.context,r,o),t.release(t)}}function Pet(t,e,r){typeof t==\"function\"&&(r=e,e=t,t=null);function o(E,I){e.call(this,E).then(function(v){I(null,v)},I)}var a=kie(t,o,r),n=a.push,u=a.unshift;return a.push=A,a.unshift=p,a.drained=h,a;function A(E){var I=new Promise(function(v,b){n(E,function(C,T){if(C){b(C);return}v(T)})});return I.catch(Gl),I}function p(E){var I=new Promise(function(v,b){u(E,function(C,T){if(C){b(C);return}v(T)})});return I.catch(Gl),I}function h(){var E=a.drain,I=new Promise(function(v){a.drain=function(){E(),v()}});return I}}rM.exports=kie;rM.exports.promise=Pet});var DS=_(Zu=>{\"use strict\";Object.defineProperty(Zu,\"__esModule\",{value:!0});Zu.joinPathSegments=Zu.replacePathSegmentSeparator=Zu.isAppliedFilter=Zu.isFatalError=void 0;function xet(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Zu.isFatalError=xet;function bet(t,e){return t===null||t(e)}Zu.isAppliedFilter=bet;function ket(t,e){return t.split(/[/\\\\]/).join(e)}Zu.replacePathSegmentSeparator=ket;function Qet(t,e,r){return t===\"\"?e:t.endsWith(r)?t+e:t+r+e}Zu.joinPathSegments=Qet});var sM=_(iM=>{\"use strict\";Object.defineProperty(iM,\"__esModule\",{value:!0});var Fet=DS(),nM=class{constructor(e,r){this._root=e,this._settings=r,this._root=Fet.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};iM.default=nM});var lM=_(aM=>{\"use strict\";Object.defineProperty(aM,\"__esModule\",{value:!0});var Tet=Be(\"events\"),Ret=vS(),Net=Qie(),PS=DS(),Let=sM(),oM=class extends Let.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=Ret.scandir,this._emitter=new Tet.EventEmitter,this._queue=Net(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit(\"end\")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error(\"The reader is already destroyed\");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on(\"entry\",e)}onError(e){this._emitter.once(\"error\",e)}onEnd(e){this._emitter.once(\"end\",e)}_pushToQueue(e,r){let o={directory:e,base:r};this._queue.push(o,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(o,a)=>{if(o!==null){r(o,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!PS.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit(\"error\",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let o=e.path;r!==void 0&&(e.path=PS.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),PS.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&PS.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit(\"entry\",e)}};aM.default=oM});var Fie=_(uM=>{\"use strict\";Object.defineProperty(uM,\"__esModule\",{value:!0});var Met=lM(),cM=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Met.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{Oet(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Uet(e,this._storage)}),this._reader.read()}};uM.default=cM;function Oet(t,e){t(e)}function Uet(t,e){t(null,e)}});var Tie=_(fM=>{\"use strict\";Object.defineProperty(fM,\"__esModule\",{value:!0});var _et=Be(\"stream\"),Het=lM(),AM=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Het.default(this._root,this._settings),this._stream=new _et.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit(\"error\",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};fM.default=AM});var Rie=_(hM=>{\"use strict\";Object.defineProperty(hM,\"__esModule\",{value:!0});var jet=vS(),SS=DS(),qet=sM(),pM=class extends qet.default{constructor(){super(...arguments),this._scandir=jet.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let o=this._scandir(e,this._settings.fsScandirSettings);for(let a of o)this._handleEntry(a,r)}catch(o){this._handleError(o)}}_handleError(e){if(!!SS.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=SS.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),SS.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&SS.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};hM.default=pM});var Nie=_(dM=>{\"use strict\";Object.defineProperty(dM,\"__esModule\",{value:!0});var Get=Rie(),gM=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Get.default(this._root,this._settings)}read(){return this._reader.read()}};dM.default=gM});var Lie=_(yM=>{\"use strict\";Object.defineProperty(yM,\"__esModule\",{value:!0});var Yet=Be(\"path\"),Wet=vS(),mM=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Yet.sep),this.fsScandirSettings=new Wet.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};yM.default=mM});var bS=_($u=>{\"use strict\";Object.defineProperty($u,\"__esModule\",{value:!0});$u.Settings=$u.walkStream=$u.walkSync=$u.walk=void 0;var Mie=Fie(),Vet=Tie(),Ket=Nie(),EM=Lie();$u.Settings=EM.default;function Jet(t,e,r){if(typeof e==\"function\"){new Mie.default(t,xS()).read(e);return}new Mie.default(t,xS(e)).read(r)}$u.walk=Jet;function zet(t,e){let r=xS(e);return new Ket.default(t,r).read()}$u.walkSync=zet;function Xet(t,e){let r=xS(e);return new Vet.default(t,r).read()}$u.walkStream=Xet;function xS(t={}){return t instanceof EM.default?t:new EM.default(t)}});var kS=_(wM=>{\"use strict\";Object.defineProperty(wM,\"__esModule\",{value:!0});var Zet=Be(\"path\"),$et=Ed(),Oie=Df(),CM=class{constructor(e){this._settings=e,this._fsStatSettings=new $et.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return Zet.resolve(this._settings.cwd,e)}_makeEntry(e,r){let o={name:r,path:r,dirent:Oie.fs.createDirentFromStats(r,e)};return this._settings.stats&&(o.stats=e),o}_isFatalError(e){return!Oie.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};wM.default=CM});var vM=_(BM=>{\"use strict\";Object.defineProperty(BM,\"__esModule\",{value:!0});var ett=Be(\"stream\"),ttt=Ed(),rtt=bS(),ntt=kS(),IM=class extends ntt.default{constructor(){super(...arguments),this._walkStream=rtt.walkStream,this._stat=ttt.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let o=e.map(this._getFullEntryPath,this),a=new ett.PassThrough({objectMode:!0});a._write=(n,u,A)=>this._getEntry(o[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===o.length-1&&a.end(),A()}).catch(A);for(let n=0;n<o.length;n++)a.write(n);return a}_getEntry(e,r,o){return this._getStat(e).then(a=>this._makeEntry(a,r)).catch(a=>{if(o.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):o(a))})}};BM.default=IM});var Uie=_(PM=>{\"use strict\";Object.defineProperty(PM,\"__esModule\",{value:!0});var itt=bS(),stt=kS(),ott=vM(),DM=class extends stt.default{constructor(){super(...arguments),this._walkAsync=itt.walk,this._readerStream=new ott.default(this._settings)}dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===null?o(u):a(n)})})}async static(e,r){let o=[],a=this._readerStream.static(e,r);return new Promise((n,u)=>{a.once(\"error\",u),a.on(\"data\",A=>o.push(A)),a.once(\"end\",()=>n(o))})}};PM.default=DM});var _ie=_(xM=>{\"use strict\";Object.defineProperty(xM,\"__esModule\",{value:!0});var rE=Df(),SM=class{constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOptions=o,this._storage=[],this._fillStorage()}_fillStorage(){let e=rE.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let o=this._getPatternSegments(r),a=this._splitSegmentsIntoSections(o);this._storage.push({complete:a.length<=1,pattern:r,segments:o,sections:a})}}_getPatternSegments(e){return rE.pattern.getPatternParts(e,this._micromatchOptions).map(o=>rE.pattern.isDynamicPattern(o,this._settings)?{dynamic:!0,pattern:o,patternRe:rE.pattern.makeRe(o,this._micromatchOptions)}:{dynamic:!1,pattern:o})}_splitSegmentsIntoSections(e){return rE.array.splitWhen(e,r=>r.dynamic&&rE.pattern.hasGlobStar(r.pattern))}};xM.default=SM});var Hie=_(kM=>{\"use strict\";Object.defineProperty(kM,\"__esModule\",{value:!0});var att=_ie(),bM=class extends att.default{match(e){let r=e.split(\"/\"),o=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>o);for(let n of a){let u=n.sections[0];if(!n.complete&&o>u.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};kM.default=bM});var jie=_(FM=>{\"use strict\";Object.defineProperty(FM,\"__esModule\",{value:!0});var QS=Df(),ltt=Hie(),QM=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe(o);return u=>this._filter(e,u,a,n)}_getMatcher(e){return new ltt.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(QS.pattern.isAffectDepthOfReadingPattern);return QS.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=QS.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,o)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let o=r.split(\"/\").length;if(e===\"\")return o;let a=e.split(\"/\").length;return o-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!QS.pattern.matchAny(e,r)}};FM.default=QM});var qie=_(RM=>{\"use strict\";Object.defineProperty(RM,\"__esModule\",{value:!0});var Cd=Df(),TM=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let o=Cd.pattern.convertPatternsToRe(e,this._micromatchOptions),a=Cd.pattern.convertPatternsToRe(r,this._micromatchOptions);return n=>this._filter(n,o,a)}_filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e.path,o))return!1;let a=this._settings.baseNameMatch?e.name:e.path,n=e.dirent.isDirectory(),u=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(e.path,o,n);return this._settings.unique&&u&&this._createIndexRecord(e),u}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let o=Cd.path.makeAbsolute(this._settings.cwd,e);return Cd.pattern.matchAny(o,r)}_isMatchToPatterns(e,r,o){let a=Cd.path.removeLeadingDotSegment(e),n=Cd.pattern.matchAny(a,r);return!n&&o?Cd.pattern.matchAny(a+\"/\",r):n}};RM.default=TM});var Gie=_(LM=>{\"use strict\";Object.defineProperty(LM,\"__esModule\",{value:!0});var ctt=Df(),NM=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return ctt.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};LM.default=NM});var Wie=_(OM=>{\"use strict\";Object.defineProperty(OM,\"__esModule\",{value:!0});var Yie=Df(),MM=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=Yie.path.makeAbsolute(this._settings.cwd,r),r=Yie.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+=\"/\"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};OM.default=MM});var TS=_(_M=>{\"use strict\";Object.defineProperty(_M,\"__esModule\",{value:!0});var utt=Be(\"path\"),Att=jie(),ftt=qie(),ptt=Gie(),htt=Wie(),UM=class{constructor(e){this._settings=e,this.errorFilter=new ptt.default(this._settings),this.entryFilter=new ftt.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new Att.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new htt.default(this._settings)}_getRootDirectory(e){return utt.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base===\".\"?\"\":e.base;return{basePath:r,pathSegmentSeparator:\"/\",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};_M.default=UM});var Vie=_(jM=>{\"use strict\";Object.defineProperty(jM,\"__esModule\",{value:!0});var gtt=Uie(),dtt=TS(),HM=class extends dtt.default{constructor(){super(...arguments),this._reader=new gtt.default(this._settings)}async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return(await this.api(r,e,o)).map(n=>o.transform(n))}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};jM.default=HM});var Kie=_(GM=>{\"use strict\";Object.defineProperty(GM,\"__esModule\",{value:!0});var mtt=Be(\"stream\"),ytt=vM(),Ett=TS(),qM=class extends Ett.default{constructor(){super(...arguments),this._reader=new ytt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=this.api(r,e,o),n=new mtt.Readable({objectMode:!0,read:()=>{}});return a.once(\"error\",u=>n.emit(\"error\",u)).on(\"data\",u=>n.emit(\"data\",o.transform(u))).once(\"end\",()=>n.emit(\"end\")),n.once(\"close\",()=>a.destroy()),n}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};GM.default=qM});var Jie=_(WM=>{\"use strict\";Object.defineProperty(WM,\"__esModule\",{value:!0});var Ctt=Ed(),wtt=bS(),Itt=kS(),YM=class extends Itt.default{constructor(){super(...arguments),this._walkSync=wtt.walkSync,this._statSync=Ctt.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=this._getEntry(n,a,r);u===null||!r.entryFilter(u)||o.push(u)}return o}_getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(o.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};WM.default=YM});var zie=_(KM=>{\"use strict\";Object.defineProperty(KM,\"__esModule\",{value:!0});var Btt=Jie(),vtt=TS(),VM=class extends vtt.default{constructor(){super(...arguments),this._reader=new Btt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return this.api(r,e,o).map(o.transform)}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};KM.default=VM});var Xie=_(iE=>{\"use strict\";Object.defineProperty(iE,\"__esModule\",{value:!0});iE.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var nE=Be(\"fs\"),Dtt=Be(\"os\"),Ptt=Math.max(Dtt.cpus().length,1);iE.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:nE.lstat,lstatSync:nE.lstatSync,stat:nE.stat,statSync:nE.statSync,readdir:nE.readdir,readdirSync:nE.readdirSync};var JM=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Ptt),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},iE.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};iE.default=JM});var RS=_((DNt,ese)=>{\"use strict\";var Zie=eie(),$ie=rie(),Stt=Vie(),xtt=Kie(),btt=zie(),zM=Xie(),wd=Df();async function XM(t,e){sE(t);let r=ZM(t,Stt.default,e),o=await Promise.all(r);return wd.array.flatten(o)}(function(t){function e(u,A){sE(u);let p=ZM(u,btt.default,A);return wd.array.flatten(p)}t.sync=e;function r(u,A){sE(u);let p=ZM(u,xtt.default,A);return wd.stream.merge(p)}t.stream=r;function o(u,A){sE(u);let p=$ie.transform([].concat(u)),h=new zM.default(A);return Zie.generate(p,h)}t.generateTasks=o;function a(u,A){sE(u);let p=new zM.default(A);return wd.pattern.isDynamicPattern(u,p)}t.isDynamicPattern=a;function n(u){return sE(u),wd.path.escape(u)}t.escapePath=n})(XM||(XM={}));function ZM(t,e,r){let o=$ie.transform([].concat(t)),a=new zM.default(r),n=Zie.generate(o,a),u=new e(a);return n.map(u.read,u)}function sE(t){if(![].concat(t).every(o=>wd.string.isString(o)&&!wd.string.isEmpty(o)))throw new TypeError(\"Patterns must be a string (non empty) or an array of strings\")}ese.exports=XM});var wn={};Kt(wn,{checksumFile:()=>LS,checksumPattern:()=>MS,makeHash:()=>zs});function zs(...t){let e=(0,NS.createHash)(\"sha512\"),r=\"\";for(let o of t)typeof o==\"string\"?r+=o:o&&(r&&(e.update(r),r=\"\"),e.update(o));return r&&e.update(r),e.digest(\"hex\")}async function LS(t,{baseFs:e,algorithm:r}={baseFs:oe,algorithm:\"sha512\"}){let o=await e.openPromise(t,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,NS.createHash)(r),A=0;for(;(A=await e.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest(\"hex\")}finally{await e.closePromise(o)}}async function MS(t,{cwd:e}){let o=(await(0,$M.default)(t,{cwd:ue.fromPortablePath(e),onlyDirectories:!0})).map(A=>`${A}/**/*`),a=await(0,$M.default)([t,...o],{cwd:ue.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async A=>{let p=[Buffer.from(A)],h=ue.toPortablePath(A),E=await oe.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await oe.readlinkPromise(h))):E.isFile()&&p.push(await oe.readFilePromise(h)),p.join(\"\\0\")})),u=(0,NS.createHash)(\"sha512\");for(let A of n)u.update(A);return u.digest(\"hex\")}var NS,$M,rh=Et(()=>{Pt();NS=Be(\"crypto\"),$M=$e(RS())});var W={};Kt(W,{areDescriptorsEqual:()=>sse,areIdentsEqual:()=>r1,areLocatorsEqual:()=>n1,areVirtualPackagesEquivalent:()=>Ott,bindDescriptor:()=>Ltt,bindLocator:()=>Mtt,convertDescriptorToLocator:()=>OS,convertLocatorToDescriptor:()=>tO,convertPackageToLocator:()=>Ttt,convertToIdent:()=>Ftt,convertToManifestRange:()=>Ktt,copyPackage:()=>$I,devirtualizeDescriptor:()=>e1,devirtualizeLocator:()=>t1,ensureDevirtualizedDescriptor:()=>Rtt,ensureDevirtualizedLocator:()=>Ntt,getIdentVendorPath:()=>sO,isPackageCompatible:()=>qS,isVirtualDescriptor:()=>Sf,isVirtualLocator:()=>Hc,makeDescriptor:()=>In,makeIdent:()=>eA,makeLocator:()=>Qs,makeRange:()=>HS,parseDescriptor:()=>nh,parseFileStyleRange:()=>Wtt,parseIdent:()=>Js,parseLocator:()=>xf,parseRange:()=>Id,prettyDependent:()=>FL,prettyDescriptor:()=>qn,prettyIdent:()=>cs,prettyLocator:()=>jr,prettyLocatorNoColors:()=>QL,prettyRange:()=>lE,prettyReference:()=>s1,prettyResolution:()=>XI,prettyWorkspace:()=>o1,renamePackage:()=>rO,slugifyIdent:()=>eO,slugifyLocator:()=>aE,sortDescriptors:()=>cE,stringifyDescriptor:()=>Sa,stringifyIdent:()=>fn,stringifyLocator:()=>xa,tryParseDescriptor:()=>i1,tryParseIdent:()=>ose,tryParseLocator:()=>_S,tryParseRange:()=>Ytt,virtualizeDescriptor:()=>nO,virtualizePackage:()=>iO});function eA(t,e){if(t?.startsWith(\"@\"))throw new Error(\"Invalid scope: don't prefix it with '@'\");return{identHash:zs(t,e),scope:t,name:e}}function In(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zs(t.identHash,e),range:e}}function Qs(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zs(t.identHash,e),reference:e}}function Ftt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function OS(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function tO(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function Ttt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function rO(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function $I(t){return rO(t,t)}function nO(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return In(t,`virtual:${e}#${t.range}`)}function iO(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return rO(t,Qs(t,`virtual:${e}#${t.reference}`))}function Sf(t){return t.range.startsWith(ZI)}function Hc(t){return t.reference.startsWith(ZI)}function e1(t){if(!Sf(t))throw new Error(\"Not a virtual descriptor\");return In(t,t.range.replace(US,\"\"))}function t1(t){if(!Hc(t))throw new Error(\"Not a virtual descriptor\");return Qs(t,t.reference.replace(US,\"\"))}function Rtt(t){return Sf(t)?In(t,t.range.replace(US,\"\")):t}function Ntt(t){return Hc(t)?Qs(t,t.reference.replace(US,\"\")):t}function Ltt(t,e){return t.range.includes(\"::\")?t:In(t,`${t.range}::${oE.default.stringify(e)}`)}function Mtt(t,e){return t.reference.includes(\"::\")?t:Qs(t,`${t.reference}::${oE.default.stringify(e)}`)}function r1(t,e){return t.identHash===e.identHash}function sse(t,e){return t.descriptorHash===e.descriptorHash}function n1(t,e){return t.locatorHash===e.locatorHash}function Ott(t,e){if(!Hc(t))throw new Error(\"Invalid package type\");if(!Hc(e))throw new Error(\"Invalid package type\");if(!r1(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let o=e.dependencies.get(r.identHash);if(!o||!sse(r,o))return!1}return!0}function Js(t){let e=ose(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function ose(t){let e=t.match(Utt);if(!e)return null;let[,r,o]=e;return eA(typeof r<\"u\"?r:null,o)}function nh(t,e=!1){let r=i1(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function i1(t,e=!1){let r=e?t.match(_tt):t.match(Htt);if(!r)return null;let[,o,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid range (${t})`);let u=typeof o<\"u\"?o:null,A=typeof n<\"u\"?n:\"unknown\";return In(eA(u,a),A)}function xf(t,e=!1){let r=_S(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function _S(t,e=!1){let r=e?t.match(jtt):t.match(qtt);if(!r)return null;let[,o,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid reference (${t})`);let u=typeof o<\"u\"?o:null,A=typeof n<\"u\"?n:\"unknown\";return Qs(eA(u,a),A)}function Id(t,e){let r=t.match(Gtt);if(r===null)throw new Error(`Invalid range (${t})`);let o=typeof r[1]<\"u\"?r[1]:null;if(typeof e?.requireProtocol==\"string\"&&o!==e.requireProtocol)throw new Error(`Invalid protocol (${o})`);if(e?.requireProtocol&&o===null)throw new Error(`Missing protocol (${o})`);let a=typeof r[3]<\"u\"?decodeURIComponent(r[2]):null;if(e?.requireSource&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<\"u\"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),u=e?.parseSelector?oE.default.parse(n):n,A=typeof r[4]<\"u\"?oE.default.parse(r[4]):null;return{protocol:o,source:a,selector:u,params:A}}function Ytt(t,e){try{return Id(t,e)}catch{return null}}function Wtt(t,{protocol:e}){let{selector:r,params:o}=Id(t,{requireProtocol:e,requireBindings:!0});if(typeof o.locator!=\"string\")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:xf(o.locator,!0),path:r}}function tse(t){return t=t.replaceAll(\"%\",\"%25\"),t=t.replaceAll(\":\",\"%3A\"),t=t.replaceAll(\"#\",\"%23\"),t}function Vtt(t){return t===null?!1:Object.entries(t).length>0}function HS({protocol:t,source:e,selector:r,params:o}){let a=\"\";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${tse(e)}#`),a+=tse(r),Vtt(o)&&(a+=`::${oE.default.stringify(o)}`),a}function Ktt(t){let{params:e,protocol:r,source:o,selector:a}=Id(t);for(let n in e)n.startsWith(\"__\")&&delete e[n];return HS({protocol:r,source:o,params:e,selector:a})}function fn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function Sa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function xa(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function eO(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function aE(t){let{protocol:e,selector:r}=Id(t.reference),o=e!==null?e.replace(Jtt,\"\"):\"exotic\",a=rse.default.valid(r),n=a!==null?`${o}-${a}`:`${o}`,u=10;return t.scope?`${eO(t)}-${n}-${t.locatorHash.slice(0,u)}`:`${eO(t)}-${n}-${t.locatorHash.slice(0,u)}`}function cs(t,e){return e.scope?`${Ot(t,`@${e.scope}/`,yt.SCOPE)}${Ot(t,e.name,yt.NAME)}`:`${Ot(t,e.name,yt.NAME)}`}function jS(t){if(t.startsWith(ZI)){let e=jS(t.substring(t.indexOf(\"#\")+1)),r=t.substring(ZI.length,ZI.length+ktt);return`${e} [${r}]`}else return t.replace(ztt,\"?[...]\")}function lE(t,e){return`${Ot(t,jS(e),yt.RANGE)}`}function qn(t,e){return`${cs(t,e)}${Ot(t,\"@\",yt.RANGE)}${lE(t,e.range)}`}function s1(t,e){return`${Ot(t,jS(e),yt.REFERENCE)}`}function jr(t,e){return`${cs(t,e)}${Ot(t,\"@\",yt.REFERENCE)}${s1(t,e.reference)}`}function QL(t){return`${fn(t)}@${jS(t.reference)}`}function cE(t){return ks(t,[e=>fn(e),e=>e.range])}function o1(t,e){return cs(t,e.anchoredLocator)}function XI(t,e,r){let o=Sf(e)?e1(e):e;return r===null?`${qn(t,o)} \\u2192 ${kL(t).Cross}`:o.identHash===r.identHash?`${qn(t,o)} \\u2192 ${s1(t,r.reference)}`:`${qn(t,o)} \\u2192 ${jr(t,r)}`}function FL(t,e,r){return r===null?`${jr(t,e)}`:`${jr(t,e)} (via ${lE(t,r.range)})`}function sO(t){return`node_modules/${fn(t)}`}function qS(t,e){return t.conditions?Qtt(t.conditions,r=>{let[,o,a]=r.match(ise),n=e[o];return n?n.includes(a):!0}):!0}var oE,rse,nse,ZI,ktt,ise,Qtt,US,Utt,_tt,Htt,jtt,qtt,Gtt,Jtt,ztt,xo=Et(()=>{oE=$e(Be(\"querystring\")),rse=$e(zn()),nse=$e(rX());ql();rh();jl();xo();ZI=\"virtual:\",ktt=5,ise=/(os|cpu|libc)=([a-z0-9_-]+)/,Qtt=(0,nse.makeParser)(ise);US=/^[^#]*#/;Utt=/^(?:@([^/]+?)\\/)?([^@/]+)$/;_tt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Htt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;jtt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,qtt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;Gtt=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;Jtt=/:$/;ztt=/\\?.*/});var ase,lse=Et(()=>{xo();ase={hooks:{reduceDependency:(t,e,r,o,{resolver:a,resolveOptions:n})=>{for(let{pattern:u,reference:A}of e.topLevelWorkspace.manifest.resolutions){if(u.from&&(u.from.fullName!==fn(r)||e.configuration.normalizeLocator(Qs(Js(u.from.fullName),u.from.description??r.reference)).locatorHash!==r.locatorHash)||u.descriptor.fullName!==fn(t)||e.configuration.normalizeDependency(In(xf(u.descriptor.fullName),u.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(In(t,A)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let o=o1(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${o}: ${n}`),reportError:(a,n)=>e.reportError(a,`${o}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error(\"Resolutions field will be ignored\"));for(let o of r.errors)e.reportWarning(57,o.message)}}}});var a1,Xn,Bd=Et(()=>{a1=class{supportsDescriptor(e,r){return!!(e.range.startsWith(a1.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(a1.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(a1.protocol.length));return{...e,version:o.manifest.version||\"0.0.0\",languageName:\"unknown\",linkType:\"SOFT\",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...o.manifest.dependencies,...o.manifest.devDependencies])),peerDependencies:new Map([...o.manifest.peerDependencies]),dependenciesMeta:o.manifest.dependenciesMeta,peerDependenciesMeta:o.manifest.peerDependenciesMeta,bin:o.manifest.bin}}},Xn=a1;Xn.protocol=\"workspace:\"});var kr={};Kt(kr,{SemVer:()=>pse.SemVer,clean:()=>Ztt,getComparator:()=>Ase,mergeComparators:()=>oO,satisfiesWithPrereleases:()=>bf,simplifyRanges:()=>aO,stringifyComparator:()=>fse,validRange:()=>ba});function bf(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=cse.get(o);if(typeof a>\"u\")try{a=new ih.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{cse.set(o,a||null)}else if(a===null)return!1;let n;try{n=new ih.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(u=>{for(let A of u)A.semver.prerelease&&(A.semver.prerelease=[]);return u.every(A=>A.test(n))}))}function ba(t){if(t.indexOf(\":\")!==-1)return null;let e=use.get(t);if(typeof e<\"u\")return e;try{e=new ih.default.Range(t)}catch{e=null}return use.set(t,e),e}function Ztt(t){let e=Xtt.exec(t);return e?e[1]:null}function Ase(t){if(t.semver===ih.default.Comparator.ANY)return{gt:null,lt:null};switch(t.operator){case\"\":return{gt:[\">=\",t.semver],lt:[\"<=\",t.semver]};case\">\":case\">=\":return{gt:[t.operator,t.semver],lt:null};case\"<\":case\"<=\":return{gt:null,lt:[t.operator,t.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${t.operator})`)}}function oO(t){if(t.length===0)return null;let e=null,r=null;for(let o of t){if(o.gt){let a=e!==null?ih.default.compare(o.gt[1],e[1]):null;(a===null||a>0||a===0&&o.gt[0]===\">\")&&(e=o.gt)}if(o.lt){let a=r!==null?ih.default.compare(o.lt[1],r[1]):null;(a===null||a<0||a===0&&o.lt[0]===\"<\")&&(r=o.lt)}}if(e&&r){let o=ih.default.compare(e[1],r[1]);if(o===0&&(e[0]===\">\"||r[0]===\"<\")||o>0)return null}return{gt:e,lt:r}}function fse(t){if(t.gt&&t.lt){if(t.gt[0]===\">=\"&&t.lt[0]===\"<=\"&&t.gt[1].version===t.lt[1].version)return t.gt[1].version;if(t.gt[0]===\">=\"&&t.lt[0]===\"<\"){if(t.lt[1].version===`${t.gt[1].major+1}.0.0-0`)return`^${t.gt[1].version}`;if(t.lt[1].version===`${t.gt[1].major}.${t.gt[1].minor+1}.0-0`)return`~${t.gt[1].version}`}}let e=[];return t.gt&&e.push(t.gt[0]+t.gt[1].version),t.lt&&e.push(t.lt[0]+t.lt[1].version),e.length?e.join(\" \"):\"*\"}function aO(t){let e=t.map(o=>ba(o).set.map(a=>a.map(n=>Ase(n)))),r=e.shift().map(o=>oO(o)).filter(o=>o!==null);for(let o of e){let a=[];for(let n of r)for(let u of o){let A=oO([n,...u]);A!==null&&a.push(A)}r=a}return r.length===0?null:r.map(o=>fse(o)).join(\" || \")}var ih,pse,cse,use,Xtt,kf=Et(()=>{ih=$e(zn()),pse=$e(zn()),cse=new Map;use=new Map;Xtt=/^(?:[\\sv=]*?)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(?:\\s*)$/});function hse(t){let e=t.match(/^[ \\t]+/m);return e?e[0]:\"  \"}function gse(t){return t.charCodeAt(0)===65279?t.slice(1):t}function $o(t){return t.replace(/\\\\/g,\"/\")}function GS(t,{yamlCompatibilityMode:e}){return e?IL(t):typeof t>\"u\"||typeof t==\"boolean\"?t:null}function dse(t,e){let r=e.search(/[^!]/);if(r===-1)return\"invalid\";let o=r%2===0?\"\":\"!\",a=e.slice(r);return`${o}${t}=${a}`}function lO(t,e){return e.length===1?dse(t,e[0]):`(${e.map(r=>dse(t,r)).join(\" | \")})`}var mse,uE,Mt,AE=Et(()=>{Pt();Nl();mse=$e(zn());Bd();jl();kf();xo();uE=class{constructor(){this.indent=\"  \";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Rn}={}){let o=K.join(e,\"package.json\");try{return await uE.fromFile(o,{baseFs:r})}catch(a){if(a.code===\"ENOENT\")return null;throw a}}static async find(e,{baseFs:r}={}){let o=await uE.tryFind(e,{baseFs:r});if(o===null)throw new Error(\"Manifest not found\");return o}static async fromFile(e,{baseFs:r=new Rn}={}){let o=new uE;return await o.loadFile(e,{baseFs:r}),o}static fromText(e){let r=new uE;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(gse(e)||\"{}\")}catch(o){throw o.message+=` (when parsing ${e})`,o}this.load(r),this.indent=hse(e)}async loadFile(e,{baseFs:r=new Rn}){let o=await r.readFilePromise(e,\"utf8\"),a;try{a=JSON.parse(gse(o)||\"{}\")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=hse(o)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!=\"object\"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let o=[];if(this.name=null,typeof e.name==\"string\")try{this.name=Js(e.name)}catch{o.push(new Error(\"Parsing failed for the 'name' field\"))}if(typeof e.version==\"string\"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let u of e.os)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'os' field\")):n.push(u)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let u of e.cpu)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'cpu' field\")):n.push(u)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let u of e.libc)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'libc' field\")):n.push(u)}else this.libc=null;if(typeof e.type==\"string\"?this.type=e.type:this.type=null,typeof e.packageManager==\"string\"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private==\"boolean\"?this.private=e.private:this.private=!1,typeof e.license==\"string\"?this.license=e.license:this.license=null,typeof e.languageName==\"string\"?this.languageName=e.languageName:this.languageName=null,typeof e.main==\"string\"?this.main=$o(e.main):this.main=null,typeof e.module==\"string\"?this.module=$o(e.module):this.module=null,e.browser!=null)if(typeof e.browser==\"string\")this.browser=$o(e.browser);else{this.browser=new Map;for(let[n,u]of Object.entries(e.browser))this.browser.set($o(n),typeof u==\"string\"?$o(u):u)}else this.browser=null;if(this.bin=new Map,typeof e.bin==\"string\")e.bin.trim()===\"\"?o.push(new Error(\"Invalid bin field\")):this.name!==null?this.bin.set(this.name.name,$o(e.bin)):o.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.bin==\"object\"&&e.bin!==null)for(let[n,u]of Object.entries(e.bin)){if(typeof u!=\"string\"||u.trim()===\"\"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}let A=Js(n);this.bin.set(A.name,$o(u))}if(this.scripts=new Map,typeof e.scripts==\"object\"&&e.scripts!==null)for(let[n,u]of Object.entries(e.scripts)){if(typeof u!=\"string\"){o.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,u)}if(this.dependencies=new Map,typeof e.dependencies==\"object\"&&e.dependencies!==null)for(let[n,u]of Object.entries(e.dependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies==\"object\"&&e.devDependencies!==null)for(let[n,u]of Object.entries(e.devDependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies==\"object\"&&e.peerDependencies!==null)for(let[n,u]of Object.entries(e.peerDependencies)){let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof u!=\"string\"||!u.startsWith(Xn.protocol)&&!ba(u))&&(o.push(new Error(`Invalid dependency range for '${n}'`)),u=\"*\");let p=In(A,u);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces==\"object\"&&e.workspaces!==null&&e.workspaces.nohoist&&o.push(new Error(\"'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead\"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces==\"object\"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!=\"string\"){o.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta==\"object\"&&e.dependenciesMeta!==null)for(let[n,u]of Object.entries(e.dependenciesMeta)){if(typeof u!=\"object\"||u===null){o.push(new Error(`Invalid meta field for '${n}`));continue}let A=nh(n),p=this.ensureDependencyMeta(A),h=GS(u.built,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=GS(u.optional,{yamlCompatibilityMode:r});if(E===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}let I=GS(u.unplugged,{yamlCompatibilityMode:r});if(I===null){o.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:I})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta==\"object\"&&e.peerDependenciesMeta!==null)for(let[n,u]of Object.entries(e.peerDependenciesMeta)){if(typeof u!=\"object\"||u===null){o.push(new Error(`Invalid meta field for '${n}'`));continue}let A=nh(n),p=this.ensurePeerDependencyMeta(A),h=GS(u.optional,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions==\"object\"&&e.resolutions!==null)for(let[n,u]of Object.entries(e.resolutions)){if(typeof u!=\"string\"){o.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:UD(n),reference:u})}catch(A){o.push(A);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!=\"string\"){o.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig==\"object\"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access==\"string\"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main==\"string\"&&(this.publishConfig.main=$o(e.publishConfig.main)),typeof e.publishConfig.module==\"string\"&&(this.publishConfig.module=$o(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser==\"string\")this.publishConfig.browser=$o(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,u]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set($o(n),typeof u==\"string\"?$o(u):u)}if(typeof e.publishConfig.registry==\"string\"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin==\"string\")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,$o(e.publishConfig.bin)]]):o.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.publishConfig.bin==\"object\"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,u]of Object.entries(e.publishConfig.bin)){if(typeof u!=\"string\"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,$o(u))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!=\"string\"){o.push(new Error(\"Invalid executable file definition\"));continue}this.publishConfig.executableFiles.add($o(n))}}}else this.publishConfig=null;if(typeof e.installConfig==\"object\"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n===\"hoistingLimits\"?typeof e.installConfig.hoistingLimits==\"string\"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:o.push(new Error(\"Invalid hoisting limits definition\")):n==\"selfReferences\"?typeof e.installConfig.selfReferences==\"boolean\"?this.installConfig.selfReferences=e.installConfig.selfReferences:o.push(new Error(\"Invalid selfReferences definition, must be a boolean value\")):o.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies==\"object\"&&e.optionalDependencies!==null)for(let[n,u]of Object.entries(e.optionalDependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p);let h=In(A,\"unknown\"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged==\"boolean\"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=o}getForScope(e){switch(e){case\"dependencies\":return this.dependencies;case\"devDependencies\":return this.devDependencies;case\"peerDependencies\":return this.peerDependencies;default:throw new Error(`Unsupported value (\"${e}\")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(lO(\"os\",this.os)),this.cpu&&this.cpu.length>0&&e.push(lO(\"cpu\",this.cpu)),this.libc&&this.libc.length>0&&e.push(lO(\"libc\",this.libc)),e.length>0?e.join(\" & \"):null}ensureDependencyMeta(e){if(e.range!==\"unknown\"&&!mse.default.valid(e.range))throw new Error(`Invalid meta field range for '${Sa(e)}'`);let r=fn(e),o=e.range!==\"unknown\"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(o);return n||a.set(o,n={}),n}ensurePeerDependencyMeta(e){if(e.range!==\"unknown\")throw new Error(`Invalid meta field range for '${Sa(e)}'`);let r=fn(e),o=this.peerDependenciesMeta.get(r);return o||this.peerDependenciesMeta.set(r,o={}),o}setRawField(e,r,{after:o=[]}={}){let a=new Set(o.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,e))this.raw[e]=r;else{let n=this.raw,u=this.raw={},A=!1;for(let p of Object.keys(n))u[p]=n[p],A||(a.delete(p),a.size===0&&(u[e]=r,A=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=fn(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n==\"string\"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(u=>({[u]:n.get(u)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let o=[],a=[];for(let n of this.dependencies.values()){let u=this.dependenciesMeta.get(fn(n)),A=!1;if(r&&u){let p=u.get(null);p&&p.optional&&(A=!0)}A?a.push(n):o.push(n)}o.length>0?e.dependencies=Object.assign({},...cE(o).map(n=>({[fn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...cE(a).map(n=>({[fn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...cE(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...cE(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,u]of ks(this.dependenciesMeta.entries(),([A,p])=>A))for(let[A,p]of ks(u.entries(),([h,E])=>h!==null?`0${h}`:\"1\")){let h=A!==null?Sa(In(Js(n),A)):n,E={...p};r&&A===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[h]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...ks(this.peerDependenciesMeta.entries(),([n,u])=>n).map(([n,u])=>({[n]:u}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:u})=>({[_D(n)]:u}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??={};for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,u]of this.scripts.entries())e.scripts[n]=u}else delete e.scripts;return e}},Mt=uE;Mt.fileName=\"package.json\",Mt.allDependencies=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],Mt.hardDependencies=[\"dependencies\",\"devDependencies\"]});var Ese=_((_Nt,yse)=>{var $tt=_l(),ert=function(){return $tt.Date.now()};yse.exports=ert});var wse=_((HNt,Cse)=>{var trt=/\\s/;function rrt(t){for(var e=t.length;e--&&trt.test(t.charAt(e)););return e}Cse.exports=rrt});var Bse=_((jNt,Ise)=>{var nrt=wse(),irt=/^\\s+/;function srt(t){return t&&t.slice(0,nrt(t)+1).replace(irt,\"\")}Ise.exports=srt});var fE=_((qNt,vse)=>{var ort=pd(),art=Ju(),lrt=\"[object Symbol]\";function crt(t){return typeof t==\"symbol\"||art(t)&&ort(t)==lrt}vse.exports=crt});var xse=_((GNt,Sse)=>{var urt=Bse(),Dse=il(),Art=fE(),Pse=0/0,frt=/^[-+]0x[0-9a-f]+$/i,prt=/^0b[01]+$/i,hrt=/^0o[0-7]+$/i,grt=parseInt;function drt(t){if(typeof t==\"number\")return t;if(Art(t))return Pse;if(Dse(t)){var e=typeof t.valueOf==\"function\"?t.valueOf():t;t=Dse(e)?e+\"\":e}if(typeof t!=\"string\")return t===0?t:+t;t=urt(t);var r=prt.test(t);return r||hrt.test(t)?grt(t.slice(2),r?2:8):frt.test(t)?Pse:+t}Sse.exports=drt});var Qse=_((YNt,kse)=>{var mrt=il(),cO=Ese(),bse=xse(),yrt=\"Expected a function\",Ert=Math.max,Crt=Math.min;function wrt(t,e,r){var o,a,n,u,A,p,h=0,E=!1,I=!1,v=!0;if(typeof t!=\"function\")throw new TypeError(yrt);e=bse(e)||0,mrt(r)&&(E=!!r.leading,I=\"maxWait\"in r,n=I?Ert(bse(r.maxWait)||0,e):n,v=\"trailing\"in r?!!r.trailing:v);function b(Ae){var ye=o,ae=a;return o=a=void 0,h=Ae,u=t.apply(ae,ye),u}function C(Ae){return h=Ae,A=setTimeout(U,e),E?b(Ae):u}function T(Ae){var ye=Ae-p,ae=Ae-h,we=e-ye;return I?Crt(we,n-ae):we}function L(Ae){var ye=Ae-p,ae=Ae-h;return p===void 0||ye>=e||ye<0||I&&ae>=n}function U(){var Ae=cO();if(L(Ae))return J(Ae);A=setTimeout(U,T(Ae))}function J(Ae){return A=void 0,v&&o?b(Ae):(o=a=void 0,u)}function te(){A!==void 0&&clearTimeout(A),h=0,o=p=a=A=void 0}function le(){return A===void 0?u:J(cO())}function pe(){var Ae=cO(),ye=L(Ae);if(o=arguments,a=this,p=Ae,ye){if(A===void 0)return C(p);if(I)return clearTimeout(A),A=setTimeout(U,e),b(p)}return A===void 0&&(A=setTimeout(U,e)),u}return pe.cancel=te,pe.flush=le,pe}kse.exports=wrt});var uO=_((WNt,Fse)=>{var Irt=Qse(),Brt=il(),vrt=\"Expected a function\";function Drt(t,e,r){var o=!0,a=!0;if(typeof t!=\"function\")throw new TypeError(vrt);return Brt(r)&&(o=\"leading\"in r?!!r.leading:o,a=\"trailing\"in r?!!r.trailing:a),Irt(t,e,{leading:o,maxWait:e,trailing:a})}Fse.exports=Drt});function Srt(t){return typeof t.reportCode<\"u\"}var Tse,Rse,Nse,Prt,zt,Xs,Yl=Et(()=>{Tse=$e(uO()),Rse=Be(\"stream\"),Nse=Be(\"string_decoder\"),Prt=15,zt=class extends Error{constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}};Xs=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(e){this.cacheHits.add(e.locatorHash)}reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}static progressViaCounter(e){let r=0,o,a=new Promise(p=>{o=p}),n=p=>{let h=o;a=new Promise(E=>{o=E}),r=p,h()},u=(p=0)=>{n(r+1)},A=async function*(){for(;r<e;)await a,yield{progress:r/e}}();return{[Symbol.asyncIterator](){return A},hasProgress:!0,hasTitle:!1,set:n,tick:u}}static progressViaTitle(){let e,r,o=new Promise(u=>{r=u}),a=(0,Tse.default)(u=>{let A=r;o=new Promise(p=>{r=p}),e=u,A()},1e3/Prt),n=async function*(){for(;;)await o,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let o=this.reportProgress(e);try{return await r(e)}finally{o.stop()}}startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}finally{o.stop()}}reportInfoOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),o?.reportExtra?.(this))}reportWarningOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),o?.reportExtra?.(this))}reportErrorOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),o?.reportExtra?.(this))}reportExceptionOnce(e){Srt(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new Rse.PassThrough,o=new Nse.StringDecoder,a=\"\";return r.on(\"data\",n=>{let u=o.write(n),A;do if(A=u.indexOf(`\n`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a=\"\",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(A!==-1);a+=u}),r.on(\"end\",()=>{let n=o.end();n!==\"\"&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var pE,AO=Et(()=>{Yl();xo();pE=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));return o||null}getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw new zt(11,`${jr(r.project.configuration,e)} isn't supported by any available fetcher`);return o}}});var vd,fO=Et(()=>{xo();vd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.getResolverByDescriptor(e,o).bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o).getCandidates(e,r,o)}async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,o,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));return o||null}getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!o)throw new Error(`${qn(r.project.configuration,e)} isn't supported by any available resolver`);return o}tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));return o||null}getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));if(!o)throw new Error(`${jr(r.project.configuration,e)} isn't supported by any available resolver`);return o}}});var hE,pO=Et(()=>{Pt();xo();hE=class{supports(e){return!!e.reference.startsWith(\"virtual:\")}getLocalPath(e,r){let o=e.reference.indexOf(\"#\");if(o===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(o+1),n=Qs(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let o=e.reference.indexOf(\"#\");if(o===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(o+1),n=Qs(e,a),u=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,u,r)}getLocatorFilename(e){return aE(e)}async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.project.configuration.get(\"virtualFolder\"),u=this.getLocatorFilename(e),A=mi.makeVirtualPath(n,u,a),p=new Uu(A,{baseFs:r.packageFs,pathUtils:K});return{...r,packageFs:p}}}});var gE,l1,Lse=Et(()=>{gE=class{static isVirtualDescriptor(e){return!!e.range.startsWith(gE.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(gE.protocol)}supportsDescriptor(e,r){return gE.isVirtualDescriptor(e)}supportsLocator(e,r){return gE.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){throw new Error('Assertion failed: calling \"bindDescriptor\" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling \"getResolutionDependencies\" on a virtual descriptor is unsupported')}async getCandidates(e,r,o){throw new Error('Assertion failed: calling \"getCandidates\" on a virtual descriptor is unsupported')}async getSatisfying(e,r,o,a){throw new Error('Assertion failed: calling \"getSatisfying\" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling \"resolve\" on a virtual locator is unsupported')}},l1=gE;l1.protocol=\"virtual:\"});var dE,hO=Et(()=>{Pt();Bd();dE=class{supports(e){return!!e.reference.startsWith(Xn.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new gn(o),prefixPath:Bt.dot,localPath:o}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Xn.protocol.length))}}});function c1(t){return typeof t==\"object\"&&t!==null&&!Array.isArray(t)}function Mse(t){return typeof t>\"u\"?3:c1(t)?0:Array.isArray(t)?1:2}function mO(t,e){return Object.hasOwn(t,e)}function brt(t){return c1(t)&&mO(t,\"onConflict\")&&typeof t.onConflict==\"string\"}function krt(t){if(typeof t>\"u\")return{onConflict:\"default\",value:t};if(!brt(t))return{onConflict:\"default\",value:t};if(mO(t,\"value\"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function Ose(t,e){let r=c1(t)&&mO(t,e)?t[e]:void 0;return krt(r)}function mE(t,e){return[t,e,Use]}function yO(t){return Array.isArray(t)?t[2]===Use:!1}function gO(t,e){if(c1(t)){let r={};for(let o of Object.keys(t))r[o]=gO(t[o],e);return mE(e,r)}return Array.isArray(t)?mE(e,t.map(r=>gO(r,e))):mE(e,t)}function dO(t,e,r,o,a){let n,u=[],A=a,p=0;for(let E=a-1;E>=o;--E){let[I,v]=t[E],{onConflict:b,value:C}=Ose(v,r),T=Mse(C);if(T!==3){if(n??=T,T!==n||b===\"hardReset\"){p=A;break}if(T===2)return mE(I,C);if(u.unshift([I,C]),b===\"reset\"){p=E;break}b===\"extend\"&&E===o&&(o=0),A=E}}if(typeof n>\"u\")return null;let h=u.map(([E])=>E).join(\", \");switch(n){case 1:return mE(h,new Array().concat(...u.map(([E,I])=>I.map(v=>gO(v,E)))));case 0:{let E=Object.assign({},...u.map(([,T])=>T)),I=Object.keys(E),v={},b=t.map(([T,L])=>[T,Ose(L,r).value]),C=xrt(b,([T,L])=>{let U=Mse(L);return U!==0&&U!==3});if(C!==-1){let T=b.slice(C+1);for(let L of I)v[L]=dO(T,e,L,0,T.length)}else for(let T of I)v[T]=dO(b,e,T,p,b.length);return mE(h,v)}default:throw new Error(\"Assertion failed: Non-extendable value type\")}}function _se(t){return dO(t.map(([e,r])=>[e,{[\".\"]:r}]),[],\".\",0,t.length)}function u1(t){return yO(t)?t[1]:t}function YS(t){let e=yO(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>YS(r));if(c1(e)){let r={};for(let[o,a]of Object.entries(e))r[o]=YS(a);return r}return e}function EO(t){return yO(t)?t[0]:null}var xrt,Use,Hse=Et(()=>{xrt=(t,e,r)=>{let o=[...t];return o.reverse(),o.findIndex(e,r)};Use=Symbol()});var WS={};Kt(WS,{getDefaultGlobalFolder:()=>wO,getHomeFolder:()=>yE,isFolderInside:()=>IO});function wO(){if(process.platform===\"win32\"){let t=ue.toPortablePath(process.env.LOCALAPPDATA||ue.join((0,CO.homedir)(),\"AppData\",\"Local\"));return K.resolve(t,\"Yarn/Berry\")}if(process.env.XDG_DATA_HOME){let t=ue.toPortablePath(process.env.XDG_DATA_HOME);return K.resolve(t,\"yarn/berry\")}return K.resolve(yE(),\".yarn/berry\")}function yE(){return ue.toPortablePath((0,CO.homedir)()||\"/usr/local/share\")}function IO(t,e){let r=K.relative(e,t);return r&&!r.startsWith(\"..\")&&!K.isAbsolute(r)}var CO,VS=Et(()=>{Pt();CO=Be(\"os\")});var Yse=_(EE=>{\"use strict\";var sLt=Be(\"net\"),Frt=Be(\"tls\"),BO=Be(\"http\"),jse=Be(\"https\"),Trt=Be(\"events\"),oLt=Be(\"assert\"),Rrt=Be(\"util\");EE.httpOverHttp=Nrt;EE.httpsOverHttp=Lrt;EE.httpOverHttps=Mrt;EE.httpsOverHttps=Ort;function Nrt(t){var e=new Qf(t);return e.request=BO.request,e}function Lrt(t){var e=new Qf(t);return e.request=BO.request,e.createSocket=qse,e.defaultPort=443,e}function Mrt(t){var e=new Qf(t);return e.request=jse.request,e}function Ort(t){var e=new Qf(t);return e.request=jse.request,e.createSocket=qse,e.defaultPort=443,e}function Qf(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||BO.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on(\"free\",function(o,a,n,u){for(var A=Gse(a,n,u),p=0,h=e.requests.length;p<h;++p){var E=e.requests[p];if(E.host===A.host&&E.port===A.port){e.requests.splice(p,1),E.request.onSocket(o);return}}o.destroy(),e.removeSocket(o)})}Rrt.inherits(Qf,Trt.EventEmitter);Qf.prototype.addRequest=function(e,r,o,a){var n=this,u=vO({request:e},n.options,Gse(r,o,a));if(n.sockets.length>=this.maxSockets){n.requests.push(u);return}n.createSocket(u,function(A){A.on(\"free\",p),A.on(\"close\",h),A.on(\"agentRemove\",h),e.onSocket(A);function p(){n.emit(\"free\",A,u)}function h(E){n.removeSocket(A),A.removeListener(\"free\",p),A.removeListener(\"close\",h),A.removeListener(\"agentRemove\",h)}})};Qf.prototype.createSocket=function(e,r){var o=this,a={};o.sockets.push(a);var n=vO({},o.proxyOptions,{method:\"CONNECT\",path:e.host+\":\"+e.port,agent:!1,headers:{host:e.host+\":\"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers[\"Proxy-Authorization\"]=\"Basic \"+new Buffer(n.proxyAuth).toString(\"base64\")),sh(\"making CONNECT request\");var u=o.request(n);u.useChunkedEncodingByDefault=!1,u.once(\"response\",A),u.once(\"upgrade\",p),u.once(\"connect\",h),u.once(\"error\",E),u.end();function A(I){I.upgrade=!0}function p(I,v,b){process.nextTick(function(){h(I,v,b)})}function h(I,v,b){if(u.removeAllListeners(),v.removeAllListeners(),I.statusCode!==200){sh(\"tunneling socket could not be established, statusCode=%d\",I.statusCode),v.destroy();var C=new Error(\"tunneling socket could not be established, statusCode=\"+I.statusCode);C.code=\"ECONNRESET\",e.request.emit(\"error\",C),o.removeSocket(a);return}if(b.length>0){sh(\"got illegal response body from proxy\"),v.destroy();var C=new Error(\"got illegal response body from proxy\");C.code=\"ECONNRESET\",e.request.emit(\"error\",C),o.removeSocket(a);return}return sh(\"tunneling connection has established\"),o.sockets[o.sockets.indexOf(a)]=v,r(v)}function E(I){u.removeAllListeners(),sh(`tunneling socket could not be established, cause=%s\n`,I.message,I.stack);var v=new Error(\"tunneling socket could not be established, cause=\"+I.message);v.code=\"ECONNRESET\",e.request.emit(\"error\",v),o.removeSocket(a)}};Qf.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var o=this.requests.shift();o&&this.createSocket(o,function(a){o.request.onSocket(a)})}};function qse(t,e){var r=this;Qf.prototype.createSocket.call(r,t,function(o){var a=t.request.getHeader(\"host\"),n=vO({},r.options,{socket:o,servername:a?a.replace(/:.*$/,\"\"):t.host}),u=Frt.connect(0,n);r.sockets[r.sockets.indexOf(o)]=u,e(u)})}function Gse(t,e,r){return typeof t==\"string\"?{host:t,port:e,localAddress:r}:t}function vO(t){for(var e=1,r=arguments.length;e<r;++e){var o=arguments[e];if(typeof o==\"object\")for(var a=Object.keys(o),n=0,u=a.length;n<u;++n){var A=a[n];o[A]!==void 0&&(t[A]=o[A])}}return t}var sh;process.env.NODE_DEBUG&&/\\btunnel\\b/.test(process.env.NODE_DEBUG)?sh=function(){var t=Array.prototype.slice.call(arguments);typeof t[0]==\"string\"?t[0]=\"TUNNEL: \"+t[0]:t.unshift(\"TUNNEL:\"),console.error.apply(console,t)}:sh=function(){};EE.debug=sh});var Vse=_((lLt,Wse)=>{Wse.exports=Yse()});var Tf=_((Ff,KS)=>{\"use strict\";Object.defineProperty(Ff,\"__esModule\",{value:!0});var Kse=[\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"];function Urt(t){return Kse.includes(t)}var _rt=[\"Function\",\"Generator\",\"AsyncGenerator\",\"GeneratorFunction\",\"AsyncGeneratorFunction\",\"AsyncFunction\",\"Observable\",\"Array\",\"Buffer\",\"Object\",\"RegExp\",\"Date\",\"Error\",\"Map\",\"Set\",\"WeakMap\",\"WeakSet\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Promise\",\"URL\",\"FormData\",\"URLSearchParams\",\"HTMLElement\",...Kse];function Hrt(t){return _rt.includes(t)}var jrt=[\"null\",\"undefined\",\"string\",\"number\",\"bigint\",\"boolean\",\"symbol\"];function qrt(t){return jrt.includes(t)}function CE(t){return e=>typeof e===t}var{toString:Jse}=Object.prototype,A1=t=>{let e=Jse.call(t).slice(8,-1);if(/HTML\\w+Element/.test(e)&&xe.domElement(t))return\"HTMLElement\";if(Hrt(e))return e},ei=t=>e=>A1(e)===t;function xe(t){if(t===null)return\"null\";switch(typeof t){case\"undefined\":return\"undefined\";case\"string\":return\"string\";case\"number\":return\"number\";case\"boolean\":return\"boolean\";case\"function\":return\"Function\";case\"bigint\":return\"bigint\";case\"symbol\":return\"symbol\";default:}if(xe.observable(t))return\"Observable\";if(xe.array(t))return\"Array\";if(xe.buffer(t))return\"Buffer\";let e=A1(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError(\"Please don't use object wrappers for primitive types\");return\"Object\"}xe.undefined=CE(\"undefined\");xe.string=CE(\"string\");var Grt=CE(\"number\");xe.number=t=>Grt(t)&&!xe.nan(t);xe.bigint=CE(\"bigint\");xe.function_=CE(\"function\");xe.null_=t=>t===null;xe.class_=t=>xe.function_(t)&&t.toString().startsWith(\"class \");xe.boolean=t=>t===!0||t===!1;xe.symbol=CE(\"symbol\");xe.numericString=t=>xe.string(t)&&!xe.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));xe.array=(t,e)=>Array.isArray(t)?xe.function_(e)?t.every(e):!0:!1;xe.buffer=t=>{var e,r,o,a;return(a=(o=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||o===void 0?void 0:o.call(r,t))!==null&&a!==void 0?a:!1};xe.nullOrUndefined=t=>xe.null_(t)||xe.undefined(t);xe.object=t=>!xe.null_(t)&&(typeof t==\"object\"||xe.function_(t));xe.iterable=t=>{var e;return xe.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};xe.asyncIterable=t=>{var e;return xe.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};xe.generator=t=>xe.iterable(t)&&xe.function_(t.next)&&xe.function_(t.throw);xe.asyncGenerator=t=>xe.asyncIterable(t)&&xe.function_(t.next)&&xe.function_(t.throw);xe.nativePromise=t=>ei(\"Promise\")(t);var Yrt=t=>{var e,r;return xe.function_((e=t)===null||e===void 0?void 0:e.then)&&xe.function_((r=t)===null||r===void 0?void 0:r.catch)};xe.promise=t=>xe.nativePromise(t)||Yrt(t);xe.generatorFunction=ei(\"GeneratorFunction\");xe.asyncGeneratorFunction=t=>A1(t)===\"AsyncGeneratorFunction\";xe.asyncFunction=t=>A1(t)===\"AsyncFunction\";xe.boundFunction=t=>xe.function_(t)&&!t.hasOwnProperty(\"prototype\");xe.regExp=ei(\"RegExp\");xe.date=ei(\"Date\");xe.error=ei(\"Error\");xe.map=t=>ei(\"Map\")(t);xe.set=t=>ei(\"Set\")(t);xe.weakMap=t=>ei(\"WeakMap\")(t);xe.weakSet=t=>ei(\"WeakSet\")(t);xe.int8Array=ei(\"Int8Array\");xe.uint8Array=ei(\"Uint8Array\");xe.uint8ClampedArray=ei(\"Uint8ClampedArray\");xe.int16Array=ei(\"Int16Array\");xe.uint16Array=ei(\"Uint16Array\");xe.int32Array=ei(\"Int32Array\");xe.uint32Array=ei(\"Uint32Array\");xe.float32Array=ei(\"Float32Array\");xe.float64Array=ei(\"Float64Array\");xe.bigInt64Array=ei(\"BigInt64Array\");xe.bigUint64Array=ei(\"BigUint64Array\");xe.arrayBuffer=ei(\"ArrayBuffer\");xe.sharedArrayBuffer=ei(\"SharedArrayBuffer\");xe.dataView=ei(\"DataView\");xe.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;xe.urlInstance=t=>ei(\"URL\")(t);xe.urlString=t=>{if(!xe.string(t))return!1;try{return new URL(t),!0}catch{return!1}};xe.truthy=t=>Boolean(t);xe.falsy=t=>!t;xe.nan=t=>Number.isNaN(t);xe.primitive=t=>xe.null_(t)||qrt(typeof t);xe.integer=t=>Number.isInteger(t);xe.safeInteger=t=>Number.isSafeInteger(t);xe.plainObject=t=>{if(Jse.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};xe.typedArray=t=>Urt(A1(t));var Wrt=t=>xe.safeInteger(t)&&t>=0;xe.arrayLike=t=>!xe.nullOrUndefined(t)&&!xe.function_(t)&&Wrt(t.length);xe.inRange=(t,e)=>{if(xe.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(xe.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var Vrt=1,Krt=[\"innerHTML\",\"ownerDocument\",\"style\",\"attributes\",\"nodeValue\"];xe.domElement=t=>xe.object(t)&&t.nodeType===Vrt&&xe.string(t.nodeName)&&!xe.plainObject(t)&&Krt.every(e=>e in t);xe.observable=t=>{var e,r,o,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(o=t)[\"@@observable\"])===null||a===void 0?void 0:a.call(o)):!1};xe.nodeStream=t=>xe.object(t)&&xe.function_(t.pipe)&&!xe.observable(t);xe.infinite=t=>t===1/0||t===-1/0;var zse=t=>e=>xe.integer(e)&&Math.abs(e%2)===t;xe.evenInteger=zse(0);xe.oddInteger=zse(1);xe.emptyArray=t=>xe.array(t)&&t.length===0;xe.nonEmptyArray=t=>xe.array(t)&&t.length>0;xe.emptyString=t=>xe.string(t)&&t.length===0;xe.nonEmptyString=t=>xe.string(t)&&t.length>0;var Jrt=t=>xe.string(t)&&!/\\S/.test(t);xe.emptyStringOrWhitespace=t=>xe.emptyString(t)||Jrt(t);xe.emptyObject=t=>xe.object(t)&&!xe.map(t)&&!xe.set(t)&&Object.keys(t).length===0;xe.nonEmptyObject=t=>xe.object(t)&&!xe.map(t)&&!xe.set(t)&&Object.keys(t).length>0;xe.emptySet=t=>xe.set(t)&&t.size===0;xe.nonEmptySet=t=>xe.set(t)&&t.size>0;xe.emptyMap=t=>xe.map(t)&&t.size===0;xe.nonEmptyMap=t=>xe.map(t)&&t.size>0;xe.propertyKey=t=>xe.any([xe.string,xe.number,xe.symbol],t);xe.formData=t=>ei(\"FormData\")(t);xe.urlSearchParams=t=>ei(\"URLSearchParams\")(t);var Xse=(t,e,r)=>{if(!xe.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError(\"Invalid number of values\");return t.call(r,e)};xe.any=(t,...e)=>(xe.array(t)?t:[t]).some(o=>Xse(Array.prototype.some,o,e));xe.all=(t,...e)=>Xse(Array.prototype.every,t,e);var Ht=(t,e,r,o={})=>{if(!t){let{multipleValues:a}=o,n=a?`received values of types ${[...new Set(r.map(u=>`\\`${xe(u)}\\``))].join(\", \")}`:`received value of type \\`${xe(r)}\\``;throw new TypeError(`Expected value which is \\`${e}\\`, ${n}.`)}};Ff.assert={undefined:t=>Ht(xe.undefined(t),\"undefined\",t),string:t=>Ht(xe.string(t),\"string\",t),number:t=>Ht(xe.number(t),\"number\",t),bigint:t=>Ht(xe.bigint(t),\"bigint\",t),function_:t=>Ht(xe.function_(t),\"Function\",t),null_:t=>Ht(xe.null_(t),\"null\",t),class_:t=>Ht(xe.class_(t),\"Class\",t),boolean:t=>Ht(xe.boolean(t),\"boolean\",t),symbol:t=>Ht(xe.symbol(t),\"symbol\",t),numericString:t=>Ht(xe.numericString(t),\"string with a number\",t),array:(t,e)=>{Ht(xe.array(t),\"Array\",t),e&&t.forEach(e)},buffer:t=>Ht(xe.buffer(t),\"Buffer\",t),nullOrUndefined:t=>Ht(xe.nullOrUndefined(t),\"null or undefined\",t),object:t=>Ht(xe.object(t),\"Object\",t),iterable:t=>Ht(xe.iterable(t),\"Iterable\",t),asyncIterable:t=>Ht(xe.asyncIterable(t),\"AsyncIterable\",t),generator:t=>Ht(xe.generator(t),\"Generator\",t),asyncGenerator:t=>Ht(xe.asyncGenerator(t),\"AsyncGenerator\",t),nativePromise:t=>Ht(xe.nativePromise(t),\"native Promise\",t),promise:t=>Ht(xe.promise(t),\"Promise\",t),generatorFunction:t=>Ht(xe.generatorFunction(t),\"GeneratorFunction\",t),asyncGeneratorFunction:t=>Ht(xe.asyncGeneratorFunction(t),\"AsyncGeneratorFunction\",t),asyncFunction:t=>Ht(xe.asyncFunction(t),\"AsyncFunction\",t),boundFunction:t=>Ht(xe.boundFunction(t),\"Function\",t),regExp:t=>Ht(xe.regExp(t),\"RegExp\",t),date:t=>Ht(xe.date(t),\"Date\",t),error:t=>Ht(xe.error(t),\"Error\",t),map:t=>Ht(xe.map(t),\"Map\",t),set:t=>Ht(xe.set(t),\"Set\",t),weakMap:t=>Ht(xe.weakMap(t),\"WeakMap\",t),weakSet:t=>Ht(xe.weakSet(t),\"WeakSet\",t),int8Array:t=>Ht(xe.int8Array(t),\"Int8Array\",t),uint8Array:t=>Ht(xe.uint8Array(t),\"Uint8Array\",t),uint8ClampedArray:t=>Ht(xe.uint8ClampedArray(t),\"Uint8ClampedArray\",t),int16Array:t=>Ht(xe.int16Array(t),\"Int16Array\",t),uint16Array:t=>Ht(xe.uint16Array(t),\"Uint16Array\",t),int32Array:t=>Ht(xe.int32Array(t),\"Int32Array\",t),uint32Array:t=>Ht(xe.uint32Array(t),\"Uint32Array\",t),float32Array:t=>Ht(xe.float32Array(t),\"Float32Array\",t),float64Array:t=>Ht(xe.float64Array(t),\"Float64Array\",t),bigInt64Array:t=>Ht(xe.bigInt64Array(t),\"BigInt64Array\",t),bigUint64Array:t=>Ht(xe.bigUint64Array(t),\"BigUint64Array\",t),arrayBuffer:t=>Ht(xe.arrayBuffer(t),\"ArrayBuffer\",t),sharedArrayBuffer:t=>Ht(xe.sharedArrayBuffer(t),\"SharedArrayBuffer\",t),dataView:t=>Ht(xe.dataView(t),\"DataView\",t),urlInstance:t=>Ht(xe.urlInstance(t),\"URL\",t),urlString:t=>Ht(xe.urlString(t),\"string with a URL\",t),truthy:t=>Ht(xe.truthy(t),\"truthy\",t),falsy:t=>Ht(xe.falsy(t),\"falsy\",t),nan:t=>Ht(xe.nan(t),\"NaN\",t),primitive:t=>Ht(xe.primitive(t),\"primitive\",t),integer:t=>Ht(xe.integer(t),\"integer\",t),safeInteger:t=>Ht(xe.safeInteger(t),\"integer\",t),plainObject:t=>Ht(xe.plainObject(t),\"plain object\",t),typedArray:t=>Ht(xe.typedArray(t),\"TypedArray\",t),arrayLike:t=>Ht(xe.arrayLike(t),\"array-like\",t),domElement:t=>Ht(xe.domElement(t),\"HTMLElement\",t),observable:t=>Ht(xe.observable(t),\"Observable\",t),nodeStream:t=>Ht(xe.nodeStream(t),\"Node.js Stream\",t),infinite:t=>Ht(xe.infinite(t),\"infinite number\",t),emptyArray:t=>Ht(xe.emptyArray(t),\"empty array\",t),nonEmptyArray:t=>Ht(xe.nonEmptyArray(t),\"non-empty array\",t),emptyString:t=>Ht(xe.emptyString(t),\"empty string\",t),nonEmptyString:t=>Ht(xe.nonEmptyString(t),\"non-empty string\",t),emptyStringOrWhitespace:t=>Ht(xe.emptyStringOrWhitespace(t),\"empty string or whitespace\",t),emptyObject:t=>Ht(xe.emptyObject(t),\"empty object\",t),nonEmptyObject:t=>Ht(xe.nonEmptyObject(t),\"non-empty object\",t),emptySet:t=>Ht(xe.emptySet(t),\"empty set\",t),nonEmptySet:t=>Ht(xe.nonEmptySet(t),\"non-empty set\",t),emptyMap:t=>Ht(xe.emptyMap(t),\"empty map\",t),nonEmptyMap:t=>Ht(xe.nonEmptyMap(t),\"non-empty map\",t),propertyKey:t=>Ht(xe.propertyKey(t),\"PropertyKey\",t),formData:t=>Ht(xe.formData(t),\"FormData\",t),urlSearchParams:t=>Ht(xe.urlSearchParams(t),\"URLSearchParams\",t),evenInteger:t=>Ht(xe.evenInteger(t),\"even integer\",t),oddInteger:t=>Ht(xe.oddInteger(t),\"odd integer\",t),directInstanceOf:(t,e)=>Ht(xe.directInstanceOf(t,e),\"T\",t),inRange:(t,e)=>Ht(xe.inRange(t,e),\"in range\",t),any:(t,...e)=>Ht(xe.any(t,...e),\"predicate returns truthy for any value\",e,{multipleValues:!0}),all:(t,...e)=>Ht(xe.all(t,...e),\"predicate returns truthy for all values\",e,{multipleValues:!0})};Object.defineProperties(xe,{class:{value:xe.class_},function:{value:xe.function_},null:{value:xe.null_}});Object.defineProperties(Ff.assert,{class:{value:Ff.assert.class_},function:{value:Ff.assert.function_},null:{value:Ff.assert.null_}});Ff.default=xe;KS.exports=xe;KS.exports.default=xe;KS.exports.assert=Ff.assert});var Zse=_((cLt,DO)=>{\"use strict\";var JS=class extends Error{constructor(e){super(e||\"Promise was canceled\"),this.name=\"CancelError\"}get isCanceled(){return!0}},wE=class{static fn(e){return(...r)=>new wE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,o)=>{this._reject=o;let a=A=>{this._isPending=!1,r(A)},n=A=>{this._isPending=!1,o(A)},u=A=>{if(!this._isPending)throw new Error(\"The `onCancel` handler was attached after the promise settled.\");this._cancelHandlers.push(A)};return Object.defineProperties(u,{shouldReject:{get:()=>this._rejectOnCancel,set:A=>{this._rejectOnCancel=A}}}),e(a,n,u)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new JS(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(wE.prototype,Promise.prototype);DO.exports=wE;DO.exports.CancelError=JS});var $se=_((SO,xO)=>{\"use strict\";Object.defineProperty(SO,\"__esModule\",{value:!0});var zrt=Be(\"tls\"),PO=(t,e)=>{let r;typeof e==\"function\"?r={connect:e}:r=e;let o=typeof r.connect==\"function\",a=typeof r.secureConnect==\"function\",n=typeof r.close==\"function\",u=()=>{o&&r.connect(),t instanceof zrt.TLSSocket&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once(\"secureConnect\",r.secureConnect)),n&&t.once(\"close\",r.close)};t.writable&&!t.connecting?u():t.connecting?t.once(\"connect\",u):t.destroyed&&n&&r.close(t._hadError)};SO.default=PO;xO.exports=PO;xO.exports.default=PO});var eoe=_((kO,QO)=>{\"use strict\";Object.defineProperty(kO,\"__esModule\",{value:!0});var Xrt=$se(),Zrt=Number(process.versions.node.split(\".\")[0]),bO=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=u=>{let A=u.emit.bind(u);u.emit=(p,...h)=>(p===\"error\"&&(e.error=Date.now(),e.phases.total=e.error-e.start,u.emit=A),A(p,...h))};r(t),t.prependOnceListener(\"abort\",()=>{e.abort=Date.now(),(!e.response||Zrt>=13)&&(e.phases.total=Date.now()-e.start)});let o=u=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let A=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};u.prependOnceListener(\"lookup\",A),Xrt.default(u,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(u.removeListener(\"lookup\",A),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?o(t.socket):t.prependOnceListener(\"socket\",o);let a=()=>{var u;e.upload=Date.now(),e.phases.request=e.upload-(u=e.secureConnect,u??e.connect)};return(()=>typeof t.writableFinished==\"boolean\"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?a():t.prependOnceListener(\"finish\",a),t.prependOnceListener(\"response\",u=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,u.timings=e,r(u),u.prependOnceListener(\"end\",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};kO.default=bO;QO.exports=bO;QO.exports.default=bO});var aoe=_((uLt,RO)=>{\"use strict\";var{V4MAPPED:$rt,ADDRCONFIG:ent,ALL:ooe,promises:{Resolver:toe},lookup:tnt}=Be(\"dns\"),{promisify:FO}=Be(\"util\"),rnt=Be(\"os\"),IE=Symbol(\"cacheableLookupCreateConnection\"),TO=Symbol(\"cacheableLookupInstance\"),roe=Symbol(\"expires\"),nnt=typeof ooe==\"number\",noe=t=>{if(!(t&&typeof t.createConnection==\"function\"))throw new Error(\"Expected an Agent instance as the first argument\")},int=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},ioe=()=>{let t=!1,e=!1;for(let r of Object.values(rnt.networkInterfaces()))for(let o of r)if(!o.internal&&(o.family===\"IPv6\"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},snt=t=>Symbol.iterator in t,soe={ttl:!0},ont={all:!0},zS=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorTtl:a=.15,resolver:n=new toe,lookup:u=tnt}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=FO(u),this._resolver instanceof toe?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=FO(this._resolver.resolve4.bind(this._resolver)),this._resolve6=FO(this._resolver.resolve6.bind(this._resolver))),this._iface=ioe(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,o<1)this._fallback=!1;else{this._fallback=!0;let A=setInterval(()=>{this._hostnamesToFallback.clear()},o*1e3);A.unref&&A.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,o){if(typeof r==\"function\"?(o=r,r={}):typeof r==\"number\"&&(r={family:r}),!o)throw new Error(\"Callback must be a function.\");this.lookupAsync(e,r).then(a=>{r.all?o(null,a):o(null,a.address,a.family,a.expires,a.ttl)},o)}async lookupAsync(e,r={}){typeof r==\"number\"&&(r={family:r});let o=await this.query(e);if(r.family===6){let a=o.filter(n=>n.family===6);r.hints&$rt&&(nnt&&r.hints&ooe||a.length===0)?int(o):o=a}else r.family===4&&(o=o.filter(a=>a.family===4));if(r.hints&ent){let{_iface:a}=this;o=o.filter(n=>n.family===6?a.has6:a.has4)}if(o.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code=\"ENOTFOUND\",a.hostname=e,a}return r.all?o:o[0]}async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending[e];if(o)r=await o;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(o=>({...o})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code===\"ENODATA\"||E.code===\"ENOTFOUND\")return[];throw E}},[o,a]=await Promise.all([this._resolve4(e,soe),this._resolve6(e,soe)].map(h=>r(h))),n=0,u=0,A=0,p=Date.now();for(let h of o)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,u=Math.max(u,h.ttl);return o.length>0?a.length>0?A=Math.min(n,u):A=n:A=u,{entries:[...o,...a],cacheTtl:A}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r[roe]=Date.now()+o;try{await this._cache.set(e,r,o)}catch(a){this.lookupAsync=async()=>{let n=new Error(\"Cache Error. Please recreate the CacheableLookup instance.\");throw n.cause=a,n}}snt(this._cache)&&this._tick(o)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,ont);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let o=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,o),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._removalTimeout),this._nextRemovalTime=e,this._removalTimeout=setTimeout(()=>{this._nextRemovalTime=!1;let o=1/0,a=Date.now();for(let[n,u]of this._cache){let A=u[roe];a>=A?this._cache.delete(n):A<o&&(o=A)}o!==1/0&&this._tick(o-a)},e),this._removalTimeout.unref&&this._removalTimeout.unref())}install(e){if(noe(e),IE in e)throw new Error(\"CacheableLookup has been already installed\");e[IE]=e.createConnection,e[TO]=this,e.createConnection=(r,o)=>(\"lookup\"in r||(r.lookup=this.lookup),e[IE](r,o))}uninstall(e){if(noe(e),e[IE]){if(e[TO]!==this)throw new Error(\"The agent is not owned by this CacheableLookup instance\");e.createConnection=e[IE],delete e[IE],delete e[TO]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=ioe(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};RO.exports=zS;RO.exports.default=zS});var uoe=_((ALt,NO)=>{\"use strict\";var ant=typeof URL>\"u\"?Be(\"url\").URL:URL,lnt=\"text/plain\",cnt=\"us-ascii\",loe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),unt=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let o=r[1].split(\";\"),a=r[2],n=e?\"\":r[3],u=!1;o[o.length-1]===\"base64\"&&(o.pop(),u=!0);let A=(o.shift()||\"\").toLowerCase(),h=[...o.map(E=>{let[I,v=\"\"]=E.split(\"=\").map(b=>b.trim());return I===\"charset\"&&(v=v.toLowerCase(),v===cnt)?\"\":`${I}${v?`=${v}`:\"\"}`}).filter(Boolean)];return u&&h.push(\"base64\"),(h.length!==0||A&&A!==lnt)&&h.unshift(A),`data:${h.join(\";\")},${u?a.trim():a}${n?`#${n}`:\"\"}`},coe=(t,e)=>{if(e={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,\"normalizeHttps\"))throw new Error(\"options.normalizeHttps is renamed to options.forceHttp\");if(Reflect.has(e,\"normalizeHttp\"))throw new Error(\"options.normalizeHttp is renamed to options.forceHttps\");if(Reflect.has(e,\"stripFragment\"))throw new Error(\"options.stripFragment is renamed to options.stripHash\");if(t=t.trim(),/^data:/i.test(t))return unt(t,e);let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new ant(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash&&(a.hash=\"\"),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\\/{2,}/g,(n,u)=>/^(?!\\/)/g.test(u)?`${u}/`:\"/\")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split(\"/\"),u=n[n.length-1];loe(u,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])loe(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\")),t=a.toString(),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t};NO.exports=coe;NO.exports.default=coe});var poe=_((fLt,foe)=>{foe.exports=Aoe;function Aoe(t,e){if(t&&e)return Aoe(t)(e);if(typeof t!=\"function\")throw new TypeError(\"need wrapper function\");return Object.keys(t).forEach(function(o){r[o]=t[o]}),r;function r(){for(var o=new Array(arguments.length),a=0;a<o.length;a++)o[a]=arguments[a];var n=t.apply(this,o),u=o[o.length-1];return typeof n==\"function\"&&n!==u&&Object.keys(u).forEach(function(A){n[A]=u[A]}),n}}});var MO=_((pLt,LO)=>{var hoe=poe();LO.exports=hoe(XS);LO.exports.strict=hoe(goe);XS.proto=XS(function(){Object.defineProperty(Function.prototype,\"once\",{value:function(){return XS(this)},configurable:!0}),Object.defineProperty(Function.prototype,\"onceStrict\",{value:function(){return goe(this)},configurable:!0})});function XS(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function goe(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||\"Function wrapped with `once`\";return e.onceError=r+\" shouldn't be called more than once\",e.called=!1,e}});var OO=_((hLt,moe)=>{var Ant=MO(),fnt=function(){},pnt=function(t){return t.setHeader&&typeof t.abort==\"function\"},hnt=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},doe=function(t,e,r){if(typeof e==\"function\")return doe(t,null,e);e||(e={}),r=Ant(r||fnt);var o=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,u=e.writable||e.writable!==!1&&t.writable,A=function(){t.writable||p()},p=function(){u=!1,n||r.call(t)},h=function(){n=!1,u||r.call(t)},E=function(C){r.call(t,C?new Error(\"exited with error code: \"+C):null)},I=function(C){r.call(t,C)},v=function(){if(n&&!(a&&a.ended))return r.call(t,new Error(\"premature close\"));if(u&&!(o&&o.ended))return r.call(t,new Error(\"premature close\"))},b=function(){t.req.on(\"finish\",p)};return pnt(t)?(t.on(\"complete\",p),t.on(\"abort\",v),t.req?b():t.on(\"request\",b)):u&&!o&&(t.on(\"end\",A),t.on(\"close\",A)),hnt(t)&&t.on(\"exit\",E),t.on(\"end\",h),t.on(\"finish\",p),e.error!==!1&&t.on(\"error\",I),t.on(\"close\",v),function(){t.removeListener(\"complete\",p),t.removeListener(\"abort\",v),t.removeListener(\"request\",b),t.req&&t.req.removeListener(\"finish\",p),t.removeListener(\"end\",A),t.removeListener(\"close\",A),t.removeListener(\"finish\",p),t.removeListener(\"exit\",E),t.removeListener(\"end\",h),t.removeListener(\"error\",I),t.removeListener(\"close\",v)}};moe.exports=doe});var Coe=_((gLt,Eoe)=>{var gnt=MO(),dnt=OO(),UO=Be(\"fs\"),f1=function(){},mnt=/^v?\\.0/.test(process.version),ZS=function(t){return typeof t==\"function\"},ynt=function(t){return!mnt||!UO?!1:(t instanceof(UO.ReadStream||f1)||t instanceof(UO.WriteStream||f1))&&ZS(t.close)},Ent=function(t){return t.setHeader&&ZS(t.abort)},Cnt=function(t,e,r,o){o=gnt(o);var a=!1;t.on(\"close\",function(){a=!0}),dnt(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,ynt(t))return t.close(f1);if(Ent(t))return t.abort();if(ZS(t.destroy))return t.destroy();o(u||new Error(\"stream was destroyed\"))}}},yoe=function(t){t()},wnt=function(t,e){return t.pipe(e)},Int=function(){var t=Array.prototype.slice.call(arguments),e=ZS(t[t.length-1]||f1)&&t.pop()||f1;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error(\"pump requires two streams per minimum\");var r,o=t.map(function(a,n){var u=n<t.length-1,A=n>0;return Cnt(a,u,A,function(p){r||(r=p),p&&o.forEach(yoe),!u&&(o.forEach(yoe),e(r))})});return t.reduce(wnt)};Eoe.exports=Int});var Ioe=_((dLt,woe)=>{\"use strict\";var{PassThrough:Bnt}=Be(\"stream\");woe.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,o=r===\"buffer\",a=!1;e?a=!(r||o):r=r||\"utf8\",o&&(r=null);let n=new Bnt({objectMode:a});r&&n.setEncoding(r);let u=0,A=[];return n.on(\"data\",p=>{A.push(p),a?u=A.length:u+=p.length}),n.getBufferedValue=()=>e?A:o?Buffer.concat(A,u):A.join(\"\"),n.getBufferedLength=()=>u,n}});var Boe=_((mLt,BE)=>{\"use strict\";var vnt=Coe(),Dnt=Ioe(),$S=class extends Error{constructor(){super(\"maxBuffer exceeded\"),this.name=\"MaxBufferError\"}};async function ex(t,e){if(!t)return Promise.reject(new Error(\"Expected a stream\"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,o;return await new Promise((a,n)=>{let u=A=>{A&&(A.bufferedData=o.getBufferedValue()),n(A)};o=vnt(t,Dnt(e),A=>{if(A){u(A);return}a()}),o.on(\"data\",()=>{o.getBufferedLength()>r&&u(new $S)})}),o.getBufferedValue()}BE.exports=ex;BE.exports.default=ex;BE.exports.buffer=(t,e)=>ex(t,{...e,encoding:\"buffer\"});BE.exports.array=(t,e)=>ex(t,{...e,array:!0});BE.exports.MaxBufferError=$S});var Doe=_((ELt,voe)=>{\"use strict\";var Pnt=new Set([200,203,204,206,300,301,404,405,410,414,501]),Snt=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),xnt=new Set([500,502,503,504]),bnt={date:!0,connection:!0,\"keep-alive\":!0,\"proxy-authenticate\":!0,\"proxy-authorization\":!0,te:!0,trailer:!0,\"transfer-encoding\":!0,upgrade:!0},knt={\"content-length\":!0,\"content-encoding\":!0,\"transfer-encoding\":!0,\"content-range\":!0};function Dd(t){let e=parseInt(t,10);return isFinite(e)?e:0}function Qnt(t){return t?xnt.has(t.status):!0}function _O(t){let e={};if(!t)return e;let r=t.trim().split(/\\s*,\\s*/);for(let o of r){let[a,n]=o.split(/\\s*=\\s*/,2);e[a]=n===void 0?!0:n.replace(/^\"|\"$/g,\"\")}return e}function Fnt(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+\"=\"+o)}if(!!e.length)return e.join(\", \")}voe.exports=class{constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:u,_fromObject:A}={}){if(A){this._fromObject(A);return}if(!r||!r.headers)throw Error(\"Response headers missing\");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=o!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status=\"status\"in r?r.status:200,this._resHeaders=r.headers,this._rescc=_O(r.headers[\"cache-control\"]),this._method=\"method\"in e?e.method:\"GET\",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=_O(e.headers[\"cache-control\"]),u&&\"pre-check\"in this._rescc&&\"post-check\"in this._rescc&&(delete this._rescc[\"pre-check\"],delete this._rescc[\"post-check\"],delete this._rescc[\"no-cache\"],delete this._rescc[\"no-store\"],delete this._rescc[\"must-revalidate\"],this._resHeaders=Object.assign({},this._resHeaders,{\"cache-control\":Fnt(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers[\"cache-control\"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc[\"no-cache\"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc[\"no-store\"]&&(this._method===\"GET\"||this._method===\"HEAD\"||this._method===\"POST\"&&this._hasExplicitExpiration())&&Snt.has(this._status)&&!this._rescc[\"no-store\"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc[\"max-age\"]||this._isShared&&this._rescc[\"s-maxage\"]||this._rescc.public||Pnt.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc[\"s-maxage\"]||this._rescc[\"max-age\"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error(\"Request headers missing\")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=_O(e.headers[\"cache-control\"]);return r[\"no-cache\"]||/no-cache/.test(e.headers.pragma)||r[\"max-age\"]&&this.age()>r[\"max-age\"]||r[\"min-fresh\"]&&this.timeToLive()<1e3*r[\"min-fresh\"]||this.stale()&&!(r[\"max-stale\"]&&!this._rescc[\"must-revalidate\"]&&(r[\"max-stale\"]===!0||r[\"max-stale\"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method===\"HEAD\")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc[\"must-revalidate\"]||this._rescc.public||this._rescc[\"s-maxage\"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary===\"*\")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\\s*,\\s*/);for(let o of r)if(e.headers[o]!==this._reqHeaders[o])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let o in e)bnt[o]||(r[o]=e[o]);if(e.connection){let o=e.connection.trim().split(/\\s*,\\s*/);for(let a of o)delete r[a]}if(r.warning){let o=r.warning.split(/,/).filter(a=>!/^\\s*1[0-9][0-9]/.test(a));o.length?r.warning=o.join(\",\").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:\"\")+'113 - \"rfc7234 5.5.4\"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return Dd(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc[\"no-cache\"]||this._isShared&&this._resHeaders[\"set-cookie\"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary===\"*\")return 0;if(this._isShared){if(this._rescc[\"proxy-revalidate\"])return 0;if(this._rescc[\"s-maxage\"])return Dd(this._rescc[\"s-maxage\"])}if(this._rescc[\"max-age\"])return Dd(this._rescc[\"max-age\"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let o=Date.parse(this._resHeaders.expires);return Number.isNaN(o)||o<r?0:Math.max(e,(o-r)/1e3)}if(this._resHeaders[\"last-modified\"]){let o=Date.parse(this._resHeaders[\"last-modified\"]);if(isFinite(o)&&r>o)return Math.max(e,(r-o)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+Dd(this._rescc[\"stale-if-error\"]),o=e+Dd(this._rescc[\"stale-while-revalidate\"]);return Math.max(0,e,r,o)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+Dd(this._rescc[\"stale-if-error\"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+Dd(this._rescc[\"stale-while-revalidate\"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error(\"Reinitialized\");if(!e||e.v!==1)throw Error(\"Invalid serialization\");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r[\"if-range\"],!this._requestMatches(e,!0)||!this.storable())return delete r[\"if-none-match\"],delete r[\"if-modified-since\"],r;if(this._resHeaders.etag&&(r[\"if-none-match\"]=r[\"if-none-match\"]?`${r[\"if-none-match\"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r[\"accept-ranges\"]||r[\"if-match\"]||r[\"if-unmodified-since\"]||this._method&&this._method!=\"GET\"){if(delete r[\"if-modified-since\"],r[\"if-none-match\"]){let a=r[\"if-none-match\"].split(/,/).filter(n=>!/^\\s*W\\//.test(n));a.length?r[\"if-none-match\"]=a.join(\",\").trim():delete r[\"if-none-match\"]}}else this._resHeaders[\"last-modified\"]&&!r[\"if-modified-since\"]&&(r[\"if-modified-since\"]=this._resHeaders[\"last-modified\"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&Qnt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error(\"Response headers missing\");let o=!1;if(r.status!==void 0&&r.status!=304?o=!1:r.headers.etag&&!/^\\s*W\\//.test(r.headers.etag)?o=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?o=this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag.replace(/^\\s*W\\//,\"\"):this._resHeaders[\"last-modified\"]?o=this._resHeaders[\"last-modified\"]===r.headers[\"last-modified\"]:!this._resHeaders.etag&&!this._resHeaders[\"last-modified\"]&&!r.headers.etag&&!r.headers[\"last-modified\"]&&(o=!0),!o)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let u in this._resHeaders)a[u]=u in r.headers&&!knt[u]?r.headers[u]:this._resHeaders[u];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var tx=_((CLt,Poe)=>{\"use strict\";Poe.exports=t=>{let e={};for(let[r,o]of Object.entries(t))e[r.toLowerCase()]=o;return e}});var xoe=_((wLt,Soe)=>{\"use strict\";var Tnt=Be(\"stream\").Readable,Rnt=tx(),HO=class extends Tnt{constructor(e,r,o,a){if(typeof e!=\"number\")throw new TypeError(\"Argument `statusCode` should be a number\");if(typeof r!=\"object\")throw new TypeError(\"Argument `headers` should be an object\");if(!(o instanceof Buffer))throw new TypeError(\"Argument `body` should be a buffer\");if(typeof a!=\"string\")throw new TypeError(\"Argument `url` should be a string\");super(),this.statusCode=e,this.headers=Rnt(r),this.body=o,this.url=a}_read(){this.push(this.body),this.push(null)}};Soe.exports=HO});var koe=_((ILt,boe)=>{\"use strict\";var Nnt=[\"destroy\",\"setTimeout\",\"socket\",\"headers\",\"trailers\",\"rawHeaders\",\"statusCode\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"rawTrailers\",\"statusMessage\"];boe.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Nnt));for(let o of r)o in e||(e[o]=typeof t[o]==\"function\"?t[o].bind(t):t[o])}});var Foe=_((BLt,Qoe)=>{\"use strict\";var Lnt=Be(\"stream\").PassThrough,Mnt=koe(),Ont=t=>{if(!(t&&t.pipe))throw new TypeError(\"Parameter `response` must be a response stream.\");let e=new Lnt;return Mnt(t,e),t.pipe(e)};Qoe.exports=Ont});var Toe=_(jO=>{jO.stringify=function t(e){if(typeof e>\"u\")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(\":base64:\"+e.toString(\"base64\"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e==\"object\"){var r=\"\",o=Array.isArray(e);r=o?\"[\":\"{\";var a=!0;for(var n in e){var u=typeof e[n]==\"function\"||!o&&typeof e[n]>\"u\";Object.hasOwnProperty.call(e,n)&&!u&&(a||(r+=\",\"),a=!1,o?e[n]==null?r+=\"null\":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+\":\"+t(e[n])))}return r+=o?\"]\":\"}\",r}else return typeof e==\"string\"?JSON.stringify(/^:/.test(e)?\":\"+e:e):typeof e>\"u\"?\"null\":JSON.stringify(e)};jO.parse=function(t){return JSON.parse(t,function(e,r){return typeof r==\"string\"?/^:base64:/.test(r)?Buffer.from(r.substring(8),\"base64\"):/^:/.test(r)?r.substring(1):r:r})}});var Loe=_((DLt,Noe)=>{\"use strict\";var Unt=Be(\"events\"),Roe=Toe(),_nt=t=>{let e={redis:\"@keyv/redis\",mongodb:\"@keyv/mongo\",mongo:\"@keyv/mongo\",sqlite:\"@keyv/sqlite\",postgresql:\"@keyv/postgres\",postgres:\"@keyv/postgres\",mysql:\"@keyv/mysql\"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(Be(e[r]))(t)}return new Map},qO=class extends Unt{constructor(e,r){if(super(),this.opts=Object.assign({namespace:\"keyv\",serialize:Roe.stringify,deserialize:Roe.parse},typeof e==\"string\"?{uri:e}:e,r),!this.opts.store){let o=Object.assign({},this.opts);this.opts.store=_nt(o)}typeof this.opts.store.on==\"function\"&&this.opts.store.on(\"error\",o=>this.emit(\"error\",o)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:o}=this.opts;return Promise.resolve().then(()=>o.get(e)).then(a=>typeof a==\"string\"?this.opts.deserialize(a):a).then(a=>{if(a!==void 0){if(typeof a.expires==\"number\"&&Date.now()>a.expires){this.delete(e);return}return r&&r.raw?a:a.value}})}set(e,r,o){e=this._getKeyPrefix(e),typeof o>\"u\"&&(o=this.opts.ttl),o===0&&(o=void 0);let{store:a}=this.opts;return Promise.resolve().then(()=>{let n=typeof o==\"number\"?Date.now()+o:null;return r={value:r,expires:n},this.opts.serialize(r)}).then(n=>a.set(e,n,o)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};Noe.exports=qO});var Uoe=_((SLt,Ooe)=>{\"use strict\";var Hnt=Be(\"events\"),rx=Be(\"url\"),jnt=uoe(),qnt=Boe(),GO=Doe(),Moe=xoe(),Gnt=tx(),Ynt=Foe(),Wnt=Loe(),jc=class{constructor(e,r){if(typeof e!=\"function\")throw new TypeError(\"Parameter `request` must be a function\");return this.cache=new Wnt({uri:typeof r==\"string\"&&r,store:typeof r!=\"string\"&&r,namespace:\"cacheable-request\"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,o)=>{let a;if(typeof r==\"string\")a=YO(rx.parse(r)),r={};else if(r instanceof rx.URL)a=YO(rx.parse(r.toString())),r={};else{let[I,...v]=(r.path||\"\").split(\"?\"),b=v.length>0?`?${v.join(\"?\")}`:\"\";a=YO({...r,pathname:I,search:b})}r={headers:{},method:\"GET\",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...Vnt(a)},r.headers=Gnt(r.headers);let n=new Hnt,u=jnt(rx.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),A=`${r.method}:${u}`,p=!1,h=!1,E=I=>{h=!0;let v=!1,b,C=new Promise(L=>{b=()=>{v||(v=!0,L())}}),T=L=>{if(p&&!I.forceRefresh){L.status=L.statusCode;let J=GO.fromObject(p.cachePolicy).revalidatedPolicy(I,L);if(!J.modified){let te=J.policy.responseHeaders();L=new Moe(p.statusCode,te,p.body,p.url),L.cachePolicy=J.policy,L.fromCache=!0}}L.fromCache||(L.cachePolicy=new GO(I,L,I),L.fromCache=!1);let U;I.cache&&L.cachePolicy.storable()?(U=Ynt(L),(async()=>{try{let J=qnt.buffer(L);if(await Promise.race([C,new Promise(Ae=>L.once(\"end\",Ae))]),v)return;let te=await J,le={cachePolicy:L.cachePolicy.toObject(),url:L.url,statusCode:L.fromCache?p.statusCode:L.statusCode,body:te},pe=I.strictTtl?L.cachePolicy.timeToLive():void 0;I.maxTtl&&(pe=pe?Math.min(pe,I.maxTtl):I.maxTtl),await this.cache.set(A,le,pe)}catch(J){n.emit(\"error\",new jc.CacheError(J))}})()):I.cache&&p&&(async()=>{try{await this.cache.delete(A)}catch(J){n.emit(\"error\",new jc.CacheError(J))}})(),n.emit(\"response\",U||L),typeof o==\"function\"&&o(U||L)};try{let L=e(I,T);L.once(\"error\",b),L.once(\"abort\",b),n.emit(\"request\",L)}catch(L){n.emit(\"error\",new jc.RequestError(L))}};return(async()=>{let I=async b=>{await Promise.resolve();let C=b.cache?await this.cache.get(A):void 0;if(typeof C>\"u\")return E(b);let T=GO.fromObject(C.cachePolicy);if(T.satisfiesWithoutRevalidation(b)&&!b.forceRefresh){let L=T.responseHeaders(),U=new Moe(C.statusCode,L,C.body,C.url);U.cachePolicy=T,U.fromCache=!0,n.emit(\"response\",U),typeof o==\"function\"&&o(U)}else p=C,b.headers=T.revalidationHeaders(b),E(b)},v=b=>n.emit(\"error\",new jc.CacheError(b));this.cache.once(\"error\",v),n.on(\"response\",()=>this.cache.removeListener(\"error\",v));try{await I(r)}catch(b){r.automaticFailover&&!h&&E(r),n.emit(\"error\",new jc.CacheError(b))}})(),n}}};function Vnt(t){let e={...t};return e.path=`${t.pathname||\"/\"}${t.search||\"\"}`,delete e.pathname,delete e.search,e}function YO(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||\"localhost\",port:t.port,pathname:t.pathname,search:t.search}}jc.RequestError=class extends Error{constructor(t){super(t.message),this.name=\"RequestError\",Object.assign(this,t)}};jc.CacheError=class extends Error{constructor(t){super(t.message),this.name=\"CacheError\",Object.assign(this,t)}};Ooe.exports=jc});var Hoe=_((kLt,_oe)=>{\"use strict\";var Knt=[\"aborted\",\"complete\",\"headers\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"method\",\"rawHeaders\",\"rawTrailers\",\"setTimeout\",\"socket\",\"statusCode\",\"statusMessage\",\"trailers\",\"url\"];_oe.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error(\"The second stream must have the `autoDestroy` option set to `false`\");let r=new Set(Object.keys(t).concat(Knt)),o={};for(let a of r)a in e||(o[a]={get(){let n=t[a];return typeof n==\"function\"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,o),t.once(\"aborted\",()=>{e.destroy(),e.emit(\"aborted\")}),t.once(\"close\",()=>{t.complete&&e.readable?e.once(\"end\",()=>{e.emit(\"close\")}):e.emit(\"close\")}),e}});var qoe=_((QLt,joe)=>{\"use strict\";var{Transform:Jnt,PassThrough:znt}=Be(\"stream\"),WO=Be(\"zlib\"),Xnt=Hoe();joe.exports=t=>{let e=(t.headers[\"content-encoding\"]||\"\").toLowerCase();if(![\"gzip\",\"deflate\",\"br\"].includes(e))return t;let r=e===\"br\";if(r&&typeof WO.createBrotliDecompress!=\"function\")return t.destroy(new Error(\"Brotli is not supported on Node.js < 12\")),t;let o=!0,a=new Jnt({transform(A,p,h){o=!1,h(null,A)},flush(A){A()}}),n=new znt({autoDestroy:!1,destroy(A,p){t.destroy(),p(A)}}),u=r?WO.createBrotliDecompress():WO.createUnzip();return u.once(\"error\",A=>{if(o&&!t.readable){n.end();return}n.destroy(A)}),Xnt(t,n),t.pipe(a).pipe(u).pipe(n),n}});var KO=_((FLt,Goe)=>{\"use strict\";var VO=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError(\"`maxSize` must be a number greater than 0\");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction==\"function\")for(let[o,a]of this.oldCache.entries())this.onEviction(o,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};Goe.exports=VO});var zO=_((TLt,Koe)=>{\"use strict\";var Znt=Be(\"events\"),$nt=Be(\"tls\"),eit=Be(\"http2\"),tit=KO(),ea=Symbol(\"currentStreamsCount\"),Yoe=Symbol(\"request\"),Wl=Symbol(\"cachedOriginSet\"),vE=Symbol(\"gracefullyClosing\"),rit=[\"maxDeflateDynamicTableSize\",\"maxSessionMemory\",\"maxHeaderListPairs\",\"maxOutstandingPings\",\"maxReservedRemoteStreams\",\"maxSendHeaderBlockLength\",\"paddingStrategy\",\"localAddress\",\"path\",\"rejectUnauthorized\",\"minDHSize\",\"ca\",\"cert\",\"clientCertEngine\",\"ciphers\",\"key\",\"pfx\",\"servername\",\"minVersion\",\"maxVersion\",\"secureProtocol\",\"crl\",\"honorCipherOrder\",\"ecdhCurve\",\"dhparam\",\"secureOptions\",\"sessionIdContext\"],nit=(t,e,r)=>{let o=0,a=t.length;for(;o<a;){let n=o+a>>>1;r(t[n],e)?o=n+1:a=n}return o},iit=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,JO=(t,e)=>{for(let r of t)r[Wl].length<e[Wl].length&&r[Wl].every(o=>e[Wl].includes(o))&&r[ea]+e[ea]<=e.remoteSettings.maxConcurrentStreams&&Voe(r)},sit=(t,e)=>{for(let r of t)e[Wl].length<r[Wl].length&&e[Wl].every(o=>r[Wl].includes(o))&&e[ea]+r[ea]<=r.remoteSettings.maxConcurrentStreams&&Voe(e)},Woe=({agent:t,isFree:e})=>{let r={};for(let o in t.sessions){let n=t.sessions[o].filter(u=>{let A=u[tA.kCurrentStreamsCount]<u.remoteSettings.maxConcurrentStreams;return e?A:!A});n.length!==0&&(r[o]=n)}return r},Voe=t=>{t[vE]=!0,t[ea]===0&&t.close()},tA=class extends Znt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=o,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new tit({maxSize:a})}static normalizeOrigin(e,r){return typeof e==\"string\"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r=\"\";if(e)for(let o of rit)e[o]&&(r+=`:${e[o]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let o=this.queue[e][r];this._sessionsCount<this.maxSessions&&!o.completed&&(o.completed=!0,o())}getSession(e,r,o){return new Promise((a,n)=>{Array.isArray(o)?(o=[...o],a()):o=[{resolve:a,reject:n}];let u=this.normalizeOptions(r),A=tA.normalizeOrigin(e,r&&r.servername);if(A===void 0){for(let{reject:E}of o)E(new TypeError(\"The `origin` argument needs to be a string or an URL object\"));return}if(u in this.sessions){let E=this.sessions[u],I=-1,v=-1,b;for(let C of E){let T=C.remoteSettings.maxConcurrentStreams;if(T<I)break;if(C[Wl].includes(A)){let L=C[ea];if(L>=T||C[vE]||C.destroyed)continue;b||(I=T),L>v&&(b=C,v=L)}}if(b){if(o.length!==1){for(let{reject:C}of o){let T=new Error(`Expected the length of listeners to be 1, got ${o.length}.\nPlease report this to https://github.com/szmarczak/http2-wrapper/`);C(T)}return}o[0].resolve(b);return}}if(u in this.queue){if(A in this.queue[u]){this.queue[u][A].listeners.push(...o),this._tryToCreateNewSession(u,A);return}}else this.queue[u]={};let p=()=>{u in this.queue&&this.queue[u][A]===h&&(delete this.queue[u][A],Object.keys(this.queue[u]).length===0&&delete this.queue[u])},h=()=>{let E=`${A}:${u}`,I=!1;try{let v=eit.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});v[ea]=0,v[vE]=!1;let b=()=>v[ea]<v.remoteSettings.maxConcurrentStreams,C=!0;v.socket.once(\"session\",L=>{this.tlsSessionCache.set(E,L)}),v.once(\"error\",L=>{for(let{reject:U}of o)U(L);this.tlsSessionCache.delete(E)}),v.setTimeout(this.timeout,()=>{v.destroy()}),v.once(\"close\",()=>{if(I){C&&this._freeSessionsCount--,this._sessionsCount--;let L=this.sessions[u];L.splice(L.indexOf(v),1),L.length===0&&delete this.sessions[u]}else{let L=new Error(\"Session closed without receiving a SETTINGS frame\");L.code=\"HTTP2WRAPPER_NOSETTINGS\";for(let{reject:U}of o)U(L);p()}this._tryToCreateNewSession(u,A)});let T=()=>{if(!(!(u in this.queue)||!b())){for(let L of v[Wl])if(L in this.queue[u]){let{listeners:U}=this.queue[u][L];for(;U.length!==0&&b();)U.shift().resolve(v);let J=this.queue[u];if(J[L].listeners.length===0&&(delete J[L],Object.keys(J).length===0)){delete this.queue[u];break}if(!b())break}}};v.on(\"origin\",()=>{v[Wl]=v.originSet,b()&&(T(),JO(this.sessions[u],v))}),v.once(\"remoteSettings\",()=>{if(v.ref(),v.unref(),this._sessionsCount++,h.destroyed){let L=new Error(\"Agent has been destroyed\");for(let U of o)U.reject(L);v.destroy();return}v[Wl]=v.originSet;{let L=this.sessions;if(u in L){let U=L[u];U.splice(nit(U,v,iit),0,v)}else L[u]=[v]}this._freeSessionsCount+=1,I=!0,this.emit(\"session\",v),T(),p(),v[ea]===0&&this._freeSessionsCount>this.maxFreeSessions&&v.close(),o.length!==0&&(this.getSession(A,r,o),o.length=0),v.on(\"remoteSettings\",()=>{T(),JO(this.sessions[u],v)})}),v[Yoe]=v.request,v.request=(L,U)=>{if(v[vE])throw new Error(\"The session is gracefully closing. No new streams are allowed.\");let J=v[Yoe](L,U);return v.ref(),++v[ea],v[ea]===v.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,J.once(\"close\",()=>{if(C=b(),--v[ea],!v.destroyed&&!v.closed&&(sit(this.sessions[u],v),b()&&!v.closed)){C||(this._freeSessionsCount++,C=!0);let te=v[ea]===0;te&&v.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||v[vE])?v.close():(JO(this.sessions[u],v),T())}}),J}}catch(v){for(let b of o)b.reject(v);p()}};h.listeners=o,h.completed=!1,h.destroyed=!1,this.queue[u][A]=h,this._tryToCreateNewSession(u,A)})}request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject:u,resolve:A=>{try{n(A.request(o,a))}catch(p){u(p)}}}])})}createConnection(e,r){return tA.connect(e,r)}static connect(e,r){r.ALPNProtocols=[\"h2\"];let o=e.port||443,a=e.hostname||e.host;return typeof r.servername>\"u\"&&(r.servername=a),$nt.connect(o,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[ea]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.destroy(e);for(let r of Object.values(this.queue))for(let o of Object.values(r))o.destroyed=!0;this.queue={}}get freeSessions(){return Woe({agent:this,isFree:!0})}get busySessions(){return Woe({agent:this,isFree:!1})}};tA.kCurrentStreamsCount=ea;tA.kGracefullyClosing=vE;Koe.exports={Agent:tA,globalAgent:new tA}});var ZO=_((RLt,Joe)=>{\"use strict\";var{Readable:oit}=Be(\"stream\"),XO=class extends oit{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage=\"\",this.httpVersion=\"2.0\",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners(\"data\"),this.resume())}_read(){this.req&&this.req._request.resume()}};Joe.exports=XO});var $O=_((NLt,zoe)=>{\"use strict\";zoe.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname==\"string\"&&t.hostname.startsWith(\"[\")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||\"\"}${t.search||\"\"}`};return typeof t.port==\"string\"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||\"\"}:${t.password||\"\"}`),e}});var Zoe=_((LLt,Xoe)=>{\"use strict\";Xoe.exports=(t,e,r)=>{for(let o of r)t.on(o,(...a)=>e.emit(o,...a))}});var eae=_((MLt,$oe)=>{\"use strict\";$oe.exports=t=>{switch(t){case\":method\":case\":scheme\":case\":authority\":case\":path\":return!0;default:return!1}}});var rae=_((ULt,tae)=>{\"use strict\";var DE=(t,e,r)=>{tae.exports[e]=class extends t{constructor(...a){super(typeof r==\"string\"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};DE(TypeError,\"ERR_INVALID_ARG_TYPE\",t=>{let e=t[0].includes(\".\")?\"property\":\"argument\",r=t[1],o=Array.isArray(r);return o&&(r=`${r.slice(0,-1).join(\", \")} or ${r.slice(-1)}`),`The \"${t[0]}\" ${e} must be ${o?\"one of\":\"of\"} type ${r}. Received ${typeof t[2]}`});DE(TypeError,\"ERR_INVALID_PROTOCOL\",t=>`Protocol \"${t[0]}\" not supported. Expected \"${t[1]}\"`);DE(Error,\"ERR_HTTP_HEADERS_SENT\",t=>`Cannot ${t[0]} headers after they are sent to the client`);DE(TypeError,\"ERR_INVALID_HTTP_TOKEN\",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);DE(TypeError,\"ERR_HTTP_INVALID_HEADER_VALUE\",t=>`Invalid value \"${t[0]} for header \"${t[1]}\"`);DE(TypeError,\"ERR_INVALID_CHAR\",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var i4=_((_Lt,cae)=>{\"use strict\";var ait=Be(\"http2\"),{Writable:lit}=Be(\"stream\"),{Agent:nae,globalAgent:cit}=zO(),uit=ZO(),Ait=$O(),fit=Zoe(),pit=eae(),{ERR_INVALID_ARG_TYPE:e4,ERR_INVALID_PROTOCOL:hit,ERR_HTTP_HEADERS_SENT:iae,ERR_INVALID_HTTP_TOKEN:git,ERR_HTTP_INVALID_HEADER_VALUE:dit,ERR_INVALID_CHAR:mit}=rae(),{HTTP2_HEADER_STATUS:sae,HTTP2_HEADER_METHOD:oae,HTTP2_HEADER_PATH:aae,HTTP2_METHOD_CONNECT:yit}=ait.constants,Qo=Symbol(\"headers\"),t4=Symbol(\"origin\"),r4=Symbol(\"session\"),lae=Symbol(\"options\"),nx=Symbol(\"flushedHeaders\"),p1=Symbol(\"jobs\"),Eit=/^[\\^`\\-\\w!#$%&*+.|~]+$/,Cit=/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/,n4=class extends lit{constructor(e,r,o){super({autoDestroy:!1});let a=typeof e==\"string\"||e instanceof URL;if(a&&(e=Ait(e instanceof URL?e:new URL(e))),typeof r==\"function\"||r===void 0?(o=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[r4]=r.h2session;else if(r.agent===!1)this.agent=new nae({maxFreeSessions:0});else if(typeof r.agent>\"u\"||r.agent===null)typeof r.createConnection==\"function\"?(this.agent=new nae({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=cit;else if(typeof r.agent.request==\"function\")this.agent=r.agent;else throw new e4(\"options.agent\",[\"Agent-like Object\",\"undefined\",\"false\"],r.agent);if(r.protocol&&r.protocol!==\"https:\")throw new hit(r.protocol,\"https:\");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,u=r.hostname||r.host||\"localhost\";delete r.hostname,delete r.host,delete r.port;let{timeout:A}=r;if(r.timeout=void 0,this[Qo]=Object.create(null),this[p1]=[],this.socket=null,this.connection=null,this.method=r.method||\"GET\",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!(\"authorization\"in this[Qo])&&(this[Qo].authorization=\"Basic \"+Buffer.from(r.auth).toString(\"base64\")),r.session=r.tlsSession,r.path=r.socketPath,this[lae]=r,n===443?(this[t4]=`https://${u}`,\":authority\"in this[Qo]||(this[Qo][\":authority\"]=u)):(this[t4]=`https://${u}:${n}`,\":authority\"in this[Qo]||(this[Qo][\":authority\"]=`${u}:${n}`)),A&&this.setTimeout(A),o&&this.once(\"response\",o),this[nx]=!1}get method(){return this[Qo][oae]}set method(e){e&&(this[Qo][oae]=e.toUpperCase())}get path(){return this[Qo][aae]}set path(e){e&&(this[Qo][aae]=e)}get _mustNotHaveABody(){return this.method===\"GET\"||this.method===\"HEAD\"||this.method===\"DELETE\"}_write(e,r,o){if(this._mustNotHaveABody){o(new Error(\"The GET, HEAD and DELETE methods must NOT have a body\"));return}this.flushHeaders();let a=()=>this._request.write(e,r,o);this._request?a():this[p1].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[p1].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit(\"abort\")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[nx]||this.destroyed)return;this[nx]=!0;let e=this.method===yit,r=o=>{if(this._request=o,this.destroyed){o.destroy();return}e||fit(o,this,[\"timeout\",\"continue\",\"close\",\"error\"]);let a=u=>(...A)=>{!this.writable&&!this.destroyed?u(...A):this.once(\"finish\",()=>{u(...A)})};o.once(\"response\",a((u,A,p)=>{let h=new uit(this.socket,o.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=u[sae],h.headers=u,h.rawHeaders=p,h.once(\"end\",()=>{this.aborted?(h.aborted=!0,h.emit(\"aborted\")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit(\"connect\",h,o,Buffer.alloc(0))?this.emit(\"close\"):o.destroy()):(o.on(\"data\",E=>{!h._dumped&&!h.push(E)&&o.pause()}),o.once(\"end\",()=>{h.push(null)}),this.emit(\"response\",h)||h._dump())})),o.once(\"headers\",a(u=>this.emit(\"information\",{statusCode:u[sae]}))),o.once(\"trailers\",a((u,A,p)=>{let{res:h}=this;h.trailers=u,h.rawTrailers=p}));let{socket:n}=o.session;this.socket=n,this.connection=n;for(let u of this[p1])u();this.emit(\"socket\",this.socket)};if(this[r4])try{r(this[r4].request(this[Qo]))}catch(o){this.emit(\"error\",o)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[t4],this[lae],this[Qo]))}catch(o){this.emit(\"error\",o)}}}getHeader(e){if(typeof e!=\"string\")throw new e4(\"name\",\"string\",e);return this[Qo][e.toLowerCase()]}get headersSent(){return this[nx]}removeHeader(e){if(typeof e!=\"string\")throw new e4(\"name\",\"string\",e);if(this.headersSent)throw new iae(\"remove\");delete this[Qo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new iae(\"set\");if(typeof e!=\"string\"||!Eit.test(e)&&!pit(e))throw new git(\"Header name\",e);if(typeof r>\"u\")throw new dit(r,e);if(Cit.test(r))throw new mit(\"header content\",e);this[Qo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._request?o():this[p1].push(o),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};cae.exports=n4});var Aae=_((HLt,uae)=>{\"use strict\";var wit=Be(\"tls\");uae.exports=(t={})=>new Promise((e,r)=>{let o=wit.connect(t,()=>{t.resolveSocket?(o.off(\"error\",r),e({alpnProtocol:o.alpnProtocol,socket:o})):(o.destroy(),e({alpnProtocol:o.alpnProtocol}))});o.on(\"error\",r)})});var pae=_((jLt,fae)=>{\"use strict\";var Iit=Be(\"net\");fae.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith(\"[\")?r.indexOf(\"]\")===-1?e=r:e=r.slice(1,-1):e=r.split(\":\",1)[0]),Iit.isIP(e)?\"\":e}});var dae=_((qLt,o4)=>{\"use strict\";var hae=Be(\"http\"),s4=Be(\"https\"),Bit=Aae(),vit=KO(),Dit=i4(),Pit=pae(),Sit=$O(),ix=new vit({maxSize:100}),h1=new Map,gae=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let o=()=>{t.emit(\"free\",e,r)};e.on(\"free\",o);let a=()=>{t.removeSocket(e,r)};e.on(\"close\",a);let n=()=>{t.removeSocket(e,r),e.off(\"close\",a),e.off(\"free\",o),e.off(\"agentRemove\",n)};e.on(\"agentRemove\",n),t.emit(\"free\",e,r)},xit=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!ix.has(e)){if(h1.has(e))return(await h1.get(e)).alpnProtocol;let{path:r,agent:o}=t;t.path=t.socketPath;let a=Bit(t);h1.set(e,a);try{let{socket:n,alpnProtocol:u}=await a;if(ix.set(e,u),t.path=r,u===\"h2\")n.destroy();else{let{globalAgent:A}=s4,p=s4.Agent.prototype.createConnection;o?o.createConnection===p?gae(o,n,t):n.destroy():A.createConnection===p?gae(A,n,t):n.destroy()}return h1.delete(e),u}catch(n){throw h1.delete(e),n}}return ix.get(e)};o4.exports=async(t,e,r)=>{if((typeof t==\"string\"||t instanceof URL)&&(t=Sit(new URL(t))),typeof e==\"function\"&&(r=e,e=void 0),e={ALPNProtocols:[\"h2\",\"http/1.1\"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error(\"The `ALPNProtocols` option must be an Array with at least one entry\");e.protocol=e.protocol||\"https:\";let o=e.protocol===\"https:\";e.host=e.hostname||e.host||\"localhost\",e.session=e.tlsSession,e.servername=e.servername||Pit(e),e.port=e.port||(o?443:80),e._defaultAgent=o?s4.globalAgent:hae.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error(\"The `options.agent` object can contain only `http`, `https` or `http2` properties\");e.agent=a[o?\"https\":\"http\"]}return o&&await xit(e)===\"h2\"?(a&&(e.agent=a.http2),new Dit(e,r)):hae.request(e,r)};o4.exports.protocolCache=ix});var yae=_((GLt,mae)=>{\"use strict\";var bit=Be(\"http2\"),kit=zO(),a4=i4(),Qit=ZO(),Fit=dae(),Tit=(t,e,r)=>new a4(t,e,r),Rit=(t,e,r)=>{let o=new a4(t,e,r);return o.end(),o};mae.exports={...bit,ClientRequest:a4,IncomingMessage:Qit,...kit,request:Tit,get:Rit,auto:Fit}});var c4=_(l4=>{\"use strict\";Object.defineProperty(l4,\"__esModule\",{value:!0});var Eae=Tf();l4.default=t=>Eae.default.nodeStream(t)&&Eae.default.function_(t.getBoundary)});var Bae=_(u4=>{\"use strict\";Object.defineProperty(u4,\"__esModule\",{value:!0});var wae=Be(\"fs\"),Iae=Be(\"util\"),Cae=Tf(),Nit=c4(),Lit=Iae.promisify(wae.stat);u4.default=async(t,e)=>{if(e&&\"content-length\"in e)return Number(e[\"content-length\"]);if(!t)return 0;if(Cae.default.string(t))return Buffer.byteLength(t);if(Cae.default.buffer(t))return t.length;if(Nit.default(t))return Iae.promisify(t.getLength.bind(t))();if(t instanceof wae.ReadStream){let{size:r}=await Lit(t.path);return r===0?void 0:r}}});var f4=_(A4=>{\"use strict\";Object.defineProperty(A4,\"__esModule\",{value:!0});function Mit(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)},t.on(a,o[a]);return()=>{for(let a of r)t.off(a,o[a])}}A4.default=Mit});var vae=_(p4=>{\"use strict\";Object.defineProperty(p4,\"__esModule\",{value:!0});p4.default=()=>{let t=[];return{once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})},unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListener(o,a)}t.length=0}}}});var Pae=_(g1=>{\"use strict\";Object.defineProperty(g1,\"__esModule\",{value:!0});g1.TimeoutError=void 0;var Oit=Be(\"net\"),Uit=vae(),Dae=Symbol(\"reentry\"),_it=()=>{},sx=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name=\"TimeoutError\",this.code=\"ETIMEDOUT\"}};g1.TimeoutError=sx;g1.default=(t,e,r)=>{if(Dae in t)return _it;t[Dae]=!0;let o=[],{once:a,unhandleAll:n}=Uit.default(),u=(I,v,b)=>{var C;let T=setTimeout(v,I,I,b);(C=T.unref)===null||C===void 0||C.call(T);let L=()=>{clearTimeout(T)};return o.push(L),L},{host:A,hostname:p}=r,h=(I,v)=>{t.destroy(new sx(I,v))},E=()=>{for(let I of o)I();n()};if(t.once(\"error\",I=>{if(E(),t.listenerCount(\"error\")===0)throw I}),t.once(\"close\",E),a(t,\"response\",I=>{a(I,\"end\",E)}),typeof e.request<\"u\"&&u(e.request,h,\"request\"),typeof e.socket<\"u\"){let I=()=>{h(e.socket,\"socket\")};t.setTimeout(e.socket,I),o.push(()=>{t.removeListener(\"timeout\",I)})}return a(t,\"socket\",I=>{var v;let{socketPath:b}=t;if(I.connecting){let C=Boolean(b??Oit.isIP((v=p??A)!==null&&v!==void 0?v:\"\")!==0);if(typeof e.lookup<\"u\"&&!C&&typeof I.address().address>\"u\"){let T=u(e.lookup,h,\"lookup\");a(I,\"lookup\",T)}if(typeof e.connect<\"u\"){let T=()=>u(e.connect,h,\"connect\");C?a(I,\"connect\",T()):a(I,\"lookup\",L=>{L===null&&a(I,\"connect\",T())})}typeof e.secureConnect<\"u\"&&r.protocol===\"https:\"&&a(I,\"connect\",()=>{let T=u(e.secureConnect,h,\"secureConnect\");a(I,\"secureConnect\",T)})}if(typeof e.send<\"u\"){let C=()=>u(e.send,h,\"send\");I.connecting?a(I,\"connect\",()=>{a(t,\"upload-complete\",C())}):a(t,\"upload-complete\",C())}}),typeof e.response<\"u\"&&a(t,\"upload-complete\",()=>{let I=u(e.response,h,\"response\");a(t,\"response\",I)}),E}});var xae=_(h4=>{\"use strict\";Object.defineProperty(h4,\"__esModule\",{value:!0});var Sae=Tf();h4.default=t=>{t=t;let e={protocol:t.protocol,hostname:Sae.default.string(t.hostname)&&t.hostname.startsWith(\"[\")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||\"\"}${t.search||\"\"}`};return Sae.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||\"\"}:${t.password||\"\"}`),e}});var bae=_(g4=>{\"use strict\";Object.defineProperty(g4,\"__esModule\",{value:!0});var Hit=Be(\"url\"),jit=[\"protocol\",\"host\",\"hostname\",\"port\",\"pathname\",\"search\"];g4.default=(t,e)=>{var r,o;if(e.path){if(e.pathname)throw new TypeError(\"Parameters `path` and `pathname` are mutually exclusive.\");if(e.search)throw new TypeError(\"Parameters `path` and `search` are mutually exclusive.\");if(e.searchParams)throw new TypeError(\"Parameters `path` and `searchParams` are mutually exclusive.\")}if(e.search&&e.searchParams)throw new TypeError(\"Parameters `search` and `searchParams` are mutually exclusive.\");if(!t){if(!e.protocol)throw new TypeError(\"No URL protocol specified\");t=`${e.protocol}//${(o=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&o!==void 0?o:\"\"}`}let a=new Hit.URL(t);if(e.path){let n=e.path.indexOf(\"?\");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of jit)e[n]&&(a[n]=e[n].toString());return a}});var kae=_(m4=>{\"use strict\";Object.defineProperty(m4,\"__esModule\",{value:!0});var d4=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e==\"object\"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e==\"object\"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e==\"object\"?this.weakMap.has(e):this.map.has(e)}};m4.default=d4});var E4=_(y4=>{\"use strict\";Object.defineProperty(y4,\"__esModule\",{value:!0});var qit=async t=>{let e=[],r=0;for await(let o of t)e.push(o),r+=Buffer.byteLength(o);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(\"\"))};y4.default=qit});var Fae=_(Pd=>{\"use strict\";Object.defineProperty(Pd,\"__esModule\",{value:!0});Pd.dnsLookupIpVersionToFamily=Pd.isDnsLookupIpVersion=void 0;var Qae={auto:0,ipv4:4,ipv6:6};Pd.isDnsLookupIpVersion=t=>t in Qae;Pd.dnsLookupIpVersionToFamily=t=>{if(Pd.isDnsLookupIpVersion(t))return Qae[t];throw new Error(\"Invalid DNS lookup IP version\")}});var C4=_(ox=>{\"use strict\";Object.defineProperty(ox,\"__esModule\",{value:!0});ox.isResponseOk=void 0;ox.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var Rae=_(w4=>{\"use strict\";Object.defineProperty(w4,\"__esModule\",{value:!0});var Tae=new Set;w4.default=t=>{Tae.has(t)||(Tae.add(t),process.emitWarning(`Got: ${t}`,{type:\"DeprecationWarning\"}))}});var Nae=_(I4=>{\"use strict\";Object.defineProperty(I4,\"__esModule\",{value:!0});var Ai=Tf(),Git=(t,e)=>{if(Ai.default.null_(t.encoding))throw new TypeError(\"To get a Buffer, set `options.responseType` to `buffer` instead\");Ai.assert.any([Ai.default.string,Ai.default.undefined],t.encoding),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.resolveBodyOnly),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.methodRewriting),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.isStream),Ai.assert.any([Ai.default.string,Ai.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType=\"text\");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:o=>o.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Ai.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(o=>o.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Ai.default.number(r)&&(t.retry.limit=r),Ai.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Ai.default.number))),Ai.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:o}=t;if(!Ai.default.function_(o.transform))throw new Error(\"`options.pagination.transform` must be implemented\");if(!Ai.default.function_(o.shouldContinue))throw new Error(\"`options.pagination.shouldContinue` must be implemented\");if(!Ai.default.function_(o.filter))throw new TypeError(\"`options.pagination.filter` must be implemented\");if(!Ai.default.function_(o.paginate))throw new Error(\"`options.pagination.paginate` must be implemented\")}return t.responseType===\"json\"&&t.headers.accept===void 0&&(t.headers.accept=\"application/json\"),t};I4.default=Git});var Lae=_(d1=>{\"use strict\";Object.defineProperty(d1,\"__esModule\",{value:!0});d1.retryAfterStatusCodes=void 0;d1.retryAfterStatusCodes=new Set([413,429,503]);var Yit=({attemptCount:t,retryOptions:e,error:r,retryAfter:o})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),u=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!u)return 0;if(r.response){if(o)return e.maxRetryAfter===void 0||o>e.maxRetryAfter?0:o;if(r.response.statusCode===413)return 0}let A=Math.random()*100;return 2**(t-1)*1e3+A};d1.default=Yit});var E1=_(Bn=>{\"use strict\";Object.defineProperty(Bn,\"__esModule\",{value:!0});Bn.UnsupportedProtocolError=Bn.ReadError=Bn.TimeoutError=Bn.UploadError=Bn.CacheError=Bn.HTTPError=Bn.MaxRedirectsError=Bn.RequestError=Bn.setNonEnumerableProperties=Bn.knownHookEvents=Bn.withoutBody=Bn.kIsNormalizedAlready=void 0;var Mae=Be(\"util\"),Oae=Be(\"stream\"),Wit=Be(\"fs\"),oh=Be(\"url\"),Uae=Be(\"http\"),B4=Be(\"http\"),Vit=Be(\"https\"),Kit=eoe(),Jit=aoe(),_ae=Uoe(),zit=qoe(),Xit=yae(),Zit=tx(),st=Tf(),$it=Bae(),Hae=c4(),est=f4(),jae=Pae(),tst=xae(),qae=bae(),rst=kae(),nst=E4(),Gae=Fae(),ist=C4(),ah=Rae(),sst=Nae(),ost=Lae(),v4,Zs=Symbol(\"request\"),cx=Symbol(\"response\"),PE=Symbol(\"responseSize\"),SE=Symbol(\"downloadedSize\"),xE=Symbol(\"bodySize\"),bE=Symbol(\"uploadedSize\"),ax=Symbol(\"serverResponsesPiped\"),Yae=Symbol(\"unproxyEvents\"),Wae=Symbol(\"isFromCache\"),D4=Symbol(\"cancelTimeouts\"),Vae=Symbol(\"startedReading\"),kE=Symbol(\"stopReading\"),lx=Symbol(\"triggerRead\"),lh=Symbol(\"body\"),m1=Symbol(\"jobs\"),Kae=Symbol(\"originalResponse\"),Jae=Symbol(\"retryTimeout\");Bn.kIsNormalizedAlready=Symbol(\"isNormalizedAlready\");var ast=st.default.string(process.versions.brotli);Bn.withoutBody=new Set([\"GET\",\"HEAD\"]);Bn.knownHookEvents=[\"init\",\"beforeRequest\",\"beforeRedirect\",\"beforeError\",\"beforeRetry\",\"afterResponse\"];function lst(t){for(let e in t){let r=t[e];if(!st.default.string(r)&&!st.default.number(r)&&!st.default.boolean(r)&&!st.default.null_(r)&&!st.default.undefined(r))throw new TypeError(`The \\`searchParams\\` value '${String(r)}' must be a string, number, boolean or null`)}}function cst(t){return st.default.object(t)&&!(\"statusCode\"in t)}var P4=new rst.default,ust=async t=>new Promise((e,r)=>{let o=a=>{r(a)};t.pending||e(),t.once(\"error\",o),t.once(\"ready\",()=>{t.off(\"error\",o),e()})}),Ast=new Set([300,301,302,303,304,307,308]),fst=[\"context\",\"body\",\"json\",\"form\"];Bn.setNonEnumerableProperties=(t,e)=>{let r={};for(let o of t)if(!!o)for(let a of fst)a in o&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:o[a]});Object.defineProperties(e,r)};var Ki=class extends Error{constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name=\"RequestError\",this.code=r.code,o instanceof dx?(Object.defineProperty(this,\"request\",{enumerable:!1,value:o}),Object.defineProperty(this,\"response\",{enumerable:!1,value:o[cx]}),Object.defineProperty(this,\"options\",{enumerable:!1,value:o.options})):Object.defineProperty(this,\"options\",{enumerable:!1,value:o}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,st.default.string(r.stack)&&st.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,u=this.stack.slice(n).split(`\n`).reverse(),A=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(`\n`).reverse();for(;A.length!==0&&A[0]===u[0];)u.shift();this.stack=`${this.stack.slice(0,n)}${u.reverse().join(`\n`)}${A.reverse().join(`\n`)}`}}};Bn.RequestError=Ki;var ux=class extends Ki{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=\"MaxRedirectsError\"}};Bn.MaxRedirectsError=ux;var Ax=class extends Ki{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=\"HTTPError\"}};Bn.HTTPError=Ax;var fx=class extends Ki{constructor(e,r){super(e.message,e,r),this.name=\"CacheError\"}};Bn.CacheError=fx;var px=class extends Ki{constructor(e,r){super(e.message,e,r),this.name=\"UploadError\"}};Bn.UploadError=px;var hx=class extends Ki{constructor(e,r,o){super(e.message,e,o),this.name=\"TimeoutError\",this.event=e.event,this.timings=r}};Bn.TimeoutError=hx;var y1=class extends Ki{constructor(e,r){super(e.message,e,r),this.name=\"ReadError\"}};Bn.ReadError=y1;var gx=class extends Ki{constructor(e){super(`Unsupported protocol \"${e.url.protocol}\"`,{},e),this.name=\"UnsupportedProtocolError\"}};Bn.UnsupportedProtocolError=gx;var pst=[\"socket\",\"connect\",\"continue\",\"information\",\"upgrade\",\"timeout\"],dx=class extends Oae.Duplex{constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[SE]=0,this[bE]=0,this.requestInitialized=!1,this[ax]=new Set,this.redirects=[],this[kE]=!1,this[lx]=!1,this[m1]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on(\"pipe\",h=>{h.prependListener(\"data\",a),h.on(\"data\",n),h.prependListener(\"end\",a),h.on(\"end\",n)}),this.on(\"unpipe\",h=>{h.off(\"data\",a),h.off(\"data\",n),h.off(\"end\",a),h.off(\"end\",n)}),this.on(\"pipe\",h=>{h instanceof B4.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:u,body:A,form:p}=r;if((u||A||p)&&this._lockWrite(),Bn.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,o)}catch(h){st.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Wit.ReadStream&&await ust(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError(\"Missing `url` property\");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[Zs])===null||h===void 0||h.destroy();return}for(let I of this[m1])I();this[m1].length=0,this.requestInitialized=!0}catch(E){if(E instanceof Ki){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(st.default.object(e)&&!st.default.urlInstance(e))r={...o,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError(\"The `url` option is mutually exclusive with the `input` argument\");r={...o,...r},e!==void 0&&(r.url=e),st.default.urlInstance(r.url)&&(r.url=new oh.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),st.assert.any([st.default.string,st.default.undefined],r.method),st.assert.any([st.default.object,st.default.undefined],r.headers),st.assert.any([st.default.string,st.default.urlInstance,st.default.undefined],r.prefixUrl),st.assert.any([st.default.object,st.default.undefined],r.cookieJar),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.searchParams),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.cache),st.assert.any([st.default.object,st.default.number,st.default.undefined],r.timeout),st.assert.any([st.default.object,st.default.undefined],r.context),st.assert.any([st.default.object,st.default.undefined],r.hooks),st.assert.any([st.default.boolean,st.default.undefined],r.decompress),st.assert.any([st.default.boolean,st.default.undefined],r.ignoreInvalidCookies),st.assert.any([st.default.boolean,st.default.undefined],r.followRedirect),st.assert.any([st.default.number,st.default.undefined],r.maxRedirects),st.assert.any([st.default.boolean,st.default.undefined],r.throwHttpErrors),st.assert.any([st.default.boolean,st.default.undefined],r.http2),st.assert.any([st.default.boolean,st.default.undefined],r.allowGetBody),st.assert.any([st.default.string,st.default.undefined],r.localAddress),st.assert.any([Gae.isDnsLookupIpVersion,st.default.undefined],r.dnsLookupIpVersion),st.assert.any([st.default.object,st.default.undefined],r.https),st.assert.any([st.default.boolean,st.default.undefined],r.rejectUnauthorized),r.https&&(st.assert.any([st.default.boolean,st.default.undefined],r.https.rejectUnauthorized),st.assert.any([st.default.function_,st.default.undefined],r.https.checkServerIdentity),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificateAuthority),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.key),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificate),st.assert.any([st.default.string,st.default.undefined],r.https.passphrase),st.assert.any([st.default.string,st.default.buffer,st.default.array,st.default.undefined],r.https.pfx)),st.assert.any([st.default.object,st.default.undefined],r.cacheOptions),st.default.string(r.method)?r.method=r.method.toUpperCase():r.method=\"GET\",r.headers===o?.headers?r.headers={...r.headers}:r.headers=Zit({...o?.headers,...r.headers}),\"slashes\"in r)throw new TypeError(\"The legacy `url.Url` has been deprecated. Use `URL` instead.\");if(\"auth\"in r)throw new TypeError(\"Parameter `auth` is deprecated. Use `username` / `password` instead.\");if(\"searchParams\"in r&&r.searchParams&&r.searchParams!==o?.searchParams){let b;if(st.default.string(r.searchParams)||r.searchParams instanceof oh.URLSearchParams)b=new oh.URLSearchParams(r.searchParams);else{lst(r.searchParams),b=new oh.URLSearchParams;for(let C in r.searchParams){let T=r.searchParams[C];T===null?b.append(C,\"\"):T!==void 0&&b.append(C,T)}}(a=o?.searchParams)===null||a===void 0||a.forEach((C,T)=>{b.has(T)||b.append(T,C)}),r.searchParams=b}if(r.username=(n=r.username)!==null&&n!==void 0?n:\"\",r.password=(u=r.password)!==null&&u!==void 0?u:\"\",st.default.undefined(r.prefixUrl)?r.prefixUrl=(A=o?.prefixUrl)!==null&&A!==void 0?A:\"\":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==\"\"&&!r.prefixUrl.endsWith(\"/\")&&(r.prefixUrl+=\"/\")),st.default.string(r.url)){if(r.url.startsWith(\"/\"))throw new Error(\"`input` must not start with a slash when using `prefixUrl`\");r.url=qae.default(r.prefixUrl+r.url,r)}else(st.default.undefined(r.url)&&r.prefixUrl!==\"\"||r.protocol)&&(r.url=qae.default(r.prefixUrl,r));if(r.url){\"port\"in r&&delete r.port;let{prefixUrl:b}=r;Object.defineProperty(r,\"prefixUrl\",{set:T=>{let L=r.url;if(!L.href.startsWith(T))throw new Error(`Cannot change \\`prefixUrl\\` from ${b} to ${T}: ${L.href}`);r.url=new oh.URL(T+L.href.slice(b.length)),b=T},get:()=>b});let{protocol:C}=r.url;if(C===\"unix:\"&&(C=\"http:\",r.url=new oh.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),C!==\"http:\"&&C!==\"https:\")throw new gx(r);r.username===\"\"?r.username=r.url.username:r.url.username=r.username,r.password===\"\"?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:b,getCookieString:C}=E;st.assert.function_(b),st.assert.function_(C),b.length===4&&C.length===0&&(b=Mae.promisify(b.bind(r.cookieJar)),C=Mae.promisify(C.bind(r.cookieJar)),r.cookieJar={setCookie:b,getCookieString:C})}let{cache:I}=r;if(I&&(P4.has(I)||P4.set(I,new _ae((b,C)=>{let T=b[Zs](b,C);return st.default.promise(T)&&(T.once=(L,U)=>{if(L===\"error\")T.catch(U);else if(L===\"abort\")(async()=>{try{(await T).once(\"abort\",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${L}`);return T}),T},I))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)v4||(v4=new Jit.default),r.dnsCache=v4;else if(!st.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \\`dnsCache\\` must be a CacheableLookup instance or a boolean, got ${st.default(r.dnsCache)}`);st.default.number(r.timeout)?r.timeout={request:r.timeout}:o&&r.timeout!==o.timeout?r.timeout={...o.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let v=r.hooks===o?.hooks;r.hooks={...r.hooks};for(let b of Bn.knownHookEvents)if(b in r.hooks)if(st.default.array(r.hooks[b]))r.hooks[b]=[...r.hooks[b]];else throw new TypeError(`Parameter \\`${b}\\` must be an Array, got ${st.default(r.hooks[b])}`);else r.hooks[b]=[];if(o&&!v)for(let b of Bn.knownHookEvents)o.hooks[b].length>0&&(r.hooks[b]=[...o.hooks[b],...r.hooks[b]]);if(\"family\"in r&&ah.default('\"options.family\" was never documented, please use \"options.dnsLookupIpVersion\"'),o?.https&&(r.https={...o.https,...r.https}),\"rejectUnauthorized\"in r&&ah.default('\"options.rejectUnauthorized\" is now deprecated, please use \"options.https.rejectUnauthorized\"'),\"checkServerIdentity\"in r&&ah.default('\"options.checkServerIdentity\" was never documented, please use \"options.https.checkServerIdentity\"'),\"ca\"in r&&ah.default('\"options.ca\" was never documented, please use \"options.https.certificateAuthority\"'),\"key\"in r&&ah.default('\"options.key\" was never documented, please use \"options.https.key\"'),\"cert\"in r&&ah.default('\"options.cert\" was never documented, please use \"options.https.certificate\"'),\"passphrase\"in r&&ah.default('\"options.passphrase\" was never documented, please use \"options.https.passphrase\"'),\"pfx\"in r&&ah.default('\"options.pfx\" was never documented, please use \"options.https.pfx\"'),\"followRedirects\"in r)throw new TypeError(\"The `followRedirects` option does not exist. Use `followRedirect` instead.\");if(r.agent){for(let b in r.agent)if(b!==\"http\"&&b!==\"https\"&&b!==\"http2\")throw new TypeError(`Expected the \\`options.agent\\` properties to be \\`http\\`, \\`https\\` or \\`http2\\`, got \\`${b}\\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Bn.setNonEnumerableProperties([o,h],r),sst.default(r,o)}_lockWrite(){let e=()=>{throw new TypeError(\"The payload has been already provided\")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,o=!st.default.undefined(e.form),a=!st.default.undefined(e.json),n=!st.default.undefined(e.body),u=o||a||n,A=Bn.withoutBody.has(e.method)&&!(e.method===\"GET\"&&e.allowGetBody);if(this._cannotHaveBody=A,u){if(A)throw new TypeError(`The \\`${e.method}\\` method cannot be used with a body`);if([n,o,a].filter(p=>p).length>1)throw new TypeError(\"The `body`, `json` and `form` options are mutually exclusive\");if(n&&!(e.body instanceof Oae.Readable)&&!st.default.string(e.body)&&!st.default.buffer(e.body)&&!Hae.default(e.body))throw new TypeError(\"The `body` option must be a stream.Readable, string or Buffer\");if(o&&!st.default.object(e.form))throw new TypeError(\"The `form` option must be an Object\");{let p=!st.default.string(r[\"content-type\"]);n?(Hae.default(e.body)&&p&&(r[\"content-type\"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[lh]=e.body):o?(p&&(r[\"content-type\"]=\"application/x-www-form-urlencoded\"),this[lh]=new oh.URLSearchParams(e.form).toString()):(p&&(r[\"content-type\"]=\"application/json\"),this[lh]=e.stringifyJson(e.json));let h=await $it.default(this[lh],e.headers);st.default.undefined(r[\"content-length\"])&&st.default.undefined(r[\"transfer-encoding\"])&&!A&&!st.default.undefined(h)&&(r[\"content-length\"]=String(h))}}else A?this._lockWrite():this._unlockWrite();this[xE]=Number(r[\"content-length\"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[Kae]=e,r.decompress&&(e=zit(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Uae.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[Wae]=n.isFromCache,this[PE]=Number(e.headers[\"content-length\"])||void 0,this[cx]=e,e.once(\"end\",()=>{this[PE]=this[SE],this.emit(\"downloadProgress\",this.downloadProgress)}),e.once(\"error\",A=>{e.destroy(),this._beforeError(new y1(A,this))}),e.once(\"aborted\",()=>{this._beforeError(new y1({name:\"Error\",message:\"The server aborted pending request\",code:\"ECONNRESET\"},this))}),this.emit(\"downloadProgress\",this.downloadProgress);let u=e.headers[\"set-cookie\"];if(st.default.object(r.cookieJar)&&u){let A=u.map(async p=>r.cookieJar.setCookie(p,o.toString()));r.ignoreInvalidCookies&&(A=A.map(async p=>p.catch(()=>{})));try{await Promise.all(A)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&Ast.has(a)){if(e.resume(),this[Zs]&&(this[D4](),delete this[Zs],this[Yae]()),(a===303&&r.method!==\"GET\"&&r.method!==\"HEAD\"||!r.methodRewriting)&&(r.method=\"GET\",\"body\"in r&&delete r.body,\"json\"in r&&delete r.json,\"form\"in r&&delete r.form,this[lh]=void 0,delete r.headers[\"content-length\"]),this.redirects.length>=r.maxRedirects){this._beforeError(new ux(this));return}try{let p=Buffer.from(e.headers.location,\"binary\").toString(),h=new oh.URL(p,o),E=h.toString();decodeURI(E),h.hostname!==o.hostname||h.port!==o.port?(\"host\"in r.headers&&delete r.headers.host,\"cookie\"in r.headers&&delete r.headers.cookie,\"authorization\"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username=\"\",r.password=\"\")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let I of r.hooks.beforeRedirect)await I(r,n);this.emit(\"redirect\",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!ist.isResponseOk(n)){this._beforeError(new Ax(n));return}e.on(\"readable\",()=>{this[lx]&&this._read()}),this.on(\"resume\",()=>{e.resume()}),this.on(\"pause\",()=>{e.pause()}),e.once(\"end\",()=>{this.push(null)}),this.emit(\"response\",e);for(let A of this[ax])if(!A.headersSent){for(let p in e.headers){let h=r.decompress?p!==\"content-encoding\":!0,E=e.headers[p];h&&A.setHeader(p,E)}A.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;Kit.default(e),this[D4]=jae.default(e,o,a);let n=r.cache?\"cacheableResponse\":\"response\";e.once(n,p=>{this._onResponse(p)}),e.once(\"error\",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners(\"end\"),p=p instanceof jae.TimeoutError?new hx(p,this.timings,this):new Ki(p.message,p,this),this._beforeError(p)}),this[Yae]=est.default(e,this,pst),this[Zs]=e,this.emit(\"uploadProgress\",this.uploadProgress);let u=this[lh],A=this.redirects.length===0?this:e;st.default.nodeStream(u)?(u.pipe(A),u.once(\"error\",p=>{this._beforeError(new px(p,this))})):(this._unlockWrite(),st.default.undefined(u)?(this._cannotHaveBody||this._noPipe)&&(A.end(),this._lockWrite()):(this._writeRequest(u,void 0,()=>{}),A.end(),this._lockWrite())),this.emit(\"request\",e)}async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.assign(r,tst.default(e)),delete r.url;let n,u=P4.get(r.cache)(r,async A=>{A._readableState.autoDestroy=!1,n&&(await n).emit(\"cacheableResponse\",A),o(A)});r.url=e,u.once(\"error\",a),u.once(\"request\",async A=>{n=A,o(n)})})}async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for(let U in A)if(st.default.undefined(A[U]))delete A[U];else if(st.default.null_(A[U]))throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${U}\\` header`);if(u.decompress&&st.default.undefined(A[\"accept-encoding\"])&&(A[\"accept-encoding\"]=ast?\"gzip, deflate, br\":\"gzip, deflate\"),u.cookieJar){let U=await u.cookieJar.getCookieString(u.url.toString());st.default.nonEmptyString(U)&&(u.headers.cookie=U)}for(let U of u.hooks.beforeRequest){let J=await U(u);if(!st.default.undefined(J)){u.request=()=>J;break}}u.body&&this[lh]!==u.body&&(this[lh]=u.body);let{agent:p,request:h,timeout:E,url:I}=u;if(u.dnsCache&&!(\"lookup\"in u)&&(u.lookup=u.dnsCache.lookup),I.hostname===\"unix\"){let U=/(?<socketPath>.+?):(?<path>.+)/.exec(`${I.pathname}${I.search}`);if(U?.groups){let{socketPath:J,path:te}=U.groups;Object.assign(u,{socketPath:J,path:te,host:\"\"})}}let v=I.protocol===\"https:\",b;u.http2?b=Xit.auto:b=v?Vit.request:Uae.request;let C=(e=u.request)!==null&&e!==void 0?e:b,T=u.cache?this._createCacheableRequest:C;p&&!u.http2&&(u.agent=p[v?\"https\":\"http\"]),u[Zs]=C,delete u.request,delete u.timeout;let L=u;if(L.shared=(r=u.cacheOptions)===null||r===void 0?void 0:r.shared,L.cacheHeuristic=(o=u.cacheOptions)===null||o===void 0?void 0:o.cacheHeuristic,L.immutableMinTimeToLive=(a=u.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,L.ignoreCargoCult=(n=u.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,u.dnsLookupIpVersion!==void 0)try{L.family=Gae.dnsLookupIpVersionToFamily(u.dnsLookupIpVersion)}catch{throw new Error(\"Invalid `dnsLookupIpVersion` option value\")}u.https&&(\"rejectUnauthorized\"in u.https&&(L.rejectUnauthorized=u.https.rejectUnauthorized),u.https.checkServerIdentity&&(L.checkServerIdentity=u.https.checkServerIdentity),u.https.certificateAuthority&&(L.ca=u.https.certificateAuthority),u.https.certificate&&(L.cert=u.https.certificate),u.https.key&&(L.key=u.https.key),u.https.passphrase&&(L.passphrase=u.https.passphrase),u.https.pfx&&(L.pfx=u.https.pfx));try{let U=await T(I,L);st.default.undefined(U)&&(U=b(I,L)),u.request=h,u.timeout=E,u.agent=p,u.https&&(\"rejectUnauthorized\"in u.https&&delete L.rejectUnauthorized,u.https.checkServerIdentity&&delete L.checkServerIdentity,u.https.certificateAuthority&&delete L.ca,u.https.certificate&&delete L.cert,u.https.key&&delete L.key,u.https.passphrase&&delete L.passphrase,u.https.pfx&&delete L.pfx),cst(U)?this._onRequest(U):this.writable?(this.once(\"finish\",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof _ae.CacheError?new fx(U,this):new Ki(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new Ki(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[kE])return;let{options:r}=this,o=this.retryCount+1;this[kE]=!0,e instanceof Ki||(e=new Ki(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await nst.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount(\"retry\")!==0){let u;try{let A;n&&\"retry-after\"in n.headers&&(A=Number(n.headers[\"retry-after\"]),Number.isNaN(A)?(A=Date.parse(n.headers[\"retry-after\"])-Date.now(),A<=0&&(A=1)):A*=1e3),u=await r.retry.calculateDelay({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:ost.default({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:0})})}catch(A){this._error(new Ki(A.message,A,this));return}if(u){let A=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,o)}catch(p){this._error(new Ki(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit(\"retry\",o,e))};this[Jae]=setTimeout(A,u);return}}this._error(a)})()}_read(){this[lx]=!0;let e=this[cx];if(e&&!this[kE]){e.readableLength&&(this[lx]=!1);let r;for(;(r=e.read())!==null;){this[SE]+=r.length,this[Vae]=!0;let o=this.downloadProgress;o.percent<1&&this.emit(\"downloadProgress\",o),this.push(r)}}}_write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitialized?a():this[m1].push(a)}_writeRequest(e,r,o){this[Zs].destroyed||(this._progressCallbacks.push(()=>{this[bE]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit(\"uploadProgress\",a)}),this[Zs].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),o(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Zs in this)){e();return}if(this[Zs].destroyed){e();return}this[Zs].end(o=>{o||(this[xE]=this[bE],this.emit(\"uploadProgress\",this.uploadProgress),this[Zs].emit(\"upload-complete\")),e(o)})};this.requestInitialized?r():this[m1].push(r)}_destroy(e,r){var o;this[kE]=!0,clearTimeout(this[Jae]),Zs in this&&(this[D4](),!((o=this[cx])===null||o===void 0)&&o.complete||this[Zs].destroy()),e!==null&&!st.default.undefined(e)&&!(e instanceof Ki)&&(e=new Ki(e.message,e,this)),r(e)}get _isAboutToError(){return this[kE]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,o;return((r=(e=this[Zs])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((o=this[Kae])===null||o===void 0)&&o.complete)}get socket(){var e,r;return(r=(e=this[Zs])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[PE]?e=this[SE]/this[PE]:this[PE]===this[SE]?e=1:e=0,{percent:e,transferred:this[SE],total:this[PE]}}get uploadProgress(){let e;return this[xE]?e=this[bE]/this[xE]:this[xE]===this[bE]?e=1:e=0,{percent:e,transferred:this[bE],total:this[xE]}}get timings(){var e;return(e=this[Zs])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[Wae]}pipe(e,r){if(this[Vae])throw new Error(\"Failed to pipe. The response has been emitted already.\");return e instanceof B4.ServerResponse&&this[ax].add(e),super.pipe(e,r)}unpipe(e){return e instanceof B4.ServerResponse&&this[ax].delete(e),super.unpipe(e),this}};Bn.default=dx});var C1=_(qc=>{\"use strict\";var hst=qc&&qc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),gst=qc&&qc.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&hst(e,t,r)};Object.defineProperty(qc,\"__esModule\",{value:!0});qc.CancelError=qc.ParseError=void 0;var zae=E1(),S4=class extends zae.RequestError{constructor(e,r){let{options:o}=r.request;super(`${e.message} in \"${o.url.toString()}\"`,e,r.request),this.name=\"ParseError\"}};qc.ParseError=S4;var x4=class extends zae.RequestError{constructor(e){super(\"Promise was canceled\",{},e),this.name=\"CancelError\"}get isCanceled(){return!0}};qc.CancelError=x4;gst(E1(),qc)});var Zae=_(b4=>{\"use strict\";Object.defineProperty(b4,\"__esModule\",{value:!0});var Xae=C1(),dst=(t,e,r,o)=>{let{rawBody:a}=t;try{if(e===\"text\")return a.toString(o);if(e===\"json\")return a.length===0?\"\":r(a.toString());if(e===\"buffer\")return a;throw new Xae.ParseError({message:`Unknown body type '${e}'`,name:\"Error\"},t)}catch(n){throw new Xae.ParseError(n,t)}};b4.default=dst});var k4=_(ch=>{\"use strict\";var mst=ch&&ch.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),yst=ch&&ch.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&mst(e,t,r)};Object.defineProperty(ch,\"__esModule\",{value:!0});var Est=Be(\"events\"),Cst=Tf(),wst=Zse(),mx=C1(),$ae=Zae(),ele=E1(),Ist=f4(),Bst=E4(),tle=C4(),vst=[\"request\",\"response\",\"redirect\",\"uploadProgress\",\"downloadProgress\"];function rle(t){let e,r,o=new Est.EventEmitter,a=new wst((u,A,p)=>{let h=E=>{let I=new ele.default(void 0,t);I.retryCount=E,I._noPipe=!0,p(()=>I.destroy()),p.shouldReject=!1,p(()=>A(new mx.CancelError(I))),e=I,I.once(\"response\",async C=>{var T;if(C.retryCount=E,C.request.aborted)return;let L;try{L=await Bst.default(I),C.rawBody=L}catch{return}if(I._isAboutToError)return;let U=((T=C.headers[\"content-encoding\"])!==null&&T!==void 0?T:\"\").toLowerCase(),J=[\"gzip\",\"deflate\",\"br\"].includes(U),{options:te}=I;if(J&&!te.decompress)C.body=L;else try{C.body=$ae.default(C,te.responseType,te.parseJson,te.encoding)}catch(le){if(C.body=L.toString(),tle.isResponseOk(C)){I._beforeError(le);return}}try{for(let[le,pe]of te.hooks.afterResponse.entries())C=await pe(C,async Ae=>{let ye=ele.default.normalizeArguments(void 0,{...Ae,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);ye.hooks.afterResponse=ye.hooks.afterResponse.slice(0,le);for(let we of ye.hooks.beforeRetry)await we(ye);let ae=rle(ye);return p(()=>{ae.catch(()=>{}),ae.cancel()}),ae})}catch(le){I._beforeError(new mx.RequestError(le.message,le,I));return}if(!tle.isResponseOk(C)){I._beforeError(new mx.HTTPError(C));return}r=C,u(I.options.resolveBodyOnly?C.body:C)});let v=C=>{if(a.isCanceled)return;let{options:T}=I;if(C instanceof mx.HTTPError&&!T.throwHttpErrors){let{response:L}=C;u(I.options.resolveBodyOnly?L.body:L);return}A(C)};I.once(\"error\",v);let b=I.options.body;I.once(\"retry\",(C,T)=>{var L,U;if(b===((L=T.request)===null||L===void 0?void 0:L.options.body)&&Cst.default.nodeStream((U=T.request)===null||U===void 0?void 0:U.options.body)){v(T);return}h(C)}),Ist.default(I,o,vst)};h(0)});a.on=(u,A)=>(o.on(u,A),a);let n=u=>{let A=(async()=>{await a;let{options:p}=r.request;return $ae.default(r,u,p.parseJson,p.encoding)})();return Object.defineProperties(A,Object.getOwnPropertyDescriptors(a)),A};return a.json=()=>{let{headers:u}=e.options;return!e.writableFinished&&u.accept===void 0&&(u.accept=\"application/json\"),n(\"json\")},a.buffer=()=>n(\"buffer\"),a.text=()=>n(\"text\"),a}ch.default=rle;yst(C1(),ch)});var nle=_(Q4=>{\"use strict\";Object.defineProperty(Q4,\"__esModule\",{value:!0});var Dst=C1();function Pst(t,...e){let r=(async()=>{if(t instanceof Dst.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),o=()=>r;return r.json=o,r.text=o,r.buffer=o,r.on=o,r}Q4.default=Pst});var ole=_(F4=>{\"use strict\";Object.defineProperty(F4,\"__esModule\",{value:!0});var ile=Tf();function sle(t){for(let e of Object.values(t))(ile.default.plainObject(e)||ile.default.array(e))&&sle(e);return Object.freeze(t)}F4.default=sle});var lle=_(ale=>{\"use strict\";Object.defineProperty(ale,\"__esModule\",{value:!0})});var T4=_(Kl=>{\"use strict\";var Sst=Kl&&Kl.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),xst=Kl&&Kl.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Sst(e,t,r)};Object.defineProperty(Kl,\"__esModule\",{value:!0});Kl.defaultHandler=void 0;var cle=Tf(),Vl=k4(),bst=nle(),Ex=E1(),kst=ole(),Qst={RequestError:Vl.RequestError,CacheError:Vl.CacheError,ReadError:Vl.ReadError,HTTPError:Vl.HTTPError,MaxRedirectsError:Vl.MaxRedirectsError,TimeoutError:Vl.TimeoutError,ParseError:Vl.ParseError,CancelError:Vl.CancelError,UnsupportedProtocolError:Vl.UnsupportedProtocolError,UploadError:Vl.UploadError},Fst=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:yx}=Ex.default,ule=(...t)=>{let e;for(let r of t)e=yx(void 0,r,e);return e},Tst=t=>t.isStream?new Ex.default(void 0,t):Vl.default(t),Rst=t=>\"defaults\"in t&&\"options\"in t.defaults,Nst=[\"get\",\"post\",\"put\",\"patch\",\"head\",\"delete\"];Kl.defaultHandler=(t,e)=>e(t);var Ale=(t,e)=>{if(t)for(let r of t)r(e)},fle=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(o=>(a,n)=>{let u,A=o(a,p=>(u=n(p),u));if(A!==u&&!a.isStream&&u){let p=A,{then:h,catch:E,finally:I}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(u)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(u)),p.then=h,p.catch=E,p.finally=I}return A});let e=(o,a={},n)=>{var u,A;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?Tst:h);if(cle.default.plainObject(o)){let E={...o,...a};Ex.setNonEnumerableProperties([o,a],E),a=E,o=void 0}try{let E;try{Ale(t.options.hooks.init,a),Ale((u=a.hooks)===null||u===void 0?void 0:u.init,a)}catch(v){E=v}let I=yx(o,a,n??t.options);if(I[Ex.kIsNormalizedAlready]=!0,E)throw new Vl.RequestError(E.message,E,I);return h(I)}catch(E){if(a.isStream)throw E;return bst.default(E,t.options.hooks.beforeError,(A=a.hooks)===null||A===void 0?void 0:A.beforeError)}};e.extend=(...o)=>{let a=[t.options],n=[...t._rawHandlers],u;for(let A of o)Rst(A)?(a.push(A.defaults.options),n.push(...A.defaults._rawHandlers),u=A.defaults.mutableDefaults):(a.push(A),\"handlers\"in A&&n.push(...A.handlers),u=A.mutableDefaults);return n=n.filter(A=>A!==Kl.defaultHandler),n.length===0&&n.push(Kl.defaultHandler),fle({options:ule(...a),handlers:n,mutableDefaults:Boolean(u)})};let r=async function*(o,a){let n=yx(o,a,t.options);n.resolveBodyOnly=!1;let u=n.pagination;if(!cle.default.object(u))throw new TypeError(\"`options.pagination` must be implemented\");let A=[],{countLimit:p}=u,h=0;for(;h<u.requestLimit;){h!==0&&await Fst(u.backoff);let E=await e(void 0,void 0,n),I=await u.transform(E),v=[];for(let C of I)if(u.filter(C,A,v)&&(!u.shouldContinue(C,A,v)||(yield C,u.stackAllItems&&A.push(C),v.push(C),--p<=0)))return;let b=u.paginate(E,A,v);if(b===!1)return;b===E.request.options?n=E.request.options:b!==void 0&&(n=yx(void 0,b,n)),h++}};e.paginate=r,e.paginate.all=async(o,a)=>{let n=[];for await(let u of r(o,a))n.push(u);return n},e.paginate.each=r,e.stream=(o,a)=>e(o,{...a,isStream:!0});for(let o of Nst)e[o]=(a,n)=>e(a,{...n,method:o}),e.stream[o]=(a,n)=>e(a,{...n,method:o,isStream:!0});return Object.assign(e,Qst),Object.defineProperty(e,\"defaults\",{value:t.mutableDefaults?t:kst.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=ule,e};Kl.default=fle;xst(lle(),Kl)});var gle=_((Rf,Cx)=>{\"use strict\";var Lst=Rf&&Rf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),ple=Rf&&Rf.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Lst(e,t,r)};Object.defineProperty(Rf,\"__esModule\",{value:!0});var Mst=Be(\"url\"),hle=T4(),Ost={options:{method:\"GET\",retry:{limit:2,methods:[\"GET\",\"PUT\",\"HEAD\",\"DELETE\",\"OPTIONS\",\"TRACE\"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:[\"ETIMEDOUT\",\"ECONNRESET\",\"EADDRINUSE\",\"ECONNREFUSED\",\"EPIPE\",\"ENOTFOUND\",\"ENETUNREACH\",\"EAI_AGAIN\"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{\"user-agent\":\"got (https://github.com/sindresorhus/got)\"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:\"text\",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:\"\",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType===\"json\"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,\"link\"))return!1;let e=t.headers.link.split(\",\"),r;for(let o of e){let a=o.split(\";\");if(a[1].includes(\"next\")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Mst.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[hle.defaultHandler],mutableDefaults:!1},R4=hle.default(Ost);Rf.default=R4;Cx.exports=R4;Cx.exports.default=R4;Cx.exports.__esModule=!0;ple(T4(),Rf);ple(k4(),Rf)});var rn={};Kt(rn,{Method:()=>Ile,del:()=>qst,get:()=>O4,getNetworkSettings:()=>wle,post:()=>U4,put:()=>jst,request:()=>w1});function yle(t){let e=new wx.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function N4(t){return ol(mle,t,()=>oe.readFilePromise(t).then(e=>(mle.set(t,e),e)))}function Hst({statusCode:t,statusMessage:e},r){let o=Ot(r,t,yt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Xy(r,`${o}${e?` (${e})`:\"\"}`,a)}async function Ix(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(o){if(o.name!==\"HTTPError\")throw o;let a=r?.(o,e)??o.response.body?.error;a==null&&(o.message.startsWith(\"Response code\")?a=\"The remote server failed to provide the requested resource\":a=o.message),o.code===\"ETIMEDOUT\"&&o.event===\"socket\"&&(a+=`(can be increased via ${Ot(e,\"httpTimeout\",yt.SETTING)})`);let n=new zt(35,a,u=>{o.response&&u.reportError(35,`  ${zu(e,{label:\"Response Code\",value:_c(yt.NO_HINT,Hst(o.response,e))})}`),o.request&&(u.reportError(35,`  ${zu(e,{label:\"Request Method\",value:_c(yt.NO_HINT,o.request.options.method)})}`),u.reportError(35,`  ${zu(e,{label:\"Request URL\",value:_c(yt.URL,o.request.requestUrl)})}`)),o.request.redirects.length>0&&u.reportError(35,`  ${zu(e,{label:\"Request Redirects\",value:_c(yt.NO_HINT,bL(e,o.request.redirects,yt.URL))})}`),o.request.retryCount===o.request.options.retry.limit&&u.reportError(35,`  ${zu(e,{label:\"Request Retry Count\",value:_c(yt.NO_HINT,`${Ot(e,o.request.retryCount,yt.NUMBER)} (can be increased via ${Ot(e,\"httpRetry\",yt.SETTING)})`)})}`)});throw n.originalError=o,n}}function wle(t,e){let r=[...e.configuration.get(\"networkSettings\")].sort(([u],[A])=>A.length-u.length),o={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(o),n=typeof t==\"string\"?new wx.URL(t):t;for(let[u,A]of r)if(M4.default.isMatch(n.hostname,u))for(let p of a){let h=A.get(p);h!==null&&typeof o[p]>\"u\"&&(o[p]=h)}for(let u of a)typeof o[u]>\"u\"&&(o[u]=e.configuration.get(u));return o}async function w1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u=\"GET\",wrapNetworkRequest:A}){let p={target:t,body:e,configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u},h=async()=>await Gst(t,e,p),E=typeof A<\"u\"?await A(h,p):h;return await(await r.reduceHook(v=>v.wrapNetworkRequest,E,p))()}async function O4(t,{configuration:e,jsonResponse:r,customErrorMessage:o,wrapNetworkRequest:a,...n}){let u=()=>Ix(w1(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:o}).then(p=>p.body),A=await(typeof a<\"u\"?u():ol(dle,t,()=>u().then(p=>(dle.set(t,p),p))));return r?JSON.parse(A.toString()):A}async function jst(t,e,{customErrorMessage:r,...o}){return(await Ix(w1(t,e,{...o,method:\"PUT\"}),{customErrorMessage:r,configuration:o.configuration})).body}async function U4(t,e,{customErrorMessage:r,...o}){return(await Ix(w1(t,e,{...o,method:\"POST\"}),{customErrorMessage:r,configuration:o.configuration})).body}async function qst(t,{customErrorMessage:e,...r}){return(await Ix(w1(t,null,{...r,method:\"DELETE\"}),{customErrorMessage:e,configuration:r.configuration})).body}async function Gst(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u=\"GET\"}){let A=typeof t==\"string\"?new wx.URL(t):t,p=wle(A,{configuration:r});if(p.enableNetwork===!1)throw new zt(80,`Request to '${A.href}' has been blocked because of your configuration settings`);if(A.protocol===\"http:\"&&!M4.default.isMatch(A.hostname,r.get(\"unsafeHttpWhitelist\")))throw new zt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${A.hostname})`);let E={agent:{http:p.httpProxy?L4.default.httpOverHttp(yle(p.httpProxy)):Ust,https:p.httpsProxy?L4.default.httpsOverHttp(yle(p.httpsProxy)):_st},headers:o,method:u};E.responseType=n?\"json\":\"buffer\",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e==\"string\"?E.body=e:E.json=e);let I=r.get(\"httpTimeout\"),v=r.get(\"httpRetry\"),b=r.get(\"enableStrictSsl\"),C=p.httpsCaFilePath,T=p.httpsCertFilePath,L=p.httpsKeyFilePath,{default:U}=await Promise.resolve().then(()=>$e(gle())),J=C?await N4(C):void 0,te=T?await N4(T):void 0,le=L?await N4(L):void 0,pe=U.extend({timeout:{socket:I},retry:v,https:{rejectUnauthorized:b,certificateAuthority:J,certificate:te,key:le},...E});return r.getLimit(\"networkConcurrency\")(()=>pe(A))}var Ele,Cle,M4,L4,wx,dle,mle,Ust,_st,Ile,Bx=Et(()=>{Pt();Ele=Be(\"https\"),Cle=Be(\"http\"),M4=$e(Zo()),L4=$e(Vse()),wx=Be(\"url\");Yl();ql();jl();dle=new Map,mle=new Map,Ust=new Cle.Agent({keepAlive:!0}),_st=new Ele.Agent({keepAlive:!0});Ile=(a=>(a.GET=\"GET\",a.PUT=\"PUT\",a.POST=\"POST\",a.DELETE=\"DELETE\",a))(Ile||{})});var Ji={};Kt(Ji,{availableParallelism:()=>H4,getArchitecture:()=>I1,getArchitectureName:()=>Jst,getArchitectureSet:()=>_4,getCaller:()=>$st,major:()=>Yst,openUrl:()=>Wst});function Kst(){if(process.platform===\"darwin\"||process.platform===\"win32\")return null;let t;try{t=oe.readFileSync(Vst)}catch{}if(typeof t<\"u\"){if(t&&t.includes(\"GLIBC\"))return\"glibc\";if(t&&t.includes(\"musl\"))return\"musl\"}let r=(process.report?.getReport()??{}).sharedObjects??[],o=/\\/(?:(ld-linux-|[^/]+-linux-gnu\\/)|(libc.musl-|ld-musl-))/;return WI(r,a=>{let n=a.match(o);if(!n)return WI.skip;if(n[1])return\"glibc\";if(n[2])return\"musl\";throw new Error(\"Assertion failed: Expected the libc variant to have been detected\")})??null}function I1(){return vle=vle??{os:process.platform,cpu:process.arch,libc:Kst()}}function Jst(t=I1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function _4(){let t=I1();return Dle=Dle??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function Zst(t){let e=zst.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf(\"native\")===0,o=e[2]&&e[2].indexOf(\"eval\")===0,a=Xst.exec(e[2]);return o&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||\"<unknown>\",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function $st(){let e=new Error().stack.split(`\n`)[3];return Zst(e)}function H4(){return typeof vx.default.availableParallelism<\"u\"?vx.default.availableParallelism():Math.max(1,vx.default.cpus().length)}var vx,Yst,Ble,Wst,Vst,vle,Dle,zst,Xst,Dx=Et(()=>{Pt();vx=$e(Be(\"os\"));Px();jl();Yst=Number(process.versions.node.split(\".\")[0]),Ble=new Map([[\"darwin\",\"open\"],[\"linux\",\"xdg-open\"],[\"win32\",\"explorer.exe\"]]).get(process.platform),Wst=typeof Ble<\"u\"?async t=>{try{return await j4(Ble,[t],{cwd:K.cwd()}),!0}catch{return!1}}:void 0,Vst=\"/usr/bin/ldd\";zst=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,Xst=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/});function V4(t,e,r,o,a){let n=u1(r);if(o.isArray||o.type===\"ANY\"&&Array.isArray(n))return Array.isArray(n)?n.map((u,A)=>q4(t,`${e}[${A}]`,u,o,a)):String(n).split(/,/).map(u=>q4(t,e,u,o,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings \"${e}\" cannot be an array`);return q4(t,e,r,o,a)}function q4(t,e,r,o,a){let n=u1(r);switch(o.type){case\"ANY\":return YS(n);case\"SHAPE\":return not(t,e,r,o,a);case\"MAP\":return iot(t,e,r,o,a)}if(n===null&&!o.isNullable&&o.default!==null)throw new Error(`Non-nullable configuration settings \"${e}\" cannot be set to null`);if(o.values?.includes(n))return n;let A=(()=>{if(o.type===\"BOOLEAN\"&&typeof n!=\"string\")return VI(n);if(typeof n!=\"string\")throw new Error(`Expected configuration setting \"${e}\" to be a string, got ${typeof n}`);let p=sS(n,{env:t.env});switch(o.type){case\"ABSOLUTE_PATH\":{let h=a,E=EO(r);return E&&E[0]!==\"<\"&&(h=K.dirname(E)),K.resolve(h,ue.toPortablePath(p))}case\"LOCATOR_LOOSE\":return xf(p,!1);case\"NUMBER\":return parseInt(p);case\"LOCATOR\":return xf(p);case\"BOOLEAN\":return VI(p);default:return p}})();if(o.values&&!o.values.includes(A))throw new Error(`Invalid value, expected one of ${o.values.join(\", \")}`);return A}function not(t,e,r,o,a){let n=u1(r);if(typeof n!=\"object\"||Array.isArray(n))throw new it(`Object configuration settings \"${e}\" must be an object`);let u=K4(t,o,{ignoreArrays:!0});if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=`${e}.${A}`;if(!o.properties[A])throw new it(`Unrecognized configuration settings found: ${e}.${A} - run \"yarn config -v\" to see the list of settings supported in Yarn`);u.set(A,V4(t,h,p,o.properties[A],a))}return u}function iot(t,e,r,o,a){let n=u1(r),u=new Map;if(typeof n!=\"object\"||Array.isArray(n))throw new it(`Map configuration settings \"${e}\" must be an object`);if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=o.normalizeKeys?o.normalizeKeys(A):A,E=`${e}['${h}']`,I=o.valueDefinition;u.set(h,V4(t,E,p,I,a))}return u}function K4(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case\"SHAPE\":{if(e.isArray&&!r)return[];let o=new Map;for(let[a,n]of Object.entries(e.properties))o.set(a,K4(t,n));return o}case\"MAP\":return e.isArray&&!r?[]:new Map;case\"ABSOLUTE_PATH\":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(o=>K.normalize(o)):K.isAbsolute(e.default)?K.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(o=>K.resolve(t.projectCwd,o)):K.resolve(t.projectCwd,e.default);default:return e.default}}function xx(t,e,r){if(e.type===\"SECRET\"&&typeof t==\"string\"&&r.hideSecrets)return rot;if(e.type===\"ABSOLUTE_PATH\"&&typeof t==\"string\"&&r.getNativePaths)return ue.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let o=[];for(let a of t)o.push(xx(a,e,r));return o}if(e.type===\"MAP\"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=xx(n,e.valueDefinition,r);typeof u<\"u\"&&o.set(a,u)}return o}if(e.type===\"SHAPE\"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=e.properties[a],A=xx(n,u,r);typeof A<\"u\"&&o.set(a,A)}return o}return t}function sot(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(bx)&&(e=(0,Sle.default)(e.slice(bx.length)),t[e]=r);return t}function Y4(){let t=`${bx}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r==\"string\")return r;return W4}async function Ple(t){try{return await oe.readFilePromise(t)}catch{return Buffer.of()}}async function oot(t,e){return Buffer.compare(...await Promise.all([Ple(t),Ple(e)]))===0}async function aot(t,e){let[r,o]=await Promise.all([oe.statPromise(t),oe.statPromise(e)]);return r.dev===o.dev&&r.ino===o.ino}async function cot({configuration:t,selfPath:e}){let r=t.get(\"yarnPath\");return t.get(\"ignorePath\")||r===null||r===e||await lot(r,e)?null:r}var Sle,Nf,xle,ble,kle,G4,eot,B1,tot,QE,bx,W4,rot,v1,Qle,kx,Sx,lot,rA,Ve,D1=Et(()=>{Pt();Nl();Sle=$e(aK()),Nf=$e(ed());qt();xle=$e(eJ()),ble=Be(\"module\"),kle=$e(nd()),G4=Be(\"stream\");lse();AE();AO();fO();pO();Lse();hO();Bd();Hse();VS();ql();rh();Bx();jl();Dx();kf();xo();eot=function(){if(!Nf.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=ue.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=oe.readJsonSync(t)}catch{return!1}return!(!(\"repository\"in e)||!e.repository||(e.repository.private??!0))}(),B1=new Set([\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]),tot=new Set([\"isTestEnv\",\"injectNpmUser\",\"injectNpmPassword\",\"injectNpm2FaToken\",\"cacheCheckpointOverride\",\"cacheVersionOverride\",\"lockfileVersionOverride\",\"binFolder\",\"version\",\"flags\",\"profile\",\"gpg\",\"ignoreNode\",\"wrapOutput\",\"home\",\"confDir\",\"registry\",\"ignoreCwd\"]),QE=/^(?!v)[a-z0-9._-]+$/i,bx=\"yarn_\",W4=\".yarnrc.yml\",rot=\"********\",v1=(E=>(E.ANY=\"ANY\",E.BOOLEAN=\"BOOLEAN\",E.ABSOLUTE_PATH=\"ABSOLUTE_PATH\",E.LOCATOR=\"LOCATOR\",E.LOCATOR_LOOSE=\"LOCATOR_LOOSE\",E.NUMBER=\"NUMBER\",E.STRING=\"STRING\",E.SECRET=\"SECRET\",E.SHAPE=\"SHAPE\",E.MAP=\"MAP\",E))(v1||{}),Qle=yt,kx=(r=>(r.JUNCTIONS=\"junctions\",r.SYMLINKS=\"symlinks\",r))(kx||{}),Sx={lastUpdateCheck:{description:\"Last timestamp we checked whether new Yarn versions were available\",type:\"STRING\",default:null},yarnPath:{description:\"Path to the local executable that must be used over the global one\",type:\"ABSOLUTE_PATH\",default:null},ignorePath:{description:\"If true, the local executable will be ignored when using the global one\",type:\"BOOLEAN\",default:!1},globalFolder:{description:\"Folder where all system-global files are stored\",type:\"ABSOLUTE_PATH\",default:wO()},cacheFolder:{description:\"Folder where the cache files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/cache\"},compressionLevel:{description:\"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)\",type:\"NUMBER\",values:[\"mixed\",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:\"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/__virtual__\"},installStatePath:{description:\"Path of the file where the install state will be persisted\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/install-state.gz\"},immutablePatterns:{description:\"Array of glob patterns; files matching them won't be allowed to change during immutable installs\",type:\"STRING\",default:[],isArray:!0},rcFilename:{description:\"Name of the files where the configuration can be found\",type:\"STRING\",default:Y4()},enableGlobalCache:{description:\"If true, the system-wide cache folder will be used regardless of `cache-folder`\",type:\"BOOLEAN\",default:!0},cacheMigrationMode:{description:\"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.\",type:\"STRING\",values:[\"always\",\"match-spec\",\"required-only\"],default:\"always\"},enableColors:{description:\"If true, the CLI is allowed to use colors in its output\",type:\"BOOLEAN\",default:lS,defaultText:\"<dynamic>\"},enableHyperlinks:{description:\"If true, the CLI is allowed to use hyperlinks in its output\",type:\"BOOLEAN\",default:xL,defaultText:\"<dynamic>\"},enableInlineBuilds:{description:\"If true, the CLI will print the build output on the command line\",type:\"BOOLEAN\",default:Nf.isCI,defaultText:\"<dynamic>\"},enableMessageNames:{description:\"If true, the CLI will prefix most messages with codes suitable for search engines\",type:\"BOOLEAN\",default:!0},enableProgressBars:{description:\"If true, the CLI is allowed to show a progress bar for long-running events\",type:\"BOOLEAN\",default:!Nf.isCI,defaultText:\"<dynamic>\"},enableTimers:{description:\"If true, the CLI is allowed to print the time spent executing commands\",type:\"BOOLEAN\",default:!0},enableTips:{description:\"If true, installs will print a helpful message every day of the week\",type:\"BOOLEAN\",default:!Nf.isCI,defaultText:\"<dynamic>\"},preferInteractive:{description:\"If true, the CLI will automatically use the interactive mode when called from a TTY\",type:\"BOOLEAN\",default:!1},preferTruncatedLines:{description:\"If true, the CLI will truncate lines that would go beyond the size of the terminal\",type:\"BOOLEAN\",default:!1},progressBarStyle:{description:\"Which style of progress bar should be used (only when progress bars are enabled)\",type:\"STRING\",default:void 0,defaultText:\"<dynamic>\"},defaultLanguageName:{description:\"Default language mode that should be used when a package doesn't offer any insight\",type:\"STRING\",default:\"node\"},defaultProtocol:{description:\"Default resolution protocol used when resolving pure semver and tag ranges\",type:\"STRING\",default:\"npm:\"},enableTransparentWorkspaces:{description:\"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol\",type:\"BOOLEAN\",default:!0},supportedArchitectures:{description:\"Architectures that Yarn will fetch and inject into the resolver\",type:\"SHAPE\",properties:{os:{description:\"Array of supported process.platform strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},cpu:{description:\"Array of supported process.arch strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},libc:{description:\"Array of supported libc libraries, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]}}},enableMirror:{description:\"If true, the downloaded packages will be retrieved and stored in both the local and global folders\",type:\"BOOLEAN\",default:!0},enableNetwork:{description:\"If false, Yarn will refuse to use the network if required to\",type:\"BOOLEAN\",default:!0},enableOfflineMode:{description:\"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network\",type:\"BOOLEAN\",default:!1},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},unsafeHttpWhitelist:{description:\"List of the hostnames for which http queries are allowed (glob patterns are supported)\",type:\"STRING\",default:[],isArray:!0},httpTimeout:{description:\"Timeout of each http request in milliseconds\",type:\"NUMBER\",default:6e4},httpRetry:{description:\"Retry times on http failure\",type:\"NUMBER\",default:3},networkConcurrency:{description:\"Maximal number of concurrent requests\",type:\"NUMBER\",default:50},taskPoolConcurrency:{description:\"Maximal amount of concurrent heavy task processing\",type:\"NUMBER\",default:H4()},taskPoolMode:{description:\"Execution strategy for heavy tasks\",type:\"STRING\",values:[\"async\",\"workers\"],default:\"workers\"},networkSettings:{description:\"Network settings per hostname (glob patterns are supported)\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{httpsCaFilePath:{description:\"Path to file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},enableNetwork:{description:\"If false, the package manager will refuse to use the network if required to\",type:\"BOOLEAN\",default:null},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null}}}},httpsCaFilePath:{description:\"A path to a file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null},enableStrictSsl:{description:\"If false, SSL certificate errors will be ignored\",type:\"BOOLEAN\",default:!0},logFilters:{description:\"Overrides for log levels\",type:\"SHAPE\",isArray:!0,concatenateValues:!0,properties:{code:{description:\"Code of the messages covered by this override\",type:\"STRING\",default:void 0},text:{description:\"Code of the texts covered by this override\",type:\"STRING\",default:void 0},pattern:{description:\"Code of the patterns covered by this override\",type:\"STRING\",default:void 0},level:{description:\"Log level override, set to null to remove override\",type:\"STRING\",values:Object.values(uS),isNullable:!0,default:void 0}}},enableTelemetry:{description:\"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry\",type:\"BOOLEAN\",default:!0},telemetryInterval:{description:\"Minimal amount of time between two telemetry uploads, in days\",type:\"NUMBER\",default:7},telemetryUserId:{description:\"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.\",type:\"STRING\",default:null},enableHardenedMode:{description:\"If true, automatically enable --check-resolutions --refresh-lockfile on installs\",type:\"BOOLEAN\",default:Nf.isPR&&eot,defaultText:\"<true on public PRs>\"},enableScripts:{description:\"If true, packages are allowed to have install scripts by default\",type:\"BOOLEAN\",default:!0},enableStrictSettings:{description:\"If true, unknown settings will cause Yarn to abort\",type:\"BOOLEAN\",default:!0},enableImmutableCache:{description:\"If true, the cache is reputed immutable and actions that would modify it will throw\",type:\"BOOLEAN\",default:!1},checksumBehavior:{description:\"Enumeration defining what to do when a checksum doesn't match expectations\",type:\"STRING\",default:\"throw\"},injectEnvironmentFiles:{description:\"List of all the environment files that Yarn should inject inside the process when it starts\",type:\"ABSOLUTE_PATH\",default:[\".env.yarn?\"],isArray:!0},packageExtensions:{description:\"Map of package corrections to apply on the dependency tree\",type:\"MAP\",valueDefinition:{description:\"The extension that will be applied to any package whose version matches the specified range\",type:\"SHAPE\",properties:{dependencies:{description:\"The set of dependencies that must be made available to the current package in order for it to work properly\",type:\"MAP\",valueDefinition:{description:\"A range\",type:\"STRING\"}},peerDependencies:{description:\"Inherited dependencies - the consumer of the package will be tasked to provide them\",type:\"MAP\",valueDefinition:{description:\"A semver range\",type:\"STRING\"}},peerDependenciesMeta:{description:\"Extra information related to the dependencies listed in the peerDependencies field\",type:\"MAP\",valueDefinition:{description:\"The peerDependency meta\",type:\"SHAPE\",properties:{optional:{description:\"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error\",type:\"BOOLEAN\",default:!1}}}}}}}};lot=process.platform===\"win32\"?oot:aot;rA=class{constructor(e){this.isCI=Nf.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=e}static create(e,r,o){let a=new rA(e);typeof r<\"u\"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(Sx);let n=typeof o<\"u\"?o:r instanceof Map?r:new Map;for(let[u,A]of n)a.activatePlugin(u,A);return a}static async find(e,r,{strict:o=!0,usePathCheck:a=null,useRc:n=!0}={}){let u=sot();delete u.rcFilename;let A=new rA(e),p=await rA.findRcFiles(e),h=await rA.findFolderRcFile(yE());h&&(p.find(ye=>ye.path===h.path)||p.unshift(h));let E=_se(p.map(Ae=>[Ae.path,Ae.data])),I=Bt.dot,v=new Set(Object.keys(Sx)),b=({yarnPath:Ae,ignorePath:ye,injectEnvironmentFiles:ae})=>({yarnPath:Ae,ignorePath:ye,injectEnvironmentFiles:ae}),C=({yarnPath:Ae,ignorePath:ye,injectEnvironmentFiles:ae,...we})=>{let Pe={};for(let[g,Ee]of Object.entries(we))v.has(g)&&(Pe[g]=Ee);return Pe},T=({yarnPath:Ae,ignorePath:ye,...ae})=>{let we={};for(let[Pe,g]of Object.entries(ae))v.has(Pe)||(we[Pe]=g);return we};if(A.importSettings(b(Sx)),A.useWithSource(\"<environment>\",b(u),e,{strict:!1}),E){let[Ae,ye]=E;A.useWithSource(Ae,b(ye),I,{strict:!1})}if(a){if(await cot({configuration:A,selfPath:a})!==null)return A;A.useWithSource(\"<override>\",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let L=await rA.findProjectCwd(e);A.startingCwd=e,A.projectCwd=L;let U=Object.assign(Object.create(null),process.env);A.env=U;let J=await Promise.all(A.get(\"injectEnvironmentFiles\").map(async Ae=>{let ye=Ae.endsWith(\"?\")?await oe.readFilePromise(Ae.slice(0,-1),\"utf8\").catch(()=>\"\"):await oe.readFilePromise(Ae,\"utf8\");return(0,xle.parse)(ye)}));for(let Ae of J)for(let[ye,ae]of Object.entries(Ae))A.env[ye]=sS(ae,{env:U});if(A.importSettings(C(Sx)),A.useWithSource(\"<environment>\",C(u),e,{strict:o}),E){let[Ae,ye]=E;A.useWithSource(Ae,C(ye),I,{strict:o})}let te=Ae=>\"default\"in Ae?Ae.default:Ae,le=new Map([[\"@@core\",ase]]);if(r!==null)for(let Ae of r.plugins.keys())le.set(Ae,te(r.modules.get(Ae)));for(let[Ae,ye]of le)A.activatePlugin(Ae,ye);let pe=new Map([]);if(r!==null){let Ae=new Map;for(let we of ble.builtinModules)Ae.set(we,()=>vf(we));for(let[we,Pe]of r.modules)Ae.set(we,()=>Pe);let ye=new Set,ae=async(we,Pe)=>{let{factory:g,name:Ee}=vf(we);if(!g||ye.has(Ee))return;let De=new Map(Ae),ce=ee=>{if(De.has(ee))return De.get(ee)();throw new it(`This plugin cannot access the package referenced via ${ee} which is neither a builtin, nor an exposed entry`)},ne=await Wy(async()=>te(await g(ce)),ee=>`${ee} (when initializing ${Ee}, defined in ${Pe})`);Ae.set(Ee,()=>ne),ye.add(Ee),pe.set(Ee,ne)};if(u.plugins)for(let we of u.plugins.split(\";\")){let Pe=K.resolve(e,ue.toPortablePath(we));await ae(Pe,\"<environment>\")}for(let{path:we,cwd:Pe,data:g}of p)if(!!n&&!!Array.isArray(g.plugins))for(let Ee of g.plugins){let De=typeof Ee!=\"string\"?Ee.path:Ee,ce=Ee?.spec??\"\",ne=Ee?.checksum??\"\";if(B1.has(ce))continue;let ee=K.resolve(Pe,ue.toPortablePath(De));if(!await oe.existsPromise(ee)){if(!ce){let ht=Ot(A,K.basename(ee,\".cjs\"),yt.NAME),H=Ot(A,\".gitignore\",yt.NAME),lt=Ot(A,A.values.get(\"rcFilename\"),yt.NAME),Re=Ot(A,\"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored\",yt.URL);throw new it(`Missing source for the ${ht} plugin - please try to remove the plugin from ${lt} then reinstall it manually. This error usually occurs because ${H} is incorrect, check ${Re} to make sure your plugin folder isn't gitignored.`)}if(!ce.match(/^https?:/)){let ht=Ot(A,K.basename(ee,\".cjs\"),yt.NAME),H=Ot(A,A.values.get(\"rcFilename\"),yt.NAME);throw new it(`Failed to recognize the source for the ${ht} plugin - please try to delete the plugin from ${H} then reinstall it manually.`)}let Ie=await O4(ce,{configuration:A}),ke=zs(Ie);if(ne&&ne!==ke){let ht=Ot(A,K.basename(ee,\".cjs\"),yt.NAME),H=Ot(A,A.values.get(\"rcFilename\"),yt.NAME),lt=Ot(A,`yarn plugin import ${ce}`,yt.CODE);throw new it(`Failed to fetch the ${ht} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${H} then run ${lt} to reimport it.`)}await oe.mkdirPromise(K.dirname(ee),{recursive:!0}),await oe.writeFilePromise(ee,Ie)}await ae(ee,we)}}for(let[Ae,ye]of pe)A.activatePlugin(Ae,ye);if(A.useWithSource(\"<environment>\",T(u),e,{strict:o}),E){let[Ae,ye]=E;A.useWithSource(Ae,T(ye),I,{strict:o})}return A.get(\"enableGlobalCache\")&&(A.values.set(\"cacheFolder\",`${A.get(\"globalFolder\")}/cache`),A.sources.set(\"cacheFolder\",\"<internal>\")),A}static async findRcFiles(e){let r=Y4(),o=[],a=e,n=null;for(;a!==n;){n=a;let u=K.join(n,r);if(oe.existsSync(u)){let A=await oe.readFilePromise(u,\"utf8\"),p;try{p=Vi(A)}catch{let E=\"\";throw A.match(/^\\s+(?!-)[^:]+\\s+\\S+/m)&&(E=\" (in particular, make sure you list the colons after each key name)\"),new it(`Parse error when loading ${u}; please check it's proper Yaml${E}`)}o.unshift({path:u,cwd:n,data:p})}a=K.dirname(n)}return o}static async findFolderRcFile(e){let r=K.join(e,dr.rc),o;try{o=await oe.readFilePromise(r,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return null;throw n}let a=Vi(o);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,o=e,a=null;for(;o!==a;){if(a=o,oe.existsSync(K.join(a,dr.lockfile)))return a;oe.existsSync(K.join(a,dr.manifest))&&(r=a),o=K.dirname(a)}return r}static async updateConfiguration(e,r,o={}){let a=Y4(),n=K.join(e,a),u=oe.existsSync(n)?Vi(await oe.readFilePromise(n,\"utf8\")):{},A=!1,p;if(typeof r==\"function\"){try{p=r(u)}catch{p=r({})}if(p===u)return!1}else{p=u;for(let h of Object.keys(r)){let E=u[h],I=r[h],v;if(typeof I==\"function\")try{v=I(E)}catch{v=I(void 0)}else v=I;E!==v&&(v===rA.deleteProperty?delete p[h]:p[h]=v,A=!0)}if(!A)return!1}return await oe.changeFilePromise(n,Ba(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await rA.updateConfiguration(e,o=>{let a=o.plugins??[];if(a.length===0)return{...o,plugins:r};let n=[],u=[...r];for(let A of a){let p=typeof A!=\"string\"?A.path:A,h=u.find(E=>E.path===p);h?(n.push(h),u=u.filter(E=>E!==h)):n.push(A)}return n.push(...u),{...o,plugins:n}})}static async updateHomeConfiguration(e){let r=yE();return await rA.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<\"u\"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings \"${r}\"`);this.settings.set(r,o),this.values.set(r,K4(this,o))}}useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=` (in ${Ot(this,e,yt.PATH)})`,n}}use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get(\"enableStrictSettings\");for(let u of[\"enableStrictSettings\",...Object.keys(r)]){let A=r[u],p=EO(A);if(p&&(e=p),typeof A>\"u\"||u===\"plugins\"||e===\"<environment>\"&&tot.has(u))continue;if(u===\"rcFilename\")throw new it(`The rcFilename settings can only be set via ${`${bx}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(u);if(!h){let I=yE(),v=e[0]!==\"<\"?K.dirname(e):null;if(a&&!(v!==null?I===v:!1))throw new it(`Unrecognized or legacy configuration settings found: ${u} - run \"yarn config -v\" to see the list of settings supported in Yarn`);this.invalid.set(u,e);continue}if(this.sources.has(u)&&!(n||h.type===\"MAP\"||h.isArray&&h.concatenateValues))continue;let E;try{E=V4(this,u,A,h,o)}catch(I){throw I.message+=` in ${Ot(this,e,yt.PATH)}`,I}if(u===\"enableStrictSettings\"&&e!==\"<environment>\"){a=E;continue}if(h.type===\"MAP\"){let I=this.values.get(u);this.values.set(u,new Map(n?[...I,...E]:[...E,...I])),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let I=this.values.get(u);this.values.set(u,n?[...I,...E]:[...E,...I]),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else this.values.set(u,E),this.sources.set(u,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key \"${e}\"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:o=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>\"u\")throw new it(`Couldn't find a configuration settings named \"${e}\"`);return xx(a,n,{hideSecrets:r,getNativePaths:o})}getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=oe.createWriteStream(e);if(this.get(\"enableInlineBuilds\")){let p=a.createStreamReporter(`${o} ${Ot(this,\"STDOUT\",\"green\")}`),h=a.createStreamReporter(`${o} ${Ot(this,\"STDERR\",\"red\")}`);n=new G4.PassThrough,n.pipe(p),n.pipe(A),u=new G4.PassThrough,u.pipe(h),u.pipe(A)}else n=A,u=A,typeof r<\"u\"&&n.write(`${r}\n`);return{stdout:n,stderr:u}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of r.resolvers||[])e.push(new o);return new vd([new l1,new Xn,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r.fetchers||[])e.push(new o);return new pE([new hE,new dE,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r.linkers||[])e.push(new o);return e}getSupportedArchitectures(){let e=I1(),r=this.get(\"supportedArchitectures\"),o=r.get(\"os\");o!==null&&(o=o.map(u=>u===\"current\"?e.os:u));let a=r.get(\"cpu\");a!==null&&(a=a.map(u=>u===\"current\"?e.cpu:u));let n=r.get(\"libc\");return n!==null&&(n=sl(n,u=>u===\"current\"?e.libc??sl.skip:u)),{os:o,cpu:a,libc:n}}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(o,a,{userProvided:n=!1}={})=>{if(!ba(o.range))throw new Error(\"Only semver ranges are allowed as keys for the packageExtensions setting\");let u=new Mt;u.load(a,{yamlCompatibilityMode:!0});let A=Gy(e,o.identHash),p=[];A.push([o.range,p]);let h={status:\"inactive\",userProvided:n,parentDescriptor:o};for(let E of u.dependencies.values())p.push({...h,type:\"Dependency\",descriptor:E});for(let E of u.peerDependencies.values())p.push({...h,type:\"PeerDependency\",descriptor:E});for(let[E,I]of u.peerDependenciesMeta)for(let[v,b]of Object.entries(I))p.push({...h,type:\"PeerDependencyMeta\",selector:E,key:v,value:b})};await this.triggerHook(o=>o.registerPackageExtensions,this,r);for(let[o,a]of this.get(\"packageExtensions\"))r(nh(o,!0),iS(a),{userProvided:!0});return e}normalizeLocator(e){return ba(e.reference)?Qs(e,`${this.get(\"defaultProtocol\")}${e.reference}`):QE.test(e.reference)?Qs(e,`${this.get(\"defaultProtocol\")}${e.reference}`):e}normalizeDependency(e){return ba(e.range)?In(e,`${this.get(\"defaultProtocol\")}${e.range}`):QE.test(e.range)?In(e,`${this.get(\"defaultProtocol\")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.normalizeDependency(o)]))}normalizePackage(e,{packageExtensions:r}){let o=$I(e),a=r.get(e.identHash);if(typeof a<\"u\"){let u=e.version;if(u!==null){for(let[A,p]of a)if(!!bf(u,A))for(let h of p)switch(h.status===\"inactive\"&&(h.status=\"redundant\"),h.type){case\"Dependency\":typeof o.dependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",o.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case\"PeerDependency\":typeof o.peerDependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",o.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case\"PeerDependencyMeta\":{let E=o.peerDependenciesMeta.get(h.selector);(typeof E>\"u\"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status=\"active\",ol(o.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:CL(h)}}}let n=u=>u.scope?`${u.scope}__${u.name}`:`${u.name}`;for(let u of o.peerDependenciesMeta.keys()){let A=Js(u);o.peerDependencies.has(A.identHash)||o.peerDependencies.set(A.identHash,In(A,\"*\"))}for(let u of o.peerDependencies.values()){if(u.scope===\"types\")continue;let A=n(u),p=eA(\"types\",A),h=fn(p);o.peerDependencies.has(p.identHash)||o.peerDependenciesMeta.has(h)||(o.peerDependencies.set(p.identHash,In(p,\"*\")),o.peerDependenciesMeta.set(h,{optional:!0}))}return o.dependencies=new Map(ks(o.dependencies,([,u])=>Sa(u))),o.peerDependencies=new Map(ks(o.peerDependencies,([,u])=>Sa(u))),o}getLimit(e){return ol(this.limits,e,()=>(0,kle.default)(this.get(e)))}async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);!n||await n(...r)}}async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...o)}async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){let u=n.hooks;if(!u)continue;let A=e(u);!A||(a=await A(a,...o))}return a}async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);if(!n)continue;let u=await n(...r);if(typeof u<\"u\")return u}return null}},Ve=rA;Ve.deleteProperty=Symbol(),Ve.telemetry=null});var Ur={};Kt(Ur,{EndStrategy:()=>Z4,ExecError:()=>Qx,PipeError:()=>P1,execvp:()=>j4,pipevp:()=>Gc});function Sd(t){return t!==null&&typeof t.fd==\"number\"}function J4(){}function z4(){for(let t of xd)t.kill()}async function Gc(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,stdout:u,stderr:A,end:p=2}){let h=[\"pipe\",\"pipe\",\"pipe\"];n===null?h[0]=\"ignore\":Sd(n)&&(h[0]=n),Sd(u)&&(h[1]=u),Sd(A)&&(h[2]=A);let E=(0,X4.default)(t,e,{cwd:ue.fromPortablePath(r),env:{...o,PWD:ue.fromPortablePath(r)},stdio:h});xd.add(E),xd.size===1&&(process.on(\"SIGINT\",J4),process.on(\"SIGTERM\",z4)),!Sd(n)&&n!==null&&n.pipe(E.stdin),Sd(u)||E.stdout.pipe(u,{end:!1}),Sd(A)||E.stderr.pipe(A,{end:!1});let I=()=>{for(let v of new Set([u,A]))Sd(v)||v.end()};return new Promise((v,b)=>{E.on(\"error\",C=>{xd.delete(E),xd.size===0&&(process.off(\"SIGINT\",J4),process.off(\"SIGTERM\",z4)),(p===2||p===1)&&I(),b(C)}),E.on(\"close\",(C,T)=>{xd.delete(E),xd.size===0&&(process.off(\"SIGINT\",J4),process.off(\"SIGTERM\",z4)),(p===2||p===1&&C!==0)&&I(),C===0||!a?v({code:$4(C,T)}):b(new P1({fileName:t,code:C,signal:T}))})})}async function j4(t,e,{cwd:r,env:o=process.env,encoding:a=\"utf8\",strict:n=!1}){let u=[\"ignore\",\"pipe\",\"pipe\"],A=[],p=[],h=ue.fromPortablePath(r);typeof o.PWD<\"u\"&&(o={...o,PWD:h});let E=(0,X4.default)(t,e,{cwd:h,env:o,stdio:u});return E.stdout.on(\"data\",I=>{A.push(I)}),E.stderr.on(\"data\",I=>{p.push(I)}),await new Promise((I,v)=>{E.on(\"error\",b=>{let C=Ve.create(r),T=Ot(C,t,yt.PATH);v(new zt(1,`Process ${T} failed to spawn`,L=>{L.reportError(1,`  ${zu(C,{label:\"Thrown Error\",value:_c(yt.NO_HINT,b.message)})}`)}))}),E.on(\"close\",(b,C)=>{let T=a===\"buffer\"?Buffer.concat(A):Buffer.concat(A).toString(a),L=a===\"buffer\"?Buffer.concat(p):Buffer.concat(p).toString(a);b===0||!n?I({code:$4(b,C),stdout:T,stderr:L}):v(new Qx({fileName:t,code:b,signal:C,stdout:T,stderr:L}))})})}function $4(t,e){let r=uot.get(e);return typeof r<\"u\"?128+r:t??1}function Aot(t,e,{configuration:r,report:o}){o.reportError(1,`  ${zu(r,t!==null?{label:\"Exit Code\",value:_c(yt.NUMBER,t)}:{label:\"Exit Signal\",value:_c(yt.CODE,e)})}`)}var X4,Z4,P1,Qx,xd,uot,Px=Et(()=>{Pt();X4=$e(aR());D1();Yl();ql();Z4=(o=>(o[o.Never=0]=\"Never\",o[o.ErrorCode=1]=\"ErrorCode\",o[o.Always=2]=\"Always\",o))(Z4||{}),P1=class extends zt{constructor({fileName:r,code:o,signal:a}){let n=Ve.create(K.cwd()),u=Ot(n,r,yt.PATH);super(1,`Child ${u} reported an error`,A=>{Aot(o,a,{configuration:n,report:A})});this.code=$4(o,a)}},Qx=class extends P1{constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileName:r,code:o,signal:a});this.stdout=n,this.stderr=u}};xd=new Set;uot=new Map([[\"SIGINT\",2],[\"SIGQUIT\",3],[\"SIGKILL\",9],[\"SIGTERM\",15]])});function Tle(t){Fle=t}function S1(){return typeof eU>\"u\"&&(eU=Fle()),eU}var eU,Fle,tU=Et(()=>{Fle=()=>{throw new Error(\"Assertion failed: No libzip instance is available, and no factory was configured\")}});var Rle=_((Fx,nU)=>{var fot=Object.assign({},Be(\"fs\")),rU=function(){var t=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<\"u\"?e:{},o,a;r.ready=new Promise(function(We,tt){o=We,a=tt});var n={},u;for(u in r)r.hasOwnProperty(u)&&(n[u]=r[u]);var A=[],p=\"./this.program\",h=function(We,tt){throw tt},E=!1,I=!0,v=\"\";function b(We){return r.locateFile?r.locateFile(We,v):v+We}var C,T,L,U;I&&(E?v=Be(\"path\").dirname(v)+\"/\":v=__dirname+\"/\",C=function(tt,It){var nr=ii(tt);return nr?It?nr:nr.toString():(L||(L=fot),U||(U=Be(\"path\")),tt=U.normalize(tt),L.readFileSync(tt,It?null:\"utf8\"))},T=function(tt){var It=C(tt,!0);return It.buffer||(It=new Uint8Array(It)),Ee(It.buffer),It},process.argv.length>1&&(p=process.argv[1].replace(/\\\\/g,\"/\")),A=process.argv.slice(2),h=function(We){process.exit(We)},r.inspect=function(){return\"[Emscripten Module object]\"});var J=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(u in n)n.hasOwnProperty(u)&&(r[u]=n[u]);n=null,r.arguments&&(A=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var le=0,pe=function(We){le=We},Ae;r.wasmBinary&&(Ae=r.wasmBinary);var ye=r.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&Ri(\"no native wasm support detected\");function ae(We,tt,It){switch(tt=tt||\"i8\",tt.charAt(tt.length-1)===\"*\"&&(tt=\"i32\"),tt){case\"i1\":return _e[We>>0];case\"i8\":return _e[We>>0];case\"i16\":return lp((We>>1)*2);case\"i32\":return Ms((We>>2)*4);case\"i64\":return Ms((We>>2)*4);case\"float\":return cu((We>>2)*4);case\"double\":return ap((We>>3)*8);default:Ri(\"invalid type for getValue: \"+tt)}return null}var we,Pe=!1,g;function Ee(We,tt){We||Ri(\"Assertion failed: \"+tt)}function De(We){var tt=r[\"_\"+We];return Ee(tt,\"Cannot call unknown function \"+We+\", make sure it is exported\"),tt}function ce(We,tt,It,nr,$){var me={string:function(es){var xi=0;if(es!=null&&es!==0){var jo=(es.length<<2)+1;xi=Un(jo),ht(es,xi,jo)}return xi},array:function(es){var xi=Un(es.length);return Re(es,xi),xi}};function Le(es){return tt===\"string\"?Ie(es):tt===\"boolean\"?Boolean(es):es}var ft=De(We),pt=[],Rt=0;if(nr)for(var er=0;er<nr.length;er++){var Zr=me[It[er]];Zr?(Rt===0&&(Rt=ms()),pt[er]=Zr(nr[er])):pt[er]=nr[er]}var qi=ft.apply(null,pt);return qi=Le(qi),Rt!==0&&_s(Rt),qi}function ne(We,tt,It,nr){It=It||[];var $=It.every(function(Le){return Le===\"number\"}),me=tt!==\"string\";return me&&$&&!nr?De(We):function(){return ce(We,tt,It,arguments,nr)}}var ee=new TextDecoder(\"utf8\");function Ie(We,tt){if(!We)return\"\";for(var It=We+tt,nr=We;!(nr>=It)&&Te[nr];)++nr;return ee.decode(Te.subarray(We,nr))}function ke(We,tt,It,nr){if(!(nr>0))return 0;for(var $=It,me=It+nr-1,Le=0;Le<We.length;++Le){var ft=We.charCodeAt(Le);if(ft>=55296&&ft<=57343){var pt=We.charCodeAt(++Le);ft=65536+((ft&1023)<<10)|pt&1023}if(ft<=127){if(It>=me)break;tt[It++]=ft}else if(ft<=2047){if(It+1>=me)break;tt[It++]=192|ft>>6,tt[It++]=128|ft&63}else if(ft<=65535){if(It+2>=me)break;tt[It++]=224|ft>>12,tt[It++]=128|ft>>6&63,tt[It++]=128|ft&63}else{if(It+3>=me)break;tt[It++]=240|ft>>18,tt[It++]=128|ft>>12&63,tt[It++]=128|ft>>6&63,tt[It++]=128|ft&63}}return tt[It]=0,It-$}function ht(We,tt,It){return ke(We,Te,tt,It)}function H(We){for(var tt=0,It=0;It<We.length;++It){var nr=We.charCodeAt(It);nr>=55296&&nr<=57343&&(nr=65536+((nr&1023)<<10)|We.charCodeAt(++It)&1023),nr<=127?++tt:nr<=2047?tt+=2:nr<=65535?tt+=3:tt+=4}return tt}function lt(We){var tt=H(We)+1,It=Li(tt);return It&&ke(We,_e,It,tt),It}function Re(We,tt){_e.set(We,tt)}function Qe(We,tt){return We%tt>0&&(We+=tt-We%tt),We}var be,_e,Te,Je,He,x,w,S,y,F;function z(We){be=We,r.HEAP_DATA_VIEW=F=new DataView(We),r.HEAP8=_e=new Int8Array(We),r.HEAP16=Je=new Int16Array(We),r.HEAP32=x=new Int32Array(We),r.HEAPU8=Te=new Uint8Array(We),r.HEAPU16=He=new Uint16Array(We),r.HEAPU32=w=new Uint32Array(We),r.HEAPF32=S=new Float32Array(We),r.HEAPF64=y=new Float64Array(We)}var X=r.INITIAL_MEMORY||16777216,Z,ie=[],Se=[],Ne=[],ot=!1;function dt(){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;)xt(r.preRun.shift());oo(ie)}function jt(){ot=!0,oo(Se)}function $t(){if(r.postRun)for(typeof r.postRun==\"function\"&&(r.postRun=[r.postRun]);r.postRun.length;)Qr(r.postRun.shift());oo(Ne)}function xt(We){ie.unshift(We)}function an(We){Se.unshift(We)}function Qr(We){Ne.unshift(We)}var mr=0,xr=null,Wr=null;function Vn(We){mr++,r.monitorRunDependencies&&r.monitorRunDependencies(mr)}function Ns(We){if(mr--,r.monitorRunDependencies&&r.monitorRunDependencies(mr),mr==0&&(xr!==null&&(clearInterval(xr),xr=null),Wr)){var tt=Wr;Wr=null,tt()}}r.preloadedImages={},r.preloadedAudios={};function Ri(We){r.onAbort&&r.onAbort(We),We+=\"\",te(We),Pe=!0,g=1,We=\"abort(\"+We+\"). Build with -s ASSERTIONS=1 for more info.\";var tt=new WebAssembly.RuntimeError(We);throw a(tt),tt}var ps=\"data:application/octet-stream;base64,\";function io(We){return We.startsWith(ps)}var Si=\"data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDmC48AAAgACAAKQOYLkIIiDcDmC4gACgCoC5BCGsLNgKgLgsLEAAgACgCCBAGIABBADYCCAvwAQECf0F/IQECQCAALQAoDQAgACgCJEEDRgRAIABBDGoEQCAAQQA2AhAgAEEXNgIMC0F/DwsCQCAAKAIgBEAgACkDGELAAINCAFINASAAQQxqBEAgAEEANgIQIABBHTYCDAtBfw8LAkAgACgCACICRQ0AIAIQMkF/Sg0AIAAoAgAhASAAQQxqIgAEQCAAIAEoAgw2AgAgACABKAIQNgIEC0F/DwsgAEEAQgBBABAOQn9VDQAgACgCACIARQ0BIAAQGhpBfw8LQQAhASAAQQA7ATQgAEEMagRAIABCADcCDAsgACAAKAIgQQFqNgIgCyABCzsAIAAtACgEfkJ/BSAAKAIgRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAAQQBCAEEHEA4LC5oIAQt/IABFBEAgARAJDwsgAUFATwRAQYSEAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBSgCBCIJQXhxIQQCQCAJQQNxRQRAQQAgBkGAAkkNAhogBkEEaiAETQRAIAUhAiAEIAZrQZSIASgCAEEBdE0NAgtBAAwCCyAEIAVqIQcCQCAEIAZPBEAgBCAGayIDQRBJDQEgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQOwwBCyAHQcyEASgCAEYEQEHAhAEoAgAgBGoiBCAGTQ0CIAUgCUEBcSAGckECcjYCBCAFIAZqIgMgBCAGayICQQFyNgIEQcCEASACNgIAQcyEASADNgIADAELIAdByIQBKAIARgRAQbyEASgCACAEaiIDIAZJDQICQCADIAZrIgJBEE8EQCAFIAlBAXEgBnJBAnI2AgQgBSAGaiIEIAJBAXI2AgQgAyAFaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAUgCUEBcSADckECcjYCBCADIAVqIgIgAigCBEEBcjYCBEEAIQJBACEEC0HIhAEgBDYCAEG8hAEgAjYCAAwBCyAHKAIEIgNBAnENASADQXhxIARqIgogBkkNASAKIAZrIQwCQCADQf8BTQRAIAcoAggiBCADQQN2IgJBA3RB3IQBakYaIAQgBygCDCIDRgRAQbSEAUG0hAEoAgBBfiACd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAHKAIYIQsCQCAHIAcoAgwiCEcEQCAHKAIIIgJBxIQBKAIASRogAiAINgIMIAggAjYCCAwBCwJAIAdBFGoiBCgCACICDQAgB0EQaiIEKAIAIgINAEEAIQgMAQsDQCAEIQMgAiIIQRRqIgQoAgAiAg0AIAhBEGohBCAIKAIQIgINAAsgA0EANgIACyALRQ0AAkAgByAHKAIcIgNBAnRB5IYBaiICKAIARgRAIAIgCDYCACAIDQFBuIQBQbiEASgCAEF+IAN3cTYCAAwCCyALQRBBFCALKAIQIAdGG2ogCDYCACAIRQ0BCyAIIAs2AhggBygCECICBEAgCCACNgIQIAIgCDYCGAsgBygCFCICRQ0AIAggAjYCFCACIAg2AhgLIAxBD00EQCAFIAlBAXEgCnJBAnI2AgQgBSAKaiICIAIoAgRBAXI2AgQMAQsgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAyAMQQNyNgIEIAUgCmoiAiACKAIEQQFyNgIEIAMgDBA7CyAFIQILIAILIgIEQCACQQhqDwsgARAJIgVFBEBBAA8LIAUgAEF8QXggAEEEaygCACICQQNxGyACQXhxaiICIAEgASACSxsQBxogABAGIAUL6QEBA38CQCABRQ0AIAJBgDBxIgIEfwJ/IAJBgCBHBEBBAiACQYAQRg0BGiADBEAgA0EANgIEIANBEjYCAAtBAA8LQQQLIQJBAAVBAQshBkEUEAkiBEUEQCADBEAgA0EANgIEIANBDjYCAAtBAA8LIAQgAUEBahAJIgU2AgAgBUUEQCAEEAZBAA8LIAUgACABEAcgAWpBADoAACAEQQA2AhAgBEIANwMIIAQgATsBBCAGDQAgBCACECNBBUcNACAEKAIAEAYgBCgCDBAGIAQQBkEAIQQgAwRAIANBADYCBCADQRI2AgALCyAEC7UBAQJ/AkACQAJAAkACQAJAAkAgAC0ABQRAIAAtAABBAnFFDQELIAAoAjAQECAAQQA2AjAgAC0ABUUNAQsgAC0AAEEIcUUNAQsgACgCNBAcIABBADYCNCAALQAFRQ0BCyAALQAAQQRxRQ0BCyAAKAI4EBAgAEEANgI4IAAtAAVFDQELIAAtAABBgAFxRQ0BCyAAKAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwDCwJAAkBBEBAJIgUEQCAFIAY7AQogBSAHOwEIIAUgAjYCBCAFQQA2AgAgBkUNASAFIAggBhBjIgY2AgwgBg0CIAUQBgtBACECIAQEQCAEQQA2AgQgBEEONgIACyABEAggAEUNBANAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwECyAFQQA2AgwLAkAgAEUEQCAFIQAMAQsgCSAFNgIACyAFIQkgAS0AAA0ACwsCQCABLQAABH8gASkDECABKQMIUQVBAAsNACABIAEtAAAEfiABKQMIIAEpAxB9BUIACyIKQv////8PgxATIQICQCAKpyIFQQNLDQAgAkUNACACQcEUIAUQPUUNAQtBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAQNAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwBCyABEAggAwRAIAMgADYCAEEBDwtBASECIABFDQADQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsLIAILvgEBBX8gAAR/IAAhAgNAIAIiBCgCACICDQALIAEEQANAIAEiAy8BCCEGIAMoAgAhASAAIQICQAJAA0ACQCACLwEIIAZHDQAgAi8BCiIFIAMvAQpHDQAgBUUNAiACKAIMIAMoAgwgBRA9RQ0CCyACKAIAIgINAAsgA0EANgIAIAQgAzYCACADIQQMAQsgAiACKAIEIAMoAgRBgAZxcjYCBCADQQA2AgAgAygCDBAGIAMQBgsgAQ0ACwsgAAUgAQsLVQICfgF/AkACQCAALQAARQ0AIAApAxAiAkIBfCIDIAJUDQAgAyAAKQMIWA0BCyAAQQA6AAAPCyAAKAIEIgRFBEAPCyAAIAM3AxAgBCACp2ogAToAAAt9AQN/IwBBEGsiAiQAIAIgATYCDEF/IQMCQCAALQAoDQACQCAAKAIAIgRFDQAgBCABEHFBf0oNACAAKAIAIQEgAEEMaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAsMAQsgACACQQxqQgRBExAOQj+HpyEDCyACQRBqJAAgAwvdAQEDfyABIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8PCyAAQQhqIQIgAC0AGEECcQRAIAIEQCACQQA2AgQgAkEZNgIAC0F/DwtBfyEDAkAgACABQQAgAhBTIgRFDQAgACgCUCAEIAIQfkUNAAJ/IAEgACkDMFoEQCAAQQhqBEAgAEEANgIMIABBEjYCCAtBfwwBCyABp0EEdCICIAAoAkBqKAIEECAgACgCQCACaiICQQA2AgQgAhBAQQALDQAgACgCQCABp0EEdGpBAToADEEAIQMLIAMLpgIBBX9BfyEFAkAgACABQQBBABAmRQ0AIAAtABhBAnEEQCAAQQhqIgAEQCAAQQA2AgQgAEEZNgIAC0F/DwsCfyAAKAJAIgQgAaciBkEEdGooAgAiBUUEQCADQYCA2I14RyEHQQMMAQsgBSgCRCADRyEHIAUtAAkLIQggBCAGQQR0aiIEIQYgBCgCBCEEQQAgAiAIRiAHG0UEQAJAIAQNACAGIAUQKyIENgIEIAQNACAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0F/DwsgBCADNgJEIAQgAjoACSAEIAQoAgBBEHI2AgBBAA8LQQAhBSAERQ0AIAQgBCgCAEFvcSIANgIAIABFBEAgBBAgIAZBADYCBEEADwsgBCADNgJEIAQgCDoACQsgBQvjCAIFfwR+IAAtABhBAnEEQCAAQQhqBEAgAEEANgIMIABBGTYCCAtCfw8LIAApAzAhCwJAIANBgMAAcQRAIAAgASADQQAQTCIJQn9SDQELAn4CQAJAIAApAzAiCUIBfCIMIAApAzgiClQEQCAAKAJAIQQMAQsgCkIBhiIJQoAIIAlCgAhUGyIJQhAgCUIQVhsgCnwiCadBBHQiBK0gCkIEhkLw////D4NUDQEgACgCQCAEEDQiBEUNASAAIAk3AzggACAENgJAIAApAzAiCUIBfCEMCyAAIAw3AzAgBCAJp0EEdGoiBEIANwIAIARCADcABSAJDAELIABBCGoEQCAAQQA2AgwgAEEONgIIC0J/CyIJQgBZDQBCfw8LAkAgAUUNAAJ/QQAhBCAJIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8MAQsgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAELAkAgAUUNACABLQAARQ0AQX8gASABECJB//8DcSADIABBCGoQNSIERQ0BGiADQYAwcQ0AIARBABAjQQNHDQAgBEECNgIICwJAIAAgAUEAQQAQTCIKQgBTIgENACAJIApRDQAgBBAQIABBCGoEQCAAQQA2AgwgAEEKNgIIC0F/DAELAkAgAUEBIAkgClEbRQ0AAkACfwJAIAAoAkAiASAJpyIFQQR0aiIGKAIAIgMEQCADKAIwIAQQYg0BCyAEIAYoAgQNARogBiAGKAIAECsiAzYCBCAEIAMNARogAEEIagRAIABBADYCDCAAQQ42AggLDAILQQEhByAGKAIAKAIwC0EAQQAgAEEIaiIDECUiCEUNAAJAAkAgASAFQQR0aiIFKAIEIgENACAGKAIAIgENAEEAIQEMAQsgASgCMCIBRQRAQQAhAQwBCyABQQBBACADECUiAUUNAQsgACgCUCAIIAlBACADEE1FDQAgAQRAIAAoAlAgAUEAEH4aCyAFKAIEIQMgBwRAIANFDQIgAy0AAEECcUUNAiADKAIwEBAgBSgCBCIBIAEoAgBBfXEiAzYCACADRQRAIAEQICAFQQA2AgQgBBAQQQAMBAsgASAGKAIAKAIwNgIwIAQQEEEADAMLIAMoAgAiAUECcQRAIAMoAjAQECAFKAIEIgMoAgAhAQsgAyAENgIwIAMgAUECcjYCAEEADAILIAQQEEF/DAELIAQQEEEAC0UNACALIAApAzBRBEBCfw8LIAAoAkAgCadBBHRqED4gACALNwMwQn8PCyAJpyIGQQR0IgEgACgCQGoQQAJAAkAgACgCQCIEIAFqIgMoAgAiBUUNAAJAIAMoAgQiAwRAIAMoAgAiAEEBcUUNAQwCCyAFECshAyAAKAJAIgQgBkEEdGogAzYCBCADRQ0CIAMoAgAhAAsgA0F+NgIQIAMgAEEBcjYCAAsgASAEaiACNgIIIAkPCyAAQQhqBEAgAEEANgIMIABBDjYCCAtCfwteAQF/IwBBEGsiAiQAAn8gACgCJEEBRwRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQX8MAQsgAkEANgIIIAIgATcDACAAIAJCEEEMEA5CP4enCyEAIAJBEGokACAAC9oDAQZ/IwBBEGsiBSQAIAUgAjYCDCMAQaABayIEJAAgBEEIakHA8ABBkAEQBxogBCAANgI0IAQgADYCHCAEQX4gAGsiA0H/////ByADQf////8HSRsiBjYCOCAEIAAgBmoiADYCJCAEIAA2AhggBEEIaiEAIwBB0AFrIgMkACADIAI2AswBIANBoAFqQQBBKBAZIAMgAygCzAE2AsgBAkBBACABIANByAFqIANB0ABqIANBoAFqEEpBAEgNACAAKAJMQQBOIQcgACgCACECIAAsAEpBAEwEQCAAIAJBX3E2AgALIAJBIHEhCAJ/IAAoAjAEQCAAIAEgA0HIAWogA0HQAGogA0GgAWoQSgwBCyAAQdAANgIwIAAgA0HQAGo2AhAgACADNgIcIAAgAzYCFCAAKAIsIQIgACADNgIsIAAgASADQcgBaiADQdAAaiADQaABahBKIAJFDQAaIABBAEEAIAAoAiQRAAAaIABBADYCMCAAIAI2AiwgAEEANgIcIABBADYCECAAKAIUGiAAQQA2AhRBAAsaIAAgACgCACAIcjYCACAHRQ0ACyADQdABaiQAIAYEQCAEKAIcIgAgACAEKAIYRmtBADoAAAsgBEGgAWokACAFQRBqJAALUwEDfwJAIAAoAgAsAABBMGtBCk8NAANAIAAoAgAiAiwAACEDIAAgAkEBajYCACABIANqQTBrIQEgAiwAAUEwa0EKTw0BIAFBCmwhAQwACwALIAELuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAkEAEQcACwubAgAgAEUEQEEADwsCfwJAIAAEfyABQf8ATQ0BAkBB9IIBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDAQLIAFBgLADT0EAIAFBgEBxQYDAA0cbRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMBAsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMBAsLQYSEAUEZNgIAQX8FQQELDAELIAAgAToAAEEBCwvjAQECfyACQQBHIQMCQAJAAkAgAEEDcUUNACACRQ0AIAFB/wFxIQQDQCAALQAAIARGDQIgAkEBayICQQBHIQMgAEEBaiIAQQNxRQ0BIAINAAsLIANFDQELAkAgAC0AACABQf8BcUYNACACQQRJDQAgAUH/AXFBgYKECGwhAwNAIAAoAgAgA3MiBEF/cyAEQYGChAhrcUGAgYKEeHENASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0AIAFB/wFxIQEDQCABIAAtAABGBEAgAA8LIABBAWohACACQQFrIgINAAsLQQALeQEBfAJAIABFDQAgACsDECAAKwMgIgIgAUQAAAAAAAAAACABRAAAAAAAAAAAZBsiAUQAAAAAAADwPyABRAAAAAAAAPA/YxsgACsDKCACoaKgIgEgACsDGKFjRQ0AIAAoAgAgASAAKAIMIAAoAgQRDgAgACABOQMYCwtIAQF8AkAgAEUNACAAKwMQIAArAyAiASAAKwMoIAGhoCIBIAArAxihY0UNACAAKAIAIAEgACgCDCAAKAIEEQ4AIAAgATkDGAsLWgICfgF/An8CQAJAIAAtAABFDQAgACkDECIBQgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADAELQQAgACgCBCIDRQ0AGiAAIAI3AxAgAyABp2otAAALC4IEAgZ/AX4gAEEAIAEbRQRAIAIEQCACQQA2AgQgAkESNgIAC0EADwsCQAJAIAApAwhQDQAgACgCECABLQAAIgQEf0Kl6wohCSABIQMDQCAJIAStQv8Bg3whCSADLQABIgQEQCADQQFqIQMgCUL/////D4NCIX4hCQwBCwsgCacFQYUqCyIEIAAoAgBwQQJ0aiIGKAIAIgNFDQADQAJAIAMoAhwgBEcNACABIAMoAgAQOA0AAkAgAykDCEJ/UQRAIAMoAhghAQJAIAUEQCAFIAE2AhgMAQsgBiABNgIACyADEAYgACAAKQMIQgF9Igk3AwggCbogACgCACIBuER7FK5H4XqEP6JjRQ0BIAFBgQJJDQECf0EAIQMgACgCACIGIAFBAXYiBUcEQCAFEDwiB0UEQCACBEAgAkEANgIEIAJBDjYCAAtBAAwCCwJAIAApAwhCACAGG1AEQCAAKAIQIQQMAQsgACgCECEEA0AgBCADQQJ0aigCACIBBEADQCABKAIYIQIgASAHIAEoAhwgBXBBAnRqIggoAgA2AhggCCABNgIAIAIiAQ0ACwsgA0EBaiIDIAZHDQALCyAEEAYgACAFNgIAIAAgBzYCEAtBAQsNAQwFCyADQn83AxALQQEPCyADIgUoAhgiAw0ACwsgAgRAIAJBADYCBCACQQk2AgALC0EAC6UGAgl/AX4jAEHwAGsiBSQAAkACQCAARQ0AAkAgAQRAIAEpAzAgAlYNAQtBACEDIABBCGoEQCAAQQA2AgwgAEESNgIICwwCCwJAIANBCHENACABKAJAIAKnQQR0aiIGKAIIRQRAIAYtAAxFDQELQQAhAyAAQQhqBEAgAEEANgIMIABBDzYCCAsMAgsgASACIANBCHIgBUE4ahCKAUF/TARAQQAhAyAAQQhqBEAgAEEANgIMIABBFDYCCAsMAgsgA0EDdkEEcSADciIGQQRxIQcgBSkDUCEOIAUvAWghCQJAIANBIHFFIAUvAWpBAEdxIgtFDQAgBA0AIAAoAhwiBA0AQQAhAyAAQQhqBEAgAEEANgIMIABBGjYCCAsMAgsgBSkDWFAEQCAAQQBCAEEAEFIhAwwCCwJAIAdFIgwgCUEAR3EiDUEBckUEQEEAIQMgBUEAOwEwIAUgDjcDICAFIA43AxggBSAFKAJgNgIoIAVC3AA3AwAgASgCACAOIAVBACABIAIgAEEIahBeIgYNAQwDC0EAIQMgASACIAYgAEEIaiIGECYiB0UNAiABKAIAIAUpA1ggBUE4aiAHLwEMQQF2QQNxIAEgAiAGEF4iBkUNAgsCfyAGIAE2AiwCQCABKAJEIghBAWoiCiABKAJIIgdJBEAgASgCTCEHDAELIAEoAkwgB0EKaiIIQQJ0EDQiB0UEQCABQQhqBEAgAUEANgIMIAFBDjYCCAtBfwwCCyABIAc2AkwgASAINgJIIAEoAkQiCEEBaiEKCyABIAo2AkQgByAIQQJ0aiAGNgIAQQALQX9MBEAgBhALDAELAkAgC0UEQCAGIQEMAQtBJkEAIAUvAWpBAUYbIgFFBEAgAEEIagRAIABBADYCDCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAQUUAKG51bGwpADogAFBLBgcAUEsGBgBQSwUGAFBLAwQAUEsBAgAAAAA/BQAAwAcAAJMIAAB4CAAAbwUAAJEFAAB6BQAAsgUAAFYIAAAbBwAA1gQAAAsHAADqBgAAnAUAAMgGAACyCAAAHggAACgHAABHBAAAoAYAAGAFAAAuBAAAPgcAAD8IAAD+BwAAjgYAAMkIAADeCAAA5gcAALIGAABVBQAAqAcAACAAQcgTCxEBAAAAAQAAAAEAAAABAAAAAQBB7BMLCQEAAAABAAAAAgBBmBQLAQEAQbgUCwEBAEHSFAukLDomOyZlJmYmYyZgJiIg2CXLJdklQiZAJmomayY8JrolxCWVITwgtgCnAKwlqCGRIZMhkiGQIR8ilCGyJbwlIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AAIjxwD8AOkA4gDkAOAA5QDnAOoA6wDoAO8A7gDsAMQAxQDJAOYAxgD0APYA8gD7APkA/wDWANwAogCjAKUApyCSAeEA7QDzAPoA8QDRAKoAugC/ABAjrAC9ALwAoQCrALsAkSWSJZMlAiUkJWElYiVWJVUlYyVRJVclXSVcJVslECUUJTQlLCUcJQAlPCVeJV8lWiVUJWklZiVgJVAlbCVnJWglZCVlJVklWCVSJVMlayVqJRglDCWIJYQljCWQJYAlsQPfAJMDwAOjA8MDtQDEA6YDmAOpA7QDHiLGA7UDKSJhIrEAZSJkIiAjISP3AEgisAAZIrcAGiJ/ILIAoCWgAAAAAACWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYFAQAAJ0HAAAsCQAAhgUAAEgFAACnBQAAAAQAADIFAAC8BQAALAkAQYDBAAv3CQwACACMAAgATAAIAMwACAAsAAgArAAIAGwACADsAAgAHAAIAJwACABcAAgA3AAIADwACAC8AAgAfAAIAPwACAACAAgAggAIAEIACADCAAgAIgAIAKIACABiAAgA4gAIABIACACSAAgAUgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==\";io(Si)||(Si=b(Si));function Ls(We){try{if(We==Si&&Ae)return new Uint8Array(Ae);var tt=ii(We);if(tt)return tt;if(T)return T(We);throw\"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)\"}catch(It){Ri(It)}}function so(We,tt){var It,nr,$;try{$=Ls(We),nr=new WebAssembly.Module($),It=new WebAssembly.Instance(nr,tt)}catch(Le){var me=Le.toString();throw te(\"failed to compile wasm module: \"+me),(me.includes(\"imported Memory\")||me.includes(\"memory import\"))&&te(\"Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time).\"),Le}return[It,nr]}function cc(){var We={a:Oa};function tt($,me){var Le=$.exports;r.asm=Le,we=r.asm.g,z(we.buffer),Z=r.asm.W,an(r.asm.h),Ns(\"wasm-instantiate\")}if(Vn(\"wasm-instantiate\"),r.instantiateWasm)try{var It=r.instantiateWasm(We,tt);return It}catch($){return te(\"Module.instantiateWasm callback failed with error: \"+$),!1}var nr=so(Si,We);return tt(nr[0]),r.asm}function cu(We){return F.getFloat32(We,!0)}function ap(We){return F.getFloat64(We,!0)}function lp(We){return F.getInt16(We,!0)}function Ms(We){return F.getInt32(We,!0)}function Dn(We,tt){F.setInt32(We,tt,!0)}function oo(We){for(;We.length>0;){var tt=We.shift();if(typeof tt==\"function\"){tt(r);continue}var It=tt.func;typeof It==\"number\"?tt.arg===void 0?Z.get(It)():Z.get(It)(tt.arg):It(tt.arg===void 0?null:tt.arg)}}function Os(We,tt){var It=new Date(Ms((We>>2)*4)*1e3);Dn((tt>>2)*4,It.getUTCSeconds()),Dn((tt+4>>2)*4,It.getUTCMinutes()),Dn((tt+8>>2)*4,It.getUTCHours()),Dn((tt+12>>2)*4,It.getUTCDate()),Dn((tt+16>>2)*4,It.getUTCMonth()),Dn((tt+20>>2)*4,It.getUTCFullYear()-1900),Dn((tt+24>>2)*4,It.getUTCDay()),Dn((tt+36>>2)*4,0),Dn((tt+32>>2)*4,0);var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((tt+28>>2)*4,$),Os.GMTString||(Os.GMTString=lt(\"GMT\")),Dn((tt+40>>2)*4,Os.GMTString),tt}function ml(We,tt){return Os(We,tt)}function yl(We,tt,It){Te.copyWithin(We,tt,tt+It)}function ao(We){try{return we.grow(We-be.byteLength+65535>>>16),z(we.buffer),1}catch{}}function Kn(We){var tt=Te.length;We=We>>>0;var It=2147483648;if(We>It)return!1;for(var nr=1;nr<=4;nr*=2){var $=tt*(1+.2/nr);$=Math.min($,We+100663296);var me=Math.min(It,Qe(Math.max(We,$),65536)),Le=ao(me);if(Le)return!0}return!1}function Mn(We){pe(We)}function Ni(We){var tt=Date.now()/1e3|0;return We&&Dn((We>>2)*4,tt),tt}function On(){if(On.called)return;On.called=!0;var We=new Date().getFullYear(),tt=new Date(We,0,1),It=new Date(We,6,1),nr=tt.getTimezoneOffset(),$=It.getTimezoneOffset(),me=Math.max(nr,$);Dn((ds()>>2)*4,me*60),Dn((gs()>>2)*4,Number(nr!=$));function Le(Zr){var qi=Zr.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return qi?qi[1]:\"GMT\"}var ft=Le(tt),pt=Le(It),Rt=lt(ft),er=lt(pt);$<nr?(Dn((wi()>>2)*4,Rt),Dn((wi()+4>>2)*4,er)):(Dn((wi()>>2)*4,er),Dn((wi()+4>>2)*4,Rt))}function _i(We){On();var tt=Date.UTC(Ms((We+20>>2)*4)+1900,Ms((We+16>>2)*4),Ms((We+12>>2)*4),Ms((We+8>>2)*4),Ms((We+4>>2)*4),Ms((We>>2)*4),0),It=new Date(tt);Dn((We+24>>2)*4,It.getUTCDay());var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((We+28>>2)*4,$),It.getTime()/1e3|0}var tr=typeof atob==\"function\"?atob:function(We){var tt=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",It=\"\",nr,$,me,Le,ft,pt,Rt,er=0;We=We.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do Le=tt.indexOf(We.charAt(er++)),ft=tt.indexOf(We.charAt(er++)),pt=tt.indexOf(We.charAt(er++)),Rt=tt.indexOf(We.charAt(er++)),nr=Le<<2|ft>>4,$=(ft&15)<<4|pt>>2,me=(pt&3)<<6|Rt,It=It+String.fromCharCode(nr),pt!==64&&(It=It+String.fromCharCode($)),Rt!==64&&(It=It+String.fromCharCode(me));while(er<We.length);return It};function Me(We){if(typeof I==\"boolean\"&&I){var tt;try{tt=Buffer.from(We,\"base64\")}catch{tt=new Buffer(We,\"base64\")}return new Uint8Array(tt.buffer,tt.byteOffset,tt.byteLength)}try{for(var It=tr(We),nr=new Uint8Array(It.length),$=0;$<It.length;++$)nr[$]=It.charCodeAt($);return nr}catch{throw new Error(\"Converting base64 string to bytes failed.\")}}function ii(We){if(!!io(We))return Me(We.slice(ps.length))}var Oa={e:ml,c:yl,d:Kn,a:Mn,b:Ni,f:_i},hr=cc(),uc=r.___wasm_call_ctors=hr.h,uu=r._zip_ext_count_symlinks=hr.i,Ac=r._zip_file_get_external_attributes=hr.j,El=r._zipstruct_statS=hr.k,vA=r._zipstruct_stat_size=hr.l,Au=r._zipstruct_stat_mtime=hr.m,Ce=r._zipstruct_stat_crc=hr.n,Tt=r._zipstruct_errorS=hr.o,fc=r._zipstruct_error_code_zip=hr.p,Hi=r._zipstruct_stat_comp_size=hr.q,fu=r._zipstruct_stat_comp_method=hr.r,Yt=r._zip_close=hr.s,Cl=r._zip_delete=hr.t,DA=r._zip_dir_add=hr.u,cp=r._zip_discard=hr.v,pc=r._zip_error_init_with_code=hr.w,PA=r._zip_get_error=hr.x,Qn=r._zip_file_get_error=hr.y,hi=r._zip_error_strerror=hr.z,hc=r._zip_fclose=hr.A,SA=r._zip_file_add=hr.B,sa=r._free=hr.C,Li=r._malloc=hr.D,_o=r._zip_source_error=hr.E,Ze=r._zip_source_seek=hr.F,lo=r._zip_file_set_external_attributes=hr.G,gc=r._zip_file_set_mtime=hr.H,pu=r._zip_fopen_index=hr.I,ji=r._zip_fread=hr.J,hu=r._zip_get_name=hr.K,xA=r._zip_get_num_entries=hr.L,Ua=r._zip_source_read=hr.M,dc=r._zip_name_locate=hr.N,hs=r._zip_open_from_source=hr.O,_t=r._zip_set_file_compression=hr.P,Fn=r._zip_source_buffer=hr.Q,Ci=r._zip_source_buffer_create=hr.R,oa=r._zip_source_close=hr.S,co=r._zip_source_free=hr.T,Us=r._zip_source_keep=hr.U,aa=r._zip_source_open=hr.V,la=r._zip_source_tell=hr.X,Ho=r._zip_stat_index=hr.Y,wi=r.__get_tzname=hr.Z,gs=r.__get_daylight=hr._,ds=r.__get_timezone=hr.$,ms=r.stackSave=hr.aa,_s=r.stackRestore=hr.ba,Un=r.stackAlloc=hr.ca;r.cwrap=ne,r.getValue=ae;var Pn;Wr=function We(){Pn||ys(),Pn||(Wr=We)};function ys(We){if(We=We||A,mr>0||(dt(),mr>0))return;function tt(){Pn||(Pn=!0,r.calledRun=!0,!Pe&&(jt(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),$t()))}r.setStatus?(r.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){r.setStatus(\"\")},1),tt()},1)):tt()}if(r.run=ys,r.preInit)for(typeof r.preInit==\"function\"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return ys(),e}}();typeof Fx==\"object\"&&typeof nU==\"object\"?nU.exports=rU:typeof define==\"function\"&&define.amd?define([],function(){return rU}):typeof Fx==\"object\"&&(Fx.createModule=rU)});var Lf,Nle,Lle,Mle=Et(()=>{Lf=[\"number\",\"number\"],Nle=(ee=>(ee[ee.ZIP_ER_OK=0]=\"ZIP_ER_OK\",ee[ee.ZIP_ER_MULTIDISK=1]=\"ZIP_ER_MULTIDISK\",ee[ee.ZIP_ER_RENAME=2]=\"ZIP_ER_RENAME\",ee[ee.ZIP_ER_CLOSE=3]=\"ZIP_ER_CLOSE\",ee[ee.ZIP_ER_SEEK=4]=\"ZIP_ER_SEEK\",ee[ee.ZIP_ER_READ=5]=\"ZIP_ER_READ\",ee[ee.ZIP_ER_WRITE=6]=\"ZIP_ER_WRITE\",ee[ee.ZIP_ER_CRC=7]=\"ZIP_ER_CRC\",ee[ee.ZIP_ER_ZIPCLOSED=8]=\"ZIP_ER_ZIPCLOSED\",ee[ee.ZIP_ER_NOENT=9]=\"ZIP_ER_NOENT\",ee[ee.ZIP_ER_EXISTS=10]=\"ZIP_ER_EXISTS\",ee[ee.ZIP_ER_OPEN=11]=\"ZIP_ER_OPEN\",ee[ee.ZIP_ER_TMPOPEN=12]=\"ZIP_ER_TMPOPEN\",ee[ee.ZIP_ER_ZLIB=13]=\"ZIP_ER_ZLIB\",ee[ee.ZIP_ER_MEMORY=14]=\"ZIP_ER_MEMORY\",ee[ee.ZIP_ER_CHANGED=15]=\"ZIP_ER_CHANGED\",ee[ee.ZIP_ER_COMPNOTSUPP=16]=\"ZIP_ER_COMPNOTSUPP\",ee[ee.ZIP_ER_EOF=17]=\"ZIP_ER_EOF\",ee[ee.ZIP_ER_INVAL=18]=\"ZIP_ER_INVAL\",ee[ee.ZIP_ER_NOZIP=19]=\"ZIP_ER_NOZIP\",ee[ee.ZIP_ER_INTERNAL=20]=\"ZIP_ER_INTERNAL\",ee[ee.ZIP_ER_INCONS=21]=\"ZIP_ER_INCONS\",ee[ee.ZIP_ER_REMOVE=22]=\"ZIP_ER_REMOVE\",ee[ee.ZIP_ER_DELETED=23]=\"ZIP_ER_DELETED\",ee[ee.ZIP_ER_ENCRNOTSUPP=24]=\"ZIP_ER_ENCRNOTSUPP\",ee[ee.ZIP_ER_RDONLY=25]=\"ZIP_ER_RDONLY\",ee[ee.ZIP_ER_NOPASSWD=26]=\"ZIP_ER_NOPASSWD\",ee[ee.ZIP_ER_WRONGPASSWD=27]=\"ZIP_ER_WRONGPASSWD\",ee[ee.ZIP_ER_OPNOTSUPP=28]=\"ZIP_ER_OPNOTSUPP\",ee[ee.ZIP_ER_INUSE=29]=\"ZIP_ER_INUSE\",ee[ee.ZIP_ER_TELL=30]=\"ZIP_ER_TELL\",ee[ee.ZIP_ER_COMPRESSED_DATA=31]=\"ZIP_ER_COMPRESSED_DATA\",ee))(Nle||{}),Lle=t=>({get HEAPU8(){return t.HEAPU8},errors:Nle,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint32S:t._malloc(4),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap(\"zip_open_from_source\",\"number\",[\"number\",\"number\",\"number\"]),close:t.cwrap(\"zip_close\",\"number\",[\"number\"]),discard:t.cwrap(\"zip_discard\",null,[\"number\"]),getError:t.cwrap(\"zip_get_error\",\"number\",[\"number\"]),getName:t.cwrap(\"zip_get_name\",\"string\",[\"number\",\"number\",\"number\"]),getNumEntries:t.cwrap(\"zip_get_num_entries\",\"number\",[\"number\",\"number\"]),delete:t.cwrap(\"zip_delete\",\"number\",[\"number\",\"number\"]),statIndex:t.cwrap(\"zip_stat_index\",\"number\",[\"number\",...Lf,\"number\",\"number\"]),fopenIndex:t.cwrap(\"zip_fopen_index\",\"number\",[\"number\",...Lf,\"number\"]),fread:t.cwrap(\"zip_fread\",\"number\",[\"number\",\"number\",\"number\",\"number\"]),fclose:t.cwrap(\"zip_fclose\",\"number\",[\"number\"]),dir:{add:t.cwrap(\"zip_dir_add\",\"number\",[\"number\",\"string\"])},file:{add:t.cwrap(\"zip_file_add\",\"number\",[\"number\",\"string\",\"number\",\"number\"]),getError:t.cwrap(\"zip_file_get_error\",\"number\",[\"number\"]),getExternalAttributes:t.cwrap(\"zip_file_get_external_attributes\",\"number\",[\"number\",...Lf,\"number\",\"number\",\"number\"]),setExternalAttributes:t.cwrap(\"zip_file_set_external_attributes\",\"number\",[\"number\",...Lf,\"number\",\"number\",\"number\"]),setMtime:t.cwrap(\"zip_file_set_mtime\",\"number\",[\"number\",...Lf,\"number\",\"number\"]),setCompression:t.cwrap(\"zip_set_file_compression\",\"number\",[\"number\",...Lf,\"number\",\"number\"])},ext:{countSymlinks:t.cwrap(\"zip_ext_count_symlinks\",\"number\",[\"number\"])},error:{initWithCode:t.cwrap(\"zip_error_init_with_code\",null,[\"number\",\"number\"]),strerror:t.cwrap(\"zip_error_strerror\",\"string\",[\"number\"])},name:{locate:t.cwrap(\"zip_name_locate\",\"number\",[\"number\",\"string\",\"number\"])},source:{fromUnattachedBuffer:t.cwrap(\"zip_source_buffer_create\",\"number\",[\"number\",...Lf,\"number\",\"number\"]),fromBuffer:t.cwrap(\"zip_source_buffer\",\"number\",[\"number\",\"number\",...Lf,\"number\"]),free:t.cwrap(\"zip_source_free\",null,[\"number\"]),keep:t.cwrap(\"zip_source_keep\",null,[\"number\"]),open:t.cwrap(\"zip_source_open\",\"number\",[\"number\"]),close:t.cwrap(\"zip_source_close\",\"number\",[\"number\"]),seek:t.cwrap(\"zip_source_seek\",\"number\",[\"number\",...Lf,\"number\"]),tell:t.cwrap(\"zip_source_tell\",\"number\",[\"number\"]),read:t.cwrap(\"zip_source_read\",\"number\",[\"number\",\"number\",\"number\"]),error:t.cwrap(\"zip_source_error\",\"number\",[\"number\"])},struct:{statS:t.cwrap(\"zipstruct_statS\",\"number\",[]),statSize:t.cwrap(\"zipstruct_stat_size\",\"number\",[\"number\"]),statCompSize:t.cwrap(\"zipstruct_stat_comp_size\",\"number\",[\"number\"]),statCompMethod:t.cwrap(\"zipstruct_stat_comp_method\",\"number\",[\"number\"]),statMtime:t.cwrap(\"zipstruct_stat_mtime\",\"number\",[\"number\"]),statCrc:t.cwrap(\"zipstruct_stat_crc\",\"number\",[\"number\"]),errorS:t.cwrap(\"zipstruct_errorS\",\"number\",[]),errorCodeZip:t.cwrap(\"zipstruct_error_code_zip\",\"number\",[\"number\"])}})});function iU(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=0&&(o=r+e.length,t[o]!==K.sep);){if(t[r-1]===K.sep)return null;r=t.indexOf(e,o)}return t.length>o&&t[o]!==K.sep?null:t.slice(0,o)}var Jl,Ole=Et(()=>{Pt();Pt();nA();Jl=class extends _p{static async openPromise(e,r){let o=new Jl(r);try{return await e(o)}finally{o.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r>\"u\"?A=>iU(A,\".zip\"):A=>{for(let p of r){let h=iU(A,p);if(h)return h}return null},n=(A,p)=>new zi(p,{baseFs:A,readOnly:o,stats:A.statSync(p)}),u=async(A,p)=>{let h={baseFs:A,readOnly:o,stats:await A.statPromise(p)};return()=>new zi(p,h)};super({...e,factorySync:n,factoryPromise:u,getMountPoint:a})}}});function pot(t){if(typeof t==\"string\"&&String(+t)===t)return+t;if(typeof t==\"number\"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(Ule.types.isDate(t))return t.getTime()/1e3;throw new Error(\"Invalid time\")}function Tx(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var ta,sU,Ule,oU,_le,Rx,zi,aU=Et(()=>{Pt();Pt();Pt();Pt();Pt();Pt();ta=Be(\"fs\"),sU=Be(\"stream\"),Ule=Be(\"util\"),oU=$e(Be(\"zlib\"));tU();_le=\"mixed\";Rx=class extends Error{constructor(r,o){super(r);this.name=\"Libzip Error\",this.code=o}},zi=class extends Ou{constructor(r,o={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;let a=o;if(this.level=typeof a.level<\"u\"?a.level:_le,r??=Tx(),typeof r==\"string\"){let{baseFs:A=new Rn}=a;this.baseFs=A,this.path=r}else this.path=null,this.baseFs=null;if(o.stats)this.stats=o.stats;else if(typeof r==\"string\")try{this.stats=this.baseFs.statSync(r)}catch(A){if(A.code===\"ENOENT\"&&a.create)this.stats=Ea.makeDefaultStats();else throw A}else this.stats=Ea.makeDefaultStats();this.libzip=S1();let n=this.libzip.malloc(4);try{let A=0;o.readOnly&&(A|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof r==\"string\"&&(r=a.create?Tx():this.baseFs.readFileSync(r));let p=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(p,A,n),this.lzSource=p}catch(h){throw this.libzip.source.free(p),h}if(this.zip===0){let h=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(h,this.libzip.getValue(n,\"i32\")),this.makeLibzipError(h)}}finally{this.libzip.free(n)}this.listings.set(Bt.root,new Set);let u=this.libzip.getNumEntries(this.zip,0);for(let A=0;A<u;++A){let p=this.libzip.getName(this.zip,A,0);if(K.isAbsolute(p))continue;let h=K.resolve(Bt.root,p);this.registerEntry(h,A),p.endsWith(\"/\")&&this.registerListing(h)}if(this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.ready=!0}makeLibzipError(r){let o=this.libzip.struct.errorCodeZip(r),a=this.libzip.error.strerror(r),n=new Rx(a,this.libzip.errors[o]);if(o===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${n.message}`);return n}getExtractHint(r){for(let o of this.entries.keys()){let a=this.pathUtils.extname(o);if(r.relevantExtensions.has(a))return!0}return!1}getAllFiles(){return Array.from(this.entries.keys())}getRealPath(){if(!this.path)throw new Error(\"ZipFS don't have real paths when loaded from a buffer\");return this.path}prepareClose(){if(!this.ready)throw ar.EBUSY(\"archive closed, close\");Og(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),Tx();try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.source.tell(this.lzSource);if(r===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let o=this.libzip.malloc(r);if(!o)throw new Error(\"Couldn't allocate enough memory\");try{let a=this.libzip.source.read(this.lzSource,o,r);if(a===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(a<r)throw new Error(\"Incomplete read\");if(a>r)throw new Error(\"Overread\");let n=this.libzip.HEAPU8.subarray(o,o+r);return Buffer.from(n)}finally{this.libzip.free(o)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error(\"ZipFS cannot be saved and must be discarded when loaded from a buffer\");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===Ea.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return K.resolve(Bt.root,r)}async openPromise(r,o,a){return this.openSync(r,o,a)}openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,o){return this.opendirSync(r,o)}opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`opendir '${r}'`);let u=[...n],A=this.openSync(a,\"r\");return SD(this,a,u,{onClose:()=>{this.closeSync(A)}})}async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>\"u\")throw ar.EBADF(\"read\");let p=u===-1||u===null?A.cursor:u,h=this.readFileSync(A.p);h.copy(o,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(u===-1||u===null)&&(A.cursor+=E),E}async writePromise(r,o,a,n,u){return typeof o==\"string\"?this.writeSync(r,o,u):this.writeSync(r,o,a,n,u)}writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>\"u\"?ar.EBADF(\"read\"):new Error(\"Unimplemented\")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>\"u\")throw ar.EBADF(\"read\");this.fds.delete(r)}createReadStream(r,{encoding:o}={}){if(r===null)throw new Error(\"Unimplemented\");let a=this.openSync(r,\"r\"),n=Object.assign(new sU.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(A,p)=>{clearImmediate(u),this.closeSync(a),p(A)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),u=setImmediate(async()=>{try{let A=await this.readFilePromise(r,o);n.bytesRead=A.length,n.end(A)}catch(A){n.destroy(A)}});return n}createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);if(r===null)throw new Error(\"Unimplemented\");let a=[],n=this.openSync(r,\"w\"),u=Object.assign(new sU.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(A,p)=>{try{A?p(A):(this.writeFileSync(r,Buffer.concat(a),o),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){u.destroy()},bytesWritten:0,path:r,pending:!1});return u.on(\"data\",A=>{let p=Buffer.from(A);u.bytesWritten+=p.length,a.push(p)}),u}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`lstat '${r}'`);return o}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw ar.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=K.resolve(Bt.root,r);return this.entries.has(a)||this.listings.has(a)}let o;try{o=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return o===void 0?!1:this.entries.has(o)||this.listings.has(o)}async accessPromise(r,o){return this.accessSync(r,o)}accessSync(r,o=ta.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`access '${r}'`);if(this.readOnly&&o&ta.constants.W_OK)throw ar.EROFS(`access '${r}'`)}async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`stat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,o)}}async fstatPromise(r,o){return this.fstatSync(r,o)}fstatSync(r,o){let a=this.fds.get(r);if(typeof a>\"u\")throw ar.EBADF(\"fstatSync\");let{p:n}=a,u=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(u)&&!this.listings.has(u))throw ar.ENOENT(`stat '${n}'`);if(n[n.length-1]===\"/\"&&!this.listings.has(u))throw ar.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,u,o)}async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`lstat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,o)}}statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<\"u\"){let u=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,u)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let p=this.stats.uid,h=this.stats.gid,E=this.libzip.struct.statSize(u)>>>0,I=512,v=Math.ceil(E/I),b=(this.libzip.struct.statMtime(u)>>>0)*1e3,C=b,T=b,L=b,U=new Date(C),J=new Date(T),te=new Date(L),le=new Date(b),pe=this.listings.has(o)?ta.constants.S_IFDIR:this.isSymbolicLink(n)?ta.constants.S_IFLNK:ta.constants.S_IFREG,Ae=pe===ta.constants.S_IFDIR?493:420,ye=pe|this.getUnixMode(n,Ae)&511,ae=this.libzip.struct.statCrc(u),we=Object.assign(new Ea.StatEntry,{uid:p,gid:h,size:E,blksize:I,blocks:v,atime:U,birthtime:J,ctime:te,mtime:le,atimeMs:C,birthtimeMs:T,ctimeMs:L,mtimeMs:b,mode:ye,crc:ae});return a.bigint===!0?Ea.convertToBigIntStats(we):we}if(this.listings.has(o)){let u=this.stats.uid,A=this.stats.gid,p=0,h=512,E=0,I=this.stats.mtimeMs,v=this.stats.mtimeMs,b=this.stats.mtimeMs,C=this.stats.mtimeMs,T=new Date(I),L=new Date(v),U=new Date(b),J=new Date(C),te=ta.constants.S_IFDIR|493,le=0,pe=Object.assign(new Ea.StatEntry,{uid:u,gid:A,size:p,blksize:h,blocks:E,atime:T,birthtime:L,ctime:U,mtime:J,atimeMs:I,birthtimeMs:v,ctimeMs:b,mtimeMs:C,mode:te,crc:le});return a.bigint===!0?Ea.convertToBigIntStats(pe):pe}throw new Error(\"Unreachable\")}getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0!==this.libzip.ZIP_OPSYS_UNIX?o:this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>16}registerListing(r){let o=this.listings.get(r);if(o)return o;this.registerListing(K.dirname(r)).add(K.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,o){this.registerListing(K.dirname(r)).add(K.basename(r)),this.entries.set(r,o)}unregisterListing(r){this.listings.delete(r),this.listings.get(K.dirname(r))?.delete(K.basename(r))}unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);this.entries.delete(r),!(typeof o>\"u\")&&(this.fileSources.delete(o),this.isSymbolicLink(o)&&this.symlinkCount--)}deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw ar.EBUSY(`archive closed, ${r}`);let u=K.resolve(Bt.root,o);if(u===\"/\")return Bt.root;let A=this.entries.get(u);if(a&&A!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(A)){let p=this.getFileSource(A).toString();return this.resolveFilename(r,K.resolve(K.dirname(u),p),!0,n)}else return u;for(;;){let p=this.resolveFilename(r,K.dirname(u),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw ar.ENOENT(r)}if(!h)throw ar.ENOTDIR(r);if(u=K.resolve(p,K.basename(u)),!a||this.symlinkCount===0)break;let I=this.libzip.name.locate(this.zip,u.slice(1),0);if(I===-1)break;if(this.isSymbolicLink(I)){let v=this.getFileSource(I).toString();u=K.resolve(K.dirname(u),v)}else break}return u}allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libzip.malloc(r.byteLength);if(!o)throw new Error(\"Couldn't allocate enough memory\");return new Uint8Array(this.libzip.HEAPU8.buffer,o,r.byteLength).set(r),{buffer:o,byteLength:r.byteLength}}allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,byteLength:n}=this.allocateBuffer(r),u=this.libzip.source.fromUnattachedBuffer(a,n,0,1,o);if(u===0)throw this.libzip.free(o),this.makeLibzipError(o);return u}allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=this.libzip.source.fromBuffer(this.zip,o,a,0,1);if(n===0)throw this.libzip.free(o),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=K.relative(Bt.root,r),u=this.allocateSource(o);try{let A=this.libzip.file.add(this.zip,n,u,this.libzip.ZIP_FL_OVERWRITE);if(A===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!==\"mixed\"){let p=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,A,0,p,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(A,a),A}catch(A){throw this.libzip.source.free(u),A}}isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>16&ta.constants.S_IFMT)===ta.constants.S_IFLNK}getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<\"u\")return a;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,r,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let A=this.libzip.struct.statCompSize(n),p=this.libzip.struct.statCompMethod(n),h=this.libzip.malloc(A);try{let E=this.libzip.fopenIndex(this.zip,r,0,this.libzip.ZIP_FL_COMPRESSED);if(E===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let I=this.libzip.fread(E,h,A,0);if(I===-1)throw this.makeLibzipError(this.libzip.file.getError(E));if(I<A)throw new Error(\"Incomplete read\");if(I>A)throw new Error(\"Overread\");let v=this.libzip.HEAPU8.subarray(h,h+A),b=Buffer.from(v);if(p===0)return this.fileSources.set(r,b),b;if(o.asyncDecompress)return new Promise((C,T)=>{oU.default.inflateRaw(b,(L,U)=>{L?T(L):(this.fileSources.set(r,U),C(U))})});{let C=oU.default.inflateRawSync(b);return this.fileSources.set(r,C),C}}finally{this.libzip.fclose(E)}}finally{this.libzip.free(h)}}async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,\"fchmod\"),o)}fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,\"fchmodSync\"),o)}async chmodPromise(r,o){return this.chmodSync(r,o)}chmodSync(r,o){if(this.readOnly)throw ar.EROFS(`chmod '${r}'`);o&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>\"u\")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let A=this.getUnixMode(n,ta.constants.S_IFREG|0)&-512|o;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,A<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,\"fchown\"),o,a)}fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,\"fchownSync\"),o,a)}async chownPromise(r,o,a){return this.chownSync(r,o,a)}chownSync(r,o,a){throw new Error(\"Unimplemented\")}async renamePromise(r,o){return this.renameSync(r,o)}renameSync(r,o){throw new Error(\"Unimplemented\")}async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=this.getFileSource(n),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}prepareCopyFile(r,o,a=0){if(this.readOnly)throw ar.EROFS(`copyfile '${r} -> '${o}'`);if((a&ta.constants.COPYFILE_FICLONE_FORCE)!==0)throw ar.ENOSYS(\"unsupported clone operation\",`copyfile '${r}' -> ${o}'`);let n=this.resolveFilename(`copyfile '${r} -> ${o}'`,r),u=this.entries.get(n);if(typeof u>\"u\")throw ar.EINVAL(`copyfile '${r}' -> '${o}'`);let A=this.resolveFilename(`copyfile '${r}' -> ${o}'`,o),p=this.entries.get(A);if((a&(ta.constants.COPYFILE_EXCL|ta.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof p<\"u\")throw ar.EEXIST(`copyfile '${r}' -> '${o}'`);return{indexSource:u,resolvedDestP:A,indexDest:p}}async appendFilePromise(r,o,a){if(this.readOnly)throw ar.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFilePromise(r,o,a)}appendFileSync(r,o,a={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFileSync(r,o,a)}fdToPath(r,o){let a=this.fds.get(r)?.p;if(typeof a>\"u\")throw ar.EBADF(o);return a}async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(o=Buffer.concat([await this.getFileSource(A,{asyncDecompress:!0}),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&await this.chmodPromise(p,u)}writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(o=Buffer.concat([this.getFileSource(A),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&this.chmodSync(p,u)}prepareWriteFile(r,o){if(typeof r==\"number\"&&(r=this.fdToPath(r,\"read\")),this.readOnly)throw ar.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw ar.EISDIR(`open '${r}'`);let n=null,u=null;typeof o==\"string\"?n=o:typeof o==\"object\"&&({encoding:n=null,mode:u=null}=o);let A=this.entries.get(a);return{encoding:n,mode:u,resolvedP:a,index:A}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw ar.EROFS(`unlink '${r}'`);let o=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(o))throw ar.EISDIR(`unlink '${r}'`);let a=this.entries.get(o);if(typeof a>\"u\")throw ar.EINVAL(`unlink '${r}'`);this.deleteEntry(o,a)}async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}utimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}lutimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,o){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error(\"Unreachable\");if(this.libzip.file.setMtime(this.zip,a,0,pot(o),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(r,o){return this.mkdirSync(r,o)}mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:o});if(this.readOnly)throw ar.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw ar.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,o)}async rmdirPromise(r,o){return this.rmdirSync(r,o)}rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw ar.EROFS(`rmdir '${r}'`);if(o){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw ar.ENOTEMPTY(`rmdir '${r}'`);let u=this.entries.get(a);if(typeof u>\"u\")throw ar.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,u)}hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,K.relative(Bt.root,r));if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(r),this.registerEntry(r,o),o}async linkPromise(r,o){return this.linkSync(r,o)}linkSync(r,o){throw ar.EOPNOTSUPP(`link '${r}' -> '${o}'`)}async symlinkPromise(r,o){return this.symlinkSync(r,o)}symlinkSync(r,o){if(this.readOnly)throw ar.EROFS(`symlink '${r}' -> '${o}'`);let a=this.resolveFilename(`symlink '${r}' -> '${o}'`,o);if(this.listings.has(a))throw ar.EISDIR(`symlink '${r}' -> '${o}'`);if(this.entries.has(a))throw ar.EEXIST(`symlink '${r}' -> '${o}'`);let n=this.setFileSource(a,r);if(this.registerEntry(a,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(ta.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(r,o){typeof o==\"object\"&&(o=o?o.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return o?a.toString(o):a}readFileSync(r,o){typeof o==\"object\"&&(o=o?o.encoding:void 0);let a=this.readFileBuffer(r);return o?a.toString(o):a}readFileBuffer(r,o={asyncDecompress:!1}){typeof r==\"number\"&&(r=this.fdToPath(r,\"read\"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`open '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw ar.EISDIR(\"read\");let n=this.entries.get(a);if(n===void 0)throw new Error(\"Unreachable\");return this.getFileSource(n,o)}async readdirPromise(r,o){return this.readdirSync(r,o)}readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`scandir '${r}'`);if(o?.recursive)if(o?.withFileTypes){let u=Array.from(n,A=>Object.assign(this.statImpl(\"lstat\",K.join(r,A)),{name:A,path:Bt.dot}));for(let A of u){if(!A.isDirectory())continue;let p=K.join(A.path,A.name),h=this.listings.get(K.join(a,p));for(let E of h)u.push(Object.assign(this.statImpl(\"lstat\",K.join(r,p,E)),{name:E,path:p}))}return u}else{let u=[...n];for(let A of u){let p=this.listings.get(K.join(a,A));if(!(typeof p>\"u\"))for(let h of p)u.push(K.join(A,h))}return u}else return o?.withFileTypes?Array.from(n,u=>Object.assign(this.statImpl(\"lstat\",K.join(r,u)),{name:u,path:void 0})):[...n]}async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this.getFileSource(o,{asyncDecompress:!0})).toString()}readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(o).toString()}prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`readlink '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(o))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(o))throw ar.EINVAL(`readlink '${r}'`);let a=this.entries.get(o);if(a===void 0)throw new Error(\"Unreachable\");if(!this.isSymbolicLink(a))throw ar.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw ar.EINVAL(`open '${r}'`);let u=await this.getFileSource(n,{asyncDecompress:!0}),A=Buffer.alloc(o,0);return u.copy(A),await this.writeFilePromise(r,A)}truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw ar.EINVAL(`open '${r}'`);let u=this.getFileSource(n),A=Buffer.alloc(o,0);return u.copy(A),this.writeFileSync(r,A)}async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,\"ftruncate\"),o)}ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,\"ftruncateSync\"),o)}watch(r,o,a){let n;switch(typeof o){case\"function\":case\"string\":case\"undefined\":n=!0;break;default:({persistent:n=!0}=o);break}if(!n)return{on:()=>{},close:()=>{}};let u=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(u)}}}watchFile(r,o,a){let n=K.resolve(Bt.root,r);return ry(this,n,o,a)}unwatchFile(r,o){let a=K.resolve(Bt.root,r);return Mg(this,a,o)}}});function jle(t,e,r=Buffer.alloc(0),o){let a=new zi(r),n=I=>I===e||I.startsWith(`${e}/`)?I.slice(0,e.length):null,u=async(I,v)=>()=>a,A=(I,v)=>a,p={...t},h=new Rn(p),E=new _p({baseFs:h,getMountPoint:n,factoryPromise:u,factorySync:A,magicByte:21,maxAge:1/0,typeCheck:o?.typeCheck});return Ww(Hle.default,new Hp(E)),a}var Hle,qle=Et(()=>{Pt();Hle=$e(Be(\"fs\"));aU()});var Gle=Et(()=>{Ole();aU();qle()});var x1={};Kt(x1,{DEFAULT_COMPRESSION_LEVEL:()=>_le,LibzipError:()=>Rx,ZipFS:()=>zi,ZipOpenFS:()=>Jl,getArchivePart:()=>iU,getLibzipPromise:()=>got,getLibzipSync:()=>hot,makeEmptyArchive:()=>Tx,mountMemoryDrive:()=>jle});function hot(){return S1()}async function got(){return S1()}var Yle,nA=Et(()=>{tU();Yle=$e(Rle());Mle();Gle();Tle(()=>{let t=(0,Yle.default)();return Lle(t)})});var FE,Wle=Et(()=>{Pt();qt();b1();FE=class extends nt{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",process.cwd(),{description:\"The directory to run the command in\"});this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(\" \")}`:this.commandName;return await TE(r,[],{cwd:ue.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};FE.usage={description:\"run a command using yarn's portable shell\",details:`\n      This command will run a command using Yarn's portable shell.\n\n      Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell.\n\n      Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell.\n\n      Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used.\n\n      For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md.\n    `,examples:[[\"Run a simple command\",\"$0 echo Hello\"],[\"Run a command with a glob pattern\",\"$0 echo '*.js'\"],[\"Run a command with a redirection\",\"$0 echo Hello World '>' hello.txt\"],[\"Run a command with an escaped glob pattern (The double escape is needed in Unix shells)\",`$0 echo '\"*.js\"'`],[\"Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)\",'$0 \"GREETING=Hello echo $GREETING World\"']]}});var al,Vle=Et(()=>{al=class extends Error{constructor(e){super(e),this.name=\"ShellError\"}}});var Mx={};Kt(Mx,{fastGlobOptions:()=>zle,isBraceExpansion:()=>lU,isGlobPattern:()=>dot,match:()=>mot,micromatchOptions:()=>Lx});function dot(t){if(!Nx.default.scan(t,Lx).isGlob)return!1;try{Nx.default.parse(t,Lx)}catch{return!1}return!0}function mot(t,{cwd:e,baseFs:r}){return(0,Kle.default)(t,{...zle,cwd:ue.fromPortablePath(e),fs:TD(Jle.default,new Hp(r))})}function lU(t){return Nx.default.scan(t,Lx).isBrace}var Kle,Jle,Nx,Lx,zle,Xle=Et(()=>{Pt();Kle=$e(RS()),Jle=$e(Be(\"fs\")),Nx=$e(Zo()),Lx={strictBrackets:!0},zle={onlyDirectories:!1,onlyFiles:!1}});function cU(){}function uU(){for(let t of bd)t.kill()}function tce(t,e,r,o){return a=>{let n=a[0]instanceof iA.Transform?\"pipe\":a[0],u=a[1]instanceof iA.Transform?\"pipe\":a[1],A=a[2]instanceof iA.Transform?\"pipe\":a[2],p=(0,$le.default)(t,e,{...o,stdio:[n,u,A]});return bd.add(p),bd.size===1&&(process.on(\"SIGINT\",cU),process.on(\"SIGTERM\",uU)),a[0]instanceof iA.Transform&&a[0].pipe(p.stdin),a[1]instanceof iA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof iA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on(\"error\",E=>{switch(bd.delete(p),bd.size===0&&(process.off(\"SIGINT\",cU),process.off(\"SIGTERM\",uU)),E.code){case\"ENOENT\":a[2].write(`command not found: ${t}\n`),h(127);break;case\"EACCES\":a[2].write(`permission denied: ${t}\n`),h(128);break;default:a[2].write(`uncaught error: ${E.message}\n`),h(1);break}}),p.on(\"close\",E=>{bd.delete(p),bd.size===0&&(process.off(\"SIGINT\",cU),process.off(\"SIGTERM\",uU)),h(E!==null?E:129)})})}}}function rce(t){return e=>{let r=e[0]===\"pipe\"?new iA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function Ox(t,e){return RE.start(t,e)}function Zle(t,e=null){let r=new iA.PassThrough,o=new ece.StringDecoder,a=\"\";return r.on(\"data\",n=>{let u=o.write(n),A;do if(A=u.indexOf(`\n`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a=\"\",t(e!==null?`${e} ${p}`:p)}while(A!==-1);a+=u}),r.on(\"end\",()=>{let n=o.end();n!==\"\"&&t(e!==null?`${e} ${n}`:n)}),r}function nce(t,{prefix:e}){return{stdout:Zle(r=>t.stdout.write(`${r}\n`),t.stdout.isTTY?e:null),stderr:Zle(r=>t.stderr.write(`${r}\n`),t.stderr.isTTY?e:null)}}var $le,iA,ece,bd,zl,AU,RE,fU=Et(()=>{$le=$e(aR()),iA=Be(\"stream\"),ece=Be(\"string_decoder\"),bd=new Set;zl=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},AU=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");return this.stream}},RE=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:o,stderr:a}){let n=new RE(null,e);return n.stdin=r,n.stdout=o,n.stderr=a,n}pipeTo(e,r=1){let o=new RE(this,e),a=new AU;return o.pipe=a,o.stdout=this.stdout,o.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),o}async exec(){let e=[\"ignore\",\"ignore\",\"ignore\"];if(this.pipe)e[0]=\"pipe\";else{if(this.stdin===null)throw new Error(\"Assertion failed: No input stream registered\");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error(\"Assertion failed: No output stream registered\");r=this.stdout,e[1]=r.get();let o;if(this.stderr===null)throw new Error(\"Assertion failed: No error stream registered\");o=this.stderr,e[2]=o.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),o.close(),n))}async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());return(await Promise.all(e))[0]}}});var T1={};Kt(T1,{EntryCommand:()=>FE,ShellError:()=>al,execute:()=>TE,globUtils:()=>Mx});function ice(t,e,r){let o=new ll.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(o,{end:!1}),(e&2)===2&&r.stdin instanceof ll.Writable&&o.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stderr,{end:!1});break;default:throw new al(`Bad file descriptor: \"${t}\"`)}return o}function _x(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function Eot(t,e,r){let o=[],a=new ll.PassThrough;return a.on(\"data\",n=>o.push(n)),await Hx(t,e,_x(r,{stdout:a})),Buffer.concat(o).toString().replace(/[\\r\\n]+$/,\"\")}async function sce(t,e,r){let o=t.map(async n=>{let u=await kd(n.args,e,r);return{name:n.name,value:u.join(\" \")}});return(await Promise.all(o)).reduce((n,u)=>(n[u.name]=u.value,n),{})}function Ux(t){return t.match(/[^ \\r\\n\\t]+/g)||[]}async function Ace(t,e,r,o,a=o){switch(t.name){case\"$\":o(String(process.pid));break;case\"#\":o(String(e.args.length));break;case\"@\":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let u=Ux(n);for(let A=0;A<u.length-1;++A)a(u[A]);o(u[u.length-1])}break;case\"*\":{let n=e.args.join(\" \");if(t.quoted)o(n);else for(let u of Ux(n))a(u)}break;case\"PPID\":o(String(process.ppid));break;case\"RANDOM\":o(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),u,A=Number.isFinite(n);if(A?n>=0&&n<e.args.length&&(u=e.args[n]):Object.hasOwn(r.variables,t.name)?u=r.variables[t.name]:Object.hasOwn(r.environment,t.name)&&(u=r.environment[t.name]),typeof u<\"u\"&&t.alternativeValue?u=(await kd(t.alternativeValue,e,r)).join(\" \"):typeof u>\"u\"&&(t.defaultValue?u=(await kd(t.defaultValue,e,r)).join(\" \"):t.alternativeValue&&(u=\"\")),typeof u>\"u\")throw A?new al(`Unbound argument #${n}`):new al(`Unbound variable \"${t.name}\"`);if(t.quoted)o(u);else{let p=Ux(u);for(let E=0;E<p.length-1;++E)a(p[E]);let h=p[p.length-1];typeof h<\"u\"&&o(h)}}break}}async function k1(t,e,r){if(t.type===\"number\"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: \"${t.value}\", only integers are allowed`)}else if(t.type===\"variable\"){let o=[];await Ace({...t,quoted:!0},e,r,n=>o.push(n));let a=Number(o.join(\" \"));return Number.isNaN(a)?k1({type:\"variable\",name:o.join(\" \")},e,r):k1({type:\"number\",value:a},e,r)}else return Cot[t.type](await k1(t.left,e,r),await k1(t.right,e,r))}async function kd(t,e,r){let o=new Map,a=[],n=[],u=E=>{n.push(E)},A=()=>{n.length>0&&a.push(n.join(\"\")),n=[]},p=E=>{u(E),A()},h=(E,I,v)=>{let b=JSON.stringify({type:E,fd:I}),C=o.get(b);typeof C>\"u\"&&o.set(b,C=[]),C.push(v)};for(let E of t){let I=!1;switch(E.type){case\"redirection\":{let v=await kd(E.args,e,r);for(let b of v)h(E.subtype,E.fd,b)}break;case\"argument\":for(let v of E.segments)switch(v.type){case\"text\":u(v.text);break;case\"glob\":u(v.pattern),I=!0;break;case\"shell\":{let b=await Eot(v.shell,e,r);if(v.quoted)u(b);else{let C=Ux(b);for(let T=0;T<C.length-1;++T)p(C[T]);u(C[C.length-1])}}break;case\"variable\":await Ace(v,e,r,u,p);break;case\"arithmetic\":u(String(await k1(v.arithmetic,e,r)));break}break}if(A(),I){let v=a.pop();if(typeof v>\"u\")throw new Error(\"Assertion failed: Expected a glob pattern to have been set\");let b=await e.glob.match(v,{cwd:r.cwd,baseFs:e.baseFs});if(b.length===0){let C=lU(v)?\". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22\":\"\";throw new al(`No matches found: \"${v}\"${C}`)}for(let C of b.sort())p(C)}}if(o.size>0){let E=[];for(let[I,v]of o.entries())E.splice(E.length,0,I,String(v.length),...v);a.splice(0,0,\"__ysh_set_redirects\",...E,\"--\")}return a}function Q1(t,e,r){e.builtins.has(t[0])||(t=[\"command\",...t]);let o=ue.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<\"u\"&&(a={...a,PWD:o});let[n,...u]=t;if(n===\"command\")return tce(u[0],u.slice(1),e,{cwd:o,env:a});let A=e.builtins.get(n);if(typeof A>\"u\")throw new Error(`Assertion failed: A builtin should exist for \"${n}\"`);return rce(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:I,stdout:v,stderr:b}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await A(u,e,r)}finally{r.stdin=I,r.stdout=v,r.stderr=b}})}function wot(t,e,r){return o=>{let a=new ll.PassThrough,n=Hx(t,e,_x(r,{stdin:a}));return{stdin:a,promise:n}}}function Iot(t,e,r){return o=>{let a=new ll.PassThrough,n=Hx(t,e,r);return{stdin:a,promise:n}}}function oce(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(o.procedures,a));return o.procedures={...o.procedures},o.procedures[a]=t,Q1([...e,\"__ysh_run_procedure\",a],r,o)}}async function ace(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{...r}:r,A;switch(o.type){case\"command\":{let p=await kd(o.args,e,r),h=await sce(o.envs,e,r);A=o.envs.length?Q1(p,e,_x(u,{environment:h})):Q1(p,e,u)}break;case\"subshell\":{let p=await kd(o.args,e,r),h=wot(o.subshell,e,u);A=oce(h,p,e,u)}break;case\"group\":{let p=await kd(o.args,e,r),h=Iot(o.group,e,u);A=oce(h,p,e,u)}break;case\"envs\":{let p=await sce(o.envs,e,r);u.environment={...u.environment,...p},A=Q1([\"true\"],e,u)}break}if(typeof A>\"u\")throw new Error(\"Assertion failed: An action should have been generated\");if(a===null)n=Ox(A,{stdin:new zl(u.stdin),stdout:new zl(u.stdout),stderr:new zl(u.stderr)});else{if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");switch(a){case\"|\":n=n.pipeTo(A,1);break;case\"|&\":n=n.pipeTo(A,3);break}}o.then?(a=o.then.type,o=o.then.chain):o=null}if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");return await n.run()}async function Bot(t,e,r,{background:o=!1}={}){function a(n){let u=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],A=u[n%u.length];return lce.default.hex(A)}if(o){let n=r.nextBackgroundJobIndex++,u=a(n),A=`[${n}]`,p=u(A),{stdout:h,stderr:E}=nce(r,{prefix:p});return r.backgroundJobs.push(ace(t,e,_x(r,{stdout:h,stderr:E})).catch(I=>E.write(`${I.message}\n`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${u(cy(t))}' has ended\n`)})),0}return await ace(t,e,r)}async function vot(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variables[\"?\"]=String(A)},u=async A=>{try{return await Bot(A.chain,e,r,{background:o&&typeof A.then>\"u\"})}catch(p){if(!(p instanceof al))throw p;return r.stderr.write(`${p.message}\n`),1}};for(n(await u(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case\"&&\":a===0&&n(await u(t.then.line));break;case\"||\":a!==0&&n(await u(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: \"${t.then.type}\"`)}t=t.then.line}return a}async function Hx(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:u}of t){if(a=await vot(n,e,r,{background:u===\"&\"}),r.exitCode!==null)return r.exitCode;r.variables[\"?\"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=o,a}function fce(t){switch(t.type){case\"variable\":return t.name===\"@\"||t.name===\"#\"||t.name===\"*\"||Number.isFinite(parseInt(t.name,10))||\"defaultValue\"in t&&!!t.defaultValue&&t.defaultValue.some(e=>F1(e))||\"alternativeValue\"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>F1(e));case\"arithmetic\":return pU(t.arithmetic);case\"shell\":return hU(t.shell);default:return!1}}function F1(t){switch(t.type){case\"redirection\":return t.args.some(e=>F1(e));case\"argument\":return t.segments.some(e=>fce(e));default:throw new Error(`Assertion failed: Unsupported argument type: \"${t.type}\"`)}}function pU(t){switch(t.type){case\"variable\":return fce(t);case\"number\":return!1;default:return pU(t.left)||pU(t.right)}}function hU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let o;switch(r.type){case\"subshell\":o=hU(r.subshell);break;case\"command\":o=r.envs.some(a=>a.args.some(n=>F1(n)))||r.args.some(a=>F1(a));break}if(o)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function TE(t,e=[],{baseFs:r=new Rn,builtins:o={},cwd:a=ue.toPortablePath(process.cwd()),env:n=process.env,stdin:u=process.stdin,stdout:A=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=Mx}={}){let I={};for(let[C,T]of Object.entries(n))typeof T<\"u\"&&(I[C]=T);let v=new Map(yot);for(let[C,T]of Object.entries(o))v.set(C,T);u===null&&(u=new ll.PassThrough,u.end());let b=LD(t,E);if(!hU(b)&&b.length>0&&e.length>0){let{command:C}=b[b.length-1];for(;C.then;)C=C.then.line;let T=C.chain;for(;T.then;)T=T.then.chain;T.type===\"command\"&&(T.args=T.args.concat(e.map(L=>({type:\"argument\",segments:[{type:\"text\",text:L}]}))))}return await Hx(b,{args:e,baseFs:r,builtins:v,initialStdin:u,initialStdout:A,initialStderr:p,glob:E},{cwd:a,environment:I,exitCode:null,procedures:{},stdin:u,stdout:A,stderr:p,variables:Object.assign({},h,{[\"?\"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var lce,cce,ll,uce,yot,Cot,b1=Et(()=>{Pt();Nl();lce=$e(vN()),cce=Be(\"os\"),ll=Be(\"stream\"),uce=Be(\"timers/promises\");Wle();Vle();Xle();fU();fU();yot=new Map([[\"cd\",async([t=(0,cce.homedir)(),...e],r,o)=>{let a=K.resolve(o.cwd,ue.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(u=>{throw u.code===\"ENOENT\"?new al(`cd: no such file or directory: ${t}`):u})).isDirectory())throw new al(`cd: not a directory: ${t}`);return o.cwd=a,0}],[\"pwd\",async(t,e,r)=>(r.stdout.write(`${ue.fromPortablePath(r.cwd)}\n`),0)],[\":\",async(t,e,r)=>0],[\"true\",async(t,e,r)=>0],[\"false\",async(t,e,r)=>1],[\"exit\",async([t,...e],r,o)=>o.exitCode=parseInt(t??o.variables[\"?\"],10)],[\"echo\",async(t,e,r)=>(r.stdout.write(`${t.join(\" \")}\n`),0)],[\"sleep\",async([t],e,r)=>{if(typeof t>\"u\")throw new al(\"sleep: missing operand\");let o=Number(t);if(Number.isNaN(o))throw new al(`sleep: invalid time interval '${t}'`);return await(0,uce.setTimeout)(1e3*o,0)}],[\"__ysh_run_procedure\",async(t,e,r)=>{let o=r.procedures[t[0]];return await Ox(o,{stdin:new zl(r.stdin),stdout:new zl(r.stdout),stderr:new zl(r.stderr)}).run()}],[\"__ysh_set_redirects\",async(t,e,r)=>{let o=r.stdin,a=r.stdout,n=r.stderr,u=[],A=[],p=[],h=0;for(;t[h]!==\"--\";){let I=t[h++],{type:v,fd:b}=JSON.parse(I),C=J=>{switch(b){case null:case 0:u.push(J);break;default:throw new Error(`Unsupported file descriptor: \"${b}\"`)}},T=J=>{switch(b){case null:case 1:A.push(J);break;case 2:p.push(J);break;default:throw new Error(`Unsupported file descriptor: \"${b}\"`)}},L=Number(t[h++]),U=h+L;for(let J=h;J<U;++h,++J)switch(v){case\"<\":C(()=>e.baseFs.createReadStream(K.resolve(r.cwd,ue.toPortablePath(t[J]))));break;case\"<<<\":C(()=>{let te=new ll.PassThrough;return process.nextTick(()=>{te.write(`${t[J]}\n`),te.end()}),te});break;case\"<&\":C(()=>ice(Number(t[J]),1,r));break;case\">\":case\">>\":{let te=K.resolve(r.cwd,ue.toPortablePath(t[J]));T(te===\"/dev/null\"?new ll.Writable({autoDestroy:!0,emitClose:!0,write(le,pe,Ae){setImmediate(Ae)}}):e.baseFs.createWriteStream(te,v===\">>\"?{flags:\"a\"}:void 0))}break;case\">&\":T(ice(Number(t[J]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: \"${v}\"`)}}if(u.length>0){let I=new ll.PassThrough;o=I;let v=b=>{if(b===u.length)I.end();else{let C=u[b]();C.pipe(I,{end:!1}),C.on(\"end\",()=>{v(b+1)})}};v(0)}if(A.length>0){let I=new ll.PassThrough;a=I;for(let v of A)I.pipe(v)}if(p.length>0){let I=new ll.PassThrough;n=I;for(let v of p)I.pipe(v)}let E=await Ox(Q1(t.slice(h+1),e,r),{stdin:new zl(o),stdout:new zl(a),stderr:new zl(n)}).run();return await Promise.all(A.map(I=>new Promise((v,b)=>{I.on(\"error\",C=>{b(C)}),I.on(\"close\",()=>{v()}),I.end()}))),await Promise.all(p.map(I=>new Promise((v,b)=>{I.on(\"error\",C=>{b(C)}),I.on(\"close\",()=>{v()}),I.end()}))),E}]]);Cot={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var jx=_((n4t,pce)=>{function Dot(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}pce.exports=Dot});var Ece=_((i4t,yce)=>{var hce=fd(),Pot=jx(),Sot=Hl(),xot=fE(),bot=1/0,gce=hce?hce.prototype:void 0,dce=gce?gce.toString:void 0;function mce(t){if(typeof t==\"string\")return t;if(Sot(t))return Pot(t,mce)+\"\";if(xot(t))return dce?dce.call(t):\"\";var e=t+\"\";return e==\"0\"&&1/t==-bot?\"-0\":e}yce.exports=mce});var R1=_((s4t,Cce)=>{var kot=Ece();function Qot(t){return t==null?\"\":kot(t)}Cce.exports=Qot});var gU=_((o4t,wce)=>{function Fot(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o<a;)n[o]=t[o+e];return n}wce.exports=Fot});var Bce=_((a4t,Ice)=>{var Tot=gU();function Rot(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:Tot(t,e,r)}Ice.exports=Rot});var dU=_((l4t,vce)=>{var Not=\"\\\\ud800-\\\\udfff\",Lot=\"\\\\u0300-\\\\u036f\",Mot=\"\\\\ufe20-\\\\ufe2f\",Oot=\"\\\\u20d0-\\\\u20ff\",Uot=Lot+Mot+Oot,_ot=\"\\\\ufe0e\\\\ufe0f\",Hot=\"\\\\u200d\",jot=RegExp(\"[\"+Hot+Not+Uot+_ot+\"]\");function qot(t){return jot.test(t)}vce.exports=qot});var Pce=_((c4t,Dce)=>{function Got(t){return t.split(\"\")}Dce.exports=Got});var Rce=_((u4t,Tce)=>{var Sce=\"\\\\ud800-\\\\udfff\",Yot=\"\\\\u0300-\\\\u036f\",Wot=\"\\\\ufe20-\\\\ufe2f\",Vot=\"\\\\u20d0-\\\\u20ff\",Kot=Yot+Wot+Vot,Jot=\"\\\\ufe0e\\\\ufe0f\",zot=\"[\"+Sce+\"]\",mU=\"[\"+Kot+\"]\",yU=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",Xot=\"(?:\"+mU+\"|\"+yU+\")\",xce=\"[^\"+Sce+\"]\",bce=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",kce=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",Zot=\"\\\\u200d\",Qce=Xot+\"?\",Fce=\"[\"+Jot+\"]?\",$ot=\"(?:\"+Zot+\"(?:\"+[xce,bce,kce].join(\"|\")+\")\"+Fce+Qce+\")*\",eat=Fce+Qce+$ot,tat=\"(?:\"+[xce+mU+\"?\",mU,bce,kce,zot].join(\"|\")+\")\",rat=RegExp(yU+\"(?=\"+yU+\")|\"+tat+eat,\"g\");function nat(t){return t.match(rat)||[]}Tce.exports=nat});var Lce=_((A4t,Nce)=>{var iat=Pce(),sat=dU(),oat=Rce();function aat(t){return sat(t)?oat(t):iat(t)}Nce.exports=aat});var Oce=_((f4t,Mce)=>{var lat=Bce(),cat=dU(),uat=Lce(),Aat=R1();function fat(t){return function(e){e=Aat(e);var r=cat(e)?uat(e):void 0,o=r?r[0]:e.charAt(0),a=r?lat(r,1).join(\"\"):e.slice(1);return o[t]()+a}}Mce.exports=fat});var _ce=_((p4t,Uce)=>{var pat=Oce(),hat=pat(\"toUpperCase\");Uce.exports=hat});var EU=_((h4t,Hce)=>{var gat=R1(),dat=_ce();function mat(t){return dat(gat(t).toLowerCase())}Hce.exports=mat});var jce=_((g4t,qx)=>{function yat(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,E=10,I=11,v=12,b=13,C=14,T=15,L=16,U=17,J=0,te=1,le=2,pe=3,Ae=4;function ye(g,Ee){return 55296<=g.charCodeAt(Ee)&&g.charCodeAt(Ee)<=56319&&56320<=g.charCodeAt(Ee+1)&&g.charCodeAt(Ee+1)<=57343}function ae(g,Ee){Ee===void 0&&(Ee=0);var De=g.charCodeAt(Ee);if(55296<=De&&De<=56319&&Ee<g.length-1){var ce=De,ne=g.charCodeAt(Ee+1);return 56320<=ne&&ne<=57343?(ce-55296)*1024+(ne-56320)+65536:ce}if(56320<=De&&De<=57343&&Ee>=1){var ce=g.charCodeAt(Ee-1),ne=De;return 55296<=ce&&ce<=56319?(ce-55296)*1024+(ne-56320)+65536:ne}return De}function we(g,Ee,De){var ce=[g].concat(Ee).concat([De]),ne=ce[ce.length-2],ee=De,Ie=ce.lastIndexOf(C);if(Ie>1&&ce.slice(1,Ie).every(function(H){return H==o})&&[o,b,U].indexOf(g)==-1)return le;var ke=ce.lastIndexOf(a);if(ke>0&&ce.slice(1,ke).every(function(H){return H==a})&&[v,a].indexOf(ne)==-1)return ce.filter(function(H){return H==a}).length%2==1?pe:Ae;if(ne==t&&ee==e)return J;if(ne==r||ne==t||ne==e)return ee==C&&Ee.every(function(H){return H==o})?le:te;if(ee==r||ee==t||ee==e)return te;if(ne==u&&(ee==u||ee==A||ee==h||ee==E))return J;if((ne==h||ne==A)&&(ee==A||ee==p))return J;if((ne==E||ne==p)&&ee==p)return J;if(ee==o||ee==T)return J;if(ee==n)return J;if(ne==v)return J;var ht=ce.indexOf(o)!=-1?ce.lastIndexOf(o)-1:ce.length-2;return[b,U].indexOf(ce[ht])!=-1&&ce.slice(ht+1,-1).every(function(H){return H==o})&&ee==C||ne==T&&[L,U].indexOf(ee)!=-1?J:Ee.indexOf(a)!=-1?le:ne==a&&ee==a?J:te}this.nextBreak=function(g,Ee){if(Ee===void 0&&(Ee=0),Ee<0)return 0;if(Ee>=g.length-1)return g.length;for(var De=Pe(ae(g,Ee)),ce=[],ne=Ee+1;ne<g.length;ne++)if(!ye(g,ne-1)){var ee=Pe(ae(g,ne));if(we(De,ce,ee))return ne;ce.push(ee)}return g.length},this.splitGraphemes=function(g){for(var Ee=[],De=0,ce;(ce=this.nextBreak(g,De))<g.length;)Ee.push(g.slice(De,ce)),De=ce;return De<g.length&&Ee.push(g.slice(De)),Ee},this.iterateGraphemes=function(g){var Ee=0,De={next:function(){var ce,ne;return(ne=this.nextBreak(g,Ee))<g.length?(ce=g.slice(Ee,ne),Ee=ne,{value:ce,done:!1}):Ee<g.length?(ce=g.slice(Ee),Ee=g.length,{value:ce,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<\"u\"&&Symbol.iterator&&(De[Symbol.iterator]=function(){return De}),De},this.countGraphemes=function(g){for(var Ee=0,De=0,ce;(ce=this.nextBreak(g,De))<g.length;)De=ce,Ee++;return De<g.length&&Ee++,Ee};function Pe(g){return 1536<=g&&g<=1541||g==1757||g==1807||g==2274||g==3406||g==69821||70082<=g&&g<=70083||g==72250||72326<=g&&g<=72329||g==73030?v:g==13?t:g==10?e:0<=g&&g<=9||11<=g&&g<=12||14<=g&&g<=31||127<=g&&g<=159||g==173||g==1564||g==6158||g==8203||8206<=g&&g<=8207||g==8232||g==8233||8234<=g&&g<=8238||8288<=g&&g<=8292||g==8293||8294<=g&&g<=8303||55296<=g&&g<=57343||g==65279||65520<=g&&g<=65528||65529<=g&&g<=65531||113824<=g&&g<=113827||119155<=g&&g<=119162||g==917504||g==917505||917506<=g&&g<=917535||917632<=g&&g<=917759||918e3<=g&&g<=921599?r:768<=g&&g<=879||1155<=g&&g<=1159||1160<=g&&g<=1161||1425<=g&&g<=1469||g==1471||1473<=g&&g<=1474||1476<=g&&g<=1477||g==1479||1552<=g&&g<=1562||1611<=g&&g<=1631||g==1648||1750<=g&&g<=1756||1759<=g&&g<=1764||1767<=g&&g<=1768||1770<=g&&g<=1773||g==1809||1840<=g&&g<=1866||1958<=g&&g<=1968||2027<=g&&g<=2035||2070<=g&&g<=2073||2075<=g&&g<=2083||2085<=g&&g<=2087||2089<=g&&g<=2093||2137<=g&&g<=2139||2260<=g&&g<=2273||2275<=g&&g<=2306||g==2362||g==2364||2369<=g&&g<=2376||g==2381||2385<=g&&g<=2391||2402<=g&&g<=2403||g==2433||g==2492||g==2494||2497<=g&&g<=2500||g==2509||g==2519||2530<=g&&g<=2531||2561<=g&&g<=2562||g==2620||2625<=g&&g<=2626||2631<=g&&g<=2632||2635<=g&&g<=2637||g==2641||2672<=g&&g<=2673||g==2677||2689<=g&&g<=2690||g==2748||2753<=g&&g<=2757||2759<=g&&g<=2760||g==2765||2786<=g&&g<=2787||2810<=g&&g<=2815||g==2817||g==2876||g==2878||g==2879||2881<=g&&g<=2884||g==2893||g==2902||g==2903||2914<=g&&g<=2915||g==2946||g==3006||g==3008||g==3021||g==3031||g==3072||3134<=g&&g<=3136||3142<=g&&g<=3144||3146<=g&&g<=3149||3157<=g&&g<=3158||3170<=g&&g<=3171||g==3201||g==3260||g==3263||g==3266||g==3270||3276<=g&&g<=3277||3285<=g&&g<=3286||3298<=g&&g<=3299||3328<=g&&g<=3329||3387<=g&&g<=3388||g==3390||3393<=g&&g<=3396||g==3405||g==3415||3426<=g&&g<=3427||g==3530||g==3535||3538<=g&&g<=3540||g==3542||g==3551||g==3633||3636<=g&&g<=3642||3655<=g&&g<=3662||g==3761||3764<=g&&g<=3769||3771<=g&&g<=3772||3784<=g&&g<=3789||3864<=g&&g<=3865||g==3893||g==3895||g==3897||3953<=g&&g<=3966||3968<=g&&g<=3972||3974<=g&&g<=3975||3981<=g&&g<=3991||3993<=g&&g<=4028||g==4038||4141<=g&&g<=4144||4146<=g&&g<=4151||4153<=g&&g<=4154||4157<=g&&g<=4158||4184<=g&&g<=4185||4190<=g&&g<=4192||4209<=g&&g<=4212||g==4226||4229<=g&&g<=4230||g==4237||g==4253||4957<=g&&g<=4959||5906<=g&&g<=5908||5938<=g&&g<=5940||5970<=g&&g<=5971||6002<=g&&g<=6003||6068<=g&&g<=6069||6071<=g&&g<=6077||g==6086||6089<=g&&g<=6099||g==6109||6155<=g&&g<=6157||6277<=g&&g<=6278||g==6313||6432<=g&&g<=6434||6439<=g&&g<=6440||g==6450||6457<=g&&g<=6459||6679<=g&&g<=6680||g==6683||g==6742||6744<=g&&g<=6750||g==6752||g==6754||6757<=g&&g<=6764||6771<=g&&g<=6780||g==6783||6832<=g&&g<=6845||g==6846||6912<=g&&g<=6915||g==6964||6966<=g&&g<=6970||g==6972||g==6978||7019<=g&&g<=7027||7040<=g&&g<=7041||7074<=g&&g<=7077||7080<=g&&g<=7081||7083<=g&&g<=7085||g==7142||7144<=g&&g<=7145||g==7149||7151<=g&&g<=7153||7212<=g&&g<=7219||7222<=g&&g<=7223||7376<=g&&g<=7378||7380<=g&&g<=7392||7394<=g&&g<=7400||g==7405||g==7412||7416<=g&&g<=7417||7616<=g&&g<=7673||7675<=g&&g<=7679||g==8204||8400<=g&&g<=8412||8413<=g&&g<=8416||g==8417||8418<=g&&g<=8420||8421<=g&&g<=8432||11503<=g&&g<=11505||g==11647||11744<=g&&g<=11775||12330<=g&&g<=12333||12334<=g&&g<=12335||12441<=g&&g<=12442||g==42607||42608<=g&&g<=42610||42612<=g&&g<=42621||42654<=g&&g<=42655||42736<=g&&g<=42737||g==43010||g==43014||g==43019||43045<=g&&g<=43046||43204<=g&&g<=43205||43232<=g&&g<=43249||43302<=g&&g<=43309||43335<=g&&g<=43345||43392<=g&&g<=43394||g==43443||43446<=g&&g<=43449||g==43452||g==43493||43561<=g&&g<=43566||43569<=g&&g<=43570||43573<=g&&g<=43574||g==43587||g==43596||g==43644||g==43696||43698<=g&&g<=43700||43703<=g&&g<=43704||43710<=g&&g<=43711||g==43713||43756<=g&&g<=43757||g==43766||g==44005||g==44008||g==44013||g==64286||65024<=g&&g<=65039||65056<=g&&g<=65071||65438<=g&&g<=65439||g==66045||g==66272||66422<=g&&g<=66426||68097<=g&&g<=68099||68101<=g&&g<=68102||68108<=g&&g<=68111||68152<=g&&g<=68154||g==68159||68325<=g&&g<=68326||g==69633||69688<=g&&g<=69702||69759<=g&&g<=69761||69811<=g&&g<=69814||69817<=g&&g<=69818||69888<=g&&g<=69890||69927<=g&&g<=69931||69933<=g&&g<=69940||g==70003||70016<=g&&g<=70017||70070<=g&&g<=70078||70090<=g&&g<=70092||70191<=g&&g<=70193||g==70196||70198<=g&&g<=70199||g==70206||g==70367||70371<=g&&g<=70378||70400<=g&&g<=70401||g==70460||g==70462||g==70464||g==70487||70502<=g&&g<=70508||70512<=g&&g<=70516||70712<=g&&g<=70719||70722<=g&&g<=70724||g==70726||g==70832||70835<=g&&g<=70840||g==70842||g==70845||70847<=g&&g<=70848||70850<=g&&g<=70851||g==71087||71090<=g&&g<=71093||71100<=g&&g<=71101||71103<=g&&g<=71104||71132<=g&&g<=71133||71219<=g&&g<=71226||g==71229||71231<=g&&g<=71232||g==71339||g==71341||71344<=g&&g<=71349||g==71351||71453<=g&&g<=71455||71458<=g&&g<=71461||71463<=g&&g<=71467||72193<=g&&g<=72198||72201<=g&&g<=72202||72243<=g&&g<=72248||72251<=g&&g<=72254||g==72263||72273<=g&&g<=72278||72281<=g&&g<=72283||72330<=g&&g<=72342||72344<=g&&g<=72345||72752<=g&&g<=72758||72760<=g&&g<=72765||g==72767||72850<=g&&g<=72871||72874<=g&&g<=72880||72882<=g&&g<=72883||72885<=g&&g<=72886||73009<=g&&g<=73014||g==73018||73020<=g&&g<=73021||73023<=g&&g<=73029||g==73031||92912<=g&&g<=92916||92976<=g&&g<=92982||94095<=g&&g<=94098||113821<=g&&g<=113822||g==119141||119143<=g&&g<=119145||119150<=g&&g<=119154||119163<=g&&g<=119170||119173<=g&&g<=119179||119210<=g&&g<=119213||119362<=g&&g<=119364||121344<=g&&g<=121398||121403<=g&&g<=121452||g==121461||g==121476||121499<=g&&g<=121503||121505<=g&&g<=121519||122880<=g&&g<=122886||122888<=g&&g<=122904||122907<=g&&g<=122913||122915<=g&&g<=122916||122918<=g&&g<=122922||125136<=g&&g<=125142||125252<=g&&g<=125258||917536<=g&&g<=917631||917760<=g&&g<=917999?o:127462<=g&&g<=127487?a:g==2307||g==2363||2366<=g&&g<=2368||2377<=g&&g<=2380||2382<=g&&g<=2383||2434<=g&&g<=2435||2495<=g&&g<=2496||2503<=g&&g<=2504||2507<=g&&g<=2508||g==2563||2622<=g&&g<=2624||g==2691||2750<=g&&g<=2752||g==2761||2763<=g&&g<=2764||2818<=g&&g<=2819||g==2880||2887<=g&&g<=2888||2891<=g&&g<=2892||g==3007||3009<=g&&g<=3010||3014<=g&&g<=3016||3018<=g&&g<=3020||3073<=g&&g<=3075||3137<=g&&g<=3140||3202<=g&&g<=3203||g==3262||3264<=g&&g<=3265||3267<=g&&g<=3268||3271<=g&&g<=3272||3274<=g&&g<=3275||3330<=g&&g<=3331||3391<=g&&g<=3392||3398<=g&&g<=3400||3402<=g&&g<=3404||3458<=g&&g<=3459||3536<=g&&g<=3537||3544<=g&&g<=3550||3570<=g&&g<=3571||g==3635||g==3763||3902<=g&&g<=3903||g==3967||g==4145||4155<=g&&g<=4156||4182<=g&&g<=4183||g==4228||g==6070||6078<=g&&g<=6085||6087<=g&&g<=6088||6435<=g&&g<=6438||6441<=g&&g<=6443||6448<=g&&g<=6449||6451<=g&&g<=6456||6681<=g&&g<=6682||g==6741||g==6743||6765<=g&&g<=6770||g==6916||g==6965||g==6971||6973<=g&&g<=6977||6979<=g&&g<=6980||g==7042||g==7073||7078<=g&&g<=7079||g==7082||g==7143||7146<=g&&g<=7148||g==7150||7154<=g&&g<=7155||7204<=g&&g<=7211||7220<=g&&g<=7221||g==7393||7410<=g&&g<=7411||g==7415||43043<=g&&g<=43044||g==43047||43136<=g&&g<=43137||43188<=g&&g<=43203||43346<=g&&g<=43347||g==43395||43444<=g&&g<=43445||43450<=g&&g<=43451||43453<=g&&g<=43456||43567<=g&&g<=43568||43571<=g&&g<=43572||g==43597||g==43755||43758<=g&&g<=43759||g==43765||44003<=g&&g<=44004||44006<=g&&g<=44007||44009<=g&&g<=44010||g==44012||g==69632||g==69634||g==69762||69808<=g&&g<=69810||69815<=g&&g<=69816||g==69932||g==70018||70067<=g&&g<=70069||70079<=g&&g<=70080||70188<=g&&g<=70190||70194<=g&&g<=70195||g==70197||70368<=g&&g<=70370||70402<=g&&g<=70403||g==70463||70465<=g&&g<=70468||70471<=g&&g<=70472||70475<=g&&g<=70477||70498<=g&&g<=70499||70709<=g&&g<=70711||70720<=g&&g<=70721||g==70725||70833<=g&&g<=70834||g==70841||70843<=g&&g<=70844||g==70846||g==70849||71088<=g&&g<=71089||71096<=g&&g<=71099||g==71102||71216<=g&&g<=71218||71227<=g&&g<=71228||g==71230||g==71340||71342<=g&&g<=71343||g==71350||71456<=g&&g<=71457||g==71462||72199<=g&&g<=72200||g==72249||72279<=g&&g<=72280||g==72343||g==72751||g==72766||g==72873||g==72881||g==72884||94033<=g&&g<=94078||g==119142||g==119149?n:4352<=g&&g<=4447||43360<=g&&g<=43388?u:4448<=g&&g<=4519||55216<=g&&g<=55238?A:4520<=g&&g<=4607||55243<=g&&g<=55291?p:g==44032||g==44060||g==44088||g==44116||g==44144||g==44172||g==44200||g==44228||g==44256||g==44284||g==44312||g==44340||g==44368||g==44396||g==44424||g==44452||g==44480||g==44508||g==44536||g==44564||g==44592||g==44620||g==44648||g==44676||g==44704||g==44732||g==44760||g==44788||g==44816||g==44844||g==44872||g==44900||g==44928||g==44956||g==44984||g==45012||g==45040||g==45068||g==45096||g==45124||g==45152||g==45180||g==45208||g==45236||g==45264||g==45292||g==45320||g==45348||g==45376||g==45404||g==45432||g==45460||g==45488||g==45516||g==45544||g==45572||g==45600||g==45628||g==45656||g==45684||g==45712||g==45740||g==45768||g==45796||g==45824||g==45852||g==45880||g==45908||g==45936||g==45964||g==45992||g==46020||g==46048||g==46076||g==46104||g==46132||g==46160||g==46188||g==46216||g==46244||g==46272||g==46300||g==46328||g==46356||g==46384||g==46412||g==46440||g==46468||g==46496||g==46524||g==46552||g==46580||g==46608||g==46636||g==46664||g==46692||g==46720||g==46748||g==46776||g==46804||g==46832||g==46860||g==46888||g==46916||g==46944||g==46972||g==47e3||g==47028||g==47056||g==47084||g==47112||g==47140||g==47168||g==47196||g==47224||g==47252||g==47280||g==47308||g==47336||g==47364||g==47392||g==47420||g==47448||g==47476||g==47504||g==47532||g==47560||g==47588||g==47616||g==47644||g==47672||g==47700||g==47728||g==47756||g==47784||g==47812||g==47840||g==47868||g==47896||g==47924||g==47952||g==47980||g==48008||g==48036||g==48064||g==48092||g==48120||g==48148||g==48176||g==48204||g==48232||g==48260||g==48288||g==48316||g==48344||g==48372||g==48400||g==48428||g==48456||g==48484||g==48512||g==48540||g==48568||g==48596||g==48624||g==48652||g==48680||g==48708||g==48736||g==48764||g==48792||g==48820||g==48848||g==48876||g==48904||g==48932||g==48960||g==48988||g==49016||g==49044||g==49072||g==49100||g==49128||g==49156||g==49184||g==49212||g==49240||g==49268||g==49296||g==49324||g==49352||g==49380||g==49408||g==49436||g==49464||g==49492||g==49520||g==49548||g==49576||g==49604||g==49632||g==49660||g==49688||g==49716||g==49744||g==49772||g==49800||g==49828||g==49856||g==49884||g==49912||g==49940||g==49968||g==49996||g==50024||g==50052||g==50080||g==50108||g==50136||g==50164||g==50192||g==50220||g==50248||g==50276||g==50304||g==50332||g==50360||g==50388||g==50416||g==50444||g==50472||g==50500||g==50528||g==50556||g==50584||g==50612||g==50640||g==50668||g==50696||g==50724||g==50752||g==50780||g==50808||g==50836||g==50864||g==50892||g==50920||g==50948||g==50976||g==51004||g==51032||g==51060||g==51088||g==51116||g==51144||g==51172||g==51200||g==51228||g==51256||g==51284||g==51312||g==51340||g==51368||g==51396||g==51424||g==51452||g==51480||g==51508||g==51536||g==51564||g==51592||g==51620||g==51648||g==51676||g==51704||g==51732||g==51760||g==51788||g==51816||g==51844||g==51872||g==51900||g==51928||g==51956||g==51984||g==52012||g==52040||g==52068||g==52096||g==52124||g==52152||g==52180||g==52208||g==52236||g==52264||g==52292||g==52320||g==52348||g==52376||g==52404||g==52432||g==52460||g==52488||g==52516||g==52544||g==52572||g==52600||g==52628||g==52656||g==52684||g==52712||g==52740||g==52768||g==52796||g==52824||g==52852||g==52880||g==52908||g==52936||g==52964||g==52992||g==53020||g==53048||g==53076||g==53104||g==53132||g==53160||g==53188||g==53216||g==53244||g==53272||g==53300||g==53328||g==53356||g==53384||g==53412||g==53440||g==53468||g==53496||g==53524||g==53552||g==53580||g==53608||g==53636||g==53664||g==53692||g==53720||g==53748||g==53776||g==53804||g==53832||g==53860||g==53888||g==53916||g==53944||g==53972||g==54e3||g==54028||g==54056||g==54084||g==54112||g==54140||g==54168||g==54196||g==54224||g==54252||g==54280||g==54308||g==54336||g==54364||g==54392||g==54420||g==54448||g==54476||g==54504||g==54532||g==54560||g==54588||g==54616||g==54644||g==54672||g==54700||g==54728||g==54756||g==54784||g==54812||g==54840||g==54868||g==54896||g==54924||g==54952||g==54980||g==55008||g==55036||g==55064||g==55092||g==55120||g==55148||g==55176?h:44033<=g&&g<=44059||44061<=g&&g<=44087||44089<=g&&g<=44115||44117<=g&&g<=44143||44145<=g&&g<=44171||44173<=g&&g<=44199||44201<=g&&g<=44227||44229<=g&&g<=44255||44257<=g&&g<=44283||44285<=g&&g<=44311||44313<=g&&g<=44339||44341<=g&&g<=44367||44369<=g&&g<=44395||44397<=g&&g<=44423||44425<=g&&g<=44451||44453<=g&&g<=44479||44481<=g&&g<=44507||44509<=g&&g<=44535||44537<=g&&g<=44563||44565<=g&&g<=44591||44593<=g&&g<=44619||44621<=g&&g<=44647||44649<=g&&g<=44675||44677<=g&&g<=44703||44705<=g&&g<=44731||44733<=g&&g<=44759||44761<=g&&g<=44787||44789<=g&&g<=44815||44817<=g&&g<=44843||44845<=g&&g<=44871||44873<=g&&g<=44899||44901<=g&&g<=44927||44929<=g&&g<=44955||44957<=g&&g<=44983||44985<=g&&g<=45011||45013<=g&&g<=45039||45041<=g&&g<=45067||45069<=g&&g<=45095||45097<=g&&g<=45123||45125<=g&&g<=45151||45153<=g&&g<=45179||45181<=g&&g<=45207||45209<=g&&g<=45235||45237<=g&&g<=45263||45265<=g&&g<=45291||45293<=g&&g<=45319||45321<=g&&g<=45347||45349<=g&&g<=45375||45377<=g&&g<=45403||45405<=g&&g<=45431||45433<=g&&g<=45459||45461<=g&&g<=45487||45489<=g&&g<=45515||45517<=g&&g<=45543||45545<=g&&g<=45571||45573<=g&&g<=45599||45601<=g&&g<=45627||45629<=g&&g<=45655||45657<=g&&g<=45683||45685<=g&&g<=45711||45713<=g&&g<=45739||45741<=g&&g<=45767||45769<=g&&g<=45795||45797<=g&&g<=45823||45825<=g&&g<=45851||45853<=g&&g<=45879||45881<=g&&g<=45907||45909<=g&&g<=45935||45937<=g&&g<=45963||45965<=g&&g<=45991||45993<=g&&g<=46019||46021<=g&&g<=46047||46049<=g&&g<=46075||46077<=g&&g<=46103||46105<=g&&g<=46131||46133<=g&&g<=46159||46161<=g&&g<=46187||46189<=g&&g<=46215||46217<=g&&g<=46243||46245<=g&&g<=46271||46273<=g&&g<=46299||46301<=g&&g<=46327||46329<=g&&g<=46355||46357<=g&&g<=46383||46385<=g&&g<=46411||46413<=g&&g<=46439||46441<=g&&g<=46467||46469<=g&&g<=46495||46497<=g&&g<=46523||46525<=g&&g<=46551||46553<=g&&g<=46579||46581<=g&&g<=46607||46609<=g&&g<=46635||46637<=g&&g<=46663||46665<=g&&g<=46691||46693<=g&&g<=46719||46721<=g&&g<=46747||46749<=g&&g<=46775||46777<=g&&g<=46803||46805<=g&&g<=46831||46833<=g&&g<=46859||46861<=g&&g<=46887||46889<=g&&g<=46915||46917<=g&&g<=46943||46945<=g&&g<=46971||46973<=g&&g<=46999||47001<=g&&g<=47027||47029<=g&&g<=47055||47057<=g&&g<=47083||47085<=g&&g<=47111||47113<=g&&g<=47139||47141<=g&&g<=47167||47169<=g&&g<=47195||47197<=g&&g<=47223||47225<=g&&g<=47251||47253<=g&&g<=47279||47281<=g&&g<=47307||47309<=g&&g<=47335||47337<=g&&g<=47363||47365<=g&&g<=47391||47393<=g&&g<=47419||47421<=g&&g<=47447||47449<=g&&g<=47475||47477<=g&&g<=47503||47505<=g&&g<=47531||47533<=g&&g<=47559||47561<=g&&g<=47587||47589<=g&&g<=47615||47617<=g&&g<=47643||47645<=g&&g<=47671||47673<=g&&g<=47699||47701<=g&&g<=47727||47729<=g&&g<=47755||47757<=g&&g<=47783||47785<=g&&g<=47811||47813<=g&&g<=47839||47841<=g&&g<=47867||47869<=g&&g<=47895||47897<=g&&g<=47923||47925<=g&&g<=47951||47953<=g&&g<=47979||47981<=g&&g<=48007||48009<=g&&g<=48035||48037<=g&&g<=48063||48065<=g&&g<=48091||48093<=g&&g<=48119||48121<=g&&g<=48147||48149<=g&&g<=48175||48177<=g&&g<=48203||48205<=g&&g<=48231||48233<=g&&g<=48259||48261<=g&&g<=48287||48289<=g&&g<=48315||48317<=g&&g<=48343||48345<=g&&g<=48371||48373<=g&&g<=48399||48401<=g&&g<=48427||48429<=g&&g<=48455||48457<=g&&g<=48483||48485<=g&&g<=48511||48513<=g&&g<=48539||48541<=g&&g<=48567||48569<=g&&g<=48595||48597<=g&&g<=48623||48625<=g&&g<=48651||48653<=g&&g<=48679||48681<=g&&g<=48707||48709<=g&&g<=48735||48737<=g&&g<=48763||48765<=g&&g<=48791||48793<=g&&g<=48819||48821<=g&&g<=48847||48849<=g&&g<=48875||48877<=g&&g<=48903||48905<=g&&g<=48931||48933<=g&&g<=48959||48961<=g&&g<=48987||48989<=g&&g<=49015||49017<=g&&g<=49043||49045<=g&&g<=49071||49073<=g&&g<=49099||49101<=g&&g<=49127||49129<=g&&g<=49155||49157<=g&&g<=49183||49185<=g&&g<=49211||49213<=g&&g<=49239||49241<=g&&g<=49267||49269<=g&&g<=49295||49297<=g&&g<=49323||49325<=g&&g<=49351||49353<=g&&g<=49379||49381<=g&&g<=49407||49409<=g&&g<=49435||49437<=g&&g<=49463||49465<=g&&g<=49491||49493<=g&&g<=49519||49521<=g&&g<=49547||49549<=g&&g<=49575||49577<=g&&g<=49603||49605<=g&&g<=49631||49633<=g&&g<=49659||49661<=g&&g<=49687||49689<=g&&g<=49715||49717<=g&&g<=49743||49745<=g&&g<=49771||49773<=g&&g<=49799||49801<=g&&g<=49827||49829<=g&&g<=49855||49857<=g&&g<=49883||49885<=g&&g<=49911||49913<=g&&g<=49939||49941<=g&&g<=49967||49969<=g&&g<=49995||49997<=g&&g<=50023||50025<=g&&g<=50051||50053<=g&&g<=50079||50081<=g&&g<=50107||50109<=g&&g<=50135||50137<=g&&g<=50163||50165<=g&&g<=50191||50193<=g&&g<=50219||50221<=g&&g<=50247||50249<=g&&g<=50275||50277<=g&&g<=50303||50305<=g&&g<=50331||50333<=g&&g<=50359||50361<=g&&g<=50387||50389<=g&&g<=50415||50417<=g&&g<=50443||50445<=g&&g<=50471||50473<=g&&g<=50499||50501<=g&&g<=50527||50529<=g&&g<=50555||50557<=g&&g<=50583||50585<=g&&g<=50611||50613<=g&&g<=50639||50641<=g&&g<=50667||50669<=g&&g<=50695||50697<=g&&g<=50723||50725<=g&&g<=50751||50753<=g&&g<=50779||50781<=g&&g<=50807||50809<=g&&g<=50835||50837<=g&&g<=50863||50865<=g&&g<=50891||50893<=g&&g<=50919||50921<=g&&g<=50947||50949<=g&&g<=50975||50977<=g&&g<=51003||51005<=g&&g<=51031||51033<=g&&g<=51059||51061<=g&&g<=51087||51089<=g&&g<=51115||51117<=g&&g<=51143||51145<=g&&g<=51171||51173<=g&&g<=51199||51201<=g&&g<=51227||51229<=g&&g<=51255||51257<=g&&g<=51283||51285<=g&&g<=51311||51313<=g&&g<=51339||51341<=g&&g<=51367||51369<=g&&g<=51395||51397<=g&&g<=51423||51425<=g&&g<=51451||51453<=g&&g<=51479||51481<=g&&g<=51507||51509<=g&&g<=51535||51537<=g&&g<=51563||51565<=g&&g<=51591||51593<=g&&g<=51619||51621<=g&&g<=51647||51649<=g&&g<=51675||51677<=g&&g<=51703||51705<=g&&g<=51731||51733<=g&&g<=51759||51761<=g&&g<=51787||51789<=g&&g<=51815||51817<=g&&g<=51843||51845<=g&&g<=51871||51873<=g&&g<=51899||51901<=g&&g<=51927||51929<=g&&g<=51955||51957<=g&&g<=51983||51985<=g&&g<=52011||52013<=g&&g<=52039||52041<=g&&g<=52067||52069<=g&&g<=52095||52097<=g&&g<=52123||52125<=g&&g<=52151||52153<=g&&g<=52179||52181<=g&&g<=52207||52209<=g&&g<=52235||52237<=g&&g<=52263||52265<=g&&g<=52291||52293<=g&&g<=52319||52321<=g&&g<=52347||52349<=g&&g<=52375||52377<=g&&g<=52403||52405<=g&&g<=52431||52433<=g&&g<=52459||52461<=g&&g<=52487||52489<=g&&g<=52515||52517<=g&&g<=52543||52545<=g&&g<=52571||52573<=g&&g<=52599||52601<=g&&g<=52627||52629<=g&&g<=52655||52657<=g&&g<=52683||52685<=g&&g<=52711||52713<=g&&g<=52739||52741<=g&&g<=52767||52769<=g&&g<=52795||52797<=g&&g<=52823||52825<=g&&g<=52851||52853<=g&&g<=52879||52881<=g&&g<=52907||52909<=g&&g<=52935||52937<=g&&g<=52963||52965<=g&&g<=52991||52993<=g&&g<=53019||53021<=g&&g<=53047||53049<=g&&g<=53075||53077<=g&&g<=53103||53105<=g&&g<=53131||53133<=g&&g<=53159||53161<=g&&g<=53187||53189<=g&&g<=53215||53217<=g&&g<=53243||53245<=g&&g<=53271||53273<=g&&g<=53299||53301<=g&&g<=53327||53329<=g&&g<=53355||53357<=g&&g<=53383||53385<=g&&g<=53411||53413<=g&&g<=53439||53441<=g&&g<=53467||53469<=g&&g<=53495||53497<=g&&g<=53523||53525<=g&&g<=53551||53553<=g&&g<=53579||53581<=g&&g<=53607||53609<=g&&g<=53635||53637<=g&&g<=53663||53665<=g&&g<=53691||53693<=g&&g<=53719||53721<=g&&g<=53747||53749<=g&&g<=53775||53777<=g&&g<=53803||53805<=g&&g<=53831||53833<=g&&g<=53859||53861<=g&&g<=53887||53889<=g&&g<=53915||53917<=g&&g<=53943||53945<=g&&g<=53971||53973<=g&&g<=53999||54001<=g&&g<=54027||54029<=g&&g<=54055||54057<=g&&g<=54083||54085<=g&&g<=54111||54113<=g&&g<=54139||54141<=g&&g<=54167||54169<=g&&g<=54195||54197<=g&&g<=54223||54225<=g&&g<=54251||54253<=g&&g<=54279||54281<=g&&g<=54307||54309<=g&&g<=54335||54337<=g&&g<=54363||54365<=g&&g<=54391||54393<=g&&g<=54419||54421<=g&&g<=54447||54449<=g&&g<=54475||54477<=g&&g<=54503||54505<=g&&g<=54531||54533<=g&&g<=54559||54561<=g&&g<=54587||54589<=g&&g<=54615||54617<=g&&g<=54643||54645<=g&&g<=54671||54673<=g&&g<=54699||54701<=g&&g<=54727||54729<=g&&g<=54755||54757<=g&&g<=54783||54785<=g&&g<=54811||54813<=g&&g<=54839||54841<=g&&g<=54867||54869<=g&&g<=54895||54897<=g&&g<=54923||54925<=g&&g<=54951||54953<=g&&g<=54979||54981<=g&&g<=55007||55009<=g&&g<=55035||55037<=g&&g<=55063||55065<=g&&g<=55091||55093<=g&&g<=55119||55121<=g&&g<=55147||55149<=g&&g<=55175||55177<=g&&g<=55203?E:g==9757||g==9977||9994<=g&&g<=9997||g==127877||127938<=g&&g<=127940||g==127943||127946<=g&&g<=127948||128066<=g&&g<=128067||128070<=g&&g<=128080||g==128110||128112<=g&&g<=128120||g==128124||128129<=g&&g<=128131||128133<=g&&g<=128135||g==128170||128372<=g&&g<=128373||g==128378||g==128400||128405<=g&&g<=128406||128581<=g&&g<=128583||128587<=g&&g<=128591||g==128675||128692<=g&&g<=128694||g==128704||g==128716||129304<=g&&g<=129308||129310<=g&&g<=129311||g==129318||129328<=g&&g<=129337||129341<=g&&g<=129342||129489<=g&&g<=129501?b:127995<=g&&g<=127999?C:g==8205?T:g==9792||g==9794||9877<=g&&g<=9878||g==9992||g==10084||g==127752||g==127806||g==127859||g==127891||g==127908||g==127912||g==127979||g==127981||g==128139||128187<=g&&g<=128188||g==128295||g==128300||g==128488||g==128640||g==128658?L:128102<=g&&g<=128105?U:I}return this}typeof qx<\"u\"&&qx.exports&&(qx.exports=yat)});var Gce=_((d4t,qce)=>{var Eat=/^(.*?)(\\x1b\\[[^m]+m|\\x1b\\]8;;.*?(\\x1b\\\\|\\u0007))/,Gx;function Cat(){if(Gx)return Gx;if(typeof Intl.Segmenter<\"u\"){let t=new Intl.Segmenter(\"en\",{granularity:\"grapheme\"});return Gx=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=jce(),e=new t;return Gx=r=>e.splitGraphemes(r)}}qce.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError(\"Negative indices aren't supported by this implementation\");let o=r-e,a=\"\",n=0,u=0;for(;t.length>0;){let A=t.match(Eat)||[t,t,void 0],p=Cat()(A[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(o-u,p.length);a+=p.slice(0,E).join(\"\"),n+=h,u+=E,typeof A[2]<\"u\"&&(a+=A[2]),t=t.slice(A[0].length)}return a}});var tn,N1=Et(()=>{tn=process.env.YARN_IS_TEST_ENV?\"0.0.0\":\"4.0.2\"});function zce(t,{configuration:e,json:r}){if(!e.get(\"enableMessageNames\"))return\"\";let a=Wu(t===null?0:t);return!r&&t===null?Ot(e,a,\"grey\"):a}function CU(t,{configuration:e,json:r}){let o=zce(t,{configuration:e,json:r});if(!o||t===null||t===0)return o;let a=wr[t],n=`https://yarnpkg.com/advanced/error-codes#${o}---${a}`.toLowerCase();return Xy(e,o,n)}async function NE({configuration:t,stdout:e,forceError:r},o){let a=await Nt.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let u=!1,A=!1;for(let p of o)typeof p.option<\"u\"&&(p.error||r?(A=!0,n.reportError(50,p.message)):(u=!0,n.reportWarning(50,p.message)),p.callback?.());u&&!A&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var Kce,Yx,wat,Yce,Wce,uh,Jce,Vce,Iat,Bat,Wx,vat,Nt,L1=Et(()=>{Kce=$e(Gce()),Yx=$e(ed());pP();Yl();N1();ql();wat=\"\\xB7\",Yce=[\"\\u280B\",\"\\u2819\",\"\\u2839\",\"\\u2838\",\"\\u283C\",\"\\u2834\",\"\\u2826\",\"\\u2827\",\"\\u2807\",\"\\u280F\"],Wce=80,uh=Yx.default.GITHUB_ACTIONS?{start:t=>`::group::${t}\n`,end:t=>`::endgroup::\n`}:Yx.default.TRAVIS?{start:t=>`travis_fold:start:${t}\n`,end:t=>`travis_fold:end:${t}\n`}:Yx.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\\W+/g,\"_\")}[collapsed=true]\\r\\x1B[0K${t}\n`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\\W+/g,\"_\")}\\r\\x1B[0K`}:null,Jce=uh!==null,Vce=new Date,Iat=[\"iTerm.app\",\"Apple_Terminal\",\"WarpTerminal\",\"vscode\"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,Bat=t=>t,Wx=Bat({patrick:{date:[17,3],chars:[\"\\u{1F340}\",\"\\u{1F331}\"],size:40},simba:{date:[19,7],chars:[\"\\u{1F981}\",\"\\u{1F334}\"],size:40},jack:{date:[31,10],chars:[\"\\u{1F383}\",\"\\u{1F987}\"],size:40},hogsfather:{date:[31,12],chars:[\"\\u{1F389}\",\"\\u{1F384}\"],size:40},default:{chars:[\"=\",\"-\"],size:80}}),vat=Iat&&Object.keys(Wx).find(t=>{let e=Wx[t];return!(e.date&&(e.date[0]!==Vce.getDate()||e.date[1]!==Vce.getMonth()+1))})||\"default\";Nt=class extends Xs{constructor({configuration:r,stdout:o,json:a=!1,forceSectionAlignment:n=!1,includeNames:u=!0,includePrefix:A=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:I=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(zI(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=u,this.includePrefix=A,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=I,this.json=a,this.stdout=o,r.get(\"enableProgressBars\")&&!a&&o.isTTY&&o.columns>22){let v=r.get(\"progressBarStyle\")||vat;if(!Object.hasOwn(Wx,v))throw new Error(\"Assertion failed: Invalid progress bar style\");this.progressStyle=Wx[v];let b=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*b/80)}}static async start(r,o){let a=new this(r),n=process.emitWarning;process.emitWarning=(u,A)=>{if(typeof u!=\"string\"){let h=u;u=h.message,A=A??h.name}let p=typeof A<\"u\"?`${A}: ${u}`:u;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,md(r.configuration,`Yarn ${tn}`,2));try{await o(a)}catch(u){a.reportExceptionOnce(u)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let o=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,o-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}startTimerImpl(r,o,a){return{cb:typeof o==\"function\"?o:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\\u250C ${r}`),this.indent+=1,uh!==null&&!this.json&&this.includeInfos&&this.stdout.write(uh.start(r))},reportFooter:A=>{if(this.indent-=1,uh!==null&&!this.json&&this.includeInfos){this.stdout.write(uh.end(r));for(let p of this.timerFooter)p()}this.configuration.get(\"enableTimers\")&&A>200?this.reportInfo(null,`\\u2514 Completed in ${Ot(this.configuration,A,yt.DURATION)}`):this.reportInfo(null,\"\\u2514 Completed\"),this.level-=1},skipIfEmpty:(typeof o==\"function\"?{}:o).skipIfEmpty}}startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionSync(u,n)}async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionPromise(u,n)}reportSeparator(){this.indent===0?this.writeLine(\"\"):this.reportInfo(null,\"\")}reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\",u=`${this.formatPrefix(n,\"blueBright\")}${o}`;this.json?this.reportJson({type:\"info\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(u)}reportWarning(r,o){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"warning\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(`${this.formatPrefix(n,\"yellowBright\")}${o}`)}reportError(r,o){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,o)),this.reportErrorImpl(r,o)}reportErrorImpl(r,o){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"error\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(`${this.formatPrefix(n,\"redBright\")}${o}`,{truncate:!1})}reportFold(r,o){if(!uh)return;let a=`${uh.start(r)}${o}${uh.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error(\"Unimplemented: Progress bars can't have both progress and titles.\");let o=!1,a=Promise.resolve().then(async()=>{let u={progress:r.hasProgress?0:void 0,title:r.hasTitle?\"\":void 0};this.progress.set(r,{definition:u,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:A,title:p}of r)o||u.progress===A&&u.title===p||(u.progress=A,u.title=p,this.refreshProgress());n()}),n=()=>{o||(o=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r=\"\";this.errorCount>0?r=\"Failed with errors\":this.warningCount>0?r=\"Done with warnings\":r=\"Done\";let o=Ot(this.configuration,Date.now()-this.startTime,yt.DURATION),a=this.configuration.get(\"enableTimers\")?`${r} in ${o}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:o})}\n`),this.writeProgress()}writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:o})}\n`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)o.committed=!0,o.action()}clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\\x1B[${this.progress.size+r}A`),(r>0||o)&&this.stdout.write(\"\\x1B[0J\"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Wce&&(this.progressFrame=(this.progressFrame+1)%Yce.length,this.progressTime=r);let o=Yce[this.progressFrame];for(let a of this.progress.values()){let n=\"\";if(typeof a.lastScaledSize<\"u\"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let u=this.formatName(null),A=u?`${u}: `:\"\",p=a.definition.title?` ${a.definition.title}`:\"\";this.stdout.write(`${Ot(this.configuration,\"\\u27A4\",\"blueBright\")} ${A}${o}${n}${p}\n`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Wce)}refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.progress.size===0)a=!0;else for(let u of this.progress.values()){let A=typeof u.definition.progress<\"u\"?Math.trunc(this.progressMaxScaledSize*u.definition.progress):void 0,p=u.lastScaledSize;u.lastScaledSize=A;let h=u.lastTitle;if(u.lastTitle=u.definition.title,A!==p||(n=h!==u.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typeof o>\"u\"&&(o=this.configuration.get(\"preferTruncatedLines\")),o&&(r=(0,Kce.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?zce(r,{configuration:this.configuration,json:this.json}):\"\"}formatPrefix(r,o){return this.includePrefix?`${Ot(this.configuration,\"\\u27A4\",o)} ${r}${this.formatIndent()}`:\"\"}formatNameWithHyperlink(r){return this.includeNames?CU(r,{configuration:this.configuration,json:this.json}):\"\"}formatIndent(){return this.level>0||!this.forceSectionAlignment?\"\\u2502 \".repeat(this.indent):`${wat} `}}});var un={};Kt(un,{PackageManager:()=>$ce,detectPackageManager:()=>eue,executePackageAccessibleBinary:()=>sue,executePackageScript:()=>Vx,executePackageShellcode:()=>wU,executeWorkspaceAccessibleBinary:()=>Qat,executeWorkspaceLifecycleScript:()=>nue,executeWorkspaceScript:()=>rue,getPackageAccessibleBinaries:()=>Kx,getWorkspaceAccessibleBinaries:()=>iue,hasPackageScript:()=>xat,hasWorkspaceScript:()=>IU,isNodeScript:()=>BU,makeScriptEnv:()=>M1,maybeExecuteWorkspaceLifecycleScript:()=>kat,prepareExternalProject:()=>Sat});async function Ah(t,e,r,o=[]){if(process.platform===\"win32\"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @\"${r}\" ${o.map(n=>`\"${n.replace('\"','\"\"')}\"`).join(\" \")} %*`;await oe.writeFilePromise(K.format({dir:t,name:e,ext:\".cmd\"}),a)}await oe.writeFilePromise(K.join(t,e),`#!/bin/sh\nexec \"${r}\" ${o.map(a=>`'${a.replace(/'/g,`'\"'\"'`)}'`).join(\" \")} \"$@\"\n`,{mode:493})}async function eue(t){let e=await Mt.tryFind(t);if(e?.packageManager){let o=_S(e.packageManager);if(o?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=o.reference.split(\".\");switch(o.name){case\"yarn\":return{packageManagerField:!0,packageManager:Number(n)===1?\"Yarn Classic\":\"Yarn\",reason:a};case\"npm\":return{packageManagerField:!0,packageManager:\"npm\",reason:a};case\"pnpm\":return{packageManagerField:!0,packageManager:\"pnpm\",reason:a}}}}let r;try{r=await oe.readFilePromise(K.join(t,dr.lockfile),\"utf8\")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:\"Yarn\",reason:'\"__metadata\" key found in yarn.lock'}:{packageManager:\"Yarn Classic\",reason:'\"__metadata\" key not found in yarn.lock, must be a Yarn classic lockfile'}:oe.existsSync(K.join(t,\"package-lock.json\"))?{packageManager:\"npm\",reason:`found npm's \"package-lock.json\" lockfile`}:oe.existsSync(K.join(t,\"pnpm-lock.yaml\"))?{packageManager:\"pnpm\",reason:`found pnpm's \"pnpm-lock.yaml\" lockfile`}:null}async function M1({project:t,locator:e,binFolder:r,ignoreCorepack:o,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let u={};for(let[E,I]of Object.entries(n))typeof I<\"u\"&&(u[E.toLowerCase()!==\"path\"?E:\"PATH\"]=I);let A=ue.fromPortablePath(r);u.BERRY_BIN_FOLDER=ue.fromPortablePath(A);let p=process.env.COREPACK_ROOT&&!o?ue.join(process.env.COREPACK_ROOT,\"dist/yarn.js\"):process.argv[1];if(await Promise.all([Ah(r,\"node\",process.execPath),...tn!==null?[Ah(r,\"run\",process.execPath,[p,\"run\"]),Ah(r,\"yarn\",process.execPath,[p]),Ah(r,\"yarnpkg\",process.execPath,[p]),Ah(r,\"node-gyp\",process.execPath,[p,\"run\",\"--top-level\",\"node-gyp\"])]:[]]),t&&(u.INIT_CWD=ue.fromPortablePath(t.configuration.startingCwd),u.PROJECT_CWD=ue.fromPortablePath(t.cwd)),u.PATH=u.PATH?`${A}${ue.delimiter}${u.PATH}`:`${A}`,u.npm_execpath=`${A}${ue.sep}yarn`,u.npm_node_execpath=`${A}${ue.sep}node`,e){if(!t)throw new Error(\"Assertion failed: Missing project\");let E=t.tryWorkspaceByLocator(e),I=E?E.manifest.version??\"\":t.storedPackages.get(e.locatorHash).version??\"\";u.npm_package_name=fn(e),u.npm_package_version=I;let v;if(E)v=E.cwd;else{let b=t.storedPackages.get(e.locatorHash);if(!b)throw new Error(`Package for ${jr(t.configuration,e)} not found in the project`);let C=t.configuration.getLinkers(),T={project:t,report:new Nt({stdout:new fh.PassThrough,configuration:t.configuration})},L=C.find(U=>U.supportsPackage(b,T));if(!L)throw new Error(`The package ${jr(t.configuration,b)} isn't supported by any of the available linkers`);v=await L.findPackageLocation(b,T)}u.npm_package_json=ue.fromPortablePath(K.join(v,dr.manifest))}let h=tn!==null?`yarn/${tn}`:`yarn/${vf(\"@yarnpkg/core\").version}-core`;return u.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(u.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,u,async(E,I,v)=>await Ah(r,E,I,v)),u}async function Sat(t,e,{configuration:r,report:o,workspace:a=null,locator:n=null}){await Pat(async()=>{await oe.mktempPromise(async u=>{let A=K.join(u,\"pack.log\"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(A,{prefix:ue.fromPortablePath(t),report:o}),I=n&&Hc(n)?t1(n):n,v=I?xa(I):\"an external project\";h.write(`Packing ${v} from sources\n`);let b=await eue(t),C;b!==null?(h.write(`Using ${b.packageManager} for bootstrap. Reason: ${b.reason}\n\n`),C=b.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn\n\n`),C=\"Yarn\");let T=C===\"Yarn\"&&!b?.packageManagerField;await oe.mktempPromise(async L=>{let U=await M1({binFolder:L,ignoreCorepack:T}),te=new Map([[\"Yarn Classic\",async()=>{let pe=a!==null?[\"workspace\",a]:[],Ae=K.join(t,dr.manifest),ye=await oe.readFilePromise(Ae),ae=await Gc(process.execPath,[process.argv[1],\"set\",\"version\",\"classic\",\"--only-if-needed\",\"--yarn-path\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ae.code!==0)return ae.code;await oe.writeFilePromise(Ae,ye),await oe.appendFilePromise(K.join(t,\".npmignore\"),`/.yarn\n`),h.write(`\n`),delete U.NODE_ENV;let we=await Gc(\"yarn\",[\"install\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(we.code!==0)return we.code;h.write(`\n`);let Pe=await Gc(\"yarn\",[...pe,\"pack\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return Pe.code!==0?Pe.code:0}],[\"Yarn\",async()=>{let pe=a!==null?[\"workspace\",a]:[];U.YARN_ENABLE_INLINE_BUILDS=\"1\";let Ae=K.join(t,dr.lockfile);await oe.existsPromise(Ae)||await oe.writeFilePromise(Ae,\"\");let ye=await Gc(\"yarn\",[...pe,\"pack\",\"--install-if-needed\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return ye.code!==0?ye.code:0}],[\"npm\",async()=>{if(a!==null){let Ee=new fh.PassThrough,De=Vy(Ee);Ee.pipe(h,{end:!1});let ce=await Gc(\"npm\",[\"--version\"],{cwd:t,env:U,stdin:p,stdout:Ee,stderr:E,end:0});if(Ee.end(),ce.code!==0)return h.end(),E.end(),ce.code;let ne=(await De).toString().trim();if(!bf(ne,\">=7.x\")){let ee=eA(null,\"npm\"),Ie=In(ee,ne),ke=In(ee,\">=7.x\");throw new Error(`Workspaces aren't supported by ${qn(r,Ie)}; please upgrade to ${qn(r,ke)} (npm has been detected as the primary package manager for ${Ot(r,t,yt.PATH)})`)}}let pe=a!==null?[\"--workspace\",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let Ae=await Gc(\"npm\",[\"install\",\"--legacy-peer-deps\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Ae.code!==0)return Ae.code;let ye=new fh.PassThrough,ae=Vy(ye);ye.pipe(h);let we=await Gc(\"npm\",[\"pack\",\"--silent\",...pe],{cwd:t,env:U,stdin:p,stdout:ye,stderr:E});if(we.code!==0)return we.code;let Pe=(await ae).toString().trim().replace(/^.*\\n/s,\"\"),g=K.resolve(t,ue.toPortablePath(Pe));return await oe.renamePromise(g,e),0}]]).get(C);if(typeof te>\"u\")throw new Error(\"Assertion failed: Unsupported workflow\");let le=await te();if(!(le===0||typeof le>\"u\"))throw oe.detachTemp(u),new zt(58,`Packing the package failed (exit code ${le}, logs can be found here: ${Ot(r,A,yt.PATH)})`)})})})}async function xat(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(o!==null)return IU(o,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${jr(r.configuration,t)} not found in the project`);return await Jl.openPromise(async n=>{let u=r.configuration,A=r.configuration.getLinkers(),p={project:r,report:new Nt({stdout:new fh.PassThrough,configuration:u})},h=A.find(b=>b.supportsPackage(a,p));if(!h)throw new Error(`The package ${jr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),I=new gn(E,{baseFs:n});return(await Mt.find(Bt.dot,{baseFs:I})).scripts.has(e)})}async function Vx(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{manifest:h,env:E,cwd:I}=await tue(t,{project:a,binFolder:p,cwd:o,lifecycleScript:e}),v=h.scripts.get(e);if(typeof v>\"u\")return 1;let b=async()=>await TE(v,r,{cwd:I,env:E,stdin:n,stdout:u,stderr:A});return await(await a.configuration.reduceHook(T=>T.wrapScriptExecution,b,a,t,e,{script:v,args:r,cwd:I,env:E,stdin:n,stdout:u,stderr:A}))()})}async function wU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{env:h,cwd:E}=await tue(t,{project:a,binFolder:p,cwd:o});return await TE(e,r,{cwd:E,env:h,stdin:n,stdout:u,stderr:A})})}async function bat(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await M1({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:o});return await vU(e,await iue(t)),typeof r>\"u\"&&(r=K.dirname(await oe.realpathPromise(K.join(t.cwd,\"package.json\")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function tue(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return bat(n,{binFolder:r,cwd:o,lifecycleScript:a});let u=e.storedPackages.get(t.locatorHash);if(!u)throw new Error(`Package for ${jr(e.configuration,t)} not found in the project`);return await Jl.openPromise(async A=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Nt({stdout:new fh.PassThrough,configuration:p})},I=h.find(L=>L.supportsPackage(u,E));if(!I)throw new Error(`The package ${jr(e.configuration,u)} isn't supported by any of the available linkers`);let v=await M1({project:e,locator:t,binFolder:r,lifecycleScript:a});await vU(r,await Kx(t,{project:e}));let b=await I.findPackageLocation(u,E),C=new gn(b,{baseFs:A}),T=await Mt.find(Bt.dot,{baseFs:C});return typeof o>\"u\"&&(o=b),{manifest:T,binFolder:r,env:v,cwd:o}})}async function rue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await Vx(t.anchoredLocator,e,r,{cwd:o,project:t.project,stdin:a,stdout:n,stderr:u})}function IU(t,e){return t.manifest.scripts.has(e)}async function nue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,n=null;await oe.mktempPromise(async u=>{let A=K.join(u,`${e}.log`),p=`# This file contains the result of Yarn calling the \"${e}\" lifecycle script inside a workspace (\"${ue.fromPortablePath(t.cwd)}\")\n`,{stdout:h,stderr:E}=a.getSubprocessStreams(A,{report:o,prefix:jr(a,t.anchoredLocator),header:p});o.reportInfo(36,`Calling the \"${e}\" lifecycle script`);let I=await rue(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),I!==0)throw oe.detachTemp(u),new zt(36,`${(0,Xce.default)(e)} script failed (exit code ${Ot(a,I,yt.NUMBER)}, logs can be found here: ${Ot(a,A,yt.PATH)}); run ${Ot(a,`yarn ${e}`,yt.CODE)} to investigate`)})}async function kat(t,e,r){IU(t,e)&&await nue(t,e,r)}function BU(t){let e=K.extname(t);if(e.match(/\\.[cm]?[jt]sx?$/))return!0;if(e===\".exe\"||e===\".bin\")return!1;let r=Buffer.alloc(4),o;try{o=oe.openSync(t,\"r\")}catch{return!0}try{oe.readSync(o,r,0,r.length,0)}finally{oe.closeSync(o)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function Kx(t,{project:e}){let r=e.configuration,o=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${jr(r,t)} not found in the project`);let n=new fh.Writable,u=r.getLinkers(),A={project:e,report:new Nt({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let I=e.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(`Assertion failed: The resolution (${qn(r,E)}) should have been registered`);p.add(I)}let h=await Promise.all(Array.from(p,async E=>{let I=e.storedPackages.get(E);if(!I)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(I.bin.size===0)return sl.skip;let v=u.find(C=>C.supportsPackage(I,A));if(!v)return sl.skip;let b=null;try{b=await v.findPackageLocation(I,A)}catch(C){if(C.code===\"LOCATOR_NOT_INSTALLED\")return sl.skip;throw C}return{dependency:I,packageLocation:b}}));for(let E of h){if(E===sl.skip)continue;let{dependency:I,packageLocation:v}=E;for(let[b,C]of I.bin){let T=K.resolve(v,C);o.set(b,[I,ue.fromPortablePath(T),BU(T)])}}return o}async function iue(t){return await Kx(t.anchoredLocator,{project:t.project})}async function vU(t,e){await Promise.all(Array.from(e,([r,[,o,a]])=>a?Ah(t,r,process.execPath,[o]):Ah(t,r,o,[])))}async function sue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await Kx(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${jr(a.configuration,t)}`);return await oe.mktempPromise(async I=>{let[,v]=E,b=await M1({project:a,locator:t,binFolder:I});await vU(b.BERRY_BIN_FOLDER,h);let C=BU(ue.toPortablePath(v))?Gc(process.execPath,[...p,v,...r],{cwd:o,env:b,stdin:n,stdout:u,stderr:A}):Gc(v,r,{cwd:o,env:b,stdin:n,stdout:u,stderr:A}),T;try{T=await C}finally{await oe.removePromise(b.BERRY_BIN_FOLDER)}return T.code})}async function Qat(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A}){return await sue(t.anchoredLocator,e,r,{project:t.project,cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A})}var Xce,Zce,fh,$ce,Dat,Pat,DU=Et(()=>{Pt();Pt();nA();b1();Xce=$e(EU()),Zce=$e(nd()),fh=Be(\"stream\");AE();Yl();L1();N1();Px();ql();jl();kf();xo();$ce=(a=>(a.Yarn1=\"Yarn Classic\",a.Yarn2=\"Yarn\",a.Npm=\"npm\",a.Pnpm=\"pnpm\",a))($ce||{});Dat=2,Pat=(0,Zce.default)(Dat)});var LE=_((M4t,aue)=>{\"use strict\";var oue=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\"]]);aue.exports=t=>t?Object.keys(t).map(e=>[oue.has(e)?oue.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var OE=_((O4t,due)=>{\"use strict\";var lue=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},Fat=Be(\"events\"),cue=Be(\"stream\"),uue=Be(\"string_decoder\").StringDecoder,Mf=Symbol(\"EOF\"),Of=Symbol(\"maybeEmitEnd\"),ph=Symbol(\"emittedEnd\"),Jx=Symbol(\"emittingEnd\"),O1=Symbol(\"emittedError\"),zx=Symbol(\"closed\"),Aue=Symbol(\"read\"),Xx=Symbol(\"flush\"),fue=Symbol(\"flushChunk\"),ka=Symbol(\"encoding\"),Uf=Symbol(\"decoder\"),Zx=Symbol(\"flowing\"),U1=Symbol(\"paused\"),ME=Symbol(\"resume\"),Fs=Symbol(\"bufferLength\"),PU=Symbol(\"bufferPush\"),SU=Symbol(\"bufferShift\"),Fo=Symbol(\"objectMode\"),To=Symbol(\"destroyed\"),xU=Symbol(\"emitData\"),pue=Symbol(\"emitEnd\"),bU=Symbol(\"emitEnd2\"),_f=Symbol(\"async\"),_1=t=>Promise.resolve().then(t),hue=global._MP_NO_ITERATOR_SYMBOLS_!==\"1\",Tat=hue&&Symbol.asyncIterator||Symbol(\"asyncIterator not implemented\"),Rat=hue&&Symbol.iterator||Symbol(\"iterator not implemented\"),Nat=t=>t===\"end\"||t===\"finish\"||t===\"prefinish\",Lat=t=>t instanceof ArrayBuffer||typeof t==\"object\"&&t.constructor&&t.constructor.name===\"ArrayBuffer\"&&t.byteLength>=0,Mat=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),$x=class{constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e[ME](),r.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},kU=class extends $x{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit(\"error\",a),e.on(\"error\",this.proxyErrors)}};due.exports=class gue extends cue{constructor(e){super(),this[Zx]=!1,this[U1]=!1,this.pipes=[],this.buffer=[],this[Fo]=e&&e.objectMode||!1,this[Fo]?this[ka]=null:this[ka]=e&&e.encoding||null,this[ka]===\"buffer\"&&(this[ka]=null),this[_f]=e&&!!e.async||!1,this[Uf]=this[ka]?new uue(this[ka]):null,this[Mf]=!1,this[ph]=!1,this[Jx]=!1,this[zx]=!1,this[O1]=null,this.writable=!0,this.readable=!0,this[Fs]=0,this[To]=!1}get bufferLength(){return this[Fs]}get encoding(){return this[ka]}set encoding(e){if(this[Fo])throw new Error(\"cannot set encoding in objectMode\");if(this[ka]&&e!==this[ka]&&(this[Uf]&&this[Uf].lastNeed||this[Fs]))throw new Error(\"cannot change encoding\");this[ka]!==e&&(this[Uf]=e?new uue(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Uf].write(r)))),this[ka]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Fo]}set objectMode(e){this[Fo]=this[Fo]||!!e}get async(){return this[_f]}set async(e){this[_f]=this[_f]||!!e}write(e,r,o){if(this[Mf])throw new Error(\"write after end\");if(this[To])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(o=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[_f]?_1:n=>n();return!this[Fo]&&!Buffer.isBuffer(e)&&(Mat(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Lat(e)?e=Buffer.from(e):typeof e!=\"string\"&&(this.objectMode=!0)),this[Fo]?(this.flowing&&this[Fs]!==0&&this[Xx](!0),this.flowing?this.emit(\"data\",e):this[PU](e),this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing):e.length?(typeof e==\"string\"&&!(r===this[ka]&&!this[Uf].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ka]&&(e=this[Uf].write(e)),this.flowing&&this[Fs]!==0&&this[Xx](!0),this.flowing?this.emit(\"data\",e):this[PU](e),this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing):(this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing)}read(e){if(this[To])return null;if(this[Fs]===0||e===0||e>this[Fs])return this[Of](),null;this[Fo]&&(e=null),this.buffer.length>1&&!this[Fo]&&(this.encoding?this.buffer=[this.buffer.join(\"\")]:this.buffer=[Buffer.concat(this.buffer,this[Fs])]);let r=this[Aue](e||null,this.buffer[0]);return this[Of](),r}[Aue](e,r){return e===r.length||e===null?this[SU]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Fs]-=e),this.emit(\"data\",r),!this.buffer.length&&!this[Mf]&&this.emit(\"drain\"),r}end(e,r,o){return typeof e==\"function\"&&(o=e,e=null),typeof r==\"function\"&&(o=r,r=\"utf8\"),e&&this.write(e,r),o&&this.once(\"end\",o),this[Mf]=!0,this.writable=!1,(this.flowing||!this[U1])&&this[Of](),this}[ME](){this[To]||(this[U1]=!1,this[Zx]=!0,this.emit(\"resume\"),this.buffer.length?this[Xx]():this[Mf]?this[Of]():this.emit(\"drain\"))}resume(){return this[ME]()}pause(){this[Zx]=!1,this[U1]=!0}get destroyed(){return this[To]}get flowing(){return this[Zx]}get paused(){return this[U1]}[PU](e){this[Fo]?this[Fs]+=1:this[Fs]+=e.length,this.buffer.push(e)}[SU](){return this.buffer.length&&(this[Fo]?this[Fs]-=1:this[Fs]-=this.buffer[0].length),this.buffer.shift()}[Xx](e){do;while(this[fue](this[SU]()));!e&&!this.buffer.length&&!this[Mf]&&this.emit(\"drain\")}[fue](e){return e?(this.emit(\"data\",e),this.flowing):!1}pipe(e,r){if(this[To])return;let o=this[ph];return r=r||{},e===lue.stdout||e===lue.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,o?r.end&&e.end():(this.pipes.push(r.proxyErrors?new kU(this,e,r):new $x(this,e,r)),this[_f]?_1(()=>this[ME]()):this[ME]()),e}unpipe(e){let r=this.pipes.find(o=>o.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let o=super.on(e,r);return e===\"data\"&&!this.pipes.length&&!this.flowing?this[ME]():e===\"readable\"&&this[Fs]!==0?super.emit(\"readable\"):Nat(e)&&this[ph]?(super.emit(e),this.removeAllListeners(e)):e===\"error\"&&this[O1]&&(this[_f]?_1(()=>r.call(this,this[O1])):r.call(this,this[O1])),o}get emittedEnd(){return this[ph]}[Of](){!this[Jx]&&!this[ph]&&!this[To]&&this.buffer.length===0&&this[Mf]&&(this[Jx]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[zx]&&this.emit(\"close\"),this[Jx]=!1)}emit(e,r,...o){if(e!==\"error\"&&e!==\"close\"&&e!==To&&this[To])return;if(e===\"data\")return r?this[_f]?_1(()=>this[xU](r)):this[xU](r):!1;if(e===\"end\")return this[pue]();if(e===\"close\"){if(this[zx]=!0,!this[ph]&&!this[To])return;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(e===\"error\"){this[O1]=r;let n=super.emit(\"error\",r);return this[Of](),n}else if(e===\"resume\"){let n=super.emit(\"resume\");return this[Of](),n}else if(e===\"finish\"||e===\"prefinish\"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...o);return this[Of](),a}[xU](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r=super.emit(\"data\",e);return this[Of](),r}[pue](){this[ph]||(this[ph]=!0,this.readable=!1,this[_f]?_1(()=>this[bU]()):this[bU]())}[bU](){if(this[Uf]){let r=this[Uf].end();if(r){for(let o of this.pipes)o.dest.write(r);super.emit(\"data\",r)}}for(let r of this.pipes)r.end();let e=super.emit(\"end\");return this.removeAllListeners(\"end\"),e}collect(){let e=[];this[Fo]||(e.dataLength=0);let r=this.promise();return this.on(\"data\",o=>{e.push(o),this[Fo]||(e.dataLength+=o.length)}),r.then(()=>e)}concat(){return this[Fo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this.collect().then(e=>this[Fo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this[ka]?e.join(\"\"):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(To,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",o=>r(o)),this.on(\"end\",()=>e())})}[Tat](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Mf])return Promise.resolve({done:!0});let o=null,a=null,n=h=>{this.removeListener(\"data\",u),this.removeListener(\"end\",A),a(h)},u=h=>{this.removeListener(\"error\",n),this.removeListener(\"end\",A),this.pause(),o({value:h,done:!!this[Mf]})},A=()=>{this.removeListener(\"error\",n),this.removeListener(\"data\",u),o({done:!0})},p=()=>n(new Error(\"stream destroyed\"));return new Promise((h,E)=>{a=E,o=h,this.once(To,p),this.once(\"error\",n),this.once(\"end\",A),this.once(\"data\",u)})}}}[Rat](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[To]?(e?this.emit(\"error\",e):this.emit(To),this):(this[To]=!0,this.buffer.length=0,this[Fs]=0,typeof this.close==\"function\"&&!this[zx]&&this.close(),e?this.emit(\"error\",e):this.emit(To),this)}static isStream(e){return!!e&&(e instanceof gue||e instanceof cue||e instanceof Fat&&(typeof e.pipe==\"function\"||typeof e.write==\"function\"&&typeof e.end==\"function\"))}}});var yue=_((U4t,mue)=>{var Oat=Be(\"zlib\").constants||{ZLIB_VERNUM:4736};mue.exports=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},Oat))});var WU=_(cl=>{\"use strict\";var NU=Be(\"assert\"),hh=Be(\"buffer\").Buffer,wue=Be(\"zlib\"),Qd=cl.constants=yue(),Uat=OE(),Eue=hh.concat,Fd=Symbol(\"_superWrite\"),_E=class extends Error{constructor(e){super(\"zlib: \"+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code=\"ZLIB_ERROR\"),this.message=\"zlib: \"+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return\"ZlibError\"}},_at=Symbol(\"opts\"),H1=Symbol(\"flushFlag\"),Cue=Symbol(\"finishFlushFlag\"),YU=Symbol(\"fullFlushFlag\"),ti=Symbol(\"handle\"),eb=Symbol(\"onError\"),UE=Symbol(\"sawError\"),QU=Symbol(\"level\"),FU=Symbol(\"strategy\"),TU=Symbol(\"ended\"),_4t=Symbol(\"_defaultFullFlush\"),tb=class extends Uat{constructor(e,r){if(!e||typeof e!=\"object\")throw new TypeError(\"invalid options for ZlibBase constructor\");super(e),this[UE]=!1,this[TU]=!1,this[_at]=e,this[H1]=e.flush,this[Cue]=e.finishFlush;try{this[ti]=new wue[r](e)}catch(o){throw new _E(o)}this[eb]=o=>{this[UE]||(this[UE]=!0,this.close(),this.emit(\"error\",o))},this[ti].on(\"error\",o=>this[eb](new _E(o))),this.once(\"end\",()=>this.close)}close(){this[ti]&&(this[ti].close(),this[ti]=null,this.emit(\"close\"))}reset(){if(!this[UE])return NU(this[ti],\"zlib binding closed\"),this[ti].reset()}flush(e){this.ended||(typeof e!=\"number\"&&(e=this[YU]),this.write(Object.assign(hh.alloc(0),{[H1]:e})))}end(e,r,o){return e&&this.write(e,r),this.flush(this[Cue]),this[TU]=!0,super.end(null,null,o)}get ended(){return this[TU]}write(e,r,o){if(typeof r==\"function\"&&(o=r,r=\"utf8\"),typeof e==\"string\"&&(e=hh.from(e,r)),this[UE])return;NU(this[ti],\"zlib binding closed\");let a=this[ti]._handle,n=a.close;a.close=()=>{};let u=this[ti].close;this[ti].close=()=>{},hh.concat=h=>h;let A;try{let h=typeof e[H1]==\"number\"?e[H1]:this[H1];A=this[ti]._processChunk(e,h),hh.concat=Eue}catch(h){hh.concat=Eue,this[eb](new _E(h))}finally{this[ti]&&(this[ti]._handle=a,a.close=n,this[ti].close=u,this[ti].removeAllListeners(\"error\"))}this[ti]&&this[ti].on(\"error\",h=>this[eb](new _E(h)));let p;if(A)if(Array.isArray(A)&&A.length>0){p=this[Fd](hh.from(A[0]));for(let h=1;h<A.length;h++)p=this[Fd](A[h])}else p=this[Fd](hh.from(A));return o&&o(),p}[Fd](e){return super.write(e)}},Hf=class extends tb{constructor(e,r){e=e||{},e.flush=e.flush||Qd.Z_NO_FLUSH,e.finishFlush=e.finishFlush||Qd.Z_FINISH,super(e,r),this[YU]=Qd.Z_FULL_FLUSH,this[QU]=e.level,this[FU]=e.strategy}params(e,r){if(!this[UE]){if(!this[ti])throw new Error(\"cannot switch params when binding is closed\");if(!this[ti].params)throw new Error(\"not supported in this implementation\");if(this[QU]!==e||this[FU]!==r){this.flush(Qd.Z_SYNC_FLUSH),NU(this[ti],\"zlib binding closed\");let o=this[ti].flush;this[ti].flush=(a,n)=>{this.flush(a),n()};try{this[ti].params(e,r)}finally{this[ti].flush=o}this[ti]&&(this[QU]=e,this[FU]=r)}}}},LU=class extends Hf{constructor(e){super(e,\"Deflate\")}},MU=class extends Hf{constructor(e){super(e,\"Inflate\")}},RU=Symbol(\"_portable\"),OU=class extends Hf{constructor(e){super(e,\"Gzip\"),this[RU]=e&&!!e.portable}[Fd](e){return this[RU]?(this[RU]=!1,e[9]=255,super[Fd](e)):super[Fd](e)}},UU=class extends Hf{constructor(e){super(e,\"Gunzip\")}},_U=class extends Hf{constructor(e){super(e,\"DeflateRaw\")}},HU=class extends Hf{constructor(e){super(e,\"InflateRaw\")}},jU=class extends Hf{constructor(e){super(e,\"Unzip\")}},rb=class extends tb{constructor(e,r){e=e||{},e.flush=e.flush||Qd.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Qd.BROTLI_OPERATION_FINISH,super(e,r),this[YU]=Qd.BROTLI_OPERATION_FLUSH}},qU=class extends rb{constructor(e){super(e,\"BrotliCompress\")}},GU=class extends rb{constructor(e){super(e,\"BrotliDecompress\")}};cl.Deflate=LU;cl.Inflate=MU;cl.Gzip=OU;cl.Gunzip=UU;cl.DeflateRaw=_U;cl.InflateRaw=HU;cl.Unzip=jU;typeof wue.BrotliCompress==\"function\"?(cl.BrotliCompress=qU,cl.BrotliDecompress=GU):cl.BrotliCompress=cl.BrotliDecompress=class{constructor(){throw new Error(\"Brotli is not supported in this version of Node.js\")}}});var HE=_((q4t,Iue)=>{var Hat=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;Iue.exports=Hat!==\"win32\"?t=>t:t=>t&&t.replace(/\\\\/g,\"/\")});var nb=_((Y4t,Bue)=>{\"use strict\";var jat=OE(),VU=HE(),KU=Symbol(\"slurp\");Bue.exports=class extends jat{constructor(e,r,o){switch(super(),this.pause(),this.extended=r,this.globalExtended=o,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,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}this.path=VU(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=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=VU(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[KU](r),o&&this[KU](o,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");let o=this.remain,a=this.blockRemain;return this.remain=Math.max(0,o-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:o>=r?super.write(e):super.write(e.slice(0,o))}[KU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o===\"path\")&&(this[o]=o===\"path\"||o===\"linkpath\"?VU(e[o]):e[o])}}});var JU=_(ib=>{\"use strict\";ib.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\"]]);ib.code=new Map(Array.from(ib.name).map(t=>[t[1],t[0]]))});var Sue=_((V4t,Pue)=>{\"use strict\";var qat=(t,e)=>{if(Number.isSafeInteger(t))t<0?Yat(t,e):Gat(t,e);else throw Error(\"cannot encode number outside of javascript safe integer range\");return e},Gat=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Yat=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var o=e.length;o>1;o--){var a=t&255;t=Math.floor(t/256),r?e[o-1]=vue(a):a===0?e[o-1]=0:(r=!0,e[o-1]=Due(a))}},Wat=t=>{let e=t[0],r=e===128?Kat(t.slice(1,t.length)):e===255?Vat(t):null;if(r===null)throw Error(\"invalid base256 encoding\");if(!Number.isSafeInteger(r))throw Error(\"parsed number outside of javascript safe integer range\");return r},Vat=t=>{for(var e=t.length,r=0,o=!1,a=e-1;a>-1;a--){var n=t[a],u;o?u=vue(n):n===0?u=n:(o=!0,u=Due(n)),u!==0&&(r-=u*Math.pow(256,e-a-1))}return r},Kat=t=>{for(var e=t.length,r=0,o=e-1;o>-1;o--){var a=t[o];a!==0&&(r+=a*Math.pow(256,e-o-1))}return r},vue=t=>(255^t)&255,Due=t=>(255^t)+1&255;Pue.exports={encode:qat,parse:Wat}});var qE=_((K4t,bue)=>{\"use strict\";var zU=JU(),jE=Be(\"path\").posix,xue=Sue(),XU=Symbol(\"slurp\"),ul=Symbol(\"type\"),e3=class{constructor(e,r,o,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[ul]=\"0\",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,o,a):e&&this.set(e)}decode(e,r,o,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");if(this.path=Td(e,r,100),this.mode=gh(e,r+100,8),this.uid=gh(e,r+108,8),this.gid=gh(e,r+116,8),this.size=gh(e,r+124,12),this.mtime=ZU(e,r+136,12),this.cksum=gh(e,r+148,12),this[XU](o),this[XU](a,!0),this[ul]=Td(e,r+156,1),this[ul]===\"\"&&(this[ul]=\"0\"),this[ul]===\"0\"&&this.path.substr(-1)===\"/\"&&(this[ul]=\"5\"),this[ul]===\"5\"&&(this.size=0),this.linkpath=Td(e,r+157,100),e.slice(r+257,r+265).toString()===\"ustar\\x0000\")if(this.uname=Td(e,r+265,32),this.gname=Td(e,r+297,32),this.devmaj=gh(e,r+329,8),this.devmin=gh(e,r+337,8),e[r+475]!==0){let u=Td(e,r+345,155);this.path=u+\"/\"+this.path}else{let u=Td(e,r+345,130);u&&(this.path=u+\"/\"+this.path),this.atime=ZU(e,r+476,12),this.ctime=ZU(e,r+488,12)}let n=8*32;for(let u=r;u<r+148;u++)n+=e[u];for(let u=r+156;u<r+512;u++)n+=e[u];this.cksumValid=n===this.cksum,this.cksum===null&&n===8*32&&(this.nullBlock=!0)}[XU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o===\"path\")&&(this[o]=e[o])}encode(e,r){if(e||(e=this.block=Buffer.alloc(512),r=0),r||(r=0),!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");let o=this.ctime||this.atime?130:155,a=Jat(this.path||\"\",o),n=a[0],u=a[1];this.needPax=a[2],this.needPax=Rd(e,r,100,n)||this.needPax,this.needPax=dh(e,r+100,8,this.mode)||this.needPax,this.needPax=dh(e,r+108,8,this.uid)||this.needPax,this.needPax=dh(e,r+116,8,this.gid)||this.needPax,this.needPax=dh(e,r+124,12,this.size)||this.needPax,this.needPax=$U(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[ul].charCodeAt(0),this.needPax=Rd(e,r+157,100,this.linkpath)||this.needPax,e.write(\"ustar\\x0000\",r+257,8),this.needPax=Rd(e,r+265,32,this.uname)||this.needPax,this.needPax=Rd(e,r+297,32,this.gname)||this.needPax,this.needPax=dh(e,r+329,8,this.devmaj)||this.needPax,this.needPax=dh(e,r+337,8,this.devmin)||this.needPax,this.needPax=Rd(e,r+345,o,u)||this.needPax,e[r+475]!==0?this.needPax=Rd(e,r+345,155,u)||this.needPax:(this.needPax=Rd(e,r+345,130,u)||this.needPax,this.needPax=$U(e,r+476,12,this.atime)||this.needPax,this.needPax=$U(e,r+488,12,this.ctime)||this.needPax);let A=8*32;for(let p=r;p<r+148;p++)A+=e[p];for(let p=r+156;p<r+512;p++)A+=e[p];return this.cksum=A,dh(e,r+148,8,this.cksum),this.cksumValid=!0,this.needPax}set(e){for(let r in e)e[r]!==null&&e[r]!==void 0&&(this[r]=e[r])}get type(){return zU.name.get(this[ul])||this[ul]}get typeKey(){return this[ul]}set type(e){zU.code.has(e)?this[ul]=zU.code.get(e):this[ul]=e}},Jat=(t,e)=>{let o=t,a=\"\",n,u=jE.parse(t).root||\".\";if(Buffer.byteLength(o)<100)n=[o,a,!1];else{a=jE.dirname(o),o=jE.basename(o);do Buffer.byteLength(o)<=100&&Buffer.byteLength(a)<=e?n=[o,a,!1]:Buffer.byteLength(o)>100&&Buffer.byteLength(a)<=e?n=[o.substr(0,100-1),a,!0]:(o=jE.join(jE.basename(a),o),a=jE.dirname(a));while(a!==u&&!n);n||(n=[t.substr(0,100-1),\"\",!0])}return n},Td=(t,e,r)=>t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*/,\"\"),ZU=(t,e,r)=>zat(gh(t,e,r)),zat=t=>t===null?null:new Date(t*1e3),gh=(t,e,r)=>t[e]&128?xue.parse(t.slice(e,e+r)):Zat(t,e,r),Xat=t=>isNaN(t)?null:t,Zat=(t,e,r)=>Xat(parseInt(t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*$/,\"\").trim(),8)),$at={12:8589934591,8:2097151},dh=(t,e,r,o)=>o===null?!1:o>$at[r]||o<0?(xue.encode(o,t.slice(e,e+r)),!0):(elt(t,e,r,o),!1),elt=(t,e,r,o)=>t.write(tlt(o,r),e,r,\"ascii\"),tlt=(t,e)=>rlt(Math.floor(t).toString(8),e),rlt=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join(\"0\")+t+\" \")+\"\\0\",$U=(t,e,r,o)=>o===null?!1:dh(t,e,r,o.getTime()/1e3),nlt=new Array(156).join(\"\\0\"),Rd=(t,e,r,o)=>o===null?!1:(t.write(o+nlt,e,r,\"utf8\"),o.length!==Buffer.byteLength(o)||o.length>r);bue.exports=e3});var sb=_((J4t,kue)=>{\"use strict\";var ilt=qE(),slt=Be(\"path\"),j1=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e===\"\")return null;let r=Buffer.byteLength(e),o=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(o);for(let n=0;n<512;n++)a[n]=0;new ilt({path:(\"PaxHeader/\"+slt.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?\"GlobalExtendedHeader\":\"ExtendedHeader\",linkpath:\"\",uname:this.uname||\"\",gname:this.gname||\"\",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,\"utf8\");for(let n=r+512;n<a.length;n++)a[n]=0;return a}encodeBody(){return this.encodeField(\"path\")+this.encodeField(\"ctime\")+this.encodeField(\"atime\")+this.encodeField(\"dev\")+this.encodeField(\"ino\")+this.encodeField(\"nlink\")+this.encodeField(\"charset\")+this.encodeField(\"comment\")+this.encodeField(\"gid\")+this.encodeField(\"gname\")+this.encodeField(\"linkpath\")+this.encodeField(\"mtime\")+this.encodeField(\"size\")+this.encodeField(\"uid\")+this.encodeField(\"uname\")}encodeField(e){if(this[e]===null||this[e]===void 0)return\"\";let r=this[e]instanceof Date?this[e].getTime()/1e3:this[e],o=\" \"+(e===\"dev\"||e===\"ino\"||e===\"nlink\"?\"SCHILY.\":\"\")+e+\"=\"+r+`\n`,a=Buffer.byteLength(o),n=Math.floor(Math.log(a)/Math.log(10))+1;return a+n>=Math.pow(10,n)&&(n+=1),n+a+o}};j1.parse=(t,e,r)=>new j1(olt(alt(t),e),r);var olt=(t,e)=>e?Object.keys(t).reduce((r,o)=>(r[o]=t[o],r),e):t,alt=t=>t.replace(/\\n$/,\"\").split(`\n`).reduce(llt,Object.create(null)),llt=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+\" \").length);let o=e.split(\"=\"),a=o.shift().replace(/^SCHILY\\.(dev|ino|nlink)/,\"$1\");if(!a)return t;let n=o.join(\"=\");return t[a]=/^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};kue.exports=j1});var GE=_((z4t,Que)=>{Que.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)===\"/\";)r=e,e--;return r===-1?t:t.slice(0,r)}});var ob=_((X4t,Fue)=>{\"use strict\";Fue.exports=t=>class extends t{warn(e,r,o={}){this.file&&(o.file=this.file),this.cwd&&(o.cwd=this.cwd),o.code=r instanceof Error&&r.code||e,o.tarCode=e,!this.strict&&o.recoverable!==!1?(r instanceof Error&&(o=Object.assign(r,o),r=r.message),this.emit(\"warn\",o.tarCode,r,o)):r instanceof Error?this.emit(\"error\",Object.assign(r,o)):this.emit(\"error\",Object.assign(new Error(`${e}: ${r}`),o))}}});var r3=_(($4t,Tue)=>{\"use strict\";var ab=[\"|\",\"<\",\">\",\"?\",\":\"],t3=ab.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),clt=new Map(ab.map((t,e)=>[t,t3[e]])),ult=new Map(t3.map((t,e)=>[t,ab[e]]));Tue.exports={encode:t=>ab.reduce((e,r)=>e.split(r).join(clt.get(r)),t),decode:t=>t3.reduce((e,r)=>e.split(r).join(ult.get(r)),t)}});var n3=_((eUt,Nue)=>{var{isAbsolute:Alt,parse:Rue}=Be(\"path\").win32;Nue.exports=t=>{let e=\"\",r=Rue(t);for(;Alt(t)||r.root;){let o=t.charAt(0)===\"/\"&&t.slice(0,4)!==\"//?/\"?\"/\":r.root;t=t.substr(o.length),e+=o,r=Rue(t)}return[e,t]}});var Mue=_((tUt,Lue)=>{\"use strict\";Lue.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var p3=_((iUt,Xue)=>{\"use strict\";var Gue=OE(),Yue=sb(),Wue=qE(),oA=Be(\"fs\"),Oue=Be(\"path\"),sA=HE(),flt=GE(),Vue=(t,e)=>e?(t=sA(t).replace(/^\\.(\\/|$)/,\"\"),flt(e)+\"/\"+t):sA(t),plt=16*1024*1024,Uue=Symbol(\"process\"),_ue=Symbol(\"file\"),Hue=Symbol(\"directory\"),s3=Symbol(\"symlink\"),jue=Symbol(\"hardlink\"),q1=Symbol(\"header\"),lb=Symbol(\"read\"),o3=Symbol(\"lstat\"),ub=Symbol(\"onlstat\"),a3=Symbol(\"onread\"),l3=Symbol(\"onreadlink\"),c3=Symbol(\"openfile\"),u3=Symbol(\"onopenfile\"),mh=Symbol(\"close\"),Ab=Symbol(\"mode\"),A3=Symbol(\"awaitDrain\"),i3=Symbol(\"ondrain\"),aA=Symbol(\"prefix\"),que=Symbol(\"hadError\"),Kue=ob(),hlt=r3(),Jue=n3(),zue=Mue(),fb=Kue(class extends Gue{constructor(e,r){if(r=r||{},super(r),typeof e!=\"string\")throw new TypeError(\"path is required\");this.path=sA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||\"\",this.maxReadSize=r.maxReadSize||plt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=sA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?sA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Jue(this.path);a&&(this.path=n,o=a)}this.win32=!!r.win32||process.platform===\"win32\",this.win32&&(this.path=hlt.decode(this.path.replace(/\\\\/g,\"/\")),e=e.replace(/\\\\/g,\"/\")),this.absolute=sA(r.absolute||Oue.resolve(this.cwd,e)),this.path===\"\"&&(this.path=\"./\"),o&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.statCache.has(this.absolute)?this[ub](this.statCache.get(this.absolute)):this[o3]()}emit(e,...r){return e===\"error\"&&(this[que]=!0),super.emit(e,...r)}[o3](){oA.lstat(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[ub](r)})}[ub](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=dlt(e),this.emit(\"stat\",e),this[Uue]()}[Uue](){switch(this.type){case\"File\":return this[_ue]();case\"Directory\":return this[Hue]();case\"SymbolicLink\":return this[s3]();default:return this.end()}}[Ab](e){return zue(e,this.type===\"Directory\",this.portable)}[aA](e){return Vue(e,this.prefix)}[q1](){this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.header=new Wue({path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,mode:this[Ab](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:\"\",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new Yue({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[Hue](){this.path.substr(-1)!==\"/\"&&(this.path+=\"/\"),this.stat.size=0,this[q1](),this.end()}[s3](){oA.readlink(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[l3](r)})}[l3](e){this.linkpath=sA(e),this[q1](),this.end()}[jue](e){this.type=\"Link\",this.linkpath=sA(Oue.relative(this.cwd,e)),this.stat.size=0,this[q1](),this.end()}[_ue](){if(this.stat.nlink>1){let e=this.stat.dev+\":\"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[jue](r)}this.linkCache.set(e,this.absolute)}if(this[q1](),this.stat.size===0)return this.end();this[c3]()}[c3](){oA.open(this.absolute,\"r\",(e,r)=>{if(e)return this.emit(\"error\",e);this[u3](r)})}[u3](e){if(this.fd=e,this[que])return this[mh]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[lb]()}[lb](){let{fd:e,buf:r,offset:o,length:a,pos:n}=this;oA.read(e,r,o,a,n,(u,A)=>{if(u)return this[mh](()=>this.emit(\"error\",u));this[a3](A)})}[mh](e){oA.close(this.fd,e)}[a3](e){if(e<=0&&this.remain>0){let a=new Error(\"encountered unexpected EOF\");return a.path=this.absolute,a.syscall=\"read\",a.code=\"EOF\",this[mh](()=>this.emit(\"error\",a))}if(e>this.remain){let a=new Error(\"did not encounter expected EOF\");return a.path=this.absolute,a.syscall=\"read\",a.code=\"EOF\",this[mh](()=>this.emit(\"error\",a))}if(e===this.remain)for(let a=e;a<this.length&&e<this.blockRemain;a++)this.buf[a+this.offset]=0,e++,this.remain++;let r=this.offset===0&&e===this.buf.length?this.buf:this.buf.slice(this.offset,this.offset+e);this.write(r)?this[i3]():this[A3](()=>this[i3]())}[A3](e){this.once(\"drain\",e)}write(e){if(this.blockRemain<e.length){let r=new Error(\"writing more data than expected\");return r.path=this.absolute,this.emit(\"error\",r)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e)}[i3](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[mh](e=>e?this.emit(\"error\",e):this.end());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[lb]()}}),f3=class extends fb{[o3](){this[ub](oA.lstatSync(this.absolute))}[s3](){this[l3](oA.readlinkSync(this.absolute))}[c3](){this[u3](oA.openSync(this.absolute,\"r\"))}[lb](){let e=!0;try{let{fd:r,buf:o,offset:a,length:n,pos:u}=this,A=oA.readSync(r,o,a,n,u);this[a3](A),e=!1}finally{if(e)try{this[mh](()=>{})}catch{}}}[A3](e){e()}[mh](e){oA.closeSync(this.fd),e()}},glt=Kue(class extends Gue{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=sA(e.path),this.mode=this[Ab](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=sA(e.linkpath),typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Jue(this.path);a&&(this.path=n,o=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new Wue({path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),o&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.header.encode()&&!this.noPax&&super.write(new Yue({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[aA](e){return Vue(e,this.prefix)}[Ab](e){return zue(e,this.type===\"Directory\",this.portable)}write(e){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)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});fb.Sync=f3;fb.Tar=glt;var dlt=t=>t.isFile()?\"File\":t.isDirectory()?\"Directory\":t.isSymbolicLink()?\"SymbolicLink\":\"Unsupported\";Xue.exports=fb});var wb=_((oUt,iAe)=>{\"use strict\";var Eb=class{constructor(e,r){this.path=e||\"./\",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},mlt=OE(),ylt=WU(),Elt=nb(),I3=p3(),Clt=I3.Sync,wlt=I3.Tar,Ilt=BP(),Zue=Buffer.alloc(1024),gb=Symbol(\"onStat\"),pb=Symbol(\"ended\"),lA=Symbol(\"queue\"),YE=Symbol(\"current\"),Nd=Symbol(\"process\"),hb=Symbol(\"processing\"),$ue=Symbol(\"processJob\"),cA=Symbol(\"jobs\"),h3=Symbol(\"jobDone\"),db=Symbol(\"addFSEntry\"),eAe=Symbol(\"addTarEntry\"),y3=Symbol(\"stat\"),E3=Symbol(\"readdir\"),mb=Symbol(\"onreaddir\"),yb=Symbol(\"pipe\"),tAe=Symbol(\"entry\"),g3=Symbol(\"entryOpt\"),C3=Symbol(\"writeEntryClass\"),nAe=Symbol(\"write\"),d3=Symbol(\"ondrain\"),Cb=Be(\"fs\"),rAe=Be(\"path\"),Blt=ob(),m3=HE(),B3=Blt(class extends mlt{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||\"\",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=m3(e.prefix||\"\"),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[C3]=I3,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!=\"object\"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ylt.Gzip(e.gzip),this.zip.on(\"data\",r=>super.write(r)),this.zip.on(\"end\",r=>super.end()),this.zip.on(\"drain\",r=>this[d3]()),this.on(\"resume\",r=>this.zip.resume())):this.on(\"drain\",this[d3]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter==\"function\"?e.filter:r=>!0,this[lA]=new Ilt,this[cA]=0,this.jobs=+e.jobs||4,this[hb]=!1,this[pb]=!1}[nAe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[pb]=!0,this[Nd](),this}write(e){if(this[pb])throw new Error(\"write after end\");return e instanceof Elt?this[eAe](e):this[db](e),this.flowing}[eAe](e){let r=m3(rAe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let o=new Eb(e.path,r,!1);o.entry=new wlt(e,this[g3](o)),o.entry.on(\"end\",a=>this[h3](o)),this[cA]+=1,this[lA].push(o)}this[Nd]()}[db](e){let r=m3(rAe.resolve(this.cwd,e));this[lA].push(new Eb(e,r)),this[Nd]()}[y3](e){e.pending=!0,this[cA]+=1;let r=this.follow?\"stat\":\"lstat\";Cb[r](e.absolute,(o,a)=>{e.pending=!1,this[cA]-=1,o?this.emit(\"error\",o):this[gb](e,a)})}[gb](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Nd]()}[E3](e){e.pending=!0,this[cA]+=1,Cb.readdir(e.absolute,(r,o)=>{if(e.pending=!1,this[cA]-=1,r)return this.emit(\"error\",r);this[mb](e,o)})}[mb](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Nd]()}[Nd](){if(!this[hb]){this[hb]=!0;for(let e=this[lA].head;e!==null&&this[cA]<this.jobs;e=e.next)if(this[$ue](e.value),e.value.ignore){let r=e.next;this[lA].removeNode(e),e.next=r}this[hb]=!1,this[pb]&&!this[lA].length&&this[cA]===0&&(this.zip?this.zip.end(Zue):(super.write(Zue),super.end()))}}get[YE](){return this[lA]&&this[lA].head&&this[lA].head.value}[h3](e){this[lA].shift(),this[cA]-=1,this[Nd]()}[$ue](e){if(!e.pending){if(e.entry){e===this[YE]&&!e.piped&&this[yb](e);return}if(e.stat||(this.statCache.has(e.absolute)?this[gb](e,this.statCache.get(e.absolute)):this[y3](e)),!!e.stat&&!e.ignore&&!(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir&&(this.readdirCache.has(e.absolute)?this[mb](e,this.readdirCache.get(e.absolute)):this[E3](e),!e.readdir))){if(e.entry=this[tAe](e),!e.entry){e.ignore=!0;return}e===this[YE]&&!e.piped&&this[yb](e)}}}[g3](e){return{onwarn:(r,o,a)=>this.warn(r,o,a),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}}[tAe](e){this[cA]+=1;try{return new this[C3](e.path,this[g3](e)).on(\"end\",()=>this[h3](e)).on(\"error\",r=>this.emit(\"error\",r))}catch(r){this.emit(\"error\",r)}}[d3](){this[YE]&&this[YE].entry&&this[YE].entry.resume()}[yb](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[db](u+a)});let r=e.entry,o=this.zip;o?r.on(\"data\",a=>{o.write(a)||r.pause()}):r.on(\"data\",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),w3=class extends B3{constructor(e){super(e),this[C3]=Clt}pause(){}resume(){}[y3](e){let r=this.follow?\"statSync\":\"lstatSync\";this[gb](e,Cb[r](e.absolute))}[E3](e,r){this[mb](e,Cb.readdirSync(e.absolute))}[yb](e){let r=e.entry,o=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[db](u+a)}),o?r.on(\"data\",a=>{o.write(a)}):r.on(\"data\",a=>{super[nAe](a)})}};B3.Sync=w3;iAe.exports=B3});var $E=_(Y1=>{\"use strict\";var vlt=OE(),Dlt=Be(\"events\").EventEmitter,Qa=Be(\"fs\"),P3=Qa.writev;if(!P3){let t=process.binding(\"fs\"),e=t.FSReqWrap||t.FSReqCallback;P3=(r,o,a,n)=>{let u=(p,h)=>n(p,h,o),A=new e;A.oncomplete=u,t.writeBuffers(r,o,a,A)}}var XE=Symbol(\"_autoClose\"),Yc=Symbol(\"_close\"),G1=Symbol(\"_ended\"),Gn=Symbol(\"_fd\"),sAe=Symbol(\"_finished\"),Eh=Symbol(\"_flags\"),v3=Symbol(\"_flush\"),S3=Symbol(\"_handleChunk\"),x3=Symbol(\"_makeBuf\"),Pb=Symbol(\"_mode\"),Ib=Symbol(\"_needDrain\"),JE=Symbol(\"_onerror\"),ZE=Symbol(\"_onopen\"),D3=Symbol(\"_onread\"),VE=Symbol(\"_onwrite\"),Ch=Symbol(\"_open\"),jf=Symbol(\"_path\"),Ld=Symbol(\"_pos\"),uA=Symbol(\"_queue\"),KE=Symbol(\"_read\"),oAe=Symbol(\"_readSize\"),yh=Symbol(\"_reading\"),Bb=Symbol(\"_remain\"),aAe=Symbol(\"_size\"),vb=Symbol(\"_write\"),WE=Symbol(\"_writing\"),Db=Symbol(\"_defaultFlag\"),zE=Symbol(\"_errored\"),Sb=class extends vlt{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!=\"string\")throw new TypeError(\"path must be a string\");this[zE]=!1,this[Gn]=typeof r.fd==\"number\"?r.fd:null,this[jf]=e,this[oAe]=r.readSize||16*1024*1024,this[yh]=!1,this[aAe]=typeof r.size==\"number\"?r.size:1/0,this[Bb]=this[aAe],this[XE]=typeof r.autoClose==\"boolean\"?r.autoClose:!0,typeof this[Gn]==\"number\"?this[KE]():this[Ch]()}get fd(){return this[Gn]}get path(){return this[jf]}write(){throw new TypeError(\"this is a readable stream\")}end(){throw new TypeError(\"this is a readable stream\")}[Ch](){Qa.open(this[jf],\"r\",(e,r)=>this[ZE](e,r))}[ZE](e,r){e?this[JE](e):(this[Gn]=r,this.emit(\"open\",r),this[KE]())}[x3](){return Buffer.allocUnsafe(Math.min(this[oAe],this[Bb]))}[KE](){if(!this[yh]){this[yh]=!0;let e=this[x3]();if(e.length===0)return process.nextTick(()=>this[D3](null,0,e));Qa.read(this[Gn],e,0,e.length,null,(r,o,a)=>this[D3](r,o,a))}}[D3](e,r,o){this[yh]=!1,e?this[JE](e):this[S3](r,o)&&this[KE]()}[Yc](){if(this[XE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}[JE](e){this[yh]=!0,this[Yc](),this.emit(\"error\",e)}[S3](e,r){let o=!1;return this[Bb]-=e,e>0&&(o=super.write(e<r.length?r.slice(0,e):r)),(e===0||this[Bb]<=0)&&(o=!1,this[Yc](),super.end()),o}emit(e,r){switch(e){case\"prefinish\":case\"finish\":break;case\"drain\":typeof this[Gn]==\"number\"&&this[KE]();break;case\"error\":return this[zE]?void 0:(this[zE]=!0,super.emit(e,r));default:return super.emit(e,r)}}},b3=class extends Sb{[Ch](){let e=!0;try{this[ZE](null,Qa.openSync(this[jf],\"r\")),e=!1}finally{e&&this[Yc]()}}[KE](){let e=!0;try{if(!this[yh]){this[yh]=!0;do{let r=this[x3](),o=r.length===0?0:Qa.readSync(this[Gn],r,0,r.length,null);if(!this[S3](o,r))break}while(!0);this[yh]=!1}e=!1}finally{e&&this[Yc]()}}[Yc](){if(this[XE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.closeSync(e),this.emit(\"close\")}}},xb=class extends Dlt{constructor(e,r){r=r||{},super(r),this.readable=!1,this.writable=!0,this[zE]=!1,this[WE]=!1,this[G1]=!1,this[Ib]=!1,this[uA]=[],this[jf]=e,this[Gn]=typeof r.fd==\"number\"?r.fd:null,this[Pb]=r.mode===void 0?438:r.mode,this[Ld]=typeof r.start==\"number\"?r.start:null,this[XE]=typeof r.autoClose==\"boolean\"?r.autoClose:!0;let o=this[Ld]!==null?\"r+\":\"w\";this[Db]=r.flags===void 0,this[Eh]=this[Db]?o:r.flags,this[Gn]===null&&this[Ch]()}emit(e,r){if(e===\"error\"){if(this[zE])return;this[zE]=!0}return super.emit(e,r)}get fd(){return this[Gn]}get path(){return this[jf]}[JE](e){this[Yc](),this[WE]=!0,this.emit(\"error\",e)}[Ch](){Qa.open(this[jf],this[Eh],this[Pb],(e,r)=>this[ZE](e,r))}[ZE](e,r){this[Db]&&this[Eh]===\"r+\"&&e&&e.code===\"ENOENT\"?(this[Eh]=\"w\",this[Ch]()):e?this[JE](e):(this[Gn]=r,this.emit(\"open\",r),this[v3]())}end(e,r){return e&&this.write(e,r),this[G1]=!0,!this[WE]&&!this[uA].length&&typeof this[Gn]==\"number\"&&this[VE](null,0),this}write(e,r){return typeof e==\"string\"&&(e=Buffer.from(e,r)),this[G1]?(this.emit(\"error\",new Error(\"write() after end()\")),!1):this[Gn]===null||this[WE]||this[uA].length?(this[uA].push(e),this[Ib]=!0,!1):(this[WE]=!0,this[vb](e),!0)}[vb](e){Qa.write(this[Gn],e,0,e.length,this[Ld],(r,o)=>this[VE](r,o))}[VE](e,r){e?this[JE](e):(this[Ld]!==null&&(this[Ld]+=r),this[uA].length?this[v3]():(this[WE]=!1,this[G1]&&!this[sAe]?(this[sAe]=!0,this[Yc](),this.emit(\"finish\")):this[Ib]&&(this[Ib]=!1,this.emit(\"drain\"))))}[v3](){if(this[uA].length===0)this[G1]&&this[VE](null,0);else if(this[uA].length===1)this[vb](this[uA].pop());else{let e=this[uA];this[uA]=[],P3(this[Gn],e,this[Ld],(r,o)=>this[VE](r,o))}}[Yc](){if(this[XE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}},k3=class extends xb{[Ch](){let e;if(this[Db]&&this[Eh]===\"r+\")try{e=Qa.openSync(this[jf],this[Eh],this[Pb])}catch(r){if(r.code===\"ENOENT\")return this[Eh]=\"w\",this[Ch]();throw r}else e=Qa.openSync(this[jf],this[Eh],this[Pb]);this[ZE](null,e)}[Yc](){if(this[XE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.closeSync(e),this.emit(\"close\")}}[vb](e){let r=!0;try{this[VE](null,Qa.writeSync(this[Gn],e,0,e.length,this[Ld])),r=!1}finally{if(r)try{this[Yc]()}catch{}}}};Y1.ReadStream=Sb;Y1.ReadStreamSync=b3;Y1.WriteStream=xb;Y1.WriteStreamSync=k3});var Nb=_((cUt,hAe)=>{\"use strict\";var Plt=ob(),Slt=qE(),xlt=Be(\"events\"),blt=BP(),klt=1024*1024,Qlt=nb(),lAe=sb(),Flt=WU(),Q3=Buffer.from([31,139]),Xl=Symbol(\"state\"),Md=Symbol(\"writeEntry\"),qf=Symbol(\"readEntry\"),F3=Symbol(\"nextEntry\"),cAe=Symbol(\"processEntry\"),Zl=Symbol(\"extendedHeader\"),W1=Symbol(\"globalExtendedHeader\"),wh=Symbol(\"meta\"),uAe=Symbol(\"emitMeta\"),fi=Symbol(\"buffer\"),Gf=Symbol(\"queue\"),Od=Symbol(\"ended\"),AAe=Symbol(\"emittedEnd\"),Ud=Symbol(\"emit\"),Fa=Symbol(\"unzip\"),bb=Symbol(\"consumeChunk\"),kb=Symbol(\"consumeChunkSub\"),T3=Symbol(\"consumeBody\"),fAe=Symbol(\"consumeMeta\"),pAe=Symbol(\"consumeHeader\"),Qb=Symbol(\"consuming\"),R3=Symbol(\"bufferConcat\"),N3=Symbol(\"maybeEnd\"),V1=Symbol(\"writing\"),Ih=Symbol(\"aborted\"),Fb=Symbol(\"onDone\"),_d=Symbol(\"sawValidEntry\"),Tb=Symbol(\"sawNullBlock\"),Rb=Symbol(\"sawEOF\"),Tlt=t=>!0;hAe.exports=Plt(class extends xlt{constructor(e){e=e||{},super(e),this.file=e.file||\"\",this[_d]=null,this.on(Fb,r=>{(this[Xl]===\"begin\"||this[_d]===!1)&&this.warn(\"TAR_BAD_ARCHIVE\",\"Unrecognized archive format\")}),e.ondone?this.on(Fb,e.ondone):this.on(Fb,r=>{this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||klt,this.filter=typeof e.filter==\"function\"?e.filter:Tlt,this.writable=!0,this.readable=!1,this[Gf]=new blt,this[fi]=null,this[qf]=null,this[Md]=null,this[Xl]=\"begin\",this[wh]=\"\",this[Zl]=null,this[W1]=null,this[Od]=!1,this[Fa]=null,this[Ih]=!1,this[Tb]=!1,this[Rb]=!1,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),typeof e.onentry==\"function\"&&this.on(\"entry\",e.onentry)}[pAe](e,r){this[_d]===null&&(this[_d]=!1);let o;try{o=new Slt(e,r,this[Zl],this[W1])}catch(a){return this.warn(\"TAR_ENTRY_INVALID\",a)}if(o.nullBlock)this[Tb]?(this[Rb]=!0,this[Xl]===\"begin\"&&(this[Xl]=\"header\"),this[Ud](\"eof\")):(this[Tb]=!0,this[Ud](\"nullBlock\"));else if(this[Tb]=!1,!o.cksumValid)this.warn(\"TAR_ENTRY_INVALID\",\"checksum failure\",{header:o});else if(!o.path)this.warn(\"TAR_ENTRY_INVALID\",\"path is required\",{header:o});else{let a=o.type;if(/^(Symbolic)?Link$/.test(a)&&!o.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath required\",{header:o});else if(!/^(Symbolic)?Link$/.test(a)&&o.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath forbidden\",{header:o});else{let n=this[Md]=new Qlt(o,this[Zl],this[W1]);if(!this[_d])if(n.remain){let u=()=>{n.invalid||(this[_d]=!0)};n.on(\"end\",u)}else this[_d]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Ud](\"ignoredEntry\",n),this[Xl]=\"ignore\",n.resume()):n.size>0&&(this[wh]=\"\",n.on(\"data\",u=>this[wh]+=u),this[Xl]=\"meta\"):(this[Zl]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Ud](\"ignoredEntry\",n),this[Xl]=n.remain?\"ignore\":\"header\",n.resume()):(n.remain?this[Xl]=\"body\":(this[Xl]=\"header\",n.end()),this[qf]?this[Gf].push(n):(this[Gf].push(n),this[F3]())))}}}[cAe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[qf]=e,this.emit(\"entry\",e),e.emittedEnd||(e.on(\"end\",o=>this[F3]()),r=!1)):(this[qf]=null,r=!1),r}[F3](){do;while(this[cAe](this[Gf].shift()));if(!this[Gf].length){let e=this[qf];!e||e.flowing||e.size===e.remain?this[V1]||this.emit(\"drain\"):e.once(\"drain\",o=>this.emit(\"drain\"))}}[T3](e,r){let o=this[Md],a=o.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return o.write(n),o.blockRemain||(this[Xl]=\"header\",this[Md]=null,o.end()),n.length}[fAe](e,r){let o=this[Md],a=this[T3](e,r);return this[Md]||this[uAe](o),a}[Ud](e,r,o){!this[Gf].length&&!this[qf]?this.emit(e,r,o):this[Gf].push([e,r,o])}[uAe](e){switch(this[Ud](\"meta\",this[wh]),e.type){case\"ExtendedHeader\":case\"OldExtendedHeader\":this[Zl]=lAe.parse(this[wh],this[Zl],!1);break;case\"GlobalExtendedHeader\":this[W1]=lAe.parse(this[wh],this[W1],!0);break;case\"NextFileHasLongPath\":case\"OldGnuLongPath\":this[Zl]=this[Zl]||Object.create(null),this[Zl].path=this[wh].replace(/\\0.*/,\"\");break;case\"NextFileHasLongLinkpath\":this[Zl]=this[Zl]||Object.create(null),this[Zl].linkpath=this[wh].replace(/\\0.*/,\"\");break;default:throw new Error(\"unknown meta: \"+e.type)}}abort(e){this[Ih]=!0,this.emit(\"abort\",e),this.warn(\"TAR_ABORT\",e,{recoverable:!1})}write(e){if(this[Ih])return;if(this[Fa]===null&&e){if(this[fi]&&(e=Buffer.concat([this[fi],e]),this[fi]=null),e.length<Q3.length)return this[fi]=e,!0;for(let o=0;this[Fa]===null&&o<Q3.length;o++)e[o]!==Q3[o]&&(this[Fa]=!1);if(this[Fa]===null){let o=this[Od];this[Od]=!1,this[Fa]=new Flt.Unzip,this[Fa].on(\"data\",n=>this[bb](n)),this[Fa].on(\"error\",n=>this.abort(n)),this[Fa].on(\"end\",n=>{this[Od]=!0,this[bb]()}),this[V1]=!0;let a=this[Fa][o?\"end\":\"write\"](e);return this[V1]=!1,a}}this[V1]=!0,this[Fa]?this[Fa].write(e):this[bb](e),this[V1]=!1;let r=this[Gf].length?!1:this[qf]?this[qf].flowing:!0;return!r&&!this[Gf].length&&this[qf].once(\"drain\",o=>this.emit(\"drain\")),r}[R3](e){e&&!this[Ih]&&(this[fi]=this[fi]?Buffer.concat([this[fi],e]):e)}[N3](){if(this[Od]&&!this[AAe]&&!this[Ih]&&!this[Qb]){this[AAe]=!0;let e=this[Md];if(e&&e.blockRemain){let r=this[fi]?this[fi].length:0;this.warn(\"TAR_BAD_ARCHIVE\",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[fi]&&e.write(this[fi]),e.end()}this[Ud](Fb)}}[bb](e){if(this[Qb])this[R3](e);else if(!e&&!this[fi])this[N3]();else{if(this[Qb]=!0,this[fi]){this[R3](e);let r=this[fi];this[fi]=null,this[kb](r)}else this[kb](e);for(;this[fi]&&this[fi].length>=512&&!this[Ih]&&!this[Rb];){let r=this[fi];this[fi]=null,this[kb](r)}this[Qb]=!1}(!this[fi]||this[Od])&&this[N3]()}[kb](e){let r=0,o=e.length;for(;r+512<=o&&!this[Ih]&&!this[Rb];)switch(this[Xl]){case\"begin\":case\"header\":this[pAe](e,r),r+=512;break;case\"ignore\":case\"body\":r+=this[T3](e,r);break;case\"meta\":r+=this[fAe](e,r);break;default:throw new Error(\"invalid state: \"+this[Xl])}r<o&&(this[fi]?this[fi]=Buffer.concat([e.slice(r),this[fi]]):this[fi]=e.slice(r))}end(e){this[Ih]||(this[Fa]?this[Fa].end(e):(this[Od]=!0,this.write(e)))}})});var Lb=_((uUt,yAe)=>{\"use strict\";var Rlt=LE(),dAe=Nb(),eC=Be(\"fs\"),Nlt=$E(),gAe=Be(\"path\"),L3=GE();yAe.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=Rlt(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Mlt(o,e),o.noResume||Llt(o),o.file&&o.sync?Olt(o):o.file?Ult(o,r):mAe(o)};var Llt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},Mlt=(t,e)=>{let r=new Map(e.map(n=>[L3(n),!0])),o=t.filter,a=(n,u)=>{let A=u||gAe.parse(n).root||\".\",p=n===A?!1:r.has(n)?r.get(n):a(gAe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(L3(n)):n=>a(L3(n))},Olt=t=>{let e=mAe(t),r=t.file,o=!0,a;try{let n=eC.statSync(r),u=t.maxReadSize||16*1024*1024;if(n.size<u)e.end(eC.readFileSync(r));else{let A=0,p=Buffer.allocUnsafe(u);for(a=eC.openSync(r,\"r\");A<n.size;){let h=eC.readSync(a,p,0,u,A);A+=h,e.write(p.slice(0,h))}e.end()}o=!1}finally{if(o&&a)try{eC.closeSync(a)}catch{}}},Ult=(t,e)=>{let r=new dAe(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on(\"error\",A),r.on(\"end\",u),eC.stat(a,(p,h)=>{if(p)A(p);else{let E=new Nlt.ReadStream(a,{readSize:o,size:h.size});E.on(\"error\",A),E.pipe(r)}})});return e?n.then(e,e):n},mAe=t=>new dAe(t)});var vAe=_((AUt,BAe)=>{\"use strict\";var _lt=LE(),Mb=wb(),EAe=$E(),CAe=Lb(),wAe=Be(\"path\");BAe.exports=(t,e,r)=>{if(typeof e==\"function\"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");e=Array.from(e);let o=_lt(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return o.file&&o.sync?Hlt(o,e):o.file?jlt(o,e,r):o.sync?qlt(o,e):Glt(o,e)};var Hlt=(t,e)=>{let r=new Mb.Sync(t),o=new EAe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(o),IAe(r,e)},jlt=(t,e,r)=>{let o=new Mb(t),a=new EAe.WriteStream(t.file,{mode:t.mode||438});o.pipe(a);let n=new Promise((u,A)=>{a.on(\"error\",A),a.on(\"close\",u),o.on(\"error\",A)});return M3(o,e),r?n.then(r,r):n},IAe=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?CAe({file:wAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},M3=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return CAe({file:wAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>M3(t,e));t.add(r)}t.end()},qlt=(t,e)=>{let r=new Mb.Sync(t);return IAe(r,e),r},Glt=(t,e)=>{let r=new Mb(t);return M3(r,e),r}});var O3=_((fUt,QAe)=>{\"use strict\";var Ylt=LE(),DAe=wb(),Al=Be(\"fs\"),PAe=$E(),SAe=Lb(),xAe=Be(\"path\"),bAe=qE();QAe.exports=(t,e,r)=>{let o=Ylt(t);if(!o.file)throw new TypeError(\"file is required\");if(o.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),o.sync?Wlt(o,e):Klt(o,e,r)};var Wlt=(t,e)=>{let r=new DAe.Sync(t),o=!0,a,n;try{try{a=Al.openSync(t.file,\"r+\")}catch(p){if(p.code===\"ENOENT\")a=Al.openSync(t.file,\"w+\");else throw p}let u=Al.fstatSync(a),A=Buffer.alloc(512);e:for(n=0;n<u.size;n+=512){for(let E=0,I=0;E<512;E+=I){if(I=Al.readSync(a,A,E,A.length-E,n+E),n===0&&A[0]===31&&A[1]===139)throw new Error(\"cannot append to compressed archives\");if(!I)break e}let p=new bAe(A);if(!p.cksumValid)break;let h=512*Math.ceil(p.size/512);if(n+h+512>u.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}o=!1,Vlt(t,r,n,a,e)}finally{if(o)try{Al.closeSync(a)}catch{}}},Vlt=(t,e,r,o,a)=>{let n=new PAe.WriteStreamSync(t.file,{fd:o,start:r});e.pipe(n),Jlt(e,a)},Klt=(t,e,r)=>{e=Array.from(e);let o=new DAe(t),a=(u,A,p)=>{let h=(C,T)=>{C?Al.close(u,L=>p(C)):p(null,T)},E=0;if(A===0)return h(null,0);let I=0,v=Buffer.alloc(512),b=(C,T)=>{if(C)return h(C);if(I+=T,I<512&&T)return Al.read(u,v,I,v.length-I,E+I,b);if(E===0&&v[0]===31&&v[1]===139)return h(new Error(\"cannot append to compressed archives\"));if(I<512)return h(null,E);let L=new bAe(v);if(!L.cksumValid)return h(null,E);let U=512*Math.ceil(L.size/512);if(E+U+512>A||(E+=U+512,E>=A))return h(null,E);t.mtimeCache&&t.mtimeCache.set(L.path,L.mtime),I=0,Al.read(u,v,0,512,E,b)};Al.read(u,v,0,512,E,b)},n=new Promise((u,A)=>{o.on(\"error\",A);let p=\"r+\",h=(E,I)=>{if(E&&E.code===\"ENOENT\"&&p===\"r+\")return p=\"w+\",Al.open(t.file,p,h);if(E)return A(E);Al.fstat(I,(v,b)=>{if(v)return Al.close(I,()=>A(v));a(I,b.size,(C,T)=>{if(C)return A(C);let L=new PAe.WriteStream(t.file,{fd:I,start:T});o.pipe(L),L.on(\"error\",A),L.on(\"close\",u),kAe(o,e)})})};Al.open(t.file,p,h)});return r?n.then(r,r):n},Jlt=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?SAe({file:xAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},kAe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return SAe({file:xAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>kAe(t,e));t.add(r)}t.end()}});var TAe=_((pUt,FAe)=>{\"use strict\";var zlt=LE(),Xlt=O3();FAe.exports=(t,e,r)=>{let o=zlt(t);if(!o.file)throw new TypeError(\"file is required\");if(o.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),Zlt(o),Xlt(o,e,r)};var Zlt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,o)=>e(r,o)&&!(t.mtimeCache.get(r)>o.mtime):(r,o)=>!(t.mtimeCache.get(r)>o.mtime)}});var LAe=_((hUt,NAe)=>{var{promisify:RAe}=Be(\"util\"),Bh=Be(\"fs\"),$lt=t=>{if(!t)t={mode:511,fs:Bh};else if(typeof t==\"object\")t={mode:511,fs:Bh,...t};else if(typeof t==\"number\")t={mode:t,fs:Bh};else if(typeof t==\"string\")t={mode:parseInt(t,8),fs:Bh};else throw new TypeError(\"invalid options argument\");return t.mkdir=t.mkdir||t.fs.mkdir||Bh.mkdir,t.mkdirAsync=RAe(t.mkdir),t.stat=t.stat||t.fs.stat||Bh.stat,t.statAsync=RAe(t.stat),t.statSync=t.statSync||t.fs.statSync||Bh.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||Bh.mkdirSync,t};NAe.exports=$lt});var OAe=_((gUt,MAe)=>{var ect=process.platform,{resolve:tct,parse:rct}=Be(\"path\"),nct=t=>{if(/\\0/.test(t))throw Object.assign(new TypeError(\"path must be a string without null bytes\"),{path:t,code:\"ERR_INVALID_ARG_VALUE\"});if(t=tct(t),ect===\"win32\"){let e=/[*|\"<>?:]/,{root:r}=rct(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error(\"Illegal characters in path.\"),{path:t,code:\"EINVAL\"})}return t};MAe.exports=nct});var qAe=_((dUt,jAe)=>{var{dirname:UAe}=Be(\"path\"),_Ae=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(o=>o.isDirectory()?r:void 0,o=>o.code===\"ENOENT\"?_Ae(t,UAe(e),e):void 0),HAe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(o){return o.code===\"ENOENT\"?HAe(t,UAe(e),e):void 0}};jAe.exports={findMade:_Ae,findMadeSync:HAe}});var H3=_((mUt,YAe)=>{var{dirname:GAe}=Be(\"path\"),U3=(t,e,r)=>{e.recursive=!1;let o=GAe(t);return o===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!==\"EISDIR\")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code===\"ENOENT\")return U3(o,e).then(n=>U3(t,e,n));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},_3=(t,e,r)=>{let o=GAe(t);if(e.recursive=!1,o===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!==\"EISDIR\")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code===\"ENOENT\")return _3(t,e,_3(o,e,r));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};YAe.exports={mkdirpManual:U3,mkdirpManualSync:_3}});var KAe=_((yUt,VAe)=>{var{dirname:WAe}=Be(\"path\"),{findMade:ict,findMadeSync:sct}=qAe(),{mkdirpManual:oct,mkdirpManualSync:act}=H3(),lct=(t,e)=>(e.recursive=!0,WAe(t)===t?e.mkdirAsync(t,e):ict(e,t).then(o=>e.mkdirAsync(t,e).then(()=>o).catch(a=>{if(a.code===\"ENOENT\")return oct(t,e);throw a}))),cct=(t,e)=>{if(e.recursive=!0,WAe(t)===t)return e.mkdirSync(t,e);let o=sct(e,t);try{return e.mkdirSync(t,e),o}catch(a){if(a.code===\"ENOENT\")return act(t,e);throw a}};VAe.exports={mkdirpNative:lct,mkdirpNativeSync:cct}});var ZAe=_((EUt,XAe)=>{var JAe=Be(\"fs\"),uct=process.version,j3=uct.replace(/^v/,\"\").split(\".\"),zAe=+j3[0]>10||+j3[0]==10&&+j3[1]>=12,Act=zAe?t=>t.mkdir===JAe.mkdir:()=>!1,fct=zAe?t=>t.mkdirSync===JAe.mkdirSync:()=>!1;XAe.exports={useNative:Act,useNativeSync:fct}});var ife=_((CUt,nfe)=>{var tC=LAe(),rC=OAe(),{mkdirpNative:$Ae,mkdirpNativeSync:efe}=KAe(),{mkdirpManual:tfe,mkdirpManualSync:rfe}=H3(),{useNative:pct,useNativeSync:hct}=ZAe(),nC=(t,e)=>(t=rC(t),e=tC(e),pct(e)?$Ae(t,e):tfe(t,e)),gct=(t,e)=>(t=rC(t),e=tC(e),hct(e)?efe(t,e):rfe(t,e));nC.sync=gct;nC.native=(t,e)=>$Ae(rC(t),tC(e));nC.manual=(t,e)=>tfe(rC(t),tC(e));nC.nativeSync=(t,e)=>efe(rC(t),tC(e));nC.manualSync=(t,e)=>rfe(rC(t),tC(e));nfe.exports=nC});var Afe=_((wUt,ufe)=>{\"use strict\";var $l=Be(\"fs\"),Hd=Be(\"path\"),dct=$l.lchown?\"lchown\":\"chown\",mct=$l.lchownSync?\"lchownSync\":\"chownSync\",ofe=$l.lchown&&!process.version.match(/v1[1-9]+\\./)&&!process.version.match(/v10\\.[6-9]/),sfe=(t,e,r)=>{try{return $l[mct](t,e,r)}catch(o){if(o.code!==\"ENOENT\")throw o}},yct=(t,e,r)=>{try{return $l.chownSync(t,e,r)}catch(o){if(o.code!==\"ENOENT\")throw o}},Ect=ofe?(t,e,r,o)=>a=>{!a||a.code!==\"EISDIR\"?o(a):$l.chown(t,e,r,o)}:(t,e,r,o)=>o,q3=ofe?(t,e,r)=>{try{return sfe(t,e,r)}catch(o){if(o.code!==\"EISDIR\")throw o;yct(t,e,r)}}:(t,e,r)=>sfe(t,e,r),Cct=process.version,afe=(t,e,r)=>$l.readdir(t,e,r),wct=(t,e)=>$l.readdirSync(t,e);/^v4\\./.test(Cct)&&(afe=(t,e,r)=>$l.readdir(t,r));var Ob=(t,e,r,o)=>{$l[dct](t,e,r,Ect(t,e,r,a=>{o(a&&a.code!==\"ENOENT\"?a:null)}))},lfe=(t,e,r,o,a)=>{if(typeof e==\"string\")return $l.lstat(Hd.resolve(t,e),(n,u)=>{if(n)return a(n.code!==\"ENOENT\"?n:null);u.name=e,lfe(t,u,r,o,a)});if(e.isDirectory())G3(Hd.resolve(t,e.name),r,o,n=>{if(n)return a(n);let u=Hd.resolve(t,e.name);Ob(u,r,o,a)});else{let n=Hd.resolve(t,e.name);Ob(n,r,o,a)}},G3=(t,e,r,o)=>{afe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code===\"ENOENT\")return o();if(a.code!==\"ENOTDIR\"&&a.code!==\"ENOTSUP\")return o(a)}if(a||!n.length)return Ob(t,e,r,o);let u=n.length,A=null,p=h=>{if(!A){if(h)return o(A=h);if(--u===0)return Ob(t,e,r,o)}};n.forEach(h=>lfe(t,h,e,r,p))})},Ict=(t,e,r,o)=>{if(typeof e==\"string\")try{let a=$l.lstatSync(Hd.resolve(t,e));a.name=e,e=a}catch(a){if(a.code===\"ENOENT\")return;throw a}e.isDirectory()&&cfe(Hd.resolve(t,e.name),r,o),q3(Hd.resolve(t,e.name),r,o)},cfe=(t,e,r)=>{let o;try{o=wct(t,{withFileTypes:!0})}catch(a){if(a.code===\"ENOENT\")return;if(a.code===\"ENOTDIR\"||a.code===\"ENOTSUP\")return q3(t,e,r);throw a}return o&&o.length&&o.forEach(a=>Ict(t,a,e,r)),q3(t,e,r)};ufe.exports=G3;G3.sync=cfe});var gfe=_((IUt,Y3)=>{\"use strict\";var ffe=ife(),ec=Be(\"fs\"),Ub=Be(\"path\"),pfe=Afe(),Wc=HE(),_b=class extends Error{constructor(e,r){super(\"Cannot extract through symbolic link\"),this.path=r,this.symlink=e}get name(){return\"SylinkError\"}},Hb=class extends Error{constructor(e,r){super(r+\": Cannot cd into '\"+e+\"'\"),this.path=e,this.code=r}get name(){return\"CwdError\"}},jb=(t,e)=>t.get(Wc(e)),K1=(t,e,r)=>t.set(Wc(e),r),Bct=(t,e)=>{ec.stat(t,(r,o)=>{(r||!o.isDirectory())&&(r=new Hb(t,r&&r.code||\"ENOTDIR\")),e(r)})};Y3.exports=(t,e,r)=>{t=Wc(t);let o=e.umask,a=e.mode|448,n=(a&o)!==0,u=e.uid,A=e.gid,p=typeof u==\"number\"&&typeof A==\"number\"&&(u!==e.processUid||A!==e.processGid),h=e.preserve,E=e.unlink,I=e.cache,v=Wc(e.cwd),b=(L,U)=>{L?r(L):(K1(I,t,!0),U&&p?pfe(U,u,A,J=>b(J)):n?ec.chmod(t,a,r):r())};if(I&&jb(I,t)===!0)return b();if(t===v)return Bct(t,b);if(h)return ffe(t,{mode:a}).then(L=>b(null,L),b);let T=Wc(Ub.relative(v,t)).split(\"/\");qb(v,T,a,I,E,v,null,b)};var qb=(t,e,r,o,a,n,u,A)=>{if(!e.length)return A(null,u);let p=e.shift(),h=Wc(Ub.resolve(t+\"/\"+p));if(jb(o,h))return qb(h,e,r,o,a,n,u,A);ec.mkdir(h,r,hfe(h,e,r,o,a,n,u,A))},hfe=(t,e,r,o,a,n,u,A)=>p=>{p?ec.lstat(t,(h,E)=>{if(h)h.path=h.path&&Wc(h.path),A(h);else if(E.isDirectory())qb(t,e,r,o,a,n,u,A);else if(a)ec.unlink(t,I=>{if(I)return A(I);ec.mkdir(t,r,hfe(t,e,r,o,a,n,u,A))});else{if(E.isSymbolicLink())return A(new _b(t,t+\"/\"+e.join(\"/\")));A(p)}}):(u=u||t,qb(t,e,r,o,a,n,u,A))},vct=t=>{let e=!1,r=\"ENOTDIR\";try{e=ec.statSync(t).isDirectory()}catch(o){r=o.code}finally{if(!e)throw new Hb(t,r)}};Y3.exports.sync=(t,e)=>{t=Wc(t);let r=e.umask,o=e.mode|448,a=(o&r)!==0,n=e.uid,u=e.gid,A=typeof n==\"number\"&&typeof u==\"number\"&&(n!==e.processUid||u!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,I=Wc(e.cwd),v=L=>{K1(E,t,!0),L&&A&&pfe.sync(L,n,u),a&&ec.chmodSync(t,o)};if(E&&jb(E,t)===!0)return v();if(t===I)return vct(I),v();if(p)return v(ffe.sync(t,o));let C=Wc(Ub.relative(I,t)).split(\"/\"),T=null;for(let L=C.shift(),U=I;L&&(U+=\"/\"+L);L=C.shift())if(U=Wc(Ub.resolve(U)),!jb(E,U))try{ec.mkdirSync(U,o),T=T||U,K1(E,U,!0)}catch{let te=ec.lstatSync(U);if(te.isDirectory()){K1(E,U,!0);continue}else if(h){ec.unlinkSync(U),ec.mkdirSync(U,o),T=T||U,K1(E,U,!0);continue}else if(te.isSymbolicLink())return new _b(U,U+\"/\"+C.join(\"/\"))}return v(T)}});var V3=_((BUt,dfe)=>{var W3=Object.create(null),{hasOwnProperty:Dct}=Object.prototype;dfe.exports=t=>(Dct.call(W3,t)||(W3[t]=t.normalize(\"NFKD\")),W3[t])});var Cfe=_((vUt,Efe)=>{var mfe=Be(\"assert\"),Pct=V3(),Sct=GE(),{join:yfe}=Be(\"path\"),xct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,bct=xct===\"win32\";Efe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split(\"/\").slice(0,-1).reduce((I,v)=>(I.length&&(v=yfe(I[I.length-1],v)),I.push(v||\"/\"),I),[]),o=new Set,a=h=>{let E=e.get(h);if(!E)throw new Error(\"function does not have any path reservations\");return{paths:E.paths.map(I=>t.get(I)),dirs:[...E.dirs].map(I=>t.get(I))}},n=h=>{let{paths:E,dirs:I}=a(h);return E.every(v=>v[0]===h)&&I.every(v=>v[0]instanceof Set&&v[0].has(h))},u=h=>o.has(h)||!n(h)?!1:(o.add(h),h(()=>A(h)),!0),A=h=>{if(!o.has(h))return!1;let{paths:E,dirs:I}=e.get(h),v=new Set;return E.forEach(b=>{let C=t.get(b);mfe.equal(C[0],h),C.length===1?t.delete(b):(C.shift(),typeof C[0]==\"function\"?v.add(C[0]):C[0].forEach(T=>v.add(T)))}),I.forEach(b=>{let C=t.get(b);mfe(C[0]instanceof Set),C[0].size===1&&C.length===1?t.delete(b):C[0].size===1?(C.shift(),v.add(C[0])):C[0].delete(h)}),o.delete(h),v.forEach(b=>u(b)),!0};return{check:n,reserve:(h,E)=>{h=bct?[\"win32 parallelization disabled\"]:h.map(v=>Pct(Sct(yfe(v))).toLowerCase());let I=new Set(h.map(v=>r(v)).reduce((v,b)=>v.concat(b)));return e.set(E,{dirs:I,paths:h}),h.forEach(v=>{let b=t.get(v);b?b.push(E):t.set(v,[E])}),I.forEach(v=>{let b=t.get(v);b?b[b.length-1]instanceof Set?b[b.length-1].add(E):b.push(new Set([E])):t.set(v,[new Set([E])])}),u(E)}}}});var Bfe=_((DUt,Ife)=>{var kct=process.platform,Qct=kct===\"win32\",Fct=global.__FAKE_TESTING_FS__||Be(\"fs\"),{O_CREAT:Tct,O_TRUNC:Rct,O_WRONLY:Nct,UV_FS_O_FILEMAP:wfe=0}=Fct.constants,Lct=Qct&&!!wfe,Mct=512*1024,Oct=wfe|Rct|Tct|Nct;Ife.exports=Lct?t=>t<Mct?Oct:\"w\":()=>\"w\"});var r_=_((PUt,Mfe)=>{\"use strict\";var Uct=Be(\"assert\"),_ct=Nb(),vn=Be(\"fs\"),Hct=$E(),Yf=Be(\"path\"),Rfe=gfe(),vfe=r3(),jct=Cfe(),qct=n3(),fl=HE(),Gct=GE(),Yct=V3(),Dfe=Symbol(\"onEntry\"),z3=Symbol(\"checkFs\"),Pfe=Symbol(\"checkFs2\"),Wb=Symbol(\"pruneCache\"),X3=Symbol(\"isReusable\"),tc=Symbol(\"makeFs\"),Z3=Symbol(\"file\"),$3=Symbol(\"directory\"),Vb=Symbol(\"link\"),Sfe=Symbol(\"symlink\"),xfe=Symbol(\"hardlink\"),bfe=Symbol(\"unsupported\"),kfe=Symbol(\"checkPath\"),vh=Symbol(\"mkdir\"),Ro=Symbol(\"onError\"),Gb=Symbol(\"pending\"),Qfe=Symbol(\"pend\"),iC=Symbol(\"unpend\"),K3=Symbol(\"ended\"),J3=Symbol(\"maybeClose\"),e_=Symbol(\"skip\"),J1=Symbol(\"doChown\"),z1=Symbol(\"uid\"),X1=Symbol(\"gid\"),Z1=Symbol(\"checkedCwd\"),Nfe=Be(\"crypto\"),Lfe=Bfe(),Wct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,$1=Wct===\"win32\",Vct=(t,e)=>{if(!$1)return vn.unlink(t,e);let r=t+\".DELETE.\"+Nfe.randomBytes(16).toString(\"hex\");vn.rename(t,r,o=>{if(o)return e(o);vn.unlink(r,e)})},Kct=t=>{if(!$1)return vn.unlinkSync(t);let e=t+\".DELETE.\"+Nfe.randomBytes(16).toString(\"hex\");vn.renameSync(t,e),vn.unlinkSync(e)},Ffe=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Tfe=t=>Yct(Gct(fl(t))).toLowerCase(),Jct=(t,e)=>{e=Tfe(e);for(let r of t.keys()){let o=Tfe(r);(o===e||o.indexOf(e+\"/\")===0)&&t.delete(r)}},zct=t=>{for(let e of t.keys())t.delete(e)},e2=class extends _ct{constructor(e){if(e||(e={}),e.ondone=r=>{this[K3]=!0,this[J3]()},super(e),this[Z1]=!1,this.reservations=jct(),this.transform=typeof e.transform==\"function\"?e.transform:null,this.writable=!0,this.readable=!1,this[Gb]=0,this[K3]=!1,this.dirCache=e.dirCache||new Map,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=null,this.gid=null,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():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||$1,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=fl(Yf.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),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\",r=>this[Dfe](r))}warn(e,r,o={}){return(e===\"TAR_BAD_ARCHIVE\"||e===\"TAR_ABORT\")&&(o.recoverable=!1),super.warn(e,r,o)}[J3](){this[K3]&&this[Gb]===0&&(this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\"))}[kfe](e){if(this.strip){let r=fl(e.path).split(\"/\");if(r.length<this.strip)return!1;if(e.path=r.slice(this.strip).join(\"/\"),e.type===\"Link\"){let o=fl(e.linkpath).split(\"/\");if(o.length>=this.strip)e.linkpath=o.slice(this.strip).join(\"/\");else return!1}}if(!this.preservePaths){let r=fl(e.path),o=r.split(\"/\");if(o.includes(\"..\")||$1&&/^[a-z]:\\.\\.$/i.test(o[0]))return this.warn(\"TAR_ENTRY_ERROR\",\"path contains '..'\",{entry:e,path:r}),!1;let[a,n]=qct(r);a&&(e.path=n,this.warn(\"TAR_ENTRY_INFO\",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Yf.isAbsolute(e.path)?e.absolute=fl(Yf.resolve(e.path)):e.absolute=fl(Yf.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+\"/\")!==0&&e.absolute!==this.cwd)return this.warn(\"TAR_ENTRY_ERROR\",\"path escaped extraction target\",{entry:e,path:fl(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}=Yf.win32.parse(e.absolute);e.absolute=r+vfe.encode(e.absolute.substr(r.length));let{root:o}=Yf.win32.parse(e.path);e.path=o+vfe.encode(e.path.substr(o.length))}return!0}[Dfe](e){if(!this[kfe](e))return e.resume();switch(Uct.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[z3](e);case\"CharacterDevice\":case\"BlockDevice\":case\"FIFO\":default:return this[bfe](e)}}[Ro](e,r){e.name===\"CwdError\"?this.emit(\"error\",e):(this.warn(\"TAR_ENTRY_ERROR\",e,{entry:r}),this[iC](),r.resume())}[vh](e,r,o){Rfe(fl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},o)}[J1](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}[z1](e){return Ffe(this.uid,e.uid,this.processUid)}[X1](e){return Ffe(this.gid,e.gid,this.processGid)}[Z3](e,r){let o=e.mode&4095||this.fmode,a=new Hct.WriteStream(e.absolute,{flags:Lfe(e.size),mode:o,autoClose:!1});a.on(\"error\",p=>{a.fd&&vn.close(a.fd,()=>{}),a.write=()=>!0,this[Ro](p,e),r()});let n=1,u=p=>{if(p){a.fd&&vn.close(a.fd,()=>{}),this[Ro](p,e),r();return}--n===0&&vn.close(a.fd,h=>{h?this[Ro](h,e):this[iC](),r()})};a.on(\"finish\",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let I=e.atime||new Date,v=e.mtime;vn.futimes(E,I,v,b=>b?vn.utimes(h,I,v,C=>u(C&&b)):u())}if(this[J1](e)){n++;let I=this[z1](e),v=this[X1](e);vn.fchown(E,I,v,b=>b?vn.chown(h,I,v,C=>u(C&&b)):u())}u()});let A=this.transform&&this.transform(e)||e;A!==e&&(A.on(\"error\",p=>{this[Ro](p,e),r()}),e.pipe(A)),A.pipe(a)}[$3](e,r){let o=e.mode&4095||this.dmode;this[vh](e.absolute,o,a=>{if(a){this[Ro](a,e),r();return}let n=1,u=A=>{--n===0&&(r(),this[iC](),e.resume())};e.mtime&&!this.noMtime&&(n++,vn.utimes(e.absolute,e.atime||new Date,e.mtime,u)),this[J1](e)&&(n++,vn.chown(e.absolute,this[z1](e),this[X1](e),u)),u()})}[bfe](e){e.unsupported=!0,this.warn(\"TAR_ENTRY_UNSUPPORTED\",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Sfe](e,r){this[Vb](e,e.linkpath,\"symlink\",r)}[xfe](e,r){let o=fl(Yf.resolve(this.cwd,e.linkpath));this[Vb](e,o,\"link\",r)}[Qfe](){this[Gb]++}[iC](){this[Gb]--,this[J3]()}[e_](e){this[iC](),e.resume()}[X3](e,r){return e.type===\"File\"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!$1}[z3](e){this[Qfe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,o=>this[Pfe](e,o))}[Wb](e){e.type===\"SymbolicLink\"?zct(this.dirCache):e.type!==\"Directory\"&&Jct(this.dirCache,e.absolute)}[Pfe](e,r){this[Wb](e);let o=A=>{this[Wb](e),r(A)},a=()=>{this[vh](this.cwd,this.dmode,A=>{if(A){this[Ro](A,e),o();return}this[Z1]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let A=fl(Yf.dirname(e.absolute));if(A!==this.cwd)return this[vh](A,this.dmode,p=>{if(p){this[Ro](p,e),o();return}u()})}u()},u=()=>{vn.lstat(e.absolute,(A,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[e_](e),o();return}if(A||this[X3](e,p))return this[tc](null,e,o);if(p.isDirectory()){if(e.type===\"Directory\"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=I=>this[tc](I,e,o);return h?vn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return vn.rmdir(e.absolute,h=>this[tc](h,e,o))}if(e.absolute===this.cwd)return this[tc](null,e,o);Vct(e.absolute,h=>this[tc](h,e,o))})};this[Z1]?n():a()}[tc](e,r,o){if(e){this[Ro](e,r),o();return}switch(r.type){case\"File\":case\"OldFile\":case\"ContiguousFile\":return this[Z3](r,o);case\"Link\":return this[xfe](r,o);case\"SymbolicLink\":return this[Sfe](r,o);case\"Directory\":case\"GNUDumpDir\":return this[$3](r,o)}}[Vb](e,r,o,a){vn[o](r,e.absolute,n=>{n?this[Ro](n,e):(this[iC](),e.resume()),a()})}},Yb=t=>{try{return[null,t()]}catch(e){return[e,null]}},t_=class extends e2{[tc](e,r){return super[tc](e,r,()=>{})}[z3](e){if(this[Wb](e),!this[Z1]){let n=this[vh](this.cwd,this.dmode);if(n)return this[Ro](n,e);this[Z1]=!0}if(e.absolute!==this.cwd){let n=fl(Yf.dirname(e.absolute));if(n!==this.cwd){let u=this[vh](n,this.dmode);if(u)return this[Ro](u,e)}}let[r,o]=Yb(()=>vn.lstatSync(e.absolute));if(o&&(this.keep||this.newer&&o.mtime>e.mtime))return this[e_](e);if(r||this[X3](e,o))return this[tc](null,e);if(o.isDirectory()){if(e.type===\"Directory\"){let u=!this.noChmod&&e.mode&&(o.mode&4095)!==e.mode,[A]=u?Yb(()=>{vn.chmodSync(e.absolute,e.mode)}):[];return this[tc](A,e)}let[n]=Yb(()=>vn.rmdirSync(e.absolute));this[tc](n,e)}let[a]=e.absolute===this.cwd?[]:Yb(()=>Kct(e.absolute));this[tc](a,e)}[Z3](e,r){let o=e.mode&4095||this.fmode,a=A=>{let p;try{vn.closeSync(n)}catch(h){p=h}(A||p)&&this[Ro](A||p,e),r()},n;try{n=vn.openSync(e.absolute,Lfe(e.size),o)}catch(A){return a(A)}let u=this.transform&&this.transform(e)||e;u!==e&&(u.on(\"error\",A=>this[Ro](A,e)),e.pipe(u)),u.on(\"data\",A=>{try{vn.writeSync(n,A,0,A.length)}catch(p){a(p)}}),u.on(\"end\",A=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{vn.futimesSync(n,h,E)}catch(I){try{vn.utimesSync(e.absolute,h,E)}catch{p=I}}}if(this[J1](e)){let h=this[z1](e),E=this[X1](e);try{vn.fchownSync(n,h,E)}catch(I){try{vn.chownSync(e.absolute,h,E)}catch{p=p||I}}}a(p)})}[$3](e,r){let o=e.mode&4095||this.dmode,a=this[vh](e.absolute,o);if(a){this[Ro](a,e),r();return}if(e.mtime&&!this.noMtime)try{vn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[J1](e))try{vn.chownSync(e.absolute,this[z1](e),this[X1](e))}catch{}r(),e.resume()}[vh](e,r){try{return Rfe.sync(fl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(o){return o}}[Vb](e,r,o,a){try{vn[o+\"Sync\"](r,e.absolute),a(),e.resume()}catch(n){return this[Ro](n,e)}}};e2.Sync=t_;Mfe.exports=e2});var jfe=_((SUt,Hfe)=>{\"use strict\";var Xct=LE(),Kb=r_(),Ufe=Be(\"fs\"),_fe=$E(),Ofe=Be(\"path\"),n_=GE();Hfe.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=Xct(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Zct(o,e),o.file&&o.sync?$ct(o):o.file?eut(o,r):o.sync?tut(o):rut(o)};var Zct=(t,e)=>{let r=new Map(e.map(n=>[n_(n),!0])),o=t.filter,a=(n,u)=>{let A=u||Ofe.parse(n).root||\".\",p=n===A?!1:r.has(n)?r.get(n):a(Ofe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(n_(n)):n=>a(n_(n))},$ct=t=>{let e=new Kb.Sync(t),r=t.file,o=Ufe.statSync(r),a=t.maxReadSize||16*1024*1024;new _fe.ReadStreamSync(r,{readSize:a,size:o.size}).pipe(e)},eut=(t,e)=>{let r=new Kb(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on(\"error\",A),r.on(\"close\",u),Ufe.stat(a,(p,h)=>{if(p)A(p);else{let E=new _fe.ReadStream(a,{readSize:o,size:h.size});E.on(\"error\",A),E.pipe(r)}})});return e?n.then(e,e):n},tut=t=>new Kb.Sync(t),rut=t=>new Kb(t)});var qfe=_(us=>{\"use strict\";us.c=us.create=vAe();us.r=us.replace=O3();us.t=us.list=Lb();us.u=us.update=TAe();us.x=us.extract=jfe();us.Pack=wb();us.Unpack=r_();us.Parse=Nb();us.ReadEntry=nb();us.WriteEntry=p3();us.Header=qE();us.Pax=sb();us.types=JU()});var i_,Gfe,Dh,t2,r2,Yfe=Et(()=>{i_=$e(nd()),Gfe=Be(\"worker_threads\"),Dh=Symbol(\"kTaskInfo\"),t2=class{constructor(e,r){this.fn=e;this.limit=(0,i_.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},r2=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,i_.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let o=this.workers.pop();o?o.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new Gfe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,\"--unhandled-rejections=strict\"]});return e.on(\"message\",r=>{if(!e[Dh])throw new Error(\"Assertion failed: Worker sent a result without having a task assigned\");e[Dh].resolve(r),e[Dh]=null,e.unref(),this.workers.push(e)}),e.on(\"error\",r=>{e[Dh]?.reject(r),e[Dh]=null}),e.on(\"exit\",r=>{r!==0&&e[Dh]?.reject(new Error(`Worker exited with code ${r}`)),e[Dh]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((o,a)=>{r[Dh]={resolve:o,reject:a},r.postMessage(e)})})}}});var Vfe=_((QUt,Wfe)=>{var s_;Wfe.exports.getContent=()=>(typeof s_>\"u\"&&(s_=Be(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),s_)});var Xi={};Kt(Xi,{convertToZip:()=>out,convertToZipWorker:()=>l_,extractArchiveTo:()=>Zfe,getDefaultTaskPool:()=>zfe,getTaskPoolForConfiguration:()=>Xfe,makeArchiveFromDirectory:()=>sut});function nut(t,e){switch(t){case\"async\":return new t2(l_,{poolSize:e});case\"workers\":return new r2((0,a_.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function zfe(){return typeof o_>\"u\"&&(o_=nut(\"workers\",Ji.availableParallelism())),o_}function Xfe(t){return typeof t>\"u\"?zfe():ol(iut,t,()=>{let e=t.get(\"taskPoolMode\"),r=t.get(\"taskPoolConcurrency\");switch(e){case\"async\":return new t2(l_,{poolSize:r});case\"workers\":return new r2((0,a_.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function l_(t){let{tmpFile:e,tgz:r,compressionLevel:o,extractBufferOpts:a}=t,n=new zi(e,{create:!0,level:o,stats:Ea.makeDefaultStats()}),u=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await Zfe(u,n,a),n.saveAndClose(),e}async function sut(t,{baseFs:e=new Rn,prefixPath:r=Bt.root,compressionLevel:o,inMemory:a=!1}={}){let n;if(a)n=new zi(null,{level:o});else{let A=await oe.mktempPromise(),p=K.join(A,\"archive.zip\");n=new zi(p,{create:!0,level:o})}let u=K.resolve(Bt.root,r);return await n.copyPromise(u,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function out(t,e={}){let r=await oe.mktempPromise(),o=K.join(r,\"archive.zip\"),a=e.compressionLevel??e.configuration?.get(\"compressionLevel\")??\"mixed\",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??Xfe(e.configuration)).run({tmpFile:o,tgz:t,compressionLevel:a,extractBufferOpts:n}),new zi(o,{level:e.compressionLevel})}async function*aut(t){let e=new Jfe.default.Parse,r=new Kfe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on(\"entry\",o=>{r.write(o)}),e.on(\"error\",o=>{r.destroy(o)}),e.on(\"close\",()=>{r.destroyed||r.end()}),e.end(t);for await(let o of r){let a=o;yield a,a.resume()}}async function Zfe(t,e,{stripComponents:r=0,prefixPath:o=Bt.dot}={}){function a(n){if(n.path[0]===\"/\")return!0;let u=n.path.split(/\\//g);return!!(u.some(A=>A===\"..\")||u.length<=r)}for await(let n of aut(t)){if(a(n))continue;let u=K.normalize(ue.toPortablePath(n.path)).replace(/\\/$/,\"\").split(/\\//g);if(u.length<=r)continue;let A=u.slice(r).join(\"/\"),p=K.join(o,A),h=420;switch((n.type===\"Directory\"||((n.mode??0)&73)!==0)&&(h|=73),n.type){case\"Directory\":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case\"OldFile\":case\"File\":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.writeFileSync(p,await Vy(n),{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case\"SymbolicLink\":e.mkdirpSync(K.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break}}return e}var Kfe,Jfe,a_,o_,iut,$fe=Et(()=>{Ye();Pt();nA();Kfe=Be(\"stream\"),Jfe=$e(qfe());Yfe();jl();a_=$e(Vfe());iut=new WeakMap});var tpe=_((c_,epe)=>{(function(t,e){typeof c_==\"object\"?epe.exports=e():typeof define==\"function\"&&define.amd?define(e):t.treeify=e()})(c_,function(){function t(a,n){var u=n?\"\\u2514\":\"\\u251C\";return a?u+=\"\\u2500 \":u+=\"\\u2500\\u2500\\u2510\",u}function e(a,n){var u=[];for(var A in a)!a.hasOwnProperty(A)||n&&typeof a[A]==\"function\"||u.push(A);return u}function r(a,n,u,A,p,h,E){var I=\"\",v=0,b,C,T=A.slice(0);if(T.push([n,u])&&A.length>0&&(A.forEach(function(U,J){J>0&&(I+=(U[1]?\" \":\"\\u2502\")+\"  \"),!C&&U[0]===n&&(C=!0)}),I+=t(a,u)+a,p&&(typeof n!=\"object\"||n instanceof Date)&&(I+=\": \"+n),C&&(I+=\" (circular ref.)\"),E(I)),!C&&typeof n==\"object\"){var L=e(n,h);L.forEach(function(U){b=++v===L.length,r(U,n[U],b,T,p,h,E)})}}var o={};return o.asLines=function(a,n,u,A){var p=typeof u!=\"function\"?u:!1;r(\".\",a,!1,[],n,p,A||u)},o.asTree=function(a,n,u){var A=\"\";return r(\".\",a,!1,[],n,u,function(p){A+=p+`\n`}),A},o})});var $s={};Kt($s,{emitList:()=>lut,emitTree:()=>spe,treeNodeToJson:()=>ipe,treeNodeToTreeify:()=>npe});function npe(t,{configuration:e}){let r={},o=0,a=(n,u)=>{let A=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of A){if(!h)continue;let{label:E,value:I,children:v}=h,b=[];typeof E<\"u\"&&b.push(md(e,E,2)),typeof I<\"u\"&&b.push(Ot(e,I[0],I[1])),b.length===0&&b.push(md(e,`${p}`,2));let C=b.join(\": \").trim(),T=`\\0${o++}\\0`,L=u[`${T}${C}`]={};typeof v<\"u\"&&a(v,L)}};if(typeof t.children>\"u\")throw new Error(\"The root node must only contain children\");return a(t.children,r),r}function ipe(t){let e=r=>{if(typeof r.children>\"u\"){if(typeof r.value>\"u\")throw new Error(\"Assertion failed: Expected a value to be set if the children are missing\");return yd(r.value[0],r.value[1])}let o=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,u]of o)u&&(a[cut(n)]=e(u));return typeof r.value>\"u\"?a:{value:yd(r.value[0],r.value[1]),children:a}};return e(t)}function lut(t,{configuration:e,stdout:r,json:o}){let a=t.map(n=>({value:n}));spe({children:a},{configuration:e,stdout:r,json:o})}function spe(t,{configuration:e,stdout:r,json:o,separators:a=0}){if(o){let u=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let A of u)A&&r.write(`${JSON.stringify(ipe(A))}\n`);return}let n=(0,rpe.asTree)(npe(t,{configuration:e}),!1,!1);if(n=n.replace(/\\0[0-9]+\\0/g,\"\"),a>=1&&(n=n.replace(/^([├└]─)/gm,`\\u2502\n$1`).replace(/^│\\n/,\"\")),a>=2)for(let u=0;u<2;++u)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\\n]+\\n)(([│ ]).{2}[├└].{2}[^\\n]*\\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3  \\u2502 \n$2`).replace(/^│\\n/,\"\");if(a>=3)throw new Error(\"Only the first two levels are accepted by treeUtils.emitTree\");r.write(n)}function cut(t){return typeof t==\"string\"?t.replace(/^\\0[0-9]+\\0/,\"\"):t}var rpe,ope=Et(()=>{rpe=$e(tpe());ql()});function n2(t){let e=t.match(uut);if(!e?.groups)throw new Error(\"Assertion failed: Expected the checksum to match the requested pattern\");let r=e.groups.cacheVersion?parseInt(e.groups.cacheVersion):null;return{cacheKey:e.groups.cacheKey??null,cacheVersion:r,cacheSpec:e.groups.cacheSpec??null,hash:e.groups.hash}}var ape,u_,A_,Jb,Lr,uut,f_=Et(()=>{Ye();Pt();Pt();nA();ape=Be(\"crypto\"),u_=$e(Be(\"fs\"));Yl();rh();jl();xo();A_=Ky(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),Jb=Ky(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Lr=class{constructor(e,{configuration:r,immutable:o=r.get(\"enableImmutableCache\"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,ape.randomBytes)(8).toString(\"hex\")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=o,this.check=a;let{cacheSpec:n,cacheKey:u}=Lr.getCacheKey(r);this.cacheSpec=n,this.cacheKey=u}static async find(e,{immutable:r,check:o}={}){let a=new Lr(e.get(\"cacheFolder\"),{configuration:e,immutable:r,check:o});return await a.setup(),a}static getCacheKey(e){let r=e.get(\"compressionLevel\"),o=r!==\"mixed\"?`c${r}`:\"\";return{cacheKey:[Jb,o].join(\"\"),cacheSpec:o}}get mirrorCwd(){if(!this.configuration.get(\"enableMirror\"))return null;let e=`${this.configuration.get(\"globalFolder\")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${aE(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=n2(r).hash.slice(0,10);return`${aE(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:o}=n2(e);if(r===null||r<A_)return!1;let a=this.configuration.get(\"cacheMigrationMode\");return!(r<Jb&&a===\"always\"||o!==this.cacheSpec&&a!==\"required-only\")}getLocatorPath(e,r){return this.mirrorCwd===null?K.resolve(this.cwd,this.getVersionFilename(e)):r===null?K.resolve(this.cwd,this.getVersionFilename(e)):K.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?K.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get(\"enableGlobalCache\"))if(this.immutable){if(!await oe.existsPromise(this.cwd))throw new zt(56,\"Cache path does not exist.\")}else{await oe.mkdirPromise(this.cwd,{recursive:!0});let e=K.resolve(this.cwd,\".gitignore\");await oe.changeFilePromise(e,`/.gitignore\n*.flock\n*.tmp\n`)}(this.mirrorCwd||!this.immutable)&&await oe.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:o,onMiss:a,loader:n,...u}){let A=this.getLocatorMirrorPath(e),p=new Rn,h=()=>{let ae=new zi,we=K.join(Bt.root,sO(e));return ae.mkdirSync(we,{recursive:!0}),ae.writeJsonSync(K.join(we,dr.manifest),{name:fn(e),mocked:!0}),ae},E=async(ae,{isColdHit:we,controlPath:Pe=null})=>{if(Pe===null&&u.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!we?n2(r).cacheKey:this.cacheKey,Ee=!u.skipIntegrityCheck||!r?`${g}/${await LS(ae)}`:r;if(Pe!==null){let ce=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await LS(Pe)}`:r;if(Ee!==ce)throw new zt(18,\"The remote archive doesn't match the local checksum - has the local cache been corrupted?\")}let De=null;switch(r!==null&&Ee!==r&&(this.check?De=\"throw\":n2(r).cacheKey!==n2(Ee).cacheKey?De=\"update\":De=this.configuration.get(\"checksumBehavior\")),De){case null:case\"update\":return{isValid:!0,hash:Ee};case\"ignore\":return{isValid:!0,hash:r};case\"reset\":return{isValid:!1,hash:r};default:case\"throw\":throw new zt(18,\"The remote archive doesn't match the expected checksum\")}},I=async ae=>{if(!n)throw new Error(`Cache check required but no loader configured for ${jr(this.configuration,e)}`);let we=await n(),Pe=we.getRealPath();we.saveAndClose(),await oe.chmodPromise(Pe,420);let g=await E(ae,{controlPath:Pe,isColdHit:!1});if(!g.isValid)throw new Error(\"Assertion failed: Expected a valid checksum\");return g.hash},v=async()=>{if(A===null||!await oe.existsPromise(A)){let ae=await n(),we=ae.getRealPath();return ae.saveAndClose(),{source:\"loader\",path:we}}return{source:\"mirror\",path:A}},b=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${jr(this.configuration,e)}`);if(this.immutable)throw new zt(56,`Cache entry required but missing for ${jr(this.configuration,e)}`);let{path:ae,source:we}=await v(),{hash:Pe}=await E(ae,{isColdHit:!0}),g=this.getLocatorPath(e,Pe),Ee=[];we!==\"mirror\"&&A!==null&&Ee.push(async()=>{let ce=`${A}${this.cacheId}`;await oe.copyFilePromise(ae,ce,u_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(ce,420),await oe.renamePromise(ce,A)}),(!u.mirrorWriteOnly||A===null)&&Ee.push(async()=>{let ce=`${g}${this.cacheId}`;await oe.copyFilePromise(ae,ce,u_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(ce,420),await oe.renamePromise(ce,g)});let De=u.mirrorWriteOnly?A??g:g;return await Promise.all(Ee.map(ce=>ce())),[!1,De,Pe]},C=async()=>{let we=(async()=>{let Pe=u.unstablePackages?.has(e.locatorHash),g=Pe||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,Ee=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,De=!!u.mockedPackages?.has(e.locatorHash)&&(!this.check||!Ee),ce=De||Ee,ne=ce?o:a;if(ne&&ne(),ce){let ee=null,Ie=g;if(!De)if(this.check)ee=await I(Ie);else{let ke=await E(Ie,{isColdHit:!1});if(ke.isValid)ee=ke.hash;else return b()}return[De,Ie,ee]}else{if(this.immutable&&Pe)throw new zt(56,`Cache entry required but missing for ${jr(this.configuration,e)}; consider defining ${de.pretty(this.configuration,\"supportedArchitectures\",de.Type.CODE)} to cache packages for multiple systems`);return b()}})();this.mutexes.set(e.locatorHash,we);try{return await we}finally{this.mutexes.delete(e.locatorHash)}};for(let ae;ae=this.mutexes.get(e.locatorHash);)await ae;let[T,L,U]=await C();T||this.markedFiles.add(L);let J,te=T?()=>h():()=>new zi(L,{baseFs:p,readOnly:!0}),le=new ny(()=>wL(()=>J=te(),ae=>`Failed to open the cache entry for ${jr(this.configuration,e)}: ${ae}`),K),pe=new Uu(L,{baseFs:le,pathUtils:K}),Ae=()=>{J?.discardAndClose()},ye=u.unstablePackages?.has(e.locatorHash)?null:U;return[pe,Ae,ye]}},uut=/^(?:(?<cacheKey>(?<cacheVersion>[0-9]+)(?<cacheSpec>.*))\\/)?(?<hash>.*)$/});var zb,lpe=Et(()=>{zb=(r=>(r[r.SCRIPT=0]=\"SCRIPT\",r[r.SHELLCODE=1]=\"SHELLCODE\",r))(zb||{})});var Aut,sC,p_=Et(()=>{Pt();Nl();kf();xo();Aut=[[/^(git(?:\\+(?:https|ssh))?:\\/\\/.*(?:\\.git)?)#(.*)$/,(t,e,r,o)=>`${r}#commit=${o}`],[/^https:\\/\\/((?:[^/]+?)@)?codeload\\.github\\.com\\/([^/]+\\/[^/]+)\\/tar\\.gz\\/([0-9a-f]+)$/,(t,e,r=\"\",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https:\\/\\/((?:[^/]+?)@)?github\\.com\\/([^/]+\\/[^/]+?)(?:\\.git)?#([0-9a-f]+)$/,(t,e,r=\"\",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https?:\\/\\/[^/]+\\/(?:[^/]+\\/)*(?:@.+(?:\\/|(?:%2f)))?([^/]+)\\/(?:-|download)\\/\\1-[^/]+\\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.pkg\\.github\\.com\\/download\\/(?:@[^/]+)\\/(?:[^/]+)\\/(?:[^/]+)\\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.fontawesome\\.com\\/(?:@[^/]+)\\/([^/]+)\\/-\\/([^/]+)\\/\\1-\\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\\/\\/[^/]+\\/.*\\/(@[^/]+)\\/([^/]+)\\/-\\/\\1\\/\\2-(?:[.\\d\\w-]+)\\.tgz(?:#|$)/,(t,e)=>HS({protocol:\"npm:\",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],sC=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let o=K.join(e.cwd,dr.lockfile);if(!oe.existsSync(o))return;let a=await oe.readFilePromise(o,\"utf8\"),n=Vi(a);if(Object.hasOwn(n,\"__metadata\"))return;let u=this.resolutions=new Map;for(let A of Object.keys(n)){let p=i1(A);if(!p){r.reportWarning(14,`Failed to parse the string \"${A}\" into a proper descriptor`);continue}let h=ba(p.range)?In(p,`npm:${p.range}`):p,{version:E,resolved:I}=n[A];if(!I)continue;let v;for(let[C,T]of Aut){let L=I.match(C);if(L){v=T(E,...L);break}}if(!v){r.reportWarning(14,`${qn(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not \"${I}\")`);continue}let b=h;try{let C=Id(h.range),T=i1(C.selector,!0);T&&(b=T)}catch{}u.set(h.descriptorHash,Qs(b,v))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!this.resolutions)throw new Error(\"Assertion failed: The resolution store should have been setup\");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error(\"Assertion failed: The resolution should have been registered\");let n=tO(a),u=o.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(u,r,o)}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}}});var AA,cpe=Et(()=>{Yl();L1();ql();AA=class extends Xs{constructor({configuration:r,stdout:o,suggestInstall:a=!0}){super();this.errorCount=0;zI(this,{configuration:r}),this.configuration=r,this.stdout=o,this.suggestInstall=a}static async start(r,o){let a=new this(r);try{await o(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,o){return o()}async startSectionPromise(r,o){return await o()}startTimerSync(r,o,a){return(typeof o==\"function\"?o:a)()}async startTimerPromise(r,o,a){return await(typeof o==\"function\"?o:a)()}reportSeparator(){}reportInfo(r,o){}reportWarning(r,o){}reportError(r,o){this.errorCount+=1,this.stdout.write(`${Ot(this.configuration,\"\\u27A4\",\"redBright\")} ${this.formatNameWithHyperlink(r)}: ${o}\n`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,o){}async finalize(){this.errorCount>0&&(this.stdout.write(`\n`),this.stdout.write(`${Ot(this.configuration,\"\\u27A4\",\"redBright\")} Errors happened when preparing the environment required to run this command.\n`),this.suggestInstall&&this.stdout.write(`${Ot(this.configuration,\"\\u27A4\",\"redBright\")} This might be caused by packages being missing from the lockfile, in which case running \"yarn install\" might help.\n`))}formatNameWithHyperlink(r){return CU(r,{configuration:this.configuration,json:!1})}}});var oC,h_=Et(()=>{xo();oC=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(OS(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error(\"The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){let a=o.project.storedResolutions.get(e.descriptorHash);if(a){let u=o.project.originalPackages.get(a);if(u)return[u]}let n=o.project.originalPackages.get(OS(e).locatorHash);if(n)return[n];throw new Error(\"Resolution expected from the lockfile data\")}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.originalPackages.get(e.locatorHash);if(!o)throw new Error(\"The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache\");return o}}});function Wf(){}function fut(t,e,r,o,a){for(var n=0,u=e.length,A=0,p=0;n<u;n++){var h=e[n];if(h.removed){if(h.value=t.join(o.slice(p,p+h.count)),p+=h.count,n&&e[n-1].added){var I=e[n-1];e[n-1]=e[n],e[n]=I}}else{if(!h.added&&a){var E=r.slice(A,A+h.count);E=E.map(function(b,C){var T=o[p+C];return T.length>b.length?T:b}),h.value=t.join(E)}else h.value=t.join(r.slice(A,A+h.count));A+=h.count,h.added||(p+=h.count)}}var v=e[u-1];return u>1&&typeof v.value==\"string\"&&(v.added||v.removed)&&t.equals(\"\",v.value)&&(e[u-2].value+=v.value,e.pop()),e}function put(t){return{newPos:t.newPos,components:t.components.slice(0)}}function hut(t,e){if(typeof t==\"function\")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function fpe(t,e,r){return r=hut(r,{ignoreWhitespace:!0}),E_.diff(t,e,r)}function gut(t,e,r){return C_.diff(t,e,r)}function Xb(t){return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?Xb=function(e){return typeof e}:Xb=function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Xb(t)}function g_(t){return yut(t)||Eut(t)||Cut(t)||wut()}function yut(t){if(Array.isArray(t))return d_(t)}function Eut(t){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(t))return Array.from(t)}function Cut(t,e){if(!!t){if(typeof t==\"string\")return d_(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r===\"Object\"&&t.constructor&&(r=t.constructor.name),r===\"Map\"||r===\"Set\")return Array.from(t);if(r===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return d_(t,e)}}function d_(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function wut(){throw new TypeError(`Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function m_(t,e,r,o,a){e=e||[],r=r||[],o&&(t=o(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var u;if(Iut.call(t)===\"[object Array]\"){for(e.push(t),u=new Array(t.length),r.push(u),n=0;n<t.length;n+=1)u[n]=m_(t[n],e,r,o,a);return e.pop(),r.pop(),u}if(t&&t.toJSON&&(t=t.toJSON()),Xb(t)===\"object\"&&t!==null){e.push(t),u={},r.push(u);var A=[],p;for(p in t)t.hasOwnProperty(p)&&A.push(p);for(A.sort(),n=0;n<A.length;n+=1)p=A[n],u[p]=m_(t[p],e,r,o,p);e.pop(),r.pop()}else u=t;return u}function ppe(t,e,r,o,a,n,u){u||(u={}),typeof u.context>\"u\"&&(u.context=4);var A=gut(r,o,u);if(!A)return;A.push({value:\"\",lines:[]});function p(U){return U.map(function(J){return\" \"+J})}for(var h=[],E=0,I=0,v=[],b=1,C=1,T=function(J){var te=A[J],le=te.lines||te.value.replace(/\\n$/,\"\").split(`\n`);if(te.lines=le,te.added||te.removed){var pe;if(!E){var Ae=A[J-1];E=b,I=C,Ae&&(v=u.context>0?p(Ae.lines.slice(-u.context)):[],E-=v.length,I-=v.length)}(pe=v).push.apply(pe,g_(le.map(function(ce){return(te.added?\"+\":\"-\")+ce}))),te.added?C+=le.length:b+=le.length}else{if(E)if(le.length<=u.context*2&&J<A.length-2){var ye;(ye=v).push.apply(ye,g_(p(le)))}else{var ae,we=Math.min(le.length,u.context);(ae=v).push.apply(ae,g_(p(le.slice(0,we))));var Pe={oldStart:E,oldLines:b-E+we,newStart:I,newLines:C-I+we,lines:v};if(J>=A.length-2&&le.length<=u.context){var g=/\\n$/.test(r),Ee=/\\n$/.test(o),De=le.length==0&&v.length>Pe.oldLines;!g&&De&&r.length>0&&v.splice(Pe.oldLines,0,\"\\\\ No newline at end of file\"),(!g&&!De||!Ee)&&v.push(\"\\\\ No newline at end of file\")}h.push(Pe),E=0,I=0,v=[]}b+=le.length,C+=le.length}},L=0;L<A.length;L++)T(L);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:h}}var i3t,upe,Ape,E_,C_,dut,mut,Iut,i2,y_,w_=Et(()=>{Wf.prototype={diff:function(e,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=o.callback;typeof o==\"function\"&&(a=o,o={}),this.options=o;var n=this;function u(T){return a?(setTimeout(function(){a(void 0,T)},0),!0):T}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var A=r.length,p=e.length,h=1,E=A+p;o.maxEditLength&&(E=Math.min(E,o.maxEditLength));var I=[{newPos:-1,components:[]}],v=this.extractCommon(I[0],r,e,0);if(I[0].newPos+1>=A&&v+1>=p)return u([{value:this.join(r),count:r.length}]);function b(){for(var T=-1*h;T<=h;T+=2){var L=void 0,U=I[T-1],J=I[T+1],te=(J?J.newPos:0)-T;U&&(I[T-1]=void 0);var le=U&&U.newPos+1<A,pe=J&&0<=te&&te<p;if(!le&&!pe){I[T]=void 0;continue}if(!le||pe&&U.newPos<J.newPos?(L=put(J),n.pushComponent(L.components,void 0,!0)):(L=U,L.newPos++,n.pushComponent(L.components,!0,void 0)),te=n.extractCommon(L,r,e,T),L.newPos+1>=A&&te+1>=p)return u(fut(n,L.components,r,e,n.useLongestToken));I[T]=L}h++}if(a)(function T(){setTimeout(function(){if(h>E)return a();b()||T()},0)})();else for(;h<=E;){var C=b();if(C)return C}},pushComponent:function(e,r,o){var a=e[e.length-1];a&&a.added===r&&a.removed===o?e[e.length-1]={count:a.count+1,added:r,removed:o}:e.push({count:1,added:r,removed:o})},extractCommon:function(e,r,o,a){for(var n=r.length,u=o.length,A=e.newPos,p=A-a,h=0;A+1<n&&p+1<u&&this.equals(r[A+1],o[p+1]);)A++,p++,h++;return h&&e.components.push({count:h}),e.newPos=A,p},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],o=0;o<e.length;o++)e[o]&&r.push(e[o]);return r},castInput:function(e){return e},tokenize:function(e){return e.split(\"\")},join:function(e){return e.join(\"\")}};i3t=new Wf;upe=/^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/,Ape=/\\S/,E_=new Wf;E_.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!Ape.test(t)&&!Ape.test(e)};E_.tokenize=function(t){for(var e=t.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/),r=0;r<e.length-1;r++)!e[r+1]&&e[r+2]&&upe.test(e[r])&&upe.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};C_=new Wf;C_.tokenize=function(t){var e=[],r=t.split(/(\\n|\\r\\n)/);r[r.length-1]||r.pop();for(var o=0;o<r.length;o++){var a=r[o];o%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};dut=new Wf;dut.tokenize=function(t){return t.split(/(\\S.+?[.!?])(?=\\s+|$)/)};mut=new Wf;mut.tokenize=function(t){return t.split(/([{}:;,]|\\s+)/)};Iut=Object.prototype.toString,i2=new Wf;i2.useLongestToken=!0;i2.tokenize=C_.tokenize;i2.castInput=function(t){var e=this.options,r=e.undefinedReplacement,o=e.stringifyReplacer,a=o===void 0?function(n,u){return typeof u>\"u\"?r:u}:o;return typeof t==\"string\"?t:JSON.stringify(m_(t,null,null,a),a,\"  \")};i2.equals=function(t,e){return Wf.prototype.equals.call(i2,t.replace(/,([\\r\\n])/g,\"$1\"),e.replace(/,([\\r\\n])/g,\"$1\"))};y_=new Wf;y_.tokenize=function(t){return t.slice()};y_.join=y_.removeEmpty=function(t){return t}});var gpe=_((o3t,hpe)=>{var But=Hl(),vut=fE(),Dut=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Put=/^\\w*$/;function Sut(t,e){if(But(t))return!1;var r=typeof t;return r==\"number\"||r==\"symbol\"||r==\"boolean\"||t==null||vut(t)?!0:Put.test(t)||!Dut.test(t)||e!=null&&t in Object(e)}hpe.exports=Sut});var ype=_((a3t,mpe)=>{var dpe=_P(),xut=\"Expected a function\";function I_(t,e){if(typeof t!=\"function\"||e!=null&&typeof e!=\"function\")throw new TypeError(xut);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var u=t.apply(this,o);return r.cache=n.set(a,u)||n,u};return r.cache=new(I_.Cache||dpe),r}I_.Cache=dpe;mpe.exports=I_});var Cpe=_((l3t,Epe)=>{var but=ype(),kut=500;function Qut(t){var e=but(t,function(o){return r.size===kut&&r.clear(),o}),r=e.cache;return e}Epe.exports=Qut});var B_=_((c3t,wpe)=>{var Fut=Cpe(),Tut=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,Rut=/\\\\(\\\\)?/g,Nut=Fut(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(\"\"),t.replace(Tut,function(r,o,a,n){e.push(a?n.replace(Rut,\"$1\"):o||r)}),e});wpe.exports=Nut});var jd=_((u3t,Ipe)=>{var Lut=Hl(),Mut=gpe(),Out=B_(),Uut=R1();function _ut(t,e){return Lut(t)?t:Mut(t,e)?[t]:Out(Uut(t))}Ipe.exports=_ut});var aC=_((A3t,Bpe)=>{var Hut=fE(),jut=1/0;function qut(t){if(typeof t==\"string\"||Hut(t))return t;var e=t+\"\";return e==\"0\"&&1/t==-jut?\"-0\":e}Bpe.exports=qut});var Zb=_((f3t,vpe)=>{var Gut=jd(),Yut=aC();function Wut(t,e){e=Gut(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[Yut(e[r++])];return r&&r==o?t:void 0}vpe.exports=Wut});var v_=_((p3t,Ppe)=>{var Vut=rS(),Kut=jd(),Jut=UI(),Dpe=il(),zut=aC();function Xut(t,e,r,o){if(!Dpe(t))return t;e=Kut(e,t);for(var a=-1,n=e.length,u=n-1,A=t;A!=null&&++a<n;){var p=zut(e[a]),h=r;if(p===\"__proto__\"||p===\"constructor\"||p===\"prototype\")return t;if(a!=u){var E=A[p];h=o?o(E,p,A):void 0,h===void 0&&(h=Dpe(E)?E:Jut(e[a+1])?[]:{})}Vut(A,p,h),A=A[p]}return t}Ppe.exports=Xut});var xpe=_((h3t,Spe)=>{var Zut=Zb(),$ut=v_(),eAt=jd();function tAt(t,e,r){for(var o=-1,a=e.length,n={};++o<a;){var u=e[o],A=Zut(t,u);r(A,u)&&$ut(n,eAt(u,t),A)}return n}Spe.exports=tAt});var kpe=_((g3t,bpe)=>{function rAt(t,e){return t!=null&&e in Object(t)}bpe.exports=rAt});var D_=_((d3t,Qpe)=>{var nAt=jd(),iAt=LI(),sAt=Hl(),oAt=UI(),aAt=YP(),lAt=aC();function cAt(t,e,r){e=nAt(e,t);for(var o=-1,a=e.length,n=!1;++o<a;){var u=lAt(e[o]);if(!(n=t!=null&&r(t,u)))break;t=t[u]}return n||++o!=a?n:(a=t==null?0:t.length,!!a&&aAt(a)&&oAt(u,a)&&(sAt(t)||iAt(t)))}Qpe.exports=cAt});var Tpe=_((m3t,Fpe)=>{var uAt=kpe(),AAt=D_();function fAt(t,e){return t!=null&&AAt(t,e,uAt)}Fpe.exports=fAt});var Npe=_((y3t,Rpe)=>{var pAt=xpe(),hAt=Tpe();function gAt(t,e){return pAt(t,e,function(r,o){return hAt(t,o)})}Rpe.exports=gAt});var Upe=_((E3t,Ope)=>{var Lpe=fd(),dAt=LI(),mAt=Hl(),Mpe=Lpe?Lpe.isConcatSpreadable:void 0;function yAt(t){return mAt(t)||dAt(t)||!!(Mpe&&t&&t[Mpe])}Ope.exports=yAt});var jpe=_((C3t,Hpe)=>{var EAt=qP(),CAt=Upe();function _pe(t,e,r,o,a){var n=-1,u=t.length;for(r||(r=CAt),a||(a=[]);++n<u;){var A=t[n];e>0&&r(A)?e>1?_pe(A,e-1,r,o,a):EAt(a,A):o||(a[a.length]=A)}return a}Hpe.exports=_pe});var Gpe=_((w3t,qpe)=>{var wAt=jpe();function IAt(t){var e=t==null?0:t.length;return e?wAt(t,1):[]}qpe.exports=IAt});var P_=_((I3t,Ype)=>{var BAt=Gpe(),vAt=pL(),DAt=hL();function PAt(t){return DAt(vAt(t,void 0,BAt),t+\"\")}Ype.exports=PAt});var S_=_((B3t,Wpe)=>{var SAt=Npe(),xAt=P_(),bAt=xAt(function(t,e){return t==null?{}:SAt(t,e)});Wpe.exports=bAt});var $b,Vpe=Et(()=>{Yl();$b=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.resolver.bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async getSatisfying(e,r,o,a){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async resolve(e,r){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}}});var Qi,x_=Et(()=>{Yl();Qi=class extends Xs{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,o){return(typeof r==\"function\"?r:o)()}async startTimerPromise(e,r,o){return await(typeof r==\"function\"?r:o)()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}reportFold(e,r){}async finalize(){}}});var Kpe,lC,b_=Et(()=>{Pt();Kpe=$e(RS());AE();Bd();ql();rh();kf();xo();lC=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Mt.tryFind(this.cwd)??new Mt,this.relativeCwd=K.relative(this.project.cwd,this.cwd)||Bt.dot;let e=this.manifest.name?this.manifest.name:eA(null,`${this.computeCandidateName()}-${zs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=In(e,`${Xn.protocol}${this.relativeCwd}`),this.anchoredLocator=Qs(e,`${Xn.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let o=await(0,Kpe.default)(r,{cwd:ue.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:[\"**/node_modules\",\"**/.git\",\"**/.yarn\"]});o.sort(),await o.reduce(async(a,n)=>{let u=K.resolve(this.cwd,ue.toPortablePath(n)),A=await oe.existsPromise(K.join(u,\"package.json\"));await a,A&&this.workspacesCwds.add(u)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${o1(this.project.configuration,this)} (${Ot(this.project.configuration,K.join(this.cwd,dr.manifest),yt.PATH)}) to have been resolved. Run \"yarn install\" to update the lockfile`);return e}accepts(e){let r=e.indexOf(\":\"),o=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(o===Xn.protocol&&K.normalize(a)===this.relativeCwd||o===Xn.protocol&&(a===\"*\"||a===\"^\"||a===\"~\"))return!0;let n=ba(a);return n?o===Xn.protocol?n.test(this.manifest.version??\"0.0.0\"):this.project.configuration.get(\"enableTransparentWorkspaces\")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?\"root-workspace\":`${K.basename(this.cwd)}`||\"unnamed-workspace\"}getRecursiveWorkspaceDependencies({dependencies:e=Mt.hardDependencies}={}){let r=new Set,o=a=>{for(let n of e)for(let u of a.manifest[n].values()){let A=this.project.tryWorkspaceByDescriptor(u);A===null||r.has(A)||(r.add(A),o(A))}};return o(this),r}getRecursiveWorkspaceDependents({dependencies:e=Mt.hardDependencies}={}){let r=new Set,o=a=>{for(let n of this.project.workspaces)e.some(A=>[...n.manifest[A].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&n1(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),o(n))};return o(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let o of r.workspacesCwds){let a=this.project.workspacesByCwd.get(o);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=K.join(this.cwd,Mt.fileName),o=`${JSON.stringify(e,null,this.manifest.indent)}\n`;await oe.changeFilePromise(r,o,{automaticNewlines:!0}),this.manifest.raw=e}}});function NAt({project:t,allDescriptors:e,allResolutions:r,allPackages:o,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:u=new Map,peerWarnings:A=[],volatileDescriptors:p=new Set}){let h=new Map,E=[],I=new Map,v=new Map,b=new Map,C=new Map,T=new Map,L=new Map(t.workspaces.map(Ae=>{let ye=Ae.anchoredLocator.locatorHash,ae=o.get(ye);if(typeof ae>\"u\")throw new Error(\"Assertion failed: The workspace should have an associated package\");return[ye,$I(ae)]})),U=()=>{let Ae=oe.mktempSync(),ye=K.join(Ae,\"stacktrace.log\"),ae=String(E.length+1).length,we=E.map((Pe,g)=>`${`${g+1}.`.padStart(ae,\" \")} ${xa(Pe)}\n`).join(\"\");throw oe.writeFileSync(ye,we),oe.detachTemp(Ae),new zt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${ue.fromPortablePath(ye)}`)},J=Ae=>{let ye=r.get(Ae.descriptorHash);if(typeof ye>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let ae=o.get(ye);if(!ae)throw new Error(\"Assertion failed: The package could not be found\");return ae},te=(Ae,ye,ae,{top:we,optional:Pe})=>{E.length>1e3&&U(),E.push(ye);let g=le(Ae,ye,ae,{top:we,optional:Pe});return E.pop(),g},le=(Ae,ye,ae,{top:we,optional:Pe})=>{if(a.has(ye.locatorHash))return;a.add(ye.locatorHash),Pe||n.delete(ye.locatorHash);let g=o.get(ye.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${jr(t.configuration,ye)}) should have been registered`);let Ee=[],De=[],ce=[],ne=[],ee=[];for(let ke of Array.from(g.dependencies.values())){if(g.peerDependencies.has(ke.identHash)&&g.locatorHash!==we)continue;if(Sf(ke))throw new Error(\"Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch\");p.delete(ke.descriptorHash);let ht=Pe;if(!ht){let Te=g.dependenciesMeta.get(fn(ke));if(typeof Te<\"u\"){let Je=Te.get(null);typeof Je<\"u\"&&Je.optional&&(ht=!0)}}let H=r.get(ke.descriptorHash);if(!H)throw new Error(`Assertion failed: The resolution (${qn(t.configuration,ke)}) should have been registered`);let lt=L.get(H)||o.get(H);if(!lt)throw new Error(`Assertion failed: The package (${H}, resolved from ${qn(t.configuration,ke)}) should have been registered`);if(lt.peerDependencies.size===0){te(ke,lt,new Map,{top:we,optional:ht});continue}let Re,Qe,be=new Set,_e;De.push(()=>{Re=nO(ke,ye.locatorHash),Qe=iO(lt,ye.locatorHash),g.dependencies.delete(ke.identHash),g.dependencies.set(Re.identHash,Re),r.set(Re.descriptorHash,Qe.locatorHash),e.set(Re.descriptorHash,Re),o.set(Qe.locatorHash,Qe),Ee.push([lt,Re,Qe])}),ce.push(()=>{_e=new Map;for(let Te of Qe.peerDependencies.values()){let Je=g.dependencies.get(Te.identHash);if(!Je&&r1(ye,Te)&&(Ae.identHash===ye.identHash?Je=Ae:(Je=In(ye,Ae.range),e.set(Je.descriptorHash,Je),r.set(Je.descriptorHash,ye.locatorHash),p.delete(Je.descriptorHash))),(!Je||Je.range===\"missing:\")&&Qe.dependencies.has(Te.identHash)){Qe.peerDependencies.delete(Te.identHash);continue}Je||(Je=In(Te,\"missing:\")),Qe.dependencies.set(Je.identHash,Je),Sf(Je)&&dd(b,Je.descriptorHash).add(Qe.locatorHash),I.set(Je.identHash,Je),Je.range===\"missing:\"&&be.add(Je.identHash),_e.set(Te.identHash,ae.get(Te.identHash)??Qe.locatorHash)}Qe.dependencies=new Map(ks(Qe.dependencies,([Te,Je])=>fn(Je)))}),ne.push(()=>{if(!o.has(Qe.locatorHash))return;let Te=h.get(lt.locatorHash);typeof Te==\"number\"&&Te>=2&&U();let Je=h.get(lt.locatorHash),He=typeof Je<\"u\"?Je+1:1;h.set(lt.locatorHash,He),te(Re,Qe,_e,{top:we,optional:ht}),h.set(lt.locatorHash,He-1)}),ee.push(()=>{let Te=g.dependencies.get(ke.identHash);if(typeof Te>\"u\")throw new Error(\"Assertion failed: Expected the peer dependency to have been turned into a dependency\");let Je=r.get(Te.descriptorHash);if(typeof Je>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");if(dd(T,Je).add(ye.locatorHash),!!o.has(Qe.locatorHash)){for(let He of Qe.peerDependencies.values()){let x=_e.get(He.identHash);if(typeof x>\"u\")throw new Error(\"Assertion failed: Expected the peer dependency ident to be registered\");Gy(Yy(C,x),fn(He)).push(Qe.locatorHash)}for(let He of be)Qe.dependencies.delete(He)}})}for(let ke of[...De,...ce])ke();let Ie;do{Ie=!0;for(let[ke,ht,H]of Ee){let lt=Yy(v,ke.locatorHash),Re=zs(...[...H.dependencies.values()].map(Te=>{let Je=Te.range!==\"missing:\"?r.get(Te.descriptorHash):\"missing:\";if(typeof Je>\"u\")throw new Error(`Assertion failed: Expected the resolution for ${qn(t.configuration,Te)} to have been registered`);return Je===we?`${Je} (top)`:Je}),ht.identHash),Qe=lt.get(Re);if(typeof Qe>\"u\"){lt.set(Re,ht);continue}if(Qe===ht)continue;o.delete(H.locatorHash),e.delete(ht.descriptorHash),r.delete(ht.descriptorHash),a.delete(H.locatorHash);let be=b.get(ht.descriptorHash)||[],_e=[g.locatorHash,...be];b.delete(ht.descriptorHash);for(let Te of _e){let Je=o.get(Te);typeof Je>\"u\"||(Je.dependencies.get(ht.identHash).descriptorHash!==Qe.descriptorHash&&(Ie=!1),Je.dependencies.set(ht.identHash,Qe))}}}while(!Ie);for(let ke of[...ne,...ee])ke()};for(let Ae of t.workspaces){let ye=Ae.anchoredLocator;p.delete(Ae.anchoredDescriptor.descriptorHash),te(Ae.anchoredDescriptor,ye,new Map,{top:ye.locatorHash,optional:!1})}let pe=new Map;for(let[Ae,ye]of T){let ae=o.get(Ae);if(typeof ae>\"u\")throw new Error(\"Assertion failed: Expected the root to be registered\");let we=C.get(Ae);if(!(typeof we>\"u\"))for(let Pe of ye){let g=o.get(Pe);if(!(typeof g>\"u\")&&!!t.tryWorkspaceByLocator(g))for(let[Ee,De]of we){let ce=Js(Ee);if(g.peerDependencies.has(ce.identHash))continue;let ne=`p${zs(Pe,Ee,Ae).slice(0,5)}`;u.set(ne,{subject:Pe,requested:ce,rootRequester:Ae,allRequesters:De});let ee=ae.dependencies.get(ce.identHash);if(typeof ee<\"u\"){let Ie=J(ee),ke=Ie.version??\"0.0.0\",ht=new Set;for(let lt of De){let Re=o.get(lt);if(typeof Re>\"u\")throw new Error(\"Assertion failed: Expected the link to be registered\");let Qe=Re.peerDependencies.get(ce.identHash);if(typeof Qe>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");ht.add(Qe.range)}if(![...ht].every(lt=>{if(lt.startsWith(Xn.protocol)){if(!t.tryWorkspaceByLocator(Ie))return!1;lt=lt.slice(Xn.protocol.length),(lt===\"^\"||lt===\"~\")&&(lt=\"*\")}return bf(ke,lt)})){let lt=ol(pe,Ie.locatorHash,()=>({type:2,requested:ce,subject:Ie,dependents:new Map,requesters:new Map,links:new Map,version:ke,hash:`p${Ie.locatorHash.slice(0,5)}`}));lt.dependents.set(g.locatorHash,g),lt.requesters.set(ae.locatorHash,ae);for(let Re of De)lt.links.set(Re,o.get(Re));A.push({type:1,subject:g,requested:ce,requester:ae,version:ke,hash:ne,requirementCount:De.length})}}else ae.peerDependenciesMeta.get(Ee)?.optional||A.push({type:0,subject:g,requested:ce,requester:ae,hash:ne})}}}A.push(...pe.values())}function LAt(t,e){let r=BL(t.peerWarnings,\"type\"),o=r[2]?.map(n=>{let u=Array.from(n.links.values(),E=>{let I=t.storedPackages.get(E.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let v=I.peerDependencies.get(n.requested.identHash);if(typeof v>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");return v.range}),A=n.links.size>1?\"and other dependencies request\":\"requests\",p=aO(u),h=p?lE(t.configuration,p):Ot(t.configuration,\"but they have non-overlapping ranges!\",\"redBright\");return`${cs(t.configuration,n.requested)} is listed by your project with version ${s1(t.configuration,n.version)}, which doesn't satisfy what ${cs(t.configuration,n.requesters.values().next().value)} (${Ot(t.configuration,n.hash,yt.CODE)}) ${A} (${h}).`})??[],a=r[0]?.map(n=>`${jr(t.configuration,n.subject)} doesn't provide ${cs(t.configuration,n.requested)} (${Ot(t.configuration,n.hash,yt.CODE)}), requested by ${cs(t.configuration,n.requester)}.`)??[];e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met; run ${Ot(t.configuration,\"yarn explain peer-requirements <hash>\",yt.CODE)} for details, where ${Ot(t.configuration,\"<hash>\",yt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of ks(o,u=>zy.default(u)))e.reportWarning(60,n);for(let n of ks(a,u=>zy.default(u)))e.reportWarning(2,n)})}var ek,tk,rk,Xpe,F_,Q_,T_,nk,kAt,QAt,Jpe,FAt,TAt,RAt,pl,k_,ik,zpe,St,Zpe=Et(()=>{Pt();Pt();Nl();qt();ek=Be(\"crypto\");w_();tk=$e(S_()),rk=$e(nd()),Xpe=$e(zn()),F_=Be(\"util\"),Q_=$e(Be(\"v8\")),T_=$e(Be(\"zlib\"));f_();D1();p_();h_();AE();fO();Yl();Vpe();L1();x_();Bd();b_();VS();ql();rh();jl();Dx();DU();kf();xo();nk=Ky(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),kAt=3,QAt=/ *, */g,Jpe=/\\/$/,FAt=32,TAt=(0,F_.promisify)(T_.default.gzip),RAt=(0,F_.promisify)(T_.default.gunzip),pl=(r=>(r.UpdateLockfile=\"update-lockfile\",r.SkipBuild=\"skip-build\",r))(pl||{}),k_={restoreLinkersCustomData:[\"linkersCustomData\"],restoreResolutions:[\"accessibleLocators\",\"conditionalLocators\",\"disabledLocators\",\"optionalBuilds\",\"storedDescriptors\",\"storedResolutions\",\"storedPackages\",\"lockFileChecksum\"],restoreBuildState:[\"skippedBuilds\",\"storedBuildState\"]},ik=(o=>(o[o.NotProvided=0]=\"NotProvided\",o[o.NotCompatible=1]=\"NotCompatible\",o[o.NotCompatibleAggregate=2]=\"NotCompatibleAggregate\",o))(ik||{}),zpe=t=>zs(`${kAt}`,t),St=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){if(!e.projectCwd)throw new it(`No project found in ${r}`);let o=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,oe.existsSync(K.join(n,dr.manifest))){o=n;break}a=K.dirname(n)}let u=new St(e.projectCwd,{configuration:e});Ve.telemetry?.reportProject(u.cwd),await u.setupResolutions(),await u.setupWorkspaces(),Ve.telemetry?.reportWorkspaceCount(u.workspaces.length),Ve.telemetry?.reportDependencyCount(u.workspaces.reduce((C,T)=>C+T.manifest.dependencies.size+T.manifest.devDependencies.size,0));let A=u.tryWorkspaceByCwd(o);if(A)return{project:u,workspace:A,locator:A.anchoredLocator};let p=await u.findLocatorForLocation(`${o}/`,{strict:!0});if(p)return{project:u,locator:p,workspace:null};let h=Ot(e,u.cwd,yt.PATH),E=Ot(e,K.relative(u.cwd,o),yt.PATH),I=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,v=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,b=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new it(`The nearest package directory (${Ot(e,o,yt.PATH)}) doesn't seem to be part of the project declared in ${Ot(e,u.cwd,yt.PATH)}.\n\n${[I,v,b].join(`\n`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=K.join(this.cwd,dr.lockfile),r=this.configuration.get(\"defaultLanguageName\");if(oe.existsSync(e)){let o=await oe.readFilePromise(e,\"utf8\");this.lockFileChecksum=zpe(o);let a=Vi(o);if(a.__metadata){let n=a.__metadata.version,u=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n<nk;for(let A of Object.keys(a)){if(A===\"__metadata\")continue;let p=a[A];if(typeof p.resolution>\"u\")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${A})`);let h=xf(p.resolution,!0),E=new Mt;E.load(p,{yamlCompatibilityMode:!0});let I=E.version,v=E.languageName||r,b=p.linkType.toUpperCase(),C=p.conditions??null,T=E.dependencies,L=E.peerDependencies,U=E.dependenciesMeta,J=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let pe=typeof u<\"u\"&&!p.checksum.includes(\"/\")?`${u}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,pe)}let le={...h,version:I,languageName:v,linkType:b,conditions:C,dependencies:T,peerDependencies:L,dependenciesMeta:U,peerDependenciesMeta:J,bin:te};this.originalPackages.set(le.locatorHash,le);for(let pe of A.split(QAt)){let Ae=nh(pe);n<=6&&(Ae=this.configuration.normalizeDependency(Ae),Ae=In(Ae,Ae.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,\"$1npm%3A\"))),this.storedDescriptors.set(Ae.descriptorHash,Ae),this.storedResolutions.set(Ae.descriptorHash,h.locatorHash)}}}else o.includes(\"yarn lockfile v1\")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,rk.default)(4),o=async(a,n)=>{if(e.has(n))return a;e.add(n);let u=new lC(n,{project:this});await r(()=>u.setup());let A=a.then(()=>{this.addWorkspace(u)});return Array.from(u.workspacesCwds).reduce(o,A)};await o(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<\"u\")throw new Error(`Duplicate workspace name ${cs(this.configuration,e.anchoredLocator)}: ${ue.fromPortablePath(e.cwd)} conflicts with ${ue.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.anchoredLocator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){K.isAbsolute(e)||(e=K.resolve(this.cwd,e)),e=K.normalize(e).replace(/\\/+$/,\"\");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let o of this.workspaces)K.relative(o.cwd,e).startsWith(\"../\")||r&&r.cwd.length>=o.cwd.length||(r=o);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>\"u\"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${cs(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Xn.protocol)){let o=e.range.slice(Xn.protocol.length);if(o!==\"^\"&&o!==\"~\"&&o!==\"*\"&&!ba(o))return this.tryWorkspaceByCwd(o)}let r=this.tryWorkspaceByIdent(e);return r===null||(Sf(e)&&(e=e1(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${qn(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Hc(e)&&(e=t1(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${jr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if(\"descriptorHash\"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let o=new Set(this.storedResolutions.values());typeof r<\"u\"&&!o.has(r)&&this.deleteLocator(r)}if(\"locatorHash\"in e){this.deleteLocator(e.locatorHash);for(let[r,o]of this.storedResolutions)o===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[o,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(o)}for(let o of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(o,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(o.locatorHash);let n=r.get(o.locatorHash);if(n){r.delete(o.locatorHash);for(let u of n)this.deleteDescriptor(u)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,o]of e.dependencies)Sf(o)&&e.dependencies.set(r,e1(o))}getDependencyMeta(e,r){let o={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(e));if(!n)return o;let u=n.get(null);if(u&&Object.assign(o,u),r===null||!Xpe.default.valid(r))return o;for(let[A,p]of n)A!==null&&A===r&&Object.assign(o,p);return o}async findLocatorForLocation(e,{strict:r=!1}={}){let o=new Qi,a=this.configuration.getLinkers(),n={project:this,report:o};for(let u of a){let A=await u.findPackageLocator(e,n);if(A){if(r&&(await u.findPackageLocation(A,n)).replace(Jpe,\"\")!==e.replace(Jpe,\"\"))continue;return A}}return null}async loadUserConfig(){let e=K.join(this.cwd,\".pnp.cjs\");await oe.existsPromise(e)&&vf(e).setup();let r=K.join(this.cwd,\"yarn.config.cjs\");return await oe.existsPromise(r)?vf(r):null}async preparePackage(e,{resolver:r,resolveOptions:o}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[u,A]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,A,this,n,A,{resolver:r,resolveOptions:o});if(!r1(A,p))throw new Error(\"Assertion failed: The descriptor ident cannot be changed through aliases\");let h=r.bindDescriptor(p,n,o);n.dependencies.set(u,h)}return n}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error(\"Workspaces must have been setup before calling this function\");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),o=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new sC(a);await n.setup(this,{report:e.report});let u=e.lockfileOnly?[new $b(a)]:[n,a],A=new vd([new oC(a),...u]),p=new vd([...u]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:A}:{project:this,report:e.report,resolver:A,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},I=new Map,v=new Map,b=new Map,C=new Map,T=new Map,L=new Map,U=this.topLevelWorkspace.anchoredLocator,J=new Set,te=[],le=_4(),pe=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Xs.progressViaTitle(),async ce=>{let ne=async H=>{let lt=await Wy(async()=>await A.resolve(H,E),_e=>`${jr(this.configuration,H)}: ${_e}`);if(!n1(H,lt))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${jr(this.configuration,H)} to ${jr(this.configuration,lt)})`);C.set(lt.locatorHash,lt),!r.delete(lt.locatorHash)&&!this.tryWorkspaceByLocator(lt)&&o.push(lt);let Qe=await this.preparePackage(lt,{resolver:A,resolveOptions:E}),be=Uc([...Qe.dependencies.values()].map(_e=>ht(_e)));return te.push(be),be.catch(()=>{}),v.set(Qe.locatorHash,Qe),Qe},ee=async H=>{let lt=T.get(H.locatorHash);if(typeof lt<\"u\")return lt;let Re=Promise.resolve().then(()=>ne(H));return T.set(H.locatorHash,Re),Re},Ie=async(H,lt)=>{let Re=await ht(lt);return I.set(H.descriptorHash,H),b.set(H.descriptorHash,Re.locatorHash),Re},ke=async H=>{ce.setTitle(qn(this.configuration,H));let lt=this.resolutionAliases.get(H.descriptorHash);if(typeof lt<\"u\")return Ie(H,this.storedDescriptors.get(lt));let Re=A.getResolutionDependencies(H,E),Qe=Object.fromEntries(await Uc(Object.entries(Re).map(async([Te,Je])=>{let He=A.bindDescriptor(Je,U,E),x=await ht(He);return J.add(x.locatorHash),[Te,x]}))),_e=(await Wy(async()=>await A.getCandidates(H,Qe,E),Te=>`${qn(this.configuration,H)}: ${Te}`))[0];if(typeof _e>\"u\")throw new zt(82,`${qn(this.configuration,H)}: No candidates found`);if(e.checkResolutions){let{locators:Te}=await p.getSatisfying(H,Qe,[_e],{...E,resolver:p});if(!Te.find(Je=>Je.locatorHash===_e.locatorHash))throw new zt(78,`Invalid resolution ${XI(this.configuration,H,_e)}`)}return I.set(H.descriptorHash,H),b.set(H.descriptorHash,_e.locatorHash),ee(_e)},ht=H=>{let lt=L.get(H.descriptorHash);if(typeof lt<\"u\")return lt;I.set(H.descriptorHash,H);let Re=Promise.resolve().then(()=>ke(H));return L.set(H.descriptorHash,Re),Re};for(let H of this.workspaces){let lt=H.anchoredDescriptor;te.push(ht(lt))}for(;te.length>0;){let H=[...te];te.length=0,await Uc(H)}});let Ae=sl(r.values(),ce=>this.tryWorkspaceByLocator(ce)?sl.skip:ce);if(o.length>0||Ae.length>0){let ce=new Set(this.workspaces.flatMap(H=>{let lt=v.get(H.anchoredLocator.locatorHash);if(!lt)throw new Error(\"Assertion failed: The workspace should have been resolved\");return Array.from(lt.dependencies.values(),Re=>{let Qe=b.get(Re.descriptorHash);if(!Qe)throw new Error(\"Assertion failed: The resolution should have been registered\");return Qe})})),ne=H=>ce.has(H.locatorHash)?\"0\":\"1\",ee=H=>xa(H),Ie=ks(o,[ne,ee]),ke=ks(Ae,[ne,ee]),ht=e.report.getRecommendedLength();Ie.length>0&&e.report.reportInfo(85,`${Ot(this.configuration,\"+\",yt.ADDED)} ${cS(this.configuration,Ie,ht)}`),ke.length>0&&e.report.reportInfo(85,`${Ot(this.configuration,\"-\",yt.REMOVED)} ${cS(this.configuration,ke,ht)}`)}let ye=new Set(this.resolutionAliases.values()),ae=new Set(v.keys()),we=new Set,Pe=new Map,g=[];NAt({project:this,accessibleLocators:we,volatileDescriptors:ye,optionalBuilds:ae,peerRequirements:Pe,peerWarnings:g,allDescriptors:I,allResolutions:b,allPackages:v});for(let ce of J)ae.delete(ce);for(let ce of ye)I.delete(ce),b.delete(ce);let Ee=new Set,De=new Set;for(let ce of v.values())ce.conditions!=null&&(!ae.has(ce.locatorHash)||(qS(ce,pe)||(qS(ce,le)&&e.report.reportWarningOnce(77,`${jr(this.configuration,ce)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ot(this.configuration,\"supportedArchitectures\",yt.SETTING)} setting`),De.add(ce.locatorHash)),Ee.add(ce.locatorHash)));this.storedResolutions=b,this.storedDescriptors=I,this.storedPackages=v,this.accessibleLocators=we,this.conditionalLocators=Ee,this.disabledLocators=De,this.originalPackages=C,this.optionalBuilds=ae,this.peerRequirements=Pe,this.peerWarnings=g}async fetchEverything({cache:e,report:r,fetcher:o,mode:a,persistProject:n=!0}){let u={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},A=o||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:A,report:r,cacheOptions:u},h=Array.from(new Set(ks(this.storedResolutions.values(),[C=>{let T=this.storedPackages.get(C);if(!T)throw new Error(\"Assertion failed: The locator should have been registered\");return xa(T)}])));a===\"update-lockfile\"&&(h=h.filter(C=>!this.storedChecksums.has(C)));let E=!1,I=Xs.progressViaCounter(h.length);await r.reportProgress(I);let v=(0,rk.default)(FAt);if(await Uc(h.map(C=>v(async()=>{let T=this.storedPackages.get(C);if(!T)throw new Error(\"Assertion failed: The locator should have been registered\");if(Hc(T))return;let L;try{L=await A.fetch(T,p)}catch(U){U.message=`${jr(this.configuration,T)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}L.checksum!=null?this.storedChecksums.set(T.locatorHash,L.checksum):this.storedChecksums.delete(T.locatorHash),L.releaseFs&&L.releaseFs()}).finally(()=>{I.tick()}))),E)throw E;let b=n&&a!==\"update-lockfile\"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||b){let T=(await Promise.all([...r.cacheMisses].map(async Ae=>{let ye=this.storedPackages.get(Ae),ae=this.storedChecksums.get(Ae)??null,we=e.getLocatorPath(ye,ae);return(await oe.statPromise(we)).size}))).reduce((Ae,ye)=>Ae+ye,0)-(b?.size??0),L=r.cacheMisses.size,U=b?.count??0,J=`${nS(L,{zero:\"No new packages\",one:\"A package was\",more:`${Ot(this.configuration,L,yt.NUMBER)} packages were`})} added to the project`,te=`${nS(U,{zero:\"none were\",one:\"one was\",more:`${Ot(this.configuration,U,yt.NUMBER)} were`})} removed`,le=T!==0?` (${Ot(this.configuration,T,yt.SIZE_DIFF)})`:\"\",pe=U>0?L>0?`${J}, and ${te}${le}.`:`${J}, but ${te}${le}.`:`${J}${le}.`;r.reportInfo(13,pe)}}async linkEverything({cache:e,report:r,fetcher:o,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(ce=>{let ne=ce.makeInstaller(h),ee=ce.getCustomDataKey(),Ie=this.linkersCustomData.get(ee);return typeof Ie<\"u\"&&ne.attachCustomData(Ie),[ce,ne]})),I=new Map,v=new Map,b=new Map,C=new Map(await Uc([...this.accessibleLocators].map(async ce=>{let ne=this.storedPackages.get(ce);if(!ne)throw new Error(\"Assertion failed: The locator should have been registered\");return[ce,await u.fetch(ne,A)]}))),T=[],L=new Set,U=[];for(let ce of this.accessibleLocators){let ne=this.storedPackages.get(ce);if(typeof ne>\"u\")throw new Error(\"Assertion failed: The locator should have been registered\");let ee=C.get(ne.locatorHash);if(typeof ee>\"u\")throw new Error(\"Assertion failed: The fetch result should have been registered\");let Ie=[],ke=H=>{Ie.push(H)},ht=this.tryWorkspaceByLocator(ne);if(ht!==null){let H=[],{scripts:lt}=ht.manifest;for(let Qe of[\"preinstall\",\"install\",\"postinstall\"])lt.has(Qe)&&H.push({type:0,script:Qe});try{for(let[Qe,be]of E)if(Qe.supportsPackage(ne,h)&&(await be.installPackage(ne,ee,{holdFetchResult:ke})).buildRequest!==null)throw new Error(\"Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core\")}finally{Ie.length===0?ee.releaseFs?.():T.push(Uc(Ie).catch(()=>{}).then(()=>{ee.releaseFs?.()}))}let Re=K.join(ee.packageFs.getRealPath(),ee.prefixPath);v.set(ne.locatorHash,Re),!Hc(ne)&&H.length>0&&b.set(ne.locatorHash,{buildDirectives:H,buildLocations:[Re]})}else{let H=p.find(Qe=>Qe.supportsPackage(ne,h));if(!H)throw new zt(12,`${jr(this.configuration,ne)} isn't supported by any available linker`);let lt=E.get(H);if(!lt)throw new Error(\"Assertion failed: The installer should have been registered\");let Re;try{Re=await lt.installPackage(ne,ee,{holdFetchResult:ke})}finally{Ie.length===0?ee.releaseFs?.():T.push(Uc(Ie).then(()=>{}).then(()=>{ee.releaseFs?.()}))}I.set(ne.locatorHash,H),v.set(ne.locatorHash,Re.packageLocation),Re.buildRequest&&Re.packageLocation&&(Re.buildRequest.skipped?(L.add(ne.locatorHash),this.skippedBuilds.has(ne.locatorHash)||U.push([ne,Re.buildRequest.explain])):b.set(ne.locatorHash,{buildDirectives:Re.buildRequest.directives,buildLocations:[Re.packageLocation]}))}}let J=new Map;for(let ce of this.accessibleLocators){let ne=this.storedPackages.get(ce);if(!ne)throw new Error(\"Assertion failed: The locator should have been registered\");let ee=this.tryWorkspaceByLocator(ne)!==null,Ie=async(ke,ht)=>{let H=v.get(ne.locatorHash);if(typeof H>\"u\")throw new Error(`Assertion failed: The package (${jr(this.configuration,ne)}) should have been registered`);let lt=[];for(let Re of ne.dependencies.values()){let Qe=this.storedResolutions.get(Re.descriptorHash);if(typeof Qe>\"u\")throw new Error(`Assertion failed: The resolution (${qn(this.configuration,Re)}, from ${jr(this.configuration,ne)})should have been registered`);let be=this.storedPackages.get(Qe);if(typeof be>\"u\")throw new Error(`Assertion failed: The package (${Qe}, resolved from ${qn(this.configuration,Re)}) should have been registered`);let _e=this.tryWorkspaceByLocator(be)===null?I.get(Qe):null;if(typeof _e>\"u\")throw new Error(`Assertion failed: The package (${Qe}, resolved from ${qn(this.configuration,Re)}) should have been registered`);_e===ke||_e===null?v.get(be.locatorHash)!==null&&lt.push([Re,be]):!ee&&H!==null&&Gy(J,Qe).push(H)}H!==null&&await ht.attachInternalDependencies(ne,lt)};if(ee)for(let[ke,ht]of E)ke.supportsPackage(ne,h)&&await Ie(ke,ht);else{let ke=I.get(ne.locatorHash);if(!ke)throw new Error(\"Assertion failed: The linker should have been found\");let ht=E.get(ke);if(!ht)throw new Error(\"Assertion failed: The installer should have been registered\");await Ie(ke,ht)}}for(let[ce,ne]of J){let ee=this.storedPackages.get(ce);if(!ee)throw new Error(\"Assertion failed: The package should have been registered\");let Ie=I.get(ee.locatorHash);if(!Ie)throw new Error(\"Assertion failed: The linker should have been found\");let ke=E.get(Ie);if(!ke)throw new Error(\"Assertion failed: The installer should have been registered\");await ke.attachExternalDependents(ee,ne)}let te=new Map;for(let[ce,ne]of E){let ee=await ne.finalizeInstall();for(let Ie of ee?.records??[])Ie.buildRequest.skipped?(L.add(Ie.locator.locatorHash),this.skippedBuilds.has(Ie.locator.locatorHash)||U.push([Ie.locator,Ie.buildRequest.explain])):b.set(Ie.locator.locatorHash,{buildDirectives:Ie.buildRequest.directives,buildLocations:Ie.buildLocations});typeof ee?.customData<\"u\"&&te.set(ce.getCustomDataKey(),ee.customData)}if(this.linkersCustomData=te,await Uc(T),a===\"skip-build\")return;for(let[,ce]of ks(U,([ne])=>xa(ne)))ce(r);let le=new Set(this.storedPackages.keys()),pe=new Set(b.keys());for(let ce of pe)le.delete(ce);let Ae=(0,ek.createHash)(\"sha512\");Ae.update(process.versions.node),await this.configuration.triggerHook(ce=>ce.globalHashGeneration,this,ce=>{Ae.update(\"\\0\"),Ae.update(ce)});let ye=Ae.digest(\"hex\"),ae=new Map,we=ce=>{let ne=ae.get(ce.locatorHash);if(typeof ne<\"u\")return ne;let ee=this.storedPackages.get(ce.locatorHash);if(typeof ee>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let Ie=(0,ek.createHash)(\"sha512\");Ie.update(ce.locatorHash),ae.set(ce.locatorHash,\"<recursive>\");for(let ke of ee.dependencies.values()){let ht=this.storedResolutions.get(ke.descriptorHash);if(typeof ht>\"u\")throw new Error(`Assertion failed: The resolution (${qn(this.configuration,ke)}) should have been registered`);let H=this.storedPackages.get(ht);if(typeof H>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");Ie.update(we(H))}return ne=Ie.digest(\"hex\"),ae.set(ce.locatorHash,ne),ne},Pe=(ce,ne)=>{let ee=(0,ek.createHash)(\"sha512\");ee.update(ye),ee.update(we(ce));for(let Ie of ne)ee.update(Ie);return ee.digest(\"hex\")},g=new Map,Ee=!1,De=ce=>{let ne=new Set([ce.locatorHash]);for(let ee of ne){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error(\"Assertion failed: The package should have been registered\");for(let ke of Ie.dependencies.values()){let ht=this.storedResolutions.get(ke.descriptorHash);if(!ht)throw new Error(`Assertion failed: The resolution (${qn(this.configuration,ke)}) should have been registered`);if(ht!==ce.locatorHash&&pe.has(ht))return!1;let H=this.storedPackages.get(ht);if(!H)throw new Error(\"Assertion failed: The package should have been registered\");let lt=this.tryWorkspaceByLocator(H);if(lt){if(lt.anchoredLocator.locatorHash!==ce.locatorHash&&pe.has(lt.anchoredLocator.locatorHash))return!1;ne.add(lt.anchoredLocator.locatorHash)}ne.add(ht)}}return!0};for(;pe.size>0;){let ce=pe.size,ne=[];for(let ee of pe){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error(\"Assertion failed: The package should have been registered\");if(!De(Ie))continue;let ke=b.get(Ie.locatorHash);if(!ke)throw new Error(\"Assertion failed: The build directive should have been registered\");let ht=Pe(Ie,ke.buildLocations);if(this.storedBuildState.get(Ie.locatorHash)===ht){g.set(Ie.locatorHash,ht),pe.delete(ee);continue}Ee||(await this.persistInstallStateFile(),Ee=!0),this.storedBuildState.has(Ie.locatorHash)?r.reportInfo(8,`${jr(this.configuration,Ie)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${jr(this.configuration,Ie)} must be built because it never has been before or the last one failed`);let H=ke.buildLocations.map(async lt=>{if(!K.isAbsolute(lt))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${lt})`);for(let Re of ke.buildDirectives){let Qe=`# This file contains the result of Yarn building a package (${xa(Ie)})\n`;switch(Re.type){case 0:Qe+=`# Script name: ${Re.script}\n`;break;case 1:Qe+=`# Script code: ${Re.script}\n`;break}let be=null;if(!await oe.mktempPromise(async Te=>{let Je=K.join(Te,\"build.log\"),{stdout:He,stderr:x}=this.configuration.getSubprocessStreams(Je,{header:Qe,prefix:jr(this.configuration,Ie),report:r}),w;try{switch(Re.type){case 0:w=await Vx(Ie,Re.script,[],{cwd:lt,project:this,stdin:be,stdout:He,stderr:x});break;case 1:w=await wU(Ie,Re.script,[],{cwd:lt,project:this,stdin:be,stdout:He,stderr:x});break}}catch(F){x.write(F.stack),w=1}if(He.end(),x.end(),w===0)return!0;oe.detachTemp(Te);let S=`${jr(this.configuration,Ie)} couldn't be built successfully (exit code ${Ot(this.configuration,w,yt.NUMBER)}, logs can be found here: ${Ot(this.configuration,Je,yt.PATH)})`,y=this.optionalBuilds.has(Ie.locatorHash);return y?r.reportInfo(9,S):r.reportError(9,S),Jce&&r.reportFold(ue.fromPortablePath(Je),oe.readFileSync(Je,\"utf8\")),y}))return!1}return!0});ne.push(...H,Promise.allSettled(H).then(lt=>{pe.delete(ee),lt.every(Re=>Re.status===\"fulfilled\"&&Re.value===!0)&&g.set(Ie.locatorHash,ht)}))}if(await Uc(ne),ce===pe.size){let ee=Array.from(pe).map(Ie=>{let ke=this.storedPackages.get(Ie);if(!ke)throw new Error(\"Assertion failed: The package should have been registered\");return jr(this.configuration,ke)}).join(\", \");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ee})`);break}}this.storedBuildState=g,this.skippedBuilds=L}async installWithNewReport(e,r){return(await Nt.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get(\"nodeLinker\");Ve.telemetry?.reportInstall(r);let o=!1;if(await e.report.startTimerPromise(\"Project validation\",{skipIfEmpty:!0},async()=>{this.configuration.get(\"enableOfflineMode\")&&e.report.reportWarning(90,\"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it\"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),o=!0}})}),o)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,I]of E)for(let v of I)v.status=\"inactive\";let n=K.join(this.cwd,dr.lockfile),u=null;if(e.immutable)try{u=await oe.readFilePromise(n,\"utf8\")}catch(E){throw E.code===\"ENOENT\"?new zt(28,\"The lockfile would have been created by this install, which is explicitly forbidden.\"):E}await e.report.startTimerPromise(\"Resolution step\",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise(\"Post-resolution validation\",{skipIfEmpty:!0},async()=>{LAt(this,e.report);for(let[,E]of a)for(let[,I]of E)for(let v of I)if(v.userProvided){let b=Ot(this.configuration,v,yt.PACKAGE_EXTENSION);switch(v.status){case\"inactive\":e.report.reportWarning(68,`${b}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case\"redundant\":e.report.reportWarning(69,`${b}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(u!==null){let E=Ug(u,this.generateLockfile());if(E!==u){let I=ppe(n,n,u,E,void 0,void 0,{maxEditLength:100});if(I){e.report.reportSeparator();for(let v of I.hunks){e.report.reportInfo(null,`@@ -${v.oldStart},${v.oldLines} +${v.newStart},${v.newLines} @@`);for(let b of v.lines)b.startsWith(\"+\")?e.report.reportError(28,Ot(this.configuration,b,yt.ADDED)):b.startsWith(\"-\")?e.report.reportError(28,Ot(this.configuration,b,yt.REMOVED)):e.report.reportInfo(null,Ot(this.configuration,b,\"grey\"))}e.report.reportSeparator()}throw new zt(28,\"The lockfile would have been modified by this install, which is explicitly forbidden.\")}}});for(let E of a.values())for(let[,I]of E)for(let v of I)v.userProvided&&v.status===\"active\"&&Ve.telemetry?.reportPackageExtension(yd(v,yt.PACKAGE_EXTENSION));await e.report.startTimerPromise(\"Fetch step\",async()=>{await this.fetchEverything(e)});let A=e.immutable?[...new Set(this.configuration.get(\"immutablePatterns\"))].sort():[],p=await Promise.all(A.map(async E=>MS(E,{cwd:this.cwd})));(typeof e.persistProject>\"u\"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise(\"Link step\",async()=>{if(e.mode===\"update-lockfile\"){e.report.reportWarning(73,`Skipped due to ${Ot(this.configuration,\"mode=update-lockfile\",yt.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(A.map(async I=>MS(I,{cwd:this.cwd})));for(let I=0;I<A.length;++I)p[I]!==E[I]&&e.report.reportError(64,`The checksum for ${A[I]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile();let h=!1;await e.report.startTimerPromise(\"Post-install validation\",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,u]of this.storedResolutions.entries()){let A=e.get(u);A||e.set(u,A=new Set),A.add(n)}let r={},{cacheKey:o}=Lr.getCacheKey(this.configuration);r.__metadata={version:nk,cacheKey:o};for(let[n,u]of e.entries()){let A=this.originalPackages.get(n);if(!A)continue;let p=[];for(let b of u){let C=this.storedDescriptors.get(b);if(!C)throw new Error(\"Assertion failed: The descriptor should have been registered\");p.push(C)}let h=p.map(b=>Sa(b)).sort().join(\", \"),E=new Mt;E.version=A.linkType===\"HARD\"?A.version:\"0.0.0-use.local\",E.languageName=A.languageName,E.dependencies=new Map(A.dependencies),E.peerDependencies=new Map(A.peerDependencies),E.dependenciesMeta=new Map(A.dependenciesMeta),E.peerDependenciesMeta=new Map(A.peerDependenciesMeta),E.bin=new Map(A.bin);let I,v=this.storedChecksums.get(A.locatorHash);if(typeof v<\"u\"){let b=v.indexOf(\"/\");if(b===-1)throw new Error(\"Assertion failed: Expected the checksum to reference its cache key\");let C=v.slice(0,b),T=v.slice(b+1);C===o?I=T:I=v}r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:A.linkType.toLowerCase(),resolution:xa(A),checksum:I,conditions:A.conditions||void 0}}return`${[`# This file is generated by running \"yarn install\" inside your project.\n`,`# Manual changes might be lost - proceed with caution!\n`].join(\"\")}\n`+Ba(r)}async persistLockfile(){let e=K.join(this.cwd,dr.lockfile),r=\"\";try{r=await oe.readFilePromise(e,\"utf8\")}catch{}let o=this.generateLockfile(),a=Ug(r,o);a!==r&&(await oe.writeFilePromise(e,a),this.lockFileChecksum=zpe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let u of Object.values(k_))e.push(...u);let r=(0,tk.default)(this,e),o=Q_.default.serialize(r),a=zs(o);if(this.installStateChecksum===a)return;let n=this.configuration.get(\"installStatePath\");await oe.mkdirPromise(K.dirname(n),{recursive:!0}),await oe.writeFilePromise(n,await TAt(o)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:o=!0}={}){let a=this.configuration.get(\"installStatePath\"),n;try{let u=await RAt(await oe.readFilePromise(a));n=Q_.default.deserialize(u),this.installStateChecksum=zs(u)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<\"u\"&&(this.linkersCustomData=n.linkersCustomData),o&&Object.assign(this,(0,tk.default)(n,k_.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,tk.default)(n,k_.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Qi}),await this.persistInstallStateFile()}async persist(){let e=(0,rk.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get(\"enableGlobalCache\"))return null;let o=new Set([\".gitignore\"]);if(!IO(e.cwd,this.cwd)||!await oe.existsPromise(e.cwd))return null;let a=[];for(let u of await oe.readdirPromise(e.cwd)){if(o.has(u))continue;let A=K.resolve(e.cwd,u);e.markedFiles.has(A)||(e.immutable?r.reportError(56,`${Ot(this.configuration,K.basename(A),\"magenta\")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(oe.lstatPromise(A).then(async p=>(await oe.removePromise(A),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((u,A)=>u+A,0)}}}});function MAt(t){let o=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),u=n+a,A=t.state.lastTips??o*864e5,p=A+864e5+8*36e5-t.timeZone,h=u<=t.timeNow,E=p<=t.timeNow,I=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(I={},I.lastUpdate=h?t.timeNow:n,I.lastTips=A,I.blocks=h?{}:t.state.blocks,I.displayedTips=t.state.displayedTips),{nextState:I,triggerUpdate:h,triggerTips:E,nextTips:E?o*864e5:A}}var cC,$pe=Et(()=>{Pt();N1();rh();Bx();jl();kf();cC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let o=this.getRegistryPath();this.isNew=!oe.existsSync(o),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),o=A=>A&&tn?bf(tn,A):!1,a=e.map((A,p)=>p).filter(A=>e[A]&&o(e[A]?.selector));if(a.length===0)return null;let n=a.filter(A=>!r.has(A));if(n.length===0){let A=Math.floor(a.length*.2);this.displayedTips=A>0?this.displayedTips.slice(-A):[],n=a.filter(p=>!r.has(p))}let u=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(u),this.commitTips(),e[u]}reportVersion(e){this.reportValue(\"version\",e.replace(/-git\\..*/,\"-git\"))}reportCommandName(e){this.reportValue(\"commandName\",e||\"<none>\")}reportPluginName(e){this.reportValue(\"pluginName\",e)}reportProject(e){this.reportEnumerator(\"projectCount\",e)}reportInstall(e){this.reportHit(\"installCount\",e)}reportPackageExtension(e){this.reportValue(\"packageExtension\",e)}reportWorkspaceCount(e){this.reportValue(\"workspaceCount\",String(e))}reportDependencyCount(e){this.reportValue(\"dependencyCount\",String(e))}reportValue(e,r){dd(this.values,e).add(r)}reportEnumerator(e,r){dd(this.enumerators,e).add(zs(r))}reportHit(e,r=\"*\"){let o=Yy(this.hits,e),a=ol(o,r,()=>0);o.set(r,a+1)}getRegistryPath(){let e=this.configuration.get(\"globalFolder\");return K.join(e,\"telemetry.json\")}sendReport(e){let r=this.getRegistryPath(),o;try{o=oe.readJsonSync(r)}catch{o={}}let{nextState:a,triggerUpdate:n,triggerTips:u,nextTips:A}=MAt({state:o,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get(\"telemetryInterval\")});if(this.nextTips=A,this.displayedTips=o.displayedTips??[],a!==null)try{oe.mkdirSync(K.dirname(r),{recursive:!0}),oe.writeJsonSync(r,a)}catch{return!1}if(u&&this.configuration.get(\"enableTips\")&&(this.shouldShowTips=!0),n){let p=o.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=I=>U4(h,I,{configuration:this.configuration}).catch(()=>{});for(let[I,v]of Object.entries(o.blocks??{})){if(Object.keys(v).length===0)continue;let b=v;b.userId=I,b.reportType=\"primary\";for(let L of Object.keys(b.enumerators??{}))b.enumerators[L]=b.enumerators[L].length;E(b);let C=new Map,T=20;for(let[L,U]of Object.entries(b.values))U.length>0&&C.set(L,U.slice(0,T));for(;C.size>0;){let L={};L.userId=I,L.reportType=\"secondary\",L.metrics={};for(let[U,J]of C)L.metrics[U]=J.shift(),J.length===0&&C.delete(U);E(L)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=oe.readJsonSync(e)}catch{r={}}let o=this.configuration.get(\"telemetryUserId\")??\"*\",a=r.blocks=r.blocks??{},n=a[o]=a[o]??{};for(let u of this.hits.keys()){let A=n.hits=n.hits??{},p=A[u]=A[u]??{};for(let[h,E]of this.hits.get(u))p[h]=(p[h]??0)+E}for(let u of[\"values\",\"enumerators\"])for(let A of this[u].keys()){let p=n[u]=n[u]??{};p[A]=[...new Set([...p[A]??[],...this[u].get(A)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),oe.mkdirSync(K.dirname(e),{recursive:!0}),oe.writeJsonSync(e,r)}startBuffer(){process.on(\"exit\",()=>{try{this.applyChanges()}catch{}})}}});var s2={};Kt(s2,{BuildDirectiveType:()=>zb,CACHE_CHECKPOINT:()=>A_,CACHE_VERSION:()=>Jb,Cache:()=>Lr,Configuration:()=>Ve,DEFAULT_RC_FILENAME:()=>W4,FormatType:()=>Qle,InstallMode:()=>pl,LEGACY_PLUGINS:()=>B1,LOCKFILE_VERSION:()=>nk,LegacyMigrationResolver:()=>sC,LightReport:()=>AA,LinkType:()=>Jy,LockfileResolver:()=>oC,Manifest:()=>Mt,MessageName:()=>wr,MultiFetcher:()=>pE,PackageExtensionStatus:()=>DL,PackageExtensionType:()=>vL,PeerWarningType:()=>ik,Project:()=>St,Report:()=>Xs,ReportError:()=>zt,SettingsType:()=>v1,StreamReport:()=>Nt,TAG_REGEXP:()=>QE,TelemetryManager:()=>cC,ThrowReport:()=>Qi,VirtualFetcher:()=>hE,WindowsLinkType:()=>kx,Workspace:()=>lC,WorkspaceFetcher:()=>dE,WorkspaceResolver:()=>Xn,YarnVersion:()=>tn,execUtils:()=>Ur,folderUtils:()=>WS,formatUtils:()=>de,hashUtils:()=>wn,httpUtils:()=>rn,miscUtils:()=>je,nodeUtils:()=>Ji,parseMessageName:()=>fP,reportOptionDeprecations:()=>NE,scriptUtils:()=>un,semverUtils:()=>kr,stringifyMessageName:()=>Wu,structUtils:()=>W,tgzUtils:()=>Xi,treeUtils:()=>$s});var Ye=Et(()=>{Px();VS();ql();rh();Bx();jl();Dx();DU();kf();xo();$fe();ope();f_();D1();D1();lpe();p_();cpe();h_();AE();pP();AO();Zpe();Yl();L1();$pe();x_();pO();hO();Bd();b_();N1();Ine()});var she=_((K_t,a2)=>{\"use strict\";var UAt=process.env.TERM_PROGRAM===\"Hyper\",_At=process.platform===\"win32\",rhe=process.platform===\"linux\",R_={ballotDisabled:\"\\u2612\",ballotOff:\"\\u2610\",ballotOn:\"\\u2611\",bullet:\"\\u2022\",bulletWhite:\"\\u25E6\",fullBlock:\"\\u2588\",heart:\"\\u2764\",identicalTo:\"\\u2261\",line:\"\\u2500\",mark:\"\\u203B\",middot:\"\\xB7\",minus:\"\\uFF0D\",multiplication:\"\\xD7\",obelus:\"\\xF7\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",pencilUpRight:\"\\u2710\",percent:\"%\",pilcrow2:\"\\u2761\",pilcrow:\"\\xB6\",plusMinus:\"\\xB1\",section:\"\\xA7\",starsOff:\"\\u2606\",starsOn:\"\\u2605\",upDownArrow:\"\\u2195\"},nhe=Object.assign({},R_,{check:\"\\u221A\",cross:\"\\xD7\",ellipsisLarge:\"...\",ellipsis:\"...\",info:\"i\",question:\"?\",questionSmall:\"?\",pointer:\">\",pointerSmall:\"\\xBB\",radioOff:\"( )\",radioOn:\"(*)\",warning:\"\\u203C\"}),ihe=Object.assign({},R_,{ballotCross:\"\\u2718\",check:\"\\u2714\",cross:\"\\u2716\",ellipsisLarge:\"\\u22EF\",ellipsis:\"\\u2026\",info:\"\\u2139\",question:\"?\",questionFull:\"\\uFF1F\",questionSmall:\"\\uFE56\",pointer:rhe?\"\\u25B8\":\"\\u276F\",pointerSmall:rhe?\"\\u2023\":\"\\u203A\",radioOff:\"\\u25EF\",radioOn:\"\\u25C9\",warning:\"\\u26A0\"});a2.exports=_At&&!UAt?nhe:ihe;Reflect.defineProperty(a2.exports,\"common\",{enumerable:!1,value:R_});Reflect.defineProperty(a2.exports,\"windows\",{enumerable:!1,value:nhe});Reflect.defineProperty(a2.exports,\"other\",{enumerable:!1,value:ihe})});var Vc=_((J_t,N_)=>{\"use strict\";var HAt=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),jAt=/[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,ohe=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};\"FORCE_COLOR\"in process.env&&(t.enabled=process.env.FORCE_COLOR!==\"0\");let e=n=>{let u=n.open=`\\x1B[${n.codes[0]}m`,A=n.close=`\\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\\\u001b\\\\[${n.codes[1]}m`,\"g\");return n.wrap=(h,E)=>{h.includes(A)&&(h=h.replace(p,A+u));let I=u+h+A;return E?I.replace(/\\r*\\n/g,`${A}$&${u}`):I},n},r=(n,u,A)=>typeof n==\"function\"?n(u):n.wrap(u,A),o=(n,u)=>{if(n===\"\"||n==null)return\"\";if(t.enabled===!1)return n;if(t.visible===!1)return\"\";let A=\"\"+n,p=A.includes(`\n`),h=u.length;for(h>0&&u.includes(\"unstyle\")&&(u=[...new Set([\"unstyle\",...u])].reverse());h-- >0;)A=r(t.styles[u[h]],A,p);return A},a=(n,u,A)=>{t.styles[n]=e({name:n,codes:u}),(t.keys[A]||(t.keys[A]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>o(E,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a(\"reset\",[0,0],\"modifier\"),a(\"bold\",[1,22],\"modifier\"),a(\"dim\",[2,22],\"modifier\"),a(\"italic\",[3,23],\"modifier\"),a(\"underline\",[4,24],\"modifier\"),a(\"inverse\",[7,27],\"modifier\"),a(\"hidden\",[8,28],\"modifier\"),a(\"strikethrough\",[9,29],\"modifier\"),a(\"black\",[30,39],\"color\"),a(\"red\",[31,39],\"color\"),a(\"green\",[32,39],\"color\"),a(\"yellow\",[33,39],\"color\"),a(\"blue\",[34,39],\"color\"),a(\"magenta\",[35,39],\"color\"),a(\"cyan\",[36,39],\"color\"),a(\"white\",[37,39],\"color\"),a(\"gray\",[90,39],\"color\"),a(\"grey\",[90,39],\"color\"),a(\"bgBlack\",[40,49],\"bg\"),a(\"bgRed\",[41,49],\"bg\"),a(\"bgGreen\",[42,49],\"bg\"),a(\"bgYellow\",[43,49],\"bg\"),a(\"bgBlue\",[44,49],\"bg\"),a(\"bgMagenta\",[45,49],\"bg\"),a(\"bgCyan\",[46,49],\"bg\"),a(\"bgWhite\",[47,49],\"bg\"),a(\"blackBright\",[90,39],\"bright\"),a(\"redBright\",[91,39],\"bright\"),a(\"greenBright\",[92,39],\"bright\"),a(\"yellowBright\",[93,39],\"bright\"),a(\"blueBright\",[94,39],\"bright\"),a(\"magentaBright\",[95,39],\"bright\"),a(\"cyanBright\",[96,39],\"bright\"),a(\"whiteBright\",[97,39],\"bright\"),a(\"bgBlackBright\",[100,49],\"bgBright\"),a(\"bgRedBright\",[101,49],\"bgBright\"),a(\"bgGreenBright\",[102,49],\"bgBright\"),a(\"bgYellowBright\",[103,49],\"bgBright\"),a(\"bgBlueBright\",[104,49],\"bgBright\"),a(\"bgMagentaBright\",[105,49],\"bgBright\"),a(\"bgCyanBright\",[106,49],\"bgBright\"),a(\"bgWhiteBright\",[107,49],\"bgBright\"),t.ansiRegex=jAt,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n==\"string\"&&n!==\"\"&&t.ansiRegex.test(n)),t.alias=(n,u)=>{let A=typeof u==\"string\"?t[u]:u;if(typeof A!=\"function\")throw new TypeError(\"Expected alias to be the name of an existing color (string) or a function\");A.stack||(Reflect.defineProperty(A,\"name\",{value:n}),t.styles[n]=A,A.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>o(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(A.stack):A.stack,p}})},t.theme=n=>{if(!HAt(n))throw new TypeError(\"Expected theme to be an object\");for(let u of Object.keys(n))t.alias(u,n[u]);return t},t.alias(\"unstyle\",n=>typeof n==\"string\"&&n!==\"\"?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,\"\")):\"\"),t.alias(\"noop\",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=she(),t.define=a,t};N_.exports=ohe();N_.exports.create=ohe});var No=_(nn=>{\"use strict\";var qAt=Object.prototype.toString,rc=Vc(),ahe=!1,L_=[],lhe={yellow:\"blue\",cyan:\"red\",green:\"magenta\",black:\"white\",blue:\"yellow\",red:\"cyan\",magenta:\"green\",white:\"black\"};nn.longest=(t,e)=>t.reduce((r,o)=>Math.max(r,e?o[e].length:o.length),0);nn.hasColor=t=>!!t&&rc.hasColor(t);var ok=nn.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);nn.nativeType=t=>qAt.call(t).slice(8,-1).toLowerCase().replace(/\\s/g,\"\");nn.isAsyncFn=t=>nn.nativeType(t)===\"asyncfunction\";nn.isPrimitive=t=>t!=null&&typeof t!=\"object\"&&typeof t!=\"function\";nn.resolve=(t,e,...r)=>typeof e==\"function\"?e.call(t,...r):e;nn.scrollDown=(t=[])=>[...t.slice(1),t[0]];nn.scrollUp=(t=[])=>[t.pop(),...t];nn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,o)=>r.index>o.index?1:r.index<o.index?-1:0),e};nn.swap=(t,e,r)=>{let o=t.length,a=r===o?0:r<0?o-1:r,n=t[e];t[e]=t[a],t[a]=n};nn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[0]),process.platform===\"win32\"?r-1:r};nn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[1]),r};nn.wordWrap=(t,e={})=>{if(!t)return t;typeof e==\"number\"&&(e={width:e});let{indent:r=\"\",newline:o=`\n`+r,width:a=80}=e,n=(o+r).match(/[^\\S\\n]/g)||[];a-=n.length;let u=`.{1,${a}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`,A=t.trim(),p=new RegExp(u,\"g\"),h=A.match(p)||[];return h=h.map(E=>E.replace(/\\n$/,\"\")),e.padEnd&&(h=h.map(E=>E.padEnd(a,\" \"))),e.padStart&&(h=h.map(E=>E.padStart(a,\" \"))),r+h.join(o)};nn.unmute=t=>{let e=t.stack.find(o=>rc.keys.color.includes(o));return e?rc[e]:t.stack.find(o=>o.slice(2)===\"bg\")?rc[e.slice(2)]:o=>o};nn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):\"\";nn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o));if(e){let o=rc[\"bg\"+nn.pascal(e)];return o?o.black:t}let r=t.stack.find(o=>o.slice(0,2)===\"bg\");return r?rc[r.slice(2).toLowerCase()]||t:rc.none};nn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o)),r=t.stack.find(o=>o.slice(0,2)===\"bg\");if(e&&!r)return rc[lhe[e]||e];if(r){let o=r.slice(2).toLowerCase(),a=lhe[o];return a&&rc[\"bg\"+nn.pascal(a)]||t}return rc.none};nn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),o=e>=12?\"pm\":\"am\";e=e%12;let a=e===0?12:e,n=r<10?\"0\"+r:r;return a+\":\"+n+\" \"+o};nn.set=(t={},e=\"\",r)=>e.split(\".\").reduce((o,a,n,u)=>{let A=u.length-1>n?o[a]||{}:r;return!nn.isObject(A)&&n<u.length-1&&(A={}),o[a]=A},t);nn.get=(t={},e=\"\",r)=>{let o=t[e]==null?e.split(\".\").reduce((a,n)=>a&&a[n],t):t[e];return o??r};nn.mixin=(t,e)=>{if(!ok(t))return e;if(!ok(e))return t;for(let r of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,r);if(o.hasOwnProperty(\"value\"))if(t.hasOwnProperty(r)&&ok(o.value)){let a=Object.getOwnPropertyDescriptor(t,r);ok(a.value)?t[r]=nn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,o)}else Reflect.defineProperty(t,r,o);else Reflect.defineProperty(t,r,o)}return t};nn.merge=(...t)=>{let e={};for(let r of t)nn.mixin(e,r);return e};nn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let o of Object.keys(r)){let a=r[o];typeof a==\"function\"?nn.define(t,o,a.bind(e)):nn.define(t,o,a)}};nn.onExit=t=>{let e=(r,o)=>{ahe||(ahe=!0,L_.forEach(a=>a()),r===!0&&process.exit(128+o))};L_.length===0&&(process.once(\"SIGTERM\",e.bind(null,!0,15)),process.once(\"SIGINT\",e.bind(null,!0,2)),process.once(\"exit\",e)),L_.push(t)};nn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};nn.defineExport=(t,e,r)=>{let o;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){o=a},get(){return o?o():r()}})}});var che=_(pC=>{\"use strict\";pC.ctrl={a:\"first\",b:\"backward\",c:\"cancel\",d:\"deleteForward\",e:\"last\",f:\"forward\",g:\"reset\",i:\"tab\",k:\"cutForward\",l:\"reset\",n:\"newItem\",m:\"cancel\",j:\"submit\",p:\"search\",r:\"remove\",s:\"save\",u:\"undo\",w:\"cutLeft\",x:\"toggleCursor\",v:\"paste\"};pC.shift={up:\"shiftUp\",down:\"shiftDown\",left:\"shiftLeft\",right:\"shiftRight\",tab:\"prev\"};pC.fn={up:\"pageUp\",down:\"pageDown\",left:\"pageLeft\",right:\"pageRight\",delete:\"deleteForward\"};pC.option={b:\"backward\",f:\"forward\",d:\"cutRight\",left:\"cutLeft\",up:\"altUp\",down:\"altDown\"};pC.keys={pageup:\"pageUp\",pagedown:\"pageDown\",home:\"home\",end:\"end\",cancel:\"cancel\",delete:\"deleteForward\",backspace:\"delete\",down:\"down\",enter:\"submit\",escape:\"cancel\",left:\"left\",space:\"space\",number:\"number\",return:\"submit\",right:\"right\",tab:\"next\",up:\"up\"}});var fhe=_((Z_t,Ahe)=>{\"use strict\";var uhe=Be(\"readline\"),GAt=che(),YAt=/^(?:\\x1b)([a-zA-Z0-9])$/,WAt=/^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/,VAt={OP:\"f1\",OQ:\"f2\",OR:\"f3\",OS:\"f4\",\"[11~\":\"f1\",\"[12~\":\"f2\",\"[13~\":\"f3\",\"[14~\":\"f4\",\"[[A\":\"f1\",\"[[B\":\"f2\",\"[[C\":\"f3\",\"[[D\":\"f4\",\"[[E\":\"f5\",\"[15~\":\"f5\",\"[17~\":\"f6\",\"[18~\":\"f7\",\"[19~\":\"f8\",\"[20~\":\"f9\",\"[21~\":\"f10\",\"[23~\":\"f11\",\"[24~\":\"f12\",\"[A\":\"up\",\"[B\":\"down\",\"[C\":\"right\",\"[D\":\"left\",\"[E\":\"clear\",\"[F\":\"end\",\"[H\":\"home\",OA:\"up\",OB:\"down\",OC:\"right\",OD:\"left\",OE:\"clear\",OF:\"end\",OH:\"home\",\"[1~\":\"home\",\"[2~\":\"insert\",\"[3~\":\"delete\",\"[4~\":\"end\",\"[5~\":\"pageup\",\"[6~\":\"pagedown\",\"[[5~\":\"pageup\",\"[[6~\":\"pagedown\",\"[7~\":\"home\",\"[8~\":\"end\",\"[a\":\"up\",\"[b\":\"down\",\"[c\":\"right\",\"[d\":\"left\",\"[e\":\"clear\",\"[2$\":\"insert\",\"[3$\":\"delete\",\"[5$\":\"pageup\",\"[6$\":\"pagedown\",\"[7$\":\"home\",\"[8$\":\"end\",Oa:\"up\",Ob:\"down\",Oc:\"right\",Od:\"left\",Oe:\"clear\",\"[2^\":\"insert\",\"[3^\":\"delete\",\"[5^\":\"pageup\",\"[6^\":\"pagedown\",\"[7^\":\"home\",\"[8^\":\"end\",\"[Z\":\"tab\"};function KAt(t){return[\"[a\",\"[b\",\"[c\",\"[d\",\"[e\",\"[2$\",\"[3$\",\"[5$\",\"[6$\",\"[7$\",\"[8$\",\"[Z\"].includes(t)}function JAt(t){return[\"Oa\",\"Ob\",\"Oc\",\"Od\",\"Oe\",\"[2^\",\"[3^\",\"[5^\",\"[6^\",\"[7^\",\"[8^\"].includes(t)}var ak=(t=\"\",e={})=>{let r,o={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=\"\\x1B\"+String(t)):t=String(t):t!==void 0&&typeof t!=\"string\"?t=String(t):t||(t=o.sequence||\"\"),o.sequence=o.sequence||t||o.name,t===\"\\r\")o.raw=void 0,o.name=\"return\";else if(t===`\n`)o.name=\"enter\";else if(t===\"\t\")o.name=\"tab\";else if(t===\"\\b\"||t===\"\\x7F\"||t===\"\\x1B\\x7F\"||t===\"\\x1B\\b\")o.name=\"backspace\",o.meta=t.charAt(0)===\"\\x1B\";else if(t===\"\\x1B\"||t===\"\\x1B\\x1B\")o.name=\"escape\",o.meta=t.length===2;else if(t===\" \"||t===\"\\x1B \")o.name=\"space\",o.meta=t.length===2;else if(t<=\"\u001a\")o.name=String.fromCharCode(t.charCodeAt(0)+\"a\".charCodeAt(0)-1),o.ctrl=!0;else if(t.length===1&&t>=\"0\"&&t<=\"9\")o.name=\"number\";else if(t.length===1&&t>=\"a\"&&t<=\"z\")o.name=t;else if(t.length===1&&t>=\"A\"&&t<=\"Z\")o.name=t.toLowerCase(),o.shift=!0;else if(r=YAt.exec(t))o.meta=!0,o.shift=/^[A-Z]$/.test(r[1]);else if(r=WAt.exec(t)){let a=[...t];a[0]===\"\\x1B\"&&a[1]===\"\\x1B\"&&(o.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(\"\"),u=(r[3]||r[5]||1)-1;o.ctrl=!!(u&4),o.meta=!!(u&10),o.shift=!!(u&1),o.code=n,o.name=VAt[n],o.shift=KAt(n)||o.shift,o.ctrl=JAt(n)||o.ctrl}return o};ak.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error(\"Invalid stream passed\");let o=uhe.createInterface({terminal:!0,input:r});uhe.emitKeypressEvents(r,o);let a=(A,p)=>e(A,ak(A,p),o),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on(\"keypress\",a),o.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener(\"keypress\",a),o.pause(),o.close()}};ak.action=(t,e,r)=>{let o={...GAt,...r};return e.ctrl?(e.action=o.ctrl[e.name],e):e.option&&o.option?(e.action=o.option[e.name],e):e.shift?(e.action=o.shift[e.name],e):(e.action=o.keys[e.name],e)};Ahe.exports=ak});var hhe=_(($_t,phe)=>{\"use strict\";phe.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let o=e[r];typeof o==\"number\"&&(o={interval:o}),zAt(t,r,o)}};function zAt(t,e,r={}){let o=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;o.frames=r.frames||[],o.loading=!0;let n=setInterval(()=>{o.ms=Date.now()-o.start,o.tick++,t.render()},a);return o.stop=()=>{o.loading=!1,clearInterval(n)},Reflect.defineProperty(o,\"interval\",{value:n}),t.once(\"close\",()=>o.stop()),o.stop}});var dhe=_((e8t,ghe)=>{\"use strict\";var{define:XAt,width:ZAt}=No(),M_=class{constructor(e){let r=e.options;XAt(this,\"_prompt\",e),this.type=e.type,this.name=e.name,this.message=\"\",this.header=\"\",this.footer=\"\",this.error=\"\",this.hint=\"\",this.input=\"\",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt=\"\",this.buffer=\"\",this.width=ZAt(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r==\"function\"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading==\"boolean\"?this._loading:this.loadingChoices?\"choices\":!1}get status(){return this.cancelled?\"cancelled\":this.submitted?\"submitted\":\"pending\"}};ghe.exports=M_});var yhe=_((t8t,mhe)=>{\"use strict\";var O_=No(),eo=Vc(),U_={default:eo.noop,noop:eo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||O_.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||O_.complement(this.primary)},primary:eo.cyan,success:eo.green,danger:eo.magenta,strong:eo.bold,warning:eo.yellow,muted:eo.dim,disabled:eo.gray,dark:eo.dim.gray,underline:eo.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};U_.merge=(t={})=>{t.styles&&typeof t.styles.enabled==\"boolean\"&&(eo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible==\"boolean\"&&(eo.visible=t.styles.visible);let e=O_.merge({},U_,t.styles);delete e.merge;for(let r of Object.keys(eo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});for(let r of Object.keys(eo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});return e};mhe.exports=U_});var Che=_((r8t,Ehe)=>{\"use strict\";var __=process.platform===\"win32\",Vf=Vc(),$At=No(),H_={...Vf.symbols,upDownDoubleArrow:\"\\u21D5\",upDownDoubleArrow2:\"\\u2B0D\",upDownArrow:\"\\u2195\",asterisk:\"*\",asterism:\"\\u2042\",bulletWhite:\"\\u25E6\",electricArrow:\"\\u2301\",ellipsisLarge:\"\\u22EF\",ellipsisSmall:\"\\u2026\",fullBlock:\"\\u2588\",identicalTo:\"\\u2261\",indicator:Vf.symbols.check,leftAngle:\"\\u2039\",mark:\"\\u203B\",minus:\"\\u2212\",multiplication:\"\\xD7\",obelus:\"\\xF7\",percent:\"%\",pilcrow:\"\\xB6\",pilcrow2:\"\\u2761\",pencilUpRight:\"\\u2710\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",plus:\"+\",plusMinus:\"\\xB1\",pointRight:\"\\u261E\",rightAngle:\"\\u203A\",section:\"\\xA7\",hexagon:{off:\"\\u2B21\",on:\"\\u2B22\",disabled:\"\\u2B22\"},ballot:{on:\"\\u2611\",off:\"\\u2610\",disabled:\"\\u2612\"},stars:{on:\"\\u2605\",off:\"\\u2606\",disabled:\"\\u2606\"},folder:{on:\"\\u25BC\",off:\"\\u25B6\",disabled:\"\\u25B6\"},prefix:{pending:Vf.symbols.question,submitted:Vf.symbols.check,cancelled:Vf.symbols.cross},separator:{pending:Vf.symbols.pointerSmall,submitted:Vf.symbols.middot,cancelled:Vf.symbols.middot},radio:{off:__?\"( )\":\"\\u25EF\",on:__?\"(*)\":\"\\u25C9\",disabled:__?\"(|)\":\"\\u24BE\"},numbers:[\"\\u24EA\",\"\\u2460\",\"\\u2461\",\"\\u2462\",\"\\u2463\",\"\\u2464\",\"\\u2465\",\"\\u2466\",\"\\u2467\",\"\\u2468\",\"\\u2469\",\"\\u246A\",\"\\u246B\",\"\\u246C\",\"\\u246D\",\"\\u246E\",\"\\u246F\",\"\\u2470\",\"\\u2471\",\"\\u2472\",\"\\u2473\",\"\\u3251\",\"\\u3252\",\"\\u3253\",\"\\u3254\",\"\\u3255\",\"\\u3256\",\"\\u3257\",\"\\u3258\",\"\\u3259\",\"\\u325A\",\"\\u325B\",\"\\u325C\",\"\\u325D\",\"\\u325E\",\"\\u325F\",\"\\u32B1\",\"\\u32B2\",\"\\u32B3\",\"\\u32B4\",\"\\u32B5\",\"\\u32B6\",\"\\u32B7\",\"\\u32B8\",\"\\u32B9\",\"\\u32BA\",\"\\u32BB\",\"\\u32BC\",\"\\u32BD\",\"\\u32BE\",\"\\u32BF\"]};H_.merge=t=>{let e=$At.merge({},Vf.symbols,H_,t.symbols);return delete e.merge,e};Ehe.exports=H_});var Ihe=_((n8t,whe)=>{\"use strict\";var eft=yhe(),tft=Che(),rft=No();whe.exports=t=>{t.options=rft.merge({},t.options.theme,t.options),t.symbols=tft.merge(t.options),t.styles=eft.merge(t.options)}});var She=_((Dhe,Phe)=>{\"use strict\";var Bhe=process.env.TERM_PROGRAM===\"Apple_Terminal\",nft=Vc(),j_=No(),Kc=Phe.exports=Dhe,Di=\"\\x1B[\",vhe=\"\\x07\",q_=!1,Ph=Kc.code={bell:vhe,beep:vhe,beginning:`${Di}G`,down:`${Di}J`,esc:Di,getPosition:`${Di}6n`,hide:`${Di}?25l`,line:`${Di}2K`,lineEnd:`${Di}K`,lineStart:`${Di}1K`,restorePosition:Di+(Bhe?\"8\":\"u\"),savePosition:Di+(Bhe?\"7\":\"s\"),screen:`${Di}2J`,show:`${Di}?25h`,up:`${Di}1J`},qd=Kc.cursor={get hidden(){return q_},hide(){return q_=!0,Ph.hide},show(){return q_=!1,Ph.show},forward:(t=1)=>`${Di}${t}C`,backward:(t=1)=>`${Di}${t}D`,nextLine:(t=1)=>`${Di}E`.repeat(t),prevLine:(t=1)=>`${Di}F`.repeat(t),up:(t=1)=>t?`${Di}${t}A`:\"\",down:(t=1)=>t?`${Di}${t}B`:\"\",right:(t=1)=>t?`${Di}${t}C`:\"\",left:(t=1)=>t?`${Di}${t}D`:\"\",to(t,e){return e?`${Di}${e+1};${t+1}H`:`${Di}${t+1}G`},move(t=0,e=0){let r=\"\";return r+=t<0?qd.left(-t):t>0?qd.right(t):\"\",r+=e<0?qd.up(-e):e>0?qd.down(e):\"\",r},restore(t={}){let{after:e,cursor:r,initial:o,input:a,prompt:n,size:u,value:A}=t;if(o=j_.isPrimitive(o)?String(o):\"\",a=j_.isPrimitive(a)?String(a):\"\",A=j_.isPrimitive(A)?String(A):\"\",u){let p=Kc.cursor.up(u)+Kc.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Kc.cursor.left(h)),p}if(A||e){let p=!a&&!!o?-o.length:-a.length+r;return e&&(p-=e.length),a===\"\"&&o&&!n.includes(o)&&(p+=o.length),Kc.cursor.move(p)}}},G_=Kc.erase={screen:Ph.screen,up:Ph.up,down:Ph.down,line:Ph.line,lineEnd:Ph.lineEnd,lineStart:Ph.lineStart,lines(t){let e=\"\";for(let r=0;r<t;r++)e+=Kc.erase.line+(r<t-1?Kc.cursor.up(1):\"\");return t&&(e+=Kc.code.beginning),e}};Kc.clear=(t=\"\",e=process.stdout.columns)=>{if(!e)return G_.line+qd.to(0);let r=n=>[...nft.unstyle(n)].length,o=t.split(/\\r?\\n/),a=0;for(let n of o)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(G_.line+qd.prevLine()).repeat(a-1)+G_.line+qd.to(0)}});var hC=_((i8t,bhe)=>{\"use strict\";var ift=Be(\"events\"),xhe=Vc(),Y_=fhe(),sft=hhe(),oft=dhe(),aft=Ihe(),Ta=No(),Gd=She(),l2=class extends ift{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,aft(this),sft(this),this.state=new oft(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=cft(this.options.margin),this.setMaxListeners(0),lft(this)}async keypress(e,r={}){this.keypressed=!0;let o=Y_.action(e,Y_(e,r),this.options.actions);this.state.keypress=o,this.emit(\"keypress\",e,o),this.emit(\"state\",this.state.clone());let a=this.options[o.action]||this[o.action]||this.dispatch;if(typeof a==\"function\")return await a.call(this,e,o);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit(\"alert\"):this.stdout.write(Gd.code.beep)}cursorHide(){this.stdout.write(Gd.cursor.hide()),Ta.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Gd.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer=\"\",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Gd.cursor.down(e)+Gd.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:o}=this.sections(),{cursor:a,initial:n=\"\",input:u=\"\",value:A=\"\"}=this,p=this.state.size=o.length,h={after:r,cursor:a,initial:n,input:u,prompt:e,size:p,value:A},E=Gd.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:o}=this.state;o=xhe.unstyle(o);let a=xhe.unstyle(e),n=a.indexOf(o),u=a.slice(0,n),p=a.slice(n).split(`\n`),h=p[0],E=p[p.length-1],v=(o+(r?\" \"+r:\"\")).length,b=v<h.length?h.slice(v+1):\"\";return{header:u,prompt:h,after:b,rest:p.slice(1),last:E}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let e=this.state.error||await this.validate(this.value,this.state);if(e!==!0){let r=`\n`+this.symbols.pointer+\" \";typeof e==\"string\"?r+=e.trim():r+=\"Invalid input\",this.state.error=`\n`+this.styles.danger(r),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit(\"submit\",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel==\"function\"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit(\"cancel\",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),r=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(Gd.cursor.down(e.rest.length)),this.write(`\n`.repeat(r))}catch{}this.emit(\"close\")}start(){!this.stop&&this.options.show!==!1&&(this.stop=Y_.listen(this,this.keypress.bind(this)),this.once(\"close\",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip==\"function\"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:r,result:o}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>o.call(this,this.value),typeof r.initial==\"function\"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun==\"function\"&&await r.onRun.call(this,this),typeof r.onSubmit==\"function\"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error(\"expected prompt to have a custom render method\")}run(){return new Promise(async(e,r)=>{if(this.once(\"submit\",e),this.once(\"cancel\",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit(\"run\")})}async element(e,r,o){let{options:a,state:n,symbols:u,timers:A}=this,p=A&&A[e];n.timer=p;let h=a[e]||n[e]||u[e],E=r&&r[e]!=null?r[e]:await h;if(E===\"\")return E;let I=await this.resolve(E,n,r,o);return!I&&r&&r[e]?this.resolve(h,n,r,o):I}async prefix(){let e=await this.element(\"prefix\")||this.symbols,r=this.timers&&this.timers.prefix,o=this.state;return o.timer=r,Ta.isObject(e)&&(e=e[o.status]||e.pending),Ta.hasColor(e)?e:(this.styles[o.status]||this.styles.pending)(e)}async message(){let e=await this.element(\"message\");return Ta.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element(\"separator\")||this.symbols,r=this.timers&&this.timers.separator,o=this.state;o.timer=r;let a=e[o.status]||e.pending||o.separator,n=await this.resolve(a,o);return Ta.isObject(n)&&(n=n[o.status]||n.pending),Ta.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let o=await this.element(\"pointer\",e,r);if(typeof o==\"string\"&&Ta.hasColor(o))return o;if(o){let a=this.styles,n=this.index===r,u=n?a.primary:h=>h,A=await this.resolve(o[n?\"on\":\"off\"]||o,this.state),p=Ta.hasColor(A)?A:u(A);return n?p:\" \".repeat(A.length)}}async indicator(e,r){let o=await this.element(\"indicator\",e,r);if(typeof o==\"string\"&&Ta.hasColor(o))return o;if(o){let a=this.styles,n=e.enabled===!0,u=n?a.success:a.dark,A=o[n?\"on\":\"off\"]||o;return Ta.hasColor(A)?A:u(A)}return\"\"}body(){return null}footer(){if(this.state.status===\"pending\")return this.element(\"footer\")}header(){if(this.state.status===\"pending\")return this.element(\"header\")}async hint(){if(this.state.status===\"pending\"&&!this.isValue(this.state.input)){let e=await this.element(\"hint\");return Ta.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?\"\":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==\"\"}resolve(e,...r){return Ta.resolve(this,e,...r)}get base(){return l2.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Ta.height(this.stdout,25)}get width(){return this.options.columns||Ta.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,o=[r,e].find(this.isValue.bind(this));return this.isValue(o)?o:this.initial}static get prompt(){return e=>new this(e).run()}};function lft(t){let e=a=>t[a]===void 0||typeof t[a]==\"function\",r=[\"actions\",\"choices\",\"initial\",\"margin\",\"roles\",\"styles\",\"symbols\",\"theme\",\"timers\",\"value\"],o=[\"body\",\"footer\",\"error\",\"header\",\"hint\",\"indicator\",\"message\",\"prefix\",\"separator\",\"skip\"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n==\"function\"&&e(a)?o.includes(a)||(t[a]=n.bind(t)):typeof t[a]!=\"function\"&&(t[a]=n)}}function cft(t){typeof t==\"number\"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?`\n`:\" \",o=[];for(let a=0;a<4;a++){let n=r(a);e[a]?o.push(n.repeat(e[a])):o.push(\"\")}return o}bhe.exports=l2});var Fhe=_((s8t,Qhe)=>{\"use strict\";var uft=No(),khe={default(t,e){return e},checkbox(t,e){throw new Error(\"checkbox role is not implemented yet\")},editable(t,e){throw new Error(\"editable role is not implemented yet\")},expandable(t,e){throw new Error(\"expandable role is not implemented yet\")},heading(t,e){return e.disabled=\"\",e.indicator=[e.indicator,\" \"].find(r=>r!=null),e.message=e.message||\"\",e},input(t,e){throw new Error(\"input role is not implemented yet\")},option(t,e){return khe.default(t,e)},radio(t,e){throw new Error(\"radio role is not implemented yet\")},separator(t,e){return e.disabled=\"\",e.indicator=[e.indicator,\" \"].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Qhe.exports=(t,e={})=>{let r=uft.merge({},khe,e.roles);return r[t]||r.default}});var c2=_((o8t,Nhe)=>{\"use strict\";var Aft=Vc(),fft=hC(),pft=Fhe(),lk=No(),{reorder:W_,scrollUp:hft,scrollDown:gft,isObject:The,swap:dft}=lk,V_=class extends fft{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=\"\"}async initialize(){typeof this.options.initial==\"function\"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:o,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!=\"function\"&&this.selectable.length===0)throw new Error(\"At least one choice must be selectable\");The(r)&&(r=Object.keys(r)),Array.isArray(r)?(o!=null&&(this.index=this.findIndex(o)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(o!=null&&(r=o),typeof r==\"string\"&&(r=this.findIndex(r)),typeof r==\"number\"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let o=[],a=0,n=async(u,A)=>{typeof u==\"function\"&&(u=await u.call(this)),u instanceof Promise&&(u=await u);for(let p=0;p<u.length;p++){let h=u[p]=await this.toChoice(u[p],a++,A);o.push(h),h.choices&&await n(h.choices,h)}return o};return n(e,r).then(u=>(this.state.loadingChoices=!1,u))}async toChoice(e,r,o){if(typeof e==\"function\"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e==\"string\"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=pft(e.role,this.options)(this,e),typeof e.disabled==\"string\"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint=\"(disabled)\"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||\"\",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input=\"\",e.index=r,e.cursor=0,lk.define(e,\"parent\",o),e.level=o?o.level+1:1,e.indent==null&&(e.indent=o?o.indent+\"  \":e.indent||\"\"),e.path=o?o.path+\".\"+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,Aft.unstyle(e.message).length));let u={...e};return e.reset=(A=u.input,p=u.value)=>{for(let h of Object.keys(u))e[h]=u[h];e.input=A,e.value=p},a==null&&typeof e.initial==\"function\"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit(\"choice\",e,r,this),typeof e.onChoice==\"function\"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,o){let a=await this.toChoice(e,r,o);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,o){let a={name:\"New choice name?\",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,o);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input=\"\",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?\"  \".repeat(e.level-1):\"\":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!=\"boolean\"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let e=this.selectable.every(r=>r.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!=\"boolean\"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let o=e.parent;for(;o;){let a=o.choices.filter(n=>this.isDisabled(n));o.enabled=a.every(n=>n.enabled===!0),o=o.parent}return Rhe(this,this.choices),this.emit(\"toggle\",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=o=>{let a=Number(o);if(a>this.choices.length-1)return this.alert();let n=this.focused,u=this.choices.find(A=>a===A.index);if(!u.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(u)===-1){let A=W_(this.choices),p=A.indexOf(u);if(n.index>p){let h=A.slice(p,p+this.limit),E=A.filter(I=>!h.includes(I));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=A.slice(h).concat(A.slice(0,h))}}return this.index=this.choices.indexOf(u),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(o=>{let a=this.choices.length,n=this.num,u=(A=!1,p)=>{clearTimeout(this.numberTimeout),A&&(p=r(n)),this.num=\"\",o(p)};if(n===\"0\"||n.length===1&&Number(n+\"0\")>a)return u(!0);if(Number(n)>a)return u(!1,this.alert());this.numberTimeout=setTimeout(()=>u(!0),this.delay)})}home(){return this.choices=W_(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=W_(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===0?this.alert():e>r&&o===0?this.scrollUp():(this.index=(o-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===r-1?this.alert():e>r&&o===r-1?this.scrollDown():(this.index=(o+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=hft(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=gft(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){dft(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&[\"disabled\",\"collapsed\",\"hidden\",\"completing\",\"readonly\"].some(o=>e[o]===!0)?!0:e&&e.role===\"heading\"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(o=>!this.isDisabled(o));return e.enabled&&r.every(o=>this.isEnabled(o))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r=\"value\"){return[].concat(e||[]).reduce((o,a)=>(o[a]=this.find(a,r),o),{})}filter(e,r){let a=typeof e==\"function\"?e:(A,p)=>[A.name,p].includes(e),u=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?u.map(A=>A[r]):u}find(e,r){if(The(e))return r?e[r]:e;let a=typeof e==\"function\"?e:(u,A)=>[u.name,A].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(u=>u.newChoice))return this.alert();let{reorder:r,sort:o}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&o!==!0&&(n=lk.reorder(n)),this.value=a?n.map(u=>u.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(o=>o.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r==\"string\"||typeof r==\"number\"){let o=this.find(r);o&&(this.initial=o.index,this.focus(o,!0))}}}get choices(){return Rhe(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:o}=this,a=e.limit||this._limit||r.limit||o.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!=\"string\"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function Rhe(t,e){if(e instanceof Promise)return e;if(typeof e==\"function\"){if(lk.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let o=r.choices.filter(a=>!t.isDisabled(a));r.enabled=o.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}Nhe.exports=V_});var Sh=_((a8t,Lhe)=>{\"use strict\";var mft=c2(),K_=No(),J_=class extends mft{constructor(e){super(e),this.emptyError=this.options.emptyError||\"No items were selected\"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):\"\"}indicator(e,r){return this.multiple?super.indicator(e,r):\"\"}choiceMessage(e,r){let o=this.resolve(e.message,this.state,e,r);return e.role===\"heading\"&&!K_.hasColor(o)&&(o=this.styles.strong(o)),this.resolve(o,this.state,e,r)}choiceSeparator(){return\":\"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||\"\"),u=await this.resolve(e.hint,this.state,e,r);u&&!K_.hasColor(u)&&(u=this.styles.muted(u));let A=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],A+a+n,p,this.margin[1],u].filter(Boolean).join(\" \");return e.role===\"heading\"?h():e.disabled?(K_.hasColor(p)||(p=this.styles.disabled(p)),h()):(o&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading===\"choices\")return this.styles.warning(\"Loading choices\");if(this.state.submitted)return\"\";let e=this.visible.map(async(n,u)=>await this.renderChoice(n,u)),r=await Promise.all(e);r.length||r.push(this.styles.danger(\"No matching choices\"));let o=this.margin[0]+r.join(`\n`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,o].filter(Boolean).join(`\n`)}format(){return!this.state.submitted||this.state.cancelled?\"\":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(\", \"):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,o=\"\",a=await this.header(),n=await this.prefix(),u=await this.separator(),A=await this.message();this.options.promptLine!==!1&&(o=[n,A,u,\"\"].join(\" \"),this.state.prompt=o);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();p&&(o+=p),h&&!o.includes(h)&&(o+=\" \"+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,o,E,I].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};Lhe.exports=J_});var Ohe=_((l8t,Mhe)=>{\"use strict\";var yft=Sh(),Eft=(t,e)=>{let r=t.toLowerCase();return o=>{let n=o.toLowerCase().indexOf(r),u=e(o.slice(n,n+r.length));return n>=0?o.slice(0,n)+u+o.slice(n+r.length):o}},z_=class extends yft{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:o}=this.state;return this.input=o.slice(0,r)+e+o.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest==\"function\")return this.options.suggest.call(this,e,r);let o=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(o))}pointer(){return\"\"}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(\", \");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!==\"pending\")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Eft(this.input,e),o=this.choices;this.choices=o.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=o}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Mhe.exports=z_});var Z_=_((c8t,Uhe)=>{\"use strict\";var X_=No();Uhe.exports=(t,e={})=>{t.cursorHide();let{input:r=\"\",initial:o=\"\",pos:a,showCursor:n=!0,color:u}=e,A=u||t.styles.placeholder,p=X_.inverse(t.styles.primary),h=T=>p(t.styles.black(T)),E=r,I=\" \",v=h(I);if(t.blink&&t.blink.off===!0&&(h=T=>T,v=\"\"),n&&a===0&&o===\"\"&&r===\"\")return h(I);if(n&&a===0&&(r===o||r===\"\"))return h(o[0])+A(o.slice(1));o=X_.isPrimitive(o)?`${o}`:\"\",r=X_.isPrimitive(r)?`${r}`:\"\";let b=o&&o.startsWith(r)&&o!==r,C=b?h(o[r.length]):v;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),C=\"\"),n===!1&&(C=\"\"),b){let T=t.styles.unstyle(E+C);return E+C+A(o.slice(T.length))}return E+C}});var ck=_((u8t,_he)=>{\"use strict\";var Cft=Vc(),wft=Sh(),Ift=Z_(),$_=class extends wft{constructor(e){super({...e,multiple:!0}),this.type=\"form\",this.initial=this.options.initial,this.align=[this.options.align,\"right\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:o,input:a}=r;return r.value=r.input=a.slice(0,o)+e+a.slice(o),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:o}=e;return e.value=e.input=o.slice(0,r-1)+o.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:o}=e;if(o[r]===void 0)return this.alert();let a=`${o}`.slice(0,r)+`${o}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:o}=e;return r&&r.startsWith(o)&&o!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input=\"\",e.cursor=0,this.render()):this.alert()}separator(){return\"\"}format(e){return this.state.submitted?\"\":super.format(e)}pointer(){return\"\"}indicator(e){return e.input?\"\\u29BF\":\"\\u2299\"}async choiceSeparator(e,r){let o=await this.resolve(e.separator,this.state,e,r)||\":\";return o?\" \"+this.styles.disabled(o):\"\"}async renderChoice(e,r){await this.onChoice(e,r);let{state:o,styles:a}=this,{cursor:n,initial:u=\"\",name:A,hint:p,input:h=\"\"}=e,{muted:E,submitted:I,primary:v,danger:b}=a,C=p,T=this.index===r,L=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),J=e.message;this.align===\"right\"&&(J=J.padStart(this.longest+1,\" \")),this.align===\"left\"&&(J=J.padEnd(this.longest+1,\" \"));let te=this.values[A]=h||u,le=h?\"success\":\"dark\";await L.call(e,te,this.state)!==!0&&(le=\"danger\");let pe=a[le],Ae=pe(await this.indicator(e,r))+(e.pad||\"\"),ye=this.indent(e),ae=()=>[ye,Ae,J+U,h,C].filter(Boolean).join(\" \");if(o.submitted)return J=Cft.unstyle(J),h=I(h),C=\"\",ae();if(e.format)h=await e.format.call(this,h,e,r);else{let we=this.styles.muted;h=Ift(this,{input:h,initial:u,pos:n,showCursor:T,color:we})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[A]=await e.result.call(this,te,e,r)),T&&(J=v(J)),e.error?h+=(h?\" \":\"\")+b(e.error.trim()):e.hint&&(h+=(h?\" \":\"\")+E(e.hint.trim())),ae()}async submit(){return this.value=this.values,super.base.submit.call(this)}};_he.exports=$_});var e8=_((A8t,jhe)=>{\"use strict\";var Bft=ck(),vft=()=>{throw new Error(\"expected prompt to have a custom authenticate method\")},Hhe=(t=vft)=>{class e extends Bft{constructor(o){super(o)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(o){return Hhe(o)}}return e};jhe.exports=Hhe()});var Yhe=_((f8t,Ghe)=>{\"use strict\";var Dft=e8();function Pft(t,e){return t.username===this.options.username&&t.password===this.options.password}var qhe=(t=Pft)=>{let e=[{name:\"username\",message:\"username\"},{name:\"password\",message:\"password\",format(o){return this.options.showPassword?o:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(o.length))}}];class r extends Dft.create(t){constructor(a){super({...a,choices:e})}static create(a){return qhe(a)}}return r};Ghe.exports=qhe()});var uk=_((p8t,Whe)=>{\"use strict\";var Sft=hC(),{isPrimitive:xft,hasColor:bft}=No(),t8=class extends Sft{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:o}=this;return o.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return xft(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status===\"pending\"){let e=await this.element(\"hint\");return bft(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=this.styles.muted(this.default),A=[o,n,u,a].filter(Boolean).join(\" \");this.state.prompt=A;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),I=await this.error()||await this.hint(),v=await this.footer();I&&!A.includes(I)&&(E+=\" \"+I),A+=\" \"+E,this.clear(r),this.write([p,A,v].filter(Boolean).join(`\n`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};Whe.exports=t8});var Khe=_((h8t,Vhe)=>{\"use strict\";var kft=uk(),r8=class extends kft{constructor(e){super(e),this.default=this.options.default||(this.initial?\"(Y/n)\":\"(y/N)\")}};Vhe.exports=r8});var zhe=_((g8t,Jhe)=>{\"use strict\";var Qft=Sh(),Fft=ck(),gC=Fft.prototype,n8=class extends Qft{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,\"left\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}dispatch(e,r){let o=this.focused,a=o.parent||{};return!o.editable&&!a.editable&&(e===\"a\"||e===\"i\")?super[e]():gC.dispatch.call(this,e,r)}append(e,r){return gC.append.call(this,e,r)}delete(e,r){return gC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?gC.next.call(this):super.next()}prev(){return this.focused.editable?gC.prev.call(this):super.prev()}async indicator(e,r){let o=e.indicator||\"\",a=e.editable?o:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||\"\"}indent(e){return e.role===\"heading\"?\"\":e.editable?\" \":\"  \"}async renderChoice(e,r){return e.indent=\"\",e.editable?gC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return\"\"}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!=\"function\"||r.role===\"heading\")continue;let o=r.parent?this.value[r.parent.name]:this.value;if(r.editable?o=r.value===r.name?r.initial||\"\":r.value:this.isDisabled(r)||(o=r.enabled===!0),e=await r.validate(o,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e==\"string\"?e:\"Invalid Input\"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role===\"heading\"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||\"\":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Jhe.exports=n8});var Yd=_((d8t,Xhe)=>{\"use strict\";var Tft=hC(),Rft=Z_(),{isPrimitive:Nft}=No(),i8=class extends Tft{constructor(e){super(e),this.initial=Nft(this.initial)?String(this.initial):\"\",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let o=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name===\"return\"&&(!o||o.name!==\"return\")?this.append(`\n`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value=\"\",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:o}=this.state;this.input=`${o}`.slice(0,r)+e+`${o}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),o=this.input.slice(e),a=r.split(\" \");this.state.clipboard.push(a.pop()),this.input=a.join(\" \"),this.cursor=this.input.length,this.input+=o,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):\"\";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):Rft(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),o=await this.separator(),a=await this.message(),n=[r,a,o].filter(Boolean).join(\" \");this.state.prompt=n;let u=await this.header(),A=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!A.includes(p)&&(A+=\" \"+p),n+=\" \"+A,this.clear(e),this.write([u,n,h].filter(Boolean).join(`\n`)),this.restore()}};Xhe.exports=i8});var $he=_((m8t,Zhe)=>{\"use strict\";var Lft=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),Ak=t=>Lft(t).filter(Boolean);Zhe.exports=(t,e={},r=\"\")=>{let{past:o=[],present:a=\"\"}=e,n,u;switch(t){case\"prev\":case\"undo\":return n=o.slice(0,o.length-1),u=o[o.length-1]||\"\",{past:Ak([r,...n]),present:u};case\"next\":case\"redo\":return n=o.slice(1),u=o[0]||\"\",{past:Ak([...n,r]),present:u};case\"save\":return{past:Ak([...o,r]),present:\"\"};case\"remove\":return u=Ak(o.filter(A=>A!==r)),a=\"\",u.length&&(a=u.pop()),{past:u,present:a};default:throw new Error(`Invalid action: \"${t}\"`)}}});var o8=_((y8t,t0e)=>{\"use strict\";var Mft=Yd(),e0e=$he(),s8=class extends Mft{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let o=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get(\"values\")||{past:[],present:o},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=e0e(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion(\"prev\")}altDown(){return this.completion(\"next\")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=e0e(\"save\",this.data,this.input),this.store.set(\"values\",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};t0e.exports=s8});var n0e=_((E8t,r0e)=>{\"use strict\";var Oft=Yd(),a8=class extends Oft{format(){return\"\"}};r0e.exports=a8});var s0e=_((C8t,i0e)=>{\"use strict\";var Uft=Yd(),l8=class extends Uft{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||\"\"}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(\", \")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};i0e.exports=l8});var a0e=_((w8t,o0e)=>{\"use strict\";var _ft=Sh(),c8=class extends _ft{constructor(e){super({...e,multiple:!0})}};o0e.exports=c8});var A8=_((I8t,l0e)=>{\"use strict\";var Hft=Yd(),u8=class extends Hft{constructor(e={}){super({style:\"number\",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:\"\",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e===\".\"&&this.input.includes(\".\")?this.alert(\"invalid number\"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,o=this.toNumber(this.input);return o>this.max+r?this.alert():(this.input=`${o+r}`,this.render())}down(e){let r=e||this.minor,o=this.toNumber(this.input);return o<this.min-r?this.alert():(this.input=`${o-r}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(e=this.input){return typeof this.options.format==\"function\"?this.options.format.call(this,e):this.styles.info(e)}toNumber(e=\"\"){return this.float?+e:Math.round(+e)}isValue(e){return/^[-+]?[0-9]+((\\.)|(\\.[0-9]+))?$/.test(e)}submit(){let e=[this.input,this.initial].find(r=>this.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};l0e.exports=u8});var u0e=_((B8t,c0e)=>{c0e.exports=A8()});var f0e=_((v8t,A0e)=>{\"use strict\";var jft=Yd(),f8=class extends jft{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):\"\"}};A0e.exports=f8});var g0e=_((D8t,h0e)=>{\"use strict\";var qft=Vc(),Gft=c2(),p0e=No(),p8=class extends Gft{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||\"left\"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||`\n   `;let r=e.startNumber||1;typeof this.scale==\"number\"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((o,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let o=0;o<this.scale.length;o++)r.scale.push({index:o})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}heading(e,r,o){return this.styles.strong(e)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIndex>=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return\"\"}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(\", \"):\"\"}pointer(){return\"\"}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?\"\":[\"\",...this.scale.map(o=>`   ${o.name} - ${o.message}`)].map(o=>this.styles.muted(o)).join(`\n`)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading==\"function\"&&(r=this.options.renderScaleHeading.call(this,e));let o=this.scaleLength-r.join(\"\").length,a=Math.round(o/(r.length-1)),u=r.map(p=>this.styles.strong(p)).join(\" \".repeat(a)),A=\" \".repeat(this.widths[0]);return this.margin[3]+A+this.margin[1]+u}scaleIndicator(e,r,o){if(typeof this.options.scaleIndicator==\"function\")return this.options.scaleIndicator.call(this,e,r,o);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let o=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term===\"Hyper\"?\"\":\" \";return o.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!p0e.hasColor(n)&&(n=this.styles.muted(n));let u=C=>this.margin[3]+C.replace(/\\s+$/,\"\").padEnd(this.widths[0],\" \"),A=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),I=this.margin[1]+this.margin[3];this.scaleLength=qft.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-I.length);let b=p0e.wordWrap(h,{width:this.widths[0],newline:A}).split(`\n`).map(C=>u(C)+this.margin[1]);return o&&(E=this.styles.info(E),b=b.map(C=>this.styles.info(C))),b[0]+=E,this.linebreak&&b.push(\"\"),[p+a,b.join(`\n`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return\"\";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),o=await this.renderScaleHeading();return this.margin[0]+[o,...r.map(a=>a.join(\" \"))].join(`\n`)}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=\"\";this.options.promptLine!==!1&&(u=[o,n,a,\"\"].join(\" \"),this.state.prompt=u);let A=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),I=await this.renderChoices(),v=await this.footer(),b=this.emptyError;p&&(u+=p),E&&!u.includes(E)&&(u+=\" \"+E),e&&!p&&!I.trim()&&this.multiple&&b!=null&&(u+=this.styles.danger(b)),this.clear(r),this.write([A,u,h,I,v].filter(Boolean).join(`\n`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};h0e.exports=p8});var y0e=_((P8t,m0e)=>{\"use strict\";var d0e=Vc(),Yft=(t=\"\")=>typeof t==\"string\"?t.replace(/^['\"]|['\"]$/g,\"\"):\"\",g8=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Yft(e.initial||this.field.initial||\"\"),this.message=e.message||this.name,this.cursor=0,this.input=\"\",this.lines=[]}},Wft=async(t={},e={},r=o=>o)=>{let o=new Set,a=t.fields||[],n=t.template,u=[],A=[],p=[],h=1;typeof n==\"function\"&&(n=await n());let E=-1,I=()=>n[++E],v=()=>n[E+1],b=C=>{C.line=h,u.push(C)};for(b({type:\"bos\",value:\"\"});E<n.length-1;){let C=I();if(/^[^\\S\\n ]$/.test(C)){b({type:\"text\",value:C});continue}if(C===`\n`){b({type:\"newline\",value:C}),h++;continue}if(C===\"\\\\\"){C+=I(),b({type:\"text\",value:C});continue}if((C===\"$\"||C===\"#\"||C===\"{\")&&v()===\"{\"){let L=I();C+=L;let U={type:\"template\",open:C,inner:\"\",close:\"\",value:C},J;for(;J=I();){if(J===\"}\"){v()===\"}\"&&(J+=I()),U.value+=J,U.close=J;break}J===\":\"?(U.initial=\"\",U.key=U.inner):U.initial!==void 0&&(U.initial+=J),U.value+=J,U.inner+=J}U.template=U.open+(U.initial||U.inner)+U.close,U.key=U.key||U.inner,e.hasOwnProperty(U.key)&&(U.initial=e[U.key]),U=r(U),b(U),p.push(U.key),o.add(U.key);let te=A.find(le=>le.name===U.key);U.field=a.find(le=>le.name===U.key),te||(te=new g8(U),A.push(te)),te.lines.push(U.line-1);continue}let T=u[u.length-1];T.type===\"text\"&&T.line===h?T.value+=C:b({type:\"text\",value:C})}return b({type:\"eos\",value:\"\"}),{input:n,tabstops:u,unique:o,keys:p,items:A}};m0e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),o={...e.values,...e.initial},{tabstops:a,items:n,keys:u}=await Wft(e,o),A=h8(\"result\",t,e),p=h8(\"format\",t,e),h=h8(\"validate\",t,e,!0),E=t.isValue.bind(t);return async(I={},v=!1)=>{let b=0;I.required=r,I.items=n,I.keys=u,I.output=\"\";let C=async(J,te,le,pe)=>{let Ae=await h(J,te,le,pe);return Ae===!1?\"Invalid field \"+le.name:Ae};for(let J of a){let te=J.value,le=J.key;if(J.type!==\"template\"){te&&(I.output+=te);continue}if(J.type===\"template\"){let pe=n.find(Pe=>Pe.name===le);e.required===!0&&I.required.add(pe.name);let Ae=[pe.input,I.values[pe.value],pe.value,te].find(E),ae=(pe.field||{}).message||J.inner;if(v){let Pe=await C(I.values[le],I,pe,b);if(Pe&&typeof Pe==\"string\"||Pe===!1){I.invalid.set(le,Pe);continue}I.invalid.delete(le);let g=await A(I.values[le],I,pe,b);I.output+=d0e.unstyle(g);continue}pe.placeholder=!1;let we=te;te=await p(te,I,pe,b),Ae!==te?(I.values[le]=Ae,te=t.styles.typing(Ae),I.missing.delete(ae)):(I.values[le]=void 0,Ae=`<${ae}>`,te=t.styles.primary(Ae),pe.placeholder=!0,I.required.has(le)&&I.missing.add(ae)),I.missing.has(ae)&&I.validating&&(te=t.styles.warning(Ae)),I.invalid.has(le)&&I.validating&&(te=t.styles.danger(Ae)),b===I.index&&(we!==te?te=t.styles.underline(te):te=t.styles.heading(d0e.unstyle(te))),b++}te&&(I.output+=te)}let T=I.output.split(`\n`).map(J=>\" \"+J),L=n.length,U=0;for(let J of n)I.invalid.has(J.name)&&J.lines.forEach(te=>{T[te][0]===\" \"&&(T[te]=I.styles.danger(I.symbols.bullet)+T[te].slice(1))}),t.isValue(I.values[J.name])&&U++;return I.completed=(U/L*100).toFixed(0),I.output=T.join(`\n`),I.output}};function h8(t,e,r,o){return(a,n,u,A)=>typeof u.field[t]==\"function\"?u.field[t].call(e,a,n,u,A):[o,a].find(p=>e.isValue(p))}});var C0e=_((S8t,E0e)=>{\"use strict\";var Vft=Vc(),Kft=y0e(),Jft=hC(),d8=class extends Jft{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Kft(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let o=this.getItem(),a=o.input.slice(0,this.cursor),n=o.input.slice(this.cursor);this.input=o.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),o=e.input.slice(0,this.cursor-1);this.input=e.input=`${o}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:o,size:a}=this.state,n=[this.options.newline,`\n`].find(J=>J!=null),u=await this.prefix(),A=await this.separator(),p=await this.message(),h=[u,p,A].filter(Boolean).join(\" \");this.state.prompt=h;let E=await this.header(),I=await this.error()||\"\",v=await this.hint()||\"\",b=o?\"\":await this.interpolate(this.state),C=this.state.key=r[e]||\"\",T=await this.format(C),L=await this.footer();T&&(h+=\" \"+T),v&&!T&&this.state.completed===0&&(h+=\" \"+v),this.clear(a);let U=[E,h,b,L,I.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:o,index:a}=this.state,n=r.find(u=>u.name===o[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!=\"function\"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:o,values:a}=this.state;if(e.size){let A=\"\";for(let[p,h]of e)A+=`Invalid ${p}: ${h}\n`;return this.state.error=A,super.submit()}if(r.size)return this.state.error=\"Required: \"+[...r.keys()].join(\", \"),super.submit();let u=Vft.unstyle(o).split(`\n`).map(A=>A.slice(1)).join(`\n`);return this.value={values:a,result:u},super.submit()}};E0e.exports=d8});var I0e=_((x8t,w0e)=>{\"use strict\";var zft=\"(Use <shift>+<up/down> to sort)\",Xft=Sh(),m8=class extends Xft{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,zft].find(this.isValue.bind(this))}indicator(){return\"\"}async renderChoice(e,r){let o=await super.renderChoice(e,r),a=this.symbols.identicalTo+\" \",n=this.index===r&&this.sorting?this.styles.muted(a):\"  \";return this.options.drag===!1&&(n=\"\"),this.options.numbered===!0?n+`${r+1} - `+o:n+o}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};w0e.exports=m8});var v0e=_((b8t,B0e)=>{\"use strict\";var Zft=c2(),y8=class extends Zft{constructor(e={}){if(super(e),this.emptyError=e.emptyError||\"No items were selected\",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=[\"\",\"4 - Strongly Agree\",\"3 - Agree\",\"2 - Neutral\",\"1 - Disagree\",\"0 - Strongly Disagree\",\"\"];r=r.map(o=>this.styles.muted(o)),this.state.header=r.join(`\n   `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let o of r)o.scale=$ft(5,this.options),o.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],o=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!o,this.render()}indicator(){return\"\"}pointer(){return\"\"}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return\"   \"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=this.term===\"Hyper\",n=a?9:8,u=a?\"\":\" \",A=this.symbols.line.repeat(n),p=\" \".repeat(n+(a?0:1)),h=te=>(te?this.styles.success(\"\\u25C9\"):\"\\u25EF\")+u,E=r+1+\".\",I=o?this.styles.heading:this.styles.noop,v=await this.resolve(e.message,this.state,e,r),b=this.indent(e),C=b+e.scale.map((te,le)=>h(le===e.scaleIdx)).join(A),T=te=>te===e.scaleIdx?I(te):te,L=b+e.scale.map((te,le)=>T(le)).join(p),U=()=>[E,v].filter(Boolean).join(\" \"),J=()=>[U(),C,L,\" \"].filter(Boolean).join(`\n`);return o&&(C=this.styles.cyan(C),L=this.styles.cyan(L)),J()}async renderChoices(){if(this.state.submitted)return\"\";let e=this.visible.map(async(o,a)=>await this.renderChoice(o,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger(\"No matching choices\")),r.join(`\n`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(\", \"):\"\"}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=[o,n,a].filter(Boolean).join(\" \");this.state.prompt=u;let A=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();(p||!h)&&(u+=\" \"+p),h&&!u.includes(h)&&(u+=\" \"+h),e&&!p&&!E&&this.multiple&&this.type!==\"form\"&&(u+=this.styles.danger(this.emptyError)),this.clear(r),this.write([u,A,E,I].filter(Boolean).join(`\n`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function $ft(t,e={}){if(Array.isArray(e.scale))return e.scale.map(o=>({...o}));let r=[];for(let o=1;o<t+1;o++)r.push({i:o,selected:!1});return r}B0e.exports=y8});var P0e=_((k8t,D0e)=>{D0e.exports=o8()});var x0e=_((Q8t,S0e)=>{\"use strict\";var ept=uk(),E8=class extends ept{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||\"no\",this.enabled=this.options.enabled||\"yes\",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e=\"\",r){switch(e.toLowerCase()){case\" \":return this.toggle();case\"1\":case\"y\":case\"t\":return this.enable();case\"0\":case\"n\":case\"f\":return this.disable();default:return this.alert()}}format(){let e=o=>this.styles.primary.underline(o);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(\" / \"))}async render(){let{size:e}=this.state,r=await this.header(),o=await this.prefix(),a=await this.separator(),n=await this.message(),u=await this.format(),A=await this.error()||await this.hint(),p=await this.footer(),h=[o,n,a,u].join(\" \");this.state.prompt=h,A&&!h.includes(A)&&(h+=\" \"+A),this.clear(e),this.write([r,h,p].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};S0e.exports=E8});var k0e=_((F8t,b0e)=>{\"use strict\";var tpt=Sh(),C8=class extends tpt{constructor(e){if(super(e),typeof this.options.correctChoice!=\"number\"||this.options.correctChoice<0)throw new Error(\"Please specify the index of the correct answer from the list of choices\")}async toChoices(e,r){let o=await super.toChoices(e,r);if(o.length<2)throw new Error(\"Please give at least two choices to the user\");if(this.options.correctChoice>o.length)throw new Error(\"Please specify the index of the correct answer from the list of choices\");return o}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};b0e.exports=C8});var F0e=_(w8=>{\"use strict\";var Q0e=No(),As=(t,e)=>{Q0e.defineExport(w8,t,e),Q0e.defineExport(w8,t.toLowerCase(),e)};As(\"AutoComplete\",()=>Ohe());As(\"BasicAuth\",()=>Yhe());As(\"Confirm\",()=>Khe());As(\"Editable\",()=>zhe());As(\"Form\",()=>ck());As(\"Input\",()=>o8());As(\"Invisible\",()=>n0e());As(\"List\",()=>s0e());As(\"MultiSelect\",()=>a0e());As(\"Numeral\",()=>u0e());As(\"Password\",()=>f0e());As(\"Scale\",()=>g0e());As(\"Select\",()=>Sh());As(\"Snippet\",()=>C0e());As(\"Sort\",()=>I0e());As(\"Survey\",()=>v0e());As(\"Text\",()=>P0e());As(\"Toggle\",()=>x0e());As(\"Quiz\",()=>k0e())});var R0e=_((R8t,T0e)=>{T0e.exports={ArrayPrompt:c2(),AuthPrompt:e8(),BooleanPrompt:uk(),NumberPrompt:A8(),StringPrompt:Yd()}});var A2=_((N8t,L0e)=>{\"use strict\";var N0e=Be(\"assert\"),B8=Be(\"events\"),xh=No(),Jc=class extends B8{constructor(e,r){super(),this.options=xh.merge({},e),this.answers={...r}}register(e,r){if(xh.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}N0e.equal(typeof r,\"function\",\"expected a function\");let o=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[o]=r:this.prompts[o]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r==\"function\"&&(r=await r.call(this)),await this.ask(xh.merge({},this.options,r))}catch(o){return Promise.reject(o)}return this.answers}async ask(e){typeof e==\"function\"&&(e=await e.call(this));let r=xh.merge({},this.options,e),{type:o,name:a}=e,{set:n,get:u}=xh;if(typeof o==\"function\"&&(o=await o.call(this,e,this.answers)),!o)return this.answers[a];N0e(this.prompts[o],`Prompt \"${o}\" is not registered`);let A=new this.prompts[o](r),p=u(this.answers,a);A.state.answers=this.answers,A.enquirer=this,a&&A.on(\"submit\",E=>{this.emit(\"answer\",a,E,A),n(this.answers,a,E)});let h=A.emit.bind(A);return A.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit(\"prompt\",A,this),r.autofill&&p!=null?(A.value=A.input=p,r.autofill===\"show\"&&await A.submit()):p=A.value=await A.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||hC()}static get prompts(){return F0e()}static get types(){return R0e()}static get prompt(){let e=(r,...o)=>{let a=new this(...o),n=a.emit.bind(a);return a.emit=(...u)=>(e.emit(...u),n(...u)),a.prompt(r)};return xh.mixinEmitter(e,new B8),e}};xh.mixinEmitter(Jc,new B8);var I8=Jc.prompts;for(let t of Object.keys(I8)){let e=t.toLowerCase(),r=o=>new I8[t](o).run();Jc.prompt[e]=r,Jc[e]=r,Jc[t]||Reflect.defineProperty(Jc,t,{get:()=>I8[t]})}var u2=t=>{xh.defineExport(Jc,t,()=>Jc.types[t])};u2(\"ArrayPrompt\");u2(\"AuthPrompt\");u2(\"BooleanPrompt\");u2(\"NumberPrompt\");u2(\"StringPrompt\");L0e.exports=Jc});var g2=_((mHt,q0e)=>{var apt=Zb();function lpt(t,e,r){var o=t==null?void 0:apt(t,e);return o===void 0?r:o}q0e.exports=lpt});var W0e=_((BHt,Y0e)=>{function cpt(t,e){for(var r=-1,o=t==null?0:t.length;++r<o&&e(t[r],r,t)!==!1;);return t}Y0e.exports=cpt});var K0e=_((vHt,V0e)=>{var upt=gd(),Apt=zP();function fpt(t,e){return t&&upt(e,Apt(e),t)}V0e.exports=fpt});var z0e=_((DHt,J0e)=>{var ppt=gd(),hpt=qy();function gpt(t,e){return t&&ppt(e,hpt(e),t)}J0e.exports=gpt});var Z0e=_((PHt,X0e)=>{var dpt=gd(),mpt=GP();function ypt(t,e){return dpt(t,mpt(t),e)}X0e.exports=ypt});var b8=_((SHt,$0e)=>{var Ept=qP(),Cpt=tS(),wpt=GP(),Ipt=KN(),Bpt=Object.getOwnPropertySymbols,vpt=Bpt?function(t){for(var e=[];t;)Ept(e,wpt(t)),t=Cpt(t);return e}:Ipt;$0e.exports=vpt});var tge=_((xHt,ege)=>{var Dpt=gd(),Ppt=b8();function Spt(t,e){return Dpt(t,Ppt(t),e)}ege.exports=Spt});var k8=_((bHt,rge)=>{var xpt=VN(),bpt=b8(),kpt=qy();function Qpt(t){return xpt(t,kpt,bpt)}rge.exports=Qpt});var ige=_((kHt,nge)=>{var Fpt=Object.prototype,Tpt=Fpt.hasOwnProperty;function Rpt(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]==\"string\"&&Tpt.call(t,\"index\")&&(r.index=t.index,r.input=t.input),r}nge.exports=Rpt});var oge=_((QHt,sge)=>{var Npt=$P();function Lpt(t,e){var r=e?Npt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}sge.exports=Lpt});var lge=_((FHt,age)=>{var Mpt=/\\w*$/;function Opt(t){var e=new t.constructor(t.source,Mpt.exec(t));return e.lastIndex=t.lastIndex,e}age.exports=Opt});var pge=_((THt,fge)=>{var cge=fd(),uge=cge?cge.prototype:void 0,Age=uge?uge.valueOf:void 0;function Upt(t){return Age?Object(Age.call(t)):{}}fge.exports=Upt});var gge=_((RHt,hge)=>{var _pt=$P(),Hpt=oge(),jpt=lge(),qpt=pge(),Gpt=lL(),Ypt=\"[object Boolean]\",Wpt=\"[object Date]\",Vpt=\"[object Map]\",Kpt=\"[object Number]\",Jpt=\"[object RegExp]\",zpt=\"[object Set]\",Xpt=\"[object String]\",Zpt=\"[object Symbol]\",$pt=\"[object ArrayBuffer]\",eht=\"[object DataView]\",tht=\"[object Float32Array]\",rht=\"[object Float64Array]\",nht=\"[object Int8Array]\",iht=\"[object Int16Array]\",sht=\"[object Int32Array]\",oht=\"[object Uint8Array]\",aht=\"[object Uint8ClampedArray]\",lht=\"[object Uint16Array]\",cht=\"[object Uint32Array]\";function uht(t,e,r){var o=t.constructor;switch(e){case $pt:return _pt(t);case Ypt:case Wpt:return new o(+t);case eht:return Hpt(t,r);case tht:case rht:case nht:case iht:case sht:case oht:case aht:case lht:case cht:return Gpt(t,r);case Vpt:return new o;case Kpt:case Xpt:return new o(t);case Jpt:return jpt(t);case zpt:return new o;case Zpt:return qpt(t)}}hge.exports=uht});var mge=_((NHt,dge)=>{var Aht=qI(),fht=Ju(),pht=\"[object Map]\";function hht(t){return fht(t)&&Aht(t)==pht}dge.exports=hht});var wge=_((LHt,Cge)=>{var ght=mge(),dht=WP(),yge=VP(),Ege=yge&&yge.isMap,mht=Ege?dht(Ege):ght;Cge.exports=mht});var Bge=_((MHt,Ige)=>{var yht=qI(),Eht=Ju(),Cht=\"[object Set]\";function wht(t){return Eht(t)&&yht(t)==Cht}Ige.exports=wht});var Sge=_((OHt,Pge)=>{var Iht=Bge(),Bht=WP(),vge=VP(),Dge=vge&&vge.isSet,vht=Dge?Bht(Dge):Iht;Pge.exports=vht});var Q8=_((UHt,Qge)=>{var Dht=HP(),Pht=W0e(),Sht=rS(),xht=K0e(),bht=z0e(),kht=aL(),Qht=eS(),Fht=Z0e(),Tht=tge(),Rht=ZN(),Nht=k8(),Lht=qI(),Mht=ige(),Oht=gge(),Uht=cL(),_ht=Hl(),Hht=OI(),jht=wge(),qht=il(),Ght=Sge(),Yht=zP(),Wht=qy(),Vht=1,Kht=2,Jht=4,xge=\"[object Arguments]\",zht=\"[object Array]\",Xht=\"[object Boolean]\",Zht=\"[object Date]\",$ht=\"[object Error]\",bge=\"[object Function]\",e0t=\"[object GeneratorFunction]\",t0t=\"[object Map]\",r0t=\"[object Number]\",kge=\"[object Object]\",n0t=\"[object RegExp]\",i0t=\"[object Set]\",s0t=\"[object String]\",o0t=\"[object Symbol]\",a0t=\"[object WeakMap]\",l0t=\"[object ArrayBuffer]\",c0t=\"[object DataView]\",u0t=\"[object Float32Array]\",A0t=\"[object Float64Array]\",f0t=\"[object Int8Array]\",p0t=\"[object Int16Array]\",h0t=\"[object Int32Array]\",g0t=\"[object Uint8Array]\",d0t=\"[object Uint8ClampedArray]\",m0t=\"[object Uint16Array]\",y0t=\"[object Uint32Array]\",ri={};ri[xge]=ri[zht]=ri[l0t]=ri[c0t]=ri[Xht]=ri[Zht]=ri[u0t]=ri[A0t]=ri[f0t]=ri[p0t]=ri[h0t]=ri[t0t]=ri[r0t]=ri[kge]=ri[n0t]=ri[i0t]=ri[s0t]=ri[o0t]=ri[g0t]=ri[d0t]=ri[m0t]=ri[y0t]=!0;ri[$ht]=ri[bge]=ri[a0t]=!1;function pk(t,e,r,o,a,n){var u,A=e&Vht,p=e&Kht,h=e&Jht;if(r&&(u=a?r(t,o,a,n):r(t)),u!==void 0)return u;if(!qht(t))return t;var E=_ht(t);if(E){if(u=Mht(t),!A)return Qht(t,u)}else{var I=Lht(t),v=I==bge||I==e0t;if(Hht(t))return kht(t,A);if(I==kge||I==xge||v&&!a){if(u=p||v?{}:Uht(t),!A)return p?Tht(t,bht(u,t)):Fht(t,xht(u,t))}else{if(!ri[I])return a?t:{};u=Oht(t,I,A)}}n||(n=new Dht);var b=n.get(t);if(b)return b;n.set(t,u),Ght(t)?t.forEach(function(L){u.add(pk(L,e,r,L,t,n))}):jht(t)&&t.forEach(function(L,U){u.set(U,pk(L,e,r,U,t,n))});var C=h?p?Nht:Rht:p?Wht:Yht,T=E?void 0:C(t);return Pht(T||t,function(L,U){T&&(U=L,L=t[U]),Sht(u,U,pk(L,e,r,U,t,n))}),u}Qge.exports=pk});var F8=_((_Ht,Fge)=>{var E0t=Q8(),C0t=1,w0t=4;function I0t(t){return E0t(t,C0t|w0t)}Fge.exports=I0t});var T8=_((HHt,Tge)=>{var B0t=v_();function v0t(t,e,r){return t==null?t:B0t(t,e,r)}Tge.exports=v0t});var Oge=_((VHt,Mge)=>{var D0t=Object.prototype,P0t=D0t.hasOwnProperty;function S0t(t,e){return t!=null&&P0t.call(t,e)}Mge.exports=S0t});var _ge=_((KHt,Uge)=>{var x0t=Oge(),b0t=D_();function k0t(t,e){return t!=null&&b0t(t,e,x0t)}Uge.exports=k0t});var jge=_((JHt,Hge)=>{function Q0t(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Hge.exports=Q0t});var Gge=_((zHt,qge)=>{var F0t=Zb(),T0t=gU();function R0t(t,e){return e.length<2?t:F0t(t,T0t(e,0,-1))}qge.exports=R0t});var N8=_((XHt,Yge)=>{var N0t=jd(),L0t=jge(),M0t=Gge(),O0t=aC();function U0t(t,e){return e=N0t(e,t),t=M0t(t,e),t==null||delete t[O0t(L0t(e))]}Yge.exports=U0t});var L8=_((ZHt,Wge)=>{var _0t=N8();function H0t(t,e){return t==null?!0:_0t(t,e)}Wge.exports=H0t});var Xge=_((S6t,G0t)=>{G0t.exports={name:\"@yarnpkg/cli\",version:\"4.0.2\",license:\"BSD-2-Clause\",main:\"./sources/index.ts\",exports:{\".\":\"./sources/index.ts\",\"./polyfills\":\"./sources/polyfills.ts\",\"./package.json\":\"./package.json\"},dependencies:{\"@yarnpkg/core\":\"workspace:^\",\"@yarnpkg/fslib\":\"workspace:^\",\"@yarnpkg/libzip\":\"workspace:^\",\"@yarnpkg/parsers\":\"workspace:^\",\"@yarnpkg/plugin-compat\":\"workspace:^\",\"@yarnpkg/plugin-constraints\":\"workspace:^\",\"@yarnpkg/plugin-dlx\":\"workspace:^\",\"@yarnpkg/plugin-essentials\":\"workspace:^\",\"@yarnpkg/plugin-exec\":\"workspace:^\",\"@yarnpkg/plugin-file\":\"workspace:^\",\"@yarnpkg/plugin-git\":\"workspace:^\",\"@yarnpkg/plugin-github\":\"workspace:^\",\"@yarnpkg/plugin-http\":\"workspace:^\",\"@yarnpkg/plugin-init\":\"workspace:^\",\"@yarnpkg/plugin-interactive-tools\":\"workspace:^\",\"@yarnpkg/plugin-link\":\"workspace:^\",\"@yarnpkg/plugin-nm\":\"workspace:^\",\"@yarnpkg/plugin-npm\":\"workspace:^\",\"@yarnpkg/plugin-npm-cli\":\"workspace:^\",\"@yarnpkg/plugin-pack\":\"workspace:^\",\"@yarnpkg/plugin-patch\":\"workspace:^\",\"@yarnpkg/plugin-pnp\":\"workspace:^\",\"@yarnpkg/plugin-pnpm\":\"workspace:^\",\"@yarnpkg/plugin-stage\":\"workspace:^\",\"@yarnpkg/plugin-typescript\":\"workspace:^\",\"@yarnpkg/plugin-version\":\"workspace:^\",\"@yarnpkg/plugin-workspace-tools\":\"workspace:^\",\"@yarnpkg/shell\":\"workspace:^\",\"ci-info\":\"^3.2.0\",clipanion:\"^4.0.0-rc.2\",semver:\"^7.1.2\",tslib:\"^2.4.0\",typanion:\"^3.14.0\"},devDependencies:{\"@types/semver\":\"^7.1.0\",\"@yarnpkg/builder\":\"workspace:^\",\"@yarnpkg/monorepo\":\"workspace:^\",\"@yarnpkg/pnpify\":\"workspace:^\"},peerDependencies:{\"@yarnpkg/core\":\"workspace:^\"},scripts:{postpack:\"rm -rf lib\",prepack:'run build:compile \"$(pwd)\"',\"build:cli+hook\":\"run build:pnp:hook && builder build bundle\",\"build:cli\":\"builder build bundle\",\"run:cli\":\"builder run\",\"update-local\":\"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/\"},publishConfig:{main:\"./lib/index.js\",bin:null,exports:{\".\":\"./lib/index.js\",\"./package.json\":\"./package.json\"}},files:[\"/lib/**/*\",\"!/lib/pluginConfiguration.*\",\"!/lib/cli.*\"],\"@yarnpkg/builder\":{bundles:{standard:[\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]}},repository:{type:\"git\",url:\"ssh://git@github.com/yarnpkg/berry.git\",directory:\"packages/yarnpkg-cli\"},engines:{node:\">=18.12.0\"}}});var Y8=_((n5t,ude)=>{\"use strict\";ude.exports=function(e,r){r===!0&&(r=0);var o=\"\";if(typeof e==\"string\")try{o=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(o=e.protocol);var a=o.split(/\\:|\\+/).filter(Boolean);return typeof r==\"number\"?a[r]:a}});var fde=_((i5t,Ade)=>{\"use strict\";var cgt=Y8();function ugt(t){var e={protocols:[],protocol:null,port:null,resource:\"\",host:\"\",user:\"\",password:\"\",pathname:\"\",hash:\"\",search:\"\",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=cgt(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||\"\",e.password=r.password||\"\",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=[\"file\"],e.protocol=e.protocols[0],e.port=\"\",e.resource=\"\",e.user=\"\",e.pathname=\"\",e.hash=\"\",e.search=\"\",e.href=t,e.query={},e.parse_failed=!0}return e}Ade.exports=ugt});var gde=_((s5t,hde)=>{\"use strict\";var Agt=fde();function fgt(t){return t&&typeof t==\"object\"&&\"default\"in t?t:{default:t}}var pgt=fgt(Agt),hgt=\"text/plain\",ggt=\"us-ascii\",pde=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),dgt=(t,{stripHash:e})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:o,data:a,hash:n}=r.groups,u=o.split(\";\");n=e?\"\":n;let A=!1;u[u.length-1]===\"base64\"&&(u.pop(),A=!0);let p=(u.shift()||\"\").toLowerCase(),E=[...u.map(I=>{let[v,b=\"\"]=I.split(\"=\").map(C=>C.trim());return v===\"charset\"&&(b=b.toLowerCase(),b===ggt)?\"\":`${v}${b?`=${b}`:\"\"}`}).filter(Boolean)];return A&&E.push(\"base64\"),(E.length>0||p&&p!==hgt)&&E.unshift(p),`data:${E.join(\";\")},${A?a.trim():a}${n?`#${n}`:\"\"}`};function mgt(t,e){if(e={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return dgt(t,e);if(/^view-source:/i.test(t))throw new Error(\"`view-source:` is not supported as it is a non-standard protocol\");let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash?a.hash=\"\":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,\"\")),a.pathname){let u=/\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g,A=0,p=\"\";for(;;){let E=u.exec(a.pathname);if(!E)break;let I=E[0],v=E.index,b=a.pathname.slice(A,v);p+=b.replace(/\\/{2,}/g,\"/\"),p+=I,A=v+I.length}let h=a.pathname.slice(A,a.pathname.length);p+=h.replace(/\\/{2,}/g,\"/\"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let u=a.pathname.split(\"/\"),A=u[u.length-1];pde(A,e.removeDirectoryIndex)&&(u=u.slice(0,-1),a.pathname=u.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.(?!www\\.)[a-z\\-\\d]{1,63}\\.[a-z.\\-\\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let u of[...a.searchParams.keys()])pde(u,e.removeQueryParameters)&&a.searchParams.delete(u);if(e.removeQueryParameters===!0&&(a.search=\"\"),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\"));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname===\"/\"&&!n.endsWith(\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&e.removeSingleSlash&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t}var W8=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\\/\\/)([\\w\\.\\-@]+)[\\/:]([\\~,\\.\\w,\\-,\\_,\\/]+?(?:\\.git|\\/)?)$/,o=n=>{let u=new Error(n);throw u.subject_url=t,u};(typeof t!=\"string\"||!t.trim())&&o(\"Invalid url.\"),t.length>W8.MAX_INPUT_LENGTH&&o(\"Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.\"),e&&(typeof e!=\"object\"&&(e={stripHash:!1}),t=mgt(t,e));let a=pgt.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=[\"ssh\"],a.protocol=\"ssh\",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):o(\"URL parsing failed.\")}return a};W8.MAX_INPUT_LENGTH=2048;hde.exports=W8});var yde=_((o5t,mde)=>{\"use strict\";var ygt=Y8();function dde(t){if(Array.isArray(t))return t.indexOf(\"ssh\")!==-1||t.indexOf(\"rsync\")!==-1;if(typeof t!=\"string\")return!1;var e=ygt(t);if(t=t.substring(t.indexOf(\"://\")+3),dde(e))return!0;var r=new RegExp(\".([a-zA-Z\\\\d]+):(\\\\d+)/\");return!t.match(r)&&t.indexOf(\"@\")<t.indexOf(\":\")}mde.exports=dde});var wde=_((a5t,Cde)=>{\"use strict\";var Egt=gde(),Ede=yde();function Cgt(t){var e=Egt(t);return e.token=\"\",e.password===\"x-oauth-basic\"?e.token=e.user:e.user===\"x-token-auth\"&&(e.token=e.password),Ede(e.protocols)||e.protocols.length===0&&Ede(t)?e.protocol=\"ssh\":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol=\"file\",e.protocols=[\"file\"]),e.href=e.href.replace(/\\/$/,\"\"),e}Cde.exports=Cgt});var Bde=_((l5t,Ide)=>{\"use strict\";var wgt=wde();function V8(t){if(typeof t!=\"string\")throw new Error(\"The url must be a string.\");var e=/^([a-z\\d-]{1,39})\\/([-\\.\\w]{1,100})$/i;e.test(t)&&(t=\"https://github.com/\"+t);var r=wgt(t),o=r.resource.split(\".\"),a=null;switch(r.toString=function(L){return V8.stringify(this,L)},r.source=o.length>2?o.slice(1-o.length).join(\".\"):r.source=r.resource,r.git_suffix=/\\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\\/)|(\\/$)/g,\"\").replace(/\\.git$/,\"\")),r.owner=decodeURIComponent(r.user),r.source){case\"git.cloudforge.com\":r.owner=r.user,r.organization=o[0],r.source=\"cloudforge.com\";break;case\"visualstudio.com\":if(r.resource===\"vs-ssh.visualstudio.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+\"/\"+a[3]);break}else{a=r.name.split(\"/\"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name);break}case\"dev.azure.com\":case\"azure.com\":if(r.resource===\"ssh.dev.azure.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split(\"/\"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\\/+/g,\"\")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,\"\"));break}default:a=r.name.split(\"/\");var n=a.length-1;if(a.length>=2){var u=a.indexOf(\"-\",2),A=a.indexOf(\"blob\",2),p=a.indexOf(\"tree\",2),h=a.indexOf(\"commit\",2),E=a.indexOf(\"src\",2),I=a.indexOf(\"raw\",2),v=a.indexOf(\"edit\",2);n=u>0?u-1:A>0?A-1:p>0?p-1:h>0?h-1:E>0?E-1:I>0?I-1:v>0?v-1:n,r.owner=a.slice(0,n).join(\"/\"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref=\"\",r.filepathtype=\"\",r.filepath=\"\";var b=a.length>n&&a[n+1]===\"-\"?n+1:n;a.length>b+2&&[\"raw\",\"src\",\"blob\",\"tree\",\"edit\"].indexOf(a[b+1])>=0&&(r.filepathtype=a[b+1],r.ref=a[b+2],a.length>b+3&&(r.filepath=a.slice(b+3).join(\"/\"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+=\"/\"),r.full_name+=r.name)),r.owner.startsWith(\"scm/\")&&(r.source=\"bitbucket-server\",r.owner=r.owner.replace(\"scm/\",\"\"),r.organization=r.owner,r.full_name=r.owner+\"/\"+r.name);var C=/(projects|users)\\/(.*?)\\/repos\\/(.*?)((\\/.*$)|$)/,T=C.exec(r.pathname);return T!=null&&(r.source=\"bitbucket-server\",T[1]===\"users\"?r.owner=\"~\"+T[2]:r.owner=T[2],r.organization=r.owner,r.name=T[3],a=T[4].split(\"/\"),a.length>1&&([\"raw\",\"browse\"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join(\"/\"))):a[1]===\"commits\"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+\"/\"+r.name,r.query.at?r.ref=r.query.at:r.ref=\"\"),r}V8.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join(\"+\"):t.protocol);var r=t.port?\":\"+t.port:\"\",o=t.user||\"git\",a=t.git_suffix?\".git\":\"\";switch(e){case\"ssh\":return r?\"ssh://\"+o+\"@\"+t.resource+r+\"/\"+t.full_name+a:o+\"@\"+t.resource+\":\"+t.full_name+a;case\"git+ssh\":case\"ssh+git\":case\"ftp\":case\"ftps\":return e+\"://\"+o+\"@\"+t.resource+r+\"/\"+t.full_name+a;case\"http\":case\"https\":var n=t.token?Igt(t):t.user&&(t.protocols.includes(\"http\")||t.protocols.includes(\"https\"))?t.user+\"@\":\"\";return e+\"://\"+n+t.resource+r+\"/\"+Bgt(t)+a;default:return t.href}};function Igt(t){switch(t.source){case\"bitbucket.org\":return\"x-token-auth:\"+t.token+\"@\";default:return t.token+\"@\"}}function Bgt(t){switch(t.source){case\"bitbucket-server\":return\"scm/\"+t.full_name;default:return\"\"+t.full_name}}Ide.exports=V8});var Ude=_((H9t,Ode)=>{var Rgt=jx(),Ngt=eS(),Lgt=Hl(),Mgt=fE(),Ogt=B_(),Ugt=aC(),_gt=R1();function Hgt(t){return Lgt(t)?Rgt(t,Ugt):Mgt(t)?[t]:Ngt(Ogt(_gt(t)))}Ode.exports=Hgt});function Ygt(t,e){return e===1&&Ggt.has(t[0])}function I2(t){let e=Array.isArray(t)?t:(0,jde.default)(t);return e.map((o,a)=>jgt.test(o)?`[${o}]`:qgt.test(o)&&!Ygt(e,a)?`.${o}`:`[${JSON.stringify(o)}]`).join(\"\").replace(/^\\./,\"\")}function Wgt(t,e){let r=[];if(e.methodName!==null&&r.push(de.pretty(t,e.methodName,de.Type.CODE)),e.file!==null){let o=[];o.push(de.pretty(t,e.file,de.Type.PATH)),e.line!==null&&(o.push(de.pretty(t,e.line,de.Type.NUMBER)),e.column!==null&&o.push(de.pretty(t,e.column,de.Type.NUMBER))),r.push(`(${o.join(de.pretty(t,\":\",\"grey\"))})`)}return r.join(\" \")}function mk(t,{manifestUpdates:e,reportedErrors:r},{fix:o}={}){let a=new Map,n=new Map,u=[...r.keys()].map(A=>[A,new Map]);for(let[A,p]of[...u,...e]){let h=r.get(A)?.map(b=>({text:b,fixable:!1}))??[],E=!1,I=t.getWorkspaceByCwd(A),v=I.manifest.exportTo({});for(let[b,C]of p){if(C.size>1){let T=[...C].map(([L,U])=>{let J=de.pretty(t.configuration,L,de.Type.INSPECT),te=U.size>0?Wgt(t.configuration,U.values().next().value):null;return te!==null?`\n${J} at ${te}`:`\n${J}`}).join(\"\");h.push({text:`Conflict detected in constraint targeting ${de.pretty(t.configuration,b,de.Type.CODE)}; conflicting values are:${T}`,fixable:!1})}else{let[[T]]=C,L=(0,_de.default)(v,b);if(JSON.stringify(L)===JSON.stringify(T))continue;if(!o){let U=typeof L>\"u\"?`Missing field ${de.pretty(t.configuration,b,de.Type.CODE)}; expected ${de.pretty(t.configuration,T,de.Type.INSPECT)}`:typeof T>\"u\"?`Extraneous field ${de.pretty(t.configuration,b,de.Type.CODE)} currently set to ${de.pretty(t.configuration,L,de.Type.INSPECT)}`:`Invalid field ${de.pretty(t.configuration,b,de.Type.CODE)}; expected ${de.pretty(t.configuration,T,de.Type.INSPECT)}, found ${de.pretty(t.configuration,L,de.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof T>\"u\"?(0,qde.default)(v,b):(0,Hde.default)(v,b,T),E=!0}E&&a.set(I,v)}h.length>0&&n.set(I,h)}return{changedWorkspaces:a,remainingErrors:n}}function Gde(t,{configuration:e}){let r={children:[]};for(let[o,a]of t){let n=[];for(let A of a){let p=A.text.split(/\\n/);A.fixable&&(p[0]=`${de.pretty(e,\"\\u2699\",\"gray\")} ${p[0]}`),n.push({value:de.tuple(de.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:de.tuple(de.Type.NO_HINT,h)}))})}let u={value:de.tuple(de.Type.LOCATOR,o.anchoredLocator),children:je.sortMap(n,A=>A.value[1])};r.children.push(u)}return r.children=je.sortMap(r.children,o=>o.value[1]),r}var _de,Hde,jde,qde,CC,jgt,qgt,Ggt,B2=Et(()=>{Ye();_de=$e(g2()),Hde=$e(T8()),jde=$e(Ude()),qde=$e(L8()),CC=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let o=Object.hasOwn(e,r)?e[r]:void 0;if(typeof o>\"u\")continue;je.getArrayWithDefault(this.indexes[r],o).push(e)}return e}find(e){if(typeof e>\"u\")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let o=[],a;for(let[u,A]of r){let p=u,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>\"u\"){o.push([p,A]);continue}let E=new Set(h.get(A)??[]);if(E.size===0)return[];if(typeof a>\"u\")a=E;else for(let I of a)E.has(I)||a.delete(I);if(a.size===0)break}let n=[...a??[]];return o.length>0&&(n=n.filter(u=>{for(let[A,p]of o)if(!(typeof p<\"u\"?Object.hasOwn(u,A)&&u[A]===p:Object.hasOwn(u,A)===!1))return!1;return!0})),n}},jgt=/^[0-9]+$/,qgt=/^[a-zA-Z0-9_]+$/,Ggt=new Set([\"scripts\",...Mt.allDependencies])});var Yde=_(($9t,aH)=>{var Vgt;(function(t){var e=function(){return{\"append/2\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"L\")]),new t.type.Term(\"foldl\",[new t.type.Term(\"append\",[]),new t.type.Var(\"X\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"L\")]))],\"append/3\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"X\"),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"append\",[new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"S\")]))],\"member/2\":[new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"_\")])]),null),new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]))],\"permutation/2\":[new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"permutation\",[new t.type.Var(\"T\"),new t.type.Var(\"P\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"P\")]),new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"Y\")]),new t.type.Var(\"S\")])])]))],\"maplist/2\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"X\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"Xs\")])]))],\"maplist/3\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\")])]))],\"maplist/4\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\")])]))],\"maplist/5\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\")])]))],\"maplist/6\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\")])]))],\"maplist/7\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\")])]))],\"maplist/8\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")]),new t.type.Term(\".\",[new t.type.Var(\"G\"),new t.type.Var(\"Gs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\"),new t.type.Var(\"G\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\"),new t.type.Var(\"Gs\")])]))],\"include/3\":[new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"A\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"A\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"F\"),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"F\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Var(\"S\")])]),new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"S\")])])])])]))],\"exclude/3\":[new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"E\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"Q\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"R\"),new t.type.Var(\"Q\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"!\",[]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"E\")])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"E\")])])])])])])]))],\"foldl/4\":[new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"I\"),new t.type.Var(\"I\")]),null),new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"I\"),new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"I\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])])])]),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P2\"),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P2\")]),new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"R\")])])])])]))],\"select/3\":[new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Ys\")]))],\"sum_list/2\":[new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"sum_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"+\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"max_list/2\":[new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"max_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"min_list/2\":[new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"min_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"=<\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"prod_list/2\":[new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"prod_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"*\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"last/2\":[new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\")]),new t.type.Term(\"last\",[new t.type.Var(\"Xs\"),new t.type.Var(\"X\")]))],\"prefix/2\":[new t.type.Rule(new t.type.Term(\"prefix\",[new t.type.Var(\"Part\"),new t.type.Var(\"Whole\")]),new t.type.Term(\"append\",[new t.type.Var(\"Part\"),new t.type.Var(\"_\"),new t.type.Var(\"Whole\")]))],\"nth0/3\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/3\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth0/4\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/4\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth/5\":[new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"N\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"O\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Y\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\",\",[new t.type.Term(\"is\",[new t.type.Var(\"M\"),new t.type.Term(\"+\",[new t.type.Var(\"N\"),new t.type.Num(1,!1)])]),new t.type.Term(\"nth\",[new t.type.Var(\"M\"),new t.type.Var(\"O\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Y\"),new t.type.Var(\"Ys\")])]))],\"length/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(!t.type.is_variable(A)&&!t.type.is_integer(A))o.throw_error(t.error.type(\"integer\",A,n.indicator));else if(t.type.is_integer(A)&&A.value<0)o.throw_error(t.error.domain(\"not_less_than_zero\",A,n.indicator));else{var p=new t.type.Term(\"length\",[u,new t.type.Num(0,!1),A]);t.type.is_integer(A)&&(p=new t.type.Term(\",\",[p,new t.type.Term(\"!\",[])])),o.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},\"length/3\":[new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"N\"),new t.type.Var(\"N\")]),null),new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"X\")]),new t.type.Var(\"A\"),new t.type.Var(\"N\")]),new t.type.Term(\",\",[new t.type.Term(\"succ\",[new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"length\",[new t.type.Var(\"X\"),new t.type.Var(\"B\"),new t.type.Var(\"N\")])]))],\"replicate/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(A))o.throw_error(t.error.type(\"integer\",A,n.indicator));else if(A.value<0)o.throw_error(t.error.domain(\"not_less_than_zero\",A,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=new t.type.Term(\"[]\"),E=0;E<A.value;E++)h=new t.type.Term(\".\",[u,h]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[h,p])),a.substitution,a)])}},\"sort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h=u;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=p.sort(t.compare),I=E.length-1;I>0;I--)E[I].equals(E[I-1])&&E.splice(I,1);for(var v=new t.type.Term(\"[]\"),I=E.length-1;I>=0;I--)v=new t.type.Term(\".\",[E[I],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,A])),a.substitution,a)])}}},\"msort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h=u;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=p.sort(t.compare),I=new t.type.Term(\"[]\"),v=E.length-1;v>=0;v--)I=new t.type.Term(\".\",[E[v],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,A])),a.substitution,a)])}}},\"keysort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h,E=u;E.indicator===\"./2\";){if(h=E.args[0],t.type.is_variable(h)){o.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!==\"-/2\"){o.throw_error(t.error.type(\"pair\",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(t.type.is_variable(E))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var I=p.sort(t.compare),v=new t.type.Term(\"[]\"),b=I.length-1;b>=0;b--)v=new t.type.Term(\".\",[new t.type.Term(\"-\",[I[b],I[b].pair]),v]),delete I[b].pair;o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,A])),a.substitution,a)])}}},\"take/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type(\"integer\",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator===\"./2\";)E.push(I.args[0]),I=I.args[1],h--;if(h===0){for(var v=new t.type.Term(\"[]\"),h=E.length-1;h>=0;h--)v=new t.type.Term(\".\",[E[h],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,p])),a.substitution,a)])}}},\"drop/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type(\"integer\",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator===\"./2\";)E.push(I.args[0]),I=I.args[1],h--;h===0&&o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,p])),a.substitution,a)])}},\"reverse/2\":function(o,a,n){var u=n.args[0],A=n.args[1],p=t.type.is_instantiated_list(u),h=t.type.is_instantiated_list(A);if(t.type.is_variable(u)&&t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(u)&&!t.type.is_fully_list(u))o.throw_error(t.error.type(\"list\",u,n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!p&&!h)o.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?u:A,I=new t.type.Term(\"[]\",[]);E.indicator===\"./2\";)I=new t.type.Term(\".\",[E.args[0],I]),E=E.args[1];o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,p?A:u])),a.substitution,a)])}},\"list_to_set/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else{for(var p=u,h=[];p.indicator===\"./2\";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!==\"[]/0\")o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=[],I=new t.type.Term(\"[]\",[]),v,b=0;b<h.length;b++){v=!1;for(var C=0;C<E.length&&!v;C++)v=t.compare(h[b],E[C])===0;v||E.push(h[b])}for(b=E.length-1;b>=0;b--)I=new t.type.Term(\".\",[E[b],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[A,I])),a.substitution,a)])}}}}},r=[\"append/2\",\"append/3\",\"member/2\",\"permutation/2\",\"maplist/2\",\"maplist/3\",\"maplist/4\",\"maplist/5\",\"maplist/6\",\"maplist/7\",\"maplist/8\",\"include/3\",\"exclude/3\",\"foldl/4\",\"sum_list/2\",\"max_list/2\",\"min_list/2\",\"prod_list/2\",\"last/2\",\"prefix/2\",\"nth0/3\",\"nth1/3\",\"nth0/4\",\"nth1/4\",\"length/2\",\"replicate/3\",\"select/3\",\"sort/2\",\"msort/2\",\"keysort/2\",\"take/3\",\"drop/3\",\"reverse/2\",\"list_to_set/2\"];typeof aH<\"u\"?aH.exports=function(o){t=o,new t.type.Module(\"lists\",e(),r)}:new t.type.Module(\"lists\",e(),r)})(Vgt)});var ome=_(Yr=>{\"use strict\";var Zd=process.platform===\"win32\",lH=\"aes-256-cbc\",Kgt=\"sha256\",Kde=\"The current environment doesn't support interactive reading from TTY.\",Yn=Be(\"fs\"),Wde=process.binding(\"tty_wrap\").TTY,uH=Be(\"child_process\"),l0=Be(\"path\"),AH={prompt:\"> \",hideEchoBack:!1,mask:\"*\",limit:[],limitMessage:\"Input another, please.$<( [)limit(])>\",defaultInput:\"\",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:\"utf8\",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},Jf=\"none\",Xc,IC,Vde=!1,a0,Ek,cH,Jgt=0,dH=\"\",Xd=[],Ck,Jde=!1,fH=!1,v2=!1;function zde(t){function e(r){return r.replace(/[^\\w\\u0080-\\uFFFF]/g,function(o){return\"#\"+o.charCodeAt(0)+\";\"})}return Ek.concat(function(r){var o=[];return Object.keys(r).forEach(function(a){r[a]===\"boolean\"?t[a]&&o.push(\"--\"+a):r[a]===\"string\"&&t[a]&&o.push(\"--\"+a,e(t[a]))}),o}({display:\"string\",displayOnly:\"boolean\",keyIn:\"boolean\",hideEchoBack:\"boolean\",mask:\"string\",limit:\"string\",caseSensitive:\"boolean\"}))}function zgt(t,e){function r(U){var J,te=\"\",le;for(cH=cH||Be(\"os\").tmpdir();;){J=l0.join(cH,U+te);try{le=Yn.openSync(J,\"wx\")}catch(pe){if(pe.code===\"EEXIST\"){te++;continue}else throw pe}Yn.closeSync(le);break}return J}var o,a,n,u={},A,p,h=r(\"readline-sync.stdout\"),E=r(\"readline-sync.stderr\"),I=r(\"readline-sync.exit\"),v=r(\"readline-sync.done\"),b=Be(\"crypto\"),C,T,L;C=b.createHash(Kgt),C.update(\"\"+process.pid+Jgt+++Math.random()),L=C.digest(\"hex\"),T=b.createDecipher(lH,L),o=zde(t),Zd?(a=process.env.ComSpec||\"cmd.exe\",process.env.Q='\"',n=[\"/V:ON\",\"/S\",\"/C\",\"(%Q%\"+a+\"%Q% /V:ON /S /C %Q%%Q%\"+a0+\"%Q%\"+o.map(function(U){return\" %Q%\"+U+\"%Q%\"}).join(\"\")+\" & (echo !ERRORLEVEL!)>%Q%\"+I+\"%Q%%Q%) 2>%Q%\"+E+\"%Q% |%Q%\"+process.execPath+\"%Q% %Q%\"+__dirname+\"\\\\encrypt.js%Q% %Q%\"+lH+\"%Q% %Q%\"+L+\"%Q% >%Q%\"+h+\"%Q% & (echo 1)>%Q%\"+v+\"%Q%\"]):(a=\"/bin/sh\",n=[\"-c\",'(\"'+a0+'\"'+o.map(function(U){return\" '\"+U.replace(/'/g,\"'\\\\''\")+\"'\"}).join(\"\")+'; echo $?>\"'+I+'\") 2>\"'+E+'\" |\"'+process.execPath+'\" \"'+__dirname+'/encrypt.js\" \"'+lH+'\" \"'+L+'\" >\"'+h+'\"; echo 1 >\"'+v+'\"']),v2&&v2(\"_execFileSync\",o);try{uH.spawn(a,n,e)}catch(U){u.error=new Error(U.message),u.error.method=\"_execFileSync - spawn\",u.error.program=a,u.error.args=n}for(;Yn.readFileSync(v,{encoding:t.encoding}).trim()!==\"1\";);return(A=Yn.readFileSync(I,{encoding:t.encoding}).trim())===\"0\"?u.input=T.update(Yn.readFileSync(h,{encoding:\"binary\"}),\"hex\",t.encoding)+T.final(t.encoding):(p=Yn.readFileSync(E,{encoding:t.encoding}).trim(),u.error=new Error(Kde+(p?`\n`+p:\"\")),u.error.method=\"_execFileSync\",u.error.program=a,u.error.args=n,u.error.extMessage=p,u.error.exitCode=+A),Yn.unlinkSync(h),Yn.unlinkSync(E),Yn.unlinkSync(I),Yn.unlinkSync(v),u}function Xgt(t){var e,r={},o,a={env:process.env,encoding:t.encoding};if(a0||(Zd?process.env.PSModulePath?(a0=\"powershell.exe\",Ek=[\"-ExecutionPolicy\",\"Bypass\",\"-File\",__dirname+\"\\\\read.ps1\"]):(a0=\"cscript.exe\",Ek=[\"//nologo\",__dirname+\"\\\\read.cs.js\"]):(a0=\"/bin/sh\",Ek=[__dirname+\"/read.sh\"])),Zd&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),uH.execFileSync){e=zde(t),v2&&v2(\"execFileSync\",e);try{r.input=uH.execFileSync(a0,e,a)}catch(n){o=n.stderr?(n.stderr+\"\").trim():\"\",r.error=new Error(Kde+(o?`\n`+o:\"\")),r.error.method=\"execFileSync\",r.error.program=a0,r.error.args=e,r.error.extMessage=o,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=zgt(t,a);return r.error||(r.input=r.input.replace(/^\\s*'|'\\s*$/g,\"\"),t.display=\"\"),r}function pH(t){var e=\"\",r=t.display,o=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=Xgt(t);if(n.error)throw n.error;return n.input}return fH&&fH(t),function(){var n,u,A;function p(){return n||(n=process.binding(\"fs\"),u=process.binding(\"constants\")),n}if(typeof Jf==\"string\")if(Jf=null,Zd){if(A=function(h){var E=h.replace(/^\\D+/,\"\").split(\".\"),I=0;return(E[0]=+E[0])&&(I+=E[0]*1e4),(E[1]=+E[1])&&(I+=E[1]*100),(E[2]=+E[2])&&(I+=E[2]),I}(process.version),!(A>=20302&&A<40204||A>=5e4&&A<50100||A>=50600&&A<60200)&&process.stdin.isTTY)process.stdin.pause(),Jf=process.stdin.fd,IC=process.stdin._handle;else try{Jf=p().open(\"CONIN$\",u.O_RDWR,parseInt(\"0666\",8)),IC=new Wde(Jf,!0)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else{try{Xc=Yn.openSync(\"\\\\\\\\.\\\\CON\",\"w\")}catch{}if(typeof Xc!=\"number\")try{Xc=p().open(\"CONOUT$\",u.O_RDWR,parseInt(\"0666\",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Jf=Yn.openSync(\"/dev/tty\",\"r\"),IC=process.stdin._handle}catch{}}else try{Jf=Yn.openSync(\"/dev/tty\",\"r\"),IC=new Wde(Jf,!1)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else try{Xc=Yn.openSync(\"/dev/tty\",\"w\")}catch{}}}(),function(){var n,u,A=!t.hideEchoBack&&!t.keyIn,p,h,E,I,v;Ck=\"\";function b(C){return C===Vde?!0:IC.setRawMode(C)!==0?!1:(Vde=C,!0)}if(Jde||!IC||typeof Xc!=\"number\"&&(t.display||!A)){e=a();return}if(t.display&&(Yn.writeSync(Xc,t.display),t.display=\"\"),!t.displayOnly){if(!b(!A)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(u=new RegExp(\"[^\"+t.limit+\"]\",\"g\"+(t.caseSensitive?\"\":\"i\")));;){E=0;try{E=Yn.readSync(Jf,p,0,h)}catch(C){if(C.code!==\"EOF\"){b(!1),e+=a();return}}if(E>0?(I=p.toString(t.encoding,0,E),Ck+=I):(I=`\n`,Ck+=String.fromCharCode(0)),I&&typeof(v=(I.match(/^(.*?)[\\r\\n]/)||[])[1])==\"string\"&&(I=v,n=!0),I&&(I=I.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g,\"\")),I&&u&&(I=I.replace(u,\"\")),I&&(A||(t.hideEchoBack?t.mask&&Yn.writeSync(Xc,new Array(I.length+1).join(t.mask)):Yn.writeSync(Xc,I)),e+=I),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!A&&!o&&Yn.writeSync(Xc,`\n`),b(!1)}}(),t.print&&!o&&t.print(r+(t.displayOnly?\"\":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+`\n`),t.encoding),t.displayOnly?\"\":dH=t.keepWhitespace||t.keyIn?e:e.trim()}function Zgt(t,e){var r=[];function o(a){a!=null&&(Array.isArray(a)?a.forEach(o):(!e||e(a))&&r.push(a))}return o(t),r}function mH(t){return t.replace(/[\\x00-\\x7f]/g,function(e){return\"\\\\x\"+(\"00\"+e.charCodeAt().toString(16)).substr(-2)})}function Ts(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]==\"boolean\"&&(r=t.shift(),r&&(e=Object.keys(AH),t.unshift(AH))),t.reduce(function(o,a){return a==null||(a.hasOwnProperty(\"noEchoBack\")&&!a.hasOwnProperty(\"hideEchoBack\")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty(\"noTrim\")&&!a.hasOwnProperty(\"keepWhitespace\")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var u;if(!!a.hasOwnProperty(n))switch(u=a[n],n){case\"mask\":case\"limitMessage\":case\"defaultInput\":case\"encoding\":u=u!=null?u+\"\":\"\",u&&n!==\"limitMessage\"&&(u=u.replace(/[\\r\\n]/g,\"\")),o[n]=u;break;case\"bufferSize\":!isNaN(u=parseInt(u,10))&&typeof u==\"number\"&&(o[n]=u);break;case\"displayOnly\":case\"keyIn\":case\"hideEchoBack\":case\"caseSensitive\":case\"keepWhitespace\":case\"history\":case\"cd\":o[n]=!!u;break;case\"limit\":case\"trueValue\":case\"falseValue\":o[n]=Zgt(u,function(A){var p=typeof A;return p===\"string\"||p===\"number\"||p===\"function\"||A instanceof RegExp}).map(function(A){return typeof A==\"string\"?A.replace(/[\\r\\n]/g,\"\"):A});break;case\"print\":case\"phContent\":case\"preCheck\":o[n]=typeof u==\"function\"?u:void 0;break;case\"prompt\":case\"display\":o[n]=u??\"\";break}})),o},{})}function hH(t,e,r){return e.some(function(o){var a=typeof o;return a===\"string\"?r?t===o:t.toLowerCase()===o.toLowerCase():a===\"number\"?parseFloat(t)===o:a===\"function\"?o(t):o instanceof RegExp?o.test(t):!1})}function yH(t,e){var r=l0.normalize(Zd?(process.env.HOMEDRIVE||\"\")+(process.env.HOMEPATH||\"\"):process.env.HOME||\"\").replace(/[\\/\\\\]+$/,\"\");return t=l0.normalize(t),e?t.replace(/^~(?=\\/|\\\\|$)/,r):t.replace(new RegExp(\"^\"+mH(r)+\"(?=\\\\/|\\\\\\\\|$)\",Zd?\"i\":\"\"),\"~\")}function BC(t,e){var r=\"(?:\\\\(([\\\\s\\\\S]*?)\\\\))?(\\\\w+|.-.)(?:\\\\(([\\\\s\\\\S]*?)\\\\))?\",o=new RegExp(\"(\\\\$)?(\\\\$<\"+r+\">)\",\"g\"),a=new RegExp(\"(\\\\$)?(\\\\$\\\\{\"+r+\"\\\\})\",\"g\");function n(u,A,p,h,E,I){var v;return A||typeof(v=e(E))!=\"string\"?p:v?(h||\"\")+v+(I||\"\"):\"\"}return t.replace(o,n).replace(a,n)}function Xde(t,e,r){var o,a=[],n=-1,u=0,A=\"\",p;function h(E,I){return I.length>3?(E.push(I[0]+\"...\"+I[I.length-1]),p=!0):I.length&&(E=E.concat(I)),E}return o=t.reduce(function(E,I){return E.concat((I+\"\").split(\"\"))},[]).reduce(function(E,I){var v,b;return e||(I=I.toLowerCase()),v=/^\\d$/.test(I)?1:/^[A-Z]$/.test(I)?2:/^[a-z]$/.test(I)?3:0,r&&v===0?A+=I:(b=I.charCodeAt(0),v&&v===n&&b===u+1?a.push(I):(E=h(E,a),a=[I],n=v),u=b),E},[]),o=h(o,a),A&&(o.push(A),p=!0),{values:o,suppressed:p}}function Zde(t,e){return t.join(t.length>2?\", \":e?\" / \":\"/\")}function $de(t,e){var r,o,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!=\"string\")switch(t){case\"hideEchoBack\":case\"mask\":case\"defaultInput\":case\"caseSensitive\":case\"keepWhitespace\":case\"encoding\":case\"bufferSize\":case\"history\":case\"cd\":r=e.hasOwnProperty(t)?typeof e[t]==\"boolean\"?e[t]?\"on\":\"off\":e[t]+\"\":\"\";break;case\"limit\":case\"trueValue\":case\"falseValue\":o=e[e.hasOwnProperty(t+\"Src\")?t+\"Src\":t],e.keyIn?(a=Xde(o,e.caseSensitive),o=a.values):o=o.filter(function(u){var A=typeof u;return A===\"string\"||A===\"number\"}),r=Zde(o,a.suppressed);break;case\"limitCount\":case\"limitCountNotZero\":r=e[e.hasOwnProperty(\"limitSrc\")?\"limitSrc\":\"limit\"].length,r=r||t!==\"limitCountNotZero\"?r+\"\":\"\";break;case\"lastInput\":r=dH;break;case\"cwd\":case\"CWD\":case\"cwdHome\":r=process.cwd(),t===\"CWD\"?r=l0.basename(r):t===\"cwdHome\"&&(r=yH(r));break;case\"date\":case\"time\":case\"localeDate\":case\"localeTime\":r=new Date()[\"to\"+t.replace(/^./,function(u){return u.toUpperCase()})+\"String\"]();break;default:typeof(n=(t.match(/^history_m(\\d+)$/)||[])[1])==\"string\"&&(r=Xd[Xd.length-n]||\"\")}return r}function eme(t){var e=/^(.)-(.)$/.exec(t),r=\"\",o,a,n,u;if(!e)return null;for(o=e[1].charCodeAt(0),a=e[2].charCodeAt(0),u=o<a?1:-1,n=o;n!==a+u;n+=u)r+=String.fromCharCode(n);return r}function gH(t){var e=new RegExp(/(\\s*)(?:(\"|')(.*?)(?:\\2|$)|(\\S+))/g),r,o=\"\",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||\"\",r[1]&&(a.push(o),o=\"\"),o+=n;return o&&a.push(o),a}function tme(t,e){return e.trueValue.length&&hH(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&hH(t,e.falseValue,e.caseSensitive)?!1:t}function rme(t){var e,r,o,a,n,u,A;function p(E){return $de(E,t)}function h(E){t.display+=(/[^\\r\\n]$/.test(t.display)?`\n`:\"\")+E}for(t.limitSrc=t.limit,t.displaySrc=t.display,t.limit=\"\",t.display=BC(t.display+\"\",p);;){if(e=pH(t),r=!1,o=\"\",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\\s*\\!(?:\\!|-1)(:p)?\\s*$/.exec(e))?(n=Xd[0]||\"\",a[1]?r=!0:e=n,h(n+`\n`),r||(t.displayOnly=!0,pH(t),t.displayOnly=!1)):e&&e!==Xd[Xd.length-1]&&(Xd=[e])),!r&&t.cd&&e)switch(u=gH(e),u[0].toLowerCase()){case\"cd\":if(u[1])try{process.chdir(yH(u[1],!0))}catch(E){h(E+\"\")}r=!0;break;case\"pwd\":h(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(A=t.preCheck(e,t),e=A.res,A.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||hH(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(o=BC(t.limitMessage,p))}h((o?o+`\n`:\"\")+BC(t.displaySrc+\"\",p))}return tme(e,t)}Yr._DBG_set_useExt=function(t){Jde=t};Yr._DBG_set_checkOptions=function(t){fH=t};Yr._DBG_set_checkMethod=function(t){v2=t};Yr._DBG_clearHistory=function(){dH=\"\",Xd=[]};Yr.setDefaultOptions=function(t){return AH=Ts(!0,t),Ts(!0)};Yr.question=function(t,e){return rme(Ts(Ts(!0,e),{display:t}))};Yr.prompt=function(t){var e=Ts(!0,t);return e.display=e.prompt,rme(e)};Yr.keyIn=function(t,e){var r=Ts(Ts(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(o){var a=typeof o;return a===\"string\"||a===\"number\"}).map(function(o){return BC(o+\"\",eme)}),r.limit=mH(r.limitSrc.join(\"\")),[\"trueValue\",\"falseValue\"].forEach(function(o){r[o]=r[o].reduce(function(a,n){var u=typeof n;return u===\"string\"||u===\"number\"?a=a.concat((n+\"\").split(\"\")):a.push(n),a},[])}),r.display=BC(r.display+\"\",function(o){return $de(o,r)}),tme(pH(r),r)};Yr.questionEMail=function(t,e){return t==null&&(t=\"Input e-mail address: \"),Yr.question(t,Ts({hideEchoBack:!1,limit:/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,limitMessage:\"Input valid e-mail address, please.\",trueValue:null,falseValue:null},e,{keepWhitespace:!1,cd:!1}))};Yr.questionNewPassword=function(t,e){var r,o,a,n=Ts({hideEchoBack:!0,mask:\"*\",limitMessage:`It can include: $<charlist>\nAnd the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(b){return b===\"charlist\"?r.text:b===\"length\"?o+\"...\"+a:null}}),u,A,p,h,E,I,v;for(e=e||{},u=BC(e.charlist?e.charlist+\"\":\"$<!-~>\",eme),(isNaN(o=parseInt(e.min,10))||typeof o!=\"number\")&&(o=12),(isNaN(a=parseInt(e.max,10))||typeof a!=\"number\")&&(a=24),h=new RegExp(\"^[\"+mH(u)+\"]{\"+o+\",\"+a+\"}$\"),r=Xde([u],n.caseSensitive,!0),r.text=Zde(r.values,r.suppressed),A=e.confirmMessage!=null?e.confirmMessage:\"Reinput a same one to confirm it: \",p=e.unmatchMessage!=null?e.unmatchMessage:\"It differs from first one. Hit only the Enter key if you want to retry from first one.\",t==null&&(t=\"Input new password: \"),E=n.limitMessage;!v;)n.limit=h,n.limitMessage=E,I=Yr.question(t,n),n.limit=[I,\"\"],n.limitMessage=p,v=Yr.question(A,n);return I};function nme(t,e,r){var o;function a(n){return o=r(n),!isNaN(o)&&typeof o==\"number\"}return Yr.question(t,Ts({limitMessage:\"Input valid number, please.\"},e,{limit:a,cd:!1})),o}Yr.questionInt=function(t,e){return nme(t,e,function(r){return parseInt(r,10)})};Yr.questionFloat=function(t,e){return nme(t,e,parseFloat)};Yr.questionPath=function(t,e){var r,o=\"\",a=Ts({hideEchoBack:!1,limitMessage:`$<error(\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var u,A,p;n=yH(n,!0),o=\"\";function h(E){E.split(/\\/|\\\\/).reduce(function(I,v){var b=l0.resolve(I+=v+l0.sep);if(!Yn.existsSync(b))Yn.mkdirSync(b);else if(!Yn.statSync(b).isDirectory())throw new Error(\"Non directory already exists: \"+b);return I},\"\")}try{if(u=Yn.existsSync(n),r=u?Yn.realpathSync(n):l0.resolve(n),!e.hasOwnProperty(\"exists\")&&!u||typeof e.exists==\"boolean\"&&e.exists!==u)return o=(u?\"Already exists\":\"No such file or directory\")+\": \"+r,!1;if(!u&&e.create&&(e.isDirectory?h(r):(h(l0.dirname(r)),Yn.closeSync(Yn.openSync(r,\"w\"))),r=Yn.realpathSync(r)),u&&(e.min||e.max||e.isFile||e.isDirectory)){if(A=Yn.statSync(r),e.isFile&&!A.isFile())return o=\"Not file: \"+r,!1;if(e.isDirectory&&!A.isDirectory())return o=\"Not directory: \"+r,!1;if(e.min&&A.size<+e.min||e.max&&A.size>+e.max)return o=\"Size \"+A.size+\" is out of range: \"+r,!1}if(typeof e.validate==\"function\"&&(p=e.validate(r))!==!0)return typeof p==\"string\"&&(o=p),!1}catch(E){return o=E+\"\",!1}return!0},phContent:function(n){return n===\"error\"?o:n!==\"min\"&&n!==\"max\"?null:e.hasOwnProperty(n)?e[n]+\"\":\"\"}});return e=e||{},t==null&&(t='Input path (you can \"cd\" and \"pwd\"): '),Yr.question(t,a),r};function ime(t,e){var r={},o={};return typeof t==\"object\"?(Object.keys(t).forEach(function(a){typeof t[a]==\"function\"&&(o[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=gH(a),n=r.args[0]||\"\",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!==\"_\"&&o.hasOwnProperty(n)?o[n].apply(a,r.args.slice(1)):o.hasOwnProperty(\"_\")?o._.apply(a,r.args):null,{res:a,forceNext:!1}},o.hasOwnProperty(\"_\")||(r.limit=function(){var a=r.args[0]||\"\";return e.caseSensitive||(a=a.toLowerCase()),o.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=gH(a),r.hRes=typeof t==\"function\"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}Yr.promptCL=function(t,e){var r=Ts({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),o=ime(t,r);return r.limit=o.limit,r.preCheck=o.preCheck,Yr.prompt(r),o.args};Yr.promptLoop=function(t,e){for(var r=Ts({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(Yr.prompt(r)););};Yr.promptCLLoop=function(t,e){var r=Ts({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),o=ime(t,r);for(r.limit=o.limit,r.preCheck=o.preCheck;Yr.prompt(r),!o.hRes;);};Yr.promptSimShell=function(t){return Yr.prompt(Ts({hideEchoBack:!1,history:!0},t,{prompt:function(){return Zd?\"$<cwd>>\":(process.env.USER||\"\")+(process.env.HOSTNAME?\"@\"+process.env.HOSTNAME.replace(/\\..*$/,\"\"):\"\")+\":$<cwdHome>$ \"}()}))};function sme(t,e,r){var o;return t==null&&(t=\"Are you sure? \"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s*:?\\s*$/,\"\")+\" [y/n]: \"),o=Yr.keyIn(t,Ts(e,{hideEchoBack:!1,limit:r,trueValue:\"y\",falseValue:\"n\",caseSensitive:!1})),typeof o==\"boolean\"?o:\"\"}Yr.keyInYN=function(t,e){return sme(t,e)};Yr.keyInYNStrict=function(t,e){return sme(t,e,\"yn\")};Yr.keyInPause=function(t,e){t==null&&(t=\"Continue...\"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s+$/,\"\")+\" (Hit any key)\"),Yr.keyIn(t,Ts({limit:null},e,{hideEchoBack:!0,mask:\"\"}))};Yr.keyInSelect=function(t,e,r){var o=Ts({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p===\"itemsCount\"?t.length+\"\":p===\"firstItem\"?(t[0]+\"\").trim():p===\"lastItem\"?(t[t.length-1]+\"\").trim():null}}),a=\"\",n={},u=49,A=`\n`;if(!Array.isArray(t)||!t.length||t.length>35)throw\"`items` must be Array (max length: 35).\";return t.forEach(function(p,h){var E=String.fromCharCode(u);a+=E,n[E]=h,A+=\"[\"+E+\"] \"+(p+\"\").trim()+`\n`,u=u===57?97:u+1}),(!r||r.cancel!==!1)&&(a+=\"0\",n[0]=-1,A+=\"[0] \"+(r&&r.cancel!=null&&typeof r.cancel!=\"boolean\"?(r.cancel+\"\").trim():\"CANCEL\")+`\n`),o.limit=a,A+=`\n`,e==null&&(e=\"Choose one from list: \"),(e+=\"\")&&((!r||r.guide!==!1)&&(e=e.replace(/\\s*:?\\s*$/,\"\")+\" [$<limit>]: \"),A+=e),n[Yr.keyIn(A,o).toLowerCase()]};Yr.getRawInput=function(){return Ck};function D2(t,e){var r;return e.length&&(r={},r[t]=e[0]),Yr.setDefaultOptions(r)[t]}Yr.setPrint=function(){return D2(\"print\",arguments)};Yr.setPrompt=function(){return D2(\"prompt\",arguments)};Yr.setEncoding=function(){return D2(\"encoding\",arguments)};Yr.setMask=function(){return D2(\"mask\",arguments)};Yr.setBufferSize=function(){return D2(\"bufferSize\",arguments)}});var EH=_((t7t,hl)=>{(function(){var t={major:0,minor:2,patch:66,status:\"beta\"};tau_file_system={files:{},open:function(w,S,y){var F=tau_file_system.files[w];if(!F){if(y===\"read\")return null;F={path:w,text:\"\",type:S,get:function(z,X){return X===this.text.length||X>this.text.length?\"end_of_file\":this.text.substring(X,X+z)},put:function(z,X){return X===\"end_of_file\"?(this.text+=z,!0):X===\"past_end_of_file\"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z===\"end_of_stream\")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var Z=n(this.text[Math.floor(z/2)],0);return z%2===0?Z&255:Z/256>>>0},put_byte:function(z,X){var Z=X===\"end_of_stream\"?this.text.length:Math.floor(X/2);if(this.text.length<Z)return null;var ie=this.text.length===Z?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(ie=ie/256>>>0,ie=(ie&255)<<8|z&255):(ie=ie&255,ie=(z&255)<<8|ie&255),this.text.length===Z?this.text+=u(ie):this.text=this.text.substring(0,Z)+u(ie)+this.text.substring(Z+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y===\"write\"&&(F.text=\"\"),F}},tau_user_input={buffer:\"\",get:function(w,S){for(var y;tau_user_input.buffer.length<w;)y=window.prompt(),y&&(tau_user_input.buffer+=y);return y=tau_user_input.buffer.substr(0,w),tau_user_input.buffer=tau_user_input.buffer.substr(w),y}},tau_user_output={put:function(w,S){return console.log(w),!0},flush:function(){return!0}},nodejs_file_system={open:function(w,S,y){var F=Be(\"fs\"),z=F.openSync(w,y[0]);return y===\"read\"&&!F.existsSync(w)?null:{get:function(X,Z){var ie=new Buffer(X);return F.readSync(z,ie,0,X,Z),ie.toString()},put:function(X,Z){var ie=Buffer.from(X);if(Z===\"end_of_file\")F.writeSync(z,ie);else{if(Z===\"past_end_of_file\")return null;F.writeSync(z,ie,0,ie.length,Z)}return!0},get_byte:function(X){return null},put_byte:function(X,Z){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:\"\",get:function(w,S){for(var y,F=ome();nodejs_user_input.buffer.length<w;)nodejs_user_input.buffer+=F.question();return y=nodejs_user_input.buffer.substr(0,w),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(w),y}},nodejs_user_output={put:function(w,S){return process.stdout.write(w),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(w,S){return w.indexOf(S)}:e=function(w,S){for(var y=w.length,F=0;F<y;F++)if(S===w[F])return F;return-1};var r=function(w,S){if(w.length!==0){for(var y=w[0],F=w.length,z=1;z<F;z++)y=S(y,w[z]);return y}},o;Array.prototype.map?o=function(w,S){return w.map(S)}:o=function(w,S){for(var y=[],F=w.length,z=0;z<F;z++)y.push(S(w[z]));return y};var a;Array.prototype.filter?a=function(w,S){return w.filter(S)}:a=function(w,S){for(var y=[],F=w.length,z=0;z<F;z++)S(w[z])&&y.push(w[z]);return y};var n;String.prototype.codePointAt?n=function(w,S){return w.codePointAt(S)}:n=function(w,S){return w.charCodeAt(S)};var u;String.fromCodePoint?u=function(){return String.fromCodePoint.apply(null,arguments)}:u=function(){return String.fromCharCode.apply(null,arguments)};var A=0,p=1,h=/(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)|\\\\x([0-9a-fA-F]+)\\\\|\\\\([0-7]+)\\\\|(\\\\\\\\)|(\\\\')|('')|(\\\\\")|(\\\\`)|(\\\\.)|(.)/g,E={\"\\\\a\":7,\"\\\\b\":8,\"\\\\f\":12,\"\\\\n\":10,\"\\\\r\":13,\"\\\\t\":9,\"\\\\v\":11};function I(w){var S=[],y=!1;return w.replace(h,function(F,z,X,Z,ie,Se,Ne,ot,dt,jt,$t,xt,an,Qr,mr,xr,Wr){switch(!0){case dt!==void 0:return S.push(parseInt(dt,16)),\"\";case jt!==void 0:return S.push(parseInt(jt,8)),\"\";case $t!==void 0:case xt!==void 0:case an!==void 0:case Qr!==void 0:case mr!==void 0:return S.push(n(F.substr(1),0)),\"\";case Wr!==void 0:return S.push(n(Wr,0)),\"\";case xr!==void 0:y=!0;default:return S.push(E[F]),\"\"}}),y?null:S}function v(w,S){var y=\"\";if(w.length<2)return w;try{w=w.replace(/\\\\([0-7]+)\\\\/g,function(Z,ie){return u(parseInt(ie,8))}),w=w.replace(/\\\\x([0-9a-fA-F]+)\\\\/g,function(Z,ie){return u(parseInt(ie,16))})}catch{return null}for(var F=0;F<w.length;F++){var z=w.charAt(F),X=w.charAt(F+1);if(z===S&&X===S)F++,y+=S;else if(z===\"\\\\\")if([\"a\",\"b\",\"f\",\"n\",\"r\",\"t\",\"v\",\"'\",'\"',\"\\\\\",\"a\",\"\\b\",\"\\f\",`\n`,\"\\r\",\"\t\",\"\\v\"].indexOf(X)!==-1)switch(F+=1,X){case\"a\":y+=\"a\";break;case\"b\":y+=\"\\b\";break;case\"f\":y+=\"\\f\";break;case\"n\":y+=`\n`;break;case\"r\":y+=\"\\r\";break;case\"t\":y+=\"\t\";break;case\"v\":y+=\"\\v\";break;case\"'\":y+=\"'\";break;case'\"':y+='\"';break;case\"\\\\\":y+=\"\\\\\";break}else return null;else y+=z}return y}function b(w){for(var S=\"\",y=0;y<w.length;y++)switch(w.charAt(y)){case\"'\":S+=\"\\\\'\";break;case\"\\\\\":S+=\"\\\\\\\\\";break;case\"\\b\":S+=\"\\\\b\";break;case\"\\f\":S+=\"\\\\f\";break;case`\n`:S+=\"\\\\n\";break;case\"\\r\":S+=\"\\\\r\";break;case\"\t\":S+=\"\\\\t\";break;case\"\\v\":S+=\"\\\\v\";break;default:S+=w.charAt(y);break}return S}function C(w){var S=w.substr(2);switch(w.substr(0,2).toLowerCase()){case\"0x\":return parseInt(S,16);case\"0b\":return parseInt(S,2);case\"0o\":return parseInt(S,8);case\"0'\":return I(S)[0];default:return parseFloat(w)}}var T={whitespace:/^\\s*(?:(?:%.*)|(?:\\/\\*(?:\\n|\\r|.)*?\\*\\/)|(?:\\s+))\\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\\!|,|;|[a-z][0-9a-zA-Z_]*|[#\\$\\&\\*\\+\\-\\.\\/\\:\\<\\=\\>\\?\\@\\^\\~\\\\]+|'(?:[^']*?(?:\\\\(?:x?\\d+)?\\\\)*(?:'')*(?:\\\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\\\[abfnrtv\\\\'\"`]|\\\\x?\\d+\\\\|[^\\\\])|\\d+(?:\\.\\d+(?:[eE][+-]?\\d+)?)?)/,string:/^(?:\"([^\"]|\"\"|\\\\\")*\"|`([^`]|``|\\\\`)*`)/,l_brace:/^(?:\\[)/,r_brace:/^(?:\\])/,l_bracket:/^(?:\\{)/,r_bracket:/^(?:\\})/,bar:/^(?:\\|)/,l_paren:/^(?:\\()/,r_paren:/^(?:\\))/};function L(w,S){return w.get_flag(\"char_conversion\").id===\"on\"?S.replace(/./g,function(y){return w.get_char_conversion(y)}):S}function U(w){this.thread=w,this.text=\"\",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var S,y=0,F=0,z=0,X=[],Z=!1;if(w){var ie=this.tokens[w-1];y=ie.len,S=L(this.thread,this.text.substr(ie.len)),F=ie.line,z=ie.start}else S=this.text;if(/^\\s*$/.test(S))return null;for(;S!==\"\";){var Se=[],Ne=!1;if(/^\\n/.exec(S)!==null){F++,z=0,y++,S=S.replace(/\\n/,\"\"),Z=!0;continue}for(var ot in T)if(T.hasOwnProperty(ot)){var dt=T[ot].exec(S);dt&&Se.push({value:dt[0],name:ot,matches:dt})}if(!Se.length)return this.set_last_tokens([{value:S,matches:[],name:\"lexical\",line:F,start:z}]);var ie=r(Se,function(Qr,mr){return Qr.value.length>=mr.value.length?Qr:mr});switch(ie.start=z,ie.line=F,S=S.replace(ie.value,\"\"),z+=ie.value.length,y+=ie.value.length,ie.name){case\"atom\":ie.raw=ie.value,ie.value.charAt(0)===\"'\"&&(ie.value=v(ie.value.substr(1,ie.value.length-2),\"'\"),ie.value===null&&(ie.name=\"lexical\",ie.value=\"unknown escape sequence\"));break;case\"number\":ie.float=ie.value.substring(0,2)!==\"0x\"&&ie.value.match(/[.eE]/)!==null&&ie.value!==\"0'.\",ie.value=C(ie.value),ie.blank=Ne;break;case\"string\":var jt=ie.value.charAt(0);ie.value=v(ie.value.substr(1,ie.value.length-2),jt),ie.value===null&&(ie.name=\"lexical\",ie.value=\"unknown escape sequence\");break;case\"whitespace\":var $t=X[X.length-1];$t&&($t.space=!0),Ne=!0;continue;case\"r_bracket\":X.length>0&&X[X.length-1].name===\"l_bracket\"&&(ie=X.pop(),ie.name=\"atom\",ie.value=\"{}\",ie.raw=\"{}\",ie.space=!1);break;case\"r_brace\":X.length>0&&X[X.length-1].name===\"l_brace\"&&(ie=X.pop(),ie.name=\"atom\",ie.value=\"[]\",ie.raw=\"[]\",ie.space=!1);break}ie.len=y,X.push(ie),Ne=!1}var xt=this.set_last_tokens(X);return xt.length===0?null:xt};function J(w,S,y,F,z){if(!S[y])return{type:A,value:x.error.syntax(S[y-1],\"expression expected\",!0)};var X;if(F===\"0\"){var Z=S[y];switch(Z.name){case\"number\":return{type:p,len:y+1,value:new x.type.Num(Z.value,Z.float)};case\"variable\":return{type:p,len:y+1,value:new x.type.Var(Z.value)};case\"string\":var ie;switch(w.get_flag(\"double_quotes\").id){case\"atom\":ie=new H(Z.value,[]);break;case\"codes\":ie=new H(\"[]\",[]);for(var Se=Z.value.length-1;Se>=0;Se--)ie=new H(\".\",[new x.type.Num(n(Z.value,Se),!1),ie]);break;case\"chars\":ie=new H(\"[]\",[]);for(var Se=Z.value.length-1;Se>=0;Se--)ie=new H(\".\",[new x.type.Term(Z.value.charAt(Se),[]),ie]);break}return{type:p,len:y+1,value:ie};case\"l_paren\":var xt=J(w,S,y+1,w.__get_max_priority(),!0);return xt.type!==p?xt:S[xt.len]&&S[xt.len].name===\"r_paren\"?(xt.len++,xt):{type:A,derived:!0,value:x.error.syntax(S[xt.len]?S[xt.len]:S[xt.len-1],\") or operator expected\",!S[xt.len])};case\"l_bracket\":var xt=J(w,S,y+1,w.__get_max_priority(),!0);return xt.type!==p?xt:S[xt.len]&&S[xt.len].name===\"r_bracket\"?(xt.len++,xt.value=new H(\"{}\",[xt.value]),xt):{type:A,derived:!0,value:x.error.syntax(S[xt.len]?S[xt.len]:S[xt.len-1],\"} or operator expected\",!S[xt.len])}}var Ne=te(w,S,y,z);return Ne.type===p||Ne.derived||(Ne=le(w,S,y),Ne.type===p||Ne.derived)?Ne:{type:A,derived:!1,value:x.error.syntax(S[y],\"unexpected token\")}}var ot=w.__get_max_priority(),dt=w.__get_next_priority(F),jt=y;if(S[y].name===\"atom\"&&S[y+1]&&(S[y].space||S[y+1].name!==\"l_paren\")){var Z=S[y++],$t=w.__lookup_operator_classes(F,Z.value);if($t&&$t.indexOf(\"fy\")>-1){var xt=J(w,S,y,F,z);if(xt.type!==A)return Z.value===\"-\"&&!Z.space&&x.type.is_number(xt.value)?{value:new x.type.Num(-xt.value.value,xt.value.is_float),len:xt.len,type:p}:{value:new x.type.Term(Z.value,[xt.value]),len:xt.len,type:p};X=xt}else if($t&&$t.indexOf(\"fx\")>-1){var xt=J(w,S,y,dt,z);if(xt.type!==A)return{value:new x.type.Term(Z.value,[xt.value]),len:xt.len,type:p};X=xt}}y=jt;var xt=J(w,S,y,dt,z);if(xt.type===p){y=xt.len;var Z=S[y];if(S[y]&&(S[y].name===\"atom\"&&w.__lookup_operator_classes(F,Z.value)||S[y].name===\"bar\"&&w.__lookup_operator_classes(F,\"|\"))){var an=dt,Qr=F,$t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf(\"xf\")>-1)return{value:new x.type.Term(Z.value,[xt.value]),len:++xt.len,type:p};if($t.indexOf(\"xfx\")>-1){var mr=J(w,S,y+1,an,z);return mr.type===p?{value:new x.type.Term(Z.value,[xt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if($t.indexOf(\"xfy\")>-1){var mr=J(w,S,y+1,Qr,z);return mr.type===p?{value:new x.type.Term(Z.value,[xt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if(xt.type!==A)for(;;){y=xt.len;var Z=S[y];if(Z&&Z.name===\"atom\"&&w.__lookup_operator_classes(F,Z.value)){var $t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf(\"yf\")>-1)xt={value:new x.type.Term(Z.value,[xt.value]),len:++y,type:p};else if($t.indexOf(\"yfx\")>-1){var mr=J(w,S,++y,an,z);if(mr.type===A)return mr.derived=!0,mr;y=mr.len,xt={value:new x.type.Term(Z.value,[xt.value,mr.value]),len:y,type:p}}else break}else break}}else X={type:A,value:x.error.syntax(S[xt.len-1],\"operator expected\")};return xt}return xt}function te(w,S,y,F){if(!S[y]||S[y].name===\"atom\"&&S[y].raw===\".\"&&!F&&(S[y].space||!S[y+1]||S[y+1].name!==\"l_paren\"))return{type:A,derived:!1,value:x.error.syntax(S[y-1],\"unfounded token\")};var z=S[y],X=[];if(S[y].name===\"atom\"&&S[y].raw!==\",\"){if(y++,S[y-1].space)return{type:p,len:y,value:new x.type.Term(z.value,X)};if(S[y]&&S[y].name===\"l_paren\"){if(S[y+1]&&S[y+1].name===\"r_paren\")return{type:A,derived:!0,value:x.error.syntax(S[y+1],\"argument expected\")};var Z=J(w,S,++y,\"999\",!0);if(Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:x.error.syntax(S[y]?S[y]:S[y-1],\"argument expected\",!S[y])};for(X.push(Z.value),y=Z.len;S[y]&&S[y].name===\"atom\"&&S[y].value===\",\";){if(Z=J(w,S,y+1,\"999\",!0),Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:x.error.syntax(S[y+1]?S[y+1]:S[y],\"argument expected\",!S[y+1])};X.push(Z.value),y=Z.len}if(S[y]&&S[y].name===\"r_paren\")y++;else return{type:A,derived:!0,value:x.error.syntax(S[y]?S[y]:S[y-1],\", or ) expected\",!S[y])}}return{type:p,len:y,value:new x.type.Term(z.value,X)}}return{type:A,derived:!1,value:x.error.syntax(S[y],\"term expected\")}}function le(w,S,y){if(!S[y])return{type:A,derived:!1,value:x.error.syntax(S[y-1],\"[ expected\")};if(S[y]&&S[y].name===\"l_brace\"){var F=J(w,S,++y,\"999\",!0),z=[F.value],X=void 0;if(F.type===A)return S[y]&&S[y].name===\"r_brace\"?{type:p,len:y+1,value:new x.type.Term(\"[]\",[])}:{type:A,derived:!0,value:x.error.syntax(S[y],\"] expected\")};for(y=F.len;S[y]&&S[y].name===\"atom\"&&S[y].value===\",\";){if(F=J(w,S,y+1,\"999\",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:x.error.syntax(S[y+1]?S[y+1]:S[y],\"argument expected\",!S[y+1])};z.push(F.value),y=F.len}var Z=!1;if(S[y]&&S[y].name===\"bar\"){if(Z=!0,F=J(w,S,y+1,\"999\",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:x.error.syntax(S[y+1]?S[y+1]:S[y],\"argument expected\",!S[y+1])};X=F.value,y=F.len}return S[y]&&S[y].name===\"r_brace\"?{type:p,len:y+1,value:g(z,X)}:{type:A,derived:!0,value:x.error.syntax(S[y]?S[y]:S[y-1],Z?\"] expected\":\", or | or ] expected\",!S[y])}}return{type:A,derived:!1,value:x.error.syntax(S[y],\"list expected\")}}function pe(w,S,y){var F=S[y].line,z=J(w,S,y,w.__get_max_priority(),!1),X=null,Z;if(z.type!==A)if(y=z.len,S[y]&&S[y].name===\"atom\"&&S[y].raw===\".\")if(y++,x.type.is_term(z.value)){if(z.value.indicator===\":-/2\"?(X=new x.type.Rule(z.value.args[0],Pe(z.value.args[1])),Z={value:X,len:y,type:p}):z.value.indicator===\"-->/2\"?(X=ae(new x.type.Rule(z.value.args[0],z.value.args[1]),w),X.body=Pe(X.body),Z={value:X,len:y,type:x.type.is_rule(X)?p:A}):(X=new x.type.Rule(z.value,null),Z={value:X,len:y,type:p}),X){var ie=X.singleton_variables();ie.length>0&&w.throw_warning(x.warning.singleton(ie,X.head.indicator,F))}return Z}else return{type:A,value:x.error.syntax(S[y],\"callable expected\")};else return{type:A,value:x.error.syntax(S[y]?S[y]:S[y-1],\". or operator expected\")};return z}function Ae(w,S,y){y=y||{},y.from=y.from?y.from:\"$tau-js\",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},X;F.new_text(S);var Z=0,ie=F.get_tokens(Z);do{if(ie===null||!ie[Z])break;var Se=pe(w,ie,Z);if(Se.type===A)return new H(\"throw\",[Se.value]);if(Se.value.body===null&&Se.value.head.indicator===\"?-/1\"){var Ne=new Je(w.session);Ne.add_goal(Se.value.head.args[0]),Ne.answer(function(dt){x.type.is_error(dt)?w.throw_warning(dt.args[0]):(dt===!1||dt===null)&&w.throw_warning(x.warning.failed_goal(Se.value.head.args[0],Se.len))}),Z=Se.len;var ot=!0}else if(Se.value.body===null&&Se.value.head.indicator===\":-/1\"){var ot=w.run_directive(Se.value.head.args[0]);Z=Se.len,Se.value.head.args[0].indicator===\"char_conversion/2\"&&(ie=F.get_tokens(Z),Z=0)}else{X=Se.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!w.is_multifile_predicate(X)&&(w.session.rules[X]=a(w.session.rules[X]||[],function(jt){return jt.dynamic}),z[X]=!0);var ot=w.add_rule(Se.value,y);Z=Se.len}if(!ot)return ot}while(!0);return!0}function ye(w,S){var y=new U(w);y.new_text(S);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=J(w,z,0,w.__get_max_priority(),!1);if(X.type!==A){var Z=X.len,ie=Z;if(z[Z]&&z[Z].name===\"atom\"&&z[Z].raw===\".\")w.add_goal(Pe(X.value));else{var Se=z[Z];return new H(\"throw\",[x.error.syntax(Se||z[Z-1],\". or operator expected\",!Se)])}F=X.len+1}else return new H(\"throw\",[X.value])}while(!0);return!0}function ae(w,S){w=w.rename(S);var y=S.next_free_variable(),F=we(w.body,y,S);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new H(w.head.id,w.head.args),w)}function we(w,S,y){var F;if(x.type.is_term(w)&&w.indicator===\"!/0\")return{value:w,variable:S,error:!1};if(x.type.is_term(w)&&w.indicator===\",/2\"){var z=we(w.args[0],S,y);if(z.error)return z;var X=we(w.args[1],z.variable,y);return X.error?X:{value:new H(\",\",[z.value,X.value]),variable:X.variable,error:!1}}else{if(x.type.is_term(w)&&w.indicator===\"{}/1\")return{value:w.args[0],variable:S,error:!1};if(x.type.is_empty_list(w))return{value:new H(\"true\",[]),variable:S,error:!1};if(x.type.is_list(w)){F=y.next_free_variable();for(var Z=w,ie;Z.indicator===\"./2\";)ie=Z,Z=Z.args[1];return x.type.is_variable(Z)?{value:x.error.instantiation(\"DCG\"),variable:S,error:!0}:x.type.is_empty_list(Z)?(ie.args[1]=F,{value:new H(\"=\",[S,w]),variable:F,error:!1}):{value:x.error.type(\"list\",w,\"DCG\"),variable:S,error:!0}}else return x.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([S,F]),w=new H(w.id,w.args),{value:w,variable:F,error:!1}):{value:x.error.type(\"callable\",w,\"DCG\"),variable:S,error:!0}}}function Pe(w){return x.type.is_variable(w)?new H(\"call\",[w]):x.type.is_term(w)&&[\",/2\",\";/2\",\"->/2\"].indexOf(w.indicator)!==-1?new H(w.id,[Pe(w.args[0]),Pe(w.args[1])]):w}function g(w,S){for(var y=S||new x.type.Term(\"[]\",[]),F=w.length-1;F>=0;F--)y=new x.type.Term(\".\",[w[F],y]);return y}function Ee(w,S){for(var y=w.length-1;y>=0;y--)w[y]===S&&w.splice(y,1)}function De(w){for(var S={},y=[],F=0;F<w.length;F++)w[F]in S||(y.push(w[F]),S[w[F]]=!0);return y}function ce(w,S,y,F){if(w.session.rules[y]!==null){for(var z=0;z<w.session.rules[y].length;z++)if(w.session.rules[y][z]===F){w.session.rules[y].splice(z,1),w.success(S);break}}}function ne(w){return function(S,y,F){var z=F.args[0],X=F.args.slice(1,w);if(x.type.is_variable(z))S.throw_error(x.error.instantiation(S.level));else if(!x.type.is_callable(z))S.throw_error(x.error.type(\"callable\",z,S.level));else{var Z=new H(z.id,z.args.concat(X));S.prepend([new be(y.goal.replace(Z),y.substitution,y)])}}}function ee(w){for(var S=w.length-1;S>=0;S--)if(w.charAt(S)===\"/\")return new H(\"/\",[new H(w.substring(0,S)),new ke(parseInt(w.substring(S+1)),!1)])}function Ie(w){this.id=w}function ke(w,S){this.is_float=S!==void 0?S:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var ht=0;function H(w,S,y){this.ref=y||++ht,this.id=w,this.args=S||[],this.indicator=w+\"/\"+this.args.length}var lt=0;function Re(w,S,y,F,z,X){this.id=lt++,this.stream=w,this.mode=S,this.alias=y,this.type=F!==void 0?F:\"text\",this.reposition=z!==void 0?z:!0,this.eof_action=X!==void 0?X:\"eof_code\",this.position=this.mode===\"append\"?\"end_of_stream\":0,this.output=this.mode===\"write\"||this.mode===\"append\",this.input=this.mode===\"read\"}function Qe(w){w=w||{},this.links=w}function be(w,S,y){S=S||new Qe,y=y||null,this.goal=w,this.substitution=S,this.parent=y}function _e(w,S,y){this.head=w,this.body=S,this.dynamic=y||!1}function Te(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new Je(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Re(typeof hl<\"u\"&&hl.exports?nodejs_user_input:tau_user_input,\"read\",\"user_input\",\"text\",!1,\"reset\"),user_output:new Re(typeof hl<\"u\"&&hl.exports?nodejs_user_output:tau_user_output,\"write\",\"user_output\",\"text\",!1,\"eof_code\")},this.file_system=typeof hl<\"u\"&&hl.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(S){return S.substitution},this.format_error=function(S){return S.goal},this.flag={bounded:x.flag.bounded.value,max_integer:x.flag.max_integer.value,min_integer:x.flag.min_integer.value,integer_rounding_function:x.flag.integer_rounding_function.value,char_conversion:x.flag.char_conversion.value,debug:x.flag.debug.value,max_arity:x.flag.max_arity.value,unknown:x.flag.unknown.value,double_quotes:x.flag.double_quotes.value,occurs_check:x.flag.occurs_check.value,dialect:x.flag.dialect.value,version_data:x.flag.version_data.value,nodejs:x.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{\":-\":[\"fx\",\"xfx\"],\"-->\":[\"xfx\"],\"?-\":[\"fx\"]},1100:{\";\":[\"xfy\"]},1050:{\"->\":[\"xfy\"]},1e3:{\",\":[\"xfy\"]},900:{\"\\\\+\":[\"fy\"]},700:{\"=\":[\"xfx\"],\"\\\\=\":[\"xfx\"],\"==\":[\"xfx\"],\"\\\\==\":[\"xfx\"],\"@<\":[\"xfx\"],\"@=<\":[\"xfx\"],\"@>\":[\"xfx\"],\"@>=\":[\"xfx\"],\"=..\":[\"xfx\"],is:[\"xfx\"],\"=:=\":[\"xfx\"],\"=\\\\=\":[\"xfx\"],\"<\":[\"xfx\"],\"=<\":[\"xfx\"],\">\":[\"xfx\"],\">=\":[\"xfx\"]},600:{\":\":[\"xfy\"]},500:{\"+\":[\"yfx\"],\"-\":[\"yfx\"],\"/\\\\\":[\"yfx\"],\"\\\\/\":[\"yfx\"]},400:{\"*\":[\"yfx\"],\"/\":[\"yfx\"],\"//\":[\"yfx\"],rem:[\"yfx\"],mod:[\"yfx\"],\"<<\":[\"yfx\"],\">>\":[\"yfx\"]},200:{\"**\":[\"xfx\"],\"^\":[\"xfy\"],\"-\":[\"fy\"],\"+\":[\"fy\"],\"\\\\\":[\"fy\"]}}}function Je(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level=\"top_level/0\",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function He(w,S,y){this.id=w,this.rules=S,this.exports=y,x.module[w]=this}He.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},Ie.prototype.unify=function(w,S){if(S&&e(w.variables(),this.id)!==-1&&!x.type.is_variable(w))return null;var y={};return y[this.id]=w,new Qe(y)},ke.prototype.unify=function(w,S){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new Qe:null},H.prototype.unify=function(w,S){if(x.type.is_term(w)&&this.indicator===w.indicator){for(var y=new Qe,F=0;F<this.args.length;F++){var z=x.unify(this.args[F].apply(y),w.args[F].apply(y),S);if(z===null)return null;for(var X in z.links)y.links[X]=z.links[X];y=y.apply(z)}return y}return null},Re.prototype.unify=function(w,S){return x.type.is_stream(w)&&this.id===w.id?new Qe:null},Ie.prototype.toString=function(w){return this.id},ke.prototype.toString=function(w){return this.is_float&&e(this.value.toString(),\".\")===-1?this.value+\".0\":this.value.toString()},H.prototype.toString=function(w,S,y){if(w=w||{},w.quoted=w.quoted===void 0?!0:w.quoted,w.ignore_ops=w.ignore_ops===void 0?!1:w.ignore_ops,w.numbervars=w.numbervars===void 0?!1:w.numbervars,S=S===void 0?1200:S,y=y===void 0?\"\":y,w.numbervars&&this.indicator===\"$VAR/1\"&&x.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[X]+(z!==0?z:\"\")}switch(this.indicator){case\"[]/0\":case\"{}/0\":case\"!/0\":return this.id;case\"{}/1\":return\"{\"+this.args[0].toString(w)+\"}\";case\"./2\":for(var Z=\"[\"+this.args[0].toString(w),ie=this.args[1];ie.indicator===\"./2\";)Z+=\", \"+ie.args[0].toString(w),ie=ie.args[1];return ie.indicator!==\"[]/0\"&&(Z+=\"|\"+ie.toString(w)),Z+=\"]\",Z;case\",/2\":return\"(\"+this.args[0].toString(w)+\", \"+this.args[1].toString(w)+\")\";default:var Se=this.id,Ne=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Ne===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(Se)&&Se!==\"{}\"&&Se!==\"[]\"&&(Se=\"'\"+b(Se)+\"'\"),Se+(this.args.length?\"(\"+o(this.args,function($t){return $t.toString(w)}).join(\", \")+\")\":\"\");var ot=Ne.priority>S.priority||Ne.priority===S.priority&&(Ne.class===\"xfy\"&&this.indicator!==S.indicator||Ne.class===\"yfx\"&&this.indicator!==S.indicator||this.indicator===S.indicator&&Ne.class===\"yfx\"&&y===\"right\"||this.indicator===S.indicator&&Ne.class===\"xfy\"&&y===\"left\");Ne.indicator=this.indicator;var dt=ot?\"(\":\"\",jt=ot?\")\":\"\";return this.args.length===0?\"(\"+this.id+\")\":[\"fy\",\"fx\"].indexOf(Ne.class)!==-1?dt+Se+\" \"+this.args[0].toString(w,Ne)+jt:[\"yf\",\"xf\"].indexOf(Ne.class)!==-1?dt+this.args[0].toString(w,Ne)+\" \"+Se+jt:dt+this.args[0].toString(w,Ne,\"left\")+\" \"+this.id+\" \"+this.args[1].toString(w,Ne,\"right\")+jt}},Re.prototype.toString=function(w){return\"<stream>(\"+this.id+\")\"},Qe.prototype.toString=function(w){var S=\"{\";for(var y in this.links)!this.links.hasOwnProperty(y)||(S!==\"{\"&&(S+=\", \"),S+=y+\"/\"+this.links[y].toString(w));return S+=\"}\",S},be.prototype.toString=function(w){return this.goal===null?\"<\"+this.substitution.toString(w)+\">\":\"<\"+this.goal.toString(w)+\", \"+this.substitution.toString(w)+\">\"},_e.prototype.toString=function(w){return this.body?this.head.toString(w)+\" :- \"+this.body.toString(w)+\".\":this.head.toString(w)+\".\"},Te.prototype.toString=function(w){for(var S=\"\",y=0;y<this.modules.length;y++)S+=\":- use_module(library(\"+this.modules[y]+`)).\n`;S+=`\n`;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)S+=this.rules[key][y].toString(w),S+=`\n`;return S},Ie.prototype.clone=function(){return new Ie(this.id)},ke.prototype.clone=function(){return new ke(this.value,this.is_float)},H.prototype.clone=function(){return new H(this.id,o(this.args,function(w){return w.clone()}))},Re.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},Qe.prototype.clone=function(){var w={};for(var S in this.links)!this.links.hasOwnProperty(S)||(w[S]=this.links[S].clone());return new Qe(w)},be.prototype.clone=function(){return new be(this.goal.clone(),this.substitution.clone(),this.parent)},_e.prototype.clone=function(){return new _e(this.head.clone(),this.body!==null?this.body.clone():null)},Ie.prototype.equals=function(w){return x.type.is_variable(w)&&this.id===w.id},ke.prototype.equals=function(w){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float},H.prototype.equals=function(w){if(!x.type.is_term(w)||this.indicator!==w.indicator)return!1;for(var S=0;S<this.args.length;S++)if(!this.args[S].equals(w.args[S]))return!1;return!0},Re.prototype.equals=function(w){return x.type.is_stream(w)&&this.id===w.id},Qe.prototype.equals=function(w){var S;if(!x.type.is_substitution(w))return!1;for(S in this.links)if(!!this.links.hasOwnProperty(S)&&(!w.links[S]||!this.links[S].equals(w.links[S])))return!1;for(S in w.links)if(!!w.links.hasOwnProperty(S)&&!this.links[S])return!1;return!0},be.prototype.equals=function(w){return x.type.is_state(w)&&this.goal.equals(w.goal)&&this.substitution.equals(w.substitution)&&this.parent===w.parent},_e.prototype.equals=function(w){return x.type.is_rule(w)&&this.head.equals(w.head)&&(this.body===null&&w.body===null||this.body!==null&&this.body.equals(w.body))},Ie.prototype.rename=function(w){return w.get_free_variable(this)},ke.prototype.rename=function(w){return this},H.prototype.rename=function(w){return new H(this.id,o(this.args,function(S){return S.rename(w)}))},Re.prototype.rename=function(w){return this},_e.prototype.rename=function(w){return new _e(this.head.rename(w),this.body!==null?this.body.rename(w):null)},Ie.prototype.variables=function(){return[this.id]},ke.prototype.variables=function(){return[]},H.prototype.variables=function(){return[].concat.apply([],o(this.args,function(w){return w.variables()}))},Re.prototype.variables=function(){return[]},_e.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},Ie.prototype.apply=function(w){return w.lookup(this.id)?w.lookup(this.id):this},ke.prototype.apply=function(w){return this},H.prototype.apply=function(w){if(this.indicator===\"./2\"){for(var S=[],y=this;y.indicator===\"./2\";)S.push(y.args[0].apply(w)),y=y.args[1];for(var F=y.apply(w),z=S.length-1;z>=0;z--)F=new H(\".\",[S[z],F]);return F}return new H(this.id,o(this.args,function(X){return X.apply(w)}),this.ref)},Re.prototype.apply=function(w){return this},_e.prototype.apply=function(w){return new _e(this.head.apply(w),this.body!==null?this.body.apply(w):null)},Qe.prototype.apply=function(w){var S,y={};for(S in this.links)!this.links.hasOwnProperty(S)||(y[S]=this.links[S].apply(w));return new Qe(y)},H.prototype.select=function(){for(var w=this;w.indicator===\",/2\";)w=w.args[0];return w},H.prototype.replace=function(w){return this.indicator===\",/2\"?this.args[0].indicator===\",/2\"?new H(\",\",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new H(\",\",[w,this.args[1]]):w},H.prototype.search=function(w){if(x.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var S=0;S<this.args.length;S++)if(x.type.is_term(this.args[S])&&this.args[S].search(w))return!0;return!1},Te.prototype.get_current_input=function(){return this.current_input},Je.prototype.get_current_input=function(){return this.session.get_current_input()},Te.prototype.get_current_output=function(){return this.current_output},Je.prototype.get_current_output=function(){return this.session.get_current_output()},Te.prototype.set_current_input=function(w){this.current_input=w},Je.prototype.set_current_input=function(w){return this.session.set_current_input(w)},Te.prototype.set_current_output=function(w){this.current_input=w},Je.prototype.set_current_output=function(w){return this.session.set_current_output(w)},Te.prototype.get_stream_by_alias=function(w){return this.streams[w]},Je.prototype.get_stream_by_alias=function(w){return this.session.get_stream_by_alias(w)},Te.prototype.file_system_open=function(w,S,y){return this.file_system.open(w,S,y)},Je.prototype.file_system_open=function(w,S,y){return this.session.file_system_open(w,S,y)},Te.prototype.get_char_conversion=function(w){return this.__char_conversion[w]||w},Je.prototype.get_char_conversion=function(w){return this.session.get_char_conversion(w)},Te.prototype.parse=function(w){return this.thread.parse(w)},Je.prototype.parse=function(w){var S=new U(this);S.new_text(w);var y=S.get_tokens();if(y===null)return!1;var F=J(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},Te.prototype.get_flag=function(w){return this.flag[w]},Je.prototype.get_flag=function(w){return this.session.get_flag(w)},Te.prototype.add_rule=function(w,S){return S=S||{},S.from=S.from?S.from:\"$tau-js\",this.src_predicates[w.head.indicator]=S.from,this.rules[w.head.indicator]||(this.rules[w.head.indicator]=[]),this.rules[w.head.indicator].push(w),this.public_predicates.hasOwnProperty(w.head.indicator)||(this.public_predicates[w.head.indicator]=!1),!0},Je.prototype.add_rule=function(w,S){return this.session.add_rule(w,S)},Te.prototype.run_directive=function(w){this.thread.run_directive(w)},Je.prototype.run_directive=function(w){return x.type.is_directive(w)?(x.directive[w.indicator](this,w),!0):!1},Te.prototype.__get_max_priority=function(){return\"1200\"},Je.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},Te.prototype.__get_next_priority=function(w){var S=0;w=parseInt(w);for(var y in this.__operators)if(!!this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>S&&F<w&&(S=F)}return S.toString()},Je.prototype.__get_next_priority=function(w){return this.session.__get_next_priority(w)},Te.prototype.__lookup_operator_classes=function(w,S){return this.__operators.hasOwnProperty(w)&&this.__operators[w][S]instanceof Array&&this.__operators[w][S]||!1},Je.prototype.__lookup_operator_classes=function(w,S){return this.session.__lookup_operator_classes(w,S)},Te.prototype.lookup_operator=function(w,S){for(var y in this.__operators)if(this.__operators[y][w]){for(var F=0;F<this.__operators[y][w].length;F++)if(S===0||this.__operators[y][w][F].length===S+1)return{priority:y,class:this.__operators[y][w][F]}}return null},Je.prototype.lookup_operator=function(w,S){return this.session.lookup_operator(w,S)},Te.prototype.throw_warning=function(w){this.thread.throw_warning(w)},Je.prototype.throw_warning=function(w){this.warnings.push(w)},Te.prototype.get_warnings=function(){return this.thread.get_warnings()},Je.prototype.get_warnings=function(){return this.warnings},Te.prototype.add_goal=function(w,S){this.thread.add_goal(w,S)},Je.prototype.add_goal=function(w,S,y){y=y||null,S===!0&&(this.points=[]);for(var F=w.variables(),z={},X=0;X<F.length;X++)z[F[X]]=new Ie(F[X]);this.points.push(new be(w,new Qe(z),y))},Te.prototype.consult=function(w,S){return this.thread.consult(w,S)},Je.prototype.consult=function(w,S){var y=\"\";if(typeof w==\"string\"){y=w;var F=y.length;if(y.substring(F-3,F)===\".pl\"&&document.getElementById(y)){var z=document.getElementById(y),X=z.getAttribute(\"type\");X!==null&&X.replace(/ /g,\"\").toLowerCase()===\"text/prolog\"&&(y=z.text)}}else if(w.nodeName)switch(w.nodeName.toLowerCase()){case\"input\":case\"textarea\":y=w.value;break;default:y=w.innerHTML;break}else return!1;return this.warnings=[],Ae(this,y,S)},Te.prototype.query=function(w){return this.thread.query(w)},Je.prototype.query=function(w){return this.points=[],this.debugger_points=[],ye(this,w)},Te.prototype.head_point=function(){return this.thread.head_point()},Je.prototype.head_point=function(){return this.points[this.points.length-1]},Te.prototype.get_free_variable=function(w){return this.thread.get_free_variable(w)},Je.prototype.get_free_variable=function(w){var S=[];if(w.id===\"_\"||this.session.renamed_variables[w.id]===void 0){for(this.session.rename++,this.points.length>0&&(S=this.head_point().substitution.domain());e(S,x.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id===\"_\")return new Ie(x.format_variable(this.session.rename));this.session.renamed_variables[w.id]=x.format_variable(this.session.rename)}return new Ie(this.session.renamed_variables[w.id])},Te.prototype.next_free_variable=function(){return this.thread.next_free_variable()},Je.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,x.format_variable(this.session.rename))!==-1;)this.session.rename++;return new Ie(x.format_variable(this.session.rename))},Te.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},Je.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Te.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},Je.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Te.prototype.prepend=function(w){return this.thread.prepend(w)},Je.prototype.prepend=function(w){for(var S=w.length-1;S>=0;S--)this.points.push(w[S])},Te.prototype.success=function(w,S){return this.thread.success(w,S)},Je.prototype.success=function(w,y){var y=typeof y>\"u\"?w:y;this.prepend([new be(w.goal.replace(null),w.substitution,y)])},Te.prototype.throw_error=function(w){return this.thread.throw_error(w)},Je.prototype.throw_error=function(w){this.prepend([new be(new H(\"throw\",[w]),new Qe,null,null)])},Te.prototype.step_rule=function(w,S){return this.thread.step_rule(w,S)},Je.prototype.step_rule=function(w,S){var y=S.indicator;if(w===\"user\"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:e(this.session.modules,w)===-1?[]:[w],z=0;z<F.length;z++){var X=x.module[F[z]];if(X.rules.hasOwnProperty(y)&&(X.rules.hasOwnProperty(this.level)||X.exports_predicate(y)))return x.module[F[z]].rules[y]}return null},Te.prototype.step=function(){return this.thread.step()},Je.prototype.step=function(){if(this.points.length!==0){var w=!1,S=this.points.pop();if(this.debugger&&this.debugger_states.push(S),x.type.is_term(S.goal)){var y=S.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var X=S;X.parent!==null&&X.parent.goal.search(y);)X=X.parent;if(this.level=X.parent===null?\"top_level/0\":X.parent.goal.select().indicator,x.type.is_term(y)&&y.indicator===\":/2\"&&(F=y.args[0].id,y=y.args[1]),F===null&&x.type.is_builtin(y))this.__call_indicator=y.indicator,w=x.predicate[y.indicator](this,S,y);else{var Z=this.step_rule(F,y);if(Z===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag(\"unknown\").id===\"error\"?this.throw_error(x.error.existence(\"procedure\",y.indicator,this.level)):this.get_flag(\"unknown\").id===\"warning\"&&this.throw_warning(\"unknown procedure \"+y.indicator+\" (from \"+this.level+\")\"));else if(Z instanceof Function)w=Z(this,S,y);else{for(var ie in Z)if(!!Z.hasOwnProperty(ie)){var Se=Z[ie];this.session.renamed_variables={},Se=Se.rename(this);var Ne=this.get_flag(\"occurs_check\").indicator===\"true/0\",ot=new be,dt=x.unify(y,Se.head,Ne);dt!==null&&(ot.goal=S.goal.replace(Se.body),ot.goal!==null&&(ot.goal=ot.goal.apply(dt)),ot.substitution=S.substitution.apply(dt),ot.parent=S,z.push(ot))}this.prepend(z)}}}}else x.type.is_variable(S.goal)?this.throw_error(x.error.instantiation(this.level)):this.throw_error(x.error.type(\"callable\",S.goal,this.level));return w}},Te.prototype.answer=function(w){return this.thread.answer(w)},Je.prototype.answer=function(w){w=w||function(S){},this.__calls.push(w),!(this.__calls.length>1)&&this.again()},Te.prototype.answers=function(w,S,y){return this.thread.answers(w,S,y)},Je.prototype.answers=function(w,S,y){var F=S||1e3,z=this;if(S<=0){y&&y();return}this.answer(function(X){w(X),X!==!1?setTimeout(function(){z.answers(w,S-1,y)},1):y&&y()})},Te.prototype.again=function(w){return this.thread.again(w)},Je.prototype.again=function(w){for(var S,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!x.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):x.type.is_error(this.head_point().goal)?(S=this.session.format_error(this.points.pop()),this.points=[],z(S)):(this.debugger&&this.debugger_states.push(this.head_point()),S=this.session.format_success(this.points.pop()),z(S))}},Te.prototype.unfold=function(w){if(w.body===null)return!1;var S=w.head,y=w.body,F=y.select(),z=new Je(this),X=[];z.add_goal(F),z.step();for(var Z=z.points.length-1;Z>=0;Z--){var ie=z.points[Z],Se=S.apply(ie.substitution),Ne=y.replace(ie.goal);Ne!==null&&(Ne=Ne.apply(ie.substitution)),X.push(new _e(Se,Ne))}var ot=this.rules[S.indicator],dt=e(ot,w);return X.length>0&&dt!==-1?(ot.splice.apply(ot,[dt,1].concat(X)),!0):!1},Je.prototype.unfold=function(w){return this.session.unfold(w)},Ie.prototype.interpret=function(w){return x.error.instantiation(w.level)},ke.prototype.interpret=function(w){return this},H.prototype.interpret=function(w){return x.type.is_unitary_list(this)?this.args[0].interpret(w):x.operate(w,this)},Ie.prototype.compare=function(w){return this.id<w.id?-1:this.id>w.id?1:0},ke.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.value<w.value||this.value===w.value&&this.is_float&&!w.is_float)return-1;if(this.value>w.value)return 1},H.prototype.compare=function(w){if(this.args.length<w.args.length||this.args.length===w.args.length&&this.id<w.id)return-1;if(this.args.length>w.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var S=0;S<this.args.length;S++){var y=x.compare(this.args[S],w.args[S]);if(y!==0)return y}return 0},Qe.prototype.lookup=function(w){return this.links[w]?this.links[w]:null},Qe.prototype.filter=function(w){var S={};for(var y in this.links)if(!!this.links.hasOwnProperty(y)){var F=this.links[y];w(y,F)&&(S[y]=F)}return new Qe(S)},Qe.prototype.exclude=function(w){var S={};for(var y in this.links)!this.links.hasOwnProperty(y)||e(w,y)===-1&&(S[y]=this.links[y]);return new Qe(S)},Qe.prototype.add=function(w,S){this.links[w]=S},Qe.prototype.domain=function(w){var S=w===!0?function(z){return z}:function(z){return new Ie(z)},y=[];for(var F in this.links)y.push(S(F));return y},Ie.prototype.compile=function(){return'new pl.type.Var(\"'+this.id.toString()+'\")'},ke.prototype.compile=function(){return\"new pl.type.Num(\"+this.value.toString()+\", \"+this.is_float.toString()+\")\"},H.prototype.compile=function(){return'new pl.type.Term(\"'+this.id.replace(/\"/g,'\\\\\"')+'\", ['+o(this.args,function(w){return w.compile()})+\"])\"},_e.prototype.compile=function(){return\"new pl.type.Rule(\"+this.head.compile()+\", \"+(this.body===null?\"null\":this.body.compile())+\")\"},Te.prototype.compile=function(){var w,S=[],y;for(var F in this.rules)if(!!this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],w='\"'+F+'\": [';for(var X=0;X<z.length;X++)y.push(z[X].compile());w+=y.join(),w+=\"]\",S.push(w)}return\"{\"+S.join()+\"};\"},Ie.prototype.toJavaScript=function(){},ke.prototype.toJavaScript=function(){return this.value},H.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!==\"[]/0\")return this.id;if(x.type.is_list(this)){for(var w=[],S=this,y;S.indicator===\"./2\";){if(y=S.args[0].toJavaScript(),y===void 0)return;w.push(y),S=S.args[1]}if(S.indicator===\"[]/0\")return w}},_e.prototype.singleton_variables=function(){var w=this.head.variables(),S={},y=[];this.body!==null&&(w=w.concat(this.body.variables()));for(var F=0;F<w.length;F++)S[w[F]]===void 0&&(S[w[F]]=0),S[w[F]]++;for(var z in S)z!==\"_\"&&S[z]===1&&y.push(z);return y};var x={__env:typeof hl<\"u\"&&hl.exports?global:window,module:{},version:t,parser:{tokenizer:U,expression:J},utils:{str_indicator:ee,codePointAt:n,fromCodePoint:u},statistics:{getCountTerms:function(){return ht}},fromJavaScript:{test:{boolean:function(w){return w===!0||w===!1},number:function(w){return typeof w==\"number\"},string:function(w){return typeof w==\"string\"},list:function(w){return w instanceof Array},variable:function(w){return w===void 0},any:function(w){return!0}},conversion:{boolean:function(w){return new H(w?\"true\":\"false\",[])},number:function(w){return new ke(w,w%1!==0)},string:function(w){return new H(w,[])},list:function(w){for(var S=[],y,F=0;F<w.length;F++){if(y=x.fromJavaScript.apply(w[F]),y===void 0)return;S.push(y)}return g(S)},variable:function(w){return new Ie(\"_\")},any:function(w){}},apply:function(w){for(var S in x.fromJavaScript.test)if(S!==\"any\"&&x.fromJavaScript.test[S](w))return x.fromJavaScript.conversion[S](w);return x.fromJavaScript.conversion.any(w)}},type:{Var:Ie,Num:ke,Term:H,Rule:_e,State:be,Stream:Re,Module:He,Thread:Je,Session:Te,Substitution:Qe,order:[Ie,ke,H,Re],compare:function(w,S){var y=e(x.type.order,w.constructor),F=e(x.type.order,S.constructor);if(y<F)return-1;if(y>F)return 1;if(w.constructor===ke){if(w.is_float&&S.is_float)return 0;if(w.is_float)return-1;if(S.is_float)return 1}return 0},is_substitution:function(w){return w instanceof Qe},is_state:function(w){return w instanceof be},is_rule:function(w){return w instanceof _e},is_variable:function(w){return w instanceof Ie},is_stream:function(w){return w instanceof Re},is_anonymous_var:function(w){return w instanceof Ie&&w.id===\"_\"},is_callable:function(w){return w instanceof H},is_number:function(w){return w instanceof ke},is_integer:function(w){return w instanceof ke&&!w.is_float},is_float:function(w){return w instanceof ke&&w.is_float},is_term:function(w){return w instanceof H},is_atom:function(w){return w instanceof H&&w.args.length===0},is_ground:function(w){if(w instanceof Ie)return!1;if(w instanceof H){for(var S=0;S<w.args.length;S++)if(!x.type.is_ground(w.args[S]))return!1}return!0},is_atomic:function(w){return w instanceof H&&w.args.length===0||w instanceof ke},is_compound:function(w){return w instanceof H&&w.args.length>0},is_list:function(w){return w instanceof H&&(w.indicator===\"[]/0\"||w.indicator===\"./2\")},is_empty_list:function(w){return w instanceof H&&w.indicator===\"[]/0\"},is_non_empty_list:function(w){return w instanceof H&&w.indicator===\"./2\"},is_fully_list:function(w){for(;w instanceof H&&w.indicator===\"./2\";)w=w.args[1];return w instanceof Ie||w instanceof H&&w.indicator===\"[]/0\"},is_instantiated_list:function(w){for(;w instanceof H&&w.indicator===\"./2\";)w=w.args[1];return w instanceof H&&w.indicator===\"[]/0\"},is_unitary_list:function(w){return w instanceof H&&w.indicator===\"./2\"&&w.args[1]instanceof H&&w.args[1].indicator===\"[]/0\"},is_character:function(w){return w instanceof H&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof ke&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof ke&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof H&&x.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof H&&x.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof H&&x.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof H&&w.indicator===\"throw/1\"},is_predicate_indicator:function(w){return w instanceof H&&w.indicator===\"//2\"&&w.args[0]instanceof H&&w.args[0].args.length===0&&w.args[1]instanceof ke&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof H&&w.args.length===0&&x.flag[w.id]!==void 0},is_value_flag:function(w,S){if(!x.type.is_flag(w))return!1;for(var y in x.flag[w.id].allowed)if(!!x.flag[w.id].allowed.hasOwnProperty(y)&&x.flag[w.id].allowed[y].equals(S))return!0;return!1},is_io_mode:function(w){return x.type.is_atom(w)&&[\"read\",\"write\",\"append\"].indexOf(w.id)!==-1},is_stream_option:function(w){return x.type.is_term(w)&&(w.indicator===\"alias/1\"&&x.type.is_atom(w.args[0])||w.indicator===\"reposition/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"type/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\")||w.indicator===\"eof_action/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))},is_stream_position:function(w){return x.type.is_integer(w)&&w.value>=0||x.type.is_atom(w)&&(w.id===\"end_of_stream\"||w.id===\"past_end_of_stream\")},is_stream_property:function(w){return x.type.is_term(w)&&(w.indicator===\"input/0\"||w.indicator===\"output/0\"||w.indicator===\"alias/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator===\"file_name/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator===\"position/1\"&&(x.type.is_variable(w.args[0])||x.type.is_stream_position(w.args[0]))||w.indicator===\"reposition/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))||w.indicator===\"type/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\"))||w.indicator===\"mode/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"read\"||w.args[0].id===\"write\"||w.args[0].id===\"append\"))||w.indicator===\"eof_action/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))||w.indicator===\"end_of_stream/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"at\"||w.args[0].id===\"past\"||w.args[0].id===\"not\")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return x.type.is_term(w)&&[\"variables/1\",\"variable_names/1\",\"singletons/1\"].indexOf(w.indicator)!==-1},is_write_option:function(w){return x.type.is_term(w)&&(w.indicator===\"quoted/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"ignore_ops/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"numbervars/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))},is_close_option:function(w){return x.type.is_term(w)&&w.indicator===\"force/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")},is_modifiable_flag:function(w){return x.type.is_flag(w)&&x.flag[w.id].changeable},is_module:function(w){return w instanceof H&&w.indicator===\"library/1\"&&w.args[0]instanceof H&&w.args[0].args.length===0&&x.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{\"e/0\":{type_args:null,type_result:!0,fn:function(w){return Math.E}},\"pi/0\":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},\"tau/0\":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},\"epsilon/0\":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},\"+/1\":{type_args:null,type_result:null,fn:function(w,S){return w}},\"-/1\":{type_args:null,type_result:null,fn:function(w,S){return-w}},\"\\\\/1\":{type_args:!1,type_result:!1,fn:function(w,S){return~w}},\"abs/1\":{type_args:null,type_result:null,fn:function(w,S){return Math.abs(w)}},\"sign/1\":{type_args:null,type_result:null,fn:function(w,S){return Math.sign(w)}},\"float_integer_part/1\":{type_args:!0,type_result:!1,fn:function(w,S){return parseInt(w)}},\"float_fractional_part/1\":{type_args:!0,type_result:!0,fn:function(w,S){return w-parseInt(w)}},\"float/1\":{type_args:null,type_result:!0,fn:function(w,S){return parseFloat(w)}},\"floor/1\":{type_args:!0,type_result:!1,fn:function(w,S){return Math.floor(w)}},\"truncate/1\":{type_args:!0,type_result:!1,fn:function(w,S){return parseInt(w)}},\"round/1\":{type_args:!0,type_result:!1,fn:function(w,S){return Math.round(w)}},\"ceiling/1\":{type_args:!0,type_result:!1,fn:function(w,S){return Math.ceil(w)}},\"sin/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.sin(w)}},\"cos/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.cos(w)}},\"tan/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.tan(w)}},\"asin/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.asin(w)}},\"acos/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.acos(w)}},\"atan/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.atan(w)}},\"atan2/2\":{type_args:null,type_result:!0,fn:function(w,S,y){return Math.atan2(w,S)}},\"exp/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.exp(w)}},\"sqrt/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.sqrt(w)}},\"log/1\":{type_args:null,type_result:!0,fn:function(w,S){return w>0?Math.log(w):x.error.evaluation(\"undefined\",S.__call_indicator)}},\"+/2\":{type_args:null,type_result:null,fn:function(w,S,y){return w+S}},\"-/2\":{type_args:null,type_result:null,fn:function(w,S,y){return w-S}},\"*/2\":{type_args:null,type_result:null,fn:function(w,S,y){return w*S}},\"//2\":{type_args:null,type_result:!0,fn:function(w,S,y){return S?w/S:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"///2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return S?parseInt(w/S):x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"**/2\":{type_args:null,type_result:!0,fn:function(w,S,y){return Math.pow(w,S)}},\"^/2\":{type_args:null,type_result:null,fn:function(w,S,y){return Math.pow(w,S)}},\"<</2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w<<S}},\">>/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w>>S}},\"/\\\\/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w&S}},\"\\\\//2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w|S}},\"xor/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w^S}},\"rem/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return S?w%S:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"mod/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return S?w-parseInt(w/S)*S:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"max/2\":{type_args:null,type_result:null,fn:function(w,S,y){return Math.max(w,S)}},\"min/2\":{type_args:null,type_result:null,fn:function(w,S,y){return Math.min(w,S)}}}},directive:{\"dynamic/1\":function(w,S){var y=S.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(S.indicator));else if(!x.type.is_compound(y)||y.indicator!==\"//2\")w.throw_error(x.error.type(\"predicate_indicator\",y,S.indicator));else if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(S.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type(\"atom\",y.args[0],S.indicator));else if(!x.type.is_integer(y.args[1]))w.throw_error(x.error.type(\"integer\",y.args[1],S.indicator));else{var F=S.args[0].args[0].id+\"/\"+S.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},\"multifile/1\":function(w,S){var y=S.args[0];x.type.is_variable(y)?w.throw_error(x.error.instantiation(S.indicator)):!x.type.is_compound(y)||y.indicator!==\"//2\"?w.throw_error(x.error.type(\"predicate_indicator\",y,S.indicator)):x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1])?w.throw_error(x.error.instantiation(S.indicator)):x.type.is_atom(y.args[0])?x.type.is_integer(y.args[1])?w.session.multifile_predicates[S.args[0].args[0].id+\"/\"+S.args[0].args[1].value]=!0:w.throw_error(x.error.type(\"integer\",y.args[1],S.indicator)):w.throw_error(x.error.type(\"atom\",y.args[0],S.indicator))},\"set_prolog_flag/2\":function(w,S){var y=S.args[0],F=S.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(S.indicator)):x.type.is_atom(y)?x.type.is_flag(y)?x.type.is_value_flag(y,F)?x.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(x.error.permission(\"modify\",\"flag\",y)):w.throw_error(x.error.domain(\"flag_value\",new H(\"+\",[y,F]),S.indicator)):w.throw_error(x.error.domain(\"prolog_flag\",y,S.indicator)):w.throw_error(x.error.type(\"atom\",y,S.indicator))},\"use_module/1\":function(w,S){var y=S.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(S.indicator));else if(!x.type.is_term(y))w.throw_error(x.error.type(\"term\",y,S.indicator));else if(x.type.is_module(y)){var F=y.args[0].id;e(w.session.modules,F)===-1&&w.session.modules.push(F)}},\"char_conversion/2\":function(w,S){var y=S.args[0],F=S.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(S.indicator)):x.type.is_character(y)?x.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(x.error.type(\"character\",F,S.indicator)):w.throw_error(x.error.type(\"character\",y,S.indicator))},\"op/3\":function(w,S){var y=S.args[0],F=S.args[1],z=S.args[2];if(x.type.is_variable(y)||x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(S.indicator));else if(!x.type.is_integer(y))w.throw_error(x.error.type(\"integer\",y,S.indicator));else if(!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,S.indicator));else if(!x.type.is_atom(z))w.throw_error(x.error.type(\"atom\",z,S.indicator));else if(y.value<0||y.value>1200)w.throw_error(x.error.domain(\"operator_priority\",y,S.indicator));else if(z.id===\",\")w.throw_error(x.error.permission(\"modify\",\"operator\",z,S.indicator));else if(z.id===\"|\"&&(y.value<1001||F.id.length!==3))w.throw_error(x.error.permission(\"modify\",\"operator\",z,S.indicator));else if([\"fy\",\"fx\",\"yf\",\"xf\",\"xfx\",\"yfx\",\"xfy\"].indexOf(F.id)===-1)w.throw_error(x.error.domain(\"operator_specifier\",F,S.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var Z in w.session.__operators)if(!!w.session.__operators.hasOwnProperty(Z)){var ie=w.session.__operators[Z][z.id];ie&&(e(ie,\"fx\")!==-1&&(X.prefix={priority:Z,type:\"fx\"}),e(ie,\"fy\")!==-1&&(X.prefix={priority:Z,type:\"fy\"}),e(ie,\"xf\")!==-1&&(X.postfix={priority:Z,type:\"xf\"}),e(ie,\"yf\")!==-1&&(X.postfix={priority:Z,type:\"yf\"}),e(ie,\"xfx\")!==-1&&(X.infix={priority:Z,type:\"xfx\"}),e(ie,\"xfy\")!==-1&&(X.infix={priority:Z,type:\"xfy\"}),e(ie,\"yfx\")!==-1&&(X.infix={priority:Z,type:\"yfx\"}))}var Se;switch(F.id){case\"fy\":case\"fx\":Se=\"prefix\";break;case\"yf\":case\"xf\":Se=\"postfix\";break;default:Se=\"infix\";break}if(((X.prefix&&Se===\"prefix\"||X.postfix&&Se===\"postfix\"||X.infix&&Se===\"infix\")&&X[Se].type!==F.id||X.infix&&Se===\"postfix\"||X.postfix&&Se===\"infix\")&&y.value!==0)w.throw_error(x.error.permission(\"create\",\"operator\",z,S.indicator));else return X[Se]&&(Ee(w.session.__operators[X[Se].priority][z.id],F.id),w.session.__operators[X[Se].priority][z.id].length===0&&delete w.session.__operators[X[Se].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{\"op/3\":function(w,S,y){x.directive[\"op/3\"](w,y)&&w.success(S)},\"current_op/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=[];for(var ie in w.session.__operators)for(var Se in w.session.__operators[ie])for(var Ne=0;Ne<w.session.__operators[ie][Se].length;Ne++)Z.push(new be(S.goal.replace(new H(\",\",[new H(\"=\",[new ke(ie,!1),F]),new H(\",\",[new H(\"=\",[new H(w.session.__operators[ie][Se][Ne],[]),z]),new H(\"=\",[new H(Se,[]),X])])])),S.substitution,S));w.prepend(Z)},\";/2\":function(w,S,y){if(x.type.is_term(y.args[0])&&y.args[0].indicator===\"->/2\"){var F=w.points,z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(Ne){return Ne.substitution},w.session.format_error=function(Ne){return Ne.goal},w.points=[new be(y.args[0].args[0],S.substitution,S)];var Z=function(Ne){w.points=F,w.session.format_success=z,w.session.format_error=X,Ne===!1?w.prepend([new be(S.goal.replace(y.args[1]),S.substitution,S)]):x.type.is_error(Ne)?w.throw_error(Ne.args[0]):Ne===null?(w.prepend([S]),w.__calls.shift()(null)):w.prepend([new be(S.goal.replace(y.args[0].args[1]).apply(Ne),S.substitution.apply(Ne),S)])};w.__calls.unshift(Z)}else{var ie=new be(S.goal.replace(y.args[0]),S.substitution,S),Se=new be(S.goal.replace(y.args[1]),S.substitution,S);w.prepend([ie,Se])}},\"!/0\":function(w,S,y){var F,z,X=[];for(F=S,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var Z=F.goal.select();if(Z&&Z.id===\"call\"&&Z.search(y)){F=z;break}}for(var ie=w.points.length-1;ie>=0;ie--){for(var Se=w.points[ie],Ne=Se.parent;Ne!==null&&Ne!==F.parent;)Ne=Ne.parent;Ne===null&&Ne!==F.parent&&X.push(Se)}w.points=X.reverse(),w.success(S)},\"\\\\+/1\":function(w,S,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(w.level)):x.type.is_callable(F)?w.prepend([new be(S.goal.replace(new H(\",\",[new H(\",\",[new H(\"call\",[F]),new H(\"!\",[])]),new H(\"fail\",[])])),S.substitution,S),new be(S.goal.replace(null),S.substitution,S)]):w.throw_error(x.error.type(\"callable\",F,w.level))},\"->/2\":function(w,S,y){var F=S.goal.replace(new H(\",\",[y.args[0],new H(\",\",[new H(\"!\"),y.args[1]])]));w.prepend([new be(F,S.substitution,S)])},\"fail/0\":function(w,S,y){},\"false/0\":function(w,S,y){},\"true/0\":function(w,S,y){w.success(S)},\"call/1\":ne(1),\"call/2\":ne(2),\"call/3\":ne(3),\"call/4\":ne(4),\"call/5\":ne(5),\"call/6\":ne(6),\"call/7\":ne(7),\"call/8\":ne(8),\"once/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"call\",[F]),new H(\"!\",[])])),S.substitution,S)])},\"forall/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new be(S.goal.replace(new H(\"\\\\+\",[new H(\",\",[new H(\"call\",[F]),new H(\"\\\\+\",[new H(\"call\",[z])])])])),S.substitution,S)])},\"repeat/0\":function(w,S,y){w.prepend([new be(S.goal.replace(null),S.substitution,S),S])},\"throw/1\":function(w,S,y){x.type.is_variable(y.args[0])?w.throw_error(x.error.instantiation(w.level)):w.throw_error(y.args[0])},\"catch/3\":function(w,S,y){var F=w.points;w.points=[],w.prepend([new be(y.args[0],S.substitution,S)]);var z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(ie){return ie.substitution},w.session.format_error=function(ie){return ie.goal};var Z=function(ie){var Se=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=X,x.type.is_error(ie)){for(var Ne=[],ot=w.points.length-1;ot>=0;ot--){for(var $t=w.points[ot],dt=$t.parent;dt!==null&&dt!==S.parent;)dt=dt.parent;dt===null&&dt!==S.parent&&Ne.push($t)}w.points=Ne;var jt=w.get_flag(\"occurs_check\").indicator===\"true/0\",$t=new be,xt=x.unify(ie.args[0],y.args[1],jt);xt!==null?($t.substitution=S.substitution.apply(xt),$t.goal=S.goal.replace(y.args[2]).apply(xt),$t.parent=S,w.prepend([$t])):w.throw_error(ie.args[0])}else if(ie!==!1){for(var an=ie===null?[]:[new be(S.goal.apply(ie).replace(null),S.substitution.apply(ie),S)],Qr=[],ot=Se.length-1;ot>=0;ot--){Qr.push(Se[ot]);var mr=Se[ot].goal!==null?Se[ot].goal.select():null;if(x.type.is_term(mr)&&mr.indicator===\"!/0\")break}var xr=o(Qr,function(Wr){return Wr.goal===null&&(Wr.goal=new H(\"true\",[])),Wr=new be(S.goal.replace(new H(\"catch\",[Wr.goal,y.args[1],y.args[2]])),S.substitution.apply(Wr.substitution),Wr.parent),Wr.exclude=y.args[0].variables(),Wr}).reverse();w.prepend(xr),w.prepend(an),ie===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift(Z)},\"=/2\":function(w,S,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=new be,X=x.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=S.goal.apply(X).replace(null),z.substitution=S.substitution.apply(X),z.parent=S,w.prepend([z]))},\"unify_with_occurs_check/2\":function(w,S,y){var F=new be,z=x.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=S.goal.apply(z).replace(null),F.substitution=S.substitution.apply(z),F.parent=S,w.prepend([F]))},\"\\\\=/2\":function(w,S,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=x.unify(y.args[0],y.args[1],F);z===null&&w.success(S)},\"subsumes_term/2\":function(w,S,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=x.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(S)},\"findall/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(z))w.throw_error(x.error.type(\"callable\",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else{var Z=w.next_free_variable(),ie=new H(\",\",[z,new H(\"=\",[Z,F])]),Se=w.points,Ne=w.session.limit,ot=w.session.format_success;w.session.format_success=function($t){return $t.substitution},w.add_goal(ie,!0,S);var dt=[],jt=function($t){if($t!==!1&&$t!==null&&!x.type.is_error($t))w.__calls.unshift(jt),dt.push($t.links[Z.id]),w.session.limit=w.current_limit;else if(w.points=Se,w.session.limit=Ne,w.session.format_success=ot,x.type.is_error($t))w.throw_error($t.args[0]);else if(w.current_limit>0){for(var xt=new H(\"[]\"),an=dt.length-1;an>=0;an--)xt=new H(\".\",[dt[an],xt]);w.prepend([new be(S.goal.replace(new H(\"=\",[X,xt])),S.substitution,S)])}};w.__calls.unshift(jt)}},\"bagof/3\":function(w,S,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))w.throw_error(x.error.type(\"callable\",X,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type(\"list\",Z,y.indicator));else{var ie=w.next_free_variable(),Se;X.indicator===\"^/2\"?(Se=X.args[0].variables(),X=X.args[1]):Se=[],Se=Se.concat(z.variables());for(var Ne=X.variables().filter(function(xr){return e(Se,xr)===-1}),ot=new H(\"[]\"),dt=Ne.length-1;dt>=0;dt--)ot=new H(\".\",[new Ie(Ne[dt]),ot]);var jt=new H(\",\",[X,new H(\"=\",[ie,new H(\",\",[ot,z])])]),$t=w.points,xt=w.session.limit,an=w.session.format_success;w.session.format_success=function(xr){return xr.substitution},w.add_goal(jt,!0,S);var Qr=[],mr=function(xr){if(xr!==!1&&xr!==null&&!x.type.is_error(xr)){w.__calls.unshift(mr);var Wr=!1,Vn=xr.links[ie.id].args[0],Ns=xr.links[ie.id].args[1];for(var Ri in Qr)if(!!Qr.hasOwnProperty(Ri)){var ps=Qr[Ri];if(ps.variables.equals(Vn)){ps.answers.push(Ns),Wr=!0;break}}Wr||Qr.push({variables:Vn,answers:[Ns]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=xt,w.session.format_success=an,x.type.is_error(xr))w.throw_error(xr.args[0]);else if(w.current_limit>0){for(var io=[],Si=0;Si<Qr.length;Si++){xr=Qr[Si].answers;for(var Ls=new H(\"[]\"),so=xr.length-1;so>=0;so--)Ls=new H(\".\",[xr[so],Ls]);io.push(new be(S.goal.replace(new H(\",\",[new H(\"=\",[ot,Qr[Si].variables]),new H(\"=\",[Z,Ls])])),S.substitution,S))}w.prepend(io)}};w.__calls.unshift(mr)}},\"setof/3\":function(w,S,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))w.throw_error(x.error.type(\"callable\",X,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type(\"list\",Z,y.indicator));else{var ie=w.next_free_variable(),Se;X.indicator===\"^/2\"?(Se=X.args[0].variables(),X=X.args[1]):Se=[],Se=Se.concat(z.variables());for(var Ne=X.variables().filter(function(xr){return e(Se,xr)===-1}),ot=new H(\"[]\"),dt=Ne.length-1;dt>=0;dt--)ot=new H(\".\",[new Ie(Ne[dt]),ot]);var jt=new H(\",\",[X,new H(\"=\",[ie,new H(\",\",[ot,z])])]),$t=w.points,xt=w.session.limit,an=w.session.format_success;w.session.format_success=function(xr){return xr.substitution},w.add_goal(jt,!0,S);var Qr=[],mr=function(xr){if(xr!==!1&&xr!==null&&!x.type.is_error(xr)){w.__calls.unshift(mr);var Wr=!1,Vn=xr.links[ie.id].args[0],Ns=xr.links[ie.id].args[1];for(var Ri in Qr)if(!!Qr.hasOwnProperty(Ri)){var ps=Qr[Ri];if(ps.variables.equals(Vn)){ps.answers.push(Ns),Wr=!0;break}}Wr||Qr.push({variables:Vn,answers:[Ns]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=xt,w.session.format_success=an,x.type.is_error(xr))w.throw_error(xr.args[0]);else if(w.current_limit>0){for(var io=[],Si=0;Si<Qr.length;Si++){xr=Qr[Si].answers.sort(x.compare);for(var Ls=new H(\"[]\"),so=xr.length-1;so>=0;so--)Ls=new H(\".\",[xr[so],Ls]);io.push(new be(S.goal.replace(new H(\",\",[new H(\"=\",[ot,Qr[Si].variables]),new H(\"=\",[Z,Ls])])),S.substitution,S))}w.prepend(io)}};w.__calls.unshift(mr)}},\"functor/3\":function(w,S,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(x.type.is_variable(z)&&(x.type.is_variable(X)||x.type.is_variable(Z)))w.throw_error(x.error.instantiation(\"functor/3\"));else if(!x.type.is_variable(Z)&&!x.type.is_integer(Z))w.throw_error(x.error.type(\"integer\",y.args[2],\"functor/3\"));else if(!x.type.is_variable(X)&&!x.type.is_atomic(X))w.throw_error(x.error.type(\"atomic\",y.args[1],\"functor/3\"));else if(x.type.is_integer(X)&&x.type.is_integer(Z)&&Z.value!==0)w.throw_error(x.error.type(\"atom\",y.args[1],\"functor/3\"));else if(x.type.is_variable(z)){if(y.args[2].value>=0){for(var ie=[],Se=0;Se<Z.value;Se++)ie.push(w.next_free_variable());var Ne=x.type.is_integer(X)?X:new H(X.id,ie);w.prepend([new be(S.goal.replace(new H(\"=\",[z,Ne])),S.substitution,S)])}}else{var ot=x.type.is_integer(z)?z:new H(z.id,[]),dt=x.type.is_integer(z)?new ke(0,!1):new ke(z.args.length,!1),jt=new H(\",\",[new H(\"=\",[ot,X]),new H(\"=\",[dt,Z])]);w.prepend([new be(S.goal.replace(jt),S.substitution,S)])}},\"arg/3\":function(w,S,y){if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[0],y.indicator));else if(!x.type.is_compound(y.args[1]))w.throw_error(x.error.type(\"compound\",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new H(\"=\",[y.args[1].args[F-1],y.args[2]]);w.prepend([new be(S.goal.replace(z),S.substitution,S)])}}},\"=../2\":function(w,S,y){var F;if(x.type.is_variable(y.args[0])&&(x.type.is_variable(y.args[1])||x.type.is_non_empty_list(y.args[1])&&x.type.is_variable(y.args[1].args[0])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_fully_list(y.args[1]))w.throw_error(x.error.type(\"list\",y.args[1],y.indicator));else if(x.type.is_variable(y.args[0])){if(!x.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator===\"./2\";)X.push(F.args[0]),F=F.args[1];x.type.is_variable(y.args[0])&&x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):X.length===0&&x.type.is_compound(y.args[1].args[0])?w.throw_error(x.error.type(\"atomic\",y.args[1].args[0],y.indicator)):X.length>0&&(x.type.is_compound(y.args[1].args[0])||x.type.is_number(y.args[1].args[0]))?w.throw_error(x.error.type(\"atom\",y.args[1].args[0],y.indicator)):X.length===0?w.prepend([new be(S.goal.replace(new H(\"=\",[y.args[1].args[0],y.args[0]],S)),S.substitution,S)]):w.prepend([new be(S.goal.replace(new H(\"=\",[new H(y.args[1].args[0].id,X),y.args[0]])),S.substitution,S)])}}else{if(x.type.is_atomic(y.args[0]))F=new H(\".\",[y.args[0],new H(\"[]\")]);else{F=new H(\"[]\");for(var z=y.args[0].args.length-1;z>=0;z--)F=new H(\".\",[y.args[0].args[z],F]);F=new H(\".\",[new H(y.args[0].id),F])}w.prepend([new be(S.goal.replace(new H(\"=\",[F,y.args[1]])),S.substitution,S)])}},\"copy_term/2\":function(w,S,y){var F=y.args[0].rename(w);w.prepend([new be(S.goal.replace(new H(\"=\",[F,y.args[1]])),S.substitution,S.parent)])},\"term_variables/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(!x.type.is_fully_list(z))w.throw_error(x.error.type(\"list\",z,y.indicator));else{var X=g(o(De(F.variables()),function(Z){return new Ie(Z)}));w.prepend([new be(S.goal.replace(new H(\"=\",[z,X])),S.substitution,S)])}},\"clause/2\":function(w,S,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_callable(y.args[1]))w.throw_error(x.error.type(\"callable\",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(!!w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var X=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},X=X.rename(w),X.body===null&&(X.body=new H(\"true\"));var Z=new H(\",\",[new H(\"=\",[X.head,y.args[0]]),new H(\"=\",[X.body,y.args[1]])]);F.push(new be(S.goal.replace(Z),S.substitution,S))}w.prepend(F)}else w.throw_error(x.error.permission(\"access\",\"private_procedure\",y.args[0].indicator,y.indicator))},\"current_predicate/1\":function(w,S,y){var F=y.args[0];if(!x.type.is_variable(F)&&(!x.type.is_compound(F)||F.indicator!==\"//2\"))w.throw_error(x.error.type(\"predicate_indicator\",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[0])&&!x.type.is_atom(F.args[0]))w.throw_error(x.error.type(\"atom\",F.args[0],y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[1])&&!x.type.is_integer(F.args[1]))w.throw_error(x.error.type(\"integer\",F.args[1],y.indicator));else{var z=[];for(var X in w.session.rules)if(!!w.session.rules.hasOwnProperty(X)){var Z=X.lastIndexOf(\"/\"),ie=X.substr(0,Z),Se=parseInt(X.substr(Z+1,X.length-(Z+1))),Ne=new H(\"/\",[new H(ie),new ke(Se,!1)]),ot=new H(\"=\",[Ne,F]);z.push(new be(S.goal.replace(ot),S.substitution,S))}w.prepend(z)}},\"asserta/1\":function(w,S,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=Pe(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new _e(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(S)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(x.error.type(\"callable\",F,y.indicator))}},\"assertz/1\":function(w,S,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=Pe(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new _e(F,z,!0)),w.success(S)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(x.error.type(\"callable\",F,y.indicator))}},\"retract/1\":function(w,S,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new H(\"true\")),typeof S.retract>\"u\")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var X=[],Z=0;Z<w.session.rules[F.indicator].length;Z++){w.session.renamed_variables={};var ie=w.session.rules[F.indicator][Z],Se=ie.rename(w);Se.body===null&&(Se.body=new H(\"true\",[]));var Ne=w.get_flag(\"occurs_check\").indicator===\"true/0\",ot=x.unify(new H(\",\",[F,z]),new H(\",\",[Se.head,Se.body]),Ne);if(ot!==null){var dt=new be(S.goal.replace(new H(\",\",[new H(\"retract\",[new H(\":-\",[F,z])]),new H(\",\",[new H(\"=\",[F,Se.head]),new H(\"=\",[z,Se.body])])])),S.substitution,S);dt.retract=ie,X.push(dt)}}w.prepend(X)}}else w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator));else ce(w,S,F.indicator,S.retract)}},\"retractall/1\":function(w,S,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_callable(F)?w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"retract\",[new x.type.Term(\":-\",[F,new Ie(\"_\")])]),new H(\"fail\",[])])),S.substitution,S),new be(S.goal.replace(null),S.substitution,S)]):w.throw_error(x.error.type(\"callable\",F,y.indicator))},\"abolish/1\":function(w,S,y){if(x.type.is_variable(y.args[0])||x.type.is_term(y.args[0])&&y.args[0].indicator===\"//2\"&&(x.type.is_variable(y.args[0].args[0])||x.type.is_variable(y.args[0].args[1])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_term(y.args[0])||y.args[0].indicator!==\"//2\")w.throw_error(x.error.type(\"predicate_indicator\",y.args[0],y.indicator));else if(!x.type.is_atom(y.args[0].args[0]))w.throw_error(x.error.type(\"atom\",y.args[0].args[0],y.indicator));else if(!x.type.is_integer(y.args[0].args[1]))w.throw_error(x.error.type(\"integer\",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[0].args[1],y.indicator));else if(x.type.is_number(w.get_flag(\"max_arity\"))&&y.args[0].args[1].value>w.get_flag(\"max_arity\").value)w.throw_error(x.error.representation(\"max_arity\",y.indicator));else{var F=y.args[0].args[0].id+\"/\"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(S)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F,y.indicator))}},\"atom_length/2\":function(w,S,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type(\"atom\",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_integer(y.args[1]))w.throw_error(x.error.type(\"integer\",y.args[1],y.indicator));else if(x.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[1],y.indicator));else{var F=new ke(y.args[0].id.length,!1);w.prepend([new be(S.goal.replace(new H(\"=\",[F,y.args[1]])),S.substitution,S)])}},\"atom_concat/3\":function(w,S,y){var F,z,X=y.args[0],Z=y.args[1],ie=y.args[2];if(x.type.is_variable(ie)&&(x.type.is_variable(X)||x.type.is_variable(Z)))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))w.throw_error(x.error.type(\"atom\",X,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_atom(Z))w.throw_error(x.error.type(\"atom\",Z,y.indicator));else if(!x.type.is_variable(ie)&&!x.type.is_atom(ie))w.throw_error(x.error.type(\"atom\",ie,y.indicator));else{var Se=x.type.is_variable(X),Ne=x.type.is_variable(Z);if(!Se&&!Ne)z=new H(\"=\",[ie,new H(X.id+Z.id)]),w.prepend([new be(S.goal.replace(z),S.substitution,S)]);else if(Se&&!Ne)F=ie.id.substr(0,ie.id.length-Z.id.length),F+Z.id===ie.id&&(z=new H(\"=\",[X,new H(F)]),w.prepend([new be(S.goal.replace(z),S.substitution,S)]));else if(Ne&&!Se)F=ie.id.substr(X.id.length),X.id+F===ie.id&&(z=new H(\"=\",[Z,new H(F)]),w.prepend([new be(S.goal.replace(z),S.substitution,S)]));else{for(var ot=[],dt=0;dt<=ie.id.length;dt++){var jt=new H(ie.id.substr(0,dt)),$t=new H(ie.id.substr(dt));z=new H(\",\",[new H(\"=\",[jt,X]),new H(\"=\",[$t,Z])]),ot.push(new be(S.goal.replace(z),S.substitution,S))}w.prepend(ot)}}},\"sub_atom/5\":function(w,S,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2],ie=y.args[3],Se=y.args[4];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))w.throw_error(x.error.type(\"integer\",X,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_integer(Z))w.throw_error(x.error.type(\"integer\",Z,y.indicator));else if(!x.type.is_variable(ie)&&!x.type.is_integer(ie))w.throw_error(x.error.type(\"integer\",ie,y.indicator));else if(x.type.is_integer(X)&&X.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",X,y.indicator));else if(x.type.is_integer(Z)&&Z.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",Z,y.indicator));else if(x.type.is_integer(ie)&&ie.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",ie,y.indicator));else{var Ne=[],ot=[],dt=[];if(x.type.is_variable(X))for(F=0;F<=z.id.length;F++)Ne.push(F);else Ne.push(X.value);if(x.type.is_variable(Z))for(F=0;F<=z.id.length;F++)ot.push(F);else ot.push(Z.value);if(x.type.is_variable(ie))for(F=0;F<=z.id.length;F++)dt.push(F);else dt.push(ie.value);var jt=[];for(var $t in Ne)if(!!Ne.hasOwnProperty($t)){F=Ne[$t];for(var xt in ot)if(!!ot.hasOwnProperty(xt)){var an=ot[xt],Qr=z.id.length-F-an;if(e(dt,Qr)!==-1&&F+an+Qr===z.id.length){var mr=z.id.substr(F,an);if(z.id===z.id.substr(0,F)+mr+z.id.substr(F+an,Qr)){var xr=new H(\"=\",[new H(mr),Se]),Wr=new H(\"=\",[X,new ke(F)]),Vn=new H(\"=\",[Z,new ke(an)]),Ns=new H(\"=\",[ie,new ke(Qr)]),Ri=new H(\",\",[new H(\",\",[new H(\",\",[Wr,Vn]),Ns]),xr]);jt.push(new be(S.goal.replace(Ri),S.substitution,S))}}}}w.prepend(jt)}},\"atom_chars/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_variable(F)){for(var ie=z,Se=x.type.is_variable(F),Ne=\"\";ie.indicator===\"./2\";){if(x.type.is_character(ie.args[0]))Ne+=ie.args[0].id;else if(x.type.is_variable(ie.args[0])&&Se){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(ie.args[0])){w.throw_error(x.error.type(\"character\",ie.args[0],y.indicator));return}ie=ie.args[1]}x.type.is_variable(ie)&&Se?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)?w.throw_error(x.error.type(\"list\",z,y.indicator)):w.prepend([new be(S.goal.replace(new H(\"=\",[new H(Ne),F])),S.substitution,S)])}else{for(var X=new H(\"[]\"),Z=F.id.length-1;Z>=0;Z--)X=new H(\".\",[new H(F.id.charAt(Z)),X]);w.prepend([new be(S.goal.replace(new H(\"=\",[z,X])),S.substitution,S)])}},\"atom_codes/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_variable(F)){for(var ie=z,Se=x.type.is_variable(F),Ne=\"\";ie.indicator===\"./2\";){if(x.type.is_character_code(ie.args[0]))Ne+=u(ie.args[0].value);else if(x.type.is_variable(ie.args[0])&&Se){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(ie.args[0])){w.throw_error(x.error.representation(\"character_code\",y.indicator));return}ie=ie.args[1]}x.type.is_variable(ie)&&Se?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)?w.throw_error(x.error.type(\"list\",z,y.indicator)):w.prepend([new be(S.goal.replace(new H(\"=\",[new H(Ne),F])),S.substitution,S)])}else{for(var X=new H(\"[]\"),Z=F.id.length-1;Z>=0;Z--)X=new H(\".\",[new ke(n(F.id,Z),!1),X]);w.prepend([new be(S.goal.replace(new H(\"=\",[z,X])),S.substitution,S)])}},\"char_code/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_character(F))w.throw_error(x.error.type(\"character\",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",z,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character_code(z))w.throw_error(x.error.representation(\"character_code\",y.indicator));else if(x.type.is_variable(z)){var X=new ke(n(F.id,0),!1);w.prepend([new be(S.goal.replace(new H(\"=\",[X,z])),S.substitution,S)])}else{var Z=new H(u(z.value));w.prepend([new be(S.goal.replace(new H(\"=\",[Z,F])),S.substitution,S)])}},\"number_chars/2\":function(w,S,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type(\"number\",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else{var Z=x.type.is_variable(z);if(!x.type.is_variable(X)){var ie=X,Se=!0;for(F=\"\";ie.indicator===\"./2\";){if(x.type.is_character(ie.args[0]))F+=ie.args[0].id;else if(x.type.is_variable(ie.args[0]))Se=!1;else if(!x.type.is_variable(ie.args[0])){w.throw_error(x.error.type(\"character\",ie.args[0],y.indicator));return}ie=ie.args[1]}if(Se=Se&&x.type.is_empty_list(ie),!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)){w.throw_error(x.error.type(\"list\",X,y.indicator));return}if(!Se&&Z){w.throw_error(x.error.instantiation(y.indicator));return}else if(Se)if(x.type.is_variable(ie)&&Z){w.throw_error(x.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ot=Ne.value;!x.type.is_number(ot)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new be(S.goal.replace(new H(\"=\",[z,ot])),S.substitution,S)]);return}}if(!Z){F=z.toString();for(var dt=new H(\"[]\"),jt=F.length-1;jt>=0;jt--)dt=new H(\".\",[new H(F.charAt(jt)),dt]);w.prepend([new be(S.goal.replace(new H(\"=\",[X,dt])),S.substitution,S)])}}},\"number_codes/2\":function(w,S,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type(\"number\",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else{var Z=x.type.is_variable(z);if(!x.type.is_variable(X)){var ie=X,Se=!0;for(F=\"\";ie.indicator===\"./2\";){if(x.type.is_character_code(ie.args[0]))F+=u(ie.args[0].value);else if(x.type.is_variable(ie.args[0]))Se=!1;else if(!x.type.is_variable(ie.args[0])){w.throw_error(x.error.type(\"character_code\",ie.args[0],y.indicator));return}ie=ie.args[1]}if(Se=Se&&x.type.is_empty_list(ie),!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)){w.throw_error(x.error.type(\"list\",X,y.indicator));return}if(!Se&&Z){w.throw_error(x.error.instantiation(y.indicator));return}else if(Se)if(x.type.is_variable(ie)&&Z){w.throw_error(x.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ot=Ne.value;!x.type.is_number(ot)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new be(S.goal.replace(new H(\"=\",[z,ot])),S.substitution,S)]);return}}if(!Z){F=z.toString();for(var dt=new H(\"[]\"),jt=F.length-1;jt>=0;jt--)dt=new H(\".\",[new ke(n(F,jt),!1),dt]);w.prepend([new be(S.goal.replace(new H(\"=\",[X,dt])),S.substitution,S)])}}},\"upcase_atom/2\":function(w,S,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type(\"atom\",z,y.indicator)):w.prepend([new be(S.goal.replace(new H(\"=\",[z,new H(F.id.toUpperCase(),[])])),S.substitution,S)]):w.throw_error(x.error.type(\"atom\",F,y.indicator))},\"downcase_atom/2\":function(w,S,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type(\"atom\",z,y.indicator)):w.prepend([new be(S.goal.replace(new H(\"=\",[z,new H(F.id.toLowerCase(),[])])),S.substitution,S)]):w.throw_error(x.error.type(\"atom\",F,y.indicator))},\"atomic_list_concat/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new be(S.goal.replace(new H(\"atomic_list_concat\",[F,new H(\"\",[]),z])),S.substitution,S)])},\"atomic_list_concat/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z)||x.type.is_variable(F)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_list(F))w.throw_error(x.error.type(\"list\",F,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))w.throw_error(x.error.type(\"atom\",X,y.indicator));else if(x.type.is_variable(X)){for(var ie=\"\",Se=F;x.type.is_term(Se)&&Se.indicator===\"./2\";){if(!x.type.is_atom(Se.args[0])&&!x.type.is_number(Se.args[0])){w.throw_error(x.error.type(\"atomic\",Se.args[0],y.indicator));return}ie!==\"\"&&(ie+=z.id),x.type.is_atom(Se.args[0])?ie+=Se.args[0].id:ie+=\"\"+Se.args[0].value,Se=Se.args[1]}ie=new H(ie,[]),x.type.is_variable(Se)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_term(Se)||Se.indicator!==\"[]/0\"?w.throw_error(x.error.type(\"list\",F,y.indicator)):w.prepend([new be(S.goal.replace(new H(\"=\",[ie,X])),S.substitution,S)])}else{var Z=g(o(X.id.split(z.id),function(Ne){return new H(Ne,[])}));w.prepend([new be(S.goal.replace(new H(\"=\",[Z,F])),S.substitution,S)])}},\"@=</2\":function(w,S,y){x.compare(y.args[0],y.args[1])<=0&&w.success(S)},\"==/2\":function(w,S,y){x.compare(y.args[0],y.args[1])===0&&w.success(S)},\"\\\\==/2\":function(w,S,y){x.compare(y.args[0],y.args[1])!==0&&w.success(S)},\"@</2\":function(w,S,y){x.compare(y.args[0],y.args[1])<0&&w.success(S)},\"@>/2\":function(w,S,y){x.compare(y.args[0],y.args[1])>0&&w.success(S)},\"@>=/2\":function(w,S,y){x.compare(y.args[0],y.args[1])>=0&&w.success(S)},\"compare/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_atom(F)&&[\"<\",\">\",\"=\"].indexOf(F.id)===-1)w.throw_error(x.type.domain(\"order\",F,y.indicator));else{var Z=x.compare(z,X);Z=Z===0?\"=\":Z===-1?\"<\":\">\",w.prepend([new be(S.goal.replace(new H(\"=\",[F,new H(Z,[])])),S.substitution,S)])}},\"is/2\":function(w,S,y){var F=y.args[1].interpret(w);x.type.is_number(F)?w.prepend([new be(S.goal.replace(new H(\"=\",[y.args[0],F],w.level)),S.substitution,S)]):w.throw_error(F)},\"between/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_integer(F))w.throw_error(x.error.type(\"integer\",F,y.indicator));else if(!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))w.throw_error(x.error.type(\"integer\",X,y.indicator));else if(x.type.is_variable(X)){var Z=[new be(S.goal.replace(new H(\"=\",[X,F])),S.substitution,S)];F.value<z.value&&Z.push(new be(S.goal.replace(new H(\"between\",[new ke(F.value+1,!1),z,X])),S.substitution,S)),w.prepend(Z)}else F.value<=X.value&&z.value>=X.value&&w.success(S)},\"succ/2\":function(w,S,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)&&x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_integer(F)?w.throw_error(x.error.type(\"integer\",F,y.indicator)):!x.type.is_variable(z)&&!x.type.is_integer(z)?w.throw_error(x.error.type(\"integer\",z,y.indicator)):!x.type.is_variable(F)&&F.value<0?w.throw_error(x.error.domain(\"not_less_than_zero\",F,y.indicator)):!x.type.is_variable(z)&&z.value<0?w.throw_error(x.error.domain(\"not_less_than_zero\",z,y.indicator)):(x.type.is_variable(z)||z.value>0)&&(x.type.is_variable(F)?w.prepend([new be(S.goal.replace(new H(\"=\",[F,new ke(z.value-1,!1)])),S.substitution,S)]):w.prepend([new be(S.goal.replace(new H(\"=\",[z,new ke(F.value+1,!1)])),S.substitution,S)]))},\"=:=/2\":function(w,S,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F===0&&w.success(S)},\"=\\\\=/2\":function(w,S,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F!==0&&w.success(S)},\"</2\":function(w,S,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F<0&&w.success(S)},\"=</2\":function(w,S,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F<=0&&w.success(S)},\">/2\":function(w,S,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>0&&w.success(S)},\">=/2\":function(w,S,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>=0&&w.success(S)},\"var/1\":function(w,S,y){x.type.is_variable(y.args[0])&&w.success(S)},\"atom/1\":function(w,S,y){x.type.is_atom(y.args[0])&&w.success(S)},\"atomic/1\":function(w,S,y){x.type.is_atomic(y.args[0])&&w.success(S)},\"compound/1\":function(w,S,y){x.type.is_compound(y.args[0])&&w.success(S)},\"integer/1\":function(w,S,y){x.type.is_integer(y.args[0])&&w.success(S)},\"float/1\":function(w,S,y){x.type.is_float(y.args[0])&&w.success(S)},\"number/1\":function(w,S,y){x.type.is_number(y.args[0])&&w.success(S)},\"nonvar/1\":function(w,S,y){x.type.is_variable(y.args[0])||w.success(S)},\"ground/1\":function(w,S,y){y.variables().length===0&&w.success(S)},\"acyclic_term/1\":function(w,S,y){for(var F=S.substitution.apply(S.substitution),z=y.args[0].variables(),X=0;X<z.length;X++)if(S.substitution.links[z[X]]!==void 0&&!S.substitution.links[z[X]].equals(F.links[z[X]]))return;w.success(S)},\"callable/1\":function(w,S,y){x.type.is_callable(y.args[0])&&w.success(S)},\"is_list/1\":function(w,S,y){for(var F=y.args[0];x.type.is_term(F)&&F.indicator===\"./2\";)F=F.args[1];x.type.is_term(F)&&F.indicator===\"[]/0\"&&w.success(S)},\"current_input/1\":function(w,S,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream\",F,y.indicator)):(x.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new be(S.goal.replace(new H(\"=\",[F,w.get_current_input()])),S.substitution,S)]))},\"current_output/1\":function(w,S,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):(x.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new be(S.goal.replace(new H(\"=\",[F,w.get_current_output()])),S.substitution,S)]))},\"set_input/1\":function(w,S,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):x.type.is_stream(z)?z.output===!0?w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator)):(w.set_current_input(z),w.success(S)):w.throw_error(x.error.existence(\"stream\",F,y.indicator))},\"set_output/1\":function(w,S,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):x.type.is_stream(z)?z.input===!0?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):(w.set_current_output(z),w.success(S)):w.throw_error(x.error.existence(\"stream\",F,y.indicator))},\"open/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];w.prepend([new be(S.goal.replace(new H(\"open\",[F,z,X,new H(\"[]\",[])])),S.substitution,S)])},\"open/4\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=y.args[3];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_atom(z))w.throw_error(x.error.type(\"atom\",z,y.indicator));else if(!x.type.is_list(Z))w.throw_error(x.error.type(\"list\",Z,y.indicator));else if(!x.type.is_variable(X))w.throw_error(x.error.type(\"variable\",X,y.indicator));else if(!x.type.is_atom(F)&&!x.type.is_streamable(F))w.throw_error(x.error.domain(\"source_sink\",F,y.indicator));else if(!x.type.is_io_mode(z))w.throw_error(x.error.domain(\"io_mode\",z,y.indicator));else{for(var ie={},Se=Z,Ne;x.type.is_term(Se)&&Se.indicator===\"./2\";){if(Ne=Se.args[0],x.type.is_variable(Ne)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_stream_option(Ne)){w.throw_error(x.error.domain(\"stream_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id,Se=Se.args[1]}if(Se.indicator!==\"[]/0\"){x.type.is_variable(Se)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",Z,y.indicator));return}else{var ot=ie.alias;if(ot&&w.get_stream_by_alias(ot)){w.throw_error(x.error.permission(\"open\",\"source_sink\",new H(\"alias\",[new H(ot,[])]),y.indicator));return}ie.type||(ie.type=\"text\");var dt;if(x.type.is_atom(F)?dt=w.file_system_open(F.id,ie.type,z.id):dt=F.stream(ie.type,z.id),dt===!1){w.throw_error(x.error.permission(\"open\",\"source_sink\",F,y.indicator));return}else if(dt===null){w.throw_error(x.error.existence(\"source_sink\",F,y.indicator));return}var jt=new Re(dt,z.id,ie.alias,ie.type,ie.reposition===\"true\",ie.eof_action);ot?w.session.streams[ot]=jt:w.session.streams[jt.id]=jt,w.prepend([new be(S.goal.replace(new H(\"=\",[X,jt])),S.substitution,S)])}}},\"close/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\"close\",[F,new H(\"[]\",[])])),S.substitution,S)])},\"close/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(z))w.throw_error(x.error.type(\"list\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else{for(var Z={},ie=z,Se;x.type.is_term(ie)&&ie.indicator===\"./2\";){if(Se=ie.args[0],x.type.is_variable(Se)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_close_option(Se)){w.throw_error(x.error.domain(\"close_option\",Se,y.indicator));return}Z[Se.id]=Se.args[0].id===\"true\",ie=ie.args[1]}if(ie.indicator!==\"[]/0\"){x.type.is_variable(ie)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",z,y.indicator));return}else{if(X===w.session.standard_input||X===w.session.standard_output){w.success(S);return}else X===w.session.current_input?w.session.current_input=w.session.standard_input:X===w.session.current_output&&(w.session.current_output=w.session.current_output);X.alias!==null?delete w.session.streams[X.alias]:delete w.session.streams[X.id],X.output&&X.stream.flush();var Ne=X.stream.close();X.stream=null,(Z.force===!0||Ne===!0)&&w.success(S)}}},\"flush_output/0\":function(w,S,y){w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"flush_output\",[new Ie(\"S\")])])),S.substitution,S)])},\"flush_output/1\":function(w,S,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(z)||z.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):F.input===!0?w.throw_error(x.error.permission(\"output\",\"stream\",output,y.indicator)):(z.stream.flush(),w.success(S))},\"stream_property/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_variable(F)&&(!x.type.is_stream(X)||X.stream===null))w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_stream_property(z))w.throw_error(x.error.domain(\"stream_property\",z,y.indicator));else{var Z=[],ie=[];if(!x.type.is_variable(F))Z.push(X);else for(var Se in w.session.streams)Z.push(w.session.streams[Se]);for(var Ne=0;Ne<Z.length;Ne++){var ot=[];Z[Ne].filename&&ot.push(new H(\"file_name\",[new H(Z[Ne].file_name,[])])),ot.push(new H(\"mode\",[new H(Z[Ne].mode,[])])),ot.push(new H(Z[Ne].input?\"input\":\"output\",[])),Z[Ne].alias&&ot.push(new H(\"alias\",[new H(Z[Ne].alias,[])])),ot.push(new H(\"position\",[typeof Z[Ne].position==\"number\"?new ke(Z[Ne].position,!1):new H(Z[Ne].position,[])])),ot.push(new H(\"end_of_stream\",[new H(Z[Ne].position===\"end_of_stream\"?\"at\":Z[Ne].position===\"past_end_of_stream\"?\"past\":\"not\",[])])),ot.push(new H(\"eof_action\",[new H(Z[Ne].eof_action,[])])),ot.push(new H(\"reposition\",[new H(Z[Ne].reposition?\"true\":\"false\",[])])),ot.push(new H(\"type\",[new H(Z[Ne].type,[])]));for(var dt=0;dt<ot.length;dt++)ie.push(new be(S.goal.replace(new H(\",\",[new H(\"=\",[x.type.is_variable(F)?F:X,Z[Ne]]),new H(\"=\",[z,ot[dt]])])),S.substitution,S))}w.prepend(ie)}},\"at_end_of_stream/0\":function(w,S,y){w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\",\",[new H(\"stream_property\",[new Ie(\"S\"),new H(\"end_of_stream\",[new Ie(\"E\")])]),new H(\",\",[new H(\"!\",[]),new H(\";\",[new H(\"=\",[new Ie(\"E\"),new H(\"at\",[])]),new H(\"=\",[new Ie(\"E\"),new H(\"past\",[])])])])])])),S.substitution,S)])},\"at_end_of_stream/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"stream_property\",[F,new H(\"end_of_stream\",[new Ie(\"E\")])]),new H(\",\",[new H(\"!\",[]),new H(\";\",[new H(\"=\",[new Ie(\"E\"),new H(\"at\",[])]),new H(\"=\",[new Ie(\"E\"),new H(\"past\",[])])])])])),S.substitution,S)])},\"set_stream_position/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):x.type.is_stream_position(z)?X.reposition===!1?w.throw_error(x.error.permission(\"reposition\",\"stream\",F,y.indicator)):(x.type.is_integer(z)?X.position=z.value:X.position=z.id,w.success(S)):w.throw_error(x.error.domain(\"stream_position\",z,y.indicator))},\"get_char/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_char\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"get_char/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))w.throw_error(x.error.type(\"in_character\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}X.position++}w.prepend([new be(S.goal.replace(new H(\"=\",[new H(Z,[]),z])),S.substitution,S)])}},\"get_code/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_code\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"get_code/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=-1,X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}Z=n(Z,0),X.position++}w.prepend([new be(S.goal.replace(new H(\"=\",[new ke(Z,!1),z])),S.substitution,S)])}},\"peek_char/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_char\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"peek_char/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))w.throw_error(x.error.type(\"in_character\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}w.prepend([new be(S.goal.replace(new H(\"=\",[new H(Z,[]),z])),S.substitution,S)])}},\"peek_code/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_code\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"peek_code/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=-1,X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}Z=n(Z,0)}w.prepend([new be(S.goal.replace(new H(\"=\",[new ke(Z,!1),z])),S.substitution,S)])}},\"put_char/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_char\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"put_char/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_character(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put(z.id,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(S)):w.throw_error(x.error.type(\"character\",z,y.indicator))},\"put_code/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_code\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"put_code/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(z)?x.type.is_character_code(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put_char(u(z.value),X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(S)):w.throw_error(x.error.representation(\"character_code\",y.indicator)):w.throw_error(x.error.type(\"integer\",z,y.indicator))},\"nl/0\":function(w,S,y){w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_char\",[new Ie(\"S\"),new H(`\n`,[])])])),S.substitution,S)])},\"nl/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\"put_char\",[F,new H(`\n`,[])])),S.substitution,S)])},\"get_byte/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_byte\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"get_byte/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))w.throw_error(x.error.type(\"in_byte\",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(x.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else{if(Z=X.stream.get_byte(X.position),Z===null){w.throw_error(x.error.representation(\"byte\",y.indicator));return}X.position++}w.prepend([new be(S.goal.replace(new H(\"=\",[new ke(Z,!1),z])),S.substitution,S)])}},\"peek_byte/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_byte\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"peek_byte/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))w.throw_error(x.error.type(\"in_byte\",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(x.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else if(Z=X.stream.get_byte(X.position),Z===null){w.throw_error(x.error.representation(\"byte\",y.indicator));return}w.prepend([new be(S.goal.replace(new H(\"=\",[new ke(Z,!1),z])),S.substitution,S)])}},\"put_byte/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_byte\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"put_byte/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_byte(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"text\"?w.throw_error(x.error.permission(\"output\",\"text_stream\",F,y.indicator)):X.stream.put_byte(z.value,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(S)):w.throw_error(x.error.type(\"byte\",z,y.indicator))},\"read/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"read_term\",[new Ie(\"S\"),F,new H(\"[]\",[])])])),S.substitution,S)])},\"read/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new be(S.goal.replace(new H(\"read_term\",[F,z,new H(\"[]\",[])])),S.substitution,S)])},\"read_term/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"read_term\",[new Ie(\"S\"),F,z])])),S.substitution,S)])},\"read_term/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{for(var ie={},Se=X,Ne;x.type.is_term(Se)&&Se.indicator===\"./2\";){if(Ne=Se.args[0],x.type.is_variable(Ne)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_read_option(Ne)){w.throw_error(x.error.domain(\"read_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0],Se=Se.args[1]}if(Se.indicator!==\"[]/0\"){x.type.is_variable(Se)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",X,y.indicator));return}else{for(var ot,dt,jt,$t=\"\",xt=[],an=null;an===null||an.name!==\"atom\"||an.value!==\".\"||jt.type===A&&x.flatten_error(new H(\"throw\",[jt.value])).found===\"token_not_found\";){if(ot=Z.stream.get(1,Z.position),ot===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}if(ot===\"end_of_file\"||ot===\"past_end_of_file\"){jt?w.throw_error(x.error.syntax(xt[jt.len-1],\". or expression expected\",!1)):w.throw_error(x.error.syntax(null,\"token not found\",!0));return}Z.position++,$t+=ot,dt=new U(w),dt.new_text($t),xt=dt.get_tokens(),an=xt!==null&&xt.length>0?xt[xt.length-1]:null,xt!==null&&(jt=J(w,xt,0,w.__get_max_priority(),!1))}if(jt.type===p&&jt.len===xt.length-1&&an.value===\".\"){jt=jt.value.rename(w);var Qr=new H(\"=\",[z,jt]);if(ie.variables){var mr=g(o(De(jt.variables()),function(xr){return new Ie(xr)}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.variables,mr])])}if(ie.variable_names){var mr=g(o(De(jt.variables()),function(Wr){var Vn;for(Vn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Vn)&&w.session.renamed_variables[Vn]===Wr)break;return new H(\"=\",[new H(Vn,[]),new Ie(Wr)])}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.variable_names,mr])])}if(ie.singletons){var mr=g(o(new _e(jt,null).singleton_variables(),function(Wr){var Vn;for(Vn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Vn)&&w.session.renamed_variables[Vn]===Wr)break;return new H(\"=\",[new H(Vn,[]),new Ie(Wr)])}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.singletons,mr])])}w.prepend([new be(S.goal.replace(Qr),S.substitution,S)])}else jt.type===p?w.throw_error(x.error.syntax(xt[jt.len],\"unexpected token\",!1)):w.throw_error(jt.value)}}},\"write/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"write/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new be(S.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"false\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"false\")]),new H(\".\",[new H(\"numbervars\",[new H(\"true\")]),new H(\"[]\",[])])])])])),S.substitution,S)])},\"writeq/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"writeq\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"writeq/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new be(S.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"true\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"false\")]),new H(\".\",[new H(\"numbervars\",[new H(\"true\")]),new H(\"[]\",[])])])])])),S.substitution,S)])},\"write_canonical/1\":function(w,S,y){var F=y.args[0];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write_canonical\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"write_canonical/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new be(S.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"true\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"true\")]),new H(\".\",[new H(\"numbervars\",[new H(\"false\")]),new H(\"[]\",[])])])])])),S.substitution,S)])},\"write_term/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new be(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write_term\",[new Ie(\"S\"),F,z])])),S.substitution,S)])},\"write_term/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(Z)||Z.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(Z.input)w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(x.error.permission(\"output\",\"past_end_of_stream\",F,y.indicator));else{for(var ie={},Se=X,Ne;x.type.is_term(Se)&&Se.indicator===\"./2\";){if(Ne=Se.args[0],x.type.is_variable(Ne)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_write_option(Ne)){w.throw_error(x.error.domain(\"write_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id===\"true\",Se=Se.args[1]}if(Se.indicator!==\"[]/0\"){x.type.is_variable(Se)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",X,y.indicator));return}else{ie.session=w.session;var ot=z.toString(ie);Z.stream.put(ot,Z.position),typeof Z.position==\"number\"&&(Z.position+=ot.length),w.success(S)}}},\"halt/0\":function(w,S,y){w.points=[]},\"halt/1\":function(w,S,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(F)?w.points=[]:w.throw_error(x.error.type(\"integer\",F,y.indicator))},\"current_prolog_flag/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_flag(F))w.throw_error(x.error.domain(\"prolog_flag\",F,y.indicator));else{var X=[];for(var Z in x.flag)if(!!x.flag.hasOwnProperty(Z)){var ie=new H(\",\",[new H(\"=\",[new H(Z),F]),new H(\"=\",[w.get_flag(Z),z])]);X.push(new be(S.goal.replace(ie),S.substitution,S))}w.prepend(X)}},\"set_prolog_flag/2\":function(w,S,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?x.type.is_flag(F)?x.type.is_value_flag(F,z)?x.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(S)):w.throw_error(x.error.permission(\"modify\",\"flag\",F)):w.throw_error(x.error.domain(\"flag_value\",new H(\"+\",[F,z]),y.indicator)):w.throw_error(x.error.domain(\"prolog_flag\",F,y.indicator)):w.throw_error(x.error.type(\"atom\",F,y.indicator))}},flag:{bounded:{allowed:[new H(\"true\"),new H(\"false\")],value:new H(\"true\"),changeable:!1},max_integer:{allowed:[new ke(Number.MAX_SAFE_INTEGER)],value:new ke(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new ke(Number.MIN_SAFE_INTEGER)],value:new ke(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new H(\"down\"),new H(\"toward_zero\")],value:new H(\"toward_zero\"),changeable:!1},char_conversion:{allowed:[new H(\"on\"),new H(\"off\")],value:new H(\"on\"),changeable:!0},debug:{allowed:[new H(\"on\"),new H(\"off\")],value:new H(\"off\"),changeable:!0},max_arity:{allowed:[new H(\"unbounded\")],value:new H(\"unbounded\"),changeable:!1},unknown:{allowed:[new H(\"error\"),new H(\"fail\"),new H(\"warning\")],value:new H(\"error\"),changeable:!0},double_quotes:{allowed:[new H(\"chars\"),new H(\"codes\"),new H(\"atom\")],value:new H(\"codes\"),changeable:!0},occurs_check:{allowed:[new H(\"false\"),new H(\"true\")],value:new H(\"false\"),changeable:!0},dialect:{allowed:[new H(\"tau\")],value:new H(\"tau\"),changeable:!1},version_data:{allowed:[new H(\"tau\",[new ke(t.major,!1),new ke(t.minor,!1),new ke(t.patch,!1),new H(t.status)])],value:new H(\"tau\",[new ke(t.major,!1),new ke(t.minor,!1),new ke(t.patch,!1),new H(t.status)]),changeable:!1},nodejs:{allowed:[new H(\"yes\"),new H(\"no\")],value:new H(typeof hl<\"u\"&&hl.exports?\"yes\":\"no\"),changeable:!1}},unify:function(w,S,y){y=y===void 0?!1:y;for(var F=[{left:w,right:S}],z={};F.length!==0;){var X=F.pop();if(w=X.left,S=X.right,x.type.is_term(w)&&x.type.is_term(S)){if(w.indicator!==S.indicator)return null;for(var Z=0;Z<w.args.length;Z++)F.push({left:w.args[Z],right:S.args[Z]})}else if(x.type.is_number(w)&&x.type.is_number(S)){if(w.value!==S.value||w.is_float!==S.is_float)return null}else if(x.type.is_variable(w)){if(x.type.is_variable(S)&&w.id===S.id)continue;if(y===!0&&S.variables().indexOf(w.id)!==-1)return null;if(w.id!==\"_\"){var ie=new Qe;ie.add(w.id,S);for(var Z=0;Z<F.length;Z++)F[Z].left=F[Z].left.apply(ie),F[Z].right=F[Z].right.apply(ie);for(var Z in z)z[Z]=z[Z].apply(ie);z[w.id]=S}}else if(x.type.is_variable(S))F.push({left:S,right:w});else if(w.unify!==void 0){if(!w.unify(S))return null}else return null}return new Qe(z)},compare:function(w,S){var y=x.type.compare(w,S);return y!==0?y:w.compare(S)},arithmetic_compare:function(w,S,y){var F=S.interpret(w);if(x.type.is_number(F)){var z=y.interpret(w);return x.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(w,S){if(x.type.is_operator(S)){for(var y=x.type.is_operator(S),F=[],z,X=!1,Z=0;Z<S.args.length;Z++){if(z=S.args[Z].interpret(w),x.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return x.error.type(y.type_args?\"float\":\"integer\",z,w.__call_indicator);F.push(z.value)}else return z;X=X||z.is_float}return F.push(w),z=x.arithmetic.evaluation[S.indicator].fn.apply(this,F),X=y.type_result===null?X:y.type_result,x.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?x.error.evaluation(\"overflow\",w.__call_indicator):X===!1&&w.get_flag(\"bounded\").id===\"true\"&&(z>w.get_flag(\"max_integer\").value||z<w.get_flag(\"min_integer\").value)?x.error.evaluation(\"int_overflow\",w.__call_indicator):new ke(z,X)}else return x.error.type(\"evaluable\",S.indicator,w.__call_indicator)},error:{existence:function(w,S,y){return typeof S==\"string\"&&(S=ee(S)),new H(\"error\",[new H(\"existence_error\",[new H(w),S]),ee(y)])},type:function(w,S,y){return new H(\"error\",[new H(\"type_error\",[new H(w),S]),ee(y)])},instantiation:function(w){return new H(\"error\",[new H(\"instantiation_error\"),ee(w)])},domain:function(w,S,y){return new H(\"error\",[new H(\"domain_error\",[new H(w),S]),ee(y)])},representation:function(w,S){return new H(\"error\",[new H(\"representation_error\",[new H(w)]),ee(S)])},permission:function(w,S,y,F){return new H(\"error\",[new H(\"permission_error\",[new H(w),new H(S),y]),ee(F)])},evaluation:function(w,S){return new H(\"error\",[new H(\"evaluation_error\",[new H(w)]),ee(S)])},syntax:function(w,S,y){w=w||{value:\"\",line:0,column:0,matches:[\"\"],start:0};var F=y&&w.matches.length>0?w.start+w.matches[0].length:w.start,z=y?new H(\"token_not_found\"):new H(\"found\",[new H(w.value.toString())]),X=new H(\".\",[new H(\"line\",[new ke(w.line+1)]),new H(\".\",[new H(\"column\",[new ke(F+1)]),new H(\".\",[z,new H(\"[]\",[])])])]);return new H(\"error\",[new H(\"syntax_error\",[new H(S)]),X])},syntax_by_predicate:function(w,S){return new H(\"error\",[new H(\"syntax_error\",[new H(w)]),ee(S)])}},warning:{singleton:function(w,S,y){for(var F=new H(\"[]\"),z=w.length-1;z>=0;z--)F=new H(\".\",[new Ie(w[z]),F]);return new H(\"warning\",[new H(\"singleton_variables\",[F,ee(S)]),new H(\".\",[new H(\"line\",[new ke(y,!1)]),new H(\"[]\")])])},failed_goal:function(w,S){return new H(\"warning\",[new H(\"failed_goal\",[w]),new H(\".\",[new H(\"line\",[new ke(S,!1)]),new H(\"[]\")])])}},format_variable:function(w){return\"_\"+w},format_answer:function(w,S,F){S instanceof Te&&(S=S.thread);var F=F||{};if(F.session=S?S.session:void 0,x.type.is_error(w))return\"uncaught exception: \"+w.args[0].toString();if(w===!1)return\"false.\";if(w===null)return\"limit exceeded ;\";var z=0,X=\"\";if(x.type.is_substitution(w)){var Z=w.domain(!0);w=w.filter(function(Ne,ot){return!x.type.is_variable(ot)||Z.indexOf(ot.id)!==-1&&Ne!==ot.id})}for(var ie in w.links)!w.links.hasOwnProperty(ie)||(z++,X!==\"\"&&(X+=\", \"),X+=ie.toString(F)+\" = \"+w.links[ie].toString(F));var Se=typeof S>\"u\"||S.points.length>0?\" ;\":\".\";return z===0?\"true\"+Se:X+Se},flatten_error:function(w){if(!x.type.is_error(w))return null;w=w.args[0];var S={};return S.type=w.args[0].id,S.thrown=S.type===\"syntax_error\"?null:w.args[1].id,S.expected=null,S.found=null,S.representation=null,S.existence=null,S.existence_type=null,S.line=null,S.column=null,S.permission_operation=null,S.permission_type=null,S.evaluation_type=null,S.type===\"type_error\"||S.type===\"domain_error\"?(S.expected=w.args[0].args[0].id,S.found=w.args[0].args[1].toString()):S.type===\"syntax_error\"?w.args[1].indicator===\"./2\"?(S.expected=w.args[0].args[0].id,S.found=w.args[1].args[1].args[1].args[0],S.found=S.found.id===\"token_not_found\"?S.found.id:S.found.args[0].id,S.line=w.args[1].args[0].args[0].value,S.column=w.args[1].args[1].args[0].args[0].value):S.thrown=w.args[1].id:S.type===\"permission_error\"?(S.found=w.args[0].args[2].toString(),S.permission_operation=w.args[0].args[0].id,S.permission_type=w.args[0].args[1].id):S.type===\"evaluation_error\"?S.evaluation_type=w.args[0].args[0].id:S.type===\"representation_error\"?S.representation=w.args[0].args[0].id:S.type===\"existence_error\"&&(S.existence=w.args[0].args[1].toString(),S.existence_type=w.args[0].args[0].id),S},create:function(w){return new x.type.Session(w)}};typeof hl<\"u\"?hl.exports=x:window.pl=x})()});function ame(t,e,r){t.prepend(r.map(o=>new Ra.default.type.State(e.goal.replace(o),e.substitution,e)))}function CH(t){let e=cme.get(t.session);if(e==null)throw new Error(\"Assertion failed: A project should have been registered for the active session\");return e}function ume(t,e){cme.set(t,e),t.consult(`:- use_module(library(${tdt.id})).`)}var wH,Ra,lme,c0,$gt,edt,cme,tdt,Ame=Et(()=>{Ye();wH=$e(g2()),Ra=$e(EH()),lme=$e(Be(\"vm\")),{is_atom:c0,is_variable:$gt,is_instantiated_list:edt}=Ra.default.type;cme=new WeakMap;tdt=new Ra.default.type.Module(\"constraints\",{[\"project_workspaces_by_descriptor/3\"]:(t,e,r)=>{let[o,a,n]=r.args;if(!c0(o)||!c0(a)){t.throw_error(Ra.default.error.instantiation(r.indicator));return}let u=W.parseIdent(o.id),A=W.makeDescriptor(u,a.id),h=CH(t).tryWorkspaceByDescriptor(A);$gt(n)&&h!==null&&ame(t,e,[new Ra.default.type.Term(\"=\",[n,new Ra.default.type.Term(String(h.relativeCwd))])]),c0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},[\"workspace_field/3\"]:(t,e,r)=>{let[o,a,n]=r.args;if(!c0(o)||!c0(a)){t.throw_error(Ra.default.error.instantiation(r.indicator));return}let A=CH(t).tryWorkspaceByCwd(o.id);if(A==null)return;let p=(0,wH.default)(A.manifest.raw,a.id);typeof p>\"u\"||ame(t,e,[new Ra.default.type.Term(\"=\",[n,new Ra.default.type.Term(typeof p==\"object\"?JSON.stringify(p):p)])])},[\"workspace_field_test/3\"]:(t,e,r)=>{let[o,a,n]=r.args;t.prepend([new Ra.default.type.State(e.goal.replace(new Ra.default.type.Term(\"workspace_field_test\",[o,a,n,new Ra.default.type.Term(\"[]\",[])])),e.substitution,e)])},[\"workspace_field_test/4\"]:(t,e,r)=>{let[o,a,n,u]=r.args;if(!c0(o)||!c0(a)||!c0(n)||!edt(u)){t.throw_error(Ra.default.error.instantiation(r.indicator));return}let p=CH(t).tryWorkspaceByCwd(o.id);if(p==null)return;let h=(0,wH.default)(p.manifest.raw,a.id);if(typeof h>\"u\")return;let E={$$:h};for(let[v,b]of u.toJavaScript().entries())E[`$${v}`]=b;lme.default.runInNewContext(n.id,E)&&t.success(e)}},[\"project_workspaces_by_descriptor/3\",\"workspace_field/3\",\"workspace_field_test/3\",\"workspace_field_test/4\"])});var S2={};Kt(S2,{Constraints:()=>P2,DependencyType:()=>gme});function to(t){if(t instanceof vC.default.type.Num)return t.value;if(t instanceof vC.default.type.Term)switch(t.indicator){case\"throw/1\":return to(t.args[0]);case\"error/1\":return to(t.args[0]);case\"error/2\":if(t.args[0]instanceof vC.default.type.Term&&t.args[0].indicator===\"syntax_error/1\")return Object.assign(to(t.args[0]),...to(t.args[1]));{let e=to(t.args[0]);return e.message+=` (in ${to(t.args[1])})`,e}case\"syntax_error/1\":return new zt(43,`Syntax error: ${to(t.args[0])}`);case\"existence_error/2\":return new zt(44,`Existence error: ${to(t.args[0])} ${to(t.args[1])} not found`);case\"instantiation_error/0\":return new zt(75,\"Instantiation error: an argument is variable when an instantiated argument was expected\");case\"line/1\":return{line:to(t.args[0])};case\"column/1\":return{column:to(t.args[0])};case\"found/1\":return{found:to(t.args[0])};case\"./2\":return[to(t.args[0])].concat(to(t.args[1]));case\"//2\":return`${to(t.args[0])}/${to(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function pme(t){let e;try{e=to(t)}catch(r){throw typeof r==\"string\"?new zt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<\"u\"&&typeof e.column<\"u\"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function $d(t){return t.id===\"null\"?null:`${t.toJavaScript()}`}function rdt(t){if(t.id===\"null\")return null;{let e=t.toJavaScript();if(typeof e!=\"string\")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function u0(t){return typeof t==\"string\"?`'${t}'`:\"[]\"}var hme,vC,gme,fme,IH,P2,x2=Et(()=>{Ye();Ye();Pt();hme=$e(Yde()),vC=$e(EH());B2();Ame();(0,hme.default)(vC.default);gme=(o=>(o.Dependencies=\"dependencies\",o.DevDependencies=\"devDependencies\",o.PeerDependencies=\"peerDependencies\",o))(gme||{}),fme=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];IH=class{constructor(e,r){let o=1e3*e.workspaces.length;this.session=vC.default.create(o),ume(this.session,e),this.session.consult(\":- use_module(library(lists)).\"),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw pme(r);for(;;){let o=await this.fetchNextAnswer();if(o===null)throw new zt(79,\"Resolution limit exceeded\");if(!o)break;if(o.id===\"throw\")throw pme(o);yield o}}};P2=class{constructor(e){this.source=\"\";this.project=e;let r=e.configuration.get(\"constraintsPath\");oe.existsSync(r)&&(this.source=oe.readFileSync(r,\"utf8\"))}static async find(e){return new P2(e)}getProjectDatabase(){let e=\"\";for(let r of fme)e+=`dependency_type(${r}).\n`;for(let r of this.project.workspacesByCwd.values()){let o=r.relativeCwd;e+=`workspace(${u0(o)}).\n`,e+=`workspace_ident(${u0(o)}, ${u0(W.stringifyIdent(r.anchoredLocator))}).\n`,e+=`workspace_version(${u0(o)}, ${u0(r.manifest.version)}).\n`;for(let a of fme)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${u0(o)}, ${u0(W.stringifyIdent(n))}, ${u0(n.range)}, ${a}).\n`}return e+=`workspace(_) :- false.\n`,e+=`workspace_ident(_, _) :- false.\n`,e+=`workspace_version(_, _) :- false.\n`,e+=`workspace_has_dependency(_, _, _, _) :- false.\n`,e}getDeclarations(){let e=\"\";return e+=`gen_enforced_dependency(_, _, _, _) :- false.\n`,e+=`gen_enforced_field(_, _, _) :- false.\n`,e}get fullSource(){return`${this.getProjectDatabase()}\n${this.source}\n${this.getDeclarations()}`}createSession(){return new IH(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),o=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:u,dependencyType:A}of e){let p=I2([A,W.stringifyIdent(n)]),h=je.getMapWithDefault(o,a.cwd);je.getMapWithDefault(h,p).set(u??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:u}of r){let A=I2(n),p=je.getMapWithDefault(o,a.cwd);je.getMapWithDefault(p,A).set(JSON.parse(u)??void 0,new Set)}return{manifestUpdates:o,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let o of e.makeQuery(\"workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).\")){let a=K.resolve(this.project.cwd,$d(o.links.WorkspaceCwd)),n=$d(o.links.DependencyIdent),u=$d(o.links.DependencyRange),A=$d(o.links.DependencyType);if(a===null||n===null)throw new Error(\"Invalid rule\");let p=this.project.getWorkspaceByCwd(a),h=W.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:u,dependencyType:A})}return je.sortMap(r,[({dependencyRange:o})=>o!==null?\"0\":\"1\",({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({dependencyIdent:o})=>W.stringifyIdent(o)])}async genEnforcedFields(e){let r=[];for await(let o of e.makeQuery(\"workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).\")){let a=K.resolve(this.project.cwd,$d(o.links.WorkspaceCwd)),n=$d(o.links.FieldPath),u=rdt(o.links.FieldValue);if(a===null||n===null)throw new Error(\"Invalid rule\");let A=this.project.getWorkspaceByCwd(a);r.push({workspace:A,fieldPath:n,fieldValue:u})}return je.sortMap(r,[({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({fieldPath:o})=>o])}async*query(e){let r=this.createSession();for await(let o of r.makeQuery(e)){let a={};for(let[n,u]of Object.entries(o.links))n!==\"_\"&&(a[n]=$d(u));yield a}}}});var vme=_(vk=>{\"use strict\";Object.defineProperty(vk,\"__esModule\",{value:!0});function q2(t){let e=[...t.caches],r=e.shift();return r===void 0?Bme():{get(o,a,n={miss:()=>Promise.resolve()}){return r.get(o,a,n).catch(()=>q2({caches:e}).get(o,a,n))},set(o,a){return r.set(o,a).catch(()=>q2({caches:e}).set(o,a))},delete(o){return r.delete(o).catch(()=>q2({caches:e}).delete(o))},clear(){return r.clear().catch(()=>q2({caches:e}).clear())}}}function Bme(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}vk.createFallbackableCache=q2;vk.createNullCache=Bme});var Pme=_((QWt,Dme)=>{Dme.exports=vme()});var Sme=_(LH=>{\"use strict\";Object.defineProperty(LH,\"__esModule\",{value:!0});function wdt(t={serializable:!0}){let e={};return{get(r,o,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let u=o(),A=a&&a.miss||(()=>Promise.resolve());return u.then(p=>A(p)).then(()=>u)},set(r,o){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}LH.createInMemoryCache=wdt});var bme=_((TWt,xme)=>{xme.exports=Sme()});var Qme=_(Zc=>{\"use strict\";Object.defineProperty(Zc,\"__esModule\",{value:!0});function Idt(t,e,r){let o={\"x-algolia-api-key\":r,\"x-algolia-application-id\":e};return{headers(){return t===MH.WithinHeaders?o:{}},queryParameters(){return t===MH.WithinQueryParameters?o:{}}}}function Bdt(t){let e=0,r=()=>(e++,new Promise(o=>{setTimeout(()=>{o(t(r))},Math.min(100*e,1e3))}));return t(r)}function kme(t,e=(r,o)=>Promise.resolve()){return Object.assign(t,{wait(r){return kme(t.then(o=>Promise.all([e(o,r),o])).then(o=>o[1]))}})}function vdt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),o=t[e];t[e]=t[r],t[r]=o}return t}function Ddt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function Pdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var Sdt=\"4.14.2\",xdt=t=>()=>t.transporter.requester.destroy(),MH={WithinQueryParameters:0,WithinHeaders:1};Zc.AuthMode=MH;Zc.addMethods=Ddt;Zc.createAuth=Idt;Zc.createRetryablePromise=Bdt;Zc.createWaitablePromise=kme;Zc.destroy=xdt;Zc.encode=Pdt;Zc.shuffle=vdt;Zc.version=Sdt});var G2=_((NWt,Fme)=>{Fme.exports=Qme()});var Tme=_(OH=>{\"use strict\";Object.defineProperty(OH,\"__esModule\",{value:!0});var bdt={Delete:\"DELETE\",Get:\"GET\",Post:\"POST\",Put:\"PUT\"};OH.MethodEnum=bdt});var Y2=_((MWt,Rme)=>{Rme.exports=Tme()});var Jme=_(Fi=>{\"use strict\";Object.defineProperty(Fi,\"__esModule\",{value:!0});var Lme=Y2();function UH(t,e){let r=t||{},o=r.data||{};return Object.keys(r).forEach(a=>{[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(a)===-1&&(o[a]=r[a])}),{data:Object.entries(o).length>0?o:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var W2={Read:1,Write:2,Any:3},xC={Up:1,Down:2,Timeouted:3},Mme=2*60*1e3;function HH(t,e=xC.Up){return{...t,status:e,lastUpdate:Date.now()}}function Ome(t){return t.status===xC.Up||Date.now()-t.lastUpdate>Mme}function Ume(t){return t.status===xC.Timeouted&&Date.now()-t.lastUpdate<=Mme}function jH(t){return typeof t==\"string\"?{protocol:\"https\",url:t,accept:W2.Any}:{protocol:t.protocol||\"https\",url:t.url,accept:t.accept||W2.Any}}function kdt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(HH(r))))).then(r=>{let o=r.filter(A=>Ome(A)),a=r.filter(A=>Ume(A)),n=[...o,...a],u=n.length>0?n.map(A=>jH(A)):e;return{getTimeout(A,p){return(a.length===0&&A===0?1:a.length+3+A)*p},statelessHosts:u}})}var Qdt=({isTimedOut:t,status:e})=>!t&&~~e===0,Fdt=t=>{let e=t.status;return t.isTimedOut||Qdt(t)||~~(e/100)!==2&&~~(e/100)!==4},Tdt=({status:t})=>~~(t/100)===2,Rdt=(t,e)=>Fdt(t)?e.onRetry(t):Tdt(t)?e.onSuccess(t):e.onFail(t);function Nme(t,e,r,o){let a=[],n=Gme(r,o),u=Yme(t,o),A=r.method,p=r.method!==Lme.MethodEnum.Get?{}:{...r.data,...o.data},h={\"x-algolia-agent\":t.userAgent.value,...t.queryParameters,...p,...o.queryParameters},E=0,I=(v,b)=>{let C=v.pop();if(C===void 0)throw Kme(_H(a));let T={data:n,headers:u,method:A,url:jme(C,r.path,h),connectTimeout:b(E,t.timeouts.connect),responseTimeout:b(E,o.timeout)},L=J=>{let te={request:T,response:J,host:C,triesLeft:v.length};return a.push(te),te},U={onSuccess:J=>_me(J),onRetry(J){let te=L(J);return J.isTimedOut&&E++,Promise.all([t.logger.info(\"Retryable failure\",qH(te)),t.hostsCache.set(C,HH(C,J.isTimedOut?xC.Timeouted:xC.Down))]).then(()=>I(v,b))},onFail(J){throw L(J),Hme(J,_H(a))}};return t.requester.send(T).then(J=>Rdt(J,U))};return kdt(t.hostsCache,e).then(v=>I([...v.statelessHosts].reverse(),v.getTimeout))}function Ndt(t){let{hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,hosts:p,queryParameters:h,headers:E}=t,I={hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,headers:E,queryParameters:h,hosts:p.map(v=>jH(v)),read(v,b){let C=UH(b,I.timeouts.read),T=()=>Nme(I,I.hosts.filter(J=>(J.accept&W2.Read)!==0),v,C);if((C.cacheable!==void 0?C.cacheable:v.cacheable)!==!0)return T();let U={request:v,mappedRequestOptions:C,transporter:{queryParameters:I.queryParameters,headers:I.headers}};return I.responsesCache.get(U,()=>I.requestsCache.get(U,()=>I.requestsCache.set(U,T()).then(J=>Promise.all([I.requestsCache.delete(U),J]),J=>Promise.all([I.requestsCache.delete(U),Promise.reject(J)])).then(([J,te])=>te)),{miss:J=>I.responsesCache.set(U,J)})},write(v,b){return Nme(I,I.hosts.filter(C=>(C.accept&W2.Write)!==0),v,UH(b,I.timeouts.write))}};return I}function Ldt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let o=`; ${r.segment}${r.version!==void 0?` (${r.version})`:\"\"}`;return e.value.indexOf(o)===-1&&(e.value=`${e.value}${o}`),e}};return e}function _me(t){try{return JSON.parse(t.content)}catch(e){throw Vme(e.message,t)}}function Hme({content:t,status:e},r){let o=t;try{o=JSON.parse(t).message}catch{}return Wme(o,e,r)}function Mdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function jme(t,e,r){let o=qme(r),a=`${t.protocol}://${t.url}/${e.charAt(0)===\"/\"?e.substr(1):e}`;return o.length&&(a+=`?${o}`),a}function qme(t){let e=r=>Object.prototype.toString.call(r)===\"[object Object]\"||Object.prototype.toString.call(r)===\"[object Array]\";return Object.keys(t).map(r=>Mdt(\"%s=%s\",r,e(t[r])?JSON.stringify(t[r]):t[r])).join(\"&\")}function Gme(t,e){if(t.method===Lme.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function Yme(t,e){let r={...t.headers,...e.headers},o={};return Object.keys(r).forEach(a=>{let n=r[a];o[a.toLowerCase()]=n}),o}function _H(t){return t.map(e=>qH(e))}function qH(t){let e=t.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function Wme(t,e,r){return{name:\"ApiError\",message:t,status:e,transporterStackTrace:r}}function Vme(t,e){return{name:\"DeserializationError\",message:t,response:e}}function Kme(t){return{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:t}}Fi.CallEnum=W2;Fi.HostStatusEnum=xC;Fi.createApiError=Wme;Fi.createDeserializationError=Vme;Fi.createMappedRequestOptions=UH;Fi.createRetryError=Kme;Fi.createStatefulHost=HH;Fi.createStatelessHost=jH;Fi.createTransporter=Ndt;Fi.createUserAgent=Ldt;Fi.deserializeFailure=Hme;Fi.deserializeSuccess=_me;Fi.isStatefulHostTimeouted=Ume;Fi.isStatefulHostUp=Ome;Fi.serializeData=Gme;Fi.serializeHeaders=Yme;Fi.serializeQueryParameters=qme;Fi.serializeUrl=jme;Fi.stackFrameWithoutCredentials=qH;Fi.stackTraceWithoutCredentials=_H});var V2=_((UWt,zme)=>{zme.exports=Jme()});var Xme=_(d0=>{\"use strict\";Object.defineProperty(d0,\"__esModule\",{value:!0});var bC=G2(),Odt=V2(),K2=Y2(),Udt=t=>{let e=t.region||\"us\",r=bC.createAuth(bC.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Odt.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return bC.addMethods({appId:a,transporter:o},t.methods)},_dt=t=>(e,r)=>t.transporter.write({method:K2.MethodEnum.Post,path:\"2/abtests\",data:e},r),Hdt=t=>(e,r)=>t.transporter.write({method:K2.MethodEnum.Delete,path:bC.encode(\"2/abtests/%s\",e)},r),jdt=t=>(e,r)=>t.transporter.read({method:K2.MethodEnum.Get,path:bC.encode(\"2/abtests/%s\",e)},r),qdt=t=>e=>t.transporter.read({method:K2.MethodEnum.Get,path:\"2/abtests\"},e),Gdt=t=>(e,r)=>t.transporter.write({method:K2.MethodEnum.Post,path:bC.encode(\"2/abtests/%s/stop\",e)},r);d0.addABTest=_dt;d0.createAnalyticsClient=Udt;d0.deleteABTest=Hdt;d0.getABTest=jdt;d0.getABTests=qdt;d0.stopABTest=Gdt});var $me=_((HWt,Zme)=>{Zme.exports=Xme()});var tye=_(J2=>{\"use strict\";Object.defineProperty(J2,\"__esModule\",{value:!0});var GH=G2(),Ydt=V2(),eye=Y2(),Wdt=t=>{let e=t.region||\"us\",r=GH.createAuth(GH.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Ydt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return GH.addMethods({appId:t.appId,transporter:o},t.methods)},Vdt=t=>e=>t.transporter.read({method:eye.MethodEnum.Get,path:\"1/strategies/personalization\"},e),Kdt=t=>(e,r)=>t.transporter.write({method:eye.MethodEnum.Post,path:\"1/strategies/personalization\",data:e},r);J2.createPersonalizationClient=Wdt;J2.getPersonalizationStrategy=Vdt;J2.setPersonalizationStrategy=Kdt});var nye=_((qWt,rye)=>{rye.exports=tye()});var mye=_(Ft=>{\"use strict\";Object.defineProperty(Ft,\"__esModule\",{value:!0});var Gt=G2(),Na=V2(),Ir=Y2(),Jdt=Be(\"crypto\");function Dk(t){let e=r=>t.request(r).then(o=>{if(t.batch!==void 0&&t.batch(o.hits),!t.shouldStop(o))return o.cursor?e({cursor:o.cursor}):e({page:(r.page||0)+1})});return e({})}var zdt=t=>{let e=t.appId,r=Gt.createAuth(t.authMode!==void 0?t.authMode:Gt.AuthMode.WithinHeaders,e,t.apiKey),o=Na.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:Na.CallEnum.Read},{url:`${e}.algolia.net`,accept:Na.CallEnum.Write}].concat(Gt.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),\"content-type\":\"application/x-www-form-urlencoded\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:o,appId:e,addAlgoliaAgent(n,u){o.userAgent.add({segment:n,version:u})},clearCache(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})}};return Gt.addMethods(a,t.methods)};function iye(){return{name:\"MissingObjectIDError\",message:\"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option.\"}}function sye(){return{name:\"ObjectNotFoundError\",message:\"Object not found.\"}}function oye(){return{name:\"ValidUntilNotFoundError\",message:\"ValidUntil not found in given secured api key.\"}}var Xdt=t=>(e,r)=>{let{queryParameters:o,...a}=r||{},n={acl:e,...o!==void 0?{queryParameters:o}:{}},u=(A,p)=>Gt.createRetryablePromise(h=>z2(t)(A.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/keys\",data:n},a),u)},Zdt=t=>(e,r,o)=>{let a=Na.createMappedRequestOptions(o);return a.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping\",data:{cluster:r}},a)},$dt=t=>(e,r,o)=>t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping/batch\",data:{users:e,cluster:r}},o),emt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(o,a)=>kC(t)(o.taskID,a)),Pk=t=>(e,r,o)=>{let a=(n,u)=>X2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"copy\",destination:r}},o),a)},tmt=t=>(e,r,o)=>Pk(t)(e,r,{...o,scope:[xk.Rules]}),rmt=t=>(e,r,o)=>Pk(t)(e,r,{...o,scope:[xk.Settings]}),nmt=t=>(e,r,o)=>Pk(t)(e,r,{...o,scope:[xk.Synonyms]}),imt=t=>(e,r)=>e.method===Ir.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),smt=t=>(e,r)=>{let o=(a,n)=>Gt.createRetryablePromise(u=>z2(t)(e,n).then(u).catch(A=>{if(A.status!==404)throw A}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/keys/%s\",e)},r),o)},omt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"deleteEntry\",body:{objectID:n}}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>kC(t)(n.taskID,u))},amt=()=>(t,e)=>{let r=Na.serializeQueryParameters(e),o=Jdt.createHmac(\"sha256\",t).update(r).digest(\"hex\");return Buffer.from(o+r).toString(\"base64\")},z2=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/keys/%s\",e)},r),aye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/task/%s\",e.toString())},r),lmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"/1/dictionaries/*/settings\"},e),cmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/logs\"},e),umt=()=>t=>{let e=Buffer.from(t,\"base64\").toString(\"ascii\"),r=/validUntil=(\\d+)/,o=e.match(r);if(o===null)throw oye();return parseInt(o[1],10)-Math.round(new Date().getTime()/1e3)},Amt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping/top\"},e),fmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/clusters/mapping/%s\",e)},r),pmt=t=>e=>{let{retrieveMappings:r,...o}=e||{};return r===!0&&(o.getClusters=!0),t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping/pending\"},o)},X2=t=>(e,r={})=>{let o={transporter:t.transporter,appId:t.appId,indexName:e};return Gt.addMethods(o,r.methods)},hmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/keys\"},e),gmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters\"},e),dmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/indexes\"},e),mmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping\"},e),ymt=t=>(e,r,o)=>{let a=(n,u)=>X2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"move\",destination:r}},o),a)},Emt=t=>(e,r)=>{let o=(a,n)=>Promise.all(Object.keys(a.taskID).map(u=>X2(t)(u,{methods:{waitTask:Zi}}).waitTask(a.taskID[u],n)));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/indexes/*/batch\",data:{requests:e}},r),o)},Cmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:e}},r),wmt=t=>(e,r)=>{let o=e.map(a=>({...a,params:Na.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/queries\",data:{requests:o},cacheable:!0},r)},Imt=t=>(e,r)=>Promise.all(e.map(o=>{let{facetName:a,facetQuery:n,...u}=o.params;return X2(t)(o.indexName,{methods:{searchForFacetValues:hye}}).searchForFacetValues(a,n,{...r,...u})})),Bmt=t=>(e,r)=>{let o=Na.createMappedRequestOptions(r);return o.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:Ir.MethodEnum.Delete,path:\"1/clusters/mapping\"},o)},vmt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:a}},o),(n,u)=>kC(t)(n.taskID,u))},Dmt=t=>(e,r)=>{let o=(a,n)=>Gt.createRetryablePromise(u=>z2(t)(e,n).catch(A=>{if(A.status!==404)throw A;return u()}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/keys/%s/restore\",e)},r),o)},Pmt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>kC(t)(n.taskID,u))},Smt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/search\",e),data:{query:r},cacheable:!0},o),xmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping/search\",data:{query:e}},r),bmt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:\"/1/dictionaries/*/settings\",data:e},r),(o,a)=>kC(t)(o.taskID,a)),kmt=t=>(e,r)=>{let o=Object.assign({},r),{queryParameters:a,...n}=r||{},u=a?{queryParameters:a}:{},A=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"],p=E=>Object.keys(o).filter(I=>A.indexOf(I)!==-1).every(I=>E[I]===o[I]),h=(E,I)=>Gt.createRetryablePromise(v=>z2(t)(e,I).then(b=>p(b)?Promise.resolve():v()));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:Gt.encode(\"1/keys/%s\",e),data:u},n),h)},kC=t=>(e,r)=>Gt.createRetryablePromise(o=>aye(t)(e,r).then(a=>a.status!==\"published\"?o():void 0)),lye=t=>(e,r)=>{let o=(a,n)=>Zi(t)(a.taskID,n);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/batch\",t.indexName),data:{requests:e}},r),o)},Qmt=t=>e=>Dk({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/browse\",t.indexName),data:r},e)}),Fmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Dk({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return gye(t)(\"\",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Tmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Dk({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return dye(t)(\"\",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Sk=t=>(e,r,o)=>{let{batchSize:a,...n}=o||{},u={taskIDs:[],objectIDs:[]},A=(p=0)=>{let h=[],E;for(E=p;E<e.length&&(h.push(e[E]),h.length!==(a||1e3));E++);return h.length===0?Promise.resolve(u):lye(t)(h.map(I=>({action:r,body:I})),n).then(I=>(u.objectIDs=u.objectIDs.concat(I.objectIDs),u.taskIDs.push(I.taskID),E++,A(E)))};return Gt.createWaitablePromise(A(),(p,h)=>Promise.all(p.taskIDs.map(E=>Zi(t)(E,h))))},Rmt=t=>e=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/clear\",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),Nmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Na.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/clear\",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Lmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Na.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/clear\",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Mmt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/deleteByQuery\",t.indexName),data:e},r),(o,a)=>Zi(t)(o.taskID,a)),Omt=t=>e=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s\",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),Umt=t=>(e,r)=>Gt.createWaitablePromise(cye(t)([e],r).then(o=>({taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),cye=t=>(e,r)=>{let o=e.map(a=>({objectID:a}));return Sk(t)(o,rm.DeleteObject,r)},_mt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Hmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},jmt=t=>e=>uye(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),qmt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/answers/%s/prediction\",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},o),Gmt=t=>(e,r)=>{let{query:o,paginate:a,...n}=r||{},u=0,A=()=>pye(t)(o||\"\",{...n,page:u}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:u};if(u++,a===!1||u>=p.nbPages)throw sye();return A()});return A()},Ymt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/%s\",t.indexName,e)},r),Wmt=()=>(t,e)=>{for(let[r,o]of Object.entries(t.hits))if(o.objectID===e)return parseInt(r,10);return-1},Vmt=t=>(e,r)=>{let{attributesToRetrieve:o,...a}=r||{},n=e.map(u=>({indexName:t.indexName,objectID:u,...o?{attributesToRetrieve:o}:{}}));return t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:n}},a)},Kmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},r),uye=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/settings\",t.indexName),data:{getVersion:2}},e),Jmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},r),Aye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/task/%s\",t.indexName,e.toString())},r),zmt=t=>(e,r)=>Gt.createWaitablePromise(fye(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),fye=t=>(e,r)=>{let{createIfNotExists:o,...a}=r||{},n=o?rm.PartialUpdateObject:rm.PartialUpdateObjectNoCreate;return Sk(t)(e,n,a)},Xmt=t=>(e,r)=>{let{safe:o,autoGenerateObjectIDIfNotExist:a,batchSize:n,...u}=r||{},A=(C,T,L,U)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",C),data:{operation:L,destination:T}},U),(J,te)=>Zi(t)(J.taskID,te)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=YH({appId:t.appId,transporter:t.transporter,indexName:h}),I=[],v=A(t.indexName,h,\"copy\",{...u,scope:[\"settings\",\"synonyms\",\"rules\"]});I.push(v);let b=(o?v.wait(u):v).then(()=>{let C=E(e,{...u,autoGenerateObjectIDIfNotExist:a,batchSize:n});return I.push(C),o?C.wait(u):C}).then(()=>{let C=A(h,t.indexName,\"move\",u);return I.push(C),o?C.wait(u):C}).then(()=>Promise.all(I)).then(([C,T,L])=>({objectIDs:T.objectIDs,taskIDs:[C.taskID,...T.taskIDs,L.taskID]}));return Gt.createWaitablePromise(b,(C,T)=>Promise.all(I.map(L=>L.wait(T))))},Zmt=t=>(e,r)=>WH(t)(e,{...r,clearExistingRules:!0}),$mt=t=>(e,r)=>VH(t)(e,{...r,clearExistingSynonyms:!0}),eyt=t=>(e,r)=>Gt.createWaitablePromise(YH(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),YH=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:o,...a}=r||{},n=o?rm.AddObject:rm.UpdateObject;if(n===rm.UpdateObject){for(let u of e)if(u.objectID===void 0)return Gt.createWaitablePromise(Promise.reject(iye()))}return Sk(t)(e,n,a)},tyt=t=>(e,r)=>WH(t)([e],r),WH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingRules:a,...n}=r||{},u=Na.createMappedRequestOptions(n);return o&&(u.queryParameters.forwardToReplicas=1),a&&(u.queryParameters.clearExistingRules=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/batch\",t.indexName),data:e},u),(A,p)=>Zi(t)(A.taskID,p))},ryt=t=>(e,r)=>VH(t)([e],r),VH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingSynonyms:a,replaceExistingSynonyms:n,...u}=r||{},A=Na.createMappedRequestOptions(u);return o&&(A.queryParameters.forwardToReplicas=1),(n||a)&&(A.queryParameters.replaceExistingSynonyms=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/batch\",t.indexName),data:e},A),(p,h)=>Zi(t)(p.taskID,h))},pye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/query\",t.indexName),data:{query:e},cacheable:!0},r),hye=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/facets/%s/query\",t.indexName,e),data:{facetQuery:r},cacheable:!0},o),gye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/search\",t.indexName),data:{query:e}},r),dye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/search\",t.indexName),data:{query:e}},r),nyt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:Gt.encode(\"1/indexes/%s/settings\",t.indexName),data:e},n),(u,A)=>Zi(t)(u.taskID,A))},Zi=t=>(e,r)=>Gt.createRetryablePromise(o=>Aye(t)(e,r).then(a=>a.status!==\"published\"?o():void 0)),iyt={AddObject:\"addObject\",Analytics:\"analytics\",Browser:\"browse\",DeleteIndex:\"deleteIndex\",DeleteObject:\"deleteObject\",EditSettings:\"editSettings\",ListIndexes:\"listIndexes\",Logs:\"logs\",Personalization:\"personalization\",Recommendation:\"recommendation\",Search:\"search\",SeeUnretrievableAttributes:\"seeUnretrievableAttributes\",Settings:\"settings\",Usage:\"usage\"},rm={AddObject:\"addObject\",UpdateObject:\"updateObject\",PartialUpdateObject:\"partialUpdateObject\",PartialUpdateObjectNoCreate:\"partialUpdateObjectNoCreate\",DeleteObject:\"deleteObject\",DeleteIndex:\"delete\",ClearIndex:\"clear\"},xk={Settings:\"settings\",Synonyms:\"synonyms\",Rules:\"rules\"},syt={None:\"none\",StopIfEnoughMatches:\"stopIfEnoughMatches\"},oyt={Synonym:\"synonym\",OneWaySynonym:\"oneWaySynonym\",AltCorrection1:\"altCorrection1\",AltCorrection2:\"altCorrection2\",Placeholder:\"placeholder\"};Ft.ApiKeyACLEnum=iyt;Ft.BatchActionEnum=rm;Ft.ScopeEnum=xk;Ft.StrategyEnum=syt;Ft.SynonymEnum=oyt;Ft.addApiKey=Xdt;Ft.assignUserID=Zdt;Ft.assignUserIDs=$dt;Ft.batch=lye;Ft.browseObjects=Qmt;Ft.browseRules=Fmt;Ft.browseSynonyms=Tmt;Ft.chunkedBatch=Sk;Ft.clearDictionaryEntries=emt;Ft.clearObjects=Rmt;Ft.clearRules=Nmt;Ft.clearSynonyms=Lmt;Ft.copyIndex=Pk;Ft.copyRules=tmt;Ft.copySettings=rmt;Ft.copySynonyms=nmt;Ft.createBrowsablePromise=Dk;Ft.createMissingObjectIDError=iye;Ft.createObjectNotFoundError=sye;Ft.createSearchClient=zdt;Ft.createValidUntilNotFoundError=oye;Ft.customRequest=imt;Ft.deleteApiKey=smt;Ft.deleteBy=Mmt;Ft.deleteDictionaryEntries=omt;Ft.deleteIndex=Omt;Ft.deleteObject=Umt;Ft.deleteObjects=cye;Ft.deleteRule=_mt;Ft.deleteSynonym=Hmt;Ft.exists=jmt;Ft.findAnswers=qmt;Ft.findObject=Gmt;Ft.generateSecuredApiKey=amt;Ft.getApiKey=z2;Ft.getAppTask=aye;Ft.getDictionarySettings=lmt;Ft.getLogs=cmt;Ft.getObject=Ymt;Ft.getObjectPosition=Wmt;Ft.getObjects=Vmt;Ft.getRule=Kmt;Ft.getSecuredApiKeyRemainingValidity=umt;Ft.getSettings=uye;Ft.getSynonym=Jmt;Ft.getTask=Aye;Ft.getTopUserIDs=Amt;Ft.getUserID=fmt;Ft.hasPendingMappings=pmt;Ft.initIndex=X2;Ft.listApiKeys=hmt;Ft.listClusters=gmt;Ft.listIndices=dmt;Ft.listUserIDs=mmt;Ft.moveIndex=ymt;Ft.multipleBatch=Emt;Ft.multipleGetObjects=Cmt;Ft.multipleQueries=wmt;Ft.multipleSearchForFacetValues=Imt;Ft.partialUpdateObject=zmt;Ft.partialUpdateObjects=fye;Ft.removeUserID=Bmt;Ft.replaceAllObjects=Xmt;Ft.replaceAllRules=Zmt;Ft.replaceAllSynonyms=$mt;Ft.replaceDictionaryEntries=vmt;Ft.restoreApiKey=Dmt;Ft.saveDictionaryEntries=Pmt;Ft.saveObject=eyt;Ft.saveObjects=YH;Ft.saveRule=tyt;Ft.saveRules=WH;Ft.saveSynonym=ryt;Ft.saveSynonyms=VH;Ft.search=pye;Ft.searchDictionaryEntries=Smt;Ft.searchForFacetValues=hye;Ft.searchRules=gye;Ft.searchSynonyms=dye;Ft.searchUserIDs=xmt;Ft.setDictionarySettings=bmt;Ft.setSettings=nyt;Ft.updateApiKey=kmt;Ft.waitAppTask=kC;Ft.waitTask=Zi});var Eye=_((YWt,yye)=>{yye.exports=mye()});var Cye=_(bk=>{\"use strict\";Object.defineProperty(bk,\"__esModule\",{value:!0});function ayt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var lyt={Debug:1,Info:2,Error:3};bk.LogLevelEnum=lyt;bk.createNullLogger=ayt});var Iye=_((VWt,wye)=>{wye.exports=Cye()});var Pye=_(KH=>{\"use strict\";Object.defineProperty(KH,\"__esModule\",{value:!0});var Bye=Be(\"http\"),vye=Be(\"https\"),cyt=Be(\"url\"),Dye={keepAlive:!0},uyt=new Bye.Agent(Dye),Ayt=new vye.Agent(Dye);function fyt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:o={}}={}){let a=e||t||uyt,n=r||t||Ayt;return{send(u){return new Promise(A=>{let p=cyt.parse(u.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...o,agent:p.protocol===\"https:\"?n:a,hostname:p.hostname,path:h,method:u.method,headers:{...o&&o.headers?o.headers:{},...u.headers},...p.port!==void 0?{port:p.port||\"\"}:{}},I=(p.protocol===\"https:\"?vye:Bye).request(E,T=>{let L=[];T.on(\"data\",U=>{L=L.concat(U)}),T.on(\"end\",()=>{clearTimeout(b),clearTimeout(C),A({status:T.statusCode||0,content:Buffer.concat(L).toString(),isTimedOut:!1})})}),v=(T,L)=>setTimeout(()=>{I.abort(),A({status:0,content:L,isTimedOut:!0})},T*1e3),b=v(u.connectTimeout,\"Connection timeout\"),C;I.on(\"error\",T=>{clearTimeout(b),clearTimeout(C),A({status:0,content:T.message,isTimedOut:!1})}),I.once(\"response\",()=>{clearTimeout(b),C=v(u.responseTimeout,\"Socket timeout\")}),u.data!==void 0&&I.write(u.data),I.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}KH.createNodeHttpRequester=fyt});var xye=_((JWt,Sye)=>{Sye.exports=Pye()});var Fye=_((zWt,Qye)=>{\"use strict\";var bye=Pme(),pyt=bme(),QC=$me(),zH=G2(),JH=nye(),Ut=Eye(),hyt=Iye(),gyt=xye(),dyt=V2();function kye(t,e,r){let o={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:gyt.createNodeHttpRequester(),logger:hyt.createNullLogger(),responsesCache:bye.createNullCache(),requestsCache:bye.createNullCache(),hostsCache:pyt.createInMemoryCache(),userAgent:dyt.createUserAgent(zH.version).add({segment:\"Node.js\",version:process.versions.node})},a={...o,...r},n=()=>u=>JH.createPersonalizationClient({...o,...u,methods:{getPersonalizationStrategy:JH.getPersonalizationStrategy,setPersonalizationStrategy:JH.setPersonalizationStrategy}});return Ut.createSearchClient({...a,methods:{search:Ut.multipleQueries,searchForFacetValues:Ut.multipleSearchForFacetValues,multipleBatch:Ut.multipleBatch,multipleGetObjects:Ut.multipleGetObjects,multipleQueries:Ut.multipleQueries,copyIndex:Ut.copyIndex,copySettings:Ut.copySettings,copyRules:Ut.copyRules,copySynonyms:Ut.copySynonyms,moveIndex:Ut.moveIndex,listIndices:Ut.listIndices,getLogs:Ut.getLogs,listClusters:Ut.listClusters,multipleSearchForFacetValues:Ut.multipleSearchForFacetValues,getApiKey:Ut.getApiKey,addApiKey:Ut.addApiKey,listApiKeys:Ut.listApiKeys,updateApiKey:Ut.updateApiKey,deleteApiKey:Ut.deleteApiKey,restoreApiKey:Ut.restoreApiKey,assignUserID:Ut.assignUserID,assignUserIDs:Ut.assignUserIDs,getUserID:Ut.getUserID,searchUserIDs:Ut.searchUserIDs,listUserIDs:Ut.listUserIDs,getTopUserIDs:Ut.getTopUserIDs,removeUserID:Ut.removeUserID,hasPendingMappings:Ut.hasPendingMappings,generateSecuredApiKey:Ut.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Ut.getSecuredApiKeyRemainingValidity,destroy:zH.destroy,clearDictionaryEntries:Ut.clearDictionaryEntries,deleteDictionaryEntries:Ut.deleteDictionaryEntries,getDictionarySettings:Ut.getDictionarySettings,getAppTask:Ut.getAppTask,replaceDictionaryEntries:Ut.replaceDictionaryEntries,saveDictionaryEntries:Ut.saveDictionaryEntries,searchDictionaryEntries:Ut.searchDictionaryEntries,setDictionarySettings:Ut.setDictionarySettings,waitAppTask:Ut.waitAppTask,customRequest:Ut.customRequest,initIndex:u=>A=>Ut.initIndex(u)(A,{methods:{batch:Ut.batch,delete:Ut.deleteIndex,findAnswers:Ut.findAnswers,getObject:Ut.getObject,getObjects:Ut.getObjects,saveObject:Ut.saveObject,saveObjects:Ut.saveObjects,search:Ut.search,searchForFacetValues:Ut.searchForFacetValues,waitTask:Ut.waitTask,setSettings:Ut.setSettings,getSettings:Ut.getSettings,partialUpdateObject:Ut.partialUpdateObject,partialUpdateObjects:Ut.partialUpdateObjects,deleteObject:Ut.deleteObject,deleteObjects:Ut.deleteObjects,deleteBy:Ut.deleteBy,clearObjects:Ut.clearObjects,browseObjects:Ut.browseObjects,getObjectPosition:Ut.getObjectPosition,findObject:Ut.findObject,exists:Ut.exists,saveSynonym:Ut.saveSynonym,saveSynonyms:Ut.saveSynonyms,getSynonym:Ut.getSynonym,searchSynonyms:Ut.searchSynonyms,browseSynonyms:Ut.browseSynonyms,deleteSynonym:Ut.deleteSynonym,clearSynonyms:Ut.clearSynonyms,replaceAllObjects:Ut.replaceAllObjects,replaceAllSynonyms:Ut.replaceAllSynonyms,searchRules:Ut.searchRules,getRule:Ut.getRule,deleteRule:Ut.deleteRule,saveRule:Ut.saveRule,saveRules:Ut.saveRules,replaceAllRules:Ut.replaceAllRules,browseRules:Ut.browseRules,clearRules:Ut.clearRules}}),initAnalytics:()=>u=>QC.createAnalyticsClient({...o,...u,methods:{addABTest:QC.addABTest,getABTest:QC.getABTest,getABTests:QC.getABTests,stopABTest:QC.stopABTest,deleteABTest:QC.deleteABTest}}),initPersonalization:n,initRecommendation:()=>u=>(a.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),n()(u))}})}kye.version=zH.version;Qye.exports=kye});var ZH=_((XWt,XH)=>{var Tye=Fye();XH.exports=Tye;XH.exports.default=Tye});var t6=_(($Wt,Lye)=>{\"use strict\";var Nye=Object.getOwnPropertySymbols,yyt=Object.prototype.hasOwnProperty,Eyt=Object.prototype.propertyIsEnumerable;function Cyt(t){if(t==null)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}function wyt(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",Object.getOwnPropertyNames(t)[0]===\"5\")return!1;for(var e={},r=0;r<10;r++)e[\"_\"+String.fromCharCode(r)]=r;var o=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(o.join(\"\")!==\"0123456789\")return!1;var a={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join(\"\")===\"abcdefghijklmnopqrst\"}catch{return!1}}Lye.exports=wyt()?Object.assign:function(t,e){for(var r,o=Cyt(t),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var u in r)yyt.call(r,u)&&(o[u]=r[u]);if(Nye){a=Nye(r);for(var A=0;A<a.length;A++)Eyt.call(r,a[A])&&(o[a[A]]=r[a[A]])}}return o}});var Kye=_(Nn=>{\"use strict\";var o6=t6(),$c=typeof Symbol==\"function\"&&Symbol.for,Z2=$c?Symbol.for(\"react.element\"):60103,Iyt=$c?Symbol.for(\"react.portal\"):60106,Byt=$c?Symbol.for(\"react.fragment\"):60107,vyt=$c?Symbol.for(\"react.strict_mode\"):60108,Dyt=$c?Symbol.for(\"react.profiler\"):60114,Pyt=$c?Symbol.for(\"react.provider\"):60109,Syt=$c?Symbol.for(\"react.context\"):60110,xyt=$c?Symbol.for(\"react.forward_ref\"):60112,byt=$c?Symbol.for(\"react.suspense\"):60113,kyt=$c?Symbol.for(\"react.memo\"):60115,Qyt=$c?Symbol.for(\"react.lazy\"):60116,Mye=typeof Symbol==\"function\"&&Symbol.iterator;function $2(t){for(var e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+t,r=1;r<arguments.length;r++)e+=\"&args[]=\"+encodeURIComponent(arguments[r]);return\"Minified React error #\"+t+\"; visit \"+e+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var Oye={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Uye={};function FC(t,e,r){this.props=t,this.context=e,this.refs=Uye,this.updater=r||Oye}FC.prototype.isReactComponent={};FC.prototype.setState=function(t,e){if(typeof t!=\"object\"&&typeof t!=\"function\"&&t!=null)throw Error($2(85));this.updater.enqueueSetState(this,t,e,\"setState\")};FC.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,\"forceUpdate\")};function _ye(){}_ye.prototype=FC.prototype;function a6(t,e,r){this.props=t,this.context=e,this.refs=Uye,this.updater=r||Oye}var l6=a6.prototype=new _ye;l6.constructor=a6;o6(l6,FC.prototype);l6.isPureReactComponent=!0;var c6={current:null},Hye=Object.prototype.hasOwnProperty,jye={key:!0,ref:!0,__self:!0,__source:!0};function qye(t,e,r){var o,a={},n=null,u=null;if(e!=null)for(o in e.ref!==void 0&&(u=e.ref),e.key!==void 0&&(n=\"\"+e.key),e)Hye.call(e,o)&&!jye.hasOwnProperty(o)&&(a[o]=e[o]);var A=arguments.length-2;if(A===1)a.children=r;else if(1<A){for(var p=Array(A),h=0;h<A;h++)p[h]=arguments[h+2];a.children=p}if(t&&t.defaultProps)for(o in A=t.defaultProps,A)a[o]===void 0&&(a[o]=A[o]);return{$$typeof:Z2,type:t,key:n,ref:u,props:a,_owner:c6.current}}function Fyt(t,e){return{$$typeof:Z2,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}function u6(t){return typeof t==\"object\"&&t!==null&&t.$$typeof===Z2}function Tyt(t){var e={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+t).replace(/[=:]/g,function(r){return e[r]})}var Gye=/\\/+/g,kk=[];function Yye(t,e,r,o){if(kk.length){var a=kk.pop();return a.result=t,a.keyPrefix=e,a.func=r,a.context=o,a.count=0,a}return{result:t,keyPrefix:e,func:r,context:o,count:0}}function Wye(t){t.result=null,t.keyPrefix=null,t.func=null,t.context=null,t.count=0,10>kk.length&&kk.push(t)}function n6(t,e,r,o){var a=typeof t;(a===\"undefined\"||a===\"boolean\")&&(t=null);var n=!1;if(t===null)n=!0;else switch(a){case\"string\":case\"number\":n=!0;break;case\"object\":switch(t.$$typeof){case Z2:case Iyt:n=!0}}if(n)return r(o,t,e===\"\"?\".\"+r6(t,0):e),1;if(n=0,e=e===\"\"?\".\":e+\":\",Array.isArray(t))for(var u=0;u<t.length;u++){a=t[u];var A=e+r6(a,u);n+=n6(a,A,r,o)}else if(t===null||typeof t!=\"object\"?A=null:(A=Mye&&t[Mye]||t[\"@@iterator\"],A=typeof A==\"function\"?A:null),typeof A==\"function\")for(t=A.call(t),u=0;!(a=t.next()).done;)a=a.value,A=e+r6(a,u++),n+=n6(a,A,r,o);else if(a===\"object\")throw r=\"\"+t,Error($2(31,r===\"[object Object]\"?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":r,\"\"));return n}function i6(t,e,r){return t==null?0:n6(t,\"\",e,r)}function r6(t,e){return typeof t==\"object\"&&t!==null&&t.key!=null?Tyt(t.key):e.toString(36)}function Ryt(t,e){t.func.call(t.context,e,t.count++)}function Nyt(t,e,r){var o=t.result,a=t.keyPrefix;t=t.func.call(t.context,e,t.count++),Array.isArray(t)?s6(t,o,r,function(n){return n}):t!=null&&(u6(t)&&(t=Fyt(t,a+(!t.key||e&&e.key===t.key?\"\":(\"\"+t.key).replace(Gye,\"$&/\")+\"/\")+r)),o.push(t))}function s6(t,e,r,o,a){var n=\"\";r!=null&&(n=(\"\"+r).replace(Gye,\"$&/\")+\"/\"),e=Yye(e,n,o,a),i6(t,Nyt,e),Wye(e)}var Vye={current:null};function zf(){var t=Vye.current;if(t===null)throw Error($2(321));return t}var Lyt={ReactCurrentDispatcher:Vye,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:c6,IsSomeRendererActing:{current:!1},assign:o6};Nn.Children={map:function(t,e,r){if(t==null)return t;var o=[];return s6(t,o,null,e,r),o},forEach:function(t,e,r){if(t==null)return t;e=Yye(null,null,e,r),i6(t,Ryt,e),Wye(e)},count:function(t){return i6(t,function(){return null},null)},toArray:function(t){var e=[];return s6(t,e,null,function(r){return r}),e},only:function(t){if(!u6(t))throw Error($2(143));return t}};Nn.Component=FC;Nn.Fragment=Byt;Nn.Profiler=Dyt;Nn.PureComponent=a6;Nn.StrictMode=vyt;Nn.Suspense=byt;Nn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Lyt;Nn.cloneElement=function(t,e,r){if(t==null)throw Error($2(267,t));var o=o6({},t.props),a=t.key,n=t.ref,u=t._owner;if(e!=null){if(e.ref!==void 0&&(n=e.ref,u=c6.current),e.key!==void 0&&(a=\"\"+e.key),t.type&&t.type.defaultProps)var A=t.type.defaultProps;for(p in e)Hye.call(e,p)&&!jye.hasOwnProperty(p)&&(o[p]=e[p]===void 0&&A!==void 0?A[p]:e[p])}var p=arguments.length-2;if(p===1)o.children=r;else if(1<p){A=Array(p);for(var h=0;h<p;h++)A[h]=arguments[h+2];o.children=A}return{$$typeof:Z2,type:t.type,key:a,ref:n,props:o,_owner:u}};Nn.createContext=function(t,e){return e===void 0&&(e=null),t={$$typeof:Syt,_calculateChangedBits:e,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider={$$typeof:Pyt,_context:t},t.Consumer=t};Nn.createElement=qye;Nn.createFactory=function(t){var e=qye.bind(null,t);return e.type=t,e};Nn.createRef=function(){return{current:null}};Nn.forwardRef=function(t){return{$$typeof:xyt,render:t}};Nn.isValidElement=u6;Nn.lazy=function(t){return{$$typeof:Qyt,_ctor:t,_status:-1,_result:null}};Nn.memo=function(t,e){return{$$typeof:kyt,type:t,compare:e===void 0?null:e}};Nn.useCallback=function(t,e){return zf().useCallback(t,e)};Nn.useContext=function(t,e){return zf().useContext(t,e)};Nn.useDebugValue=function(){};Nn.useEffect=function(t,e){return zf().useEffect(t,e)};Nn.useImperativeHandle=function(t,e,r){return zf().useImperativeHandle(t,e,r)};Nn.useLayoutEffect=function(t,e){return zf().useLayoutEffect(t,e)};Nn.useMemo=function(t,e){return zf().useMemo(t,e)};Nn.useReducer=function(t,e,r){return zf().useReducer(t,e,r)};Nn.useRef=function(t){return zf().useRef(t)};Nn.useState=function(t){return zf().useState(t)};Nn.version=\"16.13.1\"});var sn=_((tVt,Jye)=>{\"use strict\";Jye.exports=Kye()});var f6=_((rVt,A6)=>{\"use strict\";var An=A6.exports;A6.exports.default=An;var Ln=\"\\x1B[\",eB=\"\\x1B]\",TC=\"\\x07\",Qk=\";\",zye=process.env.TERM_PROGRAM===\"Apple_Terminal\";An.cursorTo=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");return typeof e!=\"number\"?Ln+(t+1)+\"G\":Ln+(e+1)+\";\"+(t+1)+\"H\"};An.cursorMove=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");let r=\"\";return t<0?r+=Ln+-t+\"D\":t>0&&(r+=Ln+t+\"C\"),e<0?r+=Ln+-e+\"A\":e>0&&(r+=Ln+e+\"B\"),r};An.cursorUp=(t=1)=>Ln+t+\"A\";An.cursorDown=(t=1)=>Ln+t+\"B\";An.cursorForward=(t=1)=>Ln+t+\"C\";An.cursorBackward=(t=1)=>Ln+t+\"D\";An.cursorLeft=Ln+\"G\";An.cursorSavePosition=zye?\"\\x1B7\":Ln+\"s\";An.cursorRestorePosition=zye?\"\\x1B8\":Ln+\"u\";An.cursorGetPosition=Ln+\"6n\";An.cursorNextLine=Ln+\"E\";An.cursorPrevLine=Ln+\"F\";An.cursorHide=Ln+\"?25l\";An.cursorShow=Ln+\"?25h\";An.eraseLines=t=>{let e=\"\";for(let r=0;r<t;r++)e+=An.eraseLine+(r<t-1?An.cursorUp():\"\");return t&&(e+=An.cursorLeft),e};An.eraseEndLine=Ln+\"K\";An.eraseStartLine=Ln+\"1K\";An.eraseLine=Ln+\"2K\";An.eraseDown=Ln+\"J\";An.eraseUp=Ln+\"1J\";An.eraseScreen=Ln+\"2J\";An.scrollUp=Ln+\"S\";An.scrollDown=Ln+\"T\";An.clearScreen=\"\\x1Bc\";An.clearTerminal=process.platform===\"win32\"?`${An.eraseScreen}${Ln}0f`:`${An.eraseScreen}${Ln}3J${Ln}H`;An.beep=TC;An.link=(t,e)=>[eB,\"8\",Qk,Qk,e,TC,t,eB,\"8\",Qk,Qk,TC].join(\"\");An.image=(t,e={})=>{let r=`${eB}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=\";preserveAspectRatio=0\"),r+\":\"+t.toString(\"base64\")+TC};An.iTerm={setCwd:(t=process.cwd())=>`${eB}50;CurrentDir=${t}${TC}`,annotation:(t,e={})=>{let r=`${eB}1337;`,o=typeof e.x<\"u\",a=typeof e.y<\"u\";if((o||a)&&!(o&&a&&typeof e.length<\"u\"))throw new Error(\"`x`, `y` and `length` must be defined when `x` or `y` is defined\");return t=t.replace(/\\|/g,\"\"),r+=e.isHidden?\"AddHiddenAnnotation=\":\"AddAnnotation=\",e.length>0?r+=(o?[t,e.length,e.x,e.y]:[e.length,t]).join(\"|\"):r+=t,r+TC}}});var Zye=_((nVt,p6)=>{\"use strict\";var Xye=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};p6.exports=Xye;p6.exports.default=Xye});var eEe=_((iVt,Tk)=>{\"use strict\";var Myt=Zye(),Fk=new WeakMap,$ye=(t,e={})=>{if(typeof t!=\"function\")throw new TypeError(\"Expected a function\");let r,o=0,a=t.displayName||t.name||\"<anonymous>\",n=function(...u){if(Fk.set(n,++o),o===1)r=t.apply(this,u),t=null;else if(e.throw===!0)throw new Error(`Function \\`${a}\\` can only be called once`);return r};return Myt(n,t),Fk.set(n,o),n};Tk.exports=$ye;Tk.exports.default=$ye;Tk.exports.callCount=t=>{if(!Fk.has(t))throw new Error(`The given function \\`${t.name}\\` is not wrapped by the \\`onetime\\` package`);return Fk.get(t)}});var tEe=_((sVt,Rk)=>{Rk.exports=[\"SIGABRT\",\"SIGALRM\",\"SIGHUP\",\"SIGINT\",\"SIGTERM\"];process.platform!==\"win32\"&&Rk.exports.push(\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&Rk.exports.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\",\"SIGUNUSED\")});var d6=_((oVt,LC)=>{var Ei=global.process,nm=function(t){return t&&typeof t==\"object\"&&typeof t.removeListener==\"function\"&&typeof t.emit==\"function\"&&typeof t.reallyExit==\"function\"&&typeof t.listeners==\"function\"&&typeof t.kill==\"function\"&&typeof t.pid==\"number\"&&typeof t.on==\"function\"};nm(Ei)?(rEe=Be(\"assert\"),RC=tEe(),nEe=/^win/i.test(Ei.platform),tB=Be(\"events\"),typeof tB!=\"function\"&&(tB=tB.EventEmitter),Ei.__signal_exit_emitter__?Rs=Ei.__signal_exit_emitter__:(Rs=Ei.__signal_exit_emitter__=new tB,Rs.count=0,Rs.emitted={}),Rs.infinite||(Rs.setMaxListeners(1/0),Rs.infinite=!0),LC.exports=function(t,e){if(!nm(global.process))return function(){};rEe.equal(typeof t,\"function\",\"a callback must be provided for exit handler\"),NC===!1&&h6();var r=\"exit\";e&&e.alwaysLast&&(r=\"afterexit\");var o=function(){Rs.removeListener(r,t),Rs.listeners(\"exit\").length===0&&Rs.listeners(\"afterexit\").length===0&&Nk()};return Rs.on(r,t),o},Nk=function(){!NC||!nm(global.process)||(NC=!1,RC.forEach(function(e){try{Ei.removeListener(e,Lk[e])}catch{}}),Ei.emit=Mk,Ei.reallyExit=g6,Rs.count-=1)},LC.exports.unload=Nk,im=function(e,r,o){Rs.emitted[e]||(Rs.emitted[e]=!0,Rs.emit(e,r,o))},Lk={},RC.forEach(function(t){Lk[t]=function(){if(!!nm(global.process)){var r=Ei.listeners(t);r.length===Rs.count&&(Nk(),im(\"exit\",null,t),im(\"afterexit\",null,t),nEe&&t===\"SIGHUP\"&&(t=\"SIGINT\"),Ei.kill(Ei.pid,t))}}}),LC.exports.signals=function(){return RC},NC=!1,h6=function(){NC||!nm(global.process)||(NC=!0,Rs.count+=1,RC=RC.filter(function(e){try{return Ei.on(e,Lk[e]),!0}catch{return!1}}),Ei.emit=sEe,Ei.reallyExit=iEe)},LC.exports.load=h6,g6=Ei.reallyExit,iEe=function(e){!nm(global.process)||(Ei.exitCode=e||0,im(\"exit\",Ei.exitCode,null),im(\"afterexit\",Ei.exitCode,null),g6.call(Ei,Ei.exitCode))},Mk=Ei.emit,sEe=function(e,r){if(e===\"exit\"&&nm(global.process)){r!==void 0&&(Ei.exitCode=r);var o=Mk.apply(this,arguments);return im(\"exit\",Ei.exitCode,null),im(\"afterexit\",Ei.exitCode,null),o}else return Mk.apply(this,arguments)}):LC.exports=function(){return function(){}};var rEe,RC,nEe,tB,Rs,Nk,im,Lk,NC,h6,g6,iEe,Mk,sEe});var aEe=_((aVt,oEe)=>{\"use strict\";var Oyt=eEe(),Uyt=d6();oEe.exports=Oyt(()=>{Uyt(()=>{process.stderr.write(\"\\x1B[?25h\")},{alwaysLast:!0})})});var m6=_(MC=>{\"use strict\";var _yt=aEe(),Ok=!1;MC.show=(t=process.stderr)=>{!t.isTTY||(Ok=!1,t.write(\"\\x1B[?25h\"))};MC.hide=(t=process.stderr)=>{!t.isTTY||(_yt(),Ok=!0,t.write(\"\\x1B[?25l\"))};MC.toggle=(t,e)=>{t!==void 0&&(Ok=t),Ok?MC.show(e):MC.hide(e)}});var AEe=_(rB=>{\"use strict\";var uEe=rB&&rB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rB,\"__esModule\",{value:!0});var lEe=uEe(f6()),cEe=uEe(m6()),Hyt=(t,{showCursor:e=!1}={})=>{let r=0,o=\"\",a=!1,n=u=>{!e&&!a&&(cEe.default.hide(),a=!0);let A=u+`\n`;A!==o&&(o=A,t.write(lEe.default.eraseLines(r)+A),r=A.split(`\n`).length)};return n.clear=()=>{t.write(lEe.default.eraseLines(r)),o=\"\",r=0},n.done=()=>{o=\"\",r=0,e||(cEe.default.show(),a=!1)},n};rB.default={create:Hyt}});var fEe=_((uVt,jyt)=>{jyt.exports=[{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\",pr:\"SYSTEM_PULLREQUEST_PULLREQUESTID\"},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY_BUILD_BASE\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}}]});var gEe=_(gl=>{\"use strict\";var hEe=fEe(),pA=process.env;Object.defineProperty(gl,\"_vendors\",{value:hEe.map(function(t){return t.constant})});gl.name=null;gl.isPR=null;hEe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(o){return pEe(o)});if(gl[t.constant]=r,r)switch(gl.name=t.name,typeof t.pr){case\"string\":gl.isPR=!!pA[t.pr];break;case\"object\":\"env\"in t.pr?gl.isPR=t.pr.env in pA&&pA[t.pr.env]!==t.pr.ne:\"any\"in t.pr?gl.isPR=t.pr.any.some(function(o){return!!pA[o]}):gl.isPR=pEe(t.pr);break;default:gl.isPR=null}});gl.isCI=!!(pA.CI||pA.CONTINUOUS_INTEGRATION||pA.BUILD_NUMBER||pA.RUN_ID||gl.name);function pEe(t){return typeof t==\"string\"?!!pA[t]:Object.keys(t).every(function(e){return pA[e]===t[e]})}});var mEe=_((fVt,dEe)=>{\"use strict\";dEe.exports=gEe().isCI});var EEe=_((pVt,yEe)=>{\"use strict\";var qyt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};yEe.exports=(t,{include:e,exclude:r}={})=>{let o=a=>{let n=u=>typeof u==\"string\"?a===u:u.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of qyt(t.constructor.prototype)){if(n===\"constructor\"||!o(n))continue;let u=Reflect.getOwnPropertyDescriptor(a,n);u&&typeof u.value==\"function\"&&(t[n]=t[n].bind(t))}return t}});var PEe=_(kn=>{\"use strict\";Object.defineProperty(kn,\"__esModule\",{value:!0});var UC,sB,qk,Gk,v6;typeof window>\"u\"||typeof MessageChannel!=\"function\"?(OC=null,y6=null,E6=function(){if(OC!==null)try{var t=kn.unstable_now();OC(!0,t),OC=null}catch(e){throw setTimeout(E6,0),e}},CEe=Date.now(),kn.unstable_now=function(){return Date.now()-CEe},UC=function(t){OC!==null?setTimeout(UC,0,t):(OC=t,setTimeout(E6,0))},sB=function(t,e){y6=setTimeout(t,e)},qk=function(){clearTimeout(y6)},Gk=function(){return!1},v6=kn.unstable_forceFrameRate=function(){}):(Uk=window.performance,C6=window.Date,wEe=window.setTimeout,IEe=window.clearTimeout,typeof console<\"u\"&&(BEe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!=\"function\"&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),typeof BEe!=\"function\"&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")),typeof Uk==\"object\"&&typeof Uk.now==\"function\"?kn.unstable_now=function(){return Uk.now()}:(vEe=C6.now(),kn.unstable_now=function(){return C6.now()-vEe}),nB=!1,iB=null,_k=-1,w6=5,I6=0,Gk=function(){return kn.unstable_now()>=I6},v6=function(){},kn.unstable_forceFrameRate=function(t){0>t||125<t?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):w6=0<t?Math.floor(1e3/t):5},B6=new MessageChannel,Hk=B6.port2,B6.port1.onmessage=function(){if(iB!==null){var t=kn.unstable_now();I6=t+w6;try{iB(!0,t)?Hk.postMessage(null):(nB=!1,iB=null)}catch(e){throw Hk.postMessage(null),e}}else nB=!1},UC=function(t){iB=t,nB||(nB=!0,Hk.postMessage(null))},sB=function(t,e){_k=wEe(function(){t(kn.unstable_now())},e)},qk=function(){IEe(_k),_k=-1});var OC,y6,E6,CEe,Uk,C6,wEe,IEe,BEe,vEe,nB,iB,_k,w6,I6,B6,Hk;function D6(t,e){var r=t.length;t.push(e);e:for(;;){var o=Math.floor((r-1)/2),a=t[o];if(a!==void 0&&0<jk(a,e))t[o]=e,t[r]=a,r=o;else break e}}function nc(t){return t=t[0],t===void 0?null:t}function Yk(t){var e=t[0];if(e!==void 0){var r=t.pop();if(r!==e){t[0]=r;e:for(var o=0,a=t.length;o<a;){var n=2*(o+1)-1,u=t[n],A=n+1,p=t[A];if(u!==void 0&&0>jk(u,r))p!==void 0&&0>jk(p,u)?(t[o]=p,t[A]=r,o=A):(t[o]=u,t[n]=r,o=n);else if(p!==void 0&&0>jk(p,r))t[o]=p,t[A]=r,o=A;else break e}}return e}return null}function jk(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var eu=[],m0=[],Gyt=1,na=null,Lo=3,Wk=!1,sm=!1,oB=!1;function Vk(t){for(var e=nc(m0);e!==null;){if(e.callback===null)Yk(m0);else if(e.startTime<=t)Yk(m0),e.sortIndex=e.expirationTime,D6(eu,e);else break;e=nc(m0)}}function P6(t){if(oB=!1,Vk(t),!sm)if(nc(eu)!==null)sm=!0,UC(S6);else{var e=nc(m0);e!==null&&sB(P6,e.startTime-t)}}function S6(t,e){sm=!1,oB&&(oB=!1,qk()),Wk=!0;var r=Lo;try{for(Vk(e),na=nc(eu);na!==null&&(!(na.expirationTime>e)||t&&!Gk());){var o=na.callback;if(o!==null){na.callback=null,Lo=na.priorityLevel;var a=o(na.expirationTime<=e);e=kn.unstable_now(),typeof a==\"function\"?na.callback=a:na===nc(eu)&&Yk(eu),Vk(e)}else Yk(eu);na=nc(eu)}if(na!==null)var n=!0;else{var u=nc(m0);u!==null&&sB(P6,u.startTime-e),n=!1}return n}finally{na=null,Lo=r,Wk=!1}}function DEe(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var Yyt=v6;kn.unstable_ImmediatePriority=1;kn.unstable_UserBlockingPriority=2;kn.unstable_NormalPriority=3;kn.unstable_IdlePriority=5;kn.unstable_LowPriority=4;kn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=Lo;Lo=t;try{return e()}finally{Lo=r}};kn.unstable_next=function(t){switch(Lo){case 1:case 2:case 3:var e=3;break;default:e=Lo}var r=Lo;Lo=e;try{return t()}finally{Lo=r}};kn.unstable_scheduleCallback=function(t,e,r){var o=kn.unstable_now();if(typeof r==\"object\"&&r!==null){var a=r.delay;a=typeof a==\"number\"&&0<a?o+a:o,r=typeof r.timeout==\"number\"?r.timeout:DEe(t)}else r=DEe(t),a=o;return r=a+r,t={id:Gyt++,callback:e,priorityLevel:t,startTime:a,expirationTime:r,sortIndex:-1},a>o?(t.sortIndex=a,D6(m0,t),nc(eu)===null&&t===nc(m0)&&(oB?qk():oB=!0,sB(P6,a-o))):(t.sortIndex=r,D6(eu,t),sm||Wk||(sm=!0,UC(S6))),t};kn.unstable_cancelCallback=function(t){t.callback=null};kn.unstable_wrapCallback=function(t){var e=Lo;return function(){var r=Lo;Lo=e;try{return t.apply(this,arguments)}finally{Lo=r}}};kn.unstable_getCurrentPriorityLevel=function(){return Lo};kn.unstable_shouldYield=function(){var t=kn.unstable_now();Vk(t);var e=nc(eu);return e!==na&&na!==null&&e!==null&&e.callback!==null&&e.startTime<=t&&e.expirationTime<na.expirationTime||Gk()};kn.unstable_requestPaint=Yyt;kn.unstable_continueExecution=function(){sm||Wk||(sm=!0,UC(S6))};kn.unstable_pauseExecution=function(){};kn.unstable_getFirstCallbackNode=function(){return nc(eu)};kn.unstable_Profiling=null});var x6=_((gVt,SEe)=>{\"use strict\";SEe.exports=PEe()});var xEe=_((dVt,aB)=>{aB.exports=function t(e){\"use strict\";var r=t6(),o=sn(),a=x6();function n(P){for(var D=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+P,R=1;R<arguments.length;R++)D+=\"&args[]=\"+encodeURIComponent(arguments[R]);return\"Minified React error #\"+P+\"; visit \"+D+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var u=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;u.hasOwnProperty(\"ReactCurrentDispatcher\")||(u.ReactCurrentDispatcher={current:null}),u.hasOwnProperty(\"ReactCurrentBatchConfig\")||(u.ReactCurrentBatchConfig={suspense:null});var A=typeof Symbol==\"function\"&&Symbol.for,p=A?Symbol.for(\"react.element\"):60103,h=A?Symbol.for(\"react.portal\"):60106,E=A?Symbol.for(\"react.fragment\"):60107,I=A?Symbol.for(\"react.strict_mode\"):60108,v=A?Symbol.for(\"react.profiler\"):60114,b=A?Symbol.for(\"react.provider\"):60109,C=A?Symbol.for(\"react.context\"):60110,T=A?Symbol.for(\"react.concurrent_mode\"):60111,L=A?Symbol.for(\"react.forward_ref\"):60112,U=A?Symbol.for(\"react.suspense\"):60113,J=A?Symbol.for(\"react.suspense_list\"):60120,te=A?Symbol.for(\"react.memo\"):60115,le=A?Symbol.for(\"react.lazy\"):60116;A&&Symbol.for(\"react.fundamental\"),A&&Symbol.for(\"react.responder\"),A&&Symbol.for(\"react.scope\");var pe=typeof Symbol==\"function\"&&Symbol.iterator;function Ae(P){return P===null||typeof P!=\"object\"?null:(P=pe&&P[pe]||P[\"@@iterator\"],typeof P==\"function\"?P:null)}function ye(P){if(P._status===-1){P._status=0;var D=P._ctor;D=D(),P._result=D,D.then(function(R){P._status===0&&(R=R.default,P._status=1,P._result=R)},function(R){P._status===0&&(P._status=2,P._result=R)})}}function ae(P){if(P==null)return null;if(typeof P==\"function\")return P.displayName||P.name||null;if(typeof P==\"string\")return P;switch(P){case E:return\"Fragment\";case h:return\"Portal\";case v:return\"Profiler\";case I:return\"StrictMode\";case U:return\"Suspense\";case J:return\"SuspenseList\"}if(typeof P==\"object\")switch(P.$$typeof){case C:return\"Context.Consumer\";case b:return\"Context.Provider\";case L:var D=P.render;return D=D.displayName||D.name||\"\",P.displayName||(D!==\"\"?\"ForwardRef(\"+D+\")\":\"ForwardRef\");case te:return ae(P.type);case le:if(P=P._status===1?P._result:null)return ae(P)}return null}function we(P){var D=P,R=P;if(P.alternate)for(;D.return;)D=D.return;else{P=D;do D=P,(D.effectTag&1026)!==0&&(R=D.return),P=D.return;while(P)}return D.tag===3?R:null}function Pe(P){if(we(P)!==P)throw Error(n(188))}function g(P){var D=P.alternate;if(!D){if(D=we(P),D===null)throw Error(n(188));return D!==P?null:P}for(var R=P,j=D;;){var Y=R.return;if(Y===null)break;var fe=Y.alternate;if(fe===null){if(j=Y.return,j!==null){R=j;continue}break}if(Y.child===fe.child){for(fe=Y.child;fe;){if(fe===R)return Pe(Y),P;if(fe===j)return Pe(Y),D;fe=fe.sibling}throw Error(n(188))}if(R.return!==j.return)R=Y,j=fe;else{for(var ve=!1,vt=Y.child;vt;){if(vt===R){ve=!0,R=Y,j=fe;break}if(vt===j){ve=!0,j=Y,R=fe;break}vt=vt.sibling}if(!ve){for(vt=fe.child;vt;){if(vt===R){ve=!0,R=fe,j=Y;break}if(vt===j){ve=!0,j=fe,R=Y;break}vt=vt.sibling}if(!ve)throw Error(n(189))}}if(R.alternate!==j)throw Error(n(190))}if(R.tag!==3)throw Error(n(188));return R.stateNode.current===R?P:D}function Ee(P){if(P=g(P),!P)return null;for(var D=P;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===P)break;for(;!D.sibling;){if(!D.return||D.return===P)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function De(P){if(P=g(P),!P)return null;for(var D=P;;){if(D.tag===5||D.tag===6)return D;if(D.child&&D.tag!==4)D.child.return=D,D=D.child;else{if(D===P)break;for(;!D.sibling;){if(!D.return||D.return===P)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}var ce=e.getPublicInstance,ne=e.getRootHostContext,ee=e.getChildHostContext,Ie=e.prepareForCommit,ke=e.resetAfterCommit,ht=e.createInstance,H=e.appendInitialChild,lt=e.finalizeInitialChildren,Re=e.prepareUpdate,Qe=e.shouldSetTextContent,be=e.shouldDeprioritizeSubtree,_e=e.createTextInstance,Te=e.setTimeout,Je=e.clearTimeout,He=e.noTimeout,x=e.isPrimaryRenderer,w=e.supportsMutation,S=e.supportsPersistence,y=e.supportsHydration,F=e.appendChild,z=e.appendChildToContainer,X=e.commitTextUpdate,Z=e.commitMount,ie=e.commitUpdate,Se=e.insertBefore,Ne=e.insertInContainerBefore,ot=e.removeChild,dt=e.removeChildFromContainer,jt=e.resetTextContent,$t=e.hideInstance,xt=e.hideTextInstance,an=e.unhideInstance,Qr=e.unhideTextInstance,mr=e.cloneInstance,xr=e.createContainerChildSet,Wr=e.appendChildToContainerChildSet,Vn=e.finalizeContainerChildren,Ns=e.replaceContainerChildren,Ri=e.cloneHiddenInstance,ps=e.cloneHiddenTextInstance,io=e.canHydrateInstance,Si=e.canHydrateTextInstance,Ls=e.isSuspenseInstancePending,so=e.isSuspenseInstanceFallback,cc=e.getNextHydratableSibling,cu=e.getFirstHydratableChild,ap=e.hydrateInstance,lp=e.hydrateTextInstance,Ms=e.getNextHydratableInstanceAfterSuspenseInstance,Dn=e.commitHydratedContainer,oo=e.commitHydratedSuspenseInstance,Os=/^(.*)[\\\\\\/]/;function ml(P){var D=\"\";do{e:switch(P.tag){case 3:case 4:case 6:case 7:case 10:case 9:var R=\"\";break e;default:var j=P._debugOwner,Y=P._debugSource,fe=ae(P.type);R=null,j&&(R=ae(j.type)),j=fe,fe=\"\",Y?fe=\" (at \"+Y.fileName.replace(Os,\"\")+\":\"+Y.lineNumber+\")\":R&&(fe=\" (created by \"+R+\")\"),R=`\n    in `+(j||\"Unknown\")+fe}D+=R,P=P.return}while(P);return D}var yl=[],ao=-1;function Kn(P){0>ao||(P.current=yl[ao],yl[ao]=null,ao--)}function Mn(P,D){ao++,yl[ao]=P.current,P.current=D}var Ni={},On={current:Ni},_i={current:!1},tr=Ni;function Me(P,D){var R=P.type.contextTypes;if(!R)return Ni;var j=P.stateNode;if(j&&j.__reactInternalMemoizedUnmaskedChildContext===D)return j.__reactInternalMemoizedMaskedChildContext;var Y={},fe;for(fe in R)Y[fe]=D[fe];return j&&(P=P.stateNode,P.__reactInternalMemoizedUnmaskedChildContext=D,P.__reactInternalMemoizedMaskedChildContext=Y),Y}function ii(P){return P=P.childContextTypes,P!=null}function Oa(P){Kn(_i,P),Kn(On,P)}function hr(P){Kn(_i,P),Kn(On,P)}function uc(P,D,R){if(On.current!==Ni)throw Error(n(168));Mn(On,D,P),Mn(_i,R,P)}function uu(P,D,R){var j=P.stateNode;if(P=D.childContextTypes,typeof j.getChildContext!=\"function\")return R;j=j.getChildContext();for(var Y in j)if(!(Y in P))throw Error(n(108,ae(D)||\"Unknown\",Y));return r({},R,{},j)}function Ac(P){var D=P.stateNode;return D=D&&D.__reactInternalMemoizedMergedChildContext||Ni,tr=On.current,Mn(On,D,P),Mn(_i,_i.current,P),!0}function El(P,D,R){var j=P.stateNode;if(!j)throw Error(n(169));R?(D=uu(P,D,tr),j.__reactInternalMemoizedMergedChildContext=D,Kn(_i,P),Kn(On,P),Mn(On,D,P)):Kn(_i,P),Mn(_i,R,P)}var vA=a.unstable_runWithPriority,Au=a.unstable_scheduleCallback,Ce=a.unstable_cancelCallback,Tt=a.unstable_shouldYield,fc=a.unstable_requestPaint,Hi=a.unstable_now,fu=a.unstable_getCurrentPriorityLevel,Yt=a.unstable_ImmediatePriority,Cl=a.unstable_UserBlockingPriority,DA=a.unstable_NormalPriority,cp=a.unstable_LowPriority,pc=a.unstable_IdlePriority,PA={},Qn=fc!==void 0?fc:function(){},hi=null,hc=null,SA=!1,sa=Hi(),Li=1e4>sa?Hi:function(){return Hi()-sa};function _o(){switch(fu()){case Yt:return 99;case Cl:return 98;case DA:return 97;case cp:return 96;case pc:return 95;default:throw Error(n(332))}}function Ze(P){switch(P){case 99:return Yt;case 98:return Cl;case 97:return DA;case 96:return cp;case 95:return pc;default:throw Error(n(332))}}function lo(P,D){return P=Ze(P),vA(P,D)}function gc(P,D,R){return P=Ze(P),Au(P,D,R)}function pu(P){return hi===null?(hi=[P],hc=Au(Yt,hu)):hi.push(P),PA}function ji(){if(hc!==null){var P=hc;hc=null,Ce(P)}hu()}function hu(){if(!SA&&hi!==null){SA=!0;var P=0;try{var D=hi;lo(99,function(){for(;P<D.length;P++){var R=D[P];do R=R(!0);while(R!==null)}}),hi=null}catch(R){throw hi!==null&&(hi=hi.slice(P+1)),Au(Yt,ji),R}finally{SA=!1}}}var xA=3;function Ua(P,D,R){return R/=10,1073741821-(((1073741821-P+D/10)/R|0)+1)*R}function dc(P,D){return P===D&&(P!==0||1/P===1/D)||P!==P&&D!==D}var hs=typeof Object.is==\"function\"?Object.is:dc,_t=Object.prototype.hasOwnProperty;function Fn(P,D){if(hs(P,D))return!0;if(typeof P!=\"object\"||P===null||typeof D!=\"object\"||D===null)return!1;var R=Object.keys(P),j=Object.keys(D);if(R.length!==j.length)return!1;for(j=0;j<R.length;j++)if(!_t.call(D,R[j])||!hs(P[R[j]],D[R[j]]))return!1;return!0}function Ci(P,D){if(P&&P.defaultProps){D=r({},D),P=P.defaultProps;for(var R in P)D[R]===void 0&&(D[R]=P[R])}return D}var oa={current:null},co=null,Us=null,aa=null;function la(){aa=Us=co=null}function Ho(P,D){var R=P.type._context;x?(Mn(oa,R._currentValue,P),R._currentValue=D):(Mn(oa,R._currentValue2,P),R._currentValue2=D)}function wi(P){var D=oa.current;Kn(oa,P),P=P.type._context,x?P._currentValue=D:P._currentValue2=D}function gs(P,D){for(;P!==null;){var R=P.alternate;if(P.childExpirationTime<D)P.childExpirationTime=D,R!==null&&R.childExpirationTime<D&&(R.childExpirationTime=D);else if(R!==null&&R.childExpirationTime<D)R.childExpirationTime=D;else break;P=P.return}}function ds(P,D){co=P,aa=Us=null,P=P.dependencies,P!==null&&P.firstContext!==null&&(P.expirationTime>=D&&(qo=!0),P.firstContext=null)}function ms(P,D){if(aa!==P&&D!==!1&&D!==0)if((typeof D!=\"number\"||D===1073741823)&&(aa=P,D=1073741823),D={context:P,observedBits:D,next:null},Us===null){if(co===null)throw Error(n(308));Us=D,co.dependencies={expirationTime:0,firstContext:D,responders:null}}else Us=Us.next=D;return x?P._currentValue:P._currentValue2}var _s=!1;function Un(P){return{baseState:P,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Pn(P){return{baseState:P.baseState,firstUpdate:P.firstUpdate,lastUpdate:P.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function ys(P,D){return{expirationTime:P,suspenseConfig:D,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function We(P,D){P.lastUpdate===null?P.firstUpdate=P.lastUpdate=D:(P.lastUpdate.next=D,P.lastUpdate=D)}function tt(P,D){var R=P.alternate;if(R===null){var j=P.updateQueue,Y=null;j===null&&(j=P.updateQueue=Un(P.memoizedState))}else j=P.updateQueue,Y=R.updateQueue,j===null?Y===null?(j=P.updateQueue=Un(P.memoizedState),Y=R.updateQueue=Un(R.memoizedState)):j=P.updateQueue=Pn(Y):Y===null&&(Y=R.updateQueue=Pn(j));Y===null||j===Y?We(j,D):j.lastUpdate===null||Y.lastUpdate===null?(We(j,D),We(Y,D)):(We(j,D),Y.lastUpdate=D)}function It(P,D){var R=P.updateQueue;R=R===null?P.updateQueue=Un(P.memoizedState):nr(P,R),R.lastCapturedUpdate===null?R.firstCapturedUpdate=R.lastCapturedUpdate=D:(R.lastCapturedUpdate.next=D,R.lastCapturedUpdate=D)}function nr(P,D){var R=P.alternate;return R!==null&&D===R.updateQueue&&(D=P.updateQueue=Pn(D)),D}function $(P,D,R,j,Y,fe){switch(R.tag){case 1:return P=R.payload,typeof P==\"function\"?P.call(fe,j,Y):P;case 3:P.effectTag=P.effectTag&-4097|64;case 0:if(P=R.payload,Y=typeof P==\"function\"?P.call(fe,j,Y):P,Y==null)break;return r({},j,Y);case 2:_s=!0}return j}function me(P,D,R,j,Y){_s=!1,D=nr(P,D);for(var fe=D.baseState,ve=null,vt=0,wt=D.firstUpdate,bt=fe;wt!==null;){var _r=wt.expirationTime;_r<Y?(ve===null&&(ve=wt,fe=bt),vt<_r&&(vt=_r)):(Pw(_r,wt.suspenseConfig),bt=$(P,D,wt,bt,R,j),wt.callback!==null&&(P.effectTag|=32,wt.nextEffect=null,D.lastEffect===null?D.firstEffect=D.lastEffect=wt:(D.lastEffect.nextEffect=wt,D.lastEffect=wt))),wt=wt.next}for(_r=null,wt=D.firstCapturedUpdate;wt!==null;){var is=wt.expirationTime;is<Y?(_r===null&&(_r=wt,ve===null&&(fe=bt)),vt<is&&(vt=is)):(bt=$(P,D,wt,bt,R,j),wt.callback!==null&&(P.effectTag|=32,wt.nextEffect=null,D.lastCapturedEffect===null?D.firstCapturedEffect=D.lastCapturedEffect=wt:(D.lastCapturedEffect.nextEffect=wt,D.lastCapturedEffect=wt))),wt=wt.next}ve===null&&(D.lastUpdate=null),_r===null?D.lastCapturedUpdate=null:P.effectTag|=32,ve===null&&_r===null&&(fe=bt),D.baseState=fe,D.firstUpdate=ve,D.firstCapturedUpdate=_r,_m(vt),P.expirationTime=vt,P.memoizedState=bt}function Le(P,D,R){D.firstCapturedUpdate!==null&&(D.lastUpdate!==null&&(D.lastUpdate.next=D.firstCapturedUpdate,D.lastUpdate=D.lastCapturedUpdate),D.firstCapturedUpdate=D.lastCapturedUpdate=null),ft(D.firstEffect,R),D.firstEffect=D.lastEffect=null,ft(D.firstCapturedEffect,R),D.firstCapturedEffect=D.lastCapturedEffect=null}function ft(P,D){for(;P!==null;){var R=P.callback;if(R!==null){P.callback=null;var j=D;if(typeof R!=\"function\")throw Error(n(191,R));R.call(j)}P=P.nextEffect}}var pt=u.ReactCurrentBatchConfig,Rt=new o.Component().refs;function er(P,D,R,j){D=P.memoizedState,R=R(j,D),R=R==null?D:r({},D,R),P.memoizedState=R,j=P.updateQueue,j!==null&&P.expirationTime===0&&(j.baseState=R)}var Zr={isMounted:function(P){return(P=P._reactInternalFiber)?we(P)===P:!1},enqueueSetState:function(P,D,R){P=P._reactInternalFiber;var j=ga(),Y=pt.suspense;j=HA(j,P,Y),Y=ys(j,Y),Y.payload=D,R!=null&&(Y.callback=R),tt(P,Y),Sc(P,j)},enqueueReplaceState:function(P,D,R){P=P._reactInternalFiber;var j=ga(),Y=pt.suspense;j=HA(j,P,Y),Y=ys(j,Y),Y.tag=1,Y.payload=D,R!=null&&(Y.callback=R),tt(P,Y),Sc(P,j)},enqueueForceUpdate:function(P,D){P=P._reactInternalFiber;var R=ga(),j=pt.suspense;R=HA(R,P,j),j=ys(R,j),j.tag=2,D!=null&&(j.callback=D),tt(P,j),Sc(P,R)}};function qi(P,D,R,j,Y,fe,ve){return P=P.stateNode,typeof P.shouldComponentUpdate==\"function\"?P.shouldComponentUpdate(j,fe,ve):D.prototype&&D.prototype.isPureReactComponent?!Fn(R,j)||!Fn(Y,fe):!0}function es(P,D,R){var j=!1,Y=Ni,fe=D.contextType;return typeof fe==\"object\"&&fe!==null?fe=ms(fe):(Y=ii(D)?tr:On.current,j=D.contextTypes,fe=(j=j!=null)?Me(P,Y):Ni),D=new D(R,fe),P.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=Zr,P.stateNode=D,D._reactInternalFiber=P,j&&(P=P.stateNode,P.__reactInternalMemoizedUnmaskedChildContext=Y,P.__reactInternalMemoizedMaskedChildContext=fe),D}function xi(P,D,R,j){P=D.state,typeof D.componentWillReceiveProps==\"function\"&&D.componentWillReceiveProps(R,j),typeof D.UNSAFE_componentWillReceiveProps==\"function\"&&D.UNSAFE_componentWillReceiveProps(R,j),D.state!==P&&Zr.enqueueReplaceState(D,D.state,null)}function jo(P,D,R,j){var Y=P.stateNode;Y.props=R,Y.state=P.memoizedState,Y.refs=Rt;var fe=D.contextType;typeof fe==\"object\"&&fe!==null?Y.context=ms(fe):(fe=ii(D)?tr:On.current,Y.context=Me(P,fe)),fe=P.updateQueue,fe!==null&&(me(P,fe,R,Y,j),Y.state=P.memoizedState),fe=D.getDerivedStateFromProps,typeof fe==\"function\"&&(er(P,D,fe,R),Y.state=P.memoizedState),typeof D.getDerivedStateFromProps==\"function\"||typeof Y.getSnapshotBeforeUpdate==\"function\"||typeof Y.UNSAFE_componentWillMount!=\"function\"&&typeof Y.componentWillMount!=\"function\"||(D=Y.state,typeof Y.componentWillMount==\"function\"&&Y.componentWillMount(),typeof Y.UNSAFE_componentWillMount==\"function\"&&Y.UNSAFE_componentWillMount(),D!==Y.state&&Zr.enqueueReplaceState(Y,Y.state,null),fe=P.updateQueue,fe!==null&&(me(P,fe,R,Y,j),Y.state=P.memoizedState)),typeof Y.componentDidMount==\"function\"&&(P.effectTag|=4)}var bA=Array.isArray;function kA(P,D,R){if(P=R.ref,P!==null&&typeof P!=\"function\"&&typeof P!=\"object\"){if(R._owner){if(R=R._owner,R){if(R.tag!==1)throw Error(n(309));var j=R.stateNode}if(!j)throw Error(n(147,P));var Y=\"\"+P;return D!==null&&D.ref!==null&&typeof D.ref==\"function\"&&D.ref._stringRef===Y?D.ref:(D=function(fe){var ve=j.refs;ve===Rt&&(ve=j.refs={}),fe===null?delete ve[Y]:ve[Y]=fe},D._stringRef=Y,D)}if(typeof P!=\"string\")throw Error(n(284));if(!R._owner)throw Error(n(290,P))}return P}function up(P,D){if(P.type!==\"textarea\")throw Error(n(31,Object.prototype.toString.call(D)===\"[object Object]\"?\"object with keys {\"+Object.keys(D).join(\", \")+\"}\":D,\"\"))}function ng(P){function D(rt,Ke){if(P){var At=rt.lastEffect;At!==null?(At.nextEffect=Ke,rt.lastEffect=Ke):rt.firstEffect=rt.lastEffect=Ke,Ke.nextEffect=null,Ke.effectTag=8}}function R(rt,Ke){if(!P)return null;for(;Ke!==null;)D(rt,Ke),Ke=Ke.sibling;return null}function j(rt,Ke){for(rt=new Map;Ke!==null;)Ke.key!==null?rt.set(Ke.key,Ke):rt.set(Ke.index,Ke),Ke=Ke.sibling;return rt}function Y(rt,Ke,At){return rt=YA(rt,Ke,At),rt.index=0,rt.sibling=null,rt}function fe(rt,Ke,At){return rt.index=At,P?(At=rt.alternate,At!==null?(At=At.index,At<Ke?(rt.effectTag=2,Ke):At):(rt.effectTag=2,Ke)):Ke}function ve(rt){return P&&rt.alternate===null&&(rt.effectTag=2),rt}function vt(rt,Ke,At,Wt){return Ke===null||Ke.tag!==6?(Ke=Qw(At,rt.mode,Wt),Ke.return=rt,Ke):(Ke=Y(Ke,At,Wt),Ke.return=rt,Ke)}function wt(rt,Ke,At,Wt){return Ke!==null&&Ke.elementType===At.type?(Wt=Y(Ke,At.props,Wt),Wt.ref=kA(rt,Ke,At),Wt.return=rt,Wt):(Wt=Hm(At.type,At.key,At.props,null,rt.mode,Wt),Wt.ref=kA(rt,Ke,At),Wt.return=rt,Wt)}function bt(rt,Ke,At,Wt){return Ke===null||Ke.tag!==4||Ke.stateNode.containerInfo!==At.containerInfo||Ke.stateNode.implementation!==At.implementation?(Ke=Fw(At,rt.mode,Wt),Ke.return=rt,Ke):(Ke=Y(Ke,At.children||[],Wt),Ke.return=rt,Ke)}function _r(rt,Ke,At,Wt,vr){return Ke===null||Ke.tag!==7?(Ke=xu(At,rt.mode,Wt,vr),Ke.return=rt,Ke):(Ke=Y(Ke,At,Wt),Ke.return=rt,Ke)}function is(rt,Ke,At){if(typeof Ke==\"string\"||typeof Ke==\"number\")return Ke=Qw(\"\"+Ke,rt.mode,At),Ke.return=rt,Ke;if(typeof Ke==\"object\"&&Ke!==null){switch(Ke.$$typeof){case p:return At=Hm(Ke.type,Ke.key,Ke.props,null,rt.mode,At),At.ref=kA(rt,null,Ke),At.return=rt,At;case h:return Ke=Fw(Ke,rt.mode,At),Ke.return=rt,Ke}if(bA(Ke)||Ae(Ke))return Ke=xu(Ke,rt.mode,At,null),Ke.return=rt,Ke;up(rt,Ke)}return null}function di(rt,Ke,At,Wt){var vr=Ke!==null?Ke.key:null;if(typeof At==\"string\"||typeof At==\"number\")return vr!==null?null:vt(rt,Ke,\"\"+At,Wt);if(typeof At==\"object\"&&At!==null){switch(At.$$typeof){case p:return At.key===vr?At.type===E?_r(rt,Ke,At.props.children,Wt,vr):wt(rt,Ke,At,Wt):null;case h:return At.key===vr?bt(rt,Ke,At,Wt):null}if(bA(At)||Ae(At))return vr!==null?null:_r(rt,Ke,At,Wt,null);up(rt,At)}return null}function po(rt,Ke,At,Wt,vr){if(typeof Wt==\"string\"||typeof Wt==\"number\")return rt=rt.get(At)||null,vt(Ke,rt,\"\"+Wt,vr);if(typeof Wt==\"object\"&&Wt!==null){switch(Wt.$$typeof){case p:return rt=rt.get(Wt.key===null?At:Wt.key)||null,Wt.type===E?_r(Ke,rt,Wt.props.children,vr,Wt.key):wt(Ke,rt,Wt,vr);case h:return rt=rt.get(Wt.key===null?At:Wt.key)||null,bt(Ke,rt,Wt,vr)}if(bA(Wt)||Ae(Wt))return rt=rt.get(At)||null,_r(Ke,rt,Wt,vr,null);up(Ke,Wt)}return null}function VA(rt,Ke,At,Wt){for(var vr=null,Sn=null,Fr=Ke,xn=Ke=0,ai=null;Fr!==null&&xn<At.length;xn++){Fr.index>xn?(ai=Fr,Fr=null):ai=Fr.sibling;var en=di(rt,Fr,At[xn],Wt);if(en===null){Fr===null&&(Fr=ai);break}P&&Fr&&en.alternate===null&&D(rt,Fr),Ke=fe(en,Ke,xn),Sn===null?vr=en:Sn.sibling=en,Sn=en,Fr=ai}if(xn===At.length)return R(rt,Fr),vr;if(Fr===null){for(;xn<At.length;xn++)Fr=is(rt,At[xn],Wt),Fr!==null&&(Ke=fe(Fr,Ke,xn),Sn===null?vr=Fr:Sn.sibling=Fr,Sn=Fr);return vr}for(Fr=j(rt,Fr);xn<At.length;xn++)ai=po(Fr,rt,xn,At[xn],Wt),ai!==null&&(P&&ai.alternate!==null&&Fr.delete(ai.key===null?xn:ai.key),Ke=fe(ai,Ke,xn),Sn===null?vr=ai:Sn.sibling=ai,Sn=ai);return P&&Fr.forEach(function(ho){return D(rt,ho)}),vr}function Yo(rt,Ke,At,Wt){var vr=Ae(At);if(typeof vr!=\"function\")throw Error(n(150));if(At=vr.call(At),At==null)throw Error(n(151));for(var Sn=vr=null,Fr=Ke,xn=Ke=0,ai=null,en=At.next();Fr!==null&&!en.done;xn++,en=At.next()){Fr.index>xn?(ai=Fr,Fr=null):ai=Fr.sibling;var ho=di(rt,Fr,en.value,Wt);if(ho===null){Fr===null&&(Fr=ai);break}P&&Fr&&ho.alternate===null&&D(rt,Fr),Ke=fe(ho,Ke,xn),Sn===null?vr=ho:Sn.sibling=ho,Sn=ho,Fr=ai}if(en.done)return R(rt,Fr),vr;if(Fr===null){for(;!en.done;xn++,en=At.next())en=is(rt,en.value,Wt),en!==null&&(Ke=fe(en,Ke,xn),Sn===null?vr=en:Sn.sibling=en,Sn=en);return vr}for(Fr=j(rt,Fr);!en.done;xn++,en=At.next())en=po(Fr,rt,xn,en.value,Wt),en!==null&&(P&&en.alternate!==null&&Fr.delete(en.key===null?xn:en.key),Ke=fe(en,Ke,xn),Sn===null?vr=en:Sn.sibling=en,Sn=en);return P&&Fr.forEach(function(PF){return D(rt,PF)}),vr}return function(rt,Ke,At,Wt){var vr=typeof At==\"object\"&&At!==null&&At.type===E&&At.key===null;vr&&(At=At.props.children);var Sn=typeof At==\"object\"&&At!==null;if(Sn)switch(At.$$typeof){case p:e:{for(Sn=At.key,vr=Ke;vr!==null;){if(vr.key===Sn)if(vr.tag===7?At.type===E:vr.elementType===At.type){R(rt,vr.sibling),Ke=Y(vr,At.type===E?At.props.children:At.props,Wt),Ke.ref=kA(rt,vr,At),Ke.return=rt,rt=Ke;break e}else{R(rt,vr);break}else D(rt,vr);vr=vr.sibling}At.type===E?(Ke=xu(At.props.children,rt.mode,Wt,At.key),Ke.return=rt,rt=Ke):(Wt=Hm(At.type,At.key,At.props,null,rt.mode,Wt),Wt.ref=kA(rt,Ke,At),Wt.return=rt,rt=Wt)}return ve(rt);case h:e:{for(vr=At.key;Ke!==null;){if(Ke.key===vr)if(Ke.tag===4&&Ke.stateNode.containerInfo===At.containerInfo&&Ke.stateNode.implementation===At.implementation){R(rt,Ke.sibling),Ke=Y(Ke,At.children||[],Wt),Ke.return=rt,rt=Ke;break e}else{R(rt,Ke);break}else D(rt,Ke);Ke=Ke.sibling}Ke=Fw(At,rt.mode,Wt),Ke.return=rt,rt=Ke}return ve(rt)}if(typeof At==\"string\"||typeof At==\"number\")return At=\"\"+At,Ke!==null&&Ke.tag===6?(R(rt,Ke.sibling),Ke=Y(Ke,At,Wt),Ke.return=rt,rt=Ke):(R(rt,Ke),Ke=Qw(At,rt.mode,Wt),Ke.return=rt,rt=Ke),ve(rt);if(bA(At))return VA(rt,Ke,At,Wt);if(Ae(At))return Yo(rt,Ke,At,Wt);if(Sn&&up(rt,At),typeof At>\"u\"&&!vr)switch(rt.tag){case 1:case 0:throw rt=rt.type,Error(n(152,rt.displayName||rt.name||\"Component\"))}return R(rt,Ke)}}var gu=ng(!0),ig=ng(!1),du={},uo={current:du},QA={current:du},mc={current:du};function ca(P){if(P===du)throw Error(n(174));return P}function sg(P,D){Mn(mc,D,P),Mn(QA,P,P),Mn(uo,du,P),D=ne(D),Kn(uo,P),Mn(uo,D,P)}function yc(P){Kn(uo,P),Kn(QA,P),Kn(mc,P)}function Pm(P){var D=ca(mc.current),R=ca(uo.current);D=ee(R,P.type,D),R!==D&&(Mn(QA,P,P),Mn(uo,D,P))}function og(P){QA.current===P&&(Kn(uo,P),Kn(QA,P))}var $n={current:0};function Ap(P){for(var D=P;D!==null;){if(D.tag===13){var R=D.memoizedState;if(R!==null&&(R=R.dehydrated,R===null||Ls(R)||so(R)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if((D.effectTag&64)!==0)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===P)break;for(;D.sibling===null;){if(D.return===null||D.return===P)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}function ag(P,D){return{responder:P,props:D}}var FA=u.ReactCurrentDispatcher,Hs=u.ReactCurrentBatchConfig,mu=0,Ha=null,Gi=null,ua=null,yu=null,Es=null,Ec=null,Cc=0,G=null,Dt=0,wl=!1,bi=null,wc=0;function ct(){throw Error(n(321))}function Eu(P,D){if(D===null)return!1;for(var R=0;R<D.length&&R<P.length;R++)if(!hs(P[R],D[R]))return!1;return!0}function lg(P,D,R,j,Y,fe){if(mu=fe,Ha=D,ua=P!==null?P.memoizedState:null,FA.current=ua===null?yw:bm,D=R(j,Y),wl){do wl=!1,wc+=1,ua=P!==null?P.memoizedState:null,Ec=yu,G=Es=Gi=null,FA.current=bm,D=R(j,Y);while(wl);bi=null,wc=0}if(FA.current=wu,P=Ha,P.memoizedState=yu,P.expirationTime=Cc,P.updateQueue=G,P.effectTag|=Dt,P=Gi!==null&&Gi.next!==null,mu=0,Ec=Es=yu=ua=Gi=Ha=null,Cc=0,G=null,Dt=0,P)throw Error(n(300));return D}function mw(){FA.current=wu,mu=0,Ec=Es=yu=ua=Gi=Ha=null,Cc=0,G=null,Dt=0,wl=!1,bi=null,wc=0}function TA(){var P={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return Es===null?yu=Es=P:Es=Es.next=P,Es}function fp(){if(Ec!==null)Es=Ec,Ec=Es.next,Gi=ua,ua=Gi!==null?Gi.next:null;else{if(ua===null)throw Error(n(310));Gi=ua;var P={memoizedState:Gi.memoizedState,baseState:Gi.baseState,queue:Gi.queue,baseUpdate:Gi.baseUpdate,next:null};Es=Es===null?yu=P:Es.next=P,ua=Gi.next}return Es}function Br(P,D){return typeof D==\"function\"?D(P):D}function Cs(P){var D=fp(),R=D.queue;if(R===null)throw Error(n(311));if(R.lastRenderedReducer=P,0<wc){var j=R.dispatch;if(bi!==null){var Y=bi.get(R);if(Y!==void 0){bi.delete(R);var fe=D.memoizedState;do fe=P(fe,Y.action),Y=Y.next;while(Y!==null);return hs(fe,D.memoizedState)||(qo=!0),D.memoizedState=fe,D.baseUpdate===R.last&&(D.baseState=fe),R.lastRenderedState=fe,[fe,j]}}return[D.memoizedState,j]}j=R.last;var ve=D.baseUpdate;if(fe=D.baseState,ve!==null?(j!==null&&(j.next=null),j=ve.next):j=j!==null?j.next:null,j!==null){var vt=Y=null,wt=j,bt=!1;do{var _r=wt.expirationTime;_r<mu?(bt||(bt=!0,vt=ve,Y=fe),_r>Cc&&(Cc=_r,_m(Cc))):(Pw(_r,wt.suspenseConfig),fe=wt.eagerReducer===P?wt.eagerState:P(fe,wt.action)),ve=wt,wt=wt.next}while(wt!==null&&wt!==j);bt||(vt=ve,Y=fe),hs(fe,D.memoizedState)||(qo=!0),D.memoizedState=fe,D.baseUpdate=vt,D.baseState=Y,R.lastRenderedState=fe}return[D.memoizedState,R.dispatch]}function cg(P){var D=TA();return typeof P==\"function\"&&(P=P()),D.memoizedState=D.baseState=P,P=D.queue={last:null,dispatch:null,lastRenderedReducer:Br,lastRenderedState:P},P=P.dispatch=hg.bind(null,Ha,P),[D.memoizedState,P]}function ug(P){return Cs(Br,P)}function Ag(P,D,R,j){return P={tag:P,create:D,destroy:R,deps:j,next:null},G===null?(G={lastEffect:null},G.lastEffect=P.next=P):(D=G.lastEffect,D===null?G.lastEffect=P.next=P:(R=D.next,D.next=P,P.next=R,G.lastEffect=P)),P}function pp(P,D,R,j){var Y=TA();Dt|=P,Y.memoizedState=Ag(D,R,void 0,j===void 0?null:j)}function Ic(P,D,R,j){var Y=fp();j=j===void 0?null:j;var fe=void 0;if(Gi!==null){var ve=Gi.memoizedState;if(fe=ve.destroy,j!==null&&Eu(j,ve.deps)){Ag(0,R,fe,j);return}}Dt|=P,Y.memoizedState=Ag(D,R,fe,j)}function Ct(P,D){return pp(516,192,P,D)}function Sm(P,D){return Ic(516,192,P,D)}function fg(P,D){if(typeof D==\"function\")return P=P(),D(P),function(){D(null)};if(D!=null)return P=P(),D.current=P,function(){D.current=null}}function pg(){}function Cu(P,D){return TA().memoizedState=[P,D===void 0?null:D],P}function xm(P,D){var R=fp();D=D===void 0?null:D;var j=R.memoizedState;return j!==null&&D!==null&&Eu(D,j[1])?j[0]:(R.memoizedState=[P,D],P)}function hg(P,D,R){if(!(25>wc))throw Error(n(301));var j=P.alternate;if(P===Ha||j!==null&&j===Ha)if(wl=!0,P={expirationTime:mu,suspenseConfig:null,action:R,eagerReducer:null,eagerState:null,next:null},bi===null&&(bi=new Map),R=bi.get(D),R===void 0)bi.set(D,P);else{for(D=R;D.next!==null;)D=D.next;D.next=P}else{var Y=ga(),fe=pt.suspense;Y=HA(Y,P,fe),fe={expirationTime:Y,suspenseConfig:fe,action:R,eagerReducer:null,eagerState:null,next:null};var ve=D.last;if(ve===null)fe.next=fe;else{var vt=ve.next;vt!==null&&(fe.next=vt),ve.next=fe}if(D.last=fe,P.expirationTime===0&&(j===null||j.expirationTime===0)&&(j=D.lastRenderedReducer,j!==null))try{var wt=D.lastRenderedState,bt=j(wt,R);if(fe.eagerReducer=j,fe.eagerState=bt,hs(bt,wt))return}catch{}finally{}Sc(P,Y)}}var wu={readContext:ms,useCallback:ct,useContext:ct,useEffect:ct,useImperativeHandle:ct,useLayoutEffect:ct,useMemo:ct,useReducer:ct,useRef:ct,useState:ct,useDebugValue:ct,useResponder:ct,useDeferredValue:ct,useTransition:ct},yw={readContext:ms,useCallback:Cu,useContext:ms,useEffect:Ct,useImperativeHandle:function(P,D,R){return R=R!=null?R.concat([P]):null,pp(4,36,fg.bind(null,D,P),R)},useLayoutEffect:function(P,D){return pp(4,36,P,D)},useMemo:function(P,D){var R=TA();return D=D===void 0?null:D,P=P(),R.memoizedState=[P,D],P},useReducer:function(P,D,R){var j=TA();return D=R!==void 0?R(D):D,j.memoizedState=j.baseState=D,P=j.queue={last:null,dispatch:null,lastRenderedReducer:P,lastRenderedState:D},P=P.dispatch=hg.bind(null,Ha,P),[j.memoizedState,P]},useRef:function(P){var D=TA();return P={current:P},D.memoizedState=P},useState:cg,useDebugValue:pg,useResponder:ag,useDeferredValue:function(P,D){var R=cg(P),j=R[0],Y=R[1];return Ct(function(){a.unstable_next(function(){var fe=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(P)}finally{Hs.suspense=fe}})},[P,D]),j},useTransition:function(P){var D=cg(!1),R=D[0],j=D[1];return[Cu(function(Y){j(!0),a.unstable_next(function(){var fe=Hs.suspense;Hs.suspense=P===void 0?null:P;try{j(!1),Y()}finally{Hs.suspense=fe}})},[P,R]),R]}},bm={readContext:ms,useCallback:xm,useContext:ms,useEffect:Sm,useImperativeHandle:function(P,D,R){return R=R!=null?R.concat([P]):null,Ic(4,36,fg.bind(null,D,P),R)},useLayoutEffect:function(P,D){return Ic(4,36,P,D)},useMemo:function(P,D){var R=fp();D=D===void 0?null:D;var j=R.memoizedState;return j!==null&&D!==null&&Eu(D,j[1])?j[0]:(P=P(),R.memoizedState=[P,D],P)},useReducer:Cs,useRef:function(){return fp().memoizedState},useState:ug,useDebugValue:pg,useResponder:ag,useDeferredValue:function(P,D){var R=ug(P),j=R[0],Y=R[1];return Sm(function(){a.unstable_next(function(){var fe=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(P)}finally{Hs.suspense=fe}})},[P,D]),j},useTransition:function(P){var D=ug(!1),R=D[0],j=D[1];return[xm(function(Y){j(!0),a.unstable_next(function(){var fe=Hs.suspense;Hs.suspense=P===void 0?null:P;try{j(!1),Y()}finally{Hs.suspense=fe}})},[P,R]),R]}},Aa=null,Bc=null,Il=!1;function Iu(P,D){var R=Dl(5,null,null,0);R.elementType=\"DELETED\",R.type=\"DELETED\",R.stateNode=D,R.return=P,R.effectTag=8,P.lastEffect!==null?(P.lastEffect.nextEffect=R,P.lastEffect=R):P.firstEffect=P.lastEffect=R}function gg(P,D){switch(P.tag){case 5:return D=io(D,P.type,P.pendingProps),D!==null?(P.stateNode=D,!0):!1;case 6:return D=Si(D,P.pendingProps),D!==null?(P.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function RA(P){if(Il){var D=Bc;if(D){var R=D;if(!gg(P,D)){if(D=cc(R),!D||!gg(P,D)){P.effectTag=P.effectTag&-1025|2,Il=!1,Aa=P;return}Iu(Aa,R)}Aa=P,Bc=cu(D)}else P.effectTag=P.effectTag&-1025|2,Il=!1,Aa=P}}function hp(P){for(P=P.return;P!==null&&P.tag!==5&&P.tag!==3&&P.tag!==13;)P=P.return;Aa=P}function ja(P){if(!y||P!==Aa)return!1;if(!Il)return hp(P),Il=!0,!1;var D=P.type;if(P.tag!==5||D!==\"head\"&&D!==\"body\"&&!Qe(D,P.memoizedProps))for(D=Bc;D;)Iu(P,D),D=cc(D);if(hp(P),P.tag===13){if(!y)throw Error(n(316));if(P=P.memoizedState,P=P!==null?P.dehydrated:null,!P)throw Error(n(317));Bc=Ms(P)}else Bc=Aa?cc(P.stateNode):null;return!0}function dg(){y&&(Bc=Aa=null,Il=!1)}var gp=u.ReactCurrentOwner,qo=!1;function ws(P,D,R,j){D.child=P===null?ig(D,null,R,j):gu(D,P.child,R,j)}function Ii(P,D,R,j,Y){R=R.render;var fe=D.ref;return ds(D,Y),j=lg(P,D,R,j,fe,Y),P!==null&&!qo?(D.updateQueue=P.updateQueue,D.effectTag&=-517,P.expirationTime<=Y&&(P.expirationTime=0),si(P,D,Y)):(D.effectTag|=1,ws(P,D,j,Y),D.child)}function km(P,D,R,j,Y,fe){if(P===null){var ve=R.type;return typeof ve==\"function\"&&!kw(ve)&&ve.defaultProps===void 0&&R.compare===null&&R.defaultProps===void 0?(D.tag=15,D.type=ve,Qm(P,D,ve,j,Y,fe)):(P=Hm(R.type,null,j,null,D.mode,fe),P.ref=D.ref,P.return=D,D.child=P)}return ve=P.child,Y<fe&&(Y=ve.memoizedProps,R=R.compare,R=R!==null?R:Fn,R(Y,j)&&P.ref===D.ref)?si(P,D,fe):(D.effectTag|=1,P=YA(ve,j,fe),P.ref=D.ref,P.return=D,D.child=P)}function Qm(P,D,R,j,Y,fe){return P!==null&&Fn(P.memoizedProps,j)&&P.ref===D.ref&&(qo=!1,Y<fe)?si(P,D,fe):NA(P,D,R,j,fe)}function Go(P,D){var R=D.ref;(P===null&&R!==null||P!==null&&P.ref!==R)&&(D.effectTag|=128)}function NA(P,D,R,j,Y){var fe=ii(R)?tr:On.current;return fe=Me(D,fe),ds(D,Y),R=lg(P,D,R,j,fe,Y),P!==null&&!qo?(D.updateQueue=P.updateQueue,D.effectTag&=-517,P.expirationTime<=Y&&(P.expirationTime=0),si(P,D,Y)):(D.effectTag|=1,ws(P,D,R,Y),D.child)}function dp(P,D,R,j,Y){if(ii(R)){var fe=!0;Ac(D)}else fe=!1;if(ds(D,Y),D.stateNode===null)P!==null&&(P.alternate=null,D.alternate=null,D.effectTag|=2),es(D,R,j,Y),jo(D,R,j,Y),j=!0;else if(P===null){var ve=D.stateNode,vt=D.memoizedProps;ve.props=vt;var wt=ve.context,bt=R.contextType;typeof bt==\"object\"&&bt!==null?bt=ms(bt):(bt=ii(R)?tr:On.current,bt=Me(D,bt));var _r=R.getDerivedStateFromProps,is=typeof _r==\"function\"||typeof ve.getSnapshotBeforeUpdate==\"function\";is||typeof ve.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof ve.componentWillReceiveProps!=\"function\"||(vt!==j||wt!==bt)&&xi(D,ve,j,bt),_s=!1;var di=D.memoizedState;wt=ve.state=di;var po=D.updateQueue;po!==null&&(me(D,po,j,ve,Y),wt=D.memoizedState),vt!==j||di!==wt||_i.current||_s?(typeof _r==\"function\"&&(er(D,R,_r,j),wt=D.memoizedState),(vt=_s||qi(D,R,vt,j,di,wt,bt))?(is||typeof ve.UNSAFE_componentWillMount!=\"function\"&&typeof ve.componentWillMount!=\"function\"||(typeof ve.componentWillMount==\"function\"&&ve.componentWillMount(),typeof ve.UNSAFE_componentWillMount==\"function\"&&ve.UNSAFE_componentWillMount()),typeof ve.componentDidMount==\"function\"&&(D.effectTag|=4)):(typeof ve.componentDidMount==\"function\"&&(D.effectTag|=4),D.memoizedProps=j,D.memoizedState=wt),ve.props=j,ve.state=wt,ve.context=bt,j=vt):(typeof ve.componentDidMount==\"function\"&&(D.effectTag|=4),j=!1)}else ve=D.stateNode,vt=D.memoizedProps,ve.props=D.type===D.elementType?vt:Ci(D.type,vt),wt=ve.context,bt=R.contextType,typeof bt==\"object\"&&bt!==null?bt=ms(bt):(bt=ii(R)?tr:On.current,bt=Me(D,bt)),_r=R.getDerivedStateFromProps,(is=typeof _r==\"function\"||typeof ve.getSnapshotBeforeUpdate==\"function\")||typeof ve.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof ve.componentWillReceiveProps!=\"function\"||(vt!==j||wt!==bt)&&xi(D,ve,j,bt),_s=!1,wt=D.memoizedState,di=ve.state=wt,po=D.updateQueue,po!==null&&(me(D,po,j,ve,Y),di=D.memoizedState),vt!==j||wt!==di||_i.current||_s?(typeof _r==\"function\"&&(er(D,R,_r,j),di=D.memoizedState),(_r=_s||qi(D,R,vt,j,wt,di,bt))?(is||typeof ve.UNSAFE_componentWillUpdate!=\"function\"&&typeof ve.componentWillUpdate!=\"function\"||(typeof ve.componentWillUpdate==\"function\"&&ve.componentWillUpdate(j,di,bt),typeof ve.UNSAFE_componentWillUpdate==\"function\"&&ve.UNSAFE_componentWillUpdate(j,di,bt)),typeof ve.componentDidUpdate==\"function\"&&(D.effectTag|=4),typeof ve.getSnapshotBeforeUpdate==\"function\"&&(D.effectTag|=256)):(typeof ve.componentDidUpdate!=\"function\"||vt===P.memoizedProps&&wt===P.memoizedState||(D.effectTag|=4),typeof ve.getSnapshotBeforeUpdate!=\"function\"||vt===P.memoizedProps&&wt===P.memoizedState||(D.effectTag|=256),D.memoizedProps=j,D.memoizedState=di),ve.props=j,ve.state=di,ve.context=bt,j=_r):(typeof ve.componentDidUpdate!=\"function\"||vt===P.memoizedProps&&wt===P.memoizedState||(D.effectTag|=4),typeof ve.getSnapshotBeforeUpdate!=\"function\"||vt===P.memoizedProps&&wt===P.memoizedState||(D.effectTag|=256),j=!1);return mp(P,D,R,j,fe,Y)}function mp(P,D,R,j,Y,fe){Go(P,D);var ve=(D.effectTag&64)!==0;if(!j&&!ve)return Y&&El(D,R,!1),si(P,D,fe);j=D.stateNode,gp.current=D;var vt=ve&&typeof R.getDerivedStateFromError!=\"function\"?null:j.render();return D.effectTag|=1,P!==null&&ve?(D.child=gu(D,P.child,null,fe),D.child=gu(D,null,vt,fe)):ws(P,D,vt,fe),D.memoizedState=j.state,Y&&El(D,R,!0),D.child}function mg(P){var D=P.stateNode;D.pendingContext?uc(P,D.pendingContext,D.pendingContext!==D.context):D.context&&uc(P,D.context,!1),sg(P,D.containerInfo)}var fa={dehydrated:null,retryTime:0};function ln(P,D,R){var j=D.mode,Y=D.pendingProps,fe=$n.current,ve=!1,vt;if((vt=(D.effectTag&64)!==0)||(vt=(fe&2)!==0&&(P===null||P.memoizedState!==null)),vt?(ve=!0,D.effectTag&=-65):P!==null&&P.memoizedState===null||Y.fallback===void 0||Y.unstable_avoidThisFallback===!0||(fe|=1),Mn($n,fe&1,D),P===null){if(Y.fallback!==void 0&&RA(D),ve){if(ve=Y.fallback,Y=xu(null,j,0,null),Y.return=D,(D.mode&2)===0)for(P=D.memoizedState!==null?D.child.child:D.child,Y.child=P;P!==null;)P.return=Y,P=P.sibling;return R=xu(ve,j,R,null),R.return=D,Y.sibling=R,D.memoizedState=fa,D.child=Y,R}return j=Y.children,D.memoizedState=null,D.child=ig(D,null,j,R)}if(P.memoizedState!==null){if(P=P.child,j=P.sibling,ve){if(Y=Y.fallback,R=YA(P,P.pendingProps,0),R.return=D,(D.mode&2)===0&&(ve=D.memoizedState!==null?D.child.child:D.child,ve!==P.child))for(R.child=ve;ve!==null;)ve.return=R,ve=ve.sibling;return j=YA(j,Y,j.expirationTime),j.return=D,R.sibling=j,R.childExpirationTime=0,D.memoizedState=fa,D.child=R,j}return R=gu(D,P.child,Y.children,R),D.memoizedState=null,D.child=R}if(P=P.child,ve){if(ve=Y.fallback,Y=xu(null,j,0,null),Y.return=D,Y.child=P,P!==null&&(P.return=Y),(D.mode&2)===0)for(P=D.memoizedState!==null?D.child.child:D.child,Y.child=P;P!==null;)P.return=Y,P=P.sibling;return R=xu(ve,j,R,null),R.return=D,Y.sibling=R,R.effectTag|=2,Y.childExpirationTime=0,D.memoizedState=fa,D.child=Y,R}return D.memoizedState=null,D.child=gu(D,P,Y.children,R)}function Ao(P,D){P.expirationTime<D&&(P.expirationTime=D);var R=P.alternate;R!==null&&R.expirationTime<D&&(R.expirationTime=D),gs(P.return,D)}function LA(P,D,R,j,Y,fe){var ve=P.memoizedState;ve===null?P.memoizedState={isBackwards:D,rendering:null,last:j,tail:R,tailExpiration:0,tailMode:Y,lastEffect:fe}:(ve.isBackwards=D,ve.rendering=null,ve.last=j,ve.tail=R,ve.tailExpiration=0,ve.tailMode=Y,ve.lastEffect=fe)}function qa(P,D,R){var j=D.pendingProps,Y=j.revealOrder,fe=j.tail;if(ws(P,D,j.children,R),j=$n.current,(j&2)!==0)j=j&1|2,D.effectTag|=64;else{if(P!==null&&(P.effectTag&64)!==0)e:for(P=D.child;P!==null;){if(P.tag===13)P.memoizedState!==null&&Ao(P,R);else if(P.tag===19)Ao(P,R);else if(P.child!==null){P.child.return=P,P=P.child;continue}if(P===D)break e;for(;P.sibling===null;){if(P.return===null||P.return===D)break e;P=P.return}P.sibling.return=P.return,P=P.sibling}j&=1}if(Mn($n,j,D),(D.mode&2)===0)D.memoizedState=null;else switch(Y){case\"forwards\":for(R=D.child,Y=null;R!==null;)P=R.alternate,P!==null&&Ap(P)===null&&(Y=R),R=R.sibling;R=Y,R===null?(Y=D.child,D.child=null):(Y=R.sibling,R.sibling=null),LA(D,!1,Y,R,fe,D.lastEffect);break;case\"backwards\":for(R=null,Y=D.child,D.child=null;Y!==null;){if(P=Y.alternate,P!==null&&Ap(P)===null){D.child=Y;break}P=Y.sibling,Y.sibling=R,R=Y,Y=P}LA(D,!0,R,null,fe,D.lastEffect);break;case\"together\":LA(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function si(P,D,R){P!==null&&(D.dependencies=P.dependencies);var j=D.expirationTime;if(j!==0&&_m(j),D.childExpirationTime<R)return null;if(P!==null&&D.child!==P.child)throw Error(n(153));if(D.child!==null){for(P=D.child,R=YA(P,P.pendingProps,P.expirationTime),D.child=R,R.return=D;P.sibling!==null;)P=P.sibling,R=R.sibling=YA(P,P.pendingProps,P.expirationTime),R.return=D;R.sibling=null}return D.child}function pa(P){P.effectTag|=4}var vc,Bl,ts,Gr;if(w)vc=function(P,D){for(var R=D.child;R!==null;){if(R.tag===5||R.tag===6)H(P,R.stateNode);else if(R.tag!==4&&R.child!==null){R.child.return=R,R=R.child;continue}if(R===D)break;for(;R.sibling===null;){if(R.return===null||R.return===D)return;R=R.return}R.sibling.return=R.return,R=R.sibling}},Bl=function(){},ts=function(P,D,R,j,Y){if(P=P.memoizedProps,P!==j){var fe=D.stateNode,ve=ca(uo.current);R=Re(fe,R,P,j,Y,ve),(D.updateQueue=R)&&pa(D)}},Gr=function(P,D,R,j){R!==j&&pa(D)};else if(S){vc=function(P,D,R,j){for(var Y=D.child;Y!==null;){if(Y.tag===5){var fe=Y.stateNode;R&&j&&(fe=Ri(fe,Y.type,Y.memoizedProps,Y)),H(P,fe)}else if(Y.tag===6)fe=Y.stateNode,R&&j&&(fe=ps(fe,Y.memoizedProps,Y)),H(P,fe);else if(Y.tag!==4){if(Y.tag===13&&(Y.effectTag&4)!==0&&(fe=Y.memoizedState!==null)){var ve=Y.child;if(ve!==null&&(ve.child!==null&&(ve.child.return=ve,vc(P,ve,!0,fe)),fe=ve.sibling,fe!==null)){fe.return=Y,Y=fe;continue}}if(Y.child!==null){Y.child.return=Y,Y=Y.child;continue}}if(Y===D)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===D)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}};var yp=function(P,D,R,j){for(var Y=D.child;Y!==null;){if(Y.tag===5){var fe=Y.stateNode;R&&j&&(fe=Ri(fe,Y.type,Y.memoizedProps,Y)),Wr(P,fe)}else if(Y.tag===6)fe=Y.stateNode,R&&j&&(fe=ps(fe,Y.memoizedProps,Y)),Wr(P,fe);else if(Y.tag!==4){if(Y.tag===13&&(Y.effectTag&4)!==0&&(fe=Y.memoizedState!==null)){var ve=Y.child;if(ve!==null&&(ve.child!==null&&(ve.child.return=ve,yp(P,ve,!0,fe)),fe=ve.sibling,fe!==null)){fe.return=Y,Y=fe;continue}}if(Y.child!==null){Y.child.return=Y,Y=Y.child;continue}}if(Y===D)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===D)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}};Bl=function(P){var D=P.stateNode;if(P.firstEffect!==null){var R=D.containerInfo,j=xr(R);yp(j,P,!1,!1),D.pendingChildren=j,pa(P),Vn(R,j)}},ts=function(P,D,R,j,Y){var fe=P.stateNode,ve=P.memoizedProps;if((P=D.firstEffect===null)&&ve===j)D.stateNode=fe;else{var vt=D.stateNode,wt=ca(uo.current),bt=null;ve!==j&&(bt=Re(vt,R,ve,j,Y,wt)),P&&bt===null?D.stateNode=fe:(fe=mr(fe,bt,R,ve,j,D,P,vt),lt(fe,R,j,Y,wt)&&pa(D),D.stateNode=fe,P?pa(D):vc(fe,D,!1,!1))}},Gr=function(P,D,R,j){R!==j&&(P=ca(mc.current),R=ca(uo.current),D.stateNode=_e(j,P,R,D),pa(D))}}else Bl=function(){},ts=function(){},Gr=function(){};function Dc(P,D){switch(P.tailMode){case\"hidden\":D=P.tail;for(var R=null;D!==null;)D.alternate!==null&&(R=D),D=D.sibling;R===null?P.tail=null:R.sibling=null;break;case\"collapsed\":R=P.tail;for(var j=null;R!==null;)R.alternate!==null&&(j=R),R=R.sibling;j===null?D||P.tail===null?P.tail=null:P.tail.sibling=null:j.sibling=null}}function Ew(P){switch(P.tag){case 1:ii(P.type)&&Oa(P);var D=P.effectTag;return D&4096?(P.effectTag=D&-4097|64,P):null;case 3:if(yc(P),hr(P),D=P.effectTag,(D&64)!==0)throw Error(n(285));return P.effectTag=D&-4097|64,P;case 5:return og(P),null;case 13:return Kn($n,P),D=P.effectTag,D&4096?(P.effectTag=D&-4097|64,P):null;case 19:return Kn($n,P),null;case 4:return yc(P),null;case 10:return wi(P),null;default:return null}}function yg(P,D){return{value:P,source:D,stack:ml(D)}}var Eg=typeof WeakSet==\"function\"?WeakSet:Set;function Ga(P,D){var R=D.source,j=D.stack;j===null&&R!==null&&(j=ml(R)),R!==null&&ae(R.type),D=D.value,P!==null&&P.tag===1&&ae(P.type);try{console.error(D)}catch(Y){setTimeout(function(){throw Y})}}function Fm(P,D){try{D.props=P.memoizedProps,D.state=P.memoizedState,D.componentWillUnmount()}catch(R){GA(P,R)}}function Cg(P){var D=P.ref;if(D!==null)if(typeof D==\"function\")try{D(null)}catch(R){GA(P,R)}else D.current=null}function Qt(P,D){switch(D.tag){case 0:case 11:case 15:N(2,0,D);break;case 1:if(D.effectTag&256&&P!==null){var R=P.memoizedProps,j=P.memoizedState;P=D.stateNode,D=P.getSnapshotBeforeUpdate(D.elementType===D.type?R:Ci(D.type,R),j),P.__reactInternalSnapshotBeforeUpdate=D}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}function N(P,D,R){if(R=R.updateQueue,R=R!==null?R.lastEffect:null,R!==null){var j=R=R.next;do{if((j.tag&P)!==0){var Y=j.destroy;j.destroy=void 0,Y!==void 0&&Y()}(j.tag&D)!==0&&(Y=j.create,j.destroy=Y()),j=j.next}while(j!==R)}}function V(P,D,R){switch(typeof bw==\"function\"&&bw(D),D.tag){case 0:case 11:case 14:case 15:if(P=D.updateQueue,P!==null&&(P=P.lastEffect,P!==null)){var j=P.next;lo(97<R?97:R,function(){var Y=j;do{var fe=Y.destroy;if(fe!==void 0){var ve=D;try{fe()}catch(vt){GA(ve,vt)}}Y=Y.next}while(Y!==j)})}break;case 1:Cg(D),R=D.stateNode,typeof R.componentWillUnmount==\"function\"&&Fm(D,R);break;case 5:Cg(D);break;case 4:w?Cr(P,D,R):S&&ze(D)}}function re(P,D,R){for(var j=D;;)if(V(P,j,R),j.child===null||w&&j.tag===4){if(j===D)break;for(;j.sibling===null;){if(j.return===null||j.return===D)return;j=j.return}j.sibling.return=j.return,j=j.sibling}else j.child.return=j,j=j.child}function he(P){var D=P.alternate;P.return=null,P.child=null,P.memoizedState=null,P.updateQueue=null,P.dependencies=null,P.alternate=null,P.firstEffect=null,P.lastEffect=null,P.pendingProps=null,P.memoizedProps=null,D!==null&&he(D)}function ze(P){if(S){P=P.stateNode.containerInfo;var D=xr(P);Ns(P,D)}}function mt(P){return P.tag===5||P.tag===3||P.tag===4}function fr(P){if(w){e:{for(var D=P.return;D!==null;){if(mt(D)){var R=D;break e}D=D.return}throw Error(n(160))}switch(D=R.stateNode,R.tag){case 5:var j=!1;break;case 3:D=D.containerInfo,j=!0;break;case 4:D=D.containerInfo,j=!0;break;default:throw Error(n(161))}R.effectTag&16&&(jt(D),R.effectTag&=-17);e:t:for(R=P;;){for(;R.sibling===null;){if(R.return===null||mt(R.return)){R=null;break e}R=R.return}for(R.sibling.return=R.return,R=R.sibling;R.tag!==5&&R.tag!==6&&R.tag!==18;){if(R.effectTag&2||R.child===null||R.tag===4)continue t;R.child.return=R,R=R.child}if(!(R.effectTag&2)){R=R.stateNode;break e}}for(var Y=P;;){var fe=Y.tag===5||Y.tag===6;if(fe)fe=fe?Y.stateNode:Y.stateNode.instance,R?j?Ne(D,fe,R):Se(D,fe,R):j?z(D,fe):F(D,fe);else if(Y.tag!==4&&Y.child!==null){Y.child.return=Y,Y=Y.child;continue}if(Y===P)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===P)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}}}function Cr(P,D,R){for(var j=D,Y=!1,fe,ve;;){if(!Y){Y=j.return;e:for(;;){if(Y===null)throw Error(n(160));switch(fe=Y.stateNode,Y.tag){case 5:ve=!1;break e;case 3:fe=fe.containerInfo,ve=!0;break e;case 4:fe=fe.containerInfo,ve=!0;break e}Y=Y.return}Y=!0}if(j.tag===5||j.tag===6)re(P,j,R),ve?dt(fe,j.stateNode):ot(fe,j.stateNode);else if(j.tag===4){if(j.child!==null){fe=j.stateNode.containerInfo,ve=!0,j.child.return=j,j=j.child;continue}}else if(V(P,j,R),j.child!==null){j.child.return=j,j=j.child;continue}if(j===D)break;for(;j.sibling===null;){if(j.return===null||j.return===D)return;j=j.return,j.tag===4&&(Y=!1)}j.sibling.return=j.return,j=j.sibling}}function yn(P,D){if(w)switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);break;case 1:break;case 5:var R=D.stateNode;if(R!=null){var j=D.memoizedProps;P=P!==null?P.memoizedProps:j;var Y=D.type,fe=D.updateQueue;D.updateQueue=null,fe!==null&&ie(R,fe,Y,P,j,D)}break;case 6:if(D.stateNode===null)throw Error(n(162));R=D.memoizedProps,X(D.stateNode,P!==null?P.memoizedProps:R,R);break;case 3:y&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,Dn(D.containerInfo)));break;case 12:break;case 13:oi(D),Mi(D);break;case 19:Mi(D);break;case 17:break;case 20:break;case 21:break;default:throw Error(n(163))}else{switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);return;case 12:return;case 13:oi(D),Mi(D);return;case 19:Mi(D);return;case 3:y&&(R=D.stateNode,R.hydrate&&(R.hydrate=!1,Dn(R.containerInfo)))}e:if(S)switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,Ns(D.containerInfo,D.pendingChildren);break e;default:throw Error(n(163))}}}function oi(P){var D=P;if(P.memoizedState===null)var R=!1;else R=!0,D=P.child,Iw=Li();if(w&&D!==null){e:if(P=D,w)for(D=P;;){if(D.tag===5){var j=D.stateNode;R?$t(j):an(D.stateNode,D.memoizedProps)}else if(D.tag===6)j=D.stateNode,R?xt(j):Qr(j,D.memoizedProps);else if(D.tag===13&&D.memoizedState!==null&&D.memoizedState.dehydrated===null){j=D.child.sibling,j.return=D,D=j;continue}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===P)break e;for(;D.sibling===null;){if(D.return===null||D.return===P)break e;D=D.return}D.sibling.return=D.return,D=D.sibling}}}function Mi(P){var D=P.updateQueue;if(D!==null){P.updateQueue=null;var R=P.stateNode;R===null&&(R=P.stateNode=new Eg),D.forEach(function(j){var Y=CF.bind(null,P,j);R.has(j)||(R.add(j),j.then(Y,Y))})}}var wg=typeof WeakMap==\"function\"?WeakMap:Map;function Gv(P,D,R){R=ys(R,null),R.tag=3,R.payload={element:null};var j=D.value;return R.callback=function(){vu||(vu=!0,Mm=j),Ga(P,D)},R}function Yv(P,D,R){R=ys(R,null),R.tag=3;var j=P.type.getDerivedStateFromError;if(typeof j==\"function\"){var Y=D.value;R.payload=function(){return Ga(P,D),j(Y)}}var fe=P.stateNode;return fe!==null&&typeof fe.componentDidCatch==\"function\"&&(R.callback=function(){typeof j!=\"function\"&&(Du===null?Du=new Set([this]):Du.add(this),Ga(P,D));var ve=D.stack;this.componentDidCatch(D.value,{componentStack:ve!==null?ve:\"\"})}),R}var Cw=Math.ceil,Ep=u.ReactCurrentDispatcher,ww=u.ReactCurrentOwner,En=0,Tm=8,rs=16,js=32,Bu=0,Rm=1,Bi=2,ha=3,vl=4,Pc=5,yr=En,gi=null,Mr=null,ns=0,Yi=Bu,Nm=null,Ya=1073741823,MA=1073741823,Lm=null,Cp=0,OA=!1,Iw=0,Bw=500,sr=null,vu=!1,Mm=null,Du=null,wp=!1,Ig=null,UA=90,_A=null,Bg=0,vw=null,Om=0;function ga(){return(yr&(rs|js))!==En?1073741821-(Li()/10|0):Om!==0?Om:Om=1073741821-(Li()/10|0)}function HA(P,D,R){if(D=D.mode,(D&2)===0)return 1073741823;var j=_o();if((D&4)===0)return j===99?1073741823:1073741822;if((yr&rs)!==En)return ns;if(R!==null)P=Ua(P,R.timeoutMs|0||5e3,250);else switch(j){case 99:P=1073741823;break;case 98:P=Ua(P,150,100);break;case 97:case 96:P=Ua(P,5e3,250);break;case 95:P=2;break;default:throw Error(n(326))}return gi!==null&&P===ns&&--P,P}function Sc(P,D){if(50<Bg)throw Bg=0,vw=null,Error(n(185));if(P=vg(P,D),P!==null){var R=_o();D===1073741823?(yr&Tm)!==En&&(yr&(rs|js))===En?Dw(P):(fo(P),yr===En&&ji()):fo(P),(yr&4)===En||R!==98&&R!==99||(_A===null?_A=new Map([[P,D]]):(R=_A.get(P),(R===void 0||R>D)&&_A.set(P,D)))}}function vg(P,D){P.expirationTime<D&&(P.expirationTime=D);var R=P.alternate;R!==null&&R.expirationTime<D&&(R.expirationTime=D);var j=P.return,Y=null;if(j===null&&P.tag===3)Y=P.stateNode;else for(;j!==null;){if(R=j.alternate,j.childExpirationTime<D&&(j.childExpirationTime=D),R!==null&&R.childExpirationTime<D&&(R.childExpirationTime=D),j.return===null&&j.tag===3){Y=j.stateNode;break}j=j.return}return Y!==null&&(gi===Y&&(_m(D),Yi===vl&&WA(Y,ns)),eD(Y,D)),Y}function Um(P){var D=P.lastExpiredTime;return D!==0||(D=P.firstPendingTime,!$v(P,D))?D:(D=P.lastPingedTime,P=P.nextKnownPendingLevel,D>P?D:P)}function fo(P){if(P.lastExpiredTime!==0)P.callbackExpirationTime=1073741823,P.callbackPriority=99,P.callbackNode=pu(Dw.bind(null,P));else{var D=Um(P),R=P.callbackNode;if(D===0)R!==null&&(P.callbackNode=null,P.callbackExpirationTime=0,P.callbackPriority=90);else{var j=ga();if(D===1073741823?j=99:D===1||D===2?j=95:(j=10*(1073741821-D)-10*(1073741821-j),j=0>=j?99:250>=j?98:5250>=j?97:95),R!==null){var Y=P.callbackPriority;if(P.callbackExpirationTime===D&&Y>=j)return;R!==PA&&Ce(R)}P.callbackExpirationTime=D,P.callbackPriority=j,D=D===1073741823?pu(Dw.bind(null,P)):gc(j,Wv.bind(null,P),{timeout:10*(1073741821-D)-Li()}),P.callbackNode=D}}}function Wv(P,D){if(Om=0,D)return D=ga(),jm(P,D),fo(P),null;var R=Um(P);if(R!==0){if(D=P.callbackNode,(yr&(rs|js))!==En)throw Error(n(327));if(Ip(),P===gi&&R===ns||Pu(P,R),Mr!==null){var j=yr;yr|=rs;var Y=qA(P);do try{gF();break}catch(vt){jA(P,vt)}while(1);if(la(),yr=j,Ep.current=Y,Yi===Rm)throw D=Nm,Pu(P,R),WA(P,R),fo(P),D;if(Mr===null)switch(Y=P.finishedWork=P.current.alternate,P.finishedExpirationTime=R,j=Yi,gi=null,j){case Bu:case Rm:throw Error(n(345));case Bi:jm(P,2<R?2:R);break;case ha:if(WA(P,R),j=P.lastSuspendedTime,R===j&&(P.nextKnownPendingLevel=Sw(Y)),Ya===1073741823&&(Y=Iw+Bw-Li(),10<Y)){if(OA){var fe=P.lastPingedTime;if(fe===0||fe>=R){P.lastPingedTime=R,Pu(P,R);break}}if(fe=Um(P),fe!==0&&fe!==R)break;if(j!==0&&j!==R){P.lastPingedTime=j;break}P.timeoutHandle=Te(Su.bind(null,P),Y);break}Su(P);break;case vl:if(WA(P,R),j=P.lastSuspendedTime,R===j&&(P.nextKnownPendingLevel=Sw(Y)),OA&&(Y=P.lastPingedTime,Y===0||Y>=R)){P.lastPingedTime=R,Pu(P,R);break}if(Y=Um(P),Y!==0&&Y!==R)break;if(j!==0&&j!==R){P.lastPingedTime=j;break}if(MA!==1073741823?j=10*(1073741821-MA)-Li():Ya===1073741823?j=0:(j=10*(1073741821-Ya)-5e3,Y=Li(),R=10*(1073741821-R)-Y,j=Y-j,0>j&&(j=0),j=(120>j?120:480>j?480:1080>j?1080:1920>j?1920:3e3>j?3e3:4320>j?4320:1960*Cw(j/1960))-j,R<j&&(j=R)),10<j){P.timeoutHandle=Te(Su.bind(null,P),j);break}Su(P);break;case Pc:if(Ya!==1073741823&&Lm!==null){fe=Ya;var ve=Lm;if(j=ve.busyMinDurationMs|0,0>=j?j=0:(Y=ve.busyDelayMs|0,fe=Li()-(10*(1073741821-fe)-(ve.timeoutMs|0||5e3)),j=fe<=Y?0:Y+j-fe),10<j){WA(P,R),P.timeoutHandle=Te(Su.bind(null,P),j);break}}Su(P);break;default:throw Error(n(329))}if(fo(P),P.callbackNode===D)return Wv.bind(null,P)}}return null}function Dw(P){var D=P.lastExpiredTime;if(D=D!==0?D:1073741823,P.finishedExpirationTime===D)Su(P);else{if((yr&(rs|js))!==En)throw Error(n(327));if(Ip(),P===gi&&D===ns||Pu(P,D),Mr!==null){var R=yr;yr|=rs;var j=qA(P);do try{hF();break}catch(Y){jA(P,Y)}while(1);if(la(),yr=R,Ep.current=j,Yi===Rm)throw R=Nm,Pu(P,D),WA(P,D),fo(P),R;if(Mr!==null)throw Error(n(261));P.finishedWork=P.current.alternate,P.finishedExpirationTime=D,gi=null,Su(P),fo(P)}}return null}function Vv(P,D){jm(P,D),fo(P),(yr&(rs|js))===En&&ji()}function pF(){if(_A!==null){var P=_A;_A=null,P.forEach(function(D,R){jm(R,D),fo(R)}),ji()}}function Kv(P,D){if((yr&(rs|js))!==En)throw Error(n(187));var R=yr;yr|=1;try{return lo(99,P.bind(null,D))}finally{yr=R,ji()}}function Pu(P,D){P.finishedWork=null,P.finishedExpirationTime=0;var R=P.timeoutHandle;if(R!==He&&(P.timeoutHandle=He,Je(R)),Mr!==null)for(R=Mr.return;R!==null;){var j=R;switch(j.tag){case 1:var Y=j.type.childContextTypes;Y!=null&&Oa(j);break;case 3:yc(j),hr(j);break;case 5:og(j);break;case 4:yc(j);break;case 13:Kn($n,j);break;case 19:Kn($n,j);break;case 10:wi(j)}R=R.return}gi=P,Mr=YA(P.current,null,D),ns=D,Yi=Bu,Nm=null,MA=Ya=1073741823,Lm=null,Cp=0,OA=!1}function jA(P,D){do{try{if(la(),mw(),Mr===null||Mr.return===null)return Yi=Rm,Nm=D,null;e:{var R=P,j=Mr.return,Y=Mr,fe=D;if(D=ns,Y.effectTag|=2048,Y.firstEffect=Y.lastEffect=null,fe!==null&&typeof fe==\"object\"&&typeof fe.then==\"function\"){var ve=fe,vt=($n.current&1)!==0,wt=j;do{var bt;if(bt=wt.tag===13){var _r=wt.memoizedState;if(_r!==null)bt=_r.dehydrated!==null;else{var is=wt.memoizedProps;bt=is.fallback===void 0?!1:is.unstable_avoidThisFallback!==!0?!0:!vt}}if(bt){var di=wt.updateQueue;if(di===null){var po=new Set;po.add(ve),wt.updateQueue=po}else di.add(ve);if((wt.mode&2)===0){if(wt.effectTag|=64,Y.effectTag&=-2981,Y.tag===1)if(Y.alternate===null)Y.tag=17;else{var VA=ys(1073741823,null);VA.tag=2,tt(Y,VA)}Y.expirationTime=1073741823;break e}fe=void 0,Y=D;var Yo=R.pingCache;if(Yo===null?(Yo=R.pingCache=new wg,fe=new Set,Yo.set(ve,fe)):(fe=Yo.get(ve),fe===void 0&&(fe=new Set,Yo.set(ve,fe))),!fe.has(Y)){fe.add(Y);var rt=EF.bind(null,R,ve,Y);ve.then(rt,rt)}wt.effectTag|=4096,wt.expirationTime=D;break e}wt=wt.return}while(wt!==null);fe=Error((ae(Y.type)||\"A React component\")+` suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`+ml(Y))}Yi!==Pc&&(Yi=Bi),fe=yg(fe,Y),wt=j;do{switch(wt.tag){case 3:ve=fe,wt.effectTag|=4096,wt.expirationTime=D;var Ke=Gv(wt,ve,D);It(wt,Ke);break e;case 1:ve=fe;var At=wt.type,Wt=wt.stateNode;if((wt.effectTag&64)===0&&(typeof At.getDerivedStateFromError==\"function\"||Wt!==null&&typeof Wt.componentDidCatch==\"function\"&&(Du===null||!Du.has(Wt)))){wt.effectTag|=4096,wt.expirationTime=D;var vr=Yv(wt,ve,D);It(wt,vr);break e}}wt=wt.return}while(wt!==null)}Mr=zv(Mr)}catch(Sn){D=Sn;continue}break}while(1)}function qA(){var P=Ep.current;return Ep.current=wu,P===null?wu:P}function Pw(P,D){P<Ya&&2<P&&(Ya=P),D!==null&&P<MA&&2<P&&(MA=P,Lm=D)}function _m(P){P>Cp&&(Cp=P)}function hF(){for(;Mr!==null;)Mr=Jv(Mr)}function gF(){for(;Mr!==null&&!Tt();)Mr=Jv(Mr)}function Jv(P){var D=Zv(P.alternate,P,ns);return P.memoizedProps=P.pendingProps,D===null&&(D=zv(P)),ww.current=null,D}function zv(P){Mr=P;do{var D=Mr.alternate;if(P=Mr.return,(Mr.effectTag&2048)===0){e:{var R=D;D=Mr;var j=ns,Y=D.pendingProps;switch(D.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:ii(D.type)&&Oa(D);break;case 3:yc(D),hr(D),Y=D.stateNode,Y.pendingContext&&(Y.context=Y.pendingContext,Y.pendingContext=null),(R===null||R.child===null)&&ja(D)&&pa(D),Bl(D);break;case 5:og(D);var fe=ca(mc.current);if(j=D.type,R!==null&&D.stateNode!=null)ts(R,D,j,Y,fe),R.ref!==D.ref&&(D.effectTag|=128);else if(Y){if(R=ca(uo.current),ja(D)){if(Y=D,!y)throw Error(n(175));R=ap(Y.stateNode,Y.type,Y.memoizedProps,fe,R,Y),Y.updateQueue=R,R=R!==null,R&&pa(D)}else{var ve=ht(j,Y,fe,R,D);vc(ve,D,!1,!1),D.stateNode=ve,lt(ve,j,Y,fe,R)&&pa(D)}D.ref!==null&&(D.effectTag|=128)}else if(D.stateNode===null)throw Error(n(166));break;case 6:if(R&&D.stateNode!=null)Gr(R,D,R.memoizedProps,Y);else{if(typeof Y!=\"string\"&&D.stateNode===null)throw Error(n(166));if(R=ca(mc.current),fe=ca(uo.current),ja(D)){if(R=D,!y)throw Error(n(176));(R=lp(R.stateNode,R.memoizedProps,R))&&pa(D)}else D.stateNode=_e(Y,R,fe,D)}break;case 11:break;case 13:if(Kn($n,D),Y=D.memoizedState,(D.effectTag&64)!==0){D.expirationTime=j;break e}Y=Y!==null,fe=!1,R===null?D.memoizedProps.fallback!==void 0&&ja(D):(j=R.memoizedState,fe=j!==null,Y||j===null||(j=R.child.sibling,j!==null&&(ve=D.firstEffect,ve!==null?(D.firstEffect=j,j.nextEffect=ve):(D.firstEffect=D.lastEffect=j,j.nextEffect=null),j.effectTag=8))),Y&&!fe&&(D.mode&2)!==0&&(R===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||($n.current&1)!==0?Yi===Bu&&(Yi=ha):((Yi===Bu||Yi===ha)&&(Yi=vl),Cp!==0&&gi!==null&&(WA(gi,ns),eD(gi,Cp)))),S&&Y&&(D.effectTag|=4),w&&(Y||fe)&&(D.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:yc(D),Bl(D);break;case 10:wi(D);break;case 9:break;case 14:break;case 17:ii(D.type)&&Oa(D);break;case 19:if(Kn($n,D),Y=D.memoizedState,Y===null)break;if(fe=(D.effectTag&64)!==0,ve=Y.rendering,ve===null){if(fe)Dc(Y,!1);else if(Yi!==Bu||R!==null&&(R.effectTag&64)!==0)for(R=D.child;R!==null;){if(ve=Ap(R),ve!==null){for(D.effectTag|=64,Dc(Y,!1),R=ve.updateQueue,R!==null&&(D.updateQueue=R,D.effectTag|=4),Y.lastEffect===null&&(D.firstEffect=null),D.lastEffect=Y.lastEffect,R=j,Y=D.child;Y!==null;)fe=Y,j=R,fe.effectTag&=2,fe.nextEffect=null,fe.firstEffect=null,fe.lastEffect=null,ve=fe.alternate,ve===null?(fe.childExpirationTime=0,fe.expirationTime=j,fe.child=null,fe.memoizedProps=null,fe.memoizedState=null,fe.updateQueue=null,fe.dependencies=null):(fe.childExpirationTime=ve.childExpirationTime,fe.expirationTime=ve.expirationTime,fe.child=ve.child,fe.memoizedProps=ve.memoizedProps,fe.memoizedState=ve.memoizedState,fe.updateQueue=ve.updateQueue,j=ve.dependencies,fe.dependencies=j===null?null:{expirationTime:j.expirationTime,firstContext:j.firstContext,responders:j.responders}),Y=Y.sibling;Mn($n,$n.current&1|2,D),D=D.child;break e}R=R.sibling}}else{if(!fe)if(R=Ap(ve),R!==null){if(D.effectTag|=64,fe=!0,R=R.updateQueue,R!==null&&(D.updateQueue=R,D.effectTag|=4),Dc(Y,!0),Y.tail===null&&Y.tailMode===\"hidden\"&&!ve.alternate){D=D.lastEffect=Y.lastEffect,D!==null&&(D.nextEffect=null);break}}else Li()>Y.tailExpiration&&1<j&&(D.effectTag|=64,fe=!0,Dc(Y,!1),D.expirationTime=D.childExpirationTime=j-1);Y.isBackwards?(ve.sibling=D.child,D.child=ve):(R=Y.last,R!==null?R.sibling=ve:D.child=ve,Y.last=ve)}if(Y.tail!==null){Y.tailExpiration===0&&(Y.tailExpiration=Li()+500),R=Y.tail,Y.rendering=R,Y.tail=R.sibling,Y.lastEffect=D.lastEffect,R.sibling=null,Y=$n.current,Y=fe?Y&1|2:Y&1,Mn($n,Y,D),D=R;break e}break;case 20:break;case 21:break;default:throw Error(n(156,D.tag))}D=null}if(R=Mr,ns===1||R.childExpirationTime!==1){for(Y=0,fe=R.child;fe!==null;)j=fe.expirationTime,ve=fe.childExpirationTime,j>Y&&(Y=j),ve>Y&&(Y=ve),fe=fe.sibling;R.childExpirationTime=Y}if(D!==null)return D;P!==null&&(P.effectTag&2048)===0&&(P.firstEffect===null&&(P.firstEffect=Mr.firstEffect),Mr.lastEffect!==null&&(P.lastEffect!==null&&(P.lastEffect.nextEffect=Mr.firstEffect),P.lastEffect=Mr.lastEffect),1<Mr.effectTag&&(P.lastEffect!==null?P.lastEffect.nextEffect=Mr:P.firstEffect=Mr,P.lastEffect=Mr))}else{if(D=Ew(Mr,ns),D!==null)return D.effectTag&=2047,D;P!==null&&(P.firstEffect=P.lastEffect=null,P.effectTag|=2048)}if(D=Mr.sibling,D!==null)return D;Mr=P}while(Mr!==null);return Yi===Bu&&(Yi=Pc),null}function Sw(P){var D=P.expirationTime;return P=P.childExpirationTime,D>P?D:P}function Su(P){var D=_o();return lo(99,dF.bind(null,P,D)),null}function dF(P,D){do Ip();while(Ig!==null);if((yr&(rs|js))!==En)throw Error(n(327));var R=P.finishedWork,j=P.finishedExpirationTime;if(R===null)return null;if(P.finishedWork=null,P.finishedExpirationTime=0,R===P.current)throw Error(n(177));P.callbackNode=null,P.callbackExpirationTime=0,P.callbackPriority=90,P.nextKnownPendingLevel=0;var Y=Sw(R);if(P.firstPendingTime=Y,j<=P.lastSuspendedTime?P.firstSuspendedTime=P.lastSuspendedTime=P.nextKnownPendingLevel=0:j<=P.firstSuspendedTime&&(P.firstSuspendedTime=j-1),j<=P.lastPingedTime&&(P.lastPingedTime=0),j<=P.lastExpiredTime&&(P.lastExpiredTime=0),P===gi&&(Mr=gi=null,ns=0),1<R.effectTag?R.lastEffect!==null?(R.lastEffect.nextEffect=R,Y=R.firstEffect):Y=R:Y=R.firstEffect,Y!==null){var fe=yr;yr|=js,ww.current=null,Ie(P.containerInfo),sr=Y;do try{mF()}catch(ho){if(sr===null)throw Error(n(330));GA(sr,ho),sr=sr.nextEffect}while(sr!==null);sr=Y;do try{for(var ve=P,vt=D;sr!==null;){var wt=sr.effectTag;if(wt&16&&w&&jt(sr.stateNode),wt&128){var bt=sr.alternate;if(bt!==null){var _r=bt.ref;_r!==null&&(typeof _r==\"function\"?_r(null):_r.current=null)}}switch(wt&1038){case 2:fr(sr),sr.effectTag&=-3;break;case 6:fr(sr),sr.effectTag&=-3,yn(sr.alternate,sr);break;case 1024:sr.effectTag&=-1025;break;case 1028:sr.effectTag&=-1025,yn(sr.alternate,sr);break;case 4:yn(sr.alternate,sr);break;case 8:var is=ve,di=sr,po=vt;w?Cr(is,di,po):re(is,di,po),he(di)}sr=sr.nextEffect}}catch(ho){if(sr===null)throw Error(n(330));GA(sr,ho),sr=sr.nextEffect}while(sr!==null);ke(P.containerInfo),P.current=R,sr=Y;do try{for(wt=j;sr!==null;){var VA=sr.effectTag;if(VA&36){var Yo=sr.alternate;switch(bt=sr,_r=wt,bt.tag){case 0:case 11:case 15:N(16,32,bt);break;case 1:var rt=bt.stateNode;if(bt.effectTag&4)if(Yo===null)rt.componentDidMount();else{var Ke=bt.elementType===bt.type?Yo.memoizedProps:Ci(bt.type,Yo.memoizedProps);rt.componentDidUpdate(Ke,Yo.memoizedState,rt.__reactInternalSnapshotBeforeUpdate)}var At=bt.updateQueue;At!==null&&Le(bt,At,rt,_r);break;case 3:var Wt=bt.updateQueue;if(Wt!==null){if(ve=null,bt.child!==null)switch(bt.child.tag){case 5:ve=ce(bt.child.stateNode);break;case 1:ve=bt.child.stateNode}Le(bt,Wt,ve,_r)}break;case 5:var vr=bt.stateNode;Yo===null&&bt.effectTag&4&&Z(vr,bt.type,bt.memoizedProps,bt);break;case 6:break;case 4:break;case 12:break;case 13:if(y&&bt.memoizedState===null){var Sn=bt.alternate;if(Sn!==null){var Fr=Sn.memoizedState;if(Fr!==null){var xn=Fr.dehydrated;xn!==null&&oo(xn)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(n(163))}}if(VA&128){bt=void 0;var ai=sr.ref;if(ai!==null){var en=sr.stateNode;switch(sr.tag){case 5:bt=ce(en);break;default:bt=en}typeof ai==\"function\"?ai(bt):ai.current=bt}}sr=sr.nextEffect}}catch(ho){if(sr===null)throw Error(n(330));GA(sr,ho),sr=sr.nextEffect}while(sr!==null);sr=null,Qn(),yr=fe}else P.current=R;if(wp)wp=!1,Ig=P,UA=D;else for(sr=Y;sr!==null;)D=sr.nextEffect,sr.nextEffect=null,sr=D;if(D=P.firstPendingTime,D===0&&(Du=null),D===1073741823?P===vw?Bg++:(Bg=0,vw=P):Bg=0,typeof xw==\"function\"&&xw(R.stateNode,j),fo(P),vu)throw vu=!1,P=Mm,Mm=null,P;return(yr&Tm)!==En||ji(),null}function mF(){for(;sr!==null;){var P=sr.effectTag;(P&256)!==0&&Qt(sr.alternate,sr),(P&512)===0||wp||(wp=!0,gc(97,function(){return Ip(),null})),sr=sr.nextEffect}}function Ip(){if(UA!==90){var P=97<UA?97:UA;return UA=90,lo(P,yF)}}function yF(){if(Ig===null)return!1;var P=Ig;if(Ig=null,(yr&(rs|js))!==En)throw Error(n(331));var D=yr;for(yr|=js,P=P.current.firstEffect;P!==null;){try{var R=P;if((R.effectTag&512)!==0)switch(R.tag){case 0:case 11:case 15:N(128,0,R),N(0,64,R)}}catch(j){if(P===null)throw Error(n(330));GA(P,j)}R=P.nextEffect,P.nextEffect=null,P=R}return yr=D,ji(),!0}function Xv(P,D,R){D=yg(R,D),D=Gv(P,D,1073741823),tt(P,D),P=vg(P,1073741823),P!==null&&fo(P)}function GA(P,D){if(P.tag===3)Xv(P,P,D);else for(var R=P.return;R!==null;){if(R.tag===3){Xv(R,P,D);break}else if(R.tag===1){var j=R.stateNode;if(typeof R.type.getDerivedStateFromError==\"function\"||typeof j.componentDidCatch==\"function\"&&(Du===null||!Du.has(j))){P=yg(D,P),P=Yv(R,P,1073741823),tt(R,P),R=vg(R,1073741823),R!==null&&fo(R);break}}R=R.return}}function EF(P,D,R){var j=P.pingCache;j!==null&&j.delete(D),gi===P&&ns===R?Yi===vl||Yi===ha&&Ya===1073741823&&Li()-Iw<Bw?Pu(P,ns):OA=!0:$v(P,R)&&(D=P.lastPingedTime,D!==0&&D<R||(P.lastPingedTime=R,P.finishedExpirationTime===R&&(P.finishedExpirationTime=0,P.finishedWork=null),fo(P)))}function CF(P,D){var R=P.stateNode;R!==null&&R.delete(D),D=0,D===0&&(D=ga(),D=HA(D,P,null)),P=vg(P,D),P!==null&&fo(P)}var Zv;Zv=function(P,D,R){var j=D.expirationTime;if(P!==null){var Y=D.pendingProps;if(P.memoizedProps!==Y||_i.current)qo=!0;else{if(j<R){switch(qo=!1,D.tag){case 3:mg(D),dg();break;case 5:if(Pm(D),D.mode&4&&R!==1&&be(D.type,Y))return D.expirationTime=D.childExpirationTime=1,null;break;case 1:ii(D.type)&&Ac(D);break;case 4:sg(D,D.stateNode.containerInfo);break;case 10:Ho(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return j=D.child.childExpirationTime,j!==0&&j>=R?ln(P,D,R):(Mn($n,$n.current&1,D),D=si(P,D,R),D!==null?D.sibling:null);Mn($n,$n.current&1,D);break;case 19:if(j=D.childExpirationTime>=R,(P.effectTag&64)!==0){if(j)return qa(P,D,R);D.effectTag|=64}if(Y=D.memoizedState,Y!==null&&(Y.rendering=null,Y.tail=null),Mn($n,$n.current,D),!j)return null}return si(P,D,R)}qo=!1}}else qo=!1;switch(D.expirationTime=0,D.tag){case 2:if(j=D.type,P!==null&&(P.alternate=null,D.alternate=null,D.effectTag|=2),P=D.pendingProps,Y=Me(D,On.current),ds(D,R),Y=lg(null,D,j,P,Y,R),D.effectTag|=1,typeof Y==\"object\"&&Y!==null&&typeof Y.render==\"function\"&&Y.$$typeof===void 0){if(D.tag=1,mw(),ii(j)){var fe=!0;Ac(D)}else fe=!1;D.memoizedState=Y.state!==null&&Y.state!==void 0?Y.state:null;var ve=j.getDerivedStateFromProps;typeof ve==\"function\"&&er(D,j,ve,P),Y.updater=Zr,D.stateNode=Y,Y._reactInternalFiber=D,jo(D,j,P,R),D=mp(null,D,j,!0,fe,R)}else D.tag=0,ws(null,D,Y,R),D=D.child;return D;case 16:if(Y=D.elementType,P!==null&&(P.alternate=null,D.alternate=null,D.effectTag|=2),P=D.pendingProps,ye(Y),Y._status!==1)throw Y._result;switch(Y=Y._result,D.type=Y,fe=D.tag=BF(Y),P=Ci(Y,P),fe){case 0:D=NA(null,D,Y,P,R);break;case 1:D=dp(null,D,Y,P,R);break;case 11:D=Ii(null,D,Y,P,R);break;case 14:D=km(null,D,Y,Ci(Y.type,P),j,R);break;default:throw Error(n(306,Y,\"\"))}return D;case 0:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),NA(P,D,j,Y,R);case 1:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),dp(P,D,j,Y,R);case 3:if(mg(D),j=D.updateQueue,j===null)throw Error(n(282));if(Y=D.memoizedState,Y=Y!==null?Y.element:null,me(D,j,D.pendingProps,null,R),j=D.memoizedState.element,j===Y)dg(),D=si(P,D,R);else{if((Y=D.stateNode.hydrate)&&(y?(Bc=cu(D.stateNode.containerInfo),Aa=D,Y=Il=!0):Y=!1),Y)for(R=ig(D,null,j,R),D.child=R;R;)R.effectTag=R.effectTag&-3|1024,R=R.sibling;else ws(P,D,j,R),dg();D=D.child}return D;case 5:return Pm(D),P===null&&RA(D),j=D.type,Y=D.pendingProps,fe=P!==null?P.memoizedProps:null,ve=Y.children,Qe(j,Y)?ve=null:fe!==null&&Qe(j,fe)&&(D.effectTag|=16),Go(P,D),D.mode&4&&R!==1&&be(j,Y)?(D.expirationTime=D.childExpirationTime=1,D=null):(ws(P,D,ve,R),D=D.child),D;case 6:return P===null&&RA(D),null;case 13:return ln(P,D,R);case 4:return sg(D,D.stateNode.containerInfo),j=D.pendingProps,P===null?D.child=gu(D,null,j,R):ws(P,D,j,R),D.child;case 11:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),Ii(P,D,j,Y,R);case 7:return ws(P,D,D.pendingProps,R),D.child;case 8:return ws(P,D,D.pendingProps.children,R),D.child;case 12:return ws(P,D,D.pendingProps.children,R),D.child;case 10:e:{if(j=D.type._context,Y=D.pendingProps,ve=D.memoizedProps,fe=Y.value,Ho(D,fe),ve!==null){var vt=ve.value;if(fe=hs(vt,fe)?0:(typeof j._calculateChangedBits==\"function\"?j._calculateChangedBits(vt,fe):1073741823)|0,fe===0){if(ve.children===Y.children&&!_i.current){D=si(P,D,R);break e}}else for(vt=D.child,vt!==null&&(vt.return=D);vt!==null;){var wt=vt.dependencies;if(wt!==null){ve=vt.child;for(var bt=wt.firstContext;bt!==null;){if(bt.context===j&&(bt.observedBits&fe)!==0){vt.tag===1&&(bt=ys(R,null),bt.tag=2,tt(vt,bt)),vt.expirationTime<R&&(vt.expirationTime=R),bt=vt.alternate,bt!==null&&bt.expirationTime<R&&(bt.expirationTime=R),gs(vt.return,R),wt.expirationTime<R&&(wt.expirationTime=R);break}bt=bt.next}}else ve=vt.tag===10&&vt.type===D.type?null:vt.child;if(ve!==null)ve.return=vt;else for(ve=vt;ve!==null;){if(ve===D){ve=null;break}if(vt=ve.sibling,vt!==null){vt.return=ve.return,ve=vt;break}ve=ve.return}vt=ve}}ws(P,D,Y.children,R),D=D.child}return D;case 9:return Y=D.type,fe=D.pendingProps,j=fe.children,ds(D,R),Y=ms(Y,fe.unstable_observedBits),j=j(Y),D.effectTag|=1,ws(P,D,j,R),D.child;case 14:return Y=D.type,fe=Ci(Y,D.pendingProps),fe=Ci(Y.type,fe),km(P,D,Y,fe,j,R);case 15:return Qm(P,D,D.type,D.pendingProps,j,R);case 17:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),P!==null&&(P.alternate=null,D.alternate=null,D.effectTag|=2),D.tag=1,ii(j)?(P=!0,Ac(D)):P=!1,ds(D,R),es(D,j,Y,R),jo(D,j,Y,R),mp(null,D,j,!0,P,R);case 19:return qa(P,D,R)}throw Error(n(156,D.tag))};var xw=null,bw=null;function wF(P){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\")return!1;var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(D.isDisabled||!D.supportsFiber)return!0;try{var R=D.inject(P);xw=function(j){try{D.onCommitFiberRoot(R,j,void 0,(j.current.effectTag&64)===64)}catch{}},bw=function(j){try{D.onCommitFiberUnmount(R,j)}catch{}}}catch{}return!0}function IF(P,D,R,j){this.tag=P,this.key=R,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=j,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Dl(P,D,R,j){return new IF(P,D,R,j)}function kw(P){return P=P.prototype,!(!P||!P.isReactComponent)}function BF(P){if(typeof P==\"function\")return kw(P)?1:0;if(P!=null){if(P=P.$$typeof,P===L)return 11;if(P===te)return 14}return 2}function YA(P,D){var R=P.alternate;return R===null?(R=Dl(P.tag,D,P.key,P.mode),R.elementType=P.elementType,R.type=P.type,R.stateNode=P.stateNode,R.alternate=P,P.alternate=R):(R.pendingProps=D,R.effectTag=0,R.nextEffect=null,R.firstEffect=null,R.lastEffect=null),R.childExpirationTime=P.childExpirationTime,R.expirationTime=P.expirationTime,R.child=P.child,R.memoizedProps=P.memoizedProps,R.memoizedState=P.memoizedState,R.updateQueue=P.updateQueue,D=P.dependencies,R.dependencies=D===null?null:{expirationTime:D.expirationTime,firstContext:D.firstContext,responders:D.responders},R.sibling=P.sibling,R.index=P.index,R.ref=P.ref,R}function Hm(P,D,R,j,Y,fe){var ve=2;if(j=P,typeof P==\"function\")kw(P)&&(ve=1);else if(typeof P==\"string\")ve=5;else e:switch(P){case E:return xu(R.children,Y,fe,D);case T:ve=8,Y|=7;break;case I:ve=8,Y|=1;break;case v:return P=Dl(12,R,D,Y|8),P.elementType=v,P.type=v,P.expirationTime=fe,P;case U:return P=Dl(13,R,D,Y),P.type=U,P.elementType=U,P.expirationTime=fe,P;case J:return P=Dl(19,R,D,Y),P.elementType=J,P.expirationTime=fe,P;default:if(typeof P==\"object\"&&P!==null)switch(P.$$typeof){case b:ve=10;break e;case C:ve=9;break e;case L:ve=11;break e;case te:ve=14;break e;case le:ve=16,j=null;break e}throw Error(n(130,P==null?P:typeof P,\"\"))}return D=Dl(ve,R,D,Y),D.elementType=P,D.type=j,D.expirationTime=fe,D}function xu(P,D,R,j){return P=Dl(7,P,j,D),P.expirationTime=R,P}function Qw(P,D,R){return P=Dl(6,P,null,D),P.expirationTime=R,P}function Fw(P,D,R){return D=Dl(4,P.children!==null?P.children:[],P.key,D),D.expirationTime=R,D.stateNode={containerInfo:P.containerInfo,pendingChildren:null,implementation:P.implementation},D}function vF(P,D,R){this.tag=D,this.current=null,this.containerInfo=P,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=He,this.pendingContext=this.context=null,this.hydrate=R,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function $v(P,D){var R=P.firstSuspendedTime;return P=P.lastSuspendedTime,R!==0&&R>=D&&P<=D}function WA(P,D){var R=P.firstSuspendedTime,j=P.lastSuspendedTime;R<D&&(P.firstSuspendedTime=D),(j>D||R===0)&&(P.lastSuspendedTime=D),D<=P.lastPingedTime&&(P.lastPingedTime=0),D<=P.lastExpiredTime&&(P.lastExpiredTime=0)}function eD(P,D){D>P.firstPendingTime&&(P.firstPendingTime=D);var R=P.firstSuspendedTime;R!==0&&(D>=R?P.firstSuspendedTime=P.lastSuspendedTime=P.nextKnownPendingLevel=0:D>=P.lastSuspendedTime&&(P.lastSuspendedTime=D+1),D>P.nextKnownPendingLevel&&(P.nextKnownPendingLevel=D))}function jm(P,D){var R=P.lastExpiredTime;(R===0||R>D)&&(P.lastExpiredTime=D)}function tD(P){var D=P._reactInternalFiber;if(D===void 0)throw typeof P.render==\"function\"?Error(n(188)):Error(n(268,Object.keys(P)));return P=Ee(D),P===null?null:P.stateNode}function rD(P,D){P=P.memoizedState,P!==null&&P.dehydrated!==null&&P.retryTime<D&&(P.retryTime=D)}function qm(P,D){rD(P,D),(P=P.alternate)&&rD(P,D)}var nD={createContainer:function(P,D,R){return P=new vF(P,D,R),D=Dl(3,null,null,D===2?7:D===1?3:0),P.current=D,D.stateNode=P},updateContainer:function(P,D,R,j){var Y=D.current,fe=ga(),ve=pt.suspense;fe=HA(fe,Y,ve);e:if(R){R=R._reactInternalFiber;t:{if(we(R)!==R||R.tag!==1)throw Error(n(170));var vt=R;do{switch(vt.tag){case 3:vt=vt.stateNode.context;break t;case 1:if(ii(vt.type)){vt=vt.stateNode.__reactInternalMemoizedMergedChildContext;break t}}vt=vt.return}while(vt!==null);throw Error(n(171))}if(R.tag===1){var wt=R.type;if(ii(wt)){R=uu(R,wt,vt);break e}}R=vt}else R=Ni;return D.context===null?D.context=R:D.pendingContext=R,D=ys(fe,ve),D.payload={element:P},j=j===void 0?null:j,j!==null&&(D.callback=j),tt(Y,D),Sc(Y,fe),fe},batchedEventUpdates:function(P,D){var R=yr;yr|=2;try{return P(D)}finally{yr=R,yr===En&&ji()}},batchedUpdates:function(P,D){var R=yr;yr|=1;try{return P(D)}finally{yr=R,yr===En&&ji()}},unbatchedUpdates:function(P,D){var R=yr;yr&=-2,yr|=Tm;try{return P(D)}finally{yr=R,yr===En&&ji()}},deferredUpdates:function(P){return lo(97,P)},syncUpdates:function(P,D,R,j){return lo(99,P.bind(null,D,R,j))},discreteUpdates:function(P,D,R,j){var Y=yr;yr|=4;try{return lo(98,P.bind(null,D,R,j))}finally{yr=Y,yr===En&&ji()}},flushDiscreteUpdates:function(){(yr&(1|rs|js))===En&&(pF(),Ip())},flushControlled:function(P){var D=yr;yr|=1;try{lo(99,P)}finally{yr=D,yr===En&&ji()}},flushSync:Kv,flushPassiveEffects:Ip,IsThisRendererActing:{current:!1},getPublicRootInstance:function(P){if(P=P.current,!P.child)return null;switch(P.child.tag){case 5:return ce(P.child.stateNode);default:return P.child.stateNode}},attemptSynchronousHydration:function(P){switch(P.tag){case 3:var D=P.stateNode;D.hydrate&&Vv(D,D.firstPendingTime);break;case 13:Kv(function(){return Sc(P,1073741823)}),D=Ua(ga(),150,100),qm(P,D)}},attemptUserBlockingHydration:function(P){if(P.tag===13){var D=Ua(ga(),150,100);Sc(P,D),qm(P,D)}},attemptContinuousHydration:function(P){if(P.tag===13){ga();var D=xA++;Sc(P,D),qm(P,D)}},attemptHydrationAtCurrentPriority:function(P){if(P.tag===13){var D=ga();D=HA(D,P,null),Sc(P,D),qm(P,D)}},findHostInstance:tD,findHostInstanceWithWarning:function(P){return tD(P)},findHostInstanceWithNoPortals:function(P){return P=De(P),P===null?null:P.tag===20?P.stateNode.instance:P.stateNode},shouldSuspend:function(){return!1},injectIntoDevTools:function(P){var D=P.findFiberByHostInstance;return wF(r({},P,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:u.ReactCurrentDispatcher,findHostInstanceByFiber:function(R){return R=Ee(R),R===null?null:R.stateNode},findFiberByHostInstance:function(R){return D?D(R):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}};aB.exports=nD.default||nD;var DF=aB.exports;return aB.exports=t,DF}});var kEe=_((mVt,bEe)=>{\"use strict\";bEe.exports=xEe()});var FEe=_((yVt,QEe)=>{\"use strict\";var Wyt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};QEe.exports=Wyt});var LEe=_((EVt,NEe)=>{\"use strict\";var Vyt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[o]=r[o])}return t},Kk=function(){function t(e,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,o){return r&&t(e.prototype,r),o&&t(e,o),e}}();function b6(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function k6(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var tu=FEe(),Kyt=function(){function t(e,r,o,a,n,u){k6(this,t),this.left=e,this.right=r,this.top=o,this.bottom=a,this.width=n,this.height=u}return Kk(t,[{key:\"fromJS\",value:function(r){r(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:\"toString\",value:function(){return\"<Layout#\"+this.left+\":\"+this.right+\";\"+this.top+\":\"+this.bottom+\";\"+this.width+\":\"+this.height+\">\"}}]),t}(),TEe=function(){Kk(t,null,[{key:\"fromJS\",value:function(r){var o=r.width,a=r.height;return new t(o,a)}}]);function t(e,r){k6(this,t),this.width=e,this.height=r}return Kk(t,[{key:\"fromJS\",value:function(r){r(this.width,this.height)}},{key:\"toString\",value:function(){return\"<Size#\"+this.width+\"x\"+this.height+\">\"}}]),t}(),REe=function(){function t(e,r){k6(this,t),this.unit=e,this.value=r}return Kk(t,[{key:\"fromJS\",value:function(r){r(this.unit,this.value)}},{key:\"toString\",value:function(){switch(this.unit){case tu.UNIT_POINT:return String(this.value);case tu.UNIT_PERCENT:return this.value+\"%\";case tu.UNIT_AUTO:return\"auto\";default:return this.value+\"?\"}}},{key:\"valueOf\",value:function(){return this.value}}]),t}();NEe.exports=function(t,e){function r(u,A,p){var h=u[A];u[A]=function(){for(var E=arguments.length,I=Array(E),v=0;v<E;v++)I[v]=arguments[v];return p.call.apply(p,[this,h].concat(I))}}for(var o=[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"],a=function(){var A,p=o[n],h=(A={},b6(A,tu.UNIT_POINT,e.Node.prototype[p]),b6(A,tu.UNIT_PERCENT,e.Node.prototype[p+\"Percent\"]),b6(A,tu.UNIT_AUTO,e.Node.prototype[p+\"Auto\"]),A);r(e.Node.prototype,p,function(E){for(var I=arguments.length,v=Array(I>1?I-1:0),b=1;b<I;b++)v[b-1]=arguments[b];var C=v.pop(),T=void 0,L=void 0;if(C===\"auto\")T=tu.UNIT_AUTO,L=void 0;else if(C instanceof REe)T=C.unit,L=C.valueOf();else if(T=typeof C==\"string\"&&C.endsWith(\"%\")?tu.UNIT_PERCENT:tu.UNIT_POINT,L=parseFloat(C),!Number.isNaN(C)&&Number.isNaN(L))throw new Error(\"Invalid value \"+C+\" for \"+p);if(!h[T])throw new Error('Failed to execute \"'+p+`\": Unsupported unit '`+C+\"'\");if(L!==void 0){var U;return(U=h[T]).call.apply(U,[this].concat(v,[L]))}else{var J;return(J=h[T]).call.apply(J,[this].concat(v))}})},n=0;n<o.length;n++)a();return r(e.Config.prototype,\"free\",function(){e.Config.destroy(this)}),r(e.Node,\"create\",function(u,A){return A?e.Node.createWithConfig(A):e.Node.createDefault()}),r(e.Node.prototype,\"free\",function(){e.Node.destroy(this)}),r(e.Node.prototype,\"freeRecursive\",function(){for(var u=0,A=this.getChildCount();u<A;++u)this.getChild(0).freeRecursive();this.free()}),r(e.Node.prototype,\"setMeasureFunc\",function(u,A){return A?u.call(this,function(){return TEe.fromJS(A.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(e.Node.prototype,\"calculateLayout\",function(u){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:tu.DIRECTION_LTR;return u.call(this,A,p,h)}),Vyt({Config:e.Config,Node:e.Node,Layout:t(\"Layout\",Kyt),Size:t(\"Size\",TEe),Value:t(\"Value\",REe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},tu)}});var MEe=_((exports,module)=>{(function(t,e){typeof define==\"function\"&&define.amd?define([],function(){return e}):typeof module==\"object\"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module==\"function\"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall(\"nbind_init\")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<\"u\"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT===\"WEB\")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT===\"WORKER\")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT===\"NODE\")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT===\"SHELL\")ENVIRONMENT_IS_SHELL=!0;else throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\");else ENVIRONMENT_IS_WEB=typeof window==\"object\",ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\",ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof Be==\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}(\"\")),nodePath||(nodePath={}(\"\")),e=nodePath.normalize(e);var o=nodeFS.readFileSync(e);return r?o:o.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\\\/g,\"/\"):Module.thisProgram=\"unknown-program\"),Module.arguments=process.argv.slice(2),typeof module<\"u\"&&(module.exports=Module),Module.inspect=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<\"u\"&&(Module.printErr=printErr),typeof read<\"u\"?Module.read=read:Module.read=function(){throw\"no read() available\"},Module.readBinary=function(e){if(typeof readbuffer==\"function\")return new Uint8Array(readbuffer(e));var r=read(e,\"binary\");return assert(typeof r==\"object\"),r},typeof scriptArgs<\"u\"?Module.arguments=scriptArgs:typeof arguments<\"u\"&&(Module.arguments=arguments),typeof quit==\"function\"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,o){var a=new XMLHttpRequest;a.open(\"GET\",e,!0),a.responseType=\"arraybuffer\",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):o()},a.onerror=o,a.send(null)},typeof arguments<\"u\"&&(Module.arguments=arguments),typeof console<\"u\")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<\"u\"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>\"u\"&&(Module.setWindowTitle=function(t){document.title=t})}else throw\"Unknown runtime environment. Where are we?\";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram=\"./this.program\"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(t[t.length-1]===\"*\")return Runtime.QUANTUM_SIZE;if(t[0]===\"i\"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e===\"double\"||e===\"i64\"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t==\"i64\"||t==\"double\")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module[\"dynCall_\"+t].apply(null,[e].concat(r)):Module[\"dynCall_\"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e<Runtime.functionPointers.length;e++)if(!Runtime.functionPointers[e])return Runtime.functionPointers[e]=t,2*(1+e);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"},removeFunction:function(t){Runtime.functionPointers[(t-2)/2]=null},warnOnce:function(t){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[t]||(Runtime.warnOnce.shown[t]=1,Module.printErr(t))},funcWrappers:{},getFuncWrapper:function(t,e){if(!!t){assert(e),Runtime.funcWrappers[e]||(Runtime.funcWrappers[e]={});var r=Runtime.funcWrappers[e];return r[t]||(e.length===1?r[t]=function(){return Runtime.dynCall(e,t)}:e.length===2?r[t]=function(a){return Runtime.dynCall(e,t,[a])}:r[t]=function(){return Runtime.dynCall(e,t,Array.prototype.slice.call(arguments))}),r[t]}},getCompilerSetting:function(t){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"},stackAlloc:function(t){var e=STACKTOP;return STACKTOP=STACKTOP+t|0,STACKTOP=STACKTOP+15&-16,e},staticAlloc:function(t){var e=STATICTOP;return STATICTOP=STATICTOP+t|0,STATICTOP=STATICTOP+15&-16,e},dynamicAlloc:function(t){var e=HEAP32[DYNAMICTOP_PTR>>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var o=enlargeMemory();if(!o)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var o=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return o},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort(\"Assertion failed: \"+e)}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func)try{func=eval(\"_\"+ident)}catch(t){}return assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,o,a,n){var u=getCFunc(e),A=[],p=0;if(a)for(var h=0;h<a.length;h++){var E=toC[o[h]];E?(p===0&&(p=Runtime.stackSave()),A[h]=E(a[h])):A[h]=a[h]}var I=u.apply(null,A);if(r===\"string\"&&(I=Pointer_stringify(I)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return I};var sourceRegex=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;function parseJSFunc(t){var e=t.toString().match(sourceRegex).slice(1);return{arguments:e[0],body:e[1],returnValue:e[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var t in JSfuncs)JSfuncs.hasOwnProperty(t)&&(JSsource[t]=parseJSFunc(JSfuncs[t]))}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(t){return t===\"number\"}),numericRet=returnType!==\"string\";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(t,e){return\"$\"+e}),funcstr=\"(function(\"+argNames.join(\",\")+\") {\",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+=\"var stack = \"+JSsource.stackSave.body+\";\";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type!==\"number\"){var convertCode=JSsource[type+\"ToC\"];funcstr+=\"var \"+convertCode.arguments+\" = \"+arg+\";\",funcstr+=convertCode.body+\";\",funcstr+=arg+\"=(\"+convertCode.returnValue+\");\"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+=\"var ret = \"+cfuncname+\"(\"+argNames.join(\",\")+\");\",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+=\"ret = \"+strgfy+\"(ret);\"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace(\"()\",\"(stack)\")+\";\"),funcstr+=\"return ret})\",eval(funcstr)}})(),Module.ccall=ccall,Module.cwrap=cwrap;function setValue(t,e,r,o){switch(r=r||\"i8\",r.charAt(r.length-1)===\"*\"&&(r=\"i32\"),r){case\"i1\":HEAP8[t>>0]=e;break;case\"i8\":HEAP8[t>>0]=e;break;case\"i16\":HEAP16[t>>1]=e;break;case\"i32\":HEAP32[t>>2]=e;break;case\"i64\":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case\"float\":HEAPF32[t>>2]=e;break;case\"double\":HEAPF64[t>>3]=e;break;default:abort(\"invalid type for setValue: \"+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||\"i8\",e.charAt(e.length-1)===\"*\"&&(e=\"i32\"),e){case\"i1\":return HEAP8[t>>0];case\"i8\":return HEAP8[t>>0];case\"i16\":return HEAP16[t>>1];case\"i32\":return HEAP32[t>>2];case\"i64\":return HEAP32[t>>2];case\"float\":return HEAPF32[t>>2];case\"double\":return HEAPF64[t>>3];default:abort(\"invalid type for setValue: \"+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,o){var a,n;typeof t==\"number\"?(a=!0,n=t):(a=!1,n=t.length);var u=typeof e==\"string\"?e:null,A;if(r==ALLOC_NONE?A=o:A=[typeof _malloc==\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,u?1:e.length)),a){var o=A,p;for(assert((A&3)==0),p=A+(n&-4);o<p;o+=4)HEAP32[o>>2]=0;for(p=A+n;o<p;)HEAP8[o++>>0]=0;return A}if(u===\"i8\")return t.subarray||t.slice?HEAPU8.set(t,A):HEAPU8.set(new Uint8Array(t),A),A;for(var h=0,E,I,v;h<n;){var b=t[h];if(typeof b==\"function\"&&(b=Runtime.getFunctionIndex(b)),E=u||e[h],E===0){h++;continue}E==\"i64\"&&(E=\"i32\"),setValue(A+h,b,E),v!==E&&(I=Runtime.getNativeTypeSize(E),v=E),h+=I}return A}Module.allocate=allocate;function getMemory(t){return staticSealed?runtimeInitialized?_malloc(t):Runtime.dynamicAlloc(t):Runtime.staticAlloc(t)}Module.getMemory=getMemory;function Pointer_stringify(t,e){if(e===0||!t)return\"\";for(var r=0,o,a=0;o=HEAPU8[t+a>>0],r|=o,!(o==0&&!e||(a++,e&&a==e)););e||(e=a);var n=\"\";if(r<128){for(var u=1024,A;e>0;)A=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,u))),n=n?n+A:A,t+=u,e-=u;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e=\"\";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var o,a,n,u,A,p,h=\"\";;){if(o=t[e++],!o)return h;if(!(o&128)){h+=String.fromCharCode(o);continue}if(a=t[e++]&63,(o&224)==192){h+=String.fromCharCode((o&31)<<6|a);continue}if(n=t[e++]&63,(o&240)==224?o=(o&15)<<12|a<<6|n:(u=t[e++]&63,(o&248)==240?o=(o&7)<<18|a<<12|n<<6|u:(A=t[e++]&63,(o&252)==248?o=(o&3)<<24|a<<18|n<<12|u<<6|A:(p=t[e++]&63,o=(o&1)<<30|a<<24|n<<18|u<<12|A<<6|p))),o<65536)h+=String.fromCharCode(o);else{var E=o-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,o){if(!(o>0))return 0;for(var a=r,n=r+o-1,u=0;u<t.length;++u){var A=t.charCodeAt(u);if(A>=55296&&A<=57343&&(A=65536+((A&1023)<<10)|t.charCodeAt(++u)&1023),A<=127){if(r>=n)break;e[r++]=A}else if(A<=2047){if(r+1>=n)break;e[r++]=192|A>>6,e[r++]=128|A&63}else if(A<=65535){if(r+2>=n)break;e[r++]=224|A>>12,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=2097151){if(r+3>=n)break;e[r++]=240|A>>18,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=67108863){if(r+4>=n)break;e[r++]=248|A>>24,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else{if(r+5>=n)break;e[r++]=252|A>>30,e[r++]=128|A>>24&63,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r<t.length;++r){var o=t.charCodeAt(r);o>=55296&&o<=57343&&(o=65536+((o&1023)<<10)|t.charCodeAt(++r)&1023),o<=127?++e:o<=2047?e+=2:o<=65535?e+=3:o<=2097151?e+=4:o<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),o=lengthBytesUTF8(r)+1,a=_malloc(o);stringToUTF8(r,a,o);var n=_malloc(4),u=e(a,0,0,n);if(getValue(n,\"i32\")===0&&u)return Pointer_stringify(u)}catch{}finally{a&&_free(a),n&&_free(n),u&&_free(u)}return t}return Runtime.warnOnce(\"warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\"),t}function demangleAll(t){var e=/__Z[\\w\\d_]+/g;return t.replace(e,function(r){var o=demangle(r);return r===o?r:r+\" [\"+o+\"]\"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return\"(no stack trace available)\"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=`\n`+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(t){for(;t.length>0;){var e=t.shift();if(typeof e==\"function\"){e();continue}var r=e.func;typeof r==\"number\"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun==\"function\"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun==\"function\"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var o=r>0?r:lengthBytesUTF8(t)+1,a=new Array(o),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r<t.length;r++){var o=t[r];o>255&&(o&=255),e.push(String.fromCharCode(o))}return e.join(\"\")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var o,a;r&&(a=e+lengthBytesUTF8(t),o=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=o)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var o=0;o<t.length;++o)HEAP8[e++>>0]=t.charCodeAt(o);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var o=e>>>16,a=e&65535,n=r>>>16,u=r&65535;return a*u+(o*u+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,o,a,n,u,A){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,o,a,n,u,A){return ASM_CONSTS[t](e,r,o,a,n,u,A)}function _emscripten_asm_const_iiiii(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiidddddd(t,e,r,o,a,n,u,A,p){return ASM_CONSTS[t](e,r,o,a,n,u,A,p)}function _emscripten_asm_const_iiididi(t,e,r,o,a,n,u){return ASM_CONSTS[t](e,r,o,a,n,u)}function _emscripten_asm_const_iiii(t,e,r,o){return ASM_CONSTS[t](e,r,o)}function _emscripten_asm_const_iiiid(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiiiii(t,e,r,o,a,n){return ASM_CONSTS[t](e,r,o,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr(\"missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj\"),abort(-1)}function __decorate(t,e,r,o){var a=arguments.length,n=a<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,r):o,u;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")n=Reflect.decorate(t,e,r,o);else for(var A=t.length-1;A>=0;A--)(u=t[A])&&(n=(a<3?u(n):a>3?u(e,r,n):u(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,o){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=o/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,\"cbFunction &\":_nbind.CallbackType,\"const cbFunction &\":_nbind.CallbackType,\"const std::string &\":_nbind.StringType,\"std::string\":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:\"\"});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var u=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,u)},Browser.mainLoop.method=\"timeout\";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method=\"rAF\";else if(t==2){if(!window.setImmediate){let n=function(u){u.source===window&&u.data===o&&(u.stopPropagation(),r.shift()())};var a=n,r=[],o=\"setimmediate\";window.addEventListener(\"message\",n,!0),window.setImmediate=function(A){r.push(A),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(A),window.postMessage({target:o})):window.postMessage(o,\"*\")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,o,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\"),Browser.mainLoop.func=t,Browser.mainLoop.arg=o;var n;typeof o<\"u\"?n=function(){Module.dynCall_vi(t,o)}:n=function(){Module.dynCall_v(t)};var u=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,I=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=I:(I=I+.5,Browser.mainLoop.remainingBlockers=(8*E+I)/9)}if(console.log('main loop blocker \"'+h.name+'\" took '+(Date.now()-p)+\" ms\"),Browser.mainLoop.updateStatus(),u<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(u<Browser.mainLoop.currentlyRunningMainloop)){if(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method===\"timeout\"&&Module.ctx&&(Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\"),Browser.mainLoop.method=\"\"),Browser.mainLoop.runIter(n),!(u<Browser.mainLoop.currentlyRunningMainloop)&&(typeof SDL==\"object\"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())}}},a||(e&&e>0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw\"SimulateInfiniteLoop\"}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||\"Please wait...\",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e<r?Module.setStatus(t+\" (\"+(r-e)+\"/\"+r+\")\"):Module.setStatus(t):Module.setStatus(\"\")}},runIter:function(t){if(!ABORT){if(Module.preMainLoop){var e=Module.preMainLoop();if(e===!1)return}try{t()}catch(r){if(r instanceof ExitStatus)return;throw r&&typeof r==\"object\"&&r.stack&&Module.printErr(\"exception thrown: \"+[r,r.stack]),r}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),Browser.initted)return;Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch{Browser.hasBlobConstructor=!1,console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\")}Browser.BlobBuilder=typeof MozBlobBuilder<\"u\"?MozBlobBuilder:typeof WebKitBlobBuilder<\"u\"?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log(\"warning: no BlobBuilder\"),Browser.URLObject=typeof window<\"u\"?window.URL?window.URL:window.webkitURL:void 0,!Module.noImageDecoding&&typeof Browser.URLObject>\"u\"&&(console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\"),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,u,A,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(u)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(u)}))}catch(b){Runtime.warnOnce(\"Blob constructor present but fails: \"+b+\"; falling back to blob builder\")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var I=Browser.URLObject.createObjectURL(h),v=new Image;v.onload=function(){assert(v.complete,\"Image \"+u+\" could not be decoded\");var C=document.createElement(\"canvas\");C.width=v.width,C.height=v.height;var T=C.getContext(\"2d\");T.drawImage(v,0,0),Module.preloadedImages[u]=C,Browser.URLObject.revokeObjectURL(I),A&&A(n)},v.onerror=function(C){console.log(\"Image \"+I+\" could not be decoded\"),p&&p()},v.src=I},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{\".ogg\":1,\".wav\":1,\".mp3\":1}},e.handle=function(n,u,A,p){var h=!1;function E(T){h||(h=!0,Module.preloadedAudios[u]=T,A&&A(n))}function I(){h||(h=!0,Module.preloadedAudios[u]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var v=new Blob([n],{type:Browser.getMimetype(u)})}catch{return I()}var b=Browser.URLObject.createObjectURL(v),C=new Audio;C.addEventListener(\"canplaythrough\",function(){E(C)},!1),C.onerror=function(L){if(h)return;console.log(\"warning: browser could not fully decode audio \"+u+\", trying slower base64 approach\");function U(J){for(var te=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",le=\"=\",pe=\"\",Ae=0,ye=0,ae=0;ae<J.length;ae++)for(Ae=Ae<<8|J[ae],ye+=8;ye>=6;){var we=Ae>>ye-6&63;ye-=6,pe+=te[we]}return ye==2?(pe+=te[(Ae&3)<<4],pe+=le+le):ye==4&&(pe+=te[(Ae&15)<<2],pe+=le),pe}C.src=\"data:audio/x-\"+u.substr(-3)+\";base64,\"+U(n),E(C)},C.src=b,Browser.safeSetTimeout(function(){E(C)},1e4)}else return I()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var o=Module.canvas;o&&(o.requestPointerLock=o.requestPointerLock||o.mozRequestPointerLock||o.webkitRequestPointerLock||o.msRequestPointerLock||function(){},o.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},o.exitPointerLock=o.exitPointerLock.bind(document),document.addEventListener(\"pointerlockchange\",r,!1),document.addEventListener(\"mozpointerlockchange\",r,!1),document.addEventListener(\"webkitpointerlockchange\",r,!1),document.addEventListener(\"mspointerlockchange\",r,!1),Module.elementPointerLock&&o.addEventListener(\"click\",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,o){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var u={antialias:!1,alpha:!1};if(o)for(var A in o)u[A]=o[A];n=GL.createContext(t,u),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext(\"2d\");return a?(r&&(e||assert(typeof GLctx>\"u\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>\"u\"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>\"u\"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>\"u\"&&(Browser.vrDevice=null);var o=Module.canvas;function a(){Browser.isFullscreen=!1;var u=o.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===u?(o.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},o.exitFullscreen=o.exitFullscreen.bind(document),Browser.lockPointer&&o.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(u.parentNode.insertBefore(o,u),u.parentNode.removeChild(u),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(o)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener(\"fullscreenchange\",a,!1),document.addEventListener(\"mozfullscreenchange\",a,!1),document.addEventListener(\"webkitfullscreenchange\",a,!1),document.addEventListener(\"MSFullscreenChange\",a,!1));var n=document.createElement(\"div\");o.parentNode.insertBefore(n,o),n.appendChild(o),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\"),Browser.requestFullScreen=function(o,a,n){return Browser.requestFullscreen(o,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>\"u\"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:\"image/jpeg\",jpeg:\"image/jpeg\",png:\"image/png\",bmp:\"image/bmp\",ogg:\"audio/ogg\",wav:\"audio/wav\",mp3:\"audio/mpeg\"}[t.substr(t.lastIndexOf(\".\")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case\"DOMMouseScroll\":e=t.detail;break;case\"mousewheel\":e=t.wheelDelta;break;case\"wheel\":e=t.deltaY;break;default:throw\"unrecognized mouse wheel event: \"+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!=\"mousemove\"&&\"mozMovementX\"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<\"u\"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,o=Module.canvas.height,a=typeof window.scrollX<\"u\"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<\"u\"?window.scrollY:window.pageYOffset;if(t.type===\"touchstart\"||t.type===\"touchend\"||t.type===\"touchmove\"){var u=t.touch;if(u===void 0)return;var A=u.pageX-(a+e.left),p=u.pageY-(n+e.top);A=A*(r/e.width),p=p*(o/e.height);var h={x:A,y:p};if(t.type===\"touchstart\")Browser.lastTouches[u.identifier]=h,Browser.touches[u.identifier]=h;else if(t.type===\"touchend\"||t.type===\"touchmove\"){var E=Browser.touches[u.identifier];E||(E=h),Browser.lastTouches[u.identifier]=E,Browser.touches[u.identifier]=h}return}var I=t.pageX-(a+e.left),v=t.pageY-(n+e.top);I=I*(r/e.width),v=v*(o/e.height),Browser.mouseMovementX=I-Browser.mouseX,Browser.mouseMovementY=v-Browser.mouseY,Browser.mouseX=I,Browser.mouseY=v}},asyncLoad:function(t,e,r,o){var a=o?\"\":\"al \"+t;Module.readAsync(t,function(n){assert(n,'Loading data file \"'+t+'\" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file \"'+t+'\" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var o=Module.canvas;Browser.updateCanvasDimensions(o,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var o=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(o/a<Module.forcedAspectRatio?o=Math.round(a*Module.forcedAspectRatio):a=Math.round(o/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===t.parentNode&&typeof screen<\"u\"){var n=Math.min(screen.width/o,screen.height/a);o=Math.round(o*n),a=Math.round(a*n)}Browser.resizeCanvas?(t.width!=o&&(t.width=o),t.height!=a&&(t.height=a),typeof t.style<\"u\"&&(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))):(t.width!=e&&(t.width=e),t.height!=r&&(t.height=r),typeof t.style<\"u\"&&(o!=e||a!=r?(t.style.setProperty(\"width\",o+\"px\",\"important\"),t.style.setProperty(\"height\",a+\"px\",\"important\")):(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var t=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,t}},SYSCALLS={varargs:0,get:function(t){SYSCALLS.varargs+=4;var e=HEAP32[SYSCALLS.varargs-4>>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(o){return(typeof FS>\"u\"||!(o instanceof FS.ErrnoError))&&abort(o),-o.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>\"u\"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,\"X\"],[1,1,\"const X\"],[128,1,\"X *\"],[256,1,\"X &\"],[384,1,\"X &&\"],[512,1,\"std::shared_ptr<X>\"],[640,1,\"std::unique_ptr<X>\"],[5120,1,\"std::vector<X>\"],[6144,2,\"std::array<X, Y>\"],[9216,-1,\"std::function<X (Y)>\"]];function r(p,h,E,I,v,b){if(h==1){var C=I&896;(C==128||C==256||C==384)&&(p=\"X const\")}var T;return b?T=E.replace(\"X\",p).replace(\"Y\",v):T=p.replace(\"X\",E).replace(\"Y\",v),T.replace(/([*&]) (?=[*&])/g,\"$1\")}function o(p,h,E,I,v){throw new Error(p+\" type \"+E.replace(\"X\",h+\"?\")+(I?\" with flag \"+I:\"\")+\" in \"+v)}function a(p,h,E,I,v,b,C,T){b===void 0&&(b=\"X\"),T===void 0&&(T=1);var L=E(p);if(L)return L;var U=I(p),J=U.placeholderFlag,te=e[J];C&&te&&(b=r(C[2],C[0],b,te[0],\"?\",!0));var le;J==0&&(le=\"Unbound\"),J>=10&&(le=\"Corrupt\"),T>20&&(le=\"Deeply nested\"),le&&o(le,p,b,J,v||\"?\");var pe=U.paramList[0],Ae=a(pe,h,E,I,v,b,te,T+1),ye,ae={flags:te[0],id:p,name:\"\",paramList:[Ae]},we=[],Pe=\"?\";switch(U.placeholderFlag){case 1:ye=Ae.spec;break;case 2:if((Ae.flags&15360)==1024&&Ae.spec.ptrSize==1){ae.flags=7168;break}case 3:case 6:case 5:ye=Ae.spec,Ae.flags&15360;break;case 8:Pe=\"\"+U.paramList[1],ae.paramList.push(U.paramList[1]);break;case 9:for(var g=0,Ee=U.paramList[1];g<Ee.length;g++){var De=Ee[g],ce=a(De,h,E,I,v,b,te,T+1);we.push(ce.name),ae.paramList.push(ce)}Pe=we.join(\", \");break;default:break}if(ae.name=r(te[2],te[0],Ae.name,Ae.flags,Pe),ye){for(var ne=0,ee=Object.keys(ye);ne<ee.length;ne++){var Ie=ee[ne];ae[Ie]=ae[Ie]||ye[Ie]}ae.flags|=ye.flags}return n(h,ae)}function n(p,h){var E=h.flags,I=E&896,v=E&15360;return!h.name&&v==1024&&(h.ptrSize==1?h.name=(E&16?\"\":(E&8?\"un\":\"\")+\"signed \")+\"char\":h.name=(E&8?\"u\":\"\")+(E&32?\"float\":\"int\")+(h.ptrSize*8+\"_t\")),h.ptrSize==8&&!(E&32)&&(v=64),v==2048&&(I==512||I==640?v=4096:I&&(v=3072)),p(v,h)}var u=function(){function p(h){this.id=h.id,this.name=h.name,this.flags=h.flags,this.spec=h}return p.prototype.toString=function(){return this.name},p}(),A={Type:u,getComplexType:a,makeType:n,structureList:e};return t.output=A,t.output||A}function __nbind_register_type(t,e){var r=_nbind.readAsciiString(e),o={flags:10240,id:t,name:r};_nbind.makeType(_nbind.constructType,o)}function __nbind_register_callback_signature(t,e){var r=_nbind.readTypeIdList(t,e),o=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[o]=_nbind.makeJSCaller(r),o}function __extends(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function o(){this.constructor=t}o.prototype=e.prototype,t.prototype=new o}function __nbind_register_class(t,e,r,o,a,n,u){var A=_nbind.readAsciiString(u),p=_nbind.readPolicyList(e),h=HEAPU32.subarray(t/4,t/4+2),E={flags:2048|(p.Value?2:0),id:h[0],name:A},I=_nbind.makeType(_nbind.constructType,E);I.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),I.destroy=_nbind.makeMethodCaller(I.ptrType,{boundID:E.id,flags:0,name:\"destroy\",num:0,ptr:n,title:I.name+\".free\",typeList:[\"void\",\"uint32_t\",\"uint32_t\"]}),a&&(I.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),I.upcastList=Array.prototype.slice.call(HEAPU32.subarray(o/4,o/4+a))),Module[I.name]=I.makeBound(p),_nbind.BindClass.list.push(I)}function _removeAccessorPrefix(t){var e=/^[Gg]et_?([A-Z]?([A-Z]?))/;return t.replace(e,function(r,o,a){return a?o:o.toLowerCase()})}function __nbind_register_function(t,e,r,o,a,n,u,A,p,h){var E=_nbind.getType(t),I=_nbind.readPolicyList(e),v=_nbind.readTypeIdList(r,o),b;if(u==5)b=[{direct:a,name:\"__nbindConstructor\",ptr:0,title:E.name+\" constructor\",typeList:[\"uint32_t\"].concat(v.slice(1))},{direct:n,name:\"__nbindValueConstructor\",ptr:0,title:E.name+\" value constructor\",typeList:[\"void\",\"uint32_t\"].concat(v.slice(1))}];else{var C=_nbind.readAsciiString(A),T=(E.name&&E.name+\".\")+C;(u==3||u==4)&&(C=_removeAccessorPrefix(C)),b=[{boundID:t,direct:n,name:C,ptr:a,title:T,typeList:v}]}for(var L=0,U=b;L<U.length;L++){var J=U[L];J.signatureType=u,J.policyTbl=I,J.num=p,J.flags=h,E.addMethod(J)}}function _nbind_value(t,e){_nbind.typeNameTbl[t]||_nbind.throwError(\"Unknown value type \"+t),Module.NBind.bind_value(t,e),_defineHidden(_nbind.typeNameTbl[t].proto.prototype.__nbindValueConstructor)(e.prototype,\"__nbindValueConstructor\")}Module._nbind_value=_nbind_value;function __nbind_get_value_object(t,e){var r=_nbind.popValue(t);if(!r.fromJS)throw new Error(\"Object \"+r+\" has no fromJS function\");r.fromJS(function(){r.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([e],arguments))})}function _emscripten_memcpy_big(t,e,r){return HEAPU8.set(HEAPU8.subarray(e,e+r),t),t}function __nbind_register_primitive(t,e,r){var o={flags:1024|r,id:t,ptrSize:e};_nbind.makeType(_nbind.constructType,o)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___setErrNo(t){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),u=SYSCALLS.get(),A=a;return FS.llseek(r,A,u),HEAP32[n>>2]=r.position,r.getdents&&A===0&&u===0&&(r.getdents=null),0}catch(p){return(typeof FS>\"u\"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,I){var v=___syscall146.buffers[E];assert(v),I===0||I===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(v,0)),v.length=0):v.push(I)});for(var u=0;u<a;u++){for(var A=HEAP32[o+u*8>>2],p=HEAP32[o+(u*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[A+h]);n+=p}return n}catch(E){return(typeof FS>\"u\"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;t<e.length;t++){var r=e[t];r.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function t(){}return t.lalloc=function(e){e=e+7&-8;var r=HEAPU32[t.usedPtr];if(e>t.pageSize/2||e>t.pageSize-r){var o=_nbind.typeNameTbl.NBind.proto;return o.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var o=HEAPU32[t.pagePtr];if(o){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],o=new r(e);return typeIdTbl[e.id]=o,_nbind.typeNameTbl[e.name]=o,o}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var o=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(o=[o[0],o.slice(1)]),{paramList:o,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r==\"number\"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply(\"\",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:\"d\",float64_t:\"d\",int64_t:\"d\",uint64_t:\"d\",void:\"v\"},o=t.map(function(n){return r[n.name]||\"i\"}).join(\"\"),a=Module[\"dynCall_\"+o];if(!a)throw new Error(\"dynCall_\"+o+\" not found for \"+e+\"(\"+t.map(function(n){return n.name}).join(\", \")+\")\");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,o){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,o)):(r.arity=o,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return o.heap=a[r.ptrSize*8],o.ptrSize=r.ptrSize,o}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a==\"number\")return a;throw new Error(\"Type mismatch\")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error(\"Type mismatch\")}if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,o=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,o,r),o}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushCString(a,o)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(o){return!!o},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return\"!!(\"+r+\")\"},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a==\"boolean\")return a;throw new Error(\"Type mismatch\")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(o){__extends(a,o);function a(n,u,A,p){var h=o.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=u,I=A,v=p;if(n!==_nbind.ptrMarker){var b=h.__nbindConstructor.apply(h,arguments);E=4608,v=HEAPU32[b/4],I=HEAPU32[b/4+1]}var C={configurable:!0,enumerable:!1,value:null,writable:!1},T={__nbindFlags:E,__nbindPtr:I};v&&(T.__nbindShared=v,_nbind.mark(h));for(var L=0,U=Object.keys(T);L<U.length;L++){var J=U[L];C.value=T[J],Object.defineProperty(h,J,C)}return _defineHidden(0)(h,\"__nbindState\"),h}return a.prototype.free=function(){e.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,\"__nbindShared\"),disableMember(this,\"__nbindPtr\")},a}(Wrapper);return __decorate([_defineHidden()],r.prototype,\"__nbindConstructor\",void 0),__decorate([_defineHidden()],r.prototype,\"__nbindValueConstructor\",void 0),__decorate([_defineHidden(t)],r.prototype,\"__nbindPolicies\",void 0),r}_nbind.makeBound=makeBound;function disableMember(t,e){function r(){throw new Error(\"Accessing deleted object\")}Object.defineProperty(t,e,{configurable:!1,enumerable:!1,get:r,set:r})}_nbind.ptrMarker={};var BindClass=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return _nbind.popValue(a,o.ptrType)},o.wireWrite=function(a){return pushPointer(a,o.ptrType,!0)},o.pendingSuperCount=0,o.ready=!1,o.methodTbl={},r.paramList?(o.classType=r.paramList[0].classType,o.proto=o.classType.proto):o.classType=o,o}return e.prototype.makeBound=function(r){var o=_nbind.makeBound(r,this);return this.proto=o,this.ptrType.proto=o,o},e.prototype.addMethod=function(r){var o=this.methodTbl[r.name]||[];o.push(r),this.methodTbl[r.name]=o},e.prototype.registerMethods=function(r,o){for(var a,n=0,u=Object.keys(r.methodTbl);n<u.length;n++)for(var A=u[n],p=r.methodTbl[A],h=0,E=p;h<E.length;h++){var I=E[h],v=void 0,b=void 0;if(v=this.proto.prototype,!(o&&I.signatureType!=1))switch(I.signatureType){case 1:v=this.proto;case 5:b=_nbind.makeCaller(I),_nbind.addMethod(v,I.name,b,I.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,I);break;case 3:Object.defineProperty(v,I.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,I),set:a});break;case 2:b=_nbind.makeMethodCaller(r.ptrType,I),_nbind.addMethod(v,I.name,b,I.typeList.length-1);break;default:break}}},e.prototype.registerSuperMethods=function(r,o,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,u,A=0,p=r.superIdList||[];A<p.length;A++){var h=p[A],E=_nbind.getType(h);n++<o||o<0?u=-1:u=0,this.registerSuperMethods(E,u,a)}this.registerMethods(r,o<0)}},e.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map(function(a){return _nbind.getType(a).finish()});var r=this.proto;if(this.superList.length){var o=function(){this.constructor=r};o.prototype=this.superList[0].proto.prototype,r.prototype=new o}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},e.prototype.upcastStep=function(r,o){if(r==this)return o;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],o));if(n)return n}return 0},e}(_nbind.BindType);BindClass.list=[],_nbind.BindClass=BindClass;function popPointer(t,e){return t?new e.proto(_nbind.ptrMarker,e.flags,t):null}_nbind.popPointer=popPointer;function pushPointer(t,e,r){if(!(t instanceof _nbind.Wrapper)){if(r)return _nbind.pushValue(t);throw new Error(\"Type mismatch\")}var o=t.__nbindPtr,a=t.__nbindType.classType,n=e.classType;if(t instanceof e.proto)for(;a!=n;)o=_nbind.callUpcast(a.upcastList[0],o),a=a.superList[0];else if(o=a.upcastStep(n,o),!o)throw new Error(\"Type mismatch\");return o}_nbind.pushPointer=pushPointer;function pushMutablePointer(t,e){var r=pushPointer(t,e);if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return r}var BindClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=(o.flags&896)==256&&r.flags&2,u=a?pushPointer:pushMutablePointer,A=n?_nbind.popValue:popPointer;return o.makeWireWrite=function(p,h){return h.Nullable?function(E){return E?u(E,o):0}:function(E){return u(E,o)}},o.wireRead=function(p){return A(p,o)},o.wireWrite=function(p){return u(p,o)},o}return e}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(t,e){var r=HEAPU32[t/4],o=HEAPU32[t/4+1];return o?new e.proto(_nbind.ptrMarker,e.flags,o,r):null}_nbind.popShared=popShared;function pushShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");return t.__nbindShared}function pushMutableShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return t.__nbindShared}var SharedClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.readResources=[_nbind.resources.pool],o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return o.wireRead=function(u){return popShared(u,o)},o.wireWrite=function(u){return n(u,o)},o}return e}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function t(e){this.refCount=1,this.data=e}return t.prototype.register=function(){var e=firstFreeExternal;return e?firstFreeExternal=_nbind.externalList[e]:e=_nbind.externalList.length,_nbind.externalList[e]=this,e},t.prototype.reference=function(){++this.refCount},t.prototype.dereference=function(e){--this.refCount==0&&(this.free&&this.free(),_nbind.externalList[e]=firstFreeExternal,firstFreeExternal=e)},t}();_nbind.External=External;function popExternal(t){var e=_nbind.externalList[t];return e.dereference(t),e.data}function pushExternal(t){var e=new External(t);return e.reference(),e.register()}var ExternalType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popExternal,r.wireWrite=pushExternal,r}return e}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=function(o){return typeof o!=\"function\"&&_nbind.throwError(\"Type mismatch\"),new _nbind.External(o).register()},r}return e}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(t){var e=firstFreeValue;return e?firstFreeValue=_nbind.valueList[e]:e=_nbind.valueList.length,_nbind.valueList[e]=t,e*2+1}_nbind.pushValue=pushValue;function popValue(t,e){if(t||_nbind.throwError(\"Value type JavaScript class is missing or not registered\"),t&1){t>>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error(\"Invalid value slot \"+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t==\"number\"?t:pushValue(t)*4096+valueBase}function pop64(t){return t<valueBase?t:popValue((t-valueBase)/4096)}var CreateValueType=function(t){__extends(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.makeWireWrite=function(r){return\"(_nbind.pushValue(new \"+r+\"))\"},e}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=push64,r.wireRead=pop64,r}return e}(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(t,e){if(!t)return 0;var r=t.length;if((e.size||e.size===0)&&r<e.size)throw new Error(\"Type mismatch\");var o=e.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*o);HEAPU32[a/4]=r;var n=e.memberType.heap,u=(a+4)/o,A=e.memberType.wireWrite,p=0;if(A)for(;p<r;)n[u++]=A(t[p++]);else for(;p<r;)n[u++]=t[p++];return a}_nbind.pushArray=pushArray;function popArray(t,e){if(t===0)return null;var r=HEAPU32[t/4],o=new Array(r),a=e.memberType.heap;t=(t+4)/e.memberType.ptrSize;var n=e.memberType.wireRead,u=0;if(n)for(;u<r;)o[u++]=n(a[t++]);else for(;u<r;)o[u++]=a[t++];return o}_nbind.popArray=popArray;var ArrayType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return popArray(a,o)},o.wireWrite=function(a){return pushArray(a,o)},o.readResources=[_nbind.resources.pool],o.writeResources=[_nbind.resources.pool],o.memberType=r.paramList[0],r.paramList[1]&&(o.size=r.paramList[1]),o}return e}(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(t,e){if(t==null)if(e&&e.Nullable)t=\"\";else throw new Error(\"Type mismatch\");if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t),o=_nbind.Pool.lalloc(4+r+1);return HEAPU32[o/4]=r,Module.stringToUTF8Array(t,HEAPU8,o+4,r+1),o}_nbind.pushString=pushString;function popString(t){if(t===0)return null;var e=HEAPU32[t/4];return Module.Pointer_stringify(t+4,e)}_nbind.popString=popString;var StringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popString,r.wireWrite=pushString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushString(a,o)}},e}(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(t){return Array.apply(null,Array(t)).map(function(e,r){return\"a\"+(r+1)})}function anyNeedsWireWrite(t,e){return t.reduce(function(r,o){return r||o.needsWireWrite(e)},!1)}function anyNeedsWireRead(t,e){return t.reduce(function(r,o){return r||!!o.needsWireRead(e)},!1)}function makeWireRead(t,e,r,o){var a=t.length;return r.makeWireRead?r.makeWireRead(o,t,a):r.wireRead?(t[a]=r.wireRead,\"(convertParamList[\"+a+\"](\"+o+\"))\"):o}function makeWireWrite(t,e,r,o){var a,n=t.length;return r.makeWireWrite?a=r.makeWireWrite(o,e,t,n):a=r.wireWrite,a?typeof a==\"string\"?a:(t[n]=a,\"(convertParamList[\"+n+\"](\"+o+\"))\"):o}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,\"dynCall(\"+[prefix].concat(argList.map(function(t,e){return makeWireWrite(convertParamList,policyTbl,argTypeList[e],t)})).join(\",\")+\")\"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode=\"function(\"+argList.join(\",\")+\"){\"+(mask?\"this.__nbindFlags&mask&&err();\":\"\")+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,\"_nbind.externalList[num].data(\"+argList.map(function(t,e){return makeWireRead(convertParamList,null,argTypeList[e],t)}).join(\",\")+\")\"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode=\"function(\"+[\"dummy\",\"num\"].concat(argList).join(\",\")+\"){\"+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(t){var e=t.length-1,r=_nbind.getTypes(t,\"callback\"),o=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),u=o.needsWireWrite(null);if(!u&&!n)switch(e){case 0:return function(A,p){return _nbind.externalList[p].data()};case 1:return function(A,p,h){return _nbind.externalList[p].data(h)};case 2:return function(A,p,h,E){return _nbind.externalList[p].data(h,E)};case 3:return function(A,p,h,E,I){return _nbind.externalList[p].data(h,E,I)};default:break}return buildJSCallerFunction(o,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(t,e){var r=e.typeList.length-1,o=e.typeList.slice(0);o.splice(1,0,\"uint32_t\",e.boundID);var a=_nbind.getTypes(o,e.title),n=a[0],u=a.slice(3),A=n.needsWireRead(e.policyTbl),p=anyNeedsWireWrite(u,e.policyTbl),h=e.ptr,E=e.num,I=_nbind.getDynCall(a,e.title),v=~e.flags&1;function b(){throw new Error(\"Calling a non-const method on a const object\")}if(!A&&!p)switch(r){case 0:return function(){return this.__nbindFlags&v?b():I(h,E,_nbind.pushPointer(this,t))};case 1:return function(C){return this.__nbindFlags&v?b():I(h,E,_nbind.pushPointer(this,t),C)};case 2:return function(C,T){return this.__nbindFlags&v?b():I(h,E,_nbind.pushPointer(this,t),C,T)};case 3:return function(C,T,L){return this.__nbindFlags&v?b():I(h,E,_nbind.pushPointer(this,t),C,T,L)};default:break}return buildCallerFunction(I,t,h,E,e.policyTbl,p,\"ptr,num,pushPointer(this,ptrType)\",n,u,v,b)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(t){var e=t.typeList.length-1,r=_nbind.getTypes(t.typeList,t.title),o=r[0],a=r.slice(1),n=o.needsWireRead(t.policyTbl),u=anyNeedsWireWrite(a,t.policyTbl),A=t.direct,p=t.ptr;if(t.direct&&!n&&!u){var h=_nbind.getDynCall(r,t.title);switch(e){case 0:return function(){return h(A)};case 1:return function(b){return h(A,b)};case 2:return function(b,C){return h(A,b,C)};case 3:return function(b,C,T){return h(A,b,C,T)};default:break}p=0}var E;if(p){var I=t.typeList.slice(0);I.splice(1,0,\"uint32_t\"),r=_nbind.getTypes(I,t.title),E=\"ptr,num\"}else p=A,E=\"ptr\";var v=_nbind.getDynCall(r,t.title);return buildCallerFunction(v,null,p,t.num,t.policyTbl,u,E,o,a)}_nbind.makeCaller=makeCaller;function makeOverloader(t,e){var r=[];function o(){return r[arguments.length].apply(this,arguments)}return o.addMethod=function(a,n){r[n]=a},o.addMethod(t,e),o}_nbind.makeOverloader=makeOverloader;var Resource=function(){function t(e,r){var o=this;this.makeOpen=function(){return Object.keys(o.openTbl).join(\"\")},this.makeClose=function(){return Object.keys(o.closeTbl).join(\"\")},this.openTbl={},this.closeTbl={},e&&(this.openTbl[e]=!0),r&&(this.closeTbl[r]=!0)}return t.prototype.add=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];this.openTbl[a]=!0}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];this.closeTbl[a]=!0}},t.prototype.remove=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];delete this.openTbl[a]}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];delete this.closeTbl[a]}},t}();_nbind.Resource=Resource;function listResources(t,e){for(var r=new Resource,o=0,a=t;o<a.length;o++)for(var n=a[o],u=0,A=n.readResources||[];u<A.length;u++){var p=A[u];r.add(p)}for(var h=0,E=e;h<E.length;h++)for(var n=E[h],I=0,v=n.writeResources||[];I<v.length;I++){var p=v[I];r.add(p)}return r}_nbind.listResources=listResources,_nbind.resources={pool:new Resource(\"var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];\",\"_nbind.Pool.lreset(used,page);\")};var ExternalBuffer=function(t){__extends(e,t);function e(r,o){var a=t.call(this,r)||this;return a.ptr=o,a}return e.prototype.free=function(){_free(this.ptr)},e}(_nbind.External);function getBuffer(t){return t instanceof ArrayBuffer?new Uint8Array(t):t instanceof DataView?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function pushBuffer(t,e){if(t==null&&e&&e.Nullable&&(t=[]),typeof t!=\"object\")throw new Error(\"Type mismatch\");var r=t,o=r.byteLength||r.length;if(!o&&o!==0&&r.byteLength!==0)throw new Error(\"Type mismatch\");var a=_nbind.Pool.lalloc(8),n=_malloc(o),u=a/4;return HEAPU32[u++]=o,HEAPU32[u++]=n,HEAPU32[u++]=new ExternalBuffer(t,n).register(),HEAPU8.set(getBuffer(t),n),a}var BufferType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=pushBuffer,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushBuffer(a,o)}},e}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(t,e,r){var o=_nbind.externalList[t].data,a=Buffer;if(typeof Buffer!=\"function\"&&(a=function(){}),!(o instanceof Array)){var n=HEAPU8.subarray(e,e+r);if(o instanceof a){var u=void 0;typeof Buffer.from==\"function\"&&Buffer.from.length>=3?u=Buffer.from(n):u=new Buffer(n),u.copy(o)}else getBuffer(o).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t<e.length;t++){var r=e[t];r.__nbindState&3||r.free()}dirtyList=[],gcTimer=0}_nbind.mark=function(t){};function toggleLightGC(t){t?_nbind.mark=function(e){dirtyList.push(e),gcTimer||(gcTimer=setTimeout(sweep,0))}:_nbind.mark=function(e){}}_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function t(e,r,o){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\"),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(e,r,o)},Module.requestFullscreen=function t(e,r,o){Browser.requestFullscreen(e,r,o)},Module.requestAnimationFrame=function t(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function t(e,r,o){Browser.setCanvasSize(e,r,o)},Module.pauseMainLoop=function t(){Browser.mainLoop.pause()},Module.resumeMainLoop=function t(){Browser.mainLoop.resume()},Module.getUserMedia=function t(){Browser.getUserMedia()},Module.createContext=function t(e,r,o,a){return Browser.createContext(e,r,o,a)},ENVIRONMENT_IS_NODE?_emscripten_get_now=function(){var e=process.hrtime();return e[0]*1e3+e[1]/1e6}:typeof dateNow<\"u\"?_emscripten_get_now=dateNow:typeof self==\"object\"&&self.performance&&typeof self.performance.now==\"function\"?_emscripten_get_now=function(){return self.performance.now()}:typeof performance==\"object\"&&typeof performance.now==\"function\"?_emscripten_get_now=function(){return performance.now()}:_emscripten_get_now=Date.now,__ATEXIT__.push(function(){var t=Module._fflush;t&&t(0);var e=___syscall146.printChar;if(!!e){var r=___syscall146.buffers;r[1].length&&e(1,10),r[2].length&&e(2,10)}}),DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,o,a,n){try{Module.dynCall_viiiii(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,o){try{return Module.dynCall_fiff(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,o,a){try{Module.dynCall_viddi(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,o){try{Module.dynCall_vidd(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,o){try{return Module.dynCall_iiii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,o){try{return Module.dynCall_diii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,o,a,n){try{Module.dynCall_viiddi(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,o,a,n,u){try{Module.dynCall_viiiiii(t,e,r,o,a,n,u)}catch(A){if(typeof A!=\"number\"&&A!==\"longjmp\")throw A;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,o,a,n){try{return Module.dynCall_iiiiii(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,o,a){try{Module.dynCall_viiid(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,o,a,n,u){try{Module.dynCall_viififi(t,e,r,o,a,n,u)}catch(A){if(typeof A!=\"number\"&&A!==\"longjmp\")throw A;Module.setThrew(1,0)}}function invoke_viii(t,e,r,o){try{Module.dynCall_viii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,o){try{Module.dynCall_viid(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,o,a){try{Module.dynCall_viiii(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var o=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),u=new t.Uint8Array(r),A=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),I=e.DYNAMICTOP_PTR|0,v=e.tempDoublePtr|0,b=e.ABORT|0,C=e.STACKTOP|0,T=e.STACK_MAX|0,L=e.cttz_i8|0,U=e.___dso_handle|0,J=0,te=0,le=0,pe=0,Ae=t.NaN,ye=t.Infinity,ae=0,we=0,Pe=0,g=0,Ee=0,De=0,ce=t.Math.floor,ne=t.Math.abs,ee=t.Math.sqrt,Ie=t.Math.pow,ke=t.Math.cos,ht=t.Math.sin,H=t.Math.tan,lt=t.Math.acos,Re=t.Math.asin,Qe=t.Math.atan,be=t.Math.atan2,_e=t.Math.exp,Te=t.Math.log,Je=t.Math.ceil,He=t.Math.imul,x=t.Math.min,w=t.Math.max,S=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,Z=e.getTotalMemory,ie=e.abortOnCannotGrowMemory,Se=e.invoke_viiiii,Ne=e.invoke_vif,ot=e.invoke_vid,dt=e.invoke_fiff,jt=e.invoke_vi,$t=e.invoke_vii,xt=e.invoke_ii,an=e.invoke_viddi,Qr=e.invoke_vidd,mr=e.invoke_iiii,xr=e.invoke_diii,Wr=e.invoke_di,Vn=e.invoke_iid,Ns=e.invoke_iii,Ri=e.invoke_viiddi,ps=e.invoke_viiiiii,io=e.invoke_dii,Si=e.invoke_i,Ls=e.invoke_iiiiii,so=e.invoke_viiid,cc=e.invoke_viififi,cu=e.invoke_viii,ap=e.invoke_v,lp=e.invoke_viid,Ms=e.invoke_idd,Dn=e.invoke_viiii,oo=e._emscripten_asm_const_iiiii,Os=e._emscripten_asm_const_iiidddddd,ml=e._emscripten_asm_const_iiiid,yl=e.__nbind_reference_external,ao=e._emscripten_asm_const_iiiiiiii,Kn=e._removeAccessorPrefix,Mn=e._typeModule,Ni=e.__nbind_register_pool,On=e.__decorate,_i=e._llvm_stackrestore,tr=e.___cxa_atexit,Me=e.__extends,ii=e.__nbind_get_value_object,Oa=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,hr=e._emscripten_set_main_loop_timing,uc=e.__nbind_register_primitive,uu=e.__nbind_register_type,Ac=e._emscripten_memcpy_big,El=e.__nbind_register_function,vA=e.___setErrNo,Au=e.__nbind_register_class,Ce=e.__nbind_finish,Tt=e._abort,fc=e._nbind_value,Hi=e._llvm_stacksave,fu=e.___syscall54,Yt=e._defineHidden,Cl=e._emscripten_set_main_loop,DA=e._emscripten_get_now,cp=e.__nbind_register_callback_signature,pc=e._emscripten_asm_const_iiiiii,PA=e.__nbind_free_external,Qn=e._emscripten_asm_const_iiii,hi=e._emscripten_asm_const_iiididi,hc=e.___syscall6,SA=e._atexit,sa=e.___syscall140,Li=e.___syscall146,_o=y(0);let Ze=y(0);function lo(s){s=s|0;var l=0;return l=C,C=C+s|0,C=C+15&-16,l|0}function gc(){return C|0}function pu(s){s=s|0,C=s}function ji(s,l){s=s|0,l=l|0,C=s,T=l}function hu(s,l){s=s|0,l=l|0,J||(J=s,te=l)}function xA(s){s=s|0,De=s}function Ua(){return De|0}function dc(){var s=0,l=0;Dr(8104,8,400)|0,Dr(8504,408,540)|0,s=9044,l=s+44|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o[9088]=0,o[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,tr(17,8104,U|0)|0}function hs(s){s=s|0,ft(s+948|0)}function _t(s){return s=y(s),((Du(s)|0)&2147483647)>>>0>2139095040|0}function Fn(s,l,c){s=s|0,l=l|0,c=c|0;e:do if(n[s+(l<<3)+4>>2]|0)s=s+(l<<3)|0;else{if((l|2|0)==3&&n[s+60>>2]|0){s=s+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[s+52>>2]|0){s=s+48|0;break e}break}default:}if(n[s+68>>2]|0){s=s+64|0;break}else{s=(l|1|0)==5?948:c;break}}while(0);return s|0}function Ci(s){s=s|0;var l=0;return l=pD(1e3)|0,oa(s,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Dr(l|0,8104,1e3)|0,o[s+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=s,l|0}function oa(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,yg(s,5,3197,f)),C=d}function co(){return Ci(956)|0}function Us(s){s=s|0;var l=0;return l=Vt(1e3)|0,aa(l,s),oa(n[s+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function aa(s,l){s=s|0,l=l|0;var c=0;Dr(s|0,l|0,948)|0,Fm(s+948|0,l+948|0),c=s+960|0,s=l+960|0,l=c+40|0;do n[c>>2]=n[s>>2],c=c+4|0,s=s+4|0;while((c|0)<(l|0))}function la(s){s=s|0;var l=0,c=0,f=0,d=0;if(l=s+944|0,c=n[l>>2]|0,c|0&&(Ho(c+948|0,s)|0,n[l>>2]=0),c=wi(s)|0,c|0){l=0;do n[(gs(s,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(c|0))}c=s+948|0,f=n[c>>2]|0,d=s+952|0,l=n[d>>2]|0,(l|0)!=(f|0)&&(n[d>>2]=l+(~((l+-4-f|0)>>>2)<<2)),ds(c),hD(s),n[2276]=(n[2276]|0)+-1}function Ho(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0;f=n[s>>2]|0,k=s+4|0,c=n[k>>2]|0,m=c;e:do if((f|0)==(c|0))d=f,B=4;else for(s=f;;){if((n[s>>2]|0)==(l|0)){d=s,B=4;break e}if(s=s+4|0,(s|0)==(c|0)){s=0;break}}while(0);return(B|0)==4&&((d|0)!=(c|0)?(f=d+4|0,s=m-f|0,l=s>>2,l&&(Mw(d|0,f|0,s|0)|0,c=n[k>>2]|0),s=d+(l<<2)|0,(c|0)==(s|0)||(n[k>>2]=c+(~((c+-4-s|0)>>>2)<<2)),s=1):s=0),s|0}function wi(s){return s=s|0,(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2|0}function gs(s,l){s=s|0,l=l|0;var c=0;return c=n[s+948>>2]|0,(n[s+952>>2]|0)-c>>2>>>0>l>>>0?s=n[c+(l<<2)>>2]|0:s=0,s|0}function ds(s){s=s|0;var l=0,c=0,f=0,d=0;f=C,C=C+32|0,l=f,d=n[s>>2]|0,c=(n[s+4>>2]|0)-d|0,((n[s+8>>2]|0)-d|0)>>>0>c>>>0&&(d=c>>2,wp(l,d,d,s+8|0),Ig(s,l),UA(l)),C=f}function ms(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0;O=wi(s)|0;do if(O|0){if((n[(gs(s,0)|0)+944>>2]|0)==(s|0)){if(!(Ho(s+948|0,l)|0))break;Dr(l+400|0,8504,540)|0,n[l+944>>2]=0,Le(s);break}B=n[(n[s+976>>2]|0)+12>>2]|0,k=s+948|0,Q=(B|0)==0,c=0,m=0;do f=n[(n[k>>2]|0)+(m<<2)>>2]|0,(f|0)==(l|0)?Le(s):(d=Us(f)|0,n[(n[k>>2]|0)+(c<<2)>>2]=d,n[d+944>>2]=s,Q||LT[B&15](f,d,s,c),c=c+1|0),m=m+1|0;while((m|0)!=(O|0));if(c>>>0<O>>>0){Q=s+948|0,k=s+952|0,B=c,c=n[k>>2]|0;do m=(n[Q>>2]|0)+(B<<2)|0,f=m+4|0,d=c-f|0,l=d>>2,l&&(Mw(m|0,f|0,d|0)|0,c=n[k>>2]|0),d=c,f=m+(l<<2)|0,(d|0)!=(f|0)&&(c=d+(~((d+-4-f|0)>>>2)<<2)|0,n[k>>2]=c),B=B+1|0;while((B|0)!=(O|0))}}while(0)}function _s(s){s=s|0;var l=0,c=0,f=0,d=0;Un(s,(wi(s)|0)==0,2491),Un(s,(n[s+944>>2]|0)==0,2545),l=s+948|0,c=n[l>>2]|0,f=s+952|0,d=n[f>>2]|0,(d|0)!=(c|0)&&(n[f>>2]=d+(~((d+-4-c|0)>>>2)<<2)),ds(l),l=s+976|0,c=n[l>>2]|0,Dr(s|0,8104,1e3)|0,o[c+2>>0]|0&&(n[s+4>>2]=2,n[s+12>>2]=4),n[l>>2]=c}function Un(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Ao(s,5,3197,f)),C=d}function Pn(){return n[2276]|0}function ys(){var s=0;return s=pD(20)|0,We((s|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[s>>2]=n[239],n[s+4>>2]=n[240],n[s+8>>2]=n[241],n[s+12>>2]=n[242],n[s+16>>2]=n[243],s|0}function We(s,l){s=s|0,l=l|0;var c=0,f=0;f=C,C=C+16|0,c=f,s||(n[c>>2]=l,Ao(0,5,3197,c)),C=f}function tt(s){s=s|0,hD(s),n[2277]=(n[2277]|0)+-1}function It(s,l){s=s|0,l=l|0;var c=0;l?(Un(s,(wi(s)|0)==0,2629),c=1):(c=0,l=0),n[s+964>>2]=l,n[s+988>>2]=c}function nr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+8|0,d=f+4|0,B=f,n[d>>2]=l,Un(s,(n[l+944>>2]|0)==0,2709),Un(s,(n[s+964>>2]|0)==0,2763),$(s),l=s+948|0,n[B>>2]=(n[l>>2]|0)+(c<<2),n[m>>2]=n[B>>2],me(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=s,Le(s),C=f}function $(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;if(c=wi(s)|0,c|0&&(n[(gs(s,0)|0)+944>>2]|0)!=(s|0)){f=n[(n[s+976>>2]|0)+12>>2]|0,d=s+948|0,m=(f|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=Us(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=s,m||LT[f&15](B,k,s,l),l=l+1|0;while((l|0)!=(c|0))}}function me(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0,et=0,Xe=0;et=C,C=C+64|0,q=et+52|0,k=et+48|0,se=et+28|0,Ge=et+24|0,Oe=et+20|0,Fe=et,f=n[s>>2]|0,m=f,l=f+((n[l>>2]|0)-m>>2<<2)|0,f=s+4|0,d=n[f>>2]|0,B=s+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[c>>2],n[f>>2]=(n[f>>2]|0)+4;break}_A(s,l,d,l+4|0),l>>>0<=c>>>0&&(c=(n[f>>2]|0)>>>0>c>>>0?c+4|0:c),n[l>>2]=n[c>>2]}else{f=(d-m>>2)+1|0,d=N(s)|0,d>>>0<f>>>0&&zr(s),M=n[s>>2]|0,O=(n[B>>2]|0)-M|0,m=O>>1,wp(Fe,O>>2>>>0<d>>>1>>>0?m>>>0<f>>>0?f:m:d,l-M>>2,s+8|0),M=Fe+8|0,f=n[M>>2]|0,m=Fe+12|0,O=n[m>>2]|0,B=O,Q=f;do if((f|0)==(O|0)){if(O=Fe+4|0,f=n[O>>2]|0,Xe=n[Fe>>2]|0,d=Xe,f>>>0<=Xe>>>0){f=B-d>>1,f=(f|0)==0?1:f,wp(se,f,f>>>2,n[Fe+16>>2]|0),n[Ge>>2]=n[O>>2],n[Oe>>2]=n[M>>2],n[k>>2]=n[Ge>>2],n[q>>2]=n[Oe>>2],vw(se,k,q),f=n[Fe>>2]|0,n[Fe>>2]=n[se>>2],n[se>>2]=f,f=se+4|0,Xe=n[O>>2]|0,n[O>>2]=n[f>>2],n[f>>2]=Xe,f=se+8|0,Xe=n[M>>2]|0,n[M>>2]=n[f>>2],n[f>>2]=Xe,f=se+12|0,Xe=n[m>>2]|0,n[m>>2]=n[f>>2],n[f>>2]=Xe,UA(se),f=n[M>>2]|0;break}m=f,B=((m-d>>2)+1|0)/-2|0,k=f+(B<<2)|0,d=Q-m|0,m=d>>2,m&&(Mw(k|0,f|0,d|0)|0,f=n[O>>2]|0),Xe=k+(m<<2)|0,n[M>>2]=Xe,n[O>>2]=f+(B<<2),f=Xe}while(0);n[f>>2]=n[c>>2],n[M>>2]=(n[M>>2]|0)+4,l=Bg(s,Fe,l)|0,UA(Fe)}while(0);return C=et,l|0}function Le(s){s=s|0;var l=0;do{if(l=s+984|0,o[l>>0]|0)break;o[l>>0]=1,h[s+504>>2]=y(Ae),s=n[s+944>>2]|0}while((s|0)!=0)}function ft(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function pt(s){return s=s|0,n[s+944>>2]|0}function Rt(s){s=s|0,Un(s,(n[s+964>>2]|0)!=0,2832),Le(s)}function er(s){return s=s|0,(o[s+984>>0]|0)!=0|0}function Zr(s,l){s=s|0,l=l|0,LUe(s,l,400)|0&&(Dr(s|0,l|0,400)|0,Le(s))}function qi(s){s=s|0;var l=Ze;return l=y(h[s+44>>2]),s=_t(l)|0,y(s?y(0):l)}function es(s){s=s|0;var l=Ze;return l=y(h[s+48>>2]),_t(l)|0&&(l=o[(n[s+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function xi(s,l){s=s|0,l=l|0,n[s+980>>2]=l}function jo(s){return s=s|0,n[s+980>>2]|0}function bA(s,l){s=s|0,l=l|0;var c=0;c=s+4|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function kA(s){return s=s|0,n[s+4>>2]|0}function up(s,l){s=s|0,l=l|0;var c=0;c=s+8|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function ng(s){return s=s|0,n[s+8>>2]|0}function gu(s,l){s=s|0,l=l|0;var c=0;c=s+12|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function ig(s){return s=s|0,n[s+12>>2]|0}function du(s,l){s=s|0,l=l|0;var c=0;c=s+16|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function uo(s){return s=s|0,n[s+16>>2]|0}function QA(s,l){s=s|0,l=l|0;var c=0;c=s+20|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function mc(s){return s=s|0,n[s+20>>2]|0}function ca(s,l){s=s|0,l=l|0;var c=0;c=s+24|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function sg(s){return s=s|0,n[s+24>>2]|0}function yc(s,l){s=s|0,l=l|0;var c=0;c=s+28|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function Pm(s){return s=s|0,n[s+28>>2]|0}function og(s,l){s=s|0,l=l|0;var c=0;c=s+32|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function $n(s){return s=s|0,n[s+32>>2]|0}function Ap(s,l){s=s|0,l=l|0;var c=0;c=s+36|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function ag(s){return s=s|0,n[s+36>>2]|0}function FA(s,l){s=s|0,l=y(l);var c=0;c=s+40|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Hs(s,l){s=s|0,l=y(l);var c=0;c=s+44|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function mu(s,l){s=s|0,l=y(l);var c=0;c=s+48|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Ha(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+52|0,d=s+56|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Gi(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+52|0,c=s+56|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function ua(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+52|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function yu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Es(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Ec(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+132+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Cc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function G(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Dt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+60+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function wl(s,l){s=s|0,l=l|0;var c=0;c=s+60+(l<<3)+4|0,(n[c>>2]|0)!=3&&(h[s+60+(l<<3)>>2]=y(Ae),n[c>>2]=3,Le(s))}function bi(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function wc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function ct(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+204+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Eu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+276+(l<<3)|0,l=s+276+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function lg(s,l){return s=s|0,l=l|0,y(h[s+276+(l<<3)>>2])}function mw(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+348|0,d=s+352|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function TA(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+348|0,c=s+352|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function fp(s){s=s|0;var l=0;l=s+352|0,(n[l>>2]|0)!=3&&(h[s+348>>2]=y(Ae),n[l>>2]=3,Le(s))}function Br(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+348|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cs(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+356|0,d=s+360|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function cg(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+356|0,c=s+360|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function ug(s){s=s|0;var l=0;l=s+360|0,(n[l>>2]|0)!=3&&(h[s+356>>2]=y(Ae),n[l>>2]=3,Le(s))}function Ag(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+356|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function pp(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ic(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ct(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+364|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Sm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function fg(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function pg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+372|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function xm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function hg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+380|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function wu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function yw(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function bm(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+388|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Aa(s,l){s=s|0,l=y(l);var c=0;c=s+396|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Bc(s){return s=s|0,y(h[s+396>>2])}function Il(s){return s=s|0,y(h[s+400>>2])}function Iu(s){return s=s|0,y(h[s+404>>2])}function gg(s){return s=s|0,y(h[s+408>>2])}function RA(s){return s=s|0,y(h[s+412>>2])}function hp(s){return s=s|0,y(h[s+416>>2])}function ja(s){return s=s|0,y(h[s+420>>2])}function dg(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+424+(l<<2)>>2])}function gp(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+448+(l<<2)>>2])}function qo(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+472+(l<<2)>>2])}function ws(s,l){s=s|0,l=l|0;var c=0,f=Ze;return c=n[s+4>>2]|0,(c|0)==(n[l+4>>2]|0)?c?(f=y(h[s>>2]),s=y(ne(y(f-y(h[l>>2]))))<y(999999974e-13)):s=1:s=0,s|0}function Ii(s,l){s=y(s),l=y(l);var c=0;return _t(s)|0?c=_t(l)|0:c=y(ne(y(s-l)))<y(999999974e-13),c|0}function km(s,l){s=s|0,l=l|0,Qm(s,l)}function Qm(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c+4|0,n[f>>2]=0,n[f+4>>2]=0,n[f+8>>2]=0,Oa(f|0,s|0,l|0,0),Ao(s,3,(o[f+11>>0]|0)<0?n[f>>2]|0:f,c),s3e(f),C=c}function Go(s,l,c,f){s=y(s),l=y(l),c=c|0,f=f|0;var d=Ze;s=y(s*l),d=y(kT(s,y(1)));do if(Ii(d,y(0))|0)s=y(s-d);else{if(s=y(s-d),Ii(d,y(1))|0){s=y(s+y(1));break}if(c){s=y(s+y(1));break}f||(d>y(.5)?d=y(1):(f=Ii(d,y(.5))|0,d=y(f?1:0)),s=y(s+d))}while(0);return y(s/l)}function NA(s,l,c,f,d,m,B,k,Q,O,M,q,se){s=s|0,l=y(l),c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,k=y(k),Q=y(Q),O=y(O),M=y(M),q=y(q),se=se|0;var Ge=0,Oe=Ze,Fe=Ze,et=Ze,Xe=Ze,at=Ze,Ue=Ze;return Q<y(0)|O<y(0)?se=0:((se|0)!=0&&(Oe=y(h[se+4>>2]),Oe!=y(0))?(et=y(Go(l,Oe,0,0)),Xe=y(Go(f,Oe,0,0)),Fe=y(Go(m,Oe,0,0)),Oe=y(Go(k,Oe,0,0))):(Fe=m,et=l,Oe=k,Xe=f),(d|0)==(s|0)?Ge=Ii(Fe,et)|0:Ge=0,(B|0)==(c|0)?se=Ii(Oe,Xe)|0:se=0,!Ge&&(at=y(l-M),!(dp(s,at,Q)|0))&&!(mp(s,at,d,Q)|0)?Ge=mg(s,at,d,m,Q)|0:Ge=1,!se&&(Ue=y(f-q),!(dp(c,Ue,O)|0))&&!(mp(c,Ue,B,O)|0)?se=mg(c,Ue,B,k,O)|0:se=1,se=Ge&se),se|0}function dp(s,l,c){return s=s|0,l=y(l),c=y(c),(s|0)==1?s=Ii(l,c)|0:s=0,s|0}function mp(s,l,c,f){return s=s|0,l=y(l),c=c|0,f=y(f),(s|0)==2&(c|0)==0?l>=f?s=1:s=Ii(l,f)|0:s=0,s|0}function mg(s,l,c,f,d){return s=s|0,l=y(l),c=c|0,f=y(f),d=y(d),(s|0)==2&(c|0)==2&f>l?d<=l?s=1:s=Ii(l,d)|0:s=0,s|0}function fa(s,l,c,f,d,m,B,k,Q,O,M){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,O=O|0,M=M|0;var q=0,se=0,Ge=0,Oe=0,Fe=Ze,et=Ze,Xe=0,at=0,Ue=0,qe=0,Lt=0,Or=0,or=0,Xt=0,Pr=0,Nr=0,ir=0,bn=Ze,go=Ze,mo=Ze,yo=0,ya=0;ir=C,C=C+160|0,Xt=ir+152|0,or=ir+120|0,Or=ir+104|0,Ue=ir+72|0,Oe=ir+56|0,Lt=ir+8|0,at=ir,qe=(n[2279]|0)+1|0,n[2279]=qe,Pr=s+984|0,(o[Pr>>0]|0)!=0&&(n[s+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[s+516>>2]|0)==(f|0)?Nr=0:Xe=4,(Xe|0)==4&&(n[s+520>>2]=0,n[s+924>>2]=-1,n[s+928>>2]=-1,h[s+932>>2]=y(-1),h[s+936>>2]=y(-1),Nr=1);e:do if(n[s+964>>2]|0)if(Fe=y(ln(s,2,B)),et=y(ln(s,0,B)),q=s+916|0,mo=y(h[q>>2]),go=y(h[s+920>>2]),bn=y(h[s+932>>2]),NA(d,l,m,c,n[s+924>>2]|0,mo,n[s+928>>2]|0,go,bn,y(h[s+936>>2]),Fe,et,M)|0)Xe=22;else if(Ge=n[s+520>>2]|0,!Ge)Xe=21;else for(se=0;;){if(q=s+524+(se*24|0)|0,bn=y(h[q>>2]),go=y(h[s+524+(se*24|0)+4>>2]),mo=y(h[s+524+(se*24|0)+16>>2]),NA(d,l,m,c,n[s+524+(se*24|0)+8>>2]|0,bn,n[s+524+(se*24|0)+12>>2]|0,go,mo,y(h[s+524+(se*24|0)+20>>2]),Fe,et,M)|0){Xe=22;break e}if(se=se+1|0,se>>>0>=Ge>>>0){Xe=21;break}}else{if(Q){if(q=s+916|0,!(Ii(y(h[q>>2]),l)|0)){Xe=21;break}if(!(Ii(y(h[s+920>>2]),c)|0)){Xe=21;break}if((n[s+924>>2]|0)!=(d|0)){Xe=21;break}q=(n[s+928>>2]|0)==(m|0)?q:0,Xe=22;break}if(Ge=n[s+520>>2]|0,!Ge)Xe=21;else for(se=0;;){if(q=s+524+(se*24|0)|0,Ii(y(h[q>>2]),l)|0&&Ii(y(h[s+524+(se*24|0)+4>>2]),c)|0&&(n[s+524+(se*24|0)+8>>2]|0)==(d|0)&&(n[s+524+(se*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(se=se+1|0,se>>>0>=Ge>>>0){Xe=21;break}}}while(0);do if((Xe|0)==21)o[11697]|0?(q=0,Xe=28):(q=0,Xe=31);else if((Xe|0)==22){if(se=(o[11697]|0)!=0,!((q|0)!=0&(Nr^1)))if(se){Xe=28;break}else{Xe=31;break}Oe=q+16|0,n[s+908>>2]=n[Oe>>2],Ge=q+20|0,n[s+912>>2]=n[Ge>>2],(o[11698]|0)==0|se^1||(n[at>>2]=LA(qe)|0,n[at+4>>2]=qe,Ao(s,4,2972,at),se=n[s+972>>2]|0,se|0&&ef[se&127](s),d=qa(d,Q)|0,m=qa(m,Q)|0,ya=+y(h[Oe>>2]),yo=+y(h[Ge>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+c,E[Lt+24>>3]=ya,E[Lt+32>>3]=yo,n[Lt+40>>2]=O,Ao(s,4,2989,Lt))}while(0);return(Xe|0)==28&&(se=LA(qe)|0,n[Oe>>2]=se,n[Oe+4>>2]=qe,n[Oe+8>>2]=Nr?3047:11699,Ao(s,4,3038,Oe),se=n[s+972>>2]|0,se|0&&ef[se&127](s),Lt=qa(d,Q)|0,Xe=qa(m,Q)|0,n[Ue>>2]=Lt,n[Ue+4>>2]=Xe,E[Ue+8>>3]=+l,E[Ue+16>>3]=+c,n[Ue+24>>2]=O,Ao(s,4,3049,Ue),Xe=31),(Xe|0)==31&&(si(s,l,c,f,d,m,B,k,Q,M),o[11697]|0&&(se=n[2279]|0,Lt=LA(se)|0,n[Or>>2]=Lt,n[Or+4>>2]=se,n[Or+8>>2]=Nr?3047:11699,Ao(s,4,3083,Or),se=n[s+972>>2]|0,se|0&&ef[se&127](s),Lt=qa(d,Q)|0,Or=qa(m,Q)|0,yo=+y(h[s+908>>2]),ya=+y(h[s+912>>2]),n[or>>2]=Lt,n[or+4>>2]=Or,E[or+8>>3]=yo,E[or+16>>3]=ya,n[or+24>>2]=O,Ao(s,4,3092,or)),n[s+516>>2]=f,q||(se=s+520|0,q=n[se>>2]|0,(q|0)==16&&(o[11697]|0&&Ao(s,4,3124,Xt),n[se>>2]=0,q=0),Q?q=s+916|0:(n[se>>2]=q+1,q=s+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=c,n[q+8>>2]=d,n[q+12>>2]=m,n[q+16>>2]=n[s+908>>2],n[q+20>>2]=n[s+912>>2],q=0)),Q&&(n[s+416>>2]=n[s+908>>2],n[s+420>>2]=n[s+912>>2],o[s+985>>0]=1,o[Pr>>0]=0),n[2279]=(n[2279]|0)+-1,n[s+512>>2]=n[2278],C=ir,Nr|(q|0)==0|0}function ln(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(V(s,l,c)),y(f+y(re(s,l,c)))}function Ao(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=C,C=C+16|0,d=m,n[d>>2]=f,s?f=n[s+976>>2]|0:f=0,Eg(f,s,l,c,d),C=m}function LA(s){return s=s|0,(s>>>0>60?3201:3201+(60-s)|0)|0}function qa(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+32|0,c=d+12|0,f=d,n[c>>2]=n[254],n[c+4>>2]=n[255],n[c+8>>2]=n[256],n[f>>2]=n[257],n[f+4>>2]=n[258],n[f+8>>2]=n[259],(s|0)>2?s=11699:s=n[(l?f:c)+(s<<2)>>2]|0,C=d,s|0}function si(s,l,c,f,d,m,B,k,Q,O){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,O=O|0;var M=0,q=0,se=0,Ge=0,Oe=Ze,Fe=Ze,et=Ze,Xe=Ze,at=Ze,Ue=Ze,qe=Ze,Lt=0,Or=0,or=0,Xt=Ze,Pr=Ze,Nr=0,ir=Ze,bn=0,go=0,mo=0,yo=0,ya=0,Qp=0,Fp=0,xl=0,Tp=0,Fu=0,Tu=0,Rp=0,Np=0,Lp=0,Xr=0,bl=0,Mp=0,bc=0,Op=Ze,Up=Ze,Ru=Ze,Nu=Ze,kc=Ze,qs=0,za=0,Wo=0,kl=0,rf=0,nf=Ze,Lu=Ze,sf=Ze,of=Ze,Gs=Ze,vs=Ze,Ql=0,Tn=Ze,af=Ze,Eo=Ze,Qc=Ze,Co=Ze,Fc=Ze,lf=0,cf=0,Tc=Ze,Ys=Ze,Fl=0,uf=0,Af=0,ff=0,br=Ze,Jn=0,Ds=0,wo=0,Ws=0,Tr=0,ur=0,Tl=0,Jt=Ze,pf=0,li=0;Tl=C,C=C+16|0,qs=Tl+12|0,za=Tl+8|0,Wo=Tl+4|0,kl=Tl,Un(s,(d|0)==0|(_t(l)|0)^1,3326),Un(s,(m|0)==0|(_t(c)|0)^1,3406),Ds=mt(s,f)|0,n[s+496>>2]=Ds,Tr=fr(2,Ds)|0,ur=fr(0,Ds)|0,h[s+440>>2]=y(V(s,Tr,B)),h[s+444>>2]=y(re(s,Tr,B)),h[s+428>>2]=y(V(s,ur,B)),h[s+436>>2]=y(re(s,ur,B)),h[s+464>>2]=y(Cr(s,Tr)),h[s+468>>2]=y(yn(s,Tr)),h[s+452>>2]=y(Cr(s,ur)),h[s+460>>2]=y(yn(s,ur)),h[s+488>>2]=y(oi(s,Tr,B)),h[s+492>>2]=y(Mi(s,Tr,B)),h[s+476>>2]=y(oi(s,ur,B)),h[s+484>>2]=y(Mi(s,ur,B));do if(n[s+964>>2]|0)wg(s,l,c,d,m,B,k);else{if(wo=s+948|0,Ws=(n[s+952>>2]|0)-(n[wo>>2]|0)>>2,!Ws){Gv(s,l,c,d,m,B,k);break}if(!Q&&Yv(s,l,c,d,m,B,k)|0)break;$(s),bl=s+508|0,o[bl>>0]=0,Tr=fr(n[s+4>>2]|0,Ds)|0,ur=Cw(Tr,Ds)|0,Jn=he(Tr)|0,Mp=n[s+8>>2]|0,uf=s+28|0,bc=(n[uf>>2]|0)!=0,Co=Jn?B:k,Tc=Jn?k:B,Op=y(Ep(s,Tr,B)),Up=y(ww(s,Tr,B)),Oe=y(Ep(s,ur,B)),Fc=y(En(s,Tr,B)),Ys=y(En(s,ur,B)),or=Jn?d:m,Fl=Jn?m:d,br=Jn?Fc:Ys,at=Jn?Ys:Fc,Qc=y(ln(s,2,B)),Xe=y(ln(s,0,B)),Fe=y(y(Gr(s+364|0,B))-br),et=y(y(Gr(s+380|0,B))-br),Ue=y(y(Gr(s+372|0,k))-at),qe=y(y(Gr(s+388|0,k))-at),Ru=Jn?Fe:Ue,Nu=Jn?et:qe,Qc=y(l-Qc),l=y(Qc-br),_t(l)|0?br=l:br=y(_n(y(Tg(l,et)),Fe)),af=y(c-Xe),l=y(af-at),_t(l)|0?Eo=l:Eo=y(_n(y(Tg(l,qe)),Ue)),Fe=Jn?br:Eo,Tn=Jn?Eo:br;e:do if((or|0)==1)for(f=0,q=0;;){if(M=gs(s,q)|0,!f)y(rs(M))>y(0)&&y(js(M))>y(0)?f=M:f=0;else if(Tm(M)|0){Ge=0;break e}if(q=q+1|0,q>>>0>=Ws>>>0){Ge=f;break}}else Ge=0;while(0);Lt=Ge+500|0,Or=Ge+504|0,f=0,M=0,l=y(0),se=0;do{if(q=n[(n[wo>>2]|0)+(se<<2)>>2]|0,(n[q+36>>2]|0)==1)Bu(q),o[q+985>>0]=1,o[q+984>>0]=0;else{Bl(q),Q&&yp(q,mt(q,Ds)|0,Fe,Tn,br);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ge|0)){n[Lt>>2]=n[2278],h[Or>>2]=y(0);break}else{Rm(s,q,br,d,Eo,br,Eo,m,Ds,O);break}else M|0&&(n[M+960>>2]=q),n[q+960>>2]=0,M=q,f=(f|0)==0?q:f;while(0);vs=y(h[q+504>>2]),l=y(l+y(vs+y(ln(q,Tr,br))))}se=se+1|0}while((se|0)!=(Ws|0));for(mo=l>Fe,Ql=bc&((or|0)==2&mo)?1:or,bn=(Fl|0)==1,ya=bn&(Q^1),Qp=(Ql|0)==1,Fp=(Ql|0)==2,xl=976+(Tr<<2)|0,Tp=(Fl|2|0)==2,Lp=bn&(bc^1),Fu=1040+(ur<<2)|0,Tu=1040+(Tr<<2)|0,Rp=976+(ur<<2)|0,Np=(Fl|0)!=1,mo=bc&((or|0)!=0&mo),go=s+976|0,bn=bn^1,l=Fe,Nr=0,yo=0,vs=y(0),kc=y(0);;){e:do if(Nr>>>0<Ws>>>0)for(Or=n[wo>>2]|0,se=0,qe=y(0),Ue=y(0),et=y(0),Fe=y(0),q=0,M=0,Ge=Nr;;){if(Lt=n[Or+(Ge<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=yo,(n[Lt+24>>2]|0)!=1)){if(Xe=y(ln(Lt,Tr,br)),Xr=n[xl>>2]|0,c=y(Gr(Lt+380+(Xr<<3)|0,Co)),at=y(h[Lt+504>>2]),c=y(Tg(c,at)),c=y(_n(y(Gr(Lt+364+(Xr<<3)|0,Co)),c)),bc&(se|0)!=0&y(Xe+y(Ue+c))>l){m=se,Xe=qe,or=Ge;break e}Xe=y(Xe+c),c=y(Ue+Xe),Xe=y(qe+Xe),Tm(Lt)|0&&(et=y(et+y(rs(Lt))),Fe=y(Fe-y(at*y(js(Lt))))),M|0&&(n[M+960>>2]=Lt),n[Lt+960>>2]=0,se=se+1|0,M=Lt,q=(q|0)==0?Lt:q}else Xe=qe,c=Ue;if(Ge=Ge+1|0,Ge>>>0<Ws>>>0)qe=Xe,Ue=c;else{m=se,or=Ge;break}}else m=0,Xe=y(0),et=y(0),Fe=y(0),q=0,or=Nr;while(0);Xr=et>y(0)&et<y(1),Xt=Xr?y(1):et,Xr=Fe>y(0)&Fe<y(1),qe=Xr?y(1):Fe;do if(Qp)Xr=51;else if(Xe<Ru&((_t(Ru)|0)^1))l=Ru,Xr=51;else if(Xe>Nu&((_t(Nu)|0)^1))l=Nu,Xr=51;else if(o[(n[go>>2]|0)+3>>0]|0)Xr=51;else{if(Xt!=y(0)&&y(rs(s))!=y(0)){Xr=53;break}l=Xe,Xr=53}while(0);if((Xr|0)==51&&(Xr=0,_t(l)|0?Xr=53:(Pr=y(l-Xe),ir=l)),(Xr|0)==53&&(Xr=0,Xe<y(0)?(Pr=y(-Xe),ir=l):(Pr=y(0),ir=l)),!ya&&(rf=(q|0)==0,!rf)){se=n[xl>>2]|0,Ge=Pr<y(0),at=y(Pr/qe),Lt=Pr>y(0),Ue=y(Pr/Xt),et=y(0),Xe=y(0),l=y(0),M=q;do c=y(Gr(M+380+(se<<3)|0,Co)),Fe=y(Gr(M+364+(se<<3)|0,Co)),Fe=y(Tg(c,y(_n(Fe,y(h[M+504>>2]))))),Ge?(c=y(Fe*y(js(M))),c!=y(-0)&&(Jt=y(Fe-y(at*c)),nf=y(Bi(M,Tr,Jt,ir,br)),Jt!=nf)&&(et=y(et-y(nf-Fe)),l=y(l+c))):Lt&&(Lu=y(rs(M)),Lu!=y(0))&&(Jt=y(Fe+y(Ue*Lu)),sf=y(Bi(M,Tr,Jt,ir,br)),Jt!=sf)&&(et=y(et-y(sf-Fe)),Xe=y(Xe-Lu)),M=n[M+960>>2]|0;while((M|0)!=0);if(l=y(qe+l),Fe=y(Pr+et),rf)l=y(0);else{at=y(Xt+Xe),Ge=n[xl>>2]|0,Lt=Fe<y(0),Or=l==y(0),Ue=y(Fe/l),se=Fe>y(0),at=y(Fe/at),l=y(0);do{Jt=y(Gr(q+380+(Ge<<3)|0,Co)),et=y(Gr(q+364+(Ge<<3)|0,Co)),et=y(Tg(Jt,y(_n(et,y(h[q+504>>2]))))),Lt?(Jt=y(et*y(js(q))),Fe=y(-Jt),Jt!=y(-0)?(Jt=y(Ue*Fe),Fe=y(Bi(q,Tr,y(et+(Or?Fe:Jt)),ir,br))):Fe=et):se&&(of=y(rs(q)),of!=y(0))?Fe=y(Bi(q,Tr,y(et+y(at*of)),ir,br)):Fe=et,l=y(l-y(Fe-et)),Xe=y(ln(q,Tr,br)),c=y(ln(q,ur,br)),Fe=y(Fe+Xe),h[za>>2]=Fe,n[kl>>2]=1,et=y(h[q+396>>2]);e:do if(_t(et)|0){M=_t(Tn)|0;do if(!M){if(mo|(ts(q,ur,Tn)|0|bn)||(ha(s,q)|0)!=4||(n[(vl(q,ur)|0)+4>>2]|0)==3||(n[(Pc(q,ur)|0)+4>>2]|0)==3)break;h[qs>>2]=Tn,n[Wo>>2]=1;break e}while(0);if(ts(q,ur,Tn)|0){M=n[q+992+(n[Rp>>2]<<2)>>2]|0,Jt=y(c+y(Gr(M,Tn))),h[qs>>2]=Jt,M=Np&(n[M+4>>2]|0)==2,n[Wo>>2]=((_t(Jt)|0|M)^1)&1;break}else{h[qs>>2]=Tn,n[Wo>>2]=M?0:2;break}}else Jt=y(Fe-Xe),Xt=y(Jt/et),Jt=y(et*Jt),n[Wo>>2]=1,h[qs>>2]=y(c+(Jn?Xt:Jt));while(0);yr(q,Tr,ir,br,kl,za),yr(q,ur,Tn,br,Wo,qs);do if(!(ts(q,ur,Tn)|0)&&(ha(s,q)|0)==4){if((n[(vl(q,ur)|0)+4>>2]|0)==3){M=0;break}M=(n[(Pc(q,ur)|0)+4>>2]|0)!=3}else M=0;while(0);Jt=y(h[za>>2]),Xt=y(h[qs>>2]),pf=n[kl>>2]|0,li=n[Wo>>2]|0,fa(q,Jn?Jt:Xt,Jn?Xt:Jt,Ds,Jn?pf:li,Jn?li:pf,br,Eo,Q&(M^1),3488,O)|0,o[bl>>0]=o[bl>>0]|o[q+508>>0],q=n[q+960>>2]|0}while((q|0)!=0)}}else l=y(0);if(l=y(Pr+l),li=l<y(0)&1,o[bl>>0]=li|u[bl>>0],Fp&l>y(0)?(M=n[xl>>2]|0,(n[s+364+(M<<3)+4>>2]|0)!=0&&(Gs=y(Gr(s+364+(M<<3)|0,Co)),Gs>=y(0))?Fe=y(_n(y(0),y(Gs-y(ir-l)))):Fe=y(0)):Fe=l,Lt=Nr>>>0<or>>>0,Lt){Ge=n[wo>>2]|0,se=Nr,M=0;do q=n[Ge+(se<<2)>>2]|0,n[q+24>>2]|0||(M=((n[(vl(q,Tr)|0)+4>>2]|0)==3&1)+M|0,M=M+((n[(Pc(q,Tr)|0)+4>>2]|0)==3&1)|0),se=se+1|0;while((se|0)!=(or|0));M?(Xe=y(0),c=y(0)):Xr=101}else Xr=101;e:do if((Xr|0)==101)switch(Xr=0,Mp|0){case 1:{M=0,Xe=y(Fe*y(.5)),c=y(0);break e}case 2:{M=0,Xe=Fe,c=y(0);break e}case 3:{if(m>>>0<=1){M=0,Xe=y(0),c=y(0);break e}c=y((m+-1|0)>>>0),M=0,Xe=y(0),c=y(y(_n(Fe,y(0)))/c);break e}case 5:{c=y(Fe/y((m+1|0)>>>0)),M=0,Xe=c;break e}case 4:{c=y(Fe/y(m>>>0)),M=0,Xe=y(c*y(.5));break e}default:{M=0,Xe=y(0),c=y(0);break e}}while(0);if(l=y(Op+Xe),Lt){et=y(Fe/y(M|0)),se=n[wo>>2]|0,q=Nr,Fe=y(0);do{M=n[se+(q<<2)>>2]|0;e:do if((n[M+36>>2]|0)!=1){switch(n[M+24>>2]|0){case 1:{if(gi(M,Tr)|0){if(!Q)break e;Jt=y(Mr(M,Tr,ir)),Jt=y(Jt+y(Cr(s,Tr))),Jt=y(Jt+y(V(M,Tr,br))),h[M+400+(n[Tu>>2]<<2)>>2]=Jt;break e}break}case 0:if(li=(n[(vl(M,Tr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,Q&&(li=M+400+(n[Tu>>2]<<2)|0,h[li>>2]=y(l+y(h[li>>2]))),li=(n[(Pc(M,Tr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,ya){Jt=y(c+y(ln(M,Tr,br))),Fe=Tn,l=y(l+y(Jt+y(h[M+504>>2])));break e}else{l=y(l+y(c+y(ns(M,Tr,br)))),Fe=y(_n(Fe,y(ns(M,ur,br))));break e}default:}Q&&(Jt=y(Xe+y(Cr(s,Tr))),li=M+400+(n[Tu>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2])))}while(0);q=q+1|0}while((q|0)!=(or|0))}else Fe=y(0);if(c=y(Up+l),Tp?Xe=y(y(Bi(s,ur,y(Ys+Fe),Tc,B))-Ys):Xe=Tn,et=y(y(Bi(s,ur,y(Ys+(Lp?Tn:Fe)),Tc,B))-Ys),Lt&Q){q=Nr;do{se=n[(n[wo>>2]|0)+(q<<2)>>2]|0;do if((n[se+36>>2]|0)!=1){if((n[se+24>>2]|0)==1){if(gi(se,ur)|0){if(Jt=y(Mr(se,ur,Tn)),Jt=y(Jt+y(Cr(s,ur))),Jt=y(Jt+y(V(se,ur,br))),M=n[Fu>>2]|0,h[se+400+(M<<2)>>2]=Jt,!(_t(Jt)|0))break}else M=n[Fu>>2]|0;Jt=y(Cr(s,ur)),h[se+400+(M<<2)>>2]=y(Jt+y(V(se,ur,br)));break}M=ha(s,se)|0;do if((M|0)==4){if((n[(vl(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if((n[(Pc(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if(ts(se,ur,Tn)|0){l=Oe;break}pf=n[se+908+(n[xl>>2]<<2)>>2]|0,n[qs>>2]=pf,l=y(h[se+396>>2]),li=_t(l)|0,Fe=(n[v>>2]=pf,y(h[v>>2])),li?l=et:(Pr=y(ln(se,ur,br)),Jt=y(Fe/l),l=y(l*Fe),l=y(Pr+(Jn?Jt:l))),h[za>>2]=l,h[qs>>2]=y(y(ln(se,Tr,br))+Fe),n[Wo>>2]=1,n[kl>>2]=1,yr(se,Tr,ir,br,Wo,qs),yr(se,ur,Tn,br,kl,za),l=y(h[qs>>2]),Pr=y(h[za>>2]),Jt=Jn?l:Pr,l=Jn?Pr:l,li=((_t(Jt)|0)^1)&1,fa(se,Jt,l,Ds,li,((_t(l)|0)^1)&1,br,Eo,1,3493,O)|0,l=Oe}else Xr=139;while(0);e:do if((Xr|0)==139){Xr=0,l=y(Xe-y(ns(se,ur,br)));do if((n[(vl(se,ur)|0)+4>>2]|0)==3){if((n[(Pc(se,ur)|0)+4>>2]|0)!=3)break;l=y(Oe+y(_n(y(0),y(l*y(.5)))));break e}while(0);if((n[(Pc(se,ur)|0)+4>>2]|0)==3){l=Oe;break}if((n[(vl(se,ur)|0)+4>>2]|0)==3){l=y(Oe+y(_n(y(0),l)));break}switch(M|0){case 1:{l=Oe;break e}case 2:{l=y(Oe+y(l*y(.5)));break e}default:{l=y(Oe+l);break e}}}while(0);Jt=y(vs+l),li=se+400+(n[Fu>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2]))}while(0);q=q+1|0}while((q|0)!=(or|0))}if(vs=y(vs+et),kc=y(_n(kc,c)),m=yo+1|0,or>>>0>=Ws>>>0)break;l=ir,Nr=or,yo=m}do if(Q){if(M=m>>>0>1,!M&&!(Yi(s)|0))break;if(!(_t(Tn)|0)){l=y(Tn-vs);e:do switch(n[s+12>>2]|0){case 3:{Oe=y(Oe+l),Ue=y(0);break}case 2:{Oe=y(Oe+y(l*y(.5))),Ue=y(0);break}case 4:{Tn>vs?Ue=y(l/y(m>>>0)):Ue=y(0);break}case 7:if(Tn>vs){Oe=y(Oe+y(l/y(m<<1>>>0))),Ue=y(l/y(m>>>0)),Ue=M?Ue:y(0);break e}else{Oe=y(Oe+y(l*y(.5))),Ue=y(0);break e}case 6:{Ue=y(l/y(yo>>>0)),Ue=Tn>vs&M?Ue:y(0);break}default:Ue=y(0)}while(0);if(m|0)for(Lt=1040+(ur<<2)|0,Or=976+(ur<<2)|0,Ge=0,q=0;;){e:do if(q>>>0<Ws>>>0)for(Fe=y(0),et=y(0),l=y(0),se=q;;){M=n[(n[wo>>2]|0)+(se<<2)>>2]|0;do if((n[M+36>>2]|0)!=1&&(n[M+24>>2]|0)==0){if((n[M+940>>2]|0)!=(Ge|0))break e;if(Nm(M,ur)|0&&(Jt=y(h[M+908+(n[Or>>2]<<2)>>2]),l=y(_n(l,y(Jt+y(ln(M,ur,br)))))),(ha(s,M)|0)!=5)break;Gs=y(Ya(M)),Gs=y(Gs+y(V(M,0,br))),Jt=y(h[M+912>>2]),Jt=y(y(Jt+y(ln(M,0,br)))-Gs),Gs=y(_n(et,Gs)),Jt=y(_n(Fe,Jt)),Fe=Jt,et=Gs,l=y(_n(l,y(Gs+Jt)))}while(0);if(M=se+1|0,M>>>0<Ws>>>0)se=M;else{se=M;break}}else et=y(0),l=y(0),se=q;while(0);if(at=y(Ue+l),c=Oe,Oe=y(Oe+at),q>>>0<se>>>0){Xe=y(c+et),M=q;do{q=n[(n[wo>>2]|0)+(M<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&(n[q+24>>2]|0)==0)switch(ha(s,q)|0){case 1:{Jt=y(c+y(V(q,ur,br))),h[q+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 3:{Jt=y(y(Oe-y(re(q,ur,br)))-y(h[q+908+(n[Or>>2]<<2)>>2])),h[q+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 2:{Jt=y(c+y(y(at-y(h[q+908+(n[Or>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 4:{if(Jt=y(c+y(V(q,ur,br))),h[q+400+(n[Lt>>2]<<2)>>2]=Jt,ts(q,ur,Tn)|0||(Jn?(Fe=y(h[q+908>>2]),l=y(Fe+y(ln(q,Tr,br))),et=at):(et=y(h[q+912>>2]),et=y(et+y(ln(q,ur,br))),l=at,Fe=y(h[q+908>>2])),Ii(l,Fe)|0&&Ii(et,y(h[q+912>>2]))|0))break e;fa(q,l,et,Ds,1,1,br,Eo,1,3501,O)|0;break e}case 5:{h[q+404>>2]=y(y(Xe-y(Ya(q)))+y(Mr(q,0,Tn)));break e}default:break e}while(0);M=M+1|0}while((M|0)!=(se|0))}if(Ge=Ge+1|0,(Ge|0)==(m|0))break;q=se}}}while(0);if(h[s+908>>2]=y(Bi(s,2,Qc,B,B)),h[s+912>>2]=y(Bi(s,0,af,k,B)),(Ql|0)!=0&&(lf=n[s+32>>2]|0,cf=(Ql|0)==2,!(cf&(lf|0)!=2))?cf&(lf|0)==2&&(l=y(Fc+ir),l=y(_n(y(Tg(l,y(MA(s,Tr,kc,Co)))),Fc)),Xr=198):(l=y(Bi(s,Tr,kc,Co,B)),Xr=198),(Xr|0)==198&&(h[s+908+(n[976+(Tr<<2)>>2]<<2)>>2]=l),(Fl|0)!=0&&(Af=n[s+32>>2]|0,ff=(Fl|0)==2,!(ff&(Af|0)!=2))?ff&(Af|0)==2&&(l=y(Ys+Tn),l=y(_n(y(Tg(l,y(MA(s,ur,y(Ys+vs),Tc)))),Ys)),Xr=204):(l=y(Bi(s,ur,y(Ys+vs),Tc,B)),Xr=204),(Xr|0)==204&&(h[s+908+(n[976+(ur<<2)>>2]<<2)>>2]=l),Q){if((n[uf>>2]|0)==2){q=976+(ur<<2)|0,se=1040+(ur<<2)|0,M=0;do Ge=gs(s,M)|0,n[Ge+24>>2]|0||(pf=n[q>>2]|0,Jt=y(h[s+908+(pf<<2)>>2]),li=Ge+400+(n[se>>2]<<2)|0,Jt=y(Jt-y(h[li>>2])),h[li>>2]=y(Jt-y(h[Ge+908+(pf<<2)>>2]))),M=M+1|0;while((M|0)!=(Ws|0))}if(f|0){M=Jn?Ql:d;do Lm(s,f,br,M,Eo,Ds,O),f=n[f+960>>2]|0;while((f|0)!=0)}if(M=(Tr|2|0)==3,q=(ur|2|0)==3,M|q){f=0;do se=n[(n[wo>>2]|0)+(f<<2)>>2]|0,(n[se+36>>2]|0)!=1&&(M&&Cp(s,se,Tr),q&&Cp(s,se,ur)),f=f+1|0;while((f|0)!=(Ws|0))}}}while(0);C=Tl}function pa(s,l){s=s|0,l=y(l);var c=0;oa(s,l>=y(0),3147),c=l==y(0),h[s+4>>2]=c?y(0):l}function vc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=f|0;var d=Ze,m=Ze,B=0,k=0,Q=0;n[2278]=(n[2278]|0)+1,Bl(s),ts(s,2,l)|0?(d=y(Gr(n[s+992>>2]|0,l)),Q=1,d=y(d+y(ln(s,2,l)))):(d=y(Gr(s+380|0,l)),d>=y(0)?Q=2:(Q=((_t(l)|0)^1)&1,d=l)),ts(s,0,c)|0?(m=y(Gr(n[s+996>>2]|0,c)),k=1,m=y(m+y(ln(s,0,l)))):(m=y(Gr(s+388|0,c)),m>=y(0)?k=2:(k=((_t(c)|0)^1)&1,m=c)),B=s+976|0,fa(s,d,m,f,Q,k,l,c,1,3189,n[B>>2]|0)|0&&(yp(s,n[s+496>>2]|0,l,c,l),Dc(s,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),o[11696]|0)&&km(s,7)}function Bl(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;k=C,C=C+32|0,B=k+24|0,m=k+16|0,f=k+8|0,d=k,c=0;do l=s+380+(c<<3)|0,(n[s+380+(c<<3)+4>>2]|0)!=0&&(Q=l,O=n[Q+4>>2]|0,M=f,n[M>>2]=n[Q>>2],n[M+4>>2]=O,M=s+364+(c<<3)|0,O=n[M+4>>2]|0,Q=d,n[Q>>2]=n[M>>2],n[Q+4>>2]=O,n[m>>2]=n[f>>2],n[m+4>>2]=n[f+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],ws(m,B)|0)||(l=s+348+(c<<3)|0),n[s+992+(c<<2)>>2]=l,c=c+1|0;while((c|0)!=2);C=k}function ts(s,l,c){s=s|0,l=l|0,c=y(c);var f=0;switch(s=n[s+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[s+4>>2]|0){case 0:case 3:{s=0;break}case 1:{y(h[s>>2])<y(0)?s=0:f=5;break}case 2:{y(h[s>>2])<y(0)?s=0:s=(_t(c)|0)^1;break}default:f=5}return(f|0)==5&&(s=1),s|0}function Gr(s,l){switch(s=s|0,l=y(l),n[s+4>>2]|0){case 2:{l=y(y(y(h[s>>2])*l)/y(100));break}case 1:{l=y(h[s>>2]);break}default:l=y(Ae)}return y(l)}function yp(s,l,c,f,d){s=s|0,l=l|0,c=y(c),f=y(f),d=y(d);var m=0,B=Ze;l=n[s+944>>2]|0?l:1,m=fr(n[s+4>>2]|0,l)|0,l=Cw(m,l)|0,c=y(Mm(s,m,c)),f=y(Mm(s,l,f)),B=y(c+y(V(s,m,d))),h[s+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,c=y(c+y(re(s,m,d))),h[s+400+(n[1e3+(m<<2)>>2]<<2)>>2]=c,c=y(f+y(V(s,l,d))),h[s+400+(n[1040+(l<<2)>>2]<<2)>>2]=c,d=y(f+y(re(s,l,d))),h[s+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function Dc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=y(f);var d=0,m=0,B=Ze,k=Ze,Q=0,O=0,M=Ze,q=0,se=Ze,Ge=Ze,Oe=Ze,Fe=Ze;if(l!=y(0)&&(d=s+400|0,Fe=y(h[d>>2]),m=s+404|0,Oe=y(h[m>>2]),q=s+416|0,Ge=y(h[q>>2]),O=s+420|0,B=y(h[O>>2]),se=y(Fe+c),M=y(Oe+f),f=y(se+Ge),k=y(M+B),Q=(n[s+988>>2]|0)==1,h[d>>2]=y(Go(Fe,l,0,Q)),h[m>>2]=y(Go(Oe,l,0,Q)),c=y(kT(y(Ge*l),y(1))),Ii(c,y(0))|0?m=0:m=(Ii(c,y(1))|0)^1,c=y(kT(y(B*l),y(1))),Ii(c,y(0))|0?d=0:d=(Ii(c,y(1))|0)^1,Fe=y(Go(f,l,Q&m,Q&(m^1))),h[q>>2]=y(Fe-y(Go(se,l,0,Q))),Fe=y(Go(k,l,Q&d,Q&(d^1))),h[O>>2]=y(Fe-y(Go(M,l,0,Q))),m=(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2,m|0)){d=0;do Dc(gs(s,d)|0,l,se,M),d=d+1|0;while((d|0)!=(m|0))}}function Ew(s,l,c,f,d){switch(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,c|0){case 5:case 0:{s=a7(n[489]|0,f,d)|0;break}default:s=t3e(f,d)|0}return s|0}function yg(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;d=C,C=C+16|0,m=d,n[m>>2]=f,Eg(s,0,l,c,m),C=d}function Eg(s,l,c,f,d){if(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,s=s|0?s:956,x7[n[s+8>>2]&1](s,l,c,f,d)|0,(c|0)==5)Tt();else return}function Ga(s,l,c){s=s|0,l=l|0,c=c|0,o[s+l>>0]=c&1}function Fm(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(Cg(s,f),Qt(s,n[l>>2]|0,n[c>>2]|0,f))}function Cg(s,l){s=s|0,l=l|0;var c=0;if((N(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Tt();else{c=Vt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function Qt(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function N(s){return s=s|0,1073741823}function V(s,l,c){return s=s|0,l=l|0,c=y(c),he(l)|0&&(n[s+96>>2]|0)!=0?s=s+92|0:s=Fn(s+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function re(s,l,c){return s=s|0,l=l|0,c=y(c),he(l)|0&&(n[s+104>>2]|0)!=0?s=s+100|0:s=Fn(s+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function he(s){return s=s|0,(s|1|0)==3|0}function ze(s,l){return s=s|0,l=y(l),(n[s+4>>2]|0)==3?l=y(0):l=y(Gr(s,l)),y(l)}function mt(s,l){return s=s|0,l=l|0,s=n[s>>2]|0,((s|0)==0?(l|0)>1?l:1:s)|0}function fr(s,l){s=s|0,l=l|0;var c=0;e:do if((l|0)==2){switch(s|0){case 2:{s=3;break e}case 3:break;default:{c=4;break e}}s=2}else c=4;while(0);return s|0}function Cr(s,l){s=s|0,l=l|0;var c=Ze;return he(l)|0&&(n[s+312>>2]|0)!=0&&(c=y(h[s+308>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function yn(s,l){s=s|0,l=l|0;var c=Ze;return he(l)|0&&(n[s+320>>2]|0)!=0&&(c=y(h[s+316>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return he(l)|0&&(n[s+240>>2]|0)!=0&&(f=y(Gr(s+236|0,c)),f>=y(0))||(f=y(_n(y(Gr(Fn(s+204|0,n[1040+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Mi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return he(l)|0&&(n[s+248>>2]|0)!=0&&(f=y(Gr(s+244|0,c)),f>=y(0))||(f=y(_n(y(Gr(Fn(s+204|0,n[1e3+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function wg(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,O=Ze,M=Ze,q=Ze,se=Ze,Ge=0,Oe=0,Fe=0;Fe=C,C=C+16|0,Ge=Fe,Oe=s+964|0,Un(s,(n[Oe>>2]|0)!=0,3519),k=y(En(s,2,l)),Q=y(En(s,0,l)),O=y(ln(s,2,l)),M=y(ln(s,0,l)),_t(l)|0?q=l:q=y(_n(y(0),y(y(l-O)-k))),_t(c)|0?se=c:se=y(_n(y(0),y(y(c-M)-Q))),(f|0)==1&(d|0)==1?(h[s+908>>2]=y(Bi(s,2,y(l-O),m,m)),l=y(Bi(s,0,y(c-M),B,m))):(b7[n[Oe>>2]&1](Ge,s,q,f,se,d),q=y(k+y(h[Ge>>2])),se=y(l-O),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?q:se,m,m)),se=y(Q+y(h[Ge+4>>2])),l=y(c-M),l=y(Bi(s,0,(d|2|0)==2?se:l,B,m))),h[s+912>>2]=l,C=Fe}function Gv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,O=Ze,M=Ze;O=y(En(s,2,m)),k=y(En(s,0,m)),M=y(ln(s,2,m)),Q=y(ln(s,0,m)),l=y(l-M),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?O:l,m,m)),c=y(c-Q),h[s+912>>2]=y(Bi(s,0,(d|2|0)==2?k:c,B,m))}function Yv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=0,Q=Ze,O=Ze;return k=(f|0)==2,!(l<=y(0)&k)&&!(c<=y(0)&(d|0)==2)&&!((f|0)==1&(d|0)==1)?s=0:(Q=y(ln(s,0,m)),O=y(ln(s,2,m)),k=l<y(0)&k|(_t(l)|0),l=y(l-O),h[s+908>>2]=y(Bi(s,2,k?y(0):l,m,m)),l=y(c-Q),k=c<y(0)&(d|0)==2|(_t(c)|0),h[s+912>>2]=y(Bi(s,0,k?y(0):l,B,m)),s=1),s|0}function Cw(s,l){return s=s|0,l=l|0,OA(s)|0?s=fr(2,l)|0:s=0,s|0}function Ep(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(oi(s,l,c)),y(c+y(Cr(s,l)))}function ww(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(Mi(s,l,c)),y(c+y(yn(s,l)))}function En(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(Ep(s,l,c)),y(f+y(ww(s,l,c)))}function Tm(s){return s=s|0,n[s+24>>2]|0?s=0:y(rs(s))!=y(0)?s=1:s=y(js(s))!=y(0),s|0}function rs(s){s=s|0;var l=Ze;if(n[s+944>>2]|0){if(l=y(h[s+44>>2]),_t(l)|0)return l=y(h[s+40>>2]),s=l>y(0)&((_t(l)|0)^1),y(s?l:y(0))}else l=y(0);return y(l)}function js(s){s=s|0;var l=Ze,c=0,f=Ze;do if(n[s+944>>2]|0){if(l=y(h[s+48>>2]),_t(l)|0){if(c=o[(n[s+976>>2]|0)+2>>0]|0,c<<24>>24==0&&(f=y(h[s+40>>2]),f<y(0)&((_t(f)|0)^1))){l=y(-f);break}l=c<<24>>24?y(1):y(0)}}else l=y(0);while(0);return y(l)}function Bu(s){s=s|0;var l=0,c=0;if(zm(s+400|0,0,540)|0,o[s+985>>0]=1,$(s),c=wi(s)|0,c|0){l=s+948|0,s=0;do Bu(n[(n[l>>2]|0)+(s<<2)>>2]|0),s=s+1|0;while((s|0)!=(c|0))}}function Rm(s,l,c,f,d,m,B,k,Q,O){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=y(m),B=y(B),k=k|0,Q=Q|0,O=O|0;var M=0,q=Ze,se=0,Ge=0,Oe=Ze,Fe=Ze,et=0,Xe=Ze,at=0,Ue=Ze,qe=0,Lt=0,Or=0,or=0,Xt=0,Pr=0,Nr=0,ir=0,bn=0,go=0;bn=C,C=C+16|0,Or=bn+12|0,or=bn+8|0,Xt=bn+4|0,Pr=bn,ir=fr(n[s+4>>2]|0,Q)|0,qe=he(ir)|0,q=y(Gr(Iw(l)|0,qe?m:B)),Lt=ts(l,2,m)|0,Nr=ts(l,0,B)|0;do if(!(_t(q)|0)&&!(_t(qe?c:d)|0)){if(M=l+504|0,!(_t(y(h[M>>2]))|0)&&(!(Bw(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[M>>2]=y(_n(q,y(En(l,ir,m))))}else se=7;while(0);do if((se|0)==7){if(at=qe^1,!(at|Lt^1)){B=y(Gr(n[l+992>>2]|0,m)),h[l+504>>2]=y(_n(B,y(En(l,2,m))));break}if(!(qe|Nr^1)){B=y(Gr(n[l+996>>2]|0,B)),h[l+504>>2]=y(_n(B,y(En(l,0,m))));break}h[Or>>2]=y(Ae),h[or>>2]=y(Ae),n[Xt>>2]=0,n[Pr>>2]=0,Xe=y(ln(l,2,m)),Ue=y(ln(l,0,m)),Lt?(Oe=y(Xe+y(Gr(n[l+992>>2]|0,m))),h[Or>>2]=Oe,n[Xt>>2]=1,Ge=1):(Ge=0,Oe=y(Ae)),Nr?(q=y(Ue+y(Gr(n[l+996>>2]|0,B))),h[or>>2]=q,n[Pr>>2]=1,M=1):(M=0,q=y(Ae)),se=n[s+32>>2]|0,qe&(se|0)==2?se=2:_t(Oe)|0&&!(_t(c)|0)&&(h[Or>>2]=c,n[Xt>>2]=2,Ge=2,Oe=c),!((se|0)==2&at)&&_t(q)|0&&!(_t(d)|0)&&(h[or>>2]=d,n[Pr>>2]=2,M=2,q=d),Fe=y(h[l+396>>2]),et=_t(Fe)|0;do if(et)se=Ge;else{if((Ge|0)==1&at){h[or>>2]=y(y(Oe-Xe)/Fe),n[Pr>>2]=1,M=1,se=1;break}qe&(M|0)==1?(h[Or>>2]=y(Fe*y(q-Ue)),n[Xt>>2]=1,M=1,se=1):se=Ge}while(0);go=_t(c)|0,Ge=(ha(s,l)|0)!=4,!(qe|Lt|((f|0)!=1|go)|(Ge|(se|0)==1))&&(h[Or>>2]=c,n[Xt>>2]=1,!et)&&(h[or>>2]=y(y(c-Xe)/Fe),n[Pr>>2]=1,M=1),!(Nr|at|((k|0)!=1|(_t(d)|0))|(Ge|(M|0)==1))&&(h[or>>2]=d,n[Pr>>2]=1,!et)&&(h[Or>>2]=y(Fe*y(d-Ue)),n[Xt>>2]=1),yr(l,2,m,m,Xt,Or),yr(l,0,B,m,Pr,or),c=y(h[Or>>2]),d=y(h[or>>2]),fa(l,c,d,Q,n[Xt>>2]|0,n[Pr>>2]|0,m,B,0,3565,O)|0,B=y(h[l+908+(n[976+(ir<<2)>>2]<<2)>>2]),h[l+504>>2]=y(_n(B,y(En(l,ir,m))))}while(0);n[l+500>>2]=n[2278],C=bn}function Bi(s,l,c,f,d){return s=s|0,l=l|0,c=y(c),f=y(f),d=y(d),f=y(MA(s,l,c,f)),y(_n(f,y(En(s,l,d))))}function ha(s,l){return s=s|0,l=l|0,l=l+20|0,l=n[((n[l>>2]|0)==0?s+16|0:l)>>2]|0,(l|0)==5&&OA(n[s+4>>2]|0)|0&&(l=1),l|0}function vl(s,l){return s=s|0,l=l|0,he(l)|0&&(n[s+96>>2]|0)!=0?l=4:l=n[1040+(l<<2)>>2]|0,s+60+(l<<3)|0}function Pc(s,l){return s=s|0,l=l|0,he(l)|0&&(n[s+104>>2]|0)!=0?l=5:l=n[1e3+(l<<2)>>2]|0,s+60+(l<<3)|0}function yr(s,l,c,f,d,m){switch(s=s|0,l=l|0,c=y(c),f=y(f),d=d|0,m=m|0,c=y(Gr(s+380+(n[976+(l<<2)>>2]<<3)|0,c)),c=y(c+y(ln(s,l,f))),n[d>>2]|0){case 2:case 1:{d=_t(c)|0,f=y(h[m>>2]),h[m>>2]=d|f<c?f:c;break}case 0:{_t(c)|0||(n[d>>2]=2,h[m>>2]=c);break}default:}}function gi(s,l){return s=s|0,l=l|0,s=s+132|0,he(l)|0&&(n[(Fn(s,4,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Mr(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,he(l)|0&&(f=Fn(s,4,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1040+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Gr(f,c))),y(c)}function ns(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),f=y(f+y(V(s,l,c))),y(f+y(re(s,l,c)))}function Yi(s){s=s|0;var l=0,c=0,f=0;e:do if(OA(n[s+4>>2]|0)|0)l=0;else if((n[s+16>>2]|0)!=5)if(c=wi(s)|0,!c)l=0;else for(l=0;;){if(f=gs(s,l)|0,(n[f+24>>2]|0)==0&&(n[f+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=c>>>0){l=0;break}}else l=1;while(0);return l|0}function Nm(s,l){s=s|0,l=l|0;var c=Ze;return c=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),c>=y(0)&((_t(c)|0)^1)|0}function Ya(s){s=s|0;var l=Ze,c=0,f=0,d=0,m=0,B=0,k=0,Q=Ze;if(c=n[s+968>>2]|0,c)Q=y(h[s+908>>2]),l=y(h[s+912>>2]),l=y(v7[c&0](s,Q,l)),Un(s,(_t(l)|0)^1,3573);else{m=wi(s)|0;do if(m|0){for(c=0,d=0;;){if(f=gs(s,d)|0,n[f+940>>2]|0){B=8;break}if((n[f+24>>2]|0)!=1)if(k=(ha(s,f)|0)==5,k){c=f;break}else c=(c|0)==0?f:c;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!c)break;return l=y(Ya(c)),y(l+y(h[c+404>>2]))}while(0);l=y(h[s+912>>2])}return y(l)}function MA(s,l,c,f){s=s|0,l=l|0,c=y(c),f=y(f);var d=Ze,m=0;return OA(l)|0?(l=1,m=3):he(l)|0?(l=0,m=3):(f=y(Ae),d=y(Ae)),(m|0)==3&&(d=y(Gr(s+364+(l<<3)|0,f)),f=y(Gr(s+380+(l<<3)|0,f))),m=f<c&(f>=y(0)&((_t(f)|0)^1)),c=m?f:c,m=d>=y(0)&((_t(d)|0)^1)&c<d,y(m?d:c)}function Lm(s,l,c,f,d,m,B){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,B=B|0;var k=Ze,Q=Ze,O=0,M=0,q=Ze,se=Ze,Ge=Ze,Oe=0,Fe=0,et=0,Xe=0,at=Ze,Ue=0;et=fr(n[s+4>>2]|0,m)|0,Oe=Cw(et,m)|0,Fe=he(et)|0,q=y(ln(l,2,c)),se=y(ln(l,0,c)),ts(l,2,c)|0?k=y(q+y(Gr(n[l+992>>2]|0,c))):gi(l,2)|0&&sr(l,2)|0?(k=y(h[s+908>>2]),Q=y(Cr(s,2)),Q=y(k-y(Q+y(yn(s,2)))),k=y(Mr(l,2,c)),k=y(Bi(l,2,y(Q-y(k+y(vu(l,2,c)))),c,c))):k=y(Ae),ts(l,0,d)|0?Q=y(se+y(Gr(n[l+996>>2]|0,d))):gi(l,0)|0&&sr(l,0)|0?(Q=y(h[s+912>>2]),at=y(Cr(s,0)),at=y(Q-y(at+y(yn(s,0)))),Q=y(Mr(l,0,d)),Q=y(Bi(l,0,y(at-y(Q+y(vu(l,0,d)))),d,c))):Q=y(Ae),O=_t(k)|0,M=_t(Q)|0;do if(O^M&&(Ge=y(h[l+396>>2]),!(_t(Ge)|0)))if(O){k=y(q+y(y(Q-se)*Ge));break}else{at=y(se+y(y(k-q)/Ge)),Q=M?at:Q;break}while(0);M=_t(k)|0,O=_t(Q)|0,M|O&&(Ue=(M^1)&1,f=c>y(0)&((f|0)!=0&M),k=Fe?k:f?c:k,fa(l,k,Q,m,Fe?Ue:f?2:Ue,M&(O^1)&1,k,Q,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(ln(l,2,c))),Q=y(h[l+912>>2]),Q=y(Q+y(ln(l,0,c)))),fa(l,k,Q,m,1,1,k,Q,1,3635,B)|0,sr(l,et)|0&&!(gi(l,et)|0)?(Ue=n[976+(et<<2)>>2]|0,at=y(h[s+908+(Ue<<2)>>2]),at=y(at-y(h[l+908+(Ue<<2)>>2])),at=y(at-y(yn(s,et))),at=y(at-y(re(l,et,c))),at=y(at-y(vu(l,et,Fe?c:d))),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at):Xe=21;do if((Xe|0)==21){if(!(gi(l,et)|0)&&(n[s+8>>2]|0)==1){Ue=n[976+(et<<2)>>2]|0,at=y(h[s+908+(Ue<<2)>>2]),at=y(y(at-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at;break}!(gi(l,et)|0)&&(n[s+8>>2]|0)==2&&(Ue=n[976+(et<<2)>>2]|0,at=y(h[s+908+(Ue<<2)>>2]),at=y(at-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at)}while(0);sr(l,Oe)|0&&!(gi(l,Oe)|0)?(Ue=n[976+(Oe<<2)>>2]|0,at=y(h[s+908+(Ue<<2)>>2]),at=y(at-y(h[l+908+(Ue<<2)>>2])),at=y(at-y(yn(s,Oe))),at=y(at-y(re(l,Oe,c))),at=y(at-y(vu(l,Oe,Fe?d:c))),h[l+400+(n[1040+(Oe<<2)>>2]<<2)>>2]=at):Xe=30;do if((Xe|0)==30&&!(gi(l,Oe)|0)){if((ha(s,l)|0)==2){Ue=n[976+(Oe<<2)>>2]|0,at=y(h[s+908+(Ue<<2)>>2]),at=y(y(at-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Oe<<2)>>2]<<2)>>2]=at;break}Ue=(ha(s,l)|0)==3,Ue^(n[s+28>>2]|0)==2&&(Ue=n[976+(Oe<<2)>>2]|0,at=y(h[s+908+(Ue<<2)>>2]),at=y(at-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(Oe<<2)>>2]<<2)>>2]=at)}while(0)}function Cp(s,l,c){s=s|0,l=l|0,c=c|0;var f=Ze,d=0;d=n[976+(c<<2)>>2]|0,f=y(h[l+908+(d<<2)>>2]),f=y(y(h[s+908+(d<<2)>>2])-f),f=y(f-y(h[l+400+(n[1040+(c<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(c<<2)>>2]<<2)>>2]=f}function OA(s){return s=s|0,(s|1|0)==1|0}function Iw(s){s=s|0;var l=Ze;switch(n[s+56>>2]|0){case 0:case 3:{l=y(h[s+40>>2]),l>y(0)&((_t(l)|0)^1)?s=o[(n[s+976>>2]|0)+2>>0]|0?1056:992:s=1056;break}default:s=s+52|0}return s|0}function Bw(s,l){return s=s|0,l=l|0,(o[s+l>>0]|0)!=0|0}function sr(s,l){return s=s|0,l=l|0,s=s+132|0,he(l)|0&&(n[(Fn(s,5,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function vu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,he(l)|0&&(f=Fn(s,5,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1e3+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Gr(f,c))),y(c)}function Mm(s,l,c){return s=s|0,l=l|0,c=y(c),gi(s,l)|0?c=y(Mr(s,l,c)):c=y(-y(vu(s,l,c))),y(c)}function Du(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function wp(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Tt();else{d=Vt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function Ig(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function UA(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function _A(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;if(B=s+4|0,k=n[B>>2]|0,d=k-f|0,m=d>>2,s=l+(m<<2)|0,s>>>0<c>>>0){f=k;do n[f>>2]=n[s>>2],s=s+4|0,f=(n[B>>2]|0)+4|0,n[B>>2]=f;while(s>>>0<c>>>0)}m|0&&Mw(k+(0-m<<2)|0,l|0,d|0)|0}function Bg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return k=l+4|0,Q=n[k>>2]|0,d=n[s>>2]|0,B=c,m=B-d|0,f=Q+(0-(m>>2)<<2)|0,n[k>>2]=f,(m|0)>0&&Dr(f|0,d|0,m|0)|0,d=s+4|0,m=l+8|0,f=(n[d>>2]|0)-B|0,(f|0)>0&&(Dr(n[m>>2]|0,c|0,f|0)|0,n[m>>2]=(n[m>>2]|0)+(f>>>2<<2)),B=n[s>>2]|0,n[s>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=s+8|0,c=l+12|0,s=n[B>>2]|0,n[B>>2]=n[c>>2],n[c>>2]=s,n[l>>2]=n[k>>2],Q|0}function vw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[c>>2]|0,(B|0)!=(m|0)){d=s+8|0,c=((m+-4-B|0)>>>2)+1|0,s=B,f=n[d>>2]|0;do n[f>>2]=n[s>>2],f=(n[d>>2]|0)+4|0,n[d>>2]=f,s=s+4|0;while((s|0)!=(m|0));n[l>>2]=B+(c<<2)}}function Om(){dc()}function ga(){var s=0;return s=Vt(4)|0,HA(s),s|0}function HA(s){s=s|0,n[s>>2]=ys()|0}function Sc(s){s=s|0,s|0&&(vg(s),gt(s))}function vg(s){s=s|0,tt(n[s>>2]|0)}function Um(s,l,c){s=s|0,l=l|0,c=c|0,Ga(n[s>>2]|0,l,c)}function fo(s,l){s=s|0,l=y(l),pa(n[s>>2]|0,l)}function Wv(s,l){return s=s|0,l=l|0,Bw(n[s>>2]|0,l)|0}function Dw(){var s=0;return s=Vt(8)|0,Vv(s,0),s|0}function Vv(s,l){s=s|0,l=l|0,l?l=Ci(n[l>>2]|0)|0:l=co()|0,n[s>>2]=l,n[s+4>>2]=0,xi(l,s)}function pF(s){s=s|0;var l=0;return l=Vt(8)|0,Vv(l,s),l|0}function Kv(s){s=s|0,s|0&&(Pu(s),gt(s))}function Pu(s){s=s|0;var l=0;la(n[s>>2]|0),l=s+4|0,s=n[l>>2]|0,n[l>>2]=0,s|0&&(jA(s),gt(s))}function jA(s){s=s|0,qA(s)}function qA(s){s=s|0,s=n[s>>2]|0,s|0&&PA(s|0)}function Pw(s){return s=s|0,jo(s)|0}function _m(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(jA(l),gt(l)),_s(n[s>>2]|0)}function hF(s,l){s=s|0,l=l|0,Zr(n[s>>2]|0,n[l>>2]|0)}function gF(s,l){s=s|0,l=l|0,ca(n[s>>2]|0,l)}function Jv(s,l,c){s=s|0,l=l|0,c=+c,yu(n[s>>2]|0,l,y(c))}function zv(s,l,c){s=s|0,l=l|0,c=+c,Es(n[s>>2]|0,l,y(c))}function Sw(s,l){s=s|0,l=l|0,gu(n[s>>2]|0,l)}function Su(s,l){s=s|0,l=l|0,du(n[s>>2]|0,l)}function dF(s,l){s=s|0,l=l|0,QA(n[s>>2]|0,l)}function mF(s,l){s=s|0,l=l|0,bA(n[s>>2]|0,l)}function Ip(s,l){s=s|0,l=l|0,yc(n[s>>2]|0,l)}function yF(s,l){s=s|0,l=l|0,up(n[s>>2]|0,l)}function Xv(s,l,c){s=s|0,l=l|0,c=+c,Cc(n[s>>2]|0,l,y(c))}function GA(s,l,c){s=s|0,l=l|0,c=+c,G(n[s>>2]|0,l,y(c))}function EF(s,l){s=s|0,l=l|0,wl(n[s>>2]|0,l)}function CF(s,l){s=s|0,l=l|0,og(n[s>>2]|0,l)}function Zv(s,l){s=s|0,l=l|0,Ap(n[s>>2]|0,l)}function xw(s,l){s=s|0,l=+l,FA(n[s>>2]|0,y(l))}function bw(s,l){s=s|0,l=+l,Ha(n[s>>2]|0,y(l))}function wF(s,l){s=s|0,l=+l,Gi(n[s>>2]|0,y(l))}function IF(s,l){s=s|0,l=+l,Hs(n[s>>2]|0,y(l))}function Dl(s,l){s=s|0,l=+l,mu(n[s>>2]|0,y(l))}function kw(s,l){s=s|0,l=+l,mw(n[s>>2]|0,y(l))}function BF(s,l){s=s|0,l=+l,TA(n[s>>2]|0,y(l))}function YA(s){s=s|0,fp(n[s>>2]|0)}function Hm(s,l){s=s|0,l=+l,Cs(n[s>>2]|0,y(l))}function xu(s,l){s=s|0,l=+l,cg(n[s>>2]|0,y(l))}function Qw(s){s=s|0,ug(n[s>>2]|0)}function Fw(s,l){s=s|0,l=+l,pp(n[s>>2]|0,y(l))}function vF(s,l){s=s|0,l=+l,Ic(n[s>>2]|0,y(l))}function $v(s,l){s=s|0,l=+l,Sm(n[s>>2]|0,y(l))}function WA(s,l){s=s|0,l=+l,fg(n[s>>2]|0,y(l))}function eD(s,l){s=s|0,l=+l,Cu(n[s>>2]|0,y(l))}function jm(s,l){s=s|0,l=+l,xm(n[s>>2]|0,y(l))}function tD(s,l){s=s|0,l=+l,wu(n[s>>2]|0,y(l))}function rD(s,l){s=s|0,l=+l,yw(n[s>>2]|0,y(l))}function qm(s,l){s=s|0,l=+l,Aa(n[s>>2]|0,y(l))}function nD(s,l,c){s=s|0,l=l|0,c=+c,Eu(n[s>>2]|0,l,y(c))}function DF(s,l,c){s=s|0,l=l|0,c=+c,bi(n[s>>2]|0,l,y(c))}function P(s,l,c){s=s|0,l=l|0,c=+c,wc(n[s>>2]|0,l,y(c))}function D(s){return s=s|0,sg(n[s>>2]|0)|0}function R(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ec(d,n[l>>2]|0,c),j(s,d),C=f}function j(s,l){s=s|0,l=l|0,Y(s,n[l+4>>2]|0,+y(h[l>>2]))}function Y(s,l,c){s=s|0,l=l|0,c=+c,n[s>>2]=l,E[s+8>>3]=c}function fe(s){return s=s|0,ig(n[s>>2]|0)|0}function ve(s){return s=s|0,uo(n[s>>2]|0)|0}function vt(s){return s=s|0,mc(n[s>>2]|0)|0}function wt(s){return s=s|0,kA(n[s>>2]|0)|0}function bt(s){return s=s|0,Pm(n[s>>2]|0)|0}function _r(s){return s=s|0,ng(n[s>>2]|0)|0}function is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Dt(d,n[l>>2]|0,c),j(s,d),C=f}function di(s){return s=s|0,$n(n[s>>2]|0)|0}function po(s){return s=s|0,ag(n[s>>2]|0)|0}function VA(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,ua(f,n[l>>2]|0),j(s,f),C=c}function Yo(s){return s=s|0,+ +y(qi(n[s>>2]|0))}function rt(s){return s=s|0,+ +y(es(n[s>>2]|0))}function Ke(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Br(f,n[l>>2]|0),j(s,f),C=c}function At(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Ag(f,n[l>>2]|0),j(s,f),C=c}function Wt(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Ct(f,n[l>>2]|0),j(s,f),C=c}function vr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,pg(f,n[l>>2]|0),j(s,f),C=c}function Sn(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,hg(f,n[l>>2]|0),j(s,f),C=c}function Fr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,bm(f,n[l>>2]|0),j(s,f),C=c}function xn(s){return s=s|0,+ +y(Bc(n[s>>2]|0))}function ai(s,l){return s=s|0,l=l|0,+ +y(lg(n[s>>2]|0,l))}function en(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,ct(d,n[l>>2]|0,c),j(s,d),C=f}function ho(s,l,c){s=s|0,l=l|0,c=c|0,nr(n[s>>2]|0,n[l>>2]|0,c)}function PF(s,l){s=s|0,l=l|0,ms(n[s>>2]|0,n[l>>2]|0)}function sve(s){return s=s|0,wi(n[s>>2]|0)|0}function ove(s){return s=s|0,s=pt(n[s>>2]|0)|0,s?s=Pw(s)|0:s=0,s|0}function ave(s,l){return s=s|0,l=l|0,s=gs(n[s>>2]|0,l)|0,s?s=Pw(s)|0:s=0,s|0}function lve(s,l){s=s|0,l=l|0;var c=0,f=0;f=Vt(4)|0,$G(f,l),c=s+4|0,l=n[c>>2]|0,n[c>>2]=f,l|0&&(jA(l),gt(l)),It(n[s>>2]|0,1)}function $G(s,l){s=s|0,l=l|0,Cve(s,l)}function cve(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,uve(k,jo(l)|0,+c,f,+d,m),h[s>>2]=y(+E[k>>3]),h[s+4>>2]=y(+E[k+8>>3]),C=B}function uve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0,k=0,Q=0,O=0,M=0;B=C,C=C+32|0,M=B+8|0,O=B+20|0,Q=B,k=B+16|0,E[M>>3]=c,n[O>>2]=f,E[Q>>3]=d,n[k>>2]=m,Ave(s,n[l+4>>2]|0,M,O,Q,k),C=B}function Ave(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,Va(k),l=da(l)|0,fve(s,l,+E[c>>3],n[f>>2]|0,+E[d>>3],n[m>>2]|0),Ka(k),C=B}function da(s){return s=s|0,n[s>>2]|0}function fve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0;B=Pl(pve()|0)|0,c=+KA(c),f=SF(f)|0,d=+KA(d),hve(s,hi(0,B|0,l|0,+c,f|0,+d,SF(m)|0)|0)}function pve(){var s=0;return o[7608]|0||(yve(9120),s=7608,n[s>>2]=1,n[s+4>>2]=0),9120}function Pl(s){return s=s|0,n[s+8>>2]|0}function KA(s){return s=+s,+ +xF(s)}function SF(s){return s=s|0,t5(s)|0}function hve(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=l,f&1?(gve(c,0),ii(f|0,c|0)|0,dve(s,c),mve(c)):(n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]),C=d}function gve(s,l){s=s|0,l=l|0,e5(s,l),n[s+8>>2]=0,o[s+24>>0]=0}function dve(s,l){s=s|0,l=l|0,l=l+8|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]}function mve(s){s=s|0,o[s+24>>0]=0}function e5(s,l){s=s|0,l=l|0,n[s>>2]=l}function t5(s){return s=s|0,s|0}function xF(s){return s=+s,+s}function yve(s){s=s|0,Sl(s,Eve()|0,4)}function Eve(){return 1064}function Sl(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=cp(l|0,c+1|0)|0}function Cve(s,l){s=s|0,l=l|0,l=n[l>>2]|0,n[s>>2]=l,yl(l|0)}function wve(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(jA(l),gt(l)),It(n[s>>2]|0,0)}function Ive(s){s=s|0,Rt(n[s>>2]|0)}function Bve(s){return s=s|0,er(n[s>>2]|0)|0}function vve(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,vc(n[s>>2]|0,y(l),y(c),f)}function Dve(s){return s=s|0,+ +y(Il(n[s>>2]|0))}function Pve(s){return s=s|0,+ +y(gg(n[s>>2]|0))}function Sve(s){return s=s|0,+ +y(Iu(n[s>>2]|0))}function xve(s){return s=s|0,+ +y(RA(n[s>>2]|0))}function bve(s){return s=s|0,+ +y(hp(n[s>>2]|0))}function kve(s){return s=s|0,+ +y(ja(n[s>>2]|0))}function Qve(s,l){s=s|0,l=l|0,E[s>>3]=+y(Il(n[l>>2]|0)),E[s+8>>3]=+y(gg(n[l>>2]|0)),E[s+16>>3]=+y(Iu(n[l>>2]|0)),E[s+24>>3]=+y(RA(n[l>>2]|0)),E[s+32>>3]=+y(hp(n[l>>2]|0)),E[s+40>>3]=+y(ja(n[l>>2]|0))}function Fve(s,l){return s=s|0,l=l|0,+ +y(dg(n[s>>2]|0,l))}function Tve(s,l){return s=s|0,l=l|0,+ +y(gp(n[s>>2]|0,l))}function Rve(s,l){return s=s|0,l=l|0,+ +y(qo(n[s>>2]|0,l))}function Nve(){return Pn()|0}function Lve(){Mve(),Ove(),Uve(),_ve(),Hve(),jve()}function Mve(){HNe(11713,4938,1)}function Ove(){oNe(10448)}function Uve(){HRe(10408)}function _ve(){uRe(10324)}function Hve(){yFe(10096)}function jve(){qve(9132)}function qve(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0,et=0,Xe=0,at=0,Ue=0,qe=0,Lt=0,Or=0,or=0,Xt=0,Pr=0,Nr=0,ir=0,bn=0,go=0,mo=0,yo=0,ya=0,Qp=0,Fp=0,xl=0,Tp=0,Fu=0,Tu=0,Rp=0,Np=0,Lp=0,Xr=0,bl=0,Mp=0,bc=0,Op=0,Up=0,Ru=0,Nu=0,kc=0,qs=0,za=0,Wo=0,kl=0,rf=0,nf=0,Lu=0,sf=0,of=0,Gs=0,vs=0,Ql=0,Tn=0,af=0,Eo=0,Qc=0,Co=0,Fc=0,lf=0,cf=0,Tc=0,Ys=0,Fl=0,uf=0,Af=0,ff=0,br=0,Jn=0,Ds=0,wo=0,Ws=0,Tr=0,ur=0,Tl=0;l=C,C=C+672|0,c=l+656|0,Tl=l+648|0,ur=l+640|0,Tr=l+632|0,Ws=l+624|0,wo=l+616|0,Ds=l+608|0,Jn=l+600|0,br=l+592|0,ff=l+584|0,Af=l+576|0,uf=l+568|0,Fl=l+560|0,Ys=l+552|0,Tc=l+544|0,cf=l+536|0,lf=l+528|0,Fc=l+520|0,Co=l+512|0,Qc=l+504|0,Eo=l+496|0,af=l+488|0,Tn=l+480|0,Ql=l+472|0,vs=l+464|0,Gs=l+456|0,of=l+448|0,sf=l+440|0,Lu=l+432|0,nf=l+424|0,rf=l+416|0,kl=l+408|0,Wo=l+400|0,za=l+392|0,qs=l+384|0,kc=l+376|0,Nu=l+368|0,Ru=l+360|0,Up=l+352|0,Op=l+344|0,bc=l+336|0,Mp=l+328|0,bl=l+320|0,Xr=l+312|0,Lp=l+304|0,Np=l+296|0,Rp=l+288|0,Tu=l+280|0,Fu=l+272|0,Tp=l+264|0,xl=l+256|0,Fp=l+248|0,Qp=l+240|0,ya=l+232|0,yo=l+224|0,mo=l+216|0,go=l+208|0,bn=l+200|0,ir=l+192|0,Nr=l+184|0,Pr=l+176|0,Xt=l+168|0,or=l+160|0,Or=l+152|0,Lt=l+144|0,qe=l+136|0,Ue=l+128|0,at=l+120|0,Xe=l+112|0,et=l+104|0,Fe=l+96|0,Oe=l+88|0,Ge=l+80|0,se=l+72|0,q=l+64|0,M=l+56|0,O=l+48|0,Q=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,f=l,Gve(s,3646),Yve(s,3651,2)|0,Wve(s,3665,2)|0,Vve(s,3682,18)|0,n[Tl>>2]=19,n[Tl+4>>2]=0,n[c>>2]=n[Tl>>2],n[c+4>>2]=n[Tl+4>>2],Tw(s,3690,c)|0,n[ur>>2]=1,n[ur+4>>2]=0,n[c>>2]=n[ur>>2],n[c+4>>2]=n[ur+4>>2],Kve(s,3696,c)|0,n[Tr>>2]=2,n[Tr+4>>2]=0,n[c>>2]=n[Tr>>2],n[c+4>>2]=n[Tr+4>>2],bu(s,3706,c)|0,n[Ws>>2]=1,n[Ws+4>>2]=0,n[c>>2]=n[Ws>>2],n[c+4>>2]=n[Ws+4>>2],Dg(s,3722,c)|0,n[wo>>2]=2,n[wo+4>>2]=0,n[c>>2]=n[wo>>2],n[c+4>>2]=n[wo+4>>2],Dg(s,3734,c)|0,n[Ds>>2]=3,n[Ds+4>>2]=0,n[c>>2]=n[Ds>>2],n[c+4>>2]=n[Ds+4>>2],bu(s,3753,c)|0,n[Jn>>2]=4,n[Jn+4>>2]=0,n[c>>2]=n[Jn>>2],n[c+4>>2]=n[Jn+4>>2],bu(s,3769,c)|0,n[br>>2]=5,n[br+4>>2]=0,n[c>>2]=n[br>>2],n[c+4>>2]=n[br+4>>2],bu(s,3783,c)|0,n[ff>>2]=6,n[ff+4>>2]=0,n[c>>2]=n[ff>>2],n[c+4>>2]=n[ff+4>>2],bu(s,3796,c)|0,n[Af>>2]=7,n[Af+4>>2]=0,n[c>>2]=n[Af>>2],n[c+4>>2]=n[Af+4>>2],bu(s,3813,c)|0,n[uf>>2]=8,n[uf+4>>2]=0,n[c>>2]=n[uf>>2],n[c+4>>2]=n[uf+4>>2],bu(s,3825,c)|0,n[Fl>>2]=3,n[Fl+4>>2]=0,n[c>>2]=n[Fl>>2],n[c+4>>2]=n[Fl+4>>2],Dg(s,3843,c)|0,n[Ys>>2]=4,n[Ys+4>>2]=0,n[c>>2]=n[Ys>>2],n[c+4>>2]=n[Ys+4>>2],Dg(s,3853,c)|0,n[Tc>>2]=9,n[Tc+4>>2]=0,n[c>>2]=n[Tc>>2],n[c+4>>2]=n[Tc+4>>2],bu(s,3870,c)|0,n[cf>>2]=10,n[cf+4>>2]=0,n[c>>2]=n[cf>>2],n[c+4>>2]=n[cf+4>>2],bu(s,3884,c)|0,n[lf>>2]=11,n[lf+4>>2]=0,n[c>>2]=n[lf>>2],n[c+4>>2]=n[lf+4>>2],bu(s,3896,c)|0,n[Fc>>2]=1,n[Fc+4>>2]=0,n[c>>2]=n[Fc>>2],n[c+4>>2]=n[Fc+4>>2],Is(s,3907,c)|0,n[Co>>2]=2,n[Co+4>>2]=0,n[c>>2]=n[Co>>2],n[c+4>>2]=n[Co+4>>2],Is(s,3915,c)|0,n[Qc>>2]=3,n[Qc+4>>2]=0,n[c>>2]=n[Qc>>2],n[c+4>>2]=n[Qc+4>>2],Is(s,3928,c)|0,n[Eo>>2]=4,n[Eo+4>>2]=0,n[c>>2]=n[Eo>>2],n[c+4>>2]=n[Eo+4>>2],Is(s,3948,c)|0,n[af>>2]=5,n[af+4>>2]=0,n[c>>2]=n[af>>2],n[c+4>>2]=n[af+4>>2],Is(s,3960,c)|0,n[Tn>>2]=6,n[Tn+4>>2]=0,n[c>>2]=n[Tn>>2],n[c+4>>2]=n[Tn+4>>2],Is(s,3974,c)|0,n[Ql>>2]=7,n[Ql+4>>2]=0,n[c>>2]=n[Ql>>2],n[c+4>>2]=n[Ql+4>>2],Is(s,3983,c)|0,n[vs>>2]=20,n[vs+4>>2]=0,n[c>>2]=n[vs>>2],n[c+4>>2]=n[vs+4>>2],Tw(s,3999,c)|0,n[Gs>>2]=8,n[Gs+4>>2]=0,n[c>>2]=n[Gs>>2],n[c+4>>2]=n[Gs+4>>2],Is(s,4012,c)|0,n[of>>2]=9,n[of+4>>2]=0,n[c>>2]=n[of>>2],n[c+4>>2]=n[of+4>>2],Is(s,4022,c)|0,n[sf>>2]=21,n[sf+4>>2]=0,n[c>>2]=n[sf>>2],n[c+4>>2]=n[sf+4>>2],Tw(s,4039,c)|0,n[Lu>>2]=10,n[Lu+4>>2]=0,n[c>>2]=n[Lu>>2],n[c+4>>2]=n[Lu+4>>2],Is(s,4053,c)|0,n[nf>>2]=11,n[nf+4>>2]=0,n[c>>2]=n[nf>>2],n[c+4>>2]=n[nf+4>>2],Is(s,4065,c)|0,n[rf>>2]=12,n[rf+4>>2]=0,n[c>>2]=n[rf>>2],n[c+4>>2]=n[rf+4>>2],Is(s,4084,c)|0,n[kl>>2]=13,n[kl+4>>2]=0,n[c>>2]=n[kl>>2],n[c+4>>2]=n[kl+4>>2],Is(s,4097,c)|0,n[Wo>>2]=14,n[Wo+4>>2]=0,n[c>>2]=n[Wo>>2],n[c+4>>2]=n[Wo+4>>2],Is(s,4117,c)|0,n[za>>2]=15,n[za+4>>2]=0,n[c>>2]=n[za>>2],n[c+4>>2]=n[za+4>>2],Is(s,4129,c)|0,n[qs>>2]=16,n[qs+4>>2]=0,n[c>>2]=n[qs>>2],n[c+4>>2]=n[qs+4>>2],Is(s,4148,c)|0,n[kc>>2]=17,n[kc+4>>2]=0,n[c>>2]=n[kc>>2],n[c+4>>2]=n[kc+4>>2],Is(s,4161,c)|0,n[Nu>>2]=18,n[Nu+4>>2]=0,n[c>>2]=n[Nu>>2],n[c+4>>2]=n[Nu+4>>2],Is(s,4181,c)|0,n[Ru>>2]=5,n[Ru+4>>2]=0,n[c>>2]=n[Ru>>2],n[c+4>>2]=n[Ru+4>>2],Dg(s,4196,c)|0,n[Up>>2]=6,n[Up+4>>2]=0,n[c>>2]=n[Up>>2],n[c+4>>2]=n[Up+4>>2],Dg(s,4206,c)|0,n[Op>>2]=7,n[Op+4>>2]=0,n[c>>2]=n[Op>>2],n[c+4>>2]=n[Op+4>>2],Dg(s,4217,c)|0,n[bc>>2]=3,n[bc+4>>2]=0,n[c>>2]=n[bc>>2],n[c+4>>2]=n[bc+4>>2],JA(s,4235,c)|0,n[Mp>>2]=1,n[Mp+4>>2]=0,n[c>>2]=n[Mp>>2],n[c+4>>2]=n[Mp+4>>2],bF(s,4251,c)|0,n[bl>>2]=4,n[bl+4>>2]=0,n[c>>2]=n[bl>>2],n[c+4>>2]=n[bl+4>>2],JA(s,4263,c)|0,n[Xr>>2]=5,n[Xr+4>>2]=0,n[c>>2]=n[Xr>>2],n[c+4>>2]=n[Xr+4>>2],JA(s,4279,c)|0,n[Lp>>2]=6,n[Lp+4>>2]=0,n[c>>2]=n[Lp>>2],n[c+4>>2]=n[Lp+4>>2],JA(s,4293,c)|0,n[Np>>2]=7,n[Np+4>>2]=0,n[c>>2]=n[Np>>2],n[c+4>>2]=n[Np+4>>2],JA(s,4306,c)|0,n[Rp>>2]=8,n[Rp+4>>2]=0,n[c>>2]=n[Rp>>2],n[c+4>>2]=n[Rp+4>>2],JA(s,4323,c)|0,n[Tu>>2]=9,n[Tu+4>>2]=0,n[c>>2]=n[Tu>>2],n[c+4>>2]=n[Tu+4>>2],JA(s,4335,c)|0,n[Fu>>2]=2,n[Fu+4>>2]=0,n[c>>2]=n[Fu>>2],n[c+4>>2]=n[Fu+4>>2],bF(s,4353,c)|0,n[Tp>>2]=12,n[Tp+4>>2]=0,n[c>>2]=n[Tp>>2],n[c+4>>2]=n[Tp+4>>2],Pg(s,4363,c)|0,n[xl>>2]=1,n[xl+4>>2]=0,n[c>>2]=n[xl>>2],n[c+4>>2]=n[xl+4>>2],zA(s,4376,c)|0,n[Fp>>2]=2,n[Fp+4>>2]=0,n[c>>2]=n[Fp>>2],n[c+4>>2]=n[Fp+4>>2],zA(s,4388,c)|0,n[Qp>>2]=13,n[Qp+4>>2]=0,n[c>>2]=n[Qp>>2],n[c+4>>2]=n[Qp+4>>2],Pg(s,4402,c)|0,n[ya>>2]=14,n[ya+4>>2]=0,n[c>>2]=n[ya>>2],n[c+4>>2]=n[ya+4>>2],Pg(s,4411,c)|0,n[yo>>2]=15,n[yo+4>>2]=0,n[c>>2]=n[yo>>2],n[c+4>>2]=n[yo+4>>2],Pg(s,4421,c)|0,n[mo>>2]=16,n[mo+4>>2]=0,n[c>>2]=n[mo>>2],n[c+4>>2]=n[mo+4>>2],Pg(s,4433,c)|0,n[go>>2]=17,n[go+4>>2]=0,n[c>>2]=n[go>>2],n[c+4>>2]=n[go+4>>2],Pg(s,4446,c)|0,n[bn>>2]=18,n[bn+4>>2]=0,n[c>>2]=n[bn>>2],n[c+4>>2]=n[bn+4>>2],Pg(s,4458,c)|0,n[ir>>2]=3,n[ir+4>>2]=0,n[c>>2]=n[ir>>2],n[c+4>>2]=n[ir+4>>2],zA(s,4471,c)|0,n[Nr>>2]=1,n[Nr+4>>2]=0,n[c>>2]=n[Nr>>2],n[c+4>>2]=n[Nr+4>>2],iD(s,4486,c)|0,n[Pr>>2]=10,n[Pr+4>>2]=0,n[c>>2]=n[Pr>>2],n[c+4>>2]=n[Pr+4>>2],JA(s,4496,c)|0,n[Xt>>2]=11,n[Xt+4>>2]=0,n[c>>2]=n[Xt>>2],n[c+4>>2]=n[Xt+4>>2],JA(s,4508,c)|0,n[or>>2]=3,n[or+4>>2]=0,n[c>>2]=n[or>>2],n[c+4>>2]=n[or+4>>2],bF(s,4519,c)|0,n[Or>>2]=4,n[Or+4>>2]=0,n[c>>2]=n[Or>>2],n[c+4>>2]=n[Or+4>>2],Jve(s,4530,c)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[c>>2]=n[Lt>>2],n[c+4>>2]=n[Lt+4>>2],zve(s,4542,c)|0,n[qe>>2]=12,n[qe+4>>2]=0,n[c>>2]=n[qe>>2],n[c+4>>2]=n[qe+4>>2],Xve(s,4554,c)|0,n[Ue>>2]=13,n[Ue+4>>2]=0,n[c>>2]=n[Ue>>2],n[c+4>>2]=n[Ue+4>>2],Zve(s,4568,c)|0,n[at>>2]=2,n[at+4>>2]=0,n[c>>2]=n[at>>2],n[c+4>>2]=n[at+4>>2],$ve(s,4578,c)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[c>>2]=n[Xe>>2],n[c+4>>2]=n[Xe+4>>2],eDe(s,4587,c)|0,n[et>>2]=22,n[et+4>>2]=0,n[c>>2]=n[et>>2],n[c+4>>2]=n[et+4>>2],Tw(s,4602,c)|0,n[Fe>>2]=23,n[Fe+4>>2]=0,n[c>>2]=n[Fe>>2],n[c+4>>2]=n[Fe+4>>2],Tw(s,4619,c)|0,n[Oe>>2]=14,n[Oe+4>>2]=0,n[c>>2]=n[Oe>>2],n[c+4>>2]=n[Oe+4>>2],tDe(s,4629,c)|0,n[Ge>>2]=1,n[Ge+4>>2]=0,n[c>>2]=n[Ge>>2],n[c+4>>2]=n[Ge+4>>2],rDe(s,4637,c)|0,n[se>>2]=4,n[se+4>>2]=0,n[c>>2]=n[se>>2],n[c+4>>2]=n[se+4>>2],zA(s,4653,c)|0,n[q>>2]=5,n[q+4>>2]=0,n[c>>2]=n[q>>2],n[c+4>>2]=n[q+4>>2],zA(s,4669,c)|0,n[M>>2]=6,n[M+4>>2]=0,n[c>>2]=n[M>>2],n[c+4>>2]=n[M+4>>2],zA(s,4686,c)|0,n[O>>2]=7,n[O+4>>2]=0,n[c>>2]=n[O>>2],n[c+4>>2]=n[O+4>>2],zA(s,4701,c)|0,n[Q>>2]=8,n[Q+4>>2]=0,n[c>>2]=n[Q>>2],n[c+4>>2]=n[Q+4>>2],zA(s,4719,c)|0,n[k>>2]=9,n[k+4>>2]=0,n[c>>2]=n[k>>2],n[c+4>>2]=n[k+4>>2],zA(s,4736,c)|0,n[B>>2]=21,n[B+4>>2]=0,n[c>>2]=n[B>>2],n[c+4>>2]=n[B+4>>2],nDe(s,4754,c)|0,n[m>>2]=2,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],iD(s,4772,c)|0,n[d>>2]=3,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],iD(s,4790,c)|0,n[f>>2]=4,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],iD(s,4808,c)|0,C=l}function Gve(s,l){s=s|0,l=l|0;var c=0;c=cFe()|0,n[s>>2]=c,uFe(c,l),xp(n[s>>2]|0)}function Yve(s,l,c){return s=s|0,l=l|0,c=c|0,JQe(s,pn(l)|0,c,0),s|0}function Wve(s,l,c){return s=s|0,l=l|0,c=c|0,TQe(s,pn(l)|0,c,0),s|0}function Vve(s,l,c){return s=s|0,l=l|0,c=c|0,EQe(s,pn(l)|0,c,0),s|0}function Tw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nQe(s,l,d),C=f,s|0}function Kve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Oke(s,l,d),C=f,s|0}function bu(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Ike(s,l,d),C=f,s|0}function Dg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],oke(s,l,d),C=f,s|0}function Is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Gbe(s,l,d),C=f,s|0}function JA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xbe(s,l,d),C=f,s|0}function bF(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fbe(s,l,d),C=f,s|0}function Pg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Oxe(s,l,d),C=f,s|0}function zA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Ixe(s,l,d),C=f,s|0}function iD(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],oxe(s,l,d),C=f,s|0}function Jve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],GSe(s,l,d),C=f,s|0}function zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xSe(s,l,d),C=f,s|0}function Xve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pSe(s,l,d),C=f,s|0}function Zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZPe(s,l,d),C=f,s|0}function $ve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],NPe(s,l,d),C=f,s|0}function eDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yPe(s,l,d),C=f,s|0}function tDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rPe(s,l,d),C=f,s|0}function rDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ODe(s,l,d),C=f,s|0}function nDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],iDe(s,l,d),C=f,s|0}function iDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],sDe(s,c,d,1),C=f}function pn(s){return s=s|0,s|0}function sDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=kF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=oDe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,aDe(m,f)|0,f),C=d}function kF(){var s=0,l=0;if(o[7616]|0||(i5(9136),tr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9136)|0)){s=9136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));i5(9136)}return 9136}function oDe(s){return s=s|0,0}function aDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=kF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],n5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(uDe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function hn(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0;B=C,C=C+32|0,se=B+24|0,q=B+20|0,Q=B+16|0,M=B+12|0,O=B+8|0,k=B+4|0,Ge=B,n[q>>2]=l,n[Q>>2]=c,n[M>>2]=f,n[O>>2]=d,n[k>>2]=m,m=s+28|0,n[Ge>>2]=n[m>>2],n[se>>2]=n[Ge>>2],lDe(s+24|0,se,q,M,O,Q,k)|0,n[m>>2]=n[n[m>>2]>>2],C=B}function lDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,s=cDe(l)|0,l=Vt(24)|0,r5(l+4|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[s>>2],n[s>>2]=l,l|0}function cDe(s){return s=s|0,n[s>>2]|0}function r5(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function gr(s,l){return s=s|0,l=l|0,l|s|0}function n5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function uDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ADe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,fDe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],n5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,pDe(s,k),hDe(k),C=O;return}}function ADe(s){return s=s|0,357913941}function fDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function pDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function hDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function i5(s){s=s|0,mDe(s)}function gDe(s){s=s|0,dDe(s+24|0)}function Rr(s){return s=s|0,n[s>>2]|0}function dDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function mDe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,3,l,yDe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Vr(){return 9228}function yDe(){return 1140}function EDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=CDe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=wDe(l,f)|0,C=c,l|0}function Kr(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function CDe(s){return s=s|0,(n[(kF()|0)+24>>2]|0)+(s*12|0)|0}function wDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+48|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),tf[c&31](f,s),f=IDe(f)|0,C=d,f|0}function IDe(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=QF(s5()|0)|0,f?(FF(l,f),TF(c,l),BDe(s,c),s=RF(l)|0):s=vDe(s)|0,C=d,s|0}function s5(){var s=0;return o[7632]|0||(RDe(9184),tr(25,9184,U|0)|0,s=7632,n[s>>2]=1,n[s+4>>2]=0),9184}function QF(s){return s=s|0,n[s+36>>2]|0}function FF(s,l){s=s|0,l=l|0,n[s>>2]=l,n[s+4>>2]=s,n[s+8>>2]=0}function TF(s,l){s=s|0,l=l|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=0}function BDe(s,l){s=s|0,l=l|0,xDe(l,s,s+8|0,s+16|0,s+24|0,s+32|0,s+40|0)|0}function RF(s){return s=s|0,n[(n[s+4>>2]|0)+8>>2]|0}function vDe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;Q=C,C=C+16|0,c=Q+4|0,f=Q,d=Wa(8)|0,m=d,B=Vt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[s>>2],k=k+4|0,s=s+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Vt(8)|0,B=n[l>>2]|0,n[f>>2]=0,n[c>>2]=n[f>>2],o5(k,B,c),n[d>>2]=k,C=Q,m|0}function o5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Vt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1092,n[c+12>>2]=l,n[s+4>>2]=c}function DDe(s){s=s|0,Jm(s),gt(s)}function PDe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function SDe(s){s=s|0,gt(s)}function xDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,m=bDe(n[s>>2]|0,l,c,f,d,m,B)|0,B=s+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function bDe(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0;var k=0,Q=0;return k=C,C=C+16|0,Q=k,Va(Q),s=da(s)|0,B=kDe(s,+E[l>>3],+E[c>>3],+E[f>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Ka(Q),C=k,B|0}function kDe(s,l,c,f,d,m,B){s=s|0,l=+l,c=+c,f=+f,d=+d,m=+m,B=+B;var k=0;return k=Pl(QDe()|0)|0,l=+KA(l),c=+KA(c),f=+KA(f),d=+KA(d),m=+KA(m),Os(0,k|0,s|0,+l,+c,+f,+d,+m,+ +KA(B))|0}function QDe(){var s=0;return o[7624]|0||(FDe(9172),s=7624,n[s>>2]=1,n[s+4>>2]=0),9172}function FDe(s){s=s|0,Sl(s,TDe()|0,6)}function TDe(){return 1112}function RDe(s){s=s|0,Bp(s)}function NDe(s){s=s|0,a5(s+24|0),l5(s+16|0)}function a5(s){s=s|0,MDe(s)}function l5(s){s=s|0,LDe(s)}function LDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function MDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function Bp(s){s=s|0;var l=0;n[s+16>>2]=0,n[s+20>>2]=0,l=s+24|0,n[l>>2]=0,n[s+28>>2]=l,n[s+36>>2]=0,o[s+40>>0]=0,o[s+41>>0]=0}function ODe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UDe(s,c,d,0),C=f}function UDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=NF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=_De(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,HDe(m,f)|0,f),C=d}function NF(){var s=0,l=0;if(o[7640]|0||(u5(9232),tr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9232)|0)){s=9232,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));u5(9232)}return 9232}function _De(s){return s=s|0,0}function HDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=NF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],c5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(jDe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function c5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function jDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=qDe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,GDe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],c5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,YDe(s,k),WDe(k),C=O;return}}function qDe(s){return s=s|0,357913941}function GDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function YDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function WDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function u5(s){s=s|0,JDe(s)}function VDe(s){s=s|0,KDe(s+24|0)}function KDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function JDe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,1,l,zDe()|0,3),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function zDe(){return 1144}function XDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,B=m+8|0,k=m,Q=ZDe(s)|0,s=n[Q+4>>2]|0,n[k>>2]=n[Q>>2],n[k+4>>2]=s,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],$De(l,B,c,f,d),C=m}function ZDe(s){return s=s|0,(n[(NF()|0)+24>>2]|0)+(s*12|0)|0}function $De(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0,O=0;O=C,C=C+16|0,B=O+2|0,k=O+1|0,Q=O,m=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(m=n[(n[s>>2]|0)+m>>2]|0),ku(B,c),c=+Qu(B,c),ku(k,f),f=+Qu(k,f),XA(Q,d),Q=ZA(Q,d)|0,D7[m&1](s,c,f,Q),C=O}function ku(s,l){s=s|0,l=+l}function Qu(s,l){return s=s|0,l=+l,+ +tPe(l)}function XA(s,l){s=s|0,l=l|0}function ZA(s,l){return s=s|0,l=l|0,ePe(l)|0}function ePe(s){return s=s|0,s|0}function tPe(s){return s=+s,+s}function rPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nPe(s,c,d,1),C=f}function nPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=LF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=iPe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,sPe(m,f)|0,f),C=d}function LF(){var s=0,l=0;if(o[7648]|0||(f5(9268),tr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9268)|0)){s=9268,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));f5(9268)}return 9268}function iPe(s){return s=s|0,0}function sPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=LF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],A5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(oPe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function A5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function oPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=aPe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,lPe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],A5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,cPe(s,k),uPe(k),C=O;return}}function aPe(s){return s=s|0,357913941}function lPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function cPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function uPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function f5(s){s=s|0,pPe(s)}function APe(s){s=s|0,fPe(s+24|0)}function fPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function pPe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,4,l,hPe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function hPe(){return 1160}function gPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=dPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=mPe(l,f)|0,C=c,l|0}function dPe(s){return s=s|0,(n[(LF()|0)+24>>2]|0)+(s*12|0)|0}function mPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),p5(Ng[c&31](s)|0)|0}function p5(s){return s=s|0,s&1|0}function yPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],EPe(s,c,d,0),C=f}function EPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=MF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=CPe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,wPe(m,f)|0,f),C=d}function MF(){var s=0,l=0;if(o[7656]|0||(g5(9304),tr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9304)|0)){s=9304,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));g5(9304)}return 9304}function CPe(s){return s=s|0,0}function wPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=MF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],h5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(IPe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function h5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function IPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=BPe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,vPe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],h5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,DPe(s,k),PPe(k),C=O;return}}function BPe(s){return s=s|0,357913941}function vPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function DPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function PPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function g5(s){s=s|0,bPe(s)}function SPe(s){s=s|0,xPe(s+24|0)}function xPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function bPe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,5,l,kPe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function kPe(){return 1164}function QPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=FPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TPe(l,d,c),C=f}function FPe(s){return s=s|0,(n[(MF()|0)+24>>2]|0)+(s*12|0)|0}function TPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),vp(d,c),c=Dp(d,c)|0,tf[f&31](s,c),Pp(d),C=m}function vp(s,l){s=s|0,l=l|0,RPe(s,l)}function Dp(s,l){return s=s|0,l=l|0,s|0}function Pp(s){s=s|0,jA(s)}function RPe(s,l){s=s|0,l=l|0,OF(s,l)}function OF(s,l){s=s|0,l=l|0,n[s>>2]=l}function NPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],LPe(s,c,d,0),C=f}function LPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=UF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=MPe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,OPe(m,f)|0,f),C=d}function UF(){var s=0,l=0;if(o[7664]|0||(m5(9340),tr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9340)|0)){s=9340,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));m5(9340)}return 9340}function MPe(s){return s=s|0,0}function OPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=UF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],d5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(UPe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function d5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function UPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=_Pe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,HPe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],d5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,jPe(s,k),qPe(k),C=O;return}}function _Pe(s){return s=s|0,357913941}function HPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function jPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function qPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function m5(s){s=s|0,WPe(s)}function GPe(s){s=s|0,YPe(s+24|0)}function YPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function WPe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,4,l,VPe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VPe(){return 1180}function KPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=JPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=zPe(l,d,c)|0,C=f,c|0}function JPe(s){return s=s|0,(n[(UF()|0)+24>>2]|0)+(s*12|0)|0}function zPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Sg(d,c),d=xg(d,c)|0,d=sD(NT[f&15](s,d)|0)|0,C=m,d|0}function Sg(s,l){s=s|0,l=l|0}function xg(s,l){return s=s|0,l=l|0,XPe(l)|0}function sD(s){return s=s|0,s|0}function XPe(s){return s=s|0,s|0}function ZPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$Pe(s,c,d,0),C=f}function $Pe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=_F()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=eSe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,tSe(m,f)|0,f),C=d}function _F(){var s=0,l=0;if(o[7672]|0||(E5(9376),tr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9376)|0)){s=9376,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));E5(9376)}return 9376}function eSe(s){return s=s|0,0}function tSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=_F()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],y5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(rSe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function y5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function rSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=nSe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,iSe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],y5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,sSe(s,k),oSe(k),C=O;return}}function nSe(s){return s=s|0,357913941}function iSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function sSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function oSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function E5(s){s=s|0,cSe(s)}function aSe(s){s=s|0,lSe(s+24|0)}function lSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function cSe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,5,l,C5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function C5(){return 1196}function uSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=ASe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=fSe(l,f)|0,C=c,l|0}function ASe(s){return s=s|0,(n[(_F()|0)+24>>2]|0)+(s*12|0)|0}function fSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),sD(Ng[c&31](s)|0)|0}function pSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hSe(s,c,d,1),C=f}function hSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=HF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=gSe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,dSe(m,f)|0,f),C=d}function HF(){var s=0,l=0;if(o[7680]|0||(I5(9412),tr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9412)|0)){s=9412,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));I5(9412)}return 9412}function gSe(s){return s=s|0,0}function dSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=HF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],w5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(mSe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function w5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function mSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ySe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,ESe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],w5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,CSe(s,k),wSe(k),C=O;return}}function ySe(s){return s=s|0,357913941}function ESe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function CSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function wSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function I5(s){s=s|0,vSe(s)}function ISe(s){s=s|0,BSe(s+24|0)}function BSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function vSe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,6,l,B5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function B5(){return 1200}function DSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=PSe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=SSe(l,f)|0,C=c,l|0}function PSe(s){return s=s|0,(n[(HF()|0)+24>>2]|0)+(s*12|0)|0}function SSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),oD(Ng[c&31](s)|0)|0}function oD(s){return s=s|0,s|0}function xSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bSe(s,c,d,0),C=f}function bSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=jF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=kSe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,QSe(m,f)|0,f),C=d}function jF(){var s=0,l=0;if(o[7688]|0||(D5(9448),tr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9448)|0)){s=9448,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));D5(9448)}return 9448}function kSe(s){return s=s|0,0}function QSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=jF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],v5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(FSe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function v5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function FSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=TSe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,RSe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],v5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,NSe(s,k),LSe(k),C=O;return}}function TSe(s){return s=s|0,357913941}function RSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function NSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function LSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function D5(s){s=s|0,USe(s)}function MSe(s){s=s|0,OSe(s+24|0)}function OSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function USe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,6,l,P5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function P5(){return 1204}function _Se(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=HSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jSe(l,d,c),C=f}function HSe(s){return s=s|0,(n[(jF()|0)+24>>2]|0)+(s*12|0)|0}function jSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),qF(d,c),d=GF(d,c)|0,tf[f&31](s,d),C=m}function qF(s,l){s=s|0,l=l|0}function GF(s,l){return s=s|0,l=l|0,qSe(l)|0}function qSe(s){return s=s|0,s|0}function GSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YSe(s,c,d,0),C=f}function YSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=YF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=WSe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,VSe(m,f)|0,f),C=d}function YF(){var s=0,l=0;if(o[7696]|0||(x5(9484),tr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9484)|0)){s=9484,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));x5(9484)}return 9484}function WSe(s){return s=s|0,0}function VSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=YF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],S5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(KSe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function S5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function KSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=JSe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,zSe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],S5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,XSe(s,k),ZSe(k),C=O;return}}function JSe(s){return s=s|0,357913941}function zSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function XSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ZSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function x5(s){s=s|0,txe(s)}function $Se(s){s=s|0,exe(s+24|0)}function exe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function txe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,1,l,rxe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function rxe(){return 1212}function nxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=ixe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],sxe(l,m,c,f),C=d}function ixe(s){return s=s|0,(n[(YF()|0)+24>>2]|0)+(s*12|0)|0}function sxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),qF(m,c),m=GF(m,c)|0,Sg(B,f),B=xg(B,f)|0,_w[d&15](s,m,B),C=k}function oxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],axe(s,c,d,1),C=f}function axe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=WF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=lxe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,cxe(m,f)|0,f),C=d}function WF(){var s=0,l=0;if(o[7704]|0||(k5(9520),tr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9520)|0)){s=9520,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));k5(9520)}return 9520}function lxe(s){return s=s|0,0}function cxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=WF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],b5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(uxe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function b5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function uxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Axe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,fxe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],b5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,pxe(s,k),hxe(k),C=O;return}}function Axe(s){return s=s|0,357913941}function fxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function pxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function hxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function k5(s){s=s|0,mxe(s)}function gxe(s){s=s|0,dxe(s+24|0)}function dxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function mxe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,1,l,yxe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function yxe(){return 1224}function Exe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;return d=C,C=C+16|0,m=d+8|0,B=d,k=Cxe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],f=+wxe(l,m,c),C=d,+f}function Cxe(s){return s=s|0,(n[(WF()|0)+24>>2]|0)+(s*12|0)|0}function wxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),XA(d,c),d=ZA(d,c)|0,B=+xF(+S7[f&7](s,d)),C=m,+B}function Ixe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Bxe(s,c,d,1),C=f}function Bxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=VF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=vxe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Dxe(m,f)|0,f),C=d}function VF(){var s=0,l=0;if(o[7712]|0||(F5(9556),tr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9556)|0)){s=9556,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));F5(9556)}return 9556}function vxe(s){return s=s|0,0}function Dxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=VF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Q5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Pxe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function Q5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Pxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Sxe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,xxe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],Q5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,bxe(s,k),kxe(k),C=O;return}}function Sxe(s){return s=s|0,357913941}function xxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function bxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function kxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function F5(s){s=s|0,Txe(s)}function Qxe(s){s=s|0,Fxe(s+24|0)}function Fxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Txe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,5,l,Rxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Rxe(){return 1232}function Nxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=Lxe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=+Mxe(l,d),C=f,+c}function Lxe(s){return s=s|0,(n[(VF()|0)+24>>2]|0)+(s*12|0)|0}function Mxe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),+ +xF(+P7[c&15](s))}function Oxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Uxe(s,c,d,1),C=f}function Uxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=KF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=_xe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Hxe(m,f)|0,f),C=d}function KF(){var s=0,l=0;if(o[7720]|0||(R5(9592),tr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9592)|0)){s=9592,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));R5(9592)}return 9592}function _xe(s){return s=s|0,0}function Hxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=KF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],T5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(jxe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function T5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function jxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=qxe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,Gxe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],T5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Yxe(s,k),Wxe(k),C=O;return}}function qxe(s){return s=s|0,357913941}function Gxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Yxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Wxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function R5(s){s=s|0,Jxe(s)}function Vxe(s){s=s|0,Kxe(s+24|0)}function Kxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Jxe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,7,l,zxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function zxe(){return 1276}function Xxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Zxe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=$xe(l,f)|0,C=c,l|0}function Zxe(s){return s=s|0,(n[(KF()|0)+24>>2]|0)+(s*12|0)|0}function $xe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+16|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),tf[c&31](f,s),f=N5(f)|0,C=d,f|0}function N5(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=QF(L5()|0)|0,f?(FF(l,f),TF(c,l),ebe(s,c),s=RF(l)|0):s=tbe(s)|0,C=d,s|0}function L5(){var s=0;return o[7736]|0||(Abe(9640),tr(25,9640,U|0)|0,s=7736,n[s>>2]=1,n[s+4>>2]=0),9640}function ebe(s,l){s=s|0,l=l|0,sbe(l,s,s+8|0)|0}function tbe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Vt(16)|0,n[k>>2]=n[s>>2],n[k+4>>2]=n[s+4>>2],n[k+8>>2]=n[s+8>>2],n[k+12>>2]=n[s+12>>2],m=l+4|0,n[m>>2]=k,s=Vt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],JF(s,m,d),n[f>>2]=s,C=c,l|0}function JF(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Vt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1244,n[c+12>>2]=l,n[s+4>>2]=c}function rbe(s){s=s|0,Jm(s),gt(s)}function nbe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function ibe(s){s=s|0,gt(s)}function sbe(s,l,c){return s=s|0,l=l|0,c=c|0,l=obe(n[s>>2]|0,l,c)|0,c=s+4|0,n[(n[c>>2]|0)+8>>2]=l,n[(n[c>>2]|0)+8>>2]|0}function obe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return f=C,C=C+16|0,d=f,Va(d),s=da(s)|0,c=abe(s,n[l>>2]|0,+E[c>>3])|0,Ka(d),C=f,c|0}function abe(s,l,c){s=s|0,l=l|0,c=+c;var f=0;return f=Pl(lbe()|0)|0,l=SF(l)|0,ml(0,f|0,s|0,l|0,+ +KA(c))|0}function lbe(){var s=0;return o[7728]|0||(cbe(9628),s=7728,n[s>>2]=1,n[s+4>>2]=0),9628}function cbe(s){s=s|0,Sl(s,ube()|0,2)}function ube(){return 1264}function Abe(s){s=s|0,Bp(s)}function fbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pbe(s,c,d,1),C=f}function pbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=zF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=hbe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,gbe(m,f)|0,f),C=d}function zF(){var s=0,l=0;if(o[7744]|0||(O5(9684),tr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9684)|0)){s=9684,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));O5(9684)}return 9684}function hbe(s){return s=s|0,0}function gbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=zF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],M5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(dbe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function M5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function dbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=mbe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,ybe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],M5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Ebe(s,k),Cbe(k),C=O;return}}function mbe(s){return s=s|0,357913941}function ybe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Ebe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Cbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function O5(s){s=s|0,Bbe(s)}function wbe(s){s=s|0,Ibe(s+24|0)}function Ibe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Bbe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,5,l,vbe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function vbe(){return 1280}function Dbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=Pbe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=Sbe(l,d,c)|0,C=f,c|0}function Pbe(s){return s=s|0,(n[(zF()|0)+24>>2]|0)+(s*12|0)|0}function Sbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return B=C,C=C+32|0,d=B,m=B+16|0,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),XA(m,c),m=ZA(m,c)|0,_w[f&15](d,s,m),m=N5(d)|0,C=B,m|0}function xbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bbe(s,c,d,1),C=f}function bbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=XF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=kbe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Qbe(m,f)|0,f),C=d}function XF(){var s=0,l=0;if(o[7752]|0||(_5(9720),tr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9720)|0)){s=9720,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));_5(9720)}return 9720}function kbe(s){return s=s|0,0}function Qbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=XF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],U5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Fbe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function U5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Fbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Tbe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,Rbe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],U5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Nbe(s,k),Lbe(k),C=O;return}}function Tbe(s){return s=s|0,357913941}function Rbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Nbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Lbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function _5(s){s=s|0,Ube(s)}function Mbe(s){s=s|0,Obe(s+24|0)}function Obe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Ube(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,8,l,_be()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function _be(){return 1288}function Hbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=jbe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=qbe(l,f)|0,C=c,l|0}function jbe(s){return s=s|0,(n[(XF()|0)+24>>2]|0)+(s*12|0)|0}function qbe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),t5(Ng[c&31](s)|0)|0}function Gbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Ybe(s,c,d,0),C=f}function Ybe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=ZF()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=Wbe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Vbe(m,f)|0,f),C=d}function ZF(){var s=0,l=0;if(o[7760]|0||(j5(9756),tr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9756)|0)){s=9756,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));j5(9756)}return 9756}function Wbe(s){return s=s|0,0}function Vbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=ZF()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],H5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Kbe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function H5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Kbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Jbe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,zbe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],H5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Xbe(s,k),Zbe(k),C=O;return}}function Jbe(s){return s=s|0,357913941}function zbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Xbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Zbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function j5(s){s=s|0,tke(s)}function $be(s){s=s|0,eke(s+24|0)}function eke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function tke(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,8,l,rke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function rke(){return 1292}function nke(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=ike(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ske(l,d,c),C=f}function ike(s){return s=s|0,(n[(ZF()|0)+24>>2]|0)+(s*12|0)|0}function ske(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ku(d,c),c=+Qu(d,c),B7[f&31](s,c),C=m}function oke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ake(s,c,d,0),C=f}function ake(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=$F()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=lke(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,cke(m,f)|0,f),C=d}function $F(){var s=0,l=0;if(o[7768]|0||(G5(9792),tr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9792)|0)){s=9792,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));G5(9792)}return 9792}function lke(s){return s=s|0,0}function cke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=$F()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],q5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(uke(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function q5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function uke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ake(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,fke(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],q5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,pke(s,k),hke(k),C=O;return}}function Ake(s){return s=s|0,357913941}function fke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function pke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function hke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function G5(s){s=s|0,mke(s)}function gke(s){s=s|0,dke(s+24|0)}function dke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function mke(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,1,l,yke()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function yke(){return 1300}function Eke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=Cke(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],wke(l,m,c,f),C=d}function Cke(s){return s=s|0,(n[($F()|0)+24>>2]|0)+(s*12|0)|0}function wke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),XA(m,c),m=ZA(m,c)|0,ku(B,f),f=+Qu(B,f),Q7[d&15](s,m,f),C=k}function Ike(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Bke(s,c,d,0),C=f}function Bke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=eT()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=vke(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Dke(m,f)|0,f),C=d}function eT(){var s=0,l=0;if(o[7776]|0||(W5(9828),tr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9828)|0)){s=9828,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));W5(9828)}return 9828}function vke(s){return s=s|0,0}function Dke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=eT()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Y5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Pke(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function Y5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Pke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ske(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,xke(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],Y5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,bke(s,k),kke(k),C=O;return}}function Ske(s){return s=s|0,357913941}function xke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function bke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function kke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function W5(s){s=s|0,Tke(s)}function Qke(s){s=s|0,Fke(s+24|0)}function Fke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Tke(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,7,l,Rke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Rke(){return 1312}function Nke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Lke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Mke(l,d,c),C=f}function Lke(s){return s=s|0,(n[(eT()|0)+24>>2]|0)+(s*12|0)|0}function Mke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),XA(d,c),d=ZA(d,c)|0,tf[f&31](s,d),C=m}function Oke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Uke(s,c,d,0),C=f}function Uke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=tT()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=_ke(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Hke(m,f)|0,f),C=d}function tT(){var s=0,l=0;if(o[7784]|0||(K5(9864),tr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9864)|0)){s=9864,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));K5(9864)}return 9864}function _ke(s){return s=s|0,0}function Hke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=tT()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],V5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(jke(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function V5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function jke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=qke(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,Gke(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],V5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Yke(s,k),Wke(k),C=O;return}}function qke(s){return s=s|0,357913941}function Gke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Yke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Wke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function K5(s){s=s|0,Jke(s)}function Vke(s){s=s|0,Kke(s+24|0)}function Kke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Jke(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,8,l,zke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function zke(){return 1320}function Xke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Zke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$ke(l,d,c),C=f}function Zke(s){return s=s|0,(n[(tT()|0)+24>>2]|0)+(s*12|0)|0}function $ke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),eQe(d,c),d=tQe(d,c)|0,tf[f&31](s,d),C=m}function eQe(s,l){s=s|0,l=l|0}function tQe(s,l){return s=s|0,l=l|0,rQe(l)|0}function rQe(s){return s=s|0,s|0}function nQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],iQe(s,c,d,0),C=f}function iQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=rT()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=sQe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,oQe(m,f)|0,f),C=d}function rT(){var s=0,l=0;if(o[7792]|0||(z5(9900),tr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9900)|0)){s=9900,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));z5(9900)}return 9900}function sQe(s){return s=s|0,0}function oQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=rT()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],J5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(aQe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function J5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function aQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=lQe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,cQe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],J5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,uQe(s,k),AQe(k),C=O;return}}function lQe(s){return s=s|0,357913941}function cQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function uQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function AQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function z5(s){s=s|0,hQe(s)}function fQe(s){s=s|0,pQe(s+24|0)}function pQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function hQe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,22,l,gQe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function gQe(){return 1344}function dQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;c=C,C=C+16|0,f=c+8|0,d=c,m=mQe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],yQe(l,f),C=c}function mQe(s){return s=s|0,(n[(rT()|0)+24>>2]|0)+(s*12|0)|0}function yQe(s,l){s=s|0,l=l|0;var c=0;c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),ef[c&127](s)}function EQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=nT()|0,s=CQe(c)|0,hn(m,l,d,s,wQe(c,f)|0,f)}function nT(){var s=0,l=0;if(o[7800]|0||(Z5(9936),tr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9936)|0)){s=9936,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Z5(9936)}return 9936}function CQe(s){return s=s|0,s|0}function wQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=nT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(X5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(IQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function X5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function IQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=BQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,vQe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,X5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,DQe(s,d),PQe(d),C=k;return}}function BQe(s){return s=s|0,536870911}function vQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function DQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function PQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function Z5(s){s=s|0,bQe(s)}function SQe(s){s=s|0,xQe(s+24|0)}function xQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function bQe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,23,l,P5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function kQe(s,l){s=s|0,l=l|0,FQe(n[(QQe(s)|0)>>2]|0,l)}function QQe(s){return s=s|0,(n[(nT()|0)+24>>2]|0)+(s<<3)|0}function FQe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,qF(f,l),l=GF(f,l)|0,ef[s&127](l),C=c}function TQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=iT()|0,s=RQe(c)|0,hn(m,l,d,s,NQe(c,f)|0,f)}function iT(){var s=0,l=0;if(o[7808]|0||(e9(9972),tr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(Rr(9972)|0)){s=9972,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));e9(9972)}return 9972}function RQe(s){return s=s|0,s|0}function NQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=iT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?($5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(LQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function $5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function LQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=MQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,OQe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,$5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,UQe(s,d),_Qe(d),C=k;return}}function MQe(s){return s=s|0,536870911}function OQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function UQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function _Qe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function e9(s){s=s|0,qQe(s)}function HQe(s){s=s|0,jQe(s+24|0)}function jQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function qQe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,9,l,GQe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function GQe(){return 1348}function YQe(s,l){return s=s|0,l=l|0,VQe(n[(WQe(s)|0)>>2]|0,l)|0}function WQe(s){return s=s|0,(n[(iT()|0)+24>>2]|0)+(s<<3)|0}function VQe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,t9(f,l),l=r9(f,l)|0,l=sD(Ng[s&31](l)|0)|0,C=c,l|0}function t9(s,l){s=s|0,l=l|0}function r9(s,l){return s=s|0,l=l|0,KQe(l)|0}function KQe(s){return s=s|0,s|0}function JQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=sT()|0,s=zQe(c)|0,hn(m,l,d,s,XQe(c,f)|0,f)}function sT(){var s=0,l=0;if(o[7816]|0||(i9(10008),tr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10008)|0)){s=10008,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));i9(10008)}return 10008}function zQe(s){return s=s|0,s|0}function XQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=sT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(n9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(ZQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function n9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function ZQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=$Qe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,eFe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,n9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,tFe(s,d),rFe(d),C=k;return}}function $Qe(s){return s=s|0,536870911}function eFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function tFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function rFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function i9(s){s=s|0,sFe(s)}function nFe(s){s=s|0,iFe(s+24|0)}function iFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function sFe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,15,l,C5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function oFe(s){return s=s|0,lFe(n[(aFe(s)|0)>>2]|0)|0}function aFe(s){return s=s|0,(n[(sT()|0)+24>>2]|0)+(s<<3)|0}function lFe(s){return s=s|0,sD(CD[s&7]()|0)|0}function cFe(){var s=0;return o[7832]|0||(mFe(10052),tr(25,10052,U|0)|0,s=7832,n[s>>2]=1,n[s+4>>2]=0),10052}function uFe(s,l){s=s|0,l=l|0,n[s>>2]=AFe()|0,n[s+4>>2]=fFe()|0,n[s+12>>2]=l,n[s+8>>2]=pFe()|0,n[s+32>>2]=2}function AFe(){return 11709}function fFe(){return 1188}function pFe(){return aD()|0}function hFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Sp(f,896)|0)==512?c|0&&(gFe(c),gt(c)):l|0&&(Pu(l),gt(l))}function Sp(s,l){return s=s|0,l=l|0,l&s|0}function gFe(s){s=s|0,s=n[s+4>>2]|0,s|0&&bp(s)}function aD(){var s=0;return o[7824]|0||(n[2511]=dFe()|0,n[2512]=0,s=7824,n[s>>2]=1,n[s+4>>2]=0),10044}function dFe(){return 0}function mFe(s){s=s|0,Bp(s)}function yFe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0;l=C,C=C+32|0,c=l+24|0,m=l+16|0,d=l+8|0,f=l,EFe(s,4827),CFe(s,4834,3)|0,wFe(s,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],IFe(s,4841,c)|0,n[d>>2]=1,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],BFe(s,4871,c)|0,n[f>>2]=10,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],vFe(s,4891,c)|0,C=l}function EFe(s,l){s=s|0,l=l|0;var c=0;c=rRe()|0,n[s>>2]=c,nRe(c,l),xp(n[s>>2]|0)}function CFe(s,l,c){return s=s|0,l=l|0,c=c|0,_Te(s,pn(l)|0,c,0),s|0}function wFe(s,l,c){return s=s|0,l=l|0,c=c|0,DTe(s,pn(l)|0,c,0),s|0}function IFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],oTe(s,l,d),C=f,s|0}function BFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],HFe(s,l,d),C=f,s|0}function vFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],DFe(s,l,d),C=f,s|0}function DFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PFe(s,c,d,1),C=f}function PFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=oT()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=SFe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,xFe(m,f)|0,f),C=d}function oT(){var s=0,l=0;if(o[7840]|0||(o9(10100),tr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10100)|0)){s=10100,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o9(10100)}return 10100}function SFe(s){return s=s|0,0}function xFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=oT()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],s9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(bFe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function s9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function bFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=kFe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,QFe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],s9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,FFe(s,k),TFe(k),C=O;return}}function kFe(s){return s=s|0,357913941}function QFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function FFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function TFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function o9(s){s=s|0,LFe(s)}function RFe(s){s=s|0,NFe(s+24|0)}function NFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function LFe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,6,l,MFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function MFe(){return 1364}function OFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=UFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=_Fe(l,d,c)|0,C=f,c|0}function UFe(s){return s=s|0,(n[(oT()|0)+24>>2]|0)+(s*12|0)|0}function _Fe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),XA(d,c),d=ZA(d,c)|0,d=p5(NT[f&15](s,d)|0)|0,C=m,d|0}function HFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jFe(s,c,d,0),C=f}function jFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=aT()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=qFe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,GFe(m,f)|0,f),C=d}function aT(){var s=0,l=0;if(o[7848]|0||(l9(10136),tr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10136)|0)){s=10136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));l9(10136)}return 10136}function qFe(s){return s=s|0,0}function GFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=aT()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],a9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(YFe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function a9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function YFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=WFe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,VFe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],a9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,KFe(s,k),JFe(k),C=O;return}}function WFe(s){return s=s|0,357913941}function VFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function KFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function JFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function l9(s){s=s|0,ZFe(s)}function zFe(s){s=s|0,XFe(s+24|0)}function XFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function ZFe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,9,l,$Fe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function $Fe(){return 1372}function eTe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=tTe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rTe(l,d,c),C=f}function tTe(s){return s=s|0,(n[(aT()|0)+24>>2]|0)+(s*12|0)|0}function rTe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=Ze;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),nTe(d,c),B=y(iTe(d,c)),I7[f&1](s,B),C=m}function nTe(s,l){s=s|0,l=+l}function iTe(s,l){return s=s|0,l=+l,y(sTe(l))}function sTe(s){return s=+s,y(s)}function oTe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aTe(s,c,d,0),C=f}function aTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,O=0,M=0;d=C,C=C+32|0,m=d+16|0,M=d+8|0,k=d,O=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=lT()|0,n[M>>2]=O,n[M+4>>2]=Q,n[m>>2]=n[M>>2],n[m+4>>2]=n[M+4>>2],c=lTe(m)|0,n[k>>2]=O,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,cTe(m,f)|0,f),C=d}function lT(){var s=0,l=0;if(o[7856]|0||(u9(10172),tr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10172)|0)){s=10172,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));u9(10172)}return 10172}function lTe(s){return s=s|0,0}function cTe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0;return M=C,C=C+32|0,d=M+24|0,B=M+16|0,k=M,Q=M+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=lT()|0,O=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],c9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(uTe(O,k,Q),s=n[l>>2]|0),C=M,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function c9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function uTe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;if(O=C,C=C+48|0,f=O+32|0,B=O+24|0,k=O,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ATe(s)|0,m>>>0<d>>>0)zr(s);else{M=n[s>>2]|0,se=((n[s+8>>2]|0)-M|0)/12|0,q=se<<1,fTe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-M|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],c9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,pTe(s,k),hTe(k),C=O;return}}function ATe(s){return s=s|0,357913941}function fTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Tt();else{d=Vt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function pTe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function hTe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function u9(s){s=s|0,mTe(s)}function gTe(s){s=s|0,dTe(s+24|0)}function dTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function mTe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,2,3,l,yTe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function yTe(){return 1380}function ETe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=CTe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],wTe(l,m,c,f),C=d}function CTe(s){return s=s|0,(n[(lT()|0)+24>>2]|0)+(s*12|0)|0}function wTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),XA(m,c),m=ZA(m,c)|0,ITe(B,f),B=BTe(B,f)|0,_w[d&15](s,m,B),C=k}function ITe(s,l){s=s|0,l=l|0}function BTe(s,l){return s=s|0,l=l|0,vTe(l)|0}function vTe(s){return s=s|0,(s|0)!=0|0}function DTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=cT()|0,s=PTe(c)|0,hn(m,l,d,s,STe(c,f)|0,f)}function cT(){var s=0,l=0;if(o[7864]|0||(f9(10208),tr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10208)|0)){s=10208,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));f9(10208)}return 10208}function PTe(s){return s=s|0,s|0}function STe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=cT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(A9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(xTe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function A9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function xTe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=bTe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,kTe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,A9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,QTe(s,d),FTe(d),C=k;return}}function bTe(s){return s=s|0,536870911}function kTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function QTe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function FTe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function f9(s){s=s|0,NTe(s)}function TTe(s){s=s|0,RTe(s+24|0)}function RTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function NTe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,24,l,LTe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function LTe(){return 1392}function MTe(s,l){s=s|0,l=l|0,UTe(n[(OTe(s)|0)>>2]|0,l)}function OTe(s){return s=s|0,(n[(cT()|0)+24>>2]|0)+(s<<3)|0}function UTe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,t9(f,l),l=r9(f,l)|0,ef[s&127](l),C=c}function _Te(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=uT()|0,s=HTe(c)|0,hn(m,l,d,s,jTe(c,f)|0,f)}function uT(){var s=0,l=0;if(o[7872]|0||(h9(10244),tr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10244)|0)){s=10244,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));h9(10244)}return 10244}function HTe(s){return s=s|0,s|0}function jTe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=uT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(p9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(qTe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function p9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function qTe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=GTe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,YTe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,p9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,WTe(s,d),VTe(d),C=k;return}}function GTe(s){return s=s|0,536870911}function YTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function WTe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function VTe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function h9(s){s=s|0,zTe(s)}function KTe(s){s=s|0,JTe(s+24|0)}function JTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function zTe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,16,l,XTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function XTe(){return 1400}function ZTe(s){return s=s|0,eRe(n[($Te(s)|0)>>2]|0)|0}function $Te(s){return s=s|0,(n[(uT()|0)+24>>2]|0)+(s<<3)|0}function eRe(s){return s=s|0,tRe(CD[s&7]()|0)|0}function tRe(s){return s=s|0,s|0}function rRe(){var s=0;return o[7880]|0||(cRe(10280),tr(25,10280,U|0)|0,s=7880,n[s>>2]=1,n[s+4>>2]=0),10280}function nRe(s,l){s=s|0,l=l|0,n[s>>2]=iRe()|0,n[s+4>>2]=sRe()|0,n[s+12>>2]=l,n[s+8>>2]=oRe()|0,n[s+32>>2]=4}function iRe(){return 11711}function sRe(){return 1356}function oRe(){return aD()|0}function aRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Sp(f,896)|0)==512?c|0&&(lRe(c),gt(c)):l|0&&(vg(l),gt(l))}function lRe(s){s=s|0,s=n[s+4>>2]|0,s|0&&bp(s)}function cRe(s){s=s|0,Bp(s)}function uRe(s){s=s|0,ARe(s,4920),fRe(s)|0,pRe(s)|0}function ARe(s,l){s=s|0,l=l|0;var c=0;c=L5()|0,n[s>>2]=c,RRe(c,l),xp(n[s>>2]|0)}function fRe(s){s=s|0;var l=0;return l=n[s>>2]|0,bg(l,vRe()|0),s|0}function pRe(s){s=s|0;var l=0;return l=n[s>>2]|0,bg(l,hRe()|0),s|0}function hRe(){var s=0;return o[7888]|0||(g9(10328),tr(53,10328,U|0)|0,s=7888,n[s>>2]=1,n[s+4>>2]=0),Rr(10328)|0||g9(10328),10328}function bg(s,l){s=s|0,l=l|0,hn(s,0,l,0,0,0)}function g9(s){s=s|0,mRe(s),kg(s,10)}function gRe(s){s=s|0,dRe(s+24|0)}function dRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function mRe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,5,1,l,wRe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function yRe(s,l,c){s=s|0,l=l|0,c=+c,ERe(s,l,c)}function kg(s,l){s=s|0,l=l|0,n[s+20>>2]=l}function ERe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,m=f+8|0,k=f+13|0,d=f,B=f+12|0,XA(k,l),n[m>>2]=ZA(k,l)|0,ku(B,c),E[d>>3]=+Qu(B,c),CRe(s,m,d),C=f}function CRe(s,l,c){s=s|0,l=l|0,c=c|0,Y(s+8|0,n[l>>2]|0,+E[c>>3]),o[s+24>>0]=1}function wRe(){return 1404}function IRe(s,l){return s=s|0,l=+l,BRe(s,l)|0}function BRe(s,l){s=s|0,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,m=f+4|0,B=f+8|0,k=f,d=Wa(8)|0,c=d,Q=Vt(16)|0,XA(m,s),s=ZA(m,s)|0,ku(B,l),Y(Q,s,+Qu(B,l)),B=c+4|0,n[B>>2]=Q,s=Vt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],JF(s,B,m),n[d>>2]=s,C=f,c|0}function vRe(){var s=0;return o[7896]|0||(d9(10364),tr(54,10364,U|0)|0,s=7896,n[s>>2]=1,n[s+4>>2]=0),Rr(10364)|0||d9(10364),10364}function d9(s){s=s|0,SRe(s),kg(s,55)}function DRe(s){s=s|0,PRe(s+24|0)}function PRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function SRe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,5,4,l,QRe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xRe(s){s=s|0,bRe(s)}function bRe(s){s=s|0,kRe(s)}function kRe(s){s=s|0,m9(s+8|0),o[s+24>>0]=1}function m9(s){s=s|0,n[s>>2]=0,E[s+8>>3]=0}function QRe(){return 1424}function FRe(){return TRe()|0}function TRe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Vt(16)|0,m9(f),m=s+4|0,n[m>>2]=f,f=Vt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],JF(f,m,d),n[c>>2]=f,C=l,s|0}function RRe(s,l){s=s|0,l=l|0,n[s>>2]=NRe()|0,n[s+4>>2]=LRe()|0,n[s+12>>2]=l,n[s+8>>2]=MRe()|0,n[s+32>>2]=5}function NRe(){return 11710}function LRe(){return 1416}function MRe(){return lD()|0}function ORe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Sp(f,896)|0)==512?c|0&&(URe(c),gt(c)):l|0&&gt(l)}function URe(s){s=s|0,s=n[s+4>>2]|0,s|0&&bp(s)}function lD(){var s=0;return o[7904]|0||(n[2600]=_Re()|0,n[2601]=0,s=7904,n[s>>2]=1,n[s+4>>2]=0),10400}function _Re(){return n[357]|0}function HRe(s){s=s|0,jRe(s,4926),qRe(s)|0}function jRe(s,l){s=s|0,l=l|0;var c=0;c=s5()|0,n[s>>2]=c,eNe(c,l),xp(n[s>>2]|0)}function qRe(s){s=s|0;var l=0;return l=n[s>>2]|0,bg(l,GRe()|0),s|0}function GRe(){var s=0;return o[7912]|0||(y9(10412),tr(56,10412,U|0)|0,s=7912,n[s>>2]=1,n[s+4>>2]=0),Rr(10412)|0||y9(10412),10412}function y9(s){s=s|0,VRe(s),kg(s,57)}function YRe(s){s=s|0,WRe(s+24|0)}function WRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function VRe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,5,5,l,XRe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function KRe(s){s=s|0,JRe(s)}function JRe(s){s=s|0,zRe(s)}function zRe(s){s=s|0;var l=0,c=0;l=s+8|0,c=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(c|0));o[s+56>>0]=1}function XRe(){return 1432}function ZRe(){return $Re()|0}function $Re(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0;B=C,C=C+16|0,s=B+4|0,l=B,c=Wa(8)|0,f=c,d=Vt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=f+4|0,n[m>>2]=d,k=Vt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[s>>2]=n[l>>2],o5(k,m,s),n[c>>2]=k,C=B,f|0}function eNe(s,l){s=s|0,l=l|0,n[s>>2]=tNe()|0,n[s+4>>2]=rNe()|0,n[s+12>>2]=l,n[s+8>>2]=nNe()|0,n[s+32>>2]=6}function tNe(){return 11704}function rNe(){return 1436}function nNe(){return lD()|0}function iNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Sp(f,896)|0)==512?c|0&&(sNe(c),gt(c)):l|0&&gt(l)}function sNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&bp(s)}function oNe(s){s=s|0,aNe(s,4933),lNe(s)|0,cNe(s)|0}function aNe(s,l){s=s|0,l=l|0;var c=0;c=TNe()|0,n[s>>2]=c,RNe(c,l),xp(n[s>>2]|0)}function lNe(s){s=s|0;var l=0;return l=n[s>>2]|0,bg(l,BNe()|0),s|0}function cNe(s){s=s|0;var l=0;return l=n[s>>2]|0,bg(l,uNe()|0),s|0}function uNe(){var s=0;return o[7920]|0||(E9(10452),tr(58,10452,U|0)|0,s=7920,n[s>>2]=1,n[s+4>>2]=0),Rr(10452)|0||E9(10452),10452}function E9(s){s=s|0,pNe(s),kg(s,1)}function ANe(s){s=s|0,fNe(s+24|0)}function fNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function pNe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,5,1,l,mNe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function hNe(s,l,c){s=s|0,l=+l,c=+c,gNe(s,l,c)}function gNe(s,l,c){s=s|0,l=+l,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,m=f+8|0,k=f+17|0,d=f,B=f+16|0,ku(k,l),E[m>>3]=+Qu(k,l),ku(B,c),E[d>>3]=+Qu(B,c),dNe(s,m,d),C=f}function dNe(s,l,c){s=s|0,l=l|0,c=c|0,C9(s+8|0,+E[l>>3],+E[c>>3]),o[s+24>>0]=1}function C9(s,l,c){s=s|0,l=+l,c=+c,E[s>>3]=l,E[s+8>>3]=c}function mNe(){return 1472}function yNe(s,l){return s=+s,l=+l,ENe(s,l)|0}function ENe(s,l){s=+s,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,B=f+4|0,k=f+8|0,Q=f,d=Wa(8)|0,c=d,m=Vt(16)|0,ku(B,s),s=+Qu(B,s),ku(k,l),C9(m,s,+Qu(k,l)),k=c+4|0,n[k>>2]=m,m=Vt(8)|0,k=n[k>>2]|0,n[Q>>2]=0,n[B>>2]=n[Q>>2],w9(m,k,B),n[d>>2]=m,C=f,c|0}function w9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Vt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1452,n[c+12>>2]=l,n[s+4>>2]=c}function CNe(s){s=s|0,Jm(s),gt(s)}function wNe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function INe(s){s=s|0,gt(s)}function BNe(){var s=0;return o[7928]|0||(I9(10488),tr(59,10488,U|0)|0,s=7928,n[s>>2]=1,n[s+4>>2]=0),Rr(10488)|0||I9(10488),10488}function I9(s){s=s|0,PNe(s),kg(s,60)}function vNe(s){s=s|0,DNe(s+24|0)}function DNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function PNe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,5,6,l,kNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function SNe(s){s=s|0,xNe(s)}function xNe(s){s=s|0,bNe(s)}function bNe(s){s=s|0,B9(s+8|0),o[s+24>>0]=1}function B9(s){s=s|0,n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,n[s+12>>2]=0}function kNe(){return 1492}function QNe(){return FNe()|0}function FNe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Vt(16)|0,B9(f),m=s+4|0,n[m>>2]=f,f=Vt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],w9(f,m,d),n[c>>2]=f,C=l,s|0}function TNe(){var s=0;return o[7936]|0||(_Ne(10524),tr(25,10524,U|0)|0,s=7936,n[s>>2]=1,n[s+4>>2]=0),10524}function RNe(s,l){s=s|0,l=l|0,n[s>>2]=NNe()|0,n[s+4>>2]=LNe()|0,n[s+12>>2]=l,n[s+8>>2]=MNe()|0,n[s+32>>2]=7}function NNe(){return 11700}function LNe(){return 1484}function MNe(){return lD()|0}function ONe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Sp(f,896)|0)==512?c|0&&(UNe(c),gt(c)):l|0&&gt(l)}function UNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&bp(s)}function _Ne(s){s=s|0,Bp(s)}function HNe(s,l,c){s=s|0,l=l|0,c=c|0,s=pn(l)|0,l=jNe(c)|0,c=qNe(c,0)|0,ELe(s,l,c,AT()|0,0)}function jNe(s){return s=s|0,s|0}function qNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=AT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(D9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(zNe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function AT(){var s=0,l=0;if(o[7944]|0||(v9(10568),tr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10568)|0)){s=10568,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));v9(10568)}return 10568}function v9(s){s=s|0,WNe(s)}function GNe(s){s=s|0,YNe(s+24|0)}function YNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function WNe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,17,l,B5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VNe(s){return s=s|0,JNe(n[(KNe(s)|0)>>2]|0)|0}function KNe(s){return s=s|0,(n[(AT()|0)+24>>2]|0)+(s<<3)|0}function JNe(s){return s=s|0,oD(CD[s&7]()|0)|0}function D9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function zNe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=XNe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,ZNe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,D9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,$Ne(s,d),eLe(d),C=k;return}}function XNe(s){return s=s|0,536870911}function ZNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function $Ne(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function eLe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function tLe(){rLe()}function rLe(){nLe(10604)}function nLe(s){s=s|0,iLe(s,4955)}function iLe(s,l){s=s|0,l=l|0;var c=0;c=sLe()|0,n[s>>2]=c,oLe(c,l),xp(n[s>>2]|0)}function sLe(){var s=0;return o[7952]|0||(gLe(10612),tr(25,10612,U|0)|0,s=7952,n[s>>2]=1,n[s+4>>2]=0),10612}function oLe(s,l){s=s|0,l=l|0,n[s>>2]=uLe()|0,n[s+4>>2]=ALe()|0,n[s+12>>2]=l,n[s+8>>2]=fLe()|0,n[s+32>>2]=8}function xp(s){s=s|0;var l=0,c=0;l=C,C=C+16|0,c=l,Gm()|0,n[c>>2]=s,aLe(10608,c),C=l}function Gm(){return o[11714]|0||(n[2652]=0,tr(62,10608,U|0)|0,o[11714]=1),10608}function aLe(s,l){s=s|0,l=l|0;var c=0;c=Vt(8)|0,n[c+4>>2]=n[l>>2],n[c>>2]=n[s>>2],n[s>>2]=c}function lLe(s){s=s|0,cLe(s)}function cLe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function uLe(){return 11715}function ALe(){return 1496}function fLe(){return aD()|0}function pLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Sp(f,896)|0)==512?c|0&&(hLe(c),gt(c)):l|0&&gt(l)}function hLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&bp(s)}function gLe(s){s=s|0,Bp(s)}function dLe(s,l){s=s|0,l=l|0;var c=0,f=0;Gm()|0,c=n[2652]|0;e:do if(c|0){for(;f=n[c+4>>2]|0,!(f|0&&(o7(fT(f)|0,s)|0)==0);)if(c=n[c>>2]|0,!c)break e;mLe(f,l)}while(0)}function fT(s){return s=s|0,n[s+12>>2]|0}function mLe(s,l){s=s|0,l=l|0;var c=0;s=s+36|0,c=n[s>>2]|0,c|0&&(jA(c),gt(c)),c=Vt(4)|0,$G(c,l),n[s>>2]=c}function pT(){return o[11716]|0||(n[2664]=0,tr(63,10656,U|0)|0,o[11716]=1),10656}function P9(){var s=0;return o[11717]|0?s=n[2665]|0:(yLe(),n[2665]=1504,o[11717]=1,s=1504),s|0}function yLe(){o[11740]|0||(o[11718]=gr(gr(8,0)|0,0)|0,o[11719]=gr(gr(0,0)|0,0)|0,o[11720]=gr(gr(0,16)|0,0)|0,o[11721]=gr(gr(8,0)|0,0)|0,o[11722]=gr(gr(0,0)|0,0)|0,o[11723]=gr(gr(8,0)|0,0)|0,o[11724]=gr(gr(0,0)|0,0)|0,o[11725]=gr(gr(8,0)|0,0)|0,o[11726]=gr(gr(0,0)|0,0)|0,o[11727]=gr(gr(8,0)|0,0)|0,o[11728]=gr(gr(0,0)|0,0)|0,o[11729]=gr(gr(0,0)|0,32)|0,o[11730]=gr(gr(0,0)|0,32)|0,o[11740]=1)}function S9(){return 1572}function ELe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,O=0,M=0;m=C,C=C+32|0,M=m+16|0,O=m+12|0,Q=m+8|0,k=m+4|0,B=m,n[M>>2]=s,n[O>>2]=l,n[Q>>2]=c,n[k>>2]=f,n[B>>2]=d,pT()|0,CLe(10656,M,O,Q,k,B),C=m}function CLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0;B=Vt(24)|0,r5(B+4|0,n[l>>2]|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[s>>2],n[s>>2]=B}function x9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0,et=0,Xe=0,at=0;if(at=C,C=C+32|0,Oe=at+20|0,Fe=at+8|0,et=at+4|0,Xe=at,l=n[l>>2]|0,l|0){Ge=Oe+4|0,Q=Oe+8|0,O=Fe+4|0,M=Fe+8|0,q=Fe+8|0,se=Oe+8|0;do{if(B=l+4|0,k=hT(B)|0,k|0){if(d=Rw(k)|0,n[Oe>>2]=0,n[Ge>>2]=0,n[Q>>2]=0,f=(Nw(k)|0)+1|0,wLe(Oe,f),f|0)for(;f=f+-1|0,xc(Fe,n[d>>2]|0),m=n[Ge>>2]|0,m>>>0<(n[se>>2]|0)>>>0?(n[m>>2]=n[Fe>>2],n[Ge>>2]=(n[Ge>>2]|0)+4):gT(Oe,Fe),f;)d=d+4|0;f=Lw(k)|0,n[Fe>>2]=0,n[O>>2]=0,n[M>>2]=0;e:do if(n[f>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?ILe(Fe,f):(n[d>>2]=n[f>>2],n[O>>2]=(n[O>>2]|0)+4),f=f+4|0,!(n[f>>2]|0))break e;d=n[O>>2]|0,m=n[q>>2]|0}while(0);n[et>>2]=cD(B)|0,n[Xe>>2]=Rr(k)|0,BLe(c,s,et,Xe,Oe,Fe),dT(Fe),$A(Oe)}l=n[l>>2]|0}while((l|0)!=0)}C=at}function hT(s){return s=s|0,n[s+12>>2]|0}function Rw(s){return s=s|0,n[s+12>>2]|0}function Nw(s){return s=s|0,n[s+16>>2]|0}function wLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=n[s>>2]|0,(n[s+8>>2]|0)-f>>2>>>0<l>>>0&&(L9(c,l,(n[s+4>>2]|0)-f>>2,s+8|0),M9(s,c),O9(c)),C=d}function gT(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=N9(s)|0,m>>>0<d>>>0)zr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,Q=O>>1,L9(c,O>>2>>>0<m>>>1>>>0?Q>>>0<d>>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,M9(s,c),O9(c),C=B;return}}function Lw(s){return s=s|0,n[s+8>>2]|0}function ILe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=R9(s)|0,m>>>0<d>>>0)zr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,Q=O>>1,jLe(c,O>>2>>>0<m>>>1>>>0?Q>>>0<d>>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,qLe(s,c),GLe(c),C=B;return}}function cD(s){return s=s|0,n[s>>2]|0}function BLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,vLe(s,l,c,f,d,m)}function dT(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function $A(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function vLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,O=0,M=0,q=0;B=C,C=C+48|0,M=B+40|0,k=B+32|0,q=B+24|0,Q=B+12|0,O=B,Va(k),s=da(s)|0,n[q>>2]=n[l>>2],c=n[c>>2]|0,f=n[f>>2]|0,mT(Q,d),DLe(O,m),n[M>>2]=n[q>>2],PLe(s,M,c,f,Q,O),dT(O),$A(Q),Ka(k),C=B}function mT(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(_Le(s,f),HLe(s,n[l>>2]|0,n[c>>2]|0,f))}function DLe(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(OLe(s,f),ULe(s,n[l>>2]|0,n[c>>2]|0,f))}function PLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,O=0,M=0,q=0;B=C,C=C+32|0,M=B+28|0,q=B+24|0,k=B+12|0,Q=B,O=Pl(SLe()|0)|0,n[q>>2]=n[l>>2],n[M>>2]=n[q>>2],l=Qg(M)|0,c=b9(c)|0,f=yT(f)|0,n[k>>2]=n[d>>2],M=d+4|0,n[k+4>>2]=n[M>>2],q=d+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[M>>2]=0,n[d>>2]=0,d=ET(k)|0,n[Q>>2]=n[m>>2],M=m+4|0,n[Q+4>>2]=n[M>>2],q=m+8|0,n[Q+8>>2]=n[q>>2],n[q>>2]=0,n[M>>2]=0,n[m>>2]=0,ao(0,O|0,s|0,l|0,c|0,f|0,d|0,xLe(Q)|0)|0,dT(Q),$A(k),C=B}function SLe(){var s=0;return o[7968]|0||(LLe(10708),s=7968,n[s>>2]=1,n[s+4>>2]=0),10708}function Qg(s){return s=s|0,Q9(s)|0}function b9(s){return s=s|0,k9(s)|0}function yT(s){return s=s|0,oD(s)|0}function ET(s){return s=s|0,kLe(s)|0}function xLe(s){return s=s|0,bLe(s)|0}function bLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=k9(n[(n[s>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function k9(s){return s=s|0,s|0}function kLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=Q9((n[s>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function Q9(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=QF(F9()|0)|0,f?(FF(l,f),TF(c,l),fUe(s,c),s=RF(l)|0):s=QLe(s)|0,C=d,s|0}function F9(){var s=0;return o[7960]|0||(NLe(10664),tr(25,10664,U|0)|0,s=7960,n[s>>2]=1,n[s+4>>2]=0),10664}function QLe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Vt(4)|0,n[k>>2]=n[s>>2],m=l+4|0,n[m>>2]=k,s=Vt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],T9(s,m,d),n[f>>2]=s,C=c,l|0}function T9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Vt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1656,n[c+12>>2]=l,n[s+4>>2]=c}function FLe(s){s=s|0,Jm(s),gt(s)}function TLe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function RLe(s){s=s|0,gt(s)}function NLe(s){s=s|0,Bp(s)}function LLe(s){s=s|0,Sl(s,MLe()|0,5)}function MLe(){return 1676}function OLe(s,l){s=s|0,l=l|0;var c=0;if((R9(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Tt();else{c=Vt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function ULe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function R9(s){return s=s|0,1073741823}function _Le(s,l){s=s|0,l=l|0;var c=0;if((N9(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Tt();else{c=Vt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function HLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function N9(s){return s=s|0,1073741823}function jLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Tt();else{d=Vt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function qLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function GLe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function L9(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Tt();else{d=Vt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function M9(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function O9(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function YLe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0;if(Fe=C,C=C+32|0,M=Fe+20|0,q=Fe+12|0,O=Fe+16|0,se=Fe+4|0,Ge=Fe,Oe=Fe+8|0,k=P9()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(Q=n[k+8>>2]|0,k=n[k+4>>2]|0;xc(M,B),WLe(s,M,k,Q),m=m+4|0,B=n[m>>2]|0,B;)Q=Q+1|0,k=k+1|0;if(m=S9()|0,B=n[m>>2]|0,B|0)do xc(M,B),n[q>>2]=n[m+4>>2],VLe(l,M,q),m=m+8|0,B=n[m>>2]|0;while((B|0)!=0);if(m=n[(Gm()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,xc(M,n[(Ym(l)|0)>>2]|0),n[q>>2]=fT(l)|0,KLe(c,M,q),m=n[m>>2]|0;while((m|0)!=0);if(xc(O,0),m=pT()|0,n[M>>2]=n[O>>2],x9(M,m,d),m=n[(Gm()|0)>>2]|0,m|0){s=M+4|0,l=M+8|0,c=M+8|0;do{if(Q=n[m+4>>2]|0,xc(q,n[(Ym(Q)|0)>>2]|0),JLe(se,U9(Q)|0),B=n[se>>2]|0,B|0){n[M>>2]=0,n[s>>2]=0,n[l>>2]=0;do xc(Ge,n[(Ym(n[B+4>>2]|0)|0)>>2]|0),k=n[s>>2]|0,k>>>0<(n[c>>2]|0)>>>0?(n[k>>2]=n[Ge>>2],n[s>>2]=(n[s>>2]|0)+4):gT(M,Ge),B=n[B>>2]|0;while((B|0)!=0);zLe(f,q,M),$A(M)}n[Oe>>2]=n[q>>2],O=_9(Q)|0,n[M>>2]=n[Oe>>2],x9(M,O,d),l5(se),m=n[m>>2]|0}while((m|0)!=0)}C=Fe}function WLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,lMe(s,l,c,f)}function VLe(s,l,c){s=s|0,l=l|0,c=c|0,aMe(s,l,c)}function Ym(s){return s=s|0,s|0}function KLe(s,l,c){s=s|0,l=l|0,c=c|0,nMe(s,l,c)}function U9(s){return s=s|0,s+16|0}function JLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(m=C,C=C+16|0,d=m+8|0,c=m,n[s>>2]=0,f=n[l>>2]|0,n[d>>2]=f,n[c>>2]=s,c=rMe(c)|0,f|0){if(f=Vt(12)|0,B=(H9(d)|0)+4|0,s=n[B+4>>2]|0,l=f+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=s,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)s=f;else for(l=f;s=Vt(12)|0,Q=(H9(d)|0)+4|0,k=n[Q+4>>2]|0,B=s+4|0,n[B>>2]=n[Q>>2],n[B+4>>2]=k,n[l>>2]=s,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=s;n[s>>2]=n[c>>2],n[c>>2]=f}C=m}function zLe(s,l,c){s=s|0,l=l|0,c=c|0,XLe(s,l,c)}function _9(s){return s=s|0,s+24|0}function XLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+24|0,d=f+16|0,k=f+12|0,m=f,Va(d),s=da(s)|0,n[k>>2]=n[l>>2],mT(m,c),n[B>>2]=n[k>>2],ZLe(s,B,m),$A(m),Ka(d),C=f}function ZLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+16|0,k=f+12|0,d=f,m=Pl($Le()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Qg(B)|0,n[d>>2]=n[c>>2],B=c+4|0,n[d+4>>2]=n[B>>2],k=c+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[c>>2]=0,oo(0,m|0,s|0,l|0,ET(d)|0)|0,$A(d),C=f}function $Le(){var s=0;return o[7976]|0||(eMe(10720),s=7976,n[s>>2]=1,n[s+4>>2]=0),10720}function eMe(s){s=s|0,Sl(s,tMe()|0,2)}function tMe(){return 1732}function rMe(s){return s=s|0,n[s>>2]|0}function H9(s){return s=s|0,n[s>>2]|0}function nMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Va(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],j9(s,m,c),Ka(d),C=f}function j9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+4|0,B=f,d=Pl(iMe()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=Qg(m)|0,oo(0,d|0,s|0,l|0,b9(c)|0)|0,C=f}function iMe(){var s=0;return o[7984]|0||(sMe(10732),s=7984,n[s>>2]=1,n[s+4>>2]=0),10732}function sMe(s){s=s|0,Sl(s,oMe()|0,2)}function oMe(){return 1744}function aMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Va(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],j9(s,m,c),Ka(d),C=f}function lMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Va(m),s=da(s)|0,n[k>>2]=n[l>>2],c=o[c>>0]|0,f=o[f>>0]|0,n[B>>2]=n[k>>2],cMe(s,B,c,f),Ka(m),C=d}function cMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,B=d+4|0,k=d,m=Pl(uMe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Qg(B)|0,c=Wm(c)|0,pc(0,m|0,s|0,l|0,c|0,Wm(f)|0)|0,C=d}function uMe(){var s=0;return o[7992]|0||(fMe(10744),s=7992,n[s>>2]=1,n[s+4>>2]=0),10744}function Wm(s){return s=s|0,AMe(s)|0}function AMe(s){return s=s|0,s&255|0}function fMe(s){s=s|0,Sl(s,pMe()|0,3)}function pMe(){return 1756}function hMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;switch(se=C,C=C+32|0,k=se+8|0,Q=se+4|0,O=se+20|0,M=se,OF(s,0),f=AUe(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,f<<24>>24){case 0:{o[O>>0]=0,gMe(Q,c,O),uD(s,Q)|0,qA(Q);break}case 8:{q=DT(l)|0,o[O>>0]=8,xc(M,n[q+4>>2]|0),dMe(Q,c,O,M,q+8|0),uD(s,Q)|0,qA(Q);break}case 9:{if(m=DT(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,xc(Q,n[d>>2]|0),f=n[q>>2]|0,f>>>0<(n[B>>2]|0)>>>0?(n[f>>2]=n[Q>>2],n[q>>2]=(n[q>>2]|0)+4):gT(k,Q),l;)d=d+4|0;o[O>>0]=9,xc(M,n[m+8>>2]|0),mMe(Q,c,O,M,k),uD(s,Q)|0,qA(Q);break}default:q=DT(l)|0,o[O>>0]=f,xc(M,n[q+4>>2]|0),yMe(Q,c,O,M),uD(s,Q)|0,qA(Q)}$A(k),C=se}function gMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Va(d),l=da(l)|0,QMe(s,l,o[c>>0]|0),Ka(d),C=f}function uD(s,l){s=s|0,l=l|0;var c=0;return c=n[s>>2]|0,c|0&&PA(c|0),n[s>>2]=n[l>>2],n[l>>2]=0,s|0}function dMe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+32|0,k=m+16|0,B=m+8|0,Q=m,Va(B),l=da(l)|0,c=o[c>>0]|0,n[Q>>2]=n[f>>2],d=n[d>>2]|0,n[k>>2]=n[Q>>2],SMe(s,l,c,k,d),Ka(B),C=m}function mMe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,O=0;m=C,C=C+32|0,Q=m+24|0,B=m+16|0,O=m+12|0,k=m,Va(B),l=da(l)|0,c=o[c>>0]|0,n[O>>2]=n[f>>2],mT(k,d),n[Q>>2]=n[O>>2],BMe(s,l,c,Q,k),$A(k),Ka(B),C=m}function yMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Va(m),l=da(l)|0,c=o[c>>0]|0,n[k>>2]=n[f>>2],n[B>>2]=n[k>>2],EMe(s,l,c,B),Ka(m),C=d}function EMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+4|0,k=d,B=Pl(CMe()|0)|0,c=Wm(c)|0,n[k>>2]=n[f>>2],n[m>>2]=n[k>>2],AD(s,oo(0,B|0,l|0,c|0,Qg(m)|0)|0),C=d}function CMe(){var s=0;return o[8e3]|0||(wMe(10756),s=8e3,n[s>>2]=1,n[s+4>>2]=0),10756}function AD(s,l){s=s|0,l=l|0,OF(s,l)}function wMe(s){s=s|0,Sl(s,IMe()|0,2)}function IMe(){return 1772}function BMe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,O=0;m=C,C=C+32|0,Q=m+16|0,O=m+12|0,B=m,k=Pl(vMe()|0)|0,c=Wm(c)|0,n[O>>2]=n[f>>2],n[Q>>2]=n[O>>2],f=Qg(Q)|0,n[B>>2]=n[d>>2],Q=d+4|0,n[B+4>>2]=n[Q>>2],O=d+8|0,n[B+8>>2]=n[O>>2],n[O>>2]=0,n[Q>>2]=0,n[d>>2]=0,AD(s,pc(0,k|0,l|0,c|0,f|0,ET(B)|0)|0),$A(B),C=m}function vMe(){var s=0;return o[8008]|0||(DMe(10768),s=8008,n[s>>2]=1,n[s+4>>2]=0),10768}function DMe(s){s=s|0,Sl(s,PMe()|0,3)}function PMe(){return 1784}function SMe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,k=m+4|0,Q=m,B=Pl(xMe()|0)|0,c=Wm(c)|0,n[Q>>2]=n[f>>2],n[k>>2]=n[Q>>2],f=Qg(k)|0,AD(s,pc(0,B|0,l|0,c|0,f|0,yT(d)|0)|0),C=m}function xMe(){var s=0;return o[8016]|0||(bMe(10780),s=8016,n[s>>2]=1,n[s+4>>2]=0),10780}function bMe(s){s=s|0,Sl(s,kMe()|0,3)}function kMe(){return 1800}function QMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=Pl(FMe()|0)|0,AD(s,Qn(0,f|0,l|0,Wm(c)|0)|0)}function FMe(){var s=0;return o[8024]|0||(TMe(10792),s=8024,n[s>>2]=1,n[s+4>>2]=0),10792}function TMe(s){s=s|0,Sl(s,RMe()|0,1)}function RMe(){return 1816}function NMe(){LMe(),MMe(),OMe()}function LMe(){n[2702]=d7(65536)|0}function MMe(){iOe(10856)}function OMe(){UMe(10816)}function UMe(s){s=s|0,_Me(s,5044),HMe(s)|0}function _Me(s,l){s=s|0,l=l|0;var c=0;c=F9()|0,n[s>>2]=c,ZMe(c,l),xp(n[s>>2]|0)}function HMe(s){s=s|0;var l=0;return l=n[s>>2]|0,bg(l,jMe()|0),s|0}function jMe(){var s=0;return o[8032]|0||(q9(10820),tr(64,10820,U|0)|0,s=8032,n[s>>2]=1,n[s+4>>2]=0),Rr(10820)|0||q9(10820),10820}function q9(s){s=s|0,YMe(s),kg(s,25)}function qMe(s){s=s|0,GMe(s+24|0)}function GMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function YMe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,5,18,l,JMe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function WMe(s,l){s=s|0,l=l|0,VMe(s,l)}function VMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;c=C,C=C+16|0,f=c,d=c+4|0,Sg(d,l),n[f>>2]=xg(d,l)|0,KMe(s,f),C=c}function KMe(s,l){s=s|0,l=l|0,G9(s+4|0,n[l>>2]|0),o[s+8>>0]=1}function G9(s,l){s=s|0,l=l|0,n[s>>2]=l}function JMe(){return 1824}function zMe(s){return s=s|0,XMe(s)|0}function XMe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Vt(4)|0,Sg(d,s),G9(k,xg(d,s)|0),m=l+4|0,n[m>>2]=k,s=Vt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],T9(s,m,d),n[f>>2]=s,C=c,l|0}function Wa(s){s=s|0;var l=0,c=0;return s=s+7&-8,s>>>0<=32768&&(l=n[2701]|0,s>>>0<=(65536-l|0)>>>0)?(c=(n[2702]|0)+l|0,n[2701]=l+s,s=c):(s=d7(s+8|0)|0,n[s>>2]=n[2703],n[2703]=s,s=s+8|0),s|0}function ZMe(s,l){s=s|0,l=l|0,n[s>>2]=$Me()|0,n[s+4>>2]=eOe()|0,n[s+12>>2]=l,n[s+8>>2]=tOe()|0,n[s+32>>2]=9}function $Me(){return 11744}function eOe(){return 1832}function tOe(){return lD()|0}function rOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Sp(f,896)|0)==512?c|0&&(nOe(c),gt(c)):l|0&&gt(l)}function nOe(s){s=s|0,s=n[s+4>>2]|0,s|0&&bp(s)}function iOe(s){s=s|0,sOe(s,5052),oOe(s)|0,aOe(s,5058,26)|0,lOe(s,5069,1)|0,cOe(s,5077,10)|0,uOe(s,5087,19)|0,AOe(s,5094,27)|0}function sOe(s,l){s=s|0,l=l|0;var c=0;c=nUe()|0,n[s>>2]=c,iUe(c,l),xp(n[s>>2]|0)}function oOe(s){s=s|0;var l=0;return l=n[s>>2]|0,bg(l,q4e()|0),s|0}function aOe(s,l,c){return s=s|0,l=l|0,c=c|0,D4e(s,pn(l)|0,c,0),s|0}function lOe(s,l,c){return s=s|0,l=l|0,c=c|0,u4e(s,pn(l)|0,c,0),s|0}function cOe(s,l,c){return s=s|0,l=l|0,c=c|0,jOe(s,pn(l)|0,c,0),s|0}function uOe(s,l,c){return s=s|0,l=l|0,c=c|0,SOe(s,pn(l)|0,c,0),s|0}function Y9(s,l){s=s|0,l=l|0;var c=0,f=0;e:for(;;){for(c=n[2703]|0;;){if((c|0)==(l|0))break e;if(f=n[c>>2]|0,n[2703]=f,!c)c=f;else break}gt(c)}n[2701]=s}function AOe(s,l,c){return s=s|0,l=l|0,c=c|0,fOe(s,pn(l)|0,c,0),s|0}function fOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=CT()|0,s=pOe(c)|0,hn(m,l,d,s,hOe(c,f)|0,f)}function CT(){var s=0,l=0;if(o[8040]|0||(V9(10860),tr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10860)|0)){s=10860,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));V9(10860)}return 10860}function pOe(s){return s=s|0,s|0}function hOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=CT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(W9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(gOe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function W9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function gOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=dOe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,mOe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,W9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,yOe(s,d),EOe(d),C=k;return}}function dOe(s){return s=s|0,536870911}function mOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function yOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function EOe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function V9(s){s=s|0,IOe(s)}function COe(s){s=s|0,wOe(s+24|0)}function wOe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function IOe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,11,l,BOe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function BOe(){return 1840}function vOe(s,l,c){s=s|0,l=l|0,c=c|0,POe(n[(DOe(s)|0)>>2]|0,l,c)}function DOe(s){return s=s|0,(n[(CT()|0)+24>>2]|0)+(s<<3)|0}function POe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+1|0,d=f,Sg(m,l),l=xg(m,l)|0,Sg(d,c),c=xg(d,c)|0,tf[s&31](l,c),C=f}function SOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=wT()|0,s=xOe(c)|0,hn(m,l,d,s,bOe(c,f)|0,f)}function wT(){var s=0,l=0;if(o[8048]|0||(J9(10896),tr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10896)|0)){s=10896,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));J9(10896)}return 10896}function xOe(s){return s=s|0,s|0}function bOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=wT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(K9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(kOe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function K9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function kOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=QOe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,FOe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,K9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,TOe(s,d),ROe(d),C=k;return}}function QOe(s){return s=s|0,536870911}function FOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function TOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ROe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function J9(s){s=s|0,MOe(s)}function NOe(s){s=s|0,LOe(s+24|0)}function LOe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function MOe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,11,l,OOe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function OOe(){return 1852}function UOe(s,l){return s=s|0,l=l|0,HOe(n[(_Oe(s)|0)>>2]|0,l)|0}function _Oe(s){return s=s|0,(n[(wT()|0)+24>>2]|0)+(s<<3)|0}function HOe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Sg(f,l),l=xg(f,l)|0,l=oD(Ng[s&31](l)|0)|0,C=c,l|0}function jOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=IT()|0,s=qOe(c)|0,hn(m,l,d,s,GOe(c,f)|0,f)}function IT(){var s=0,l=0;if(o[8056]|0||(X9(10932),tr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10932)|0)){s=10932,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));X9(10932)}return 10932}function qOe(s){return s=s|0,s|0}function GOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=IT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(z9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(YOe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function z9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function YOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=WOe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,VOe(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,z9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,KOe(s,d),JOe(d),C=k;return}}function WOe(s){return s=s|0,536870911}function VOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function KOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function JOe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function X9(s){s=s|0,ZOe(s)}function zOe(s){s=s|0,XOe(s+24|0)}function XOe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function ZOe(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,7,l,$Oe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function $Oe(){return 1860}function e4e(s,l,c){return s=s|0,l=l|0,c=c|0,r4e(n[(t4e(s)|0)>>2]|0,l,c)|0}function t4e(s){return s=s|0,(n[(IT()|0)+24>>2]|0)+(s<<3)|0}function r4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+32|0,B=f+12|0,m=f+8|0,k=f,Q=f+16|0,d=f+4|0,n4e(Q,l),i4e(k,Q,l),vp(d,c),c=Dp(d,c)|0,n[B>>2]=n[k>>2],_w[s&15](m,B,c),c=s4e(m)|0,qA(m),Pp(d),C=f,c|0}function n4e(s,l){s=s|0,l=l|0}function i4e(s,l,c){s=s|0,l=l|0,c=c|0,o4e(s,c)}function s4e(s){return s=s|0,da(s)|0}function o4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+16|0,c=d,f=l,f&1?(a4e(c,0),ii(f|0,c|0)|0,l4e(s,c),c4e(c)):n[s>>2]=n[l>>2],C=d}function a4e(s,l){s=s|0,l=l|0,e5(s,l),n[s+4>>2]=0,o[s+8>>0]=0}function l4e(s,l){s=s|0,l=l|0,n[s>>2]=n[l+4>>2]}function c4e(s){s=s|0,o[s+8>>0]=0}function u4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=BT()|0,s=A4e(c)|0,hn(m,l,d,s,f4e(c,f)|0,f)}function BT(){var s=0,l=0;if(o[8064]|0||($9(10968),tr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(Rr(10968)|0)){s=10968,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));$9(10968)}return 10968}function A4e(s){return s=s|0,s|0}function f4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=BT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(Z9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(p4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function Z9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function p4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=h4e(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,g4e(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,Z9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,d4e(s,d),m4e(d),C=k;return}}function h4e(s){return s=s|0,536870911}function g4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function d4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function m4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function $9(s){s=s|0,C4e(s)}function y4e(s){s=s|0,E4e(s+24|0)}function E4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function C4e(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,1,l,w4e()|0,5),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function w4e(){return 1872}function I4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,v4e(n[(B4e(s)|0)>>2]|0,l,c,f,d,m)}function B4e(s){return s=s|0,(n[(BT()|0)+24>>2]|0)+(s<<3)|0}function v4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,O=0,M=0,q=0;B=C,C=C+32|0,k=B+16|0,Q=B+12|0,O=B+8|0,M=B+4|0,q=B,vp(k,l),l=Dp(k,l)|0,vp(Q,c),c=Dp(Q,c)|0,vp(O,f),f=Dp(O,f)|0,vp(M,d),d=Dp(M,d)|0,vp(q,m),m=Dp(q,m)|0,w7[s&1](l,c,f,d,m),Pp(q),Pp(M),Pp(O),Pp(Q),Pp(k),C=B}function D4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=vT()|0,s=P4e(c)|0,hn(m,l,d,s,S4e(c,f)|0,f)}function vT(){var s=0,l=0;if(o[8072]|0||(t7(11004),tr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(Rr(11004)|0)){s=11004,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t7(11004)}return 11004}function P4e(s){return s=s|0,s|0}function S4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=vT()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(e7(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(x4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function e7(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function x4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=b4e(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,O=M>>2,k4e(d,M>>3>>>0<f>>>1>>>0?O>>>0<B>>>0?B:O:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,e7(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Q4e(s,d),F4e(d),C=k;return}}function b4e(s){return s=s|0,536870911}function k4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Tt();else{d=Vt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function Q4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function F4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function t7(s){s=s|0,N4e(s)}function T4e(s){s=s|0,R4e(s+24|0)}function R4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function N4e(s){s=s|0;var l=0;l=Vr()|0,Kr(s,1,12,l,L4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function L4e(){return 1896}function M4e(s,l,c){s=s|0,l=l|0,c=c|0,U4e(n[(O4e(s)|0)>>2]|0,l,c)}function O4e(s){return s=s|0,(n[(vT()|0)+24>>2]|0)+(s<<3)|0}function U4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+4|0,d=f,_4e(m,l),l=H4e(m,l)|0,vp(d,c),c=Dp(d,c)|0,tf[s&31](l,c),Pp(d),C=f}function _4e(s,l){s=s|0,l=l|0}function H4e(s,l){return s=s|0,l=l|0,j4e(l)|0}function j4e(s){return s=s|0,s|0}function q4e(){var s=0;return o[8080]|0||(r7(11040),tr(70,11040,U|0)|0,s=8080,n[s>>2]=1,n[s+4>>2]=0),Rr(11040)|0||r7(11040),11040}function r7(s){s=s|0,W4e(s),kg(s,71)}function G4e(s){s=s|0,Y4e(s+24|0)}function Y4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function W4e(s){s=s|0;var l=0;l=Vr()|0,Kr(s,5,7,l,z4e()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function V4e(s){s=s|0,K4e(s)}function K4e(s){s=s|0,J4e(s)}function J4e(s){s=s|0,o[s+8>>0]=1}function z4e(){return 1936}function X4e(){return Z4e()|0}function Z4e(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,m=s+4|0,n[m>>2]=Vt(1)|0,f=Vt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],$4e(f,m,d),n[c>>2]=f,C=l,s|0}function $4e(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Vt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1916,n[c+12>>2]=l,n[s+4>>2]=c}function eUe(s){s=s|0,Jm(s),gt(s)}function tUe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function rUe(s){s=s|0,gt(s)}function nUe(){var s=0;return o[8088]|0||(uUe(11076),tr(25,11076,U|0)|0,s=8088,n[s>>2]=1,n[s+4>>2]=0),11076}function iUe(s,l){s=s|0,l=l|0,n[s>>2]=sUe()|0,n[s+4>>2]=oUe()|0,n[s+12>>2]=l,n[s+8>>2]=aUe()|0,n[s+32>>2]=10}function sUe(){return 11745}function oUe(){return 1940}function aUe(){return aD()|0}function lUe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Sp(f,896)|0)==512?c|0&&(cUe(c),gt(c)):l|0&&gt(l)}function cUe(s){s=s|0,s=n[s+4>>2]|0,s|0&&bp(s)}function uUe(s){s=s|0,Bp(s)}function xc(s,l){s=s|0,l=l|0,n[s>>2]=l}function DT(s){return s=s|0,n[s>>2]|0}function AUe(s){return s=s|0,o[n[s>>2]>>0]|0}function fUe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,n[f>>2]=n[s>>2],pUe(l,f)|0,C=c}function pUe(s,l){s=s|0,l=l|0;var c=0;return c=hUe(n[s>>2]|0,l)|0,l=s+4|0,n[(n[l>>2]|0)+8>>2]=c,n[(n[l>>2]|0)+8>>2]|0}function hUe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Va(f),s=da(s)|0,l=gUe(s,n[l>>2]|0)|0,Ka(f),C=c,l|0}function Va(s){s=s|0,n[s>>2]=n[2701],n[s+4>>2]=n[2703]}function gUe(s,l){s=s|0,l=l|0;var c=0;return c=Pl(dUe()|0)|0,Qn(0,c|0,s|0,yT(l)|0)|0}function Ka(s){s=s|0,Y9(n[s>>2]|0,n[s+4>>2]|0)}function dUe(){var s=0;return o[8096]|0||(mUe(11120),s=8096,n[s>>2]=1,n[s+4>>2]=0),11120}function mUe(s){s=s|0,Sl(s,yUe()|0,1)}function yUe(){return 1948}function EUe(){CUe()}function CUe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0;if(Oe=C,C=C+16|0,M=Oe+4|0,q=Oe,Ni(65536,10804,n[2702]|0,10812),c=P9()|0,l=n[c>>2]|0,s=n[l>>2]|0,s|0)for(f=n[c+8>>2]|0,c=n[c+4>>2]|0;uc(s|0,u[c>>0]|0|0,o[f>>0]|0),l=l+4|0,s=n[l>>2]|0,s;)f=f+1|0,c=c+1|0;if(s=S9()|0,l=n[s>>2]|0,l|0)do uu(l|0,n[s+4>>2]|0),s=s+8|0,l=n[s>>2]|0;while((l|0)!=0);uu(wUe()|0,5167),O=Gm()|0,s=n[O>>2]|0;e:do if(s|0){do IUe(n[s+4>>2]|0),s=n[s>>2]|0;while((s|0)!=0);if(s=n[O>>2]|0,s|0){Q=O;do{for(;d=s,s=n[s>>2]|0,d=n[d+4>>2]|0,!!(BUe(d)|0);)if(n[q>>2]=Q,n[M>>2]=n[q>>2],vUe(O,M)|0,!s)break e;if(DUe(d),Q=n[Q>>2]|0,l=n7(d)|0,m=Hi()|0,B=C,C=C+((1*(l<<2)|0)+15&-16)|0,k=C,C=C+((1*(l<<2)|0)+15&-16)|0,l=n[(U9(d)|0)>>2]|0,l|0)for(c=B,f=k;n[c>>2]=n[(Ym(n[l+4>>2]|0)|0)>>2],n[f>>2]=n[l+8>>2],l=n[l>>2]|0,l;)c=c+4|0,f=f+4|0;Fe=Ym(d)|0,l=PUe(d)|0,c=n7(d)|0,f=SUe(d)|0,Au(Fe|0,l|0,B|0,k|0,c|0,f|0,fT(d)|0),_i(m|0)}while((s|0)!=0)}}while(0);if(s=n[(pT()|0)>>2]|0,s|0)do Fe=s+4|0,O=hT(Fe)|0,d=Lw(O)|0,m=Rw(O)|0,B=(Nw(O)|0)+1|0,k=fD(O)|0,Q=i7(Fe)|0,O=Rr(O)|0,M=cD(Fe)|0,q=PT(Fe)|0,El(0,d|0,m|0,B|0,k|0,Q|0,O|0,M|0,q|0,ST(Fe)|0),s=n[s>>2]|0;while((s|0)!=0);s=n[(Gm()|0)>>2]|0;e:do if(s|0){t:for(;;){if(l=n[s+4>>2]|0,l|0&&(se=n[(Ym(l)|0)>>2]|0,Ge=n[(_9(l)|0)>>2]|0,Ge|0)){c=Ge;do{l=c+4|0,f=hT(l)|0;r:do if(f|0)switch(Rr(f)|0){case 0:break t;case 4:case 3:case 2:{k=Lw(f)|0,Q=Rw(f)|0,O=(Nw(f)|0)+1|0,M=fD(f)|0,q=Rr(f)|0,Fe=cD(l)|0,El(se|0,k|0,Q|0,O|0,M|0,0,q|0,Fe|0,PT(l)|0,ST(l)|0);break r}case 1:{B=Lw(f)|0,k=Rw(f)|0,Q=(Nw(f)|0)+1|0,O=fD(f)|0,M=i7(l)|0,q=Rr(f)|0,Fe=cD(l)|0,El(se|0,B|0,k|0,Q|0,O|0,M|0,q|0,Fe|0,PT(l)|0,ST(l)|0);break r}case 5:{O=Lw(f)|0,M=Rw(f)|0,q=(Nw(f)|0)+1|0,Fe=fD(f)|0,El(se|0,O|0,M|0,q|0,Fe|0,xUe(f)|0,Rr(f)|0,0,0,0);break r}default:break r}while(0);c=n[c>>2]|0}while((c|0)!=0)}if(s=n[s>>2]|0,!s)break e}Tt()}while(0);Ce(),C=Oe}function wUe(){return 11703}function IUe(s){s=s|0,o[s+40>>0]=0}function BUe(s){return s=s|0,(o[s+40>>0]|0)!=0|0}function vUe(s,l){return s=s|0,l=l|0,l=bUe(l)|0,s=n[l>>2]|0,n[l>>2]=n[s>>2],gt(s),n[l>>2]|0}function DUe(s){s=s|0,o[s+40>>0]=1}function n7(s){return s=s|0,n[s+20>>2]|0}function PUe(s){return s=s|0,n[s+8>>2]|0}function SUe(s){return s=s|0,n[s+32>>2]|0}function fD(s){return s=s|0,n[s+4>>2]|0}function i7(s){return s=s|0,n[s+4>>2]|0}function PT(s){return s=s|0,n[s+8>>2]|0}function ST(s){return s=s|0,n[s+16>>2]|0}function xUe(s){return s=s|0,n[s+20>>2]|0}function bUe(s){return s=s|0,n[s>>2]|0}function pD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0,et=0,Xe=0,at=0,Ue=0,qe=0,Lt=0;Lt=C,C=C+16|0,se=Lt;do if(s>>>0<245){if(O=s>>>0<11?16:s+11&-8,s=O>>>3,q=n[2783]|0,c=q>>>s,c&3|0)return l=(c&1^1)+s|0,s=11172+(l<<1<<2)|0,c=s+8|0,f=n[c>>2]|0,d=f+8|0,m=n[d>>2]|0,(s|0)==(m|0)?n[2783]=q&~(1<<l):(n[m+12>>2]=s,n[c>>2]=m),qe=l<<3,n[f+4>>2]=qe|3,qe=f+qe+4|0,n[qe>>2]=n[qe>>2]|1,qe=d,C=Lt,qe|0;if(M=n[2785]|0,O>>>0>M>>>0){if(c|0)return l=2<<s,l=c<<s&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,c=l>>>5&8,l=l>>>c,d=l>>>2&4,l=l>>>d,s=l>>>1&2,l=l>>>s,f=l>>>1&1,f=(c|B|d|s|f)+(l>>>f)|0,l=11172+(f<<1<<2)|0,s=l+8|0,d=n[s>>2]|0,B=d+8|0,c=n[B>>2]|0,(l|0)==(c|0)?(s=q&~(1<<f),n[2783]=s):(n[c+12>>2]=l,n[s>>2]=c,s=q),m=(f<<3)-O|0,n[d+4>>2]=O|3,f=d+O|0,n[f+4>>2]=m|1,n[f+m>>2]=m,M|0&&(d=n[2788]|0,l=M>>>3,c=11172+(l<<1<<2)|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=c),n[2785]=m,n[2788]=f,qe=B,C=Lt,qe|0;if(k=n[2784]|0,k){if(c=(k&0-k)+-1|0,B=c>>>12&16,c=c>>>B,m=c>>>5&8,c=c>>>m,Q=c>>>2&4,c=c>>>Q,f=c>>>1&2,c=c>>>f,s=c>>>1&1,s=n[11436+((m|B|Q|f|s)+(c>>>s)<<2)>>2]|0,c=(n[s+4>>2]&-8)-O|0,f=n[s+16+(((n[s+16>>2]|0)==0&1)<<2)>>2]|0,!f)Q=s,m=c;else{do B=(n[f+4>>2]&-8)-O|0,Q=B>>>0<c>>>0,c=Q?B:c,s=Q?f:s,f=n[f+16+(((n[f+16>>2]|0)==0&1)<<2)>>2]|0;while((f|0)!=0);Q=s,m=c}if(B=Q+O|0,Q>>>0<B>>>0){d=n[Q+24>>2]|0,l=n[Q+12>>2]|0;do if((l|0)==(Q|0)){if(s=Q+20|0,l=n[s>>2]|0,!l&&(s=Q+16|0,l=n[s>>2]|0,!l)){c=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0,c=l}else c=n[Q+8>>2]|0,n[c+12>>2]=l,n[l+8>>2]=c,c=l;while(0);do if(d|0){if(l=n[Q+28>>2]|0,s=11436+(l<<2)|0,(Q|0)==(n[s>>2]|0)){if(n[s>>2]=c,!c){n[2784]=k&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=d,l=n[Q+16>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),l=n[Q+20>>2]|0,l|0&&(n[c+20>>2]=l,n[l+24>>2]=c)}while(0);return m>>>0<16?(qe=m+O|0,n[Q+4>>2]=qe|3,qe=Q+qe+4|0,n[qe>>2]=n[qe>>2]|1):(n[Q+4>>2]=O|3,n[B+4>>2]=m|1,n[B+m>>2]=m,M|0&&(f=n[2788]|0,l=M>>>3,c=11172+(l<<1<<2)|0,l=1<<l,q&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=q|l,l=c,s=c+8|0),n[s>>2]=f,n[l+12>>2]=f,n[f+8>>2]=l,n[f+12>>2]=c),n[2785]=m,n[2788]=B),qe=Q+8|0,C=Lt,qe|0}else q=O}else q=O}else q=O}else if(s>>>0<=4294967231)if(s=s+11|0,O=s&-8,Q=n[2784]|0,Q){f=0-O|0,s=s>>>8,s?O>>>0>16777215?k=31:(q=(s+1048320|0)>>>16&8,Ue=s<<q,M=(Ue+520192|0)>>>16&4,Ue=Ue<<M,k=(Ue+245760|0)>>>16&2,k=14-(M|q|k)+(Ue<<k>>>15)|0,k=O>>>(k+7|0)&1|k<<1):k=0,c=n[11436+(k<<2)>>2]|0;e:do if(!c)c=0,s=0,Ue=57;else for(s=0,B=O<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[c+4>>2]&-8)-O|0,d>>>0<f>>>0)if(d)s=c,f=d;else{s=c,f=0,d=c,Ue=61;break e}if(d=n[c+20>>2]|0,c=n[c+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(c|0)?m:d,d=(c|0)==0,d){c=m,Ue=57;break}else B=B<<((d^1)&1)}while(0);if((Ue|0)==57){if((c|0)==0&(s|0)==0){if(s=2<<k,s=Q&(s|0-s),!s){q=O;break}q=(s&0-s)+-1|0,B=q>>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,M=q>>>1&2,q=q>>>M,c=q>>>1&1,s=0,c=n[11436+((m|B|k|M|c)+(q>>>c)<<2)>>2]|0}c?(d=c,Ue=61):(k=s,B=f)}if((Ue|0)==61)for(;;)if(Ue=0,c=(n[d+4>>2]&-8)-O|0,q=c>>>0<f>>>0,c=q?c:f,s=q?d:s,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)f=c,Ue=61;else{k=s,B=c;break}if((k|0)!=0&&B>>>0<((n[2785]|0)-O|0)>>>0){if(m=k+O|0,k>>>0>=m>>>0)return qe=0,C=Lt,qe|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(s=k+20|0,l=n[s>>2]|0,!l&&(s=k+16|0,l=n[s>>2]|0,!l)){l=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0}else qe=n[k+8>>2]|0,n[qe+12>>2]=l,n[l+8>>2]=qe;while(0);do if(d){if(s=n[k+28>>2]|0,c=11436+(s<<2)|0,(k|0)==(n[c>>2]|0)){if(n[c>>2]=l,!l){f=Q&~(1<<s),n[2784]=f;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){f=Q;break}n[l+24>>2]=d,s=n[k+16>>2]|0,s|0&&(n[l+16>>2]=s,n[s+24>>2]=l),s=n[k+20>>2]|0,s&&(n[l+20>>2]=s,n[s+24>>2]=l),f=Q}else f=Q;while(0);do if(B>>>0>=16){if(n[k+4>>2]=O|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=c;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(Ue=(l+1048320|0)>>>16&8,qe=l<<Ue,at=(qe+520192|0)>>>16&4,qe=qe<<at,l=(qe+245760|0)>>>16&2,l=14-(at|Ue|l)+(qe<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,c=11436+(l<<2)|0,n[m+28>>2]=l,s=m+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<<l,!(f&s)){n[2784]=f|s,n[c>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}for(s=B<<((l|0)==31?0:25-(l>>>1)|0),c=n[c>>2]|0;;){if((n[c+4>>2]&-8|0)==(B|0)){Ue=97;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=96;break}}if((Ue|0)==96){n[f>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((Ue|0)==97){Ue=c+8|0,qe=n[Ue>>2]|0,n[qe+12>>2]=m,n[Ue>>2]=m,n[m+8>>2]=qe,n[m+12>>2]=c,n[m+24>>2]=0;break}}else qe=B+O|0,n[k+4>>2]=qe|3,qe=k+qe+4|0,n[qe>>2]=n[qe>>2]|1;while(0);return qe=k+8|0,C=Lt,qe|0}else q=O}else q=O;else q=-1;while(0);if(c=n[2785]|0,c>>>0>=q>>>0)return l=c-q|0,s=n[2788]|0,l>>>0>15?(qe=s+q|0,n[2788]=qe,n[2785]=l,n[qe+4>>2]=l|1,n[qe+l>>2]=l,n[s+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[s+4>>2]=c|3,qe=s+c+4|0,n[qe>>2]=n[qe>>2]|1),qe=s+8|0,C=Lt,qe|0;if(B=n[2786]|0,B>>>0>q>>>0)return at=B-q|0,n[2786]=at,qe=n[2789]|0,Ue=qe+q|0,n[2789]=Ue,n[Ue+4>>2]=at|1,n[qe+4>>2]=q|3,qe=qe+8|0,C=Lt,qe|0;if(n[2901]|0?s=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,s=se&-16^1431655768,n[se>>2]=s,n[2901]=s,s=4096),k=q+48|0,Q=q+47|0,m=s+Q|0,d=0-s|0,O=m&d,O>>>0<=q>>>0||(s=n[2893]|0,s|0&&(M=n[2891]|0,se=M+O|0,se>>>0<=M>>>0|se>>>0>s>>>0)))return qe=0,C=Lt,qe|0;e:do if(n[2894]&4)l=0,Ue=133;else{c=n[2789]|0;t:do if(c){for(f=11580;s=n[f>>2]|0,!(s>>>0<=c>>>0&&(Fe=f+4|0,(s+(n[Fe>>2]|0)|0)>>>0>c>>>0));)if(s=n[f+8>>2]|0,s)f=s;else{Ue=118;break t}if(l=m-B&d,l>>>0<2147483647)if(s=kp(l|0)|0,(s|0)==((n[f>>2]|0)+(n[Fe>>2]|0)|0)){if((s|0)!=-1){B=l,m=s,Ue=135;break e}}else f=s,Ue=126;else l=0}else Ue=118;while(0);do if((Ue|0)==118)if(c=kp(0)|0,(c|0)!=-1&&(l=c,Ge=n[2902]|0,Oe=Ge+-1|0,l=((Oe&l|0)==0?0:(Oe+l&0-Ge)-l|0)+O|0,Ge=n[2891]|0,Oe=l+Ge|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Fe=n[2893]|0,Fe|0&&Oe>>>0<=Ge>>>0|Oe>>>0>Fe>>>0){l=0;break}if(s=kp(l|0)|0,(s|0)==(c|0)){B=l,m=c,Ue=135;break e}else f=s,Ue=126}else l=0;while(0);do if((Ue|0)==126){if(c=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(f|0)!=-1)))if((f|0)==-1){l=0;break}else{B=l,m=f,Ue=135;break e}if(s=n[2903]|0,s=Q-l+s&0-s,s>>>0>=2147483647){B=l,m=f,Ue=135;break e}if((kp(s|0)|0)==-1){kp(c|0)|0,l=0;break}else{B=s+l|0,m=f,Ue=135;break e}}while(0);n[2894]=n[2894]|4,Ue=133}while(0);if((Ue|0)==133&&O>>>0<2147483647&&(at=kp(O|0)|0,Fe=kp(0)|0,et=Fe-at|0,Xe=et>>>0>(q+40|0)>>>0,!((at|0)==-1|Xe^1|at>>>0<Fe>>>0&((at|0)!=-1&(Fe|0)!=-1)^1))&&(B=Xe?et:l,m=at,Ue=135),(Ue|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),Q=n[2789]|0;do if(Q){for(l=11580;;){if(s=n[l>>2]|0,c=l+4|0,f=n[c>>2]|0,(m|0)==(s+f|0)){Ue=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((Ue|0)==145&&(n[l+12>>2]&8|0)==0&&Q>>>0<m>>>0&Q>>>0>=s>>>0){n[c>>2]=f+B,qe=Q+8|0,qe=(qe&7|0)==0?0:0-qe&7,Ue=Q+qe|0,qe=(n[2786]|0)+(B-qe)|0,n[2789]=Ue,n[2786]=qe,n[Ue+4>>2]=qe|1,n[Ue+qe+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),c=m+B|0,l=11580;;){if((n[l>>2]|0)==(c|0)){Ue=153;break}if(s=n[l+8>>2]|0,s)l=s;else break}if((Ue|0)==153&&(n[l+12>>2]&8|0)==0){n[l>>2]=m,M=l+4|0,n[M>>2]=(n[M>>2]|0)+B,M=m+8|0,M=m+((M&7|0)==0?0:0-M&7)|0,l=c+8|0,l=c+((l&7|0)==0?0:0-l&7)|0,O=M+q|0,k=l-M-q|0,n[M+4>>2]=q|3;do if((l|0)!=(Q|0)){if((l|0)==(n[2788]|0)){qe=(n[2785]|0)+k|0,n[2785]=qe,n[2788]=O,n[O+4>>2]=qe|1,n[O+qe>>2]=qe;break}if(s=n[l+4>>2]|0,(s&3|0)==1){B=s&-8,f=s>>>3;e:do if(s>>>0<256)if(s=n[l+8>>2]|0,c=n[l+12>>2]|0,(c|0)==(s|0)){n[2783]=n[2783]&~(1<<f);break}else{n[s+12>>2]=c,n[c+8>>2]=s;break}else{m=n[l+24>>2]|0,s=n[l+12>>2]|0;do if((s|0)==(l|0)){if(f=l+16|0,c=f+4|0,s=n[c>>2]|0,!s)if(s=n[f>>2]|0,s)c=f;else{s=0;break}for(;;){if(f=s+20|0,d=n[f>>2]|0,d|0){s=d,c=f;continue}if(f=s+16|0,d=n[f>>2]|0,d)s=d,c=f;else break}n[c>>2]=0}else qe=n[l+8>>2]|0,n[qe+12>>2]=s,n[s+8>>2]=qe;while(0);if(!m)break;c=n[l+28>>2]|0,f=11436+(c<<2)|0;do if((l|0)!=(n[f>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=s,!s)break e}else{if(n[f>>2]=s,s|0)break;n[2784]=n[2784]&~(1<<c);break e}while(0);if(n[s+24>>2]=m,c=l+16|0,f=n[c>>2]|0,f|0&&(n[s+16>>2]=f,n[f+24>>2]=s),c=n[c+4>>2]|0,!c)break;n[s+20>>2]=c,n[c+24>>2]=s}while(0);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[O+4>>2]=d|1,n[O+d>>2]=d,l=d>>>3,d>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=O,n[l+12>>2]=O,n[O+8>>2]=l,n[O+12>>2]=c;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}Ue=(l+1048320|0)>>>16&8,qe=l<<Ue,at=(qe+520192|0)>>>16&4,qe=qe<<at,l=(qe+245760|0)>>>16&2,l=14-(at|Ue|l)+(qe<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(0);if(f=11436+(l<<2)|0,n[O+28>>2]=l,s=O+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[2784]|0,c=1<<l,!(s&c)){n[2784]=s|c,n[f>>2]=O,n[O+24>>2]=f,n[O+12>>2]=O,n[O+8>>2]=O;break}for(s=d<<((l|0)==31?0:25-(l>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){Ue=194;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=193;break}}if((Ue|0)==193){n[f>>2]=O,n[O+24>>2]=c,n[O+12>>2]=O,n[O+8>>2]=O;break}else if((Ue|0)==194){Ue=c+8|0,qe=n[Ue>>2]|0,n[qe+12>>2]=O,n[Ue>>2]=O,n[O+8>>2]=qe,n[O+12>>2]=c,n[O+24>>2]=0;break}}else qe=(n[2786]|0)+k|0,n[2786]=qe,n[2789]=O,n[O+4>>2]=qe|1;while(0);return qe=M+8|0,C=Lt,qe|0}for(l=11580;s=n[l>>2]|0,!(s>>>0<=Q>>>0&&(qe=s+(n[l+4>>2]|0)|0,qe>>>0>Q>>>0));)l=n[l+8>>2]|0;d=qe+-47|0,s=d+8|0,s=d+((s&7|0)==0?0:0-s&7)|0,d=Q+16|0,s=s>>>0<d>>>0?Q:s,l=s+8|0,c=m+8|0,c=(c&7|0)==0?0:0-c&7,Ue=m+c|0,c=B+-40-c|0,n[2789]=Ue,n[2786]=c,n[Ue+4>>2]=c|1,n[Ue+c+4>>2]=40,n[2790]=n[2905],c=s+4|0,n[c>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=s+24|0;do Ue=l,l=l+4|0,n[l>>2]=7;while((Ue+8|0)>>>0<qe>>>0);if((s|0)!=(Q|0)){if(m=s-Q|0,n[c>>2]=n[c>>2]&-2,n[Q+4>>2]=m|1,n[s>>2]=m,l=m>>>3,m>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=Q,n[l+12>>2]=Q,n[Q+8>>2]=l,n[Q+12>>2]=c;break}if(l=m>>>8,l?m>>>0>16777215?c=31:(Ue=(l+1048320|0)>>>16&8,qe=l<<Ue,at=(qe+520192|0)>>>16&4,qe=qe<<at,c=(qe+245760|0)>>>16&2,c=14-(at|Ue|c)+(qe<<c>>>15)|0,c=m>>>(c+7|0)&1|c<<1):c=0,f=11436+(c<<2)|0,n[Q+28>>2]=c,n[Q+20>>2]=0,n[d>>2]=0,l=n[2784]|0,s=1<<c,!(l&s)){n[2784]=l|s,n[f>>2]=Q,n[Q+24>>2]=f,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}for(s=m<<((c|0)==31?0:25-(c>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(m|0)){Ue=216;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=215;break}}if((Ue|0)==215){n[f>>2]=Q,n[Q+24>>2]=c,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}else if((Ue|0)==216){Ue=c+8|0,qe=n[Ue>>2]|0,n[qe+12>>2]=Q,n[Ue>>2]=Q,n[Q+8>>2]=qe,n[Q+12>>2]=c,n[Q+24>>2]=0;break}}}else{qe=n[2787]|0,(qe|0)==0|m>>>0<qe>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do qe=11172+(l<<1<<2)|0,n[qe+12>>2]=qe,n[qe+8>>2]=qe,l=l+1|0;while((l|0)!=32);qe=m+8|0,qe=(qe&7|0)==0?0:0-qe&7,Ue=m+qe|0,qe=B+-40-qe|0,n[2789]=Ue,n[2786]=qe,n[Ue+4>>2]=qe|1,n[Ue+qe+4>>2]=40,n[2790]=n[2905]}while(0);if(l=n[2786]|0,l>>>0>q>>>0)return at=l-q|0,n[2786]=at,qe=n[2789]|0,Ue=qe+q|0,n[2789]=Ue,n[Ue+4>>2]=at|1,n[qe+4>>2]=q|3,qe=qe+8|0,C=Lt,qe|0}return n[(Vm()|0)>>2]=12,qe=0,C=Lt,qe|0}function hD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(!!s){c=s+-8|0,d=n[2787]|0,s=n[s+-4>>2]|0,l=s&-8,Q=c+l|0;do if(s&1)k=c,B=c;else{if(f=n[c>>2]|0,!(s&3)||(B=c+(0-f)|0,m=f+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(s=Q+4|0,l=n[s>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[s>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(c=f>>>3,f>>>0<256)if(s=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(s|0)){n[2783]=n[2783]&~(1<<c),k=B,l=m;break}else{n[s+12>>2]=l,n[l+8>>2]=s,k=B,l=m;break}d=n[B+24>>2]|0,s=n[B+12>>2]|0;do if((s|0)==(B|0)){if(c=B+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{s=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=s,n[s+8>>2]=k;while(0);if(d){if(l=n[B+28>>2]|0,c=11436+(l<<2)|0,(B|0)==(n[c>>2]|0)){if(n[c>>2]=s,!s){n[2784]=n[2784]&~(1<<l),k=B,l=m;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(B|0)&1)<<2)>>2]=s,!s){k=B,l=m;break}n[s+24>>2]=d,l=B+16|0,c=n[l>>2]|0,c|0&&(n[s+16>>2]=c,n[c+24>>2]=s),l=n[l+4>>2]|0,l?(n[s+20>>2]=l,n[l+24>>2]=s,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(0);if(!(B>>>0>=Q>>>0)&&(s=Q+4|0,f=n[s>>2]|0,!!(f&1))){if(f&2)n[s>>2]=f&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(s=n[2788]|0,(Q|0)==(n[2789]|0)){if(Q=(n[2786]|0)+l|0,n[2786]=Q,n[2789]=k,n[k+4>>2]=Q|1,(k|0)!=(s|0))return;n[2788]=0,n[2785]=0;return}if((Q|0)==(s|0)){Q=(n[2785]|0)+l|0,n[2785]=Q,n[2788]=B,n[k+4>>2]=Q|1,n[B+Q>>2]=Q;return}d=(f&-8)+l|0,c=f>>>3;do if(f>>>0<256)if(l=n[Q+8>>2]|0,s=n[Q+12>>2]|0,(s|0)==(l|0)){n[2783]=n[2783]&~(1<<c);break}else{n[l+12>>2]=s,n[s+8>>2]=l;break}else{m=n[Q+24>>2]|0,s=n[Q+12>>2]|0;do if((s|0)==(Q|0)){if(c=Q+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{c=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0,c=s}else c=n[Q+8>>2]|0,n[c+12>>2]=s,n[s+8>>2]=c,c=s;while(0);if(m|0){if(s=n[Q+28>>2]|0,l=11436+(s<<2)|0,(Q|0)==(n[l>>2]|0)){if(n[l>>2]=c,!c){n[2784]=n[2784]&~(1<<s);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=m,s=Q+16|0,l=n[s>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),s=n[s+4>>2]|0,s|0&&(n[c+20>>2]=s,n[s+24>>2]=c)}}while(0);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(s=d>>>3,d>>>0<256){c=11172+(s<<1<<2)|0,l=n[2783]|0,s=1<<s,l&s?(l=c+8|0,s=n[l>>2]|0):(n[2783]=l|s,s=c,l=c+8|0),n[l>>2]=k,n[s+12>>2]=k,n[k+8>>2]=s,n[k+12>>2]=c;return}s=d>>>8,s?d>>>0>16777215?s=31:(B=(s+1048320|0)>>>16&8,Q=s<<B,m=(Q+520192|0)>>>16&4,Q=Q<<m,s=(Q+245760|0)>>>16&2,s=14-(m|B|s)+(Q<<s>>>15)|0,s=d>>>(s+7|0)&1|s<<1):s=0,f=11436+(s<<2)|0,n[k+28>>2]=s,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,c=1<<s;do if(l&c){for(l=d<<((s|0)==31?0:25-(s>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){s=73;break}if(f=c+16+(l>>>31<<2)|0,s=n[f>>2]|0,s)l=l<<1,c=s;else{s=72;break}}if((s|0)==72){n[f>>2]=k,n[k+24>>2]=c,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((s|0)==73){B=c+8|0,Q=n[B>>2]|0,n[Q+12>>2]=k,n[B>>2]=k,n[k+8>>2]=Q,n[k+12>>2]=c,n[k+24>>2]=0;break}}else n[2784]=l|c,n[f>>2]=k,n[k+24>>2]=f,n[k+12>>2]=k,n[k+8>>2]=k;while(0);if(Q=(n[2791]|0)+-1|0,n[2791]=Q,!Q)s=11588;else return;for(;s=n[s>>2]|0,s;)s=s+8|0;n[2791]=-1}}}function kUe(){return 11628}function QUe(s){s=s|0;var l=0,c=0;return l=C,C=C+16|0,c=l,n[c>>2]=RUe(n[s+60>>2]|0)|0,s=gD(hc(6,c|0)|0)|0,C=l,s|0}function s7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0;q=C,C=C+48|0,O=q+16|0,m=q,d=q+32|0,k=s+28|0,f=n[k>>2]|0,n[d>>2]=f,Q=s+20|0,f=(n[Q>>2]|0)-f|0,n[d+4>>2]=f,n[d+8>>2]=l,n[d+12>>2]=c,f=f+c|0,B=s+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=gD(Li(146,m|0)|0)|0;e:do if((f|0)!=(m|0)){for(l=2;!((m|0)<0);)if(f=f-m|0,Ge=n[d+4>>2]|0,se=m>>>0>Ge>>>0,d=se?d+8|0:d,l=(se<<31>>31)+l|0,Ge=m-(se?Ge:0)|0,n[d>>2]=(n[d>>2]|0)+Ge,se=d+4|0,n[se>>2]=(n[se>>2]|0)-Ge,n[O>>2]=n[B>>2],n[O+4>>2]=d,n[O+8>>2]=l,m=gD(Li(146,O|0)|0)|0,(f|0)==(m|0)){M=3;break e}n[s+16>>2]=0,n[k>>2]=0,n[Q>>2]=0,n[s>>2]=n[s>>2]|32,(l|0)==2?c=0:c=c-(n[d+4>>2]|0)|0}else M=3;while(0);return(M|0)==3&&(Ge=n[s+44>>2]|0,n[s+16>>2]=Ge+(n[s+48>>2]|0),n[k>>2]=Ge,n[Q>>2]=Ge),C=q,c|0}function FUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return d=C,C=C+32|0,m=d,f=d+20|0,n[m>>2]=n[s+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=f,n[m+16>>2]=c,(gD(sa(140,m|0)|0)|0)<0?(n[f>>2]=-1,s=-1):s=n[f>>2]|0,C=d,s|0}function gD(s){return s=s|0,s>>>0>4294963200&&(n[(Vm()|0)>>2]=0-s,s=-1),s|0}function Vm(){return(TUe()|0)+64|0}function TUe(){return xT()|0}function xT(){return 2084}function RUe(s){return s=s|0,s|0}function NUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return d=C,C=C+32|0,f=d,n[s+36>>2]=1,(n[s>>2]&64|0)==0&&(n[f>>2]=n[s+60>>2],n[f+4>>2]=21523,n[f+8>>2]=d+16,fu(54,f|0)|0)&&(o[s+75>>0]=-1),f=s7(s,l,c)|0,C=d,f|0}function o7(s,l){s=s|0,l=l|0;var c=0,f=0;if(c=o[s>>0]|0,f=o[l>>0]|0,c<<24>>24==0||c<<24>>24!=f<<24>>24)s=f;else{do s=s+1|0,l=l+1|0,c=o[s>>0]|0,f=o[l>>0]|0;while(!(c<<24>>24==0||c<<24>>24!=f<<24>>24));s=f}return(c&255)-(s&255)|0}function LUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;e:do if(!c)s=0;else{for(;f=o[s>>0]|0,d=o[l>>0]|0,f<<24>>24==d<<24>>24;)if(c=c+-1|0,c)s=s+1|0,l=l+1|0;else{s=0;break e}s=(f&255)-(d&255)|0}while(0);return s|0}function a7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0;Fe=C,C=C+224|0,M=Fe+120|0,q=Fe+80|0,Ge=Fe,Oe=Fe+136|0,f=q,d=f+40|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(d|0));return n[M>>2]=n[c>>2],(bT(0,l,M,Ge,q)|0)<0?c=-1:((n[s+76>>2]|0)>-1?se=MUe(s)|0:se=0,c=n[s>>2]|0,O=c&32,(o[s+74>>0]|0)<1&&(n[s>>2]=c&-33),f=s+48|0,n[f>>2]|0?c=bT(s,l,M,Ge,q)|0:(d=s+44|0,m=n[d>>2]|0,n[d>>2]=Oe,B=s+28|0,n[B>>2]=Oe,k=s+20|0,n[k>>2]=Oe,n[f>>2]=80,Q=s+16|0,n[Q>>2]=Oe+80,c=bT(s,l,M,Ge,q)|0,m&&(ED[n[s+36>>2]&7](s,0,0)|0,c=(n[k>>2]|0)==0?-1:c,n[d>>2]=m,n[f>>2]=0,n[Q>>2]=0,n[B>>2]=0,n[k>>2]=0)),f=n[s>>2]|0,n[s>>2]=f|O,se|0&&OUe(s),c=(f&32|0)==0?c:-1),C=Fe,c|0}function bT(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0,et=0,Xe=0,at=0,Ue=0,qe=0,Lt=0,Or=0,or=0,Xt=0,Pr=0,Nr=0,ir=0;ir=C,C=C+64|0,or=ir+16|0,Xt=ir,Lt=ir+24|0,Pr=ir+8|0,Nr=ir+20|0,n[or>>2]=l,at=(s|0)!=0,Ue=Lt+40|0,qe=Ue,Lt=Lt+39|0,Or=Pr+4|0,B=0,m=0,M=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Vm()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(0);if(B=o[l>>0]|0,B<<24>>24)k=l;else{Xe=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Xe=9;break t}case 0:{B=k;break t}default:}et=k+1|0,n[or>>2]=et,B=o[et>>0]|0,k=et}t:do if((Xe|0)==9)for(;;){if(Xe=0,(o[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[or>>2]=k,(o[k>>0]|0)==37)Xe=9;else break}while(0);if(B=B-l|0,at&&ss(s,l,B),B|0){l=k;continue}Q=k+1|0,B=(o[Q>>0]|0)+-48|0,B>>>0<10?(et=(o[k+2>>0]|0)==36,Fe=et?B:-1,M=et?1:M,Q=et?k+3|0:Q):Fe=-1,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(O=0,q=B;;){if(B=1<<k,!(B&75913)){B=q;break t}if(O=B|O,Q=Q+1|0,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else O=0;while(0);if(B<<24>>24==42){if(k=Q+1|0,B=(o[k>>0]|0)+-48|0,B>>>0<10&&(o[Q+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[f+((o[k>>0]|0)+-48<<3)>>2]|0,M=1,Q=Q+3|0;else{if(M|0){m=-1;break}at?(M=(n[c>>2]|0)+(4-1)&~(4-1),B=n[M>>2]|0,n[c>>2]=M+4,M=0,Q=k):(B=0,M=0,Q=k)}n[or>>2]=Q,et=(B|0)<0,B=et?0-B|0:B,O=et?O|8192:O}else{if(B=l7(or)|0,(B|0)<0){m=-1;break}Q=n[or>>2]|0}do if((o[Q>>0]|0)==46){if((o[Q+1>>0]|0)!=42){n[or>>2]=Q+1,k=l7(or)|0,Q=n[or>>2]|0;break}if(q=Q+2|0,k=(o[q>>0]|0)+-48|0,k>>>0<10&&(o[Q+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[f+((o[q>>0]|0)+-48<<3)>>2]|0,Q=Q+4|0,n[or>>2]=Q;break}if(M|0){m=-1;break e}at?(et=(n[c>>2]|0)+(4-1)&~(4-1),k=n[et>>2]|0,n[c>>2]=et+4):k=0,n[or>>2]=q,Q=q}else k=-1;while(0);for(Oe=0;;){if(((o[Q>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(et=Q+1|0,n[or>>2]=et,q=o[(o[Q>>0]|0)+-65+(5178+(Oe*58|0))>>0]|0,se=q&255,(se+-1|0)>>>0<8)Oe=se,Q=et;else break}if(!(q<<24>>24)){m=-1;break}Ge=(Fe|0)>-1;do if(q<<24>>24==19)if(Ge){m=-1;break e}else Xe=49;else{if(Ge){n[d+(Fe<<2)>>2]=se,Ge=f+(Fe<<3)|0,Fe=n[Ge+4>>2]|0,Xe=Xt,n[Xe>>2]=n[Ge>>2],n[Xe+4>>2]=Fe,Xe=49;break}if(!at){m=0;break e}c7(Xt,se,c)}while(0);if((Xe|0)==49&&(Xe=0,!at)){B=0,l=et;continue}Q=o[Q>>0]|0,Q=(Oe|0)!=0&(Q&15|0)==3?Q&-33:Q,Ge=O&-65537,Fe=(O&8192|0)==0?O:Ge;t:do switch(Q|0){case 110:switch((Oe&255)<<24>>24){case 0:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 1:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 2:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}case 3:{a[n[Xt>>2]>>1]=m,B=0,l=et;continue e}case 4:{o[n[Xt>>2]>>0]=m,B=0,l=et;continue e}case 6:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 7:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}default:{B=0,l=et;continue e}}case 112:{Q=120,k=k>>>0>8?k:8,l=Fe|8,Xe=61;break}case 88:case 120:{l=Fe,Xe=61;break}case 111:{Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,se=_Ue(l,Q,Ue)|0,Ge=qe-se|0,O=0,q=5642,k=(Fe&8|0)==0|(k|0)>(Ge|0)?k:Ge+1|0,Ge=Fe,Xe=67;break}case 105:case 100:if(Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,(Q|0)<0){l=dD(0,0,l|0,Q|0)|0,Q=De,O=Xt,n[O>>2]=l,n[O+4>>2]=Q,O=1,q=5642,Xe=66;break t}else{O=(Fe&2049|0)!=0&1,q=(Fe&2048|0)==0?(Fe&1|0)==0?5642:5644:5643,Xe=66;break t}case 117:{Q=Xt,O=0,q=5642,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,Xe=66;break}case 99:{o[Lt>>0]=n[Xt>>2],l=Lt,O=0,q=5642,se=Ue,Q=1,k=Ge;break}case 109:{Q=HUe(n[(Vm()|0)>>2]|0)|0,Xe=71;break}case 115:{Q=n[Xt>>2]|0,Q=Q|0?Q:5652,Xe=71;break}case 67:{n[Pr>>2]=n[Xt>>2],n[Or>>2]=0,n[Xt>>2]=Pr,se=-1,Q=Pr,Xe=75;break}case 83:{l=n[Xt>>2]|0,k?(se=k,Q=l,Xe=75):(Bs(s,32,B,0,Fe),l=0,Xe=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=qUe(s,+E[Xt>>3],B,k,Fe,Q)|0,l=et;continue e}default:O=0,q=5642,se=Ue,Q=k,k=Fe}while(0);t:do if((Xe|0)==61)Fe=Xt,Oe=n[Fe>>2]|0,Fe=n[Fe+4>>2]|0,se=UUe(Oe,Fe,Ue,Q&32)|0,q=(l&8|0)==0|(Oe|0)==0&(Fe|0)==0,O=q?0:2,q=q?5642:5642+(Q>>4)|0,Ge=l,l=Oe,Q=Fe,Xe=67;else if((Xe|0)==66)se=Km(l,Q,Ue)|0,Ge=Fe,Xe=67;else if((Xe|0)==71)Xe=0,Fe=jUe(Q,0,k)|0,Oe=(Fe|0)==0,l=Q,O=0,q=5642,se=Oe?Q+k|0:Fe,Q=Oe?k:Fe-Q|0,k=Ge;else if((Xe|0)==75){for(Xe=0,q=Q,l=0,k=0;O=n[q>>2]|0,!(!O||(k=u7(Nr,O)|0,(k|0)<0|k>>>0>(se-l|0)>>>0));)if(l=k+l|0,se>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(Bs(s,32,B,l,Fe),!l)l=0,Xe=84;else for(O=0;;){if(k=n[Q>>2]|0,!k){Xe=84;break t}if(k=u7(Nr,k)|0,O=k+O|0,(O|0)>(l|0)){Xe=84;break t}if(ss(s,Nr,k),O>>>0>=l>>>0){Xe=84;break}else Q=Q+4|0}}while(0);if((Xe|0)==67)Xe=0,Q=(l|0)!=0|(Q|0)!=0,Fe=(k|0)!=0|Q,Q=((Q^1)&1)+(qe-se)|0,l=Fe?se:Ue,se=Ue,Q=Fe?(k|0)>(Q|0)?k:Q:k,k=(k|0)>-1?Ge&-65537:Ge;else if((Xe|0)==84){Xe=0,Bs(s,32,B,l,Fe^8192),B=(B|0)>(l|0)?B:l,l=et;continue}Oe=se-l|0,Ge=(Q|0)<(Oe|0)?Oe:Q,Fe=Ge+O|0,B=(B|0)<(Fe|0)?Fe:B,Bs(s,32,B,Fe,k),ss(s,q,O),Bs(s,48,B,Fe,k^65536),Bs(s,48,Ge,Oe,0),ss(s,l,Oe),Bs(s,32,B,Fe,k^8192),l=et}e:do if((Xe|0)==87&&!s)if(!M)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(c7(f+(m<<3)|0,l,c),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(0);return C=ir,m|0}function MUe(s){return s=s|0,0}function OUe(s){s=s|0}function ss(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]&32||ZUe(l,c,s)|0}function l7(s){s=s|0;var l=0,c=0,f=0;if(c=n[s>>2]|0,f=(o[c>>0]|0)+-48|0,f>>>0<10){l=0;do l=f+(l*10|0)|0,c=c+1|0,n[s>>2]=c,f=(o[c>>0]|0)+-48|0;while(f>>>0<10)}else l=0;return l|0}function c7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,n[s>>2]=l;break e}case 10:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=0;break e}case 12:{f=(n[c>>2]|0)+(8-1)&~(8-1),l=f,d=n[l>>2]|0,l=n[l+4>>2]|0,n[c>>2]=f+8,f=s,n[f>>2]=d,n[f+4>>2]=l;break e}case 13:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&65535)<<16>>16,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 14:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&65535,n[d+4>>2]=0;break e}case 15:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&255)<<24>>24,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 16:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&255,n[d+4>>2]=0;break e}case 17:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}case 18:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}default:break e}while(0);while(0)}function UUe(s,l,c,f){if(s=s|0,l=l|0,c=c|0,f=f|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=u[5694+(s&15)>>0]|0|f,s=mD(s|0,l|0,4)|0,l=De;while(!((s|0)==0&(l|0)==0));return c|0}function _Ue(s,l,c){if(s=s|0,l=l|0,c=c|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=s&7|48,s=mD(s|0,l|0,3)|0,l=De;while(!((s|0)==0&(l|0)==0));return c|0}function Km(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if(l>>>0>0|(l|0)==0&s>>>0>4294967295){for(;f=TT(s|0,l|0,10,0)|0,c=c+-1|0,o[c>>0]=f&255|48,f=s,s=FT(s|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&f>>>0>4294967295;)l=De;l=s}else l=s;if(l)for(;c=c+-1|0,o[c>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return c|0}function HUe(s){return s=s|0,KUe(s,n[(VUe()|0)+188>>2]|0)|0}function jUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;m=l&255,f=(c|0)!=0;e:do if(f&(s&3|0)!=0)for(d=l&255;;){if((o[s>>0]|0)==d<<24>>24){B=6;break e}if(s=s+1|0,c=c+-1|0,f=(c|0)!=0,!(f&(s&3|0)!=0)){B=5;break}}else B=5;while(0);(B|0)==5&&(f?B=6:c=0);e:do if((B|0)==6&&(d=l&255,(o[s>>0]|0)!=d<<24>>24)){f=He(m,16843009)|0;t:do if(c>>>0>3){for(;m=n[s>>2]^f,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(s=s+4|0,c=c+-4|0,c>>>0<=3){B=11;break t}}else B=11;while(0);if((B|0)==11&&!c){c=0;break}for(;;){if((o[s>>0]|0)==d<<24>>24)break e;if(s=s+1|0,c=c+-1|0,!c){c=0;break}}}while(0);return(c|0?s:0)|0}function Bs(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0;if(B=C,C=C+256|0,m=B,(c|0)>(f|0)&(d&73728|0)==0){if(d=c-f|0,zm(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=c-f|0;do ss(s,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}ss(s,m,d)}C=B}function u7(s,l){return s=s|0,l=l|0,s?s=YUe(s,l,0)|0:s=0,s|0}function qUe(s,l,c,f,d,m){s=s|0,l=+l,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0,Fe=0,et=0,Xe=0,at=0,Ue=0,qe=0,Lt=0,Or=0,or=0,Xt=0,Pr=0,Nr=0,ir=0,bn=0;bn=C,C=C+560|0,Q=bn+8|0,et=bn,ir=bn+524|0,Nr=ir,O=bn+512|0,n[et>>2]=0,Pr=O+12|0,A7(l)|0,(De|0)<0?(l=-l,or=1,Or=5659):(or=(d&2049|0)!=0&1,Or=(d&2048|0)==0?(d&1|0)==0?5660:5665:5662),A7(l)|0,Xt=De&2146435072;do if(Xt>>>0<2146435072|(Xt|0)==2146435072&0<0){if(Ge=+GUe(l,et)*2,B=Ge!=0,B&&(n[et>>2]=(n[et>>2]|0)+-1),at=m|32,(at|0)==97){Oe=m&32,se=(Oe|0)==0?Or:Or+9|0,q=or|2,B=12-f|0;do if(f>>>0>11|(B|0)==0)l=Ge;else{l=8;do B=B+-1|0,l=l*16;while((B|0)!=0);if((o[se>>0]|0)==45){l=-(l+(-Ge-l));break}else{l=Ge+l-l;break}}while(0);k=n[et>>2]|0,B=(k|0)<0?0-k|0:k,B=Km(B,((B|0)<0)<<31>>31,Pr)|0,(B|0)==(Pr|0)&&(B=O+11|0,o[B>>0]=48),o[B+-1>>0]=(k>>31&2)+43,M=B+-2|0,o[M>>0]=m+15,O=(f|0)<1,Q=(d&8|0)==0,B=ir;do Xt=~~l,k=B+1|0,o[B>>0]=u[5694+Xt>>0]|Oe,l=(l-+(Xt|0))*16,(k-Nr|0)==1&&!(Q&(O&l==0))?(o[k>>0]=46,B=B+2|0):B=k;while(l!=0);Xt=B-Nr|0,Nr=Pr-M|0,Pr=(f|0)!=0&(Xt+-2|0)<(f|0)?f+2|0:Xt,B=Nr+q+Pr|0,Bs(s,32,c,B,d),ss(s,se,q),Bs(s,48,c,B,d^65536),ss(s,ir,Xt),Bs(s,48,Pr-Xt|0,0,0),ss(s,M,Nr),Bs(s,32,c,B,d^8192);break}k=(f|0)<0?6:f,B?(B=(n[et>>2]|0)+-28|0,n[et>>2]=B,l=Ge*268435456):(l=Ge,B=n[et>>2]|0),Xt=(B|0)<0?Q:Q+288|0,Q=Xt;do qe=~~l>>>0,n[Q>>2]=qe,Q=Q+4|0,l=(l-+(qe>>>0))*1e9;while(l!=0);if((B|0)>0)for(O=Xt,q=Q;;){if(M=(B|0)<29?B:29,B=q+-4|0,B>>>0>=O>>>0){Q=0;do Ue=m7(n[B>>2]|0,0,M|0)|0,Ue=QT(Ue|0,De|0,Q|0,0)|0,qe=De,Xe=TT(Ue|0,qe|0,1e9,0)|0,n[B>>2]=Xe,Q=FT(Ue|0,qe|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=O>>>0);Q&&(O=O+-4|0,n[O>>2]=Q)}for(Q=q;!(Q>>>0<=O>>>0);)if(B=Q+-4|0,!(n[B>>2]|0))Q=B;else break;if(B=(n[et>>2]|0)-M|0,n[et>>2]=B,(B|0)>0)q=Q;else break}else O=Xt;if((B|0)<0){f=((k+25|0)/9|0)+1|0,Fe=(at|0)==102;do{if(Oe=0-B|0,Oe=(Oe|0)<9?Oe:9,O>>>0<Q>>>0){M=(1<<Oe)+-1|0,q=1e9>>>Oe,se=0,B=O;do qe=n[B>>2]|0,n[B>>2]=(qe>>>Oe)+se,se=He(qe&M,q)|0,B=B+4|0;while(B>>>0<Q>>>0);B=(n[O>>2]|0)==0?O+4|0:O,se?(n[Q>>2]=se,O=B,B=Q+4|0):(O=B,B=Q)}else O=(n[O>>2]|0)==0?O+4|0:O,B=Q;Q=Fe?Xt:O,Q=(B-Q>>2|0)>(f|0)?Q+(f<<2)|0:B,B=(n[et>>2]|0)+Oe|0,n[et>>2]=B}while((B|0)<0);B=O,f=Q}else B=O,f=Q;if(qe=Xt,B>>>0<f>>>0){if(Q=(qe-B>>2)*9|0,M=n[B>>2]|0,M>>>0>=10){O=10;do O=O*10|0,Q=Q+1|0;while(M>>>0>=O>>>0)}}else Q=0;if(Fe=(at|0)==103,Xe=(k|0)!=0,O=k-((at|0)!=102?Q:0)+((Xe&Fe)<<31>>31)|0,(O|0)<(((f-qe>>2)*9|0)+-9|0)){if(O=O+9216|0,Oe=Xt+4+(((O|0)/9|0)+-1024<<2)|0,O=((O|0)%9|0)+1|0,(O|0)<9){M=10;do M=M*10|0,O=O+1|0;while((O|0)!=9)}else M=10;if(q=n[Oe>>2]|0,se=(q>>>0)%(M>>>0)|0,O=(Oe+4|0)==(f|0),O&(se|0)==0)O=Oe;else if(Ge=(((q>>>0)/(M>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,Ue=(M|0)/2|0,l=se>>>0<Ue>>>0?.5:O&(se|0)==(Ue|0)?1:1.5,or&&(Ue=(o[Or>>0]|0)==45,l=Ue?-l:l,Ge=Ue?-Ge:Ge),O=q-se|0,n[Oe>>2]=O,Ge+l!=Ge){if(Ue=O+M|0,n[Oe>>2]=Ue,Ue>>>0>999999999)for(Q=Oe;O=Q+-4|0,n[Q>>2]=0,O>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),Ue=(n[O>>2]|0)+1|0,n[O>>2]=Ue,Ue>>>0>999999999;)Q=O;else O=Oe;if(Q=(qe-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){M=10;do M=M*10|0,Q=Q+1|0;while(q>>>0>=M>>>0)}}else O=Oe;O=O+4|0,O=f>>>0>O>>>0?O:f,Ue=B}else O=f,Ue=B;for(at=O;;){if(at>>>0<=Ue>>>0){et=0;break}if(B=at+-4|0,!(n[B>>2]|0))at=B;else{et=1;break}}f=0-Q|0;do if(Fe)if(B=((Xe^1)&1)+k|0,(B|0)>(Q|0)&(Q|0)>-5?(M=m+-1|0,k=B+-1-Q|0):(M=m+-2|0,k=B+-1|0),B=d&8,B)Oe=B;else{if(et&&(Lt=n[at+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)O=0;else{O=0,B=10;do B=B*10|0,O=O+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else O=9;if(B=((at-qe>>2)*9|0)+-9|0,(M|32|0)==102){Oe=B-O|0,Oe=(Oe|0)>0?Oe:0,k=(k|0)<(Oe|0)?k:Oe,Oe=0;break}else{Oe=B+Q-O|0,Oe=(Oe|0)>0?Oe:0,k=(k|0)<(Oe|0)?k:Oe,Oe=0;break}}else M=m,Oe=d&8;while(0);if(Fe=k|Oe,q=(Fe|0)!=0&1,se=(M|32|0)==102,se)Xe=0,B=(Q|0)>0?Q:0;else{if(B=(Q|0)<0?f:Q,B=Km(B,((B|0)<0)<<31>>31,Pr)|0,O=Pr,(O-B|0)<2)do B=B+-1|0,o[B>>0]=48;while((O-B|0)<2);o[B+-1>>0]=(Q>>31&2)+43,B=B+-2|0,o[B>>0]=M,Xe=B,B=O-B|0}if(B=or+1+k+q+B|0,Bs(s,32,c,B,d),ss(s,Or,or),Bs(s,48,c,B,d^65536),se){M=Ue>>>0>Xt>>>0?Xt:Ue,Oe=ir+9|0,q=Oe,se=ir+8|0,O=M;do{if(Q=Km(n[O>>2]|0,0,Oe)|0,(O|0)==(M|0))(Q|0)==(Oe|0)&&(o[se>>0]=48,Q=se);else if(Q>>>0>ir>>>0){zm(ir|0,48,Q-Nr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}ss(s,Q,q-Q|0),O=O+4|0}while(O>>>0<=Xt>>>0);if(Fe|0&&ss(s,5710,1),O>>>0<at>>>0&(k|0)>0)for(;;){if(Q=Km(n[O>>2]|0,0,Oe)|0,Q>>>0>ir>>>0){zm(ir|0,48,Q-Nr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}if(ss(s,Q,(k|0)<9?k:9),O=O+4|0,Q=k+-9|0,O>>>0<at>>>0&(k|0)>9)k=Q;else{k=Q;break}}Bs(s,48,k+9|0,9,0)}else{if(Fe=et?at:Ue+4|0,(k|0)>-1){et=ir+9|0,Oe=(Oe|0)==0,f=et,q=0-Nr|0,se=ir+8|0,M=Ue;do{Q=Km(n[M>>2]|0,0,et)|0,(Q|0)==(et|0)&&(o[se>>0]=48,Q=se);do if((M|0)==(Ue|0)){if(O=Q+1|0,ss(s,Q,1),Oe&(k|0)<1){Q=O;break}ss(s,5710,1),Q=O}else{if(Q>>>0<=ir>>>0)break;zm(ir|0,48,Q+q|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}while(0);Nr=f-Q|0,ss(s,Q,(k|0)>(Nr|0)?Nr:k),k=k-Nr|0,M=M+4|0}while(M>>>0<Fe>>>0&(k|0)>-1)}Bs(s,48,k+18|0,18,0),ss(s,Xe,Pr-Xe|0)}Bs(s,32,c,B,d^8192)}else ir=(m&32|0)!=0,B=or+3|0,Bs(s,32,c,B,d&-65537),ss(s,Or,or),ss(s,l!=l|!1?ir?5686:5690:ir?5678:5682,3),Bs(s,32,c,B,d^8192);while(0);return C=bn,((B|0)<(c|0)?c:B)|0}function A7(s){s=+s;var l=0;return E[v>>3]=s,l=n[v>>2]|0,De=n[v+4>>2]|0,l|0}function GUe(s,l){return s=+s,l=l|0,+ +f7(s,l)}function f7(s,l){s=+s,l=l|0;var c=0,f=0,d=0;switch(E[v>>3]=s,c=n[v>>2]|0,f=n[v+4>>2]|0,d=mD(c|0,f|0,52)|0,d&2047){case 0:{s!=0?(s=+f7(s*18446744073709552e3,l),c=(n[l>>2]|0)+-64|0):c=0,n[l>>2]=c;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[v>>2]=c,n[v+4>>2]=f&-2146435073|1071644672,s=+E[v>>3]}return+s}function YUe(s,l,c){s=s|0,l=l|0,c=c|0;do if(s){if(l>>>0<128){o[s>>0]=l,s=1;break}if(!(n[n[(WUe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){o[s>>0]=l,s=1;break}else{n[(Vm()|0)>>2]=84,s=-1;break}if(l>>>0<2048){o[s>>0]=l>>>6|192,o[s+1>>0]=l&63|128,s=2;break}if(l>>>0<55296|(l&-8192|0)==57344){o[s>>0]=l>>>12|224,o[s+1>>0]=l>>>6&63|128,o[s+2>>0]=l&63|128,s=3;break}if((l+-65536|0)>>>0<1048576){o[s>>0]=l>>>18|240,o[s+1>>0]=l>>>12&63|128,o[s+2>>0]=l>>>6&63|128,o[s+3>>0]=l&63|128,s=4;break}else{n[(Vm()|0)>>2]=84,s=-1;break}}else s=1;while(0);return s|0}function WUe(){return xT()|0}function VUe(){return xT()|0}function KUe(s,l){s=s|0,l=l|0;var c=0,f=0;for(f=0;;){if((u[5712+f>>0]|0)==(s|0)){s=2;break}if(c=f+1|0,(c|0)==87){c=5800,f=87,s=5;break}else f=c}if((s|0)==2&&(f?(c=5800,s=5):c=5800),(s|0)==5)for(;;){do s=c,c=c+1|0;while((o[s>>0]|0)!=0);if(f=f+-1|0,f)s=5;else break}return JUe(c,n[l+20>>2]|0)|0}function JUe(s,l){return s=s|0,l=l|0,zUe(s,l)|0}function zUe(s,l){return s=s|0,l=l|0,l?l=XUe(n[l>>2]|0,n[l+4>>2]|0,s)|0:l=0,(l|0?l:s)|0}function XUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0;se=(n[s>>2]|0)+1794895138|0,m=Fg(n[s+8>>2]|0,se)|0,f=Fg(n[s+12>>2]|0,se)|0,d=Fg(n[s+16>>2]|0,se)|0;e:do if(m>>>0<l>>>2>>>0&&(q=l-(m<<2)|0,f>>>0<q>>>0&d>>>0<q>>>0)&&((d|f)&3|0)==0){for(q=f>>>2,M=d>>>2,O=0;;){if(k=m>>>1,Q=O+k|0,B=Q<<1,d=B+q|0,f=Fg(n[s+(d<<2)>>2]|0,se)|0,d=Fg(n[s+(d+1<<2)>>2]|0,se)|0,!(d>>>0<l>>>0&f>>>0<(l-d|0)>>>0)){f=0;break e}if(o[s+(d+f)>>0]|0){f=0;break e}if(f=o7(c,s+d|0)|0,!f)break;if(f=(f|0)<0,(m|0)==1){f=0;break e}else O=f?O:Q,m=f?k:m-k|0}f=B+M|0,d=Fg(n[s+(f<<2)>>2]|0,se)|0,f=Fg(n[s+(f+1<<2)>>2]|0,se)|0,f>>>0<l>>>0&d>>>0<(l-f|0)>>>0?f=(o[s+(f+d)>>0]|0)==0?s+f|0:0:f=0}else f=0;while(0);return f|0}function Fg(s,l){s=s|0,l=l|0;var c=0;return c=C7(s|0)|0,((l|0)==0?s:c)|0}function ZUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=c+16|0,d=n[f>>2]|0,d?m=5:$Ue(c)|0?f=0:(d=n[f>>2]|0,m=5);e:do if((m|0)==5){if(k=c+20|0,B=n[k>>2]|0,f=B,(d-B|0)>>>0<l>>>0){f=ED[n[c+36>>2]&7](c,s,l)|0;break}t:do if((o[c+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=s;break t}if(d=B+-1|0,(o[s+d>>0]|0)==10)break;B=d}if(f=ED[n[c+36>>2]&7](c,s,B)|0,f>>>0<B>>>0)break e;m=B,d=s+B|0,l=l-B|0,f=n[k>>2]|0}else m=0,d=s;while(0);Dr(f|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,f=m+l|0}while(0);return f|0}function $Ue(s){s=s|0;var l=0,c=0;return l=s+74|0,c=o[l>>0]|0,o[l>>0]=c+255|c,l=n[s>>2]|0,l&8?(n[s>>2]=l|32,s=-1):(n[s+8>>2]=0,n[s+4>>2]=0,c=n[s+44>>2]|0,n[s+28>>2]=c,n[s+20>>2]=c,n[s+16>>2]=c+(n[s+48>>2]|0),s=0),s|0}function _n(s,l){s=y(s),l=y(l);var c=0,f=0;c=p7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=p7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?l:s;break}else{s=s<l?l:s;break}}else s=l;while(0);return y(s)}function p7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Tg(s,l){s=y(s),l=y(l);var c=0,f=0;c=h7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=h7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?s:l;break}else{s=s<l?s:l;break}}else s=l;while(0);return y(s)}function h7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function kT(s,l){s=y(s),l=y(l);var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,O=0;m=(h[v>>2]=s,n[v>>2]|0),k=(h[v>>2]=l,n[v>>2]|0),c=m>>>23&255,B=k>>>23&255,Q=m&-2147483648,d=k<<1;e:do if((d|0)!=0&&!((c|0)==255|((e3e(l)|0)&2147483647)>>>0>2139095040)){if(f=m<<1,f>>>0<=d>>>0)return l=y(s*y(0)),y((f|0)==(d|0)?l:s);if(c)f=m&8388607|8388608;else{if(c=m<<9,(c|0)>-1){f=c,c=0;do c=c+-1|0,f=f<<1;while((f|0)>-1)}else c=0;f=m<<1-c}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=f-k|0,m=(d|0)>-1;t:do if((c|0)>(B|0)){for(;;){if(m)if(d)f=d;else break;if(f=f<<1,c=c+-1|0,d=f-k|0,m=(d|0)>-1,(c|0)<=(B|0))break t}l=y(s*y(0));break e}while(0);if(m)if(d)f=d;else{l=y(s*y(0));break}if(f>>>0<8388608)do f=f<<1,c=c+-1|0;while(f>>>0<8388608);(c|0)>0?c=f+-8388608|c<<23:c=f>>>(1-c|0),l=(n[v>>2]=c|Q,y(h[v>>2]))}else O=3;while(0);return(O|0)==3&&(l=y(s*l),l=y(l/l)),y(l)}function e3e(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function t3e(s,l){return s=s|0,l=l|0,a7(n[582]|0,s,l)|0}function zr(s){s=s|0,Tt()}function Jm(s){s=s|0}function r3e(s,l){return s=s|0,l=l|0,0}function n3e(s){return s=s|0,(g7(s+4|0)|0)==-1?(ef[n[(n[s>>2]|0)+8>>2]&127](s),s=1):s=0,s|0}function g7(s){s=s|0;var l=0;return l=n[s>>2]|0,n[s>>2]=l+-1,l+-1|0}function bp(s){s=s|0,n3e(s)|0&&i3e(s)}function i3e(s){s=s|0;var l=0;l=s+8|0,(n[l>>2]|0)!=0&&(g7(l)|0)!=-1||ef[n[(n[s>>2]|0)+16>>2]&127](s)}function Vt(s){s=s|0;var l=0;for(l=(s|0)==0?1:s;s=pD(l)|0,!(s|0);){if(s=o3e()|0,!s){s=0;break}k7[s&0]()}return s|0}function d7(s){return s=s|0,Vt(s)|0}function gt(s){s=s|0,hD(s)}function s3e(s){s=s|0,(o[s+11>>0]|0)<0&&gt(n[s>>2]|0)}function o3e(){var s=0;return s=n[2923]|0,n[2923]=s+0,s|0}function a3e(){}function dD(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,f=l-f-(c>>>0>s>>>0|0)>>>0,De=f,s-c>>>0|0|0}function QT(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,c=s+c>>>0,De=l+f+(c>>>0<s>>>0|0)>>>0,c|0|0}function zm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(m=s+c|0,l=l&255,(c|0)>=67){for(;s&3;)o[s>>0]=l,s=s+1|0;for(f=m&-4|0,d=f-64|0,B=l|l<<8|l<<16|l<<24;(s|0)<=(d|0);)n[s>>2]=B,n[s+4>>2]=B,n[s+8>>2]=B,n[s+12>>2]=B,n[s+16>>2]=B,n[s+20>>2]=B,n[s+24>>2]=B,n[s+28>>2]=B,n[s+32>>2]=B,n[s+36>>2]=B,n[s+40>>2]=B,n[s+44>>2]=B,n[s+48>>2]=B,n[s+52>>2]=B,n[s+56>>2]=B,n[s+60>>2]=B,s=s+64|0;for(;(s|0)<(f|0);)n[s>>2]=B,s=s+4|0}for(;(s|0)<(m|0);)o[s>>0]=l,s=s+1|0;return m-c|0}function m7(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(De=l<<c|(s&(1<<c)-1<<32-c)>>>32-c,s<<c):(De=s<<c-32,0)}function mD(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(De=l>>>c,s>>>c|(l&(1<<c)-1)<<32-c):(De=0,l>>>c-32|0)}function Dr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;if((c|0)>=8192)return Ac(s|0,l|0,c|0)|0;if(m=s|0,d=s+c|0,(s&3)==(l&3)){for(;s&3;){if(!c)return m|0;o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0,c=c-1|0}for(c=d&-4|0,f=c-64|0;(s|0)<=(f|0);)n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2],n[s+16>>2]=n[l+16>>2],n[s+20>>2]=n[l+20>>2],n[s+24>>2]=n[l+24>>2],n[s+28>>2]=n[l+28>>2],n[s+32>>2]=n[l+32>>2],n[s+36>>2]=n[l+36>>2],n[s+40>>2]=n[l+40>>2],n[s+44>>2]=n[l+44>>2],n[s+48>>2]=n[l+48>>2],n[s+52>>2]=n[l+52>>2],n[s+56>>2]=n[l+56>>2],n[s+60>>2]=n[l+60>>2],s=s+64|0,l=l+64|0;for(;(s|0)<(c|0);)n[s>>2]=n[l>>2],s=s+4|0,l=l+4|0}else for(c=d-4|0;(s|0)<(c|0);)o[s>>0]=o[l>>0]|0,o[s+1>>0]=o[l+1>>0]|0,o[s+2>>0]=o[l+2>>0]|0,o[s+3>>0]=o[l+3>>0]|0,s=s+4|0,l=l+4|0;for(;(s|0)<(d|0);)o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0;return m|0}function y7(s){s=s|0;var l=0;return l=o[L+(s&255)>>0]|0,(l|0)<8?l|0:(l=o[L+(s>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=o[L+(s>>16&255)>>0]|0,(l|0)<8?l+16|0:(o[L+(s>>>24)>>0]|0)+24|0))}function E7(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,O=0,M=0,q=0,se=0,Ge=0,Oe=0;if(M=s,Q=l,O=Q,B=c,se=f,k=se,!O)return m=(d|0)!=0,k?m?(n[d>>2]=s|0,n[d+4>>2]=l&0,se=0,d=0,De=se,d|0):(se=0,d=0,De=se,d|0):(m&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),se=0,d=(M>>>0)/(B>>>0)>>>0,De=se,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(S(k|0)|0)-(S(O|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,s=M>>>(q>>>0)&l|O<<k,l=O>>>(q>>>0)&l,m=0,k=M<<k;break}return d?(n[d>>2]=s|0,n[d+4>>2]=Q|l&0,se=0,d=0,De=se,d|0):(se=0,d=0,De=se,d|0)}if(m=B-1|0,m&B|0){k=(S(B|0)|0)+33-(S(O|0)|0)|0,Oe=64-k|0,q=32-k|0,Q=q>>31,Ge=k-32|0,l=Ge>>31,B=k,s=q-1>>31&O>>>(Ge>>>0)|(O<<q|M>>>(k>>>0))&l,l=l&O>>>(k>>>0),m=M<<Oe&Q,k=(O<<Oe|M>>>(Ge>>>0))&Q|M<<q&k-33>>31;break}return d|0&&(n[d>>2]=m&M,n[d+4>>2]=0),(B|0)==1?(Ge=Q|l&0,Oe=s|0|0,De=Ge,Oe|0):(Oe=y7(B|0)|0,Ge=O>>>(Oe>>>0)|0,Oe=O<<32-Oe|M>>>(Oe>>>0)|0,De=Ge,Oe|0)}else{if(m)return d|0&&(n[d>>2]=(O>>>0)%(B>>>0),n[d+4>>2]=0),Ge=0,Oe=(O>>>0)/(B>>>0)>>>0,De=Ge,Oe|0;if(!M)return d|0&&(n[d>>2]=0,n[d+4>>2]=(O>>>0)%(k>>>0)),Ge=0,Oe=(O>>>0)/(k>>>0)>>>0,De=Ge,Oe|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=s|0,n[d+4>>2]=m&O|l&0),Ge=0,Oe=O>>>((y7(k|0)|0)>>>0),De=Ge,Oe|0;if(m=(S(k|0)|0)-(S(O|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,s=O<<k|M>>>(l>>>0),l=O>>>(l>>>0),m=0,k=M<<k;break}return d?(n[d>>2]=s|0,n[d+4>>2]=Q|l&0,Ge=0,Oe=0,De=Ge,Oe|0):(Ge=0,Oe=0,De=Ge,Oe|0)}while(0);if(!B)O=k,Q=0,k=0;else{q=c|0|0,M=se|f&0,O=QT(q|0,M|0,-1,-1)|0,c=De,Q=k,k=0;do f=Q,Q=m>>>31|Q<<1,m=k|m<<1,f=s<<1|f>>>31|0,se=s>>>31|l<<1|0,dD(O|0,c|0,f|0,se|0)|0,Oe=De,Ge=Oe>>31|((Oe|0)<0?-1:0)<<1,k=Ge&1,s=dD(f|0,se|0,Ge&q|0,(((Oe|0)<0?-1:0)>>31|((Oe|0)<0?-1:0)<<1)&M|0)|0,l=De,B=B-1|0;while((B|0)!=0);O=Q,Q=0}return B=0,d|0&&(n[d>>2]=s,n[d+4>>2]=l),Ge=(m|0)>>>31|(O|B)<<1|(B<<1|m>>>31)&0|Q,Oe=(m<<1|0>>>31)&-2|k,De=Ge,Oe|0}function FT(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,E7(s,l,c,f,0)|0}function kp(s){s=s|0;var l=0,c=0;return c=s+15&-16|0,l=n[I>>2]|0,s=l+c|0,(c|0)>0&(s|0)<(l|0)|(s|0)<0?(ie()|0,vA(12),-1):(n[I>>2]=s,(s|0)>(Z()|0)&&(X()|0)==0?(n[I>>2]=l,vA(12),-1):l|0)}function Mw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if((l|0)<(s|0)&(s|0)<(l+c|0)){for(f=s,l=l+c|0,s=s+c|0;(c|0)>0;)s=s-1|0,l=l-1|0,c=c-1|0,o[s>>0]=o[l>>0]|0;s=f}else Dr(s,l,c)|0;return s|0}function TT(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;return m=C,C=C+16|0,d=m|0,E7(s,l,c,f,d)|0,C=m,De=n[d+4>>2]|0,n[d>>2]|0|0}function C7(s){return s=s|0,(s&255)<<24|(s>>8&255)<<16|(s>>16&255)<<8|s>>>24|0}function l3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,w7[s&1](l|0,c|0,f|0,d|0,m|0)}function c3e(s,l,c){s=s|0,l=l|0,c=y(c),I7[s&1](l|0,y(c))}function u3e(s,l,c){s=s|0,l=l|0,c=+c,B7[s&31](l|0,+c)}function A3e(s,l,c,f){return s=s|0,l=l|0,c=y(c),f=y(f),y(v7[s&0](l|0,y(c),y(f)))}function f3e(s,l){s=s|0,l=l|0,ef[s&127](l|0)}function p3e(s,l,c){s=s|0,l=l|0,c=c|0,tf[s&31](l|0,c|0)}function h3e(s,l){return s=s|0,l=l|0,Ng[s&31](l|0)|0}function g3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,D7[s&1](l|0,+c,+f,d|0)}function d3e(s,l,c,f){s=s|0,l=l|0,c=+c,f=+f,z3e[s&1](l|0,+c,+f)}function m3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,ED[s&7](l|0,c|0,f|0)|0}function y3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,+X3e[s&1](l|0,c|0,f|0)}function E3e(s,l){return s=s|0,l=l|0,+P7[s&15](l|0)}function C3e(s,l,c){return s=s|0,l=l|0,c=+c,Z3e[s&1](l|0,+c)|0}function w3e(s,l,c){return s=s|0,l=l|0,c=c|0,NT[s&15](l|0,c|0)|0}function I3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=+f,d=+d,m=m|0,$3e[s&1](l|0,c|0,+f,+d,m|0)}function B3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,e_e[s&1](l|0,c|0,f|0,d|0,m|0,B|0)}function v3e(s,l,c){return s=s|0,l=l|0,c=c|0,+S7[s&7](l|0,c|0)}function D3e(s){return s=s|0,CD[s&7]()|0}function P3e(s,l,c,f,d,m){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,x7[s&1](l|0,c|0,f|0,d|0,m|0)|0}function S3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=+d,t_e[s&1](l|0,c|0,f|0,+d)}function x3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,b7[s&1](l|0,c|0,y(f),d|0,y(m),B|0)}function b3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,_w[s&15](l|0,c|0,f|0)}function k3e(s){s=s|0,k7[s&0]()}function Q3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,Q7[s&15](l|0,c|0,+f)}function F3e(s,l,c){return s=s|0,l=+l,c=+c,r_e[s&1](+l,+c)|0}function T3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,LT[s&15](l|0,c|0,f|0,d|0)}function R3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(0)}function N3e(s,l){s=s|0,l=y(l),F(1)}function ma(s,l){s=s|0,l=+l,F(2)}function L3e(s,l,c){return s=s|0,l=y(l),c=y(c),F(3),Ze}function Er(s){s=s|0,F(4)}function Ow(s,l){s=s|0,l=l|0,F(5)}function Ja(s){return s=s|0,F(6),0}function M3e(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,F(7)}function O3e(s,l,c){s=s|0,l=+l,c=+c,F(8)}function U3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(9),0}function _3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(10),0}function Rg(s){return s=s|0,F(11),0}function H3e(s,l){return s=s|0,l=+l,F(12),0}function Uw(s,l){return s=s|0,l=l|0,F(13),0}function j3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,F(14)}function q3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,F(15)}function RT(s,l){return s=s|0,l=l|0,F(16),0}function G3e(){return F(17),0}function Y3e(s,l,c,f,d){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(18),0}function W3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,F(19)}function V3e(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,F(20)}function yD(s,l,c){s=s|0,l=l|0,c=c|0,F(21)}function K3e(){F(22)}function Xm(s,l,c){s=s|0,l=l|0,c=+c,F(23)}function J3e(s,l){return s=+s,l=+l,F(24),0}function Zm(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,F(25)}var w7=[R3e,YLe],I7=[N3e,fo],B7=[ma,xw,bw,wF,IF,Dl,kw,BF,Hm,xu,Fw,vF,$v,WA,eD,jm,tD,rD,qm,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma],v7=[L3e],ef=[Er,Jm,DDe,PDe,SDe,rbe,nbe,ibe,CNe,wNe,INe,FLe,TLe,RLe,eUe,tUe,rUe,hs,Kv,_m,YA,Qw,wve,Ive,gDe,NDe,VDe,APe,SPe,GPe,aSe,ISe,MSe,$Se,gxe,Qxe,Vxe,wbe,Mbe,$be,gke,Qke,Vke,fQe,SQe,HQe,nFe,Sc,RFe,zFe,gTe,TTe,KTe,gRe,DRe,xRe,YRe,KRe,ANe,vNe,SNe,GNe,lLe,a5,qMe,COe,NOe,zOe,y4e,T4e,G4e,V4e,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er],tf=[Ow,hF,gF,Sw,Su,dF,mF,Ip,yF,EF,CF,Zv,VA,Ke,At,Wt,vr,Sn,Fr,PF,lve,Qve,dQe,kQe,MTe,WMe,dLe,Y9,Ow,Ow,Ow,Ow],Ng=[Ja,QUe,pF,D,fe,ve,vt,wt,bt,_r,di,po,sve,ove,Bve,oFe,ZTe,VNe,zMe,Wa,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja],D7=[M3e,vve],z3e=[O3e,hNe],ED=[U3e,s7,FUe,NUe,KPe,Dbe,OFe,e4e],X3e=[_3e,Exe],P7=[Rg,Yo,rt,xn,Dve,Pve,Sve,xve,bve,kve,Rg,Rg,Rg,Rg,Rg,Rg],Z3e=[H3e,IRe],NT=[Uw,r3e,ave,EDe,gPe,uSe,DSe,Xxe,Hbe,YQe,Wv,UOe,Uw,Uw,Uw,Uw],$3e=[j3e,XDe],e_e=[q3e,I4e],S7=[RT,ai,Fve,Tve,Rve,Nxe,RT,RT],CD=[G3e,Nve,Dw,ga,FRe,ZRe,QNe,X4e],x7=[Y3e,Ew],t_e=[W3e,Eke],b7=[V3e,cve],_w=[yD,R,is,en,ho,QPe,_Se,Nke,Xke,Um,hMe,vOe,M4e,yD,yD,yD],k7=[K3e],Q7=[Xm,Jv,zv,Xv,GA,nD,DF,P,nke,eTe,yRe,Xm,Xm,Xm,Xm,Xm],r_e=[J3e,yNe],LT=[Zm,nxe,hFe,ETe,aRe,ORe,iNe,ONe,pLe,rOe,lUe,Zm,Zm,Zm,Zm,Zm];return{_llvm_bswap_i32:C7,dynCall_idd:F3e,dynCall_i:D3e,_i64Subtract:dD,___udivdi3:FT,dynCall_vif:c3e,setThrew:hu,dynCall_viii:b3e,_bitshift64Lshr:mD,_bitshift64Shl:m7,dynCall_vi:f3e,dynCall_viiddi:I3e,dynCall_diii:y3e,dynCall_iii:w3e,_memset:zm,_sbrk:kp,_memcpy:Dr,__GLOBAL__sub_I_Yoga_cpp:Om,dynCall_vii:p3e,___uremdi3:TT,dynCall_vid:u3e,stackAlloc:lo,_nbind_init:EUe,getTempRet0:Ua,dynCall_di:E3e,dynCall_iid:C3e,setTempRet0:xA,_i64Add:QT,dynCall_fiff:A3e,dynCall_iiii:m3e,_emscripten_get_global_libc:kUe,dynCall_viid:Q3e,dynCall_viiid:S3e,dynCall_viififi:x3e,dynCall_ii:h3e,__GLOBAL__sub_I_Binding_cc:NMe,dynCall_viiii:T3e,dynCall_iiiiii:P3e,stackSave:gc,dynCall_viiiii:l3e,__GLOBAL__sub_I_nbind_cc:Lve,dynCall_vidd:d3e,_free:hD,runPostSets:a3e,dynCall_viiiiii:B3e,establishStackSpace:ji,_memmove:Mw,stackRestore:pu,_malloc:pD,__GLOBAL__sub_I_common_cc:tLe,dynCall_viddi:g3e,dynCall_dii:v3e,dynCall_v:k3e}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name=\"ExitStatus\",this.message=\"Program terminated with exit(\"+t+\")\",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function o(){for(var p=0;p<4-1;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),\"i8\",ALLOC_NORMAL)];o();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(e[n]),\"i8\",ALLOC_NORMAL)),o();a.push(0),a=allocate(a,\"i32\",ALLOC_NORMAL);try{var u=Module._main(r,a,0);exit(u,!0)}catch(p){if(p instanceof ExitStatus)return;if(p==\"SimulateInfiniteLoop\"){Module.noExitRuntime=!0;return}else{var A=p;p&&typeof p==\"object\"&&p.stack&&(A=[p,p.stack]),Module.printErr(\"exception thrown: \"+A),Module.quit(1,p)}}finally{calledMain=!0}};function run(t){if(t=t||Module.arguments,preloadStartTime===null&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){Module.setStatus(\"\")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t=\"\",ABORT=!0,EXITSTATUS=1;var e=`\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r=\"abort(\"+t+\") at \"+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(o){r=o(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit==\"function\"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var om=_((wVt,OEe)=>{\"use strict\";var Jyt=LEe(),zyt=MEe(),Q6=!1,F6=null;zyt({},function(t,e){if(!Q6){if(Q6=!0,t)throw t;F6=e}});if(!Q6)throw new Error(\"Failed to load the yoga module - it needed to be loaded synchronously, but didn't\");OEe.exports=Jyt(F6.bind,F6.lib)});var R6=_((IVt,T6)=>{\"use strict\";var UEe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);T6.exports=UEe;T6.exports.default=UEe});var HEe=_((BVt,_Ee)=>{\"use strict\";_Ee.exports=function(){return/\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g}});var Jk=_((vVt,N6)=>{\"use strict\";var Xyt=MP(),Zyt=R6(),$yt=HEe(),jEe=t=>{if(typeof t!=\"string\"||t.length===0||(t=Xyt(t),t.length===0))return 0;t=t.replace($yt(),\"  \");let e=0;for(let r=0;r<t.length;r++){let o=t.codePointAt(r);o<=31||o>=127&&o<=159||o>=768&&o<=879||(o>65535&&r++,e+=Zyt(o)?2:1)}return e};N6.exports=jEe;N6.exports.default=jEe});var M6=_((DVt,L6)=>{\"use strict\";var eEt=Jk(),qEe=t=>{let e=0;for(let r of t.split(`\n`))e=Math.max(e,eEt(r));return e};L6.exports=qEe;L6.exports.default=qEe});var GEe=_(lB=>{\"use strict\";var tEt=lB&&lB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lB,\"__esModule\",{value:!0});var rEt=tEt(M6()),O6={};lB.default=t=>{if(t.length===0)return{width:0,height:0};if(O6[t])return O6[t];let e=rEt.default(t),r=t.split(`\n`).length;return O6[t]={width:e,height:r},{width:e,height:r}}});var YEe=_(cB=>{\"use strict\";var nEt=cB&&cB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cB,\"__esModule\",{value:!0});var dn=nEt(om()),iEt=(t,e)=>{\"position\"in e&&t.setPositionType(e.position===\"absolute\"?dn.default.POSITION_TYPE_ABSOLUTE:dn.default.POSITION_TYPE_RELATIVE)},sEt=(t,e)=>{\"marginLeft\"in e&&t.setMargin(dn.default.EDGE_START,e.marginLeft||0),\"marginRight\"in e&&t.setMargin(dn.default.EDGE_END,e.marginRight||0),\"marginTop\"in e&&t.setMargin(dn.default.EDGE_TOP,e.marginTop||0),\"marginBottom\"in e&&t.setMargin(dn.default.EDGE_BOTTOM,e.marginBottom||0)},oEt=(t,e)=>{\"paddingLeft\"in e&&t.setPadding(dn.default.EDGE_LEFT,e.paddingLeft||0),\"paddingRight\"in e&&t.setPadding(dn.default.EDGE_RIGHT,e.paddingRight||0),\"paddingTop\"in e&&t.setPadding(dn.default.EDGE_TOP,e.paddingTop||0),\"paddingBottom\"in e&&t.setPadding(dn.default.EDGE_BOTTOM,e.paddingBottom||0)},aEt=(t,e)=>{var r;\"flexGrow\"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),\"flexShrink\"in e&&t.setFlexShrink(typeof e.flexShrink==\"number\"?e.flexShrink:1),\"flexDirection\"in e&&(e.flexDirection===\"row\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_ROW),e.flexDirection===\"row-reverse\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection===\"column\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_COLUMN),e.flexDirection===\"column-reverse\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_COLUMN_REVERSE)),\"flexBasis\"in e&&(typeof e.flexBasis==\"number\"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis==\"string\"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),\"alignItems\"in e&&((e.alignItems===\"stretch\"||!e.alignItems)&&t.setAlignItems(dn.default.ALIGN_STRETCH),e.alignItems===\"flex-start\"&&t.setAlignItems(dn.default.ALIGN_FLEX_START),e.alignItems===\"center\"&&t.setAlignItems(dn.default.ALIGN_CENTER),e.alignItems===\"flex-end\"&&t.setAlignItems(dn.default.ALIGN_FLEX_END)),\"alignSelf\"in e&&((e.alignSelf===\"auto\"||!e.alignSelf)&&t.setAlignSelf(dn.default.ALIGN_AUTO),e.alignSelf===\"flex-start\"&&t.setAlignSelf(dn.default.ALIGN_FLEX_START),e.alignSelf===\"center\"&&t.setAlignSelf(dn.default.ALIGN_CENTER),e.alignSelf===\"flex-end\"&&t.setAlignSelf(dn.default.ALIGN_FLEX_END)),\"justifyContent\"in e&&((e.justifyContent===\"flex-start\"||!e.justifyContent)&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_START),e.justifyContent===\"center\"&&t.setJustifyContent(dn.default.JUSTIFY_CENTER),e.justifyContent===\"flex-end\"&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_END),e.justifyContent===\"space-between\"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent===\"space-around\"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_AROUND))},lEt=(t,e)=>{var r,o;\"width\"in e&&(typeof e.width==\"number\"?t.setWidth(e.width):typeof e.width==\"string\"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),\"height\"in e&&(typeof e.height==\"number\"?t.setHeight(e.height):typeof e.height==\"string\"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),\"minWidth\"in e&&(typeof e.minWidth==\"string\"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),\"minHeight\"in e&&(typeof e.minHeight==\"string\"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((o=e.minHeight)!==null&&o!==void 0?o:0))},cEt=(t,e)=>{\"display\"in e&&t.setDisplay(e.display===\"flex\"?dn.default.DISPLAY_FLEX:dn.default.DISPLAY_NONE)},uEt=(t,e)=>{if(\"borderStyle\"in e){let r=typeof e.borderStyle==\"string\"?1:0;t.setBorder(dn.default.EDGE_TOP,r),t.setBorder(dn.default.EDGE_BOTTOM,r),t.setBorder(dn.default.EDGE_LEFT,r),t.setBorder(dn.default.EDGE_RIGHT,r)}};cB.default=(t,e={})=>{iEt(t,e),sEt(t,e),oEt(t,e),aEt(t,e),lEt(t,e),cEt(t,e),uEt(t,e)}});var KEe=_((xVt,VEe)=>{\"use strict\";var uB=Jk(),AEt=MP(),fEt=vI(),_6=new Set([\"\\x1B\",\"\\x9B\"]),pEt=39,WEe=t=>`${_6.values().next().value}[${t}m`,hEt=t=>t.split(\" \").map(e=>uB(e)),U6=(t,e,r)=>{let o=[...e],a=!1,n=uB(AEt(t[t.length-1]));for(let[u,A]of o.entries()){let p=uB(A);if(n+p<=r?t[t.length-1]+=A:(t.push(A),n=0),_6.has(A))a=!0;else if(a&&A===\"m\"){a=!1;continue}a||(n+=p,n===r&&u<o.length-1&&(t.push(\"\"),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},gEt=t=>{let e=t.split(\" \"),r=e.length;for(;r>0&&!(uB(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(\" \")+e.slice(r).join(\"\")},dEt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()===\"\")return\"\";let o=\"\",a=\"\",n,u=hEt(t),A=[\"\"];for(let[p,h]of t.split(\" \").entries()){r.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let E=uB(A[A.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(A.push(\"\"),E=0),(E>0||r.trim===!1)&&(A[A.length-1]+=\" \",E++)),r.hard&&u[p]>e){let I=e-E,v=1+Math.floor((u[p]-I-1)/e);Math.floor((u[p]-1)/e)<v&&A.push(\"\"),U6(A,h,e);continue}if(E+u[p]>e&&E>0&&u[p]>0){if(r.wordWrap===!1&&E<e){U6(A,h,e);continue}A.push(\"\")}if(E+u[p]>e&&r.wordWrap===!1){U6(A,h,e);continue}A[A.length-1]+=h}r.trim!==!1&&(A=A.map(gEt)),o=A.join(`\n`);for(let[p,h]of[...o].entries()){if(a+=h,_6.has(h)){let I=parseFloat(/\\d[^m]*/.exec(o.slice(p,p+4)));n=I===pEt?null:I}let E=fEt.codes.get(Number(n));n&&E&&(o[p+1]===`\n`?a+=WEe(E):h===`\n`&&(a+=WEe(n)))}return a};VEe.exports=(t,e,r)=>String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(o=>dEt(o,e,r)).join(`\n`)});var XEe=_((bVt,zEe)=>{\"use strict\";var JEe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",mEt=t=>t&&t.exact?new RegExp(`^${JEe}$`):new RegExp(JEe,\"g\");zEe.exports=mEt});var H6=_((kVt,tCe)=>{\"use strict\";var yEt=R6(),EEt=XEe(),ZEe=vI(),eCe=[\"\\x1B\",\"\\x9B\"],zk=t=>`${eCe[0]}[${t}m`,$Ee=(t,e,r)=>{let o=[];t=[...t];for(let a of t){let n=a;a.match(\";\")&&(a=a.split(\";\")[0][0]+\"0\");let u=ZEe.codes.get(parseInt(a,10));if(u){let A=t.indexOf(u.toString());A>=0?t.splice(A,1):o.push(zk(e?u:n))}else if(e){o.push(zk(0));break}else o.push(zk(n))}if(e&&(o=o.filter((a,n)=>o.indexOf(a)===n),r!==void 0)){let a=zk(ZEe.codes.get(parseInt(r,10)));o=o.reduce((n,u)=>u===a?[u,...n]:[...n,u],[])}return o.join(\"\")};tCe.exports=(t,e,r)=>{let o=[...t.normalize()],a=[];r=typeof r==\"number\"?r:o.length;let n=!1,u,A=0,p=\"\";for(let[h,E]of o.entries()){let I=!1;if(eCe.includes(E)){let v=/\\d[^m]*/.exec(t.slice(h,h+18));u=v&&v.length>0?v[0]:void 0,A<r&&(n=!0,u!==void 0&&a.push(u))}else n&&E===\"m\"&&(n=!1,I=!0);if(!n&&!I&&++A,!EEt({exact:!0}).test(E)&&yEt(E.codePointAt())&&++A,A>e&&A<=r)p+=E;else if(A===e&&!n&&u!==void 0)p=$Ee(a);else if(A>=r){p+=$Ee(a,!0,u);break}}return p}});var nCe=_((QVt,rCe)=>{\"use strict\";var y0=H6(),CEt=Jk();function Xk(t,e,r){if(t.charAt(e)===\" \")return e;for(let o=1;o<=3;o++)if(r){if(t.charAt(e+o)===\" \")return e+o}else if(t.charAt(e-o)===\" \")return e-o;return e}rCe.exports=(t,e,r)=>{r={position:\"end\",preferTruncationOnSpace:!1,...r};let{position:o,space:a,preferTruncationOnSpace:n}=r,u=\"\\u2026\",A=1;if(typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a string, got ${typeof t}`);if(typeof e!=\"number\")throw new TypeError(`Expected \\`columns\\` to be a number, got ${typeof e}`);if(e<1)return\"\";if(e===1)return u;let p=CEt(t);if(p<=e)return t;if(o===\"start\"){if(n){let h=Xk(t,p-e+1,!0);return u+y0(t,h,p).trim()}return a===!0&&(u+=\" \",A=2),u+y0(t,p-e+A,p)}if(o===\"middle\"){a===!0&&(u=\" \"+u+\" \",A=3);let h=Math.floor(e/2);if(n){let E=Xk(t,h),I=Xk(t,p-(e-h)+1,!0);return y0(t,0,E)+u+y0(t,I,p).trim()}return y0(t,0,h)+u+y0(t,p-(e-h)+A,p)}if(o===\"end\"){if(n){let h=Xk(t,e-1);return y0(t,0,h)+u}return a===!0&&(u=\" \"+u,A=2),y0(t,0,e-A)+u}throw new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${o}`)}});var q6=_(AB=>{\"use strict\";var iCe=AB&&AB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(AB,\"__esModule\",{value:!0});var wEt=iCe(KEe()),IEt=iCe(nCe()),j6={};AB.default=(t,e,r)=>{let o=t+String(e)+String(r);if(j6[o])return j6[o];let a=t;if(r===\"wrap\"&&(a=wEt.default(t,e,{trim:!1,hard:!0})),r.startsWith(\"truncate\")){let n=\"end\";r===\"truncate-middle\"&&(n=\"middle\"),r===\"truncate-start\"&&(n=\"start\"),a=IEt.default(t,e,{position:n})}return j6[o]=a,a}});var Y6=_(G6=>{\"use strict\";Object.defineProperty(G6,\"__esModule\",{value:!0});var sCe=t=>{let e=\"\";if(t.childNodes.length>0)for(let r of t.childNodes){let o=\"\";r.nodeName===\"#text\"?o=r.nodeValue:((r.nodeName===\"ink-text\"||r.nodeName===\"ink-virtual-text\")&&(o=sCe(r)),o.length>0&&typeof r.internal_transform==\"function\"&&(o=r.internal_transform(o))),e+=o}return e};G6.default=sCe});var W6=_(pi=>{\"use strict\";var fB=pi&&pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pi,\"__esModule\",{value:!0});pi.setTextNodeValue=pi.createTextNode=pi.setStyle=pi.setAttribute=pi.removeChildNode=pi.insertBeforeNode=pi.appendChildNode=pi.createNode=pi.TEXT_NAME=void 0;var BEt=fB(om()),oCe=fB(GEe()),vEt=fB(YEe()),DEt=fB(q6()),PEt=fB(Y6());pi.TEXT_NAME=\"#text\";pi.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t===\"ink-virtual-text\"?void 0:BEt.default.Node.create()};return t===\"ink-text\"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(SEt.bind(null,r))),r};pi.appendChildNode=(t,e)=>{var r;e.parentNode&&pi.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&Zk(t)};pi.insertBeforeNode=(t,e,r)=>{var o,a;e.parentNode&&pi.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((o=t.yogaNode)===null||o===void 0||o.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&Zk(t)};pi.removeChildNode=(t,e)=>{var r,o;e.yogaNode&&((o=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||o===void 0||o.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&Zk(t)};pi.setAttribute=(t,e,r)=>{t.attributes[e]=r};pi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&vEt.default(t.yogaNode,e)};pi.createTextNode=t=>{let e={nodeName:\"#text\",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return pi.setTextNodeValue(e,t),e};var SEt=function(t,e){var r,o;let a=t.nodeName===\"#text\"?t.nodeValue:PEt.default(t),n=oCe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let u=(o=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&o!==void 0?o:\"wrap\",A=DEt.default(a,e,u);return oCe.default(A)},aCe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:aCe(t.parentNode)},Zk=t=>{let e=aCe(t);e?.markDirty()};pi.setTextNodeValue=(t,e)=>{typeof e!=\"string\"&&(e=String(e)),t.nodeValue=e,Zk(t)}});var fCe=_(pB=>{\"use strict\";var ACe=pB&&pB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pB,\"__esModule\",{value:!0});var lCe=x6(),xEt=ACe(kEe()),cCe=ACe(om()),Mo=W6(),uCe=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};pB.default=xEt.default({schedulePassiveEffects:lCe.unstable_scheduleCallback,cancelPassiveEffects:lCe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender==\"function\"&&t.onImmediateRender();return}typeof t.onRender==\"function\"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,o=e===\"ink-text\"||e===\"ink-virtual-text\";return r===o?t:{isInsideText:o}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,o)=>{if(o.isInsideText&&t===\"ink-box\")throw new Error(\"<Box> can\\u2019t be nested inside <Text> component\");let a=t===\"ink-text\"&&o.isInsideText?\"ink-virtual-text\":t,n=Mo.createNode(a);for(let[u,A]of Object.entries(e))u!==\"children\"&&(u===\"style\"?Mo.setStyle(n,A):u===\"internal_transform\"?n.internal_transform=A:u===\"internal_static\"?n.internal_static=!0:Mo.setAttribute(n,u,A));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string \"${t}\" must be rendered inside <Text> component`);return Mo.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{Mo.setTextNodeValue(t,\"\")},unhideTextInstance:(t,e)=>{Mo.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(cCe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(cCe.default.DISPLAY_FLEX)},appendInitialChild:Mo.appendChildNode,appendChild:Mo.appendChildNode,insertBefore:Mo.insertBeforeNode,finalizeInitialChildren:(t,e,r,o)=>(t.internal_static&&(o.isStaticDirty=!0,o.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:Mo.appendChildNode,insertInContainerBefore:Mo.insertBeforeNode,removeChildFromContainer:(t,e)=>{Mo.removeChildNode(t,e),uCe(e.yogaNode)},prepareUpdate:(t,e,r,o,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},u=Object.keys(o);for(let A of u)if(o[A]!==r[A]){if(A===\"style\"&&typeof o.style==\"object\"&&typeof r.style==\"object\"){let h=o.style,E=r.style,I=Object.keys(h);for(let v of I){if(v===\"borderStyle\"||v===\"borderColor\"){if(typeof n.style!=\"object\"){let b={};n.style=b}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[v]!==E[v]){if(typeof n.style!=\"object\"){let b={};n.style=b}n.style[v]=h[v]}}continue}n[A]=o[A]}return n},commitUpdate:(t,e)=>{for(let[r,o]of Object.entries(e))r!==\"children\"&&(r===\"style\"?Mo.setStyle(t,o):r===\"internal_transform\"?t.internal_transform=o:r===\"internal_static\"?t.internal_static=!0:Mo.setAttribute(t,r,o))},commitTextUpdate:(t,e,r)=>{Mo.setTextNodeValue(t,r)},removeChild:(t,e)=>{Mo.removeChildNode(t,e),uCe(e.yogaNode)}})});var hCe=_((LVt,pCe)=>{\"use strict\";pCe.exports=(t,e=1,r)=>{if(r={indent:\" \",includeEmptyLines:!1,...r},typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof t}\\``);if(typeof e!=\"number\")throw new TypeError(`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof e}\\``);if(typeof r.indent!=\"string\")throw new TypeError(`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof r.indent}\\``);if(e===0)return t;let o=r.includeEmptyLines?/^/gm:/^(?!\\s*$)/gm;return t.replace(o,r.indent.repeat(e))}});var gCe=_(hB=>{\"use strict\";var bEt=hB&&hB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hB,\"__esModule\",{value:!0});var $k=bEt(om());hB.default=t=>t.getComputedWidth()-t.getComputedPadding($k.default.EDGE_LEFT)-t.getComputedPadding($k.default.EDGE_RIGHT)-t.getComputedBorder($k.default.EDGE_LEFT)-t.getComputedBorder($k.default.EDGE_RIGHT)});var dCe=_((OVt,kEt)=>{kEt.exports={single:{topLeft:\"\\u250C\",topRight:\"\\u2510\",bottomRight:\"\\u2518\",bottomLeft:\"\\u2514\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},double:{topLeft:\"\\u2554\",topRight:\"\\u2557\",bottomRight:\"\\u255D\",bottomLeft:\"\\u255A\",vertical:\"\\u2551\",horizontal:\"\\u2550\"},round:{topLeft:\"\\u256D\",topRight:\"\\u256E\",bottomRight:\"\\u256F\",bottomLeft:\"\\u2570\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},bold:{topLeft:\"\\u250F\",topRight:\"\\u2513\",bottomRight:\"\\u251B\",bottomLeft:\"\\u2517\",vertical:\"\\u2503\",horizontal:\"\\u2501\"},singleDouble:{topLeft:\"\\u2553\",topRight:\"\\u2556\",bottomRight:\"\\u255C\",bottomLeft:\"\\u2559\",vertical:\"\\u2551\",horizontal:\"\\u2500\"},doubleSingle:{topLeft:\"\\u2552\",topRight:\"\\u2555\",bottomRight:\"\\u255B\",bottomLeft:\"\\u2558\",vertical:\"\\u2502\",horizontal:\"\\u2550\"},classic:{topLeft:\"+\",topRight:\"+\",bottomRight:\"+\",bottomLeft:\"+\",vertical:\"|\",horizontal:\"-\"}}});var yCe=_((UVt,V6)=>{\"use strict\";var mCe=dCe();V6.exports=mCe;V6.exports.default=mCe});var CCe=_((_Vt,ECe)=>{\"use strict\";var QEt=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u=\"\";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},FEt=(t,e,r,o)=>{let a=0,n=\"\";do{let u=t[o-1]===\"\\r\";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\\r\n`:`\n`)+r,a=o+1,o=t.indexOf(`\n`,a)}while(o!==-1);return n+=t.substr(a),n};ECe.exports={stringReplaceAll:QEt,stringEncaseCRLFWithFirstIndex:FEt}});var DCe=_((HVt,vCe)=>{\"use strict\";var TEt=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,wCe=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,REt=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,NEt=/\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi,LEt=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function BCe(t){let e=t[0]===\"u\",r=t[1]===\"{\";return e&&!r&&t.length===5||t[0]===\"x\"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):LEt.get(t)||t}function MEt(t,e){let r=[],o=e.trim().split(/\\s*,\\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(REt))r.push(a[2].replace(NEt,(A,p,h)=>p?BCe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function OEt(t){wCe.lastIndex=0;let e=[],r;for(;(r=wCe.exec(t))!==null;){let o=r[1];if(r[2]){let a=MEt(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function ICe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}vCe.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(TEt,(n,u,A,p,h,E)=>{if(u)a.push(BCe(u));else if(p){let I=a.join(\"\");a=[],o.push(r.length===0?I:ICe(t,r)(I)),r.push({inverse:A,styles:OEt(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");o.push(ICe(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),o.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return o.join(\"\")}});var iQ=_((jVt,QCe)=>{\"use strict\";var gB=vI(),{stdout:J6,stderr:z6}=yN(),{stringReplaceAll:UEt,stringEncaseCRLFWithFirstIndex:_Et}=CCe(),{isArray:eQ}=Array,SCe=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],_C=Object.create(null),HEt=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=J6?J6.level:0;t.level=e.level===void 0?r:e.level},X6=class{constructor(e){return xCe(e)}},xCe=t=>{let e={};return HEt(e,t),e.template=(...r)=>kCe(e.template,...r),Object.setPrototypeOf(e,tQ.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=X6,e.template};function tQ(t){return xCe(t)}for(let[t,e]of Object.entries(gB))_C[t]={get(){let r=rQ(this,Z6(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};_C.visible={get(){let t=rQ(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var bCe=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of bCe)_C[t]={get(){let{level:e}=this;return function(...r){let o=Z6(gB.color[SCe[e]][t](...r),gB.color.close,this._styler);return rQ(this,o,this._isEmpty)}}};for(let t of bCe){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);_C[e]={get(){let{level:r}=this;return function(...o){let a=Z6(gB.bgColor[SCe[r]][t](...o),gB.bgColor.close,this._styler);return rQ(this,a,this._isEmpty)}}}}var jEt=Object.defineProperties(()=>{},{..._C,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),Z6=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},rQ=(t,e,r)=>{let o=(...a)=>eQ(a[0])&&eQ(a[0].raw)?PCe(o,kCe(o,...a)):PCe(o,a.length===1?\"\"+a[0]:a.join(\" \"));return Object.setPrototypeOf(o,jEt),o._generator=t,o._styler=e,o._isEmpty=r,o},PCe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=UEt(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=_Et(e,a,o,n)),o+e+a},K6,kCe=(t,...e)=>{let[r]=e;if(!eQ(r)||!eQ(r.raw))return e.join(\" \");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return K6===void 0&&(K6=DCe()),K6(t,a.join(\"\"))};Object.defineProperties(tQ.prototype,_C);var nQ=tQ();nQ.supportsColor=J6;nQ.stderr=tQ({level:z6?z6.level:0});nQ.stderr.supportsColor=z6;QCe.exports=nQ});var $6=_(mB=>{\"use strict\";var qEt=mB&&mB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mB,\"__esModule\",{value:!0});var dB=qEt(iQ()),GEt=/^(rgb|hsl|hsv|hwb)\\(\\s?(\\d+),\\s?(\\d+),\\s?(\\d+)\\s?\\)$/,YEt=/^(ansi|ansi256)\\(\\s?(\\d+)\\s?\\)$/,sQ=(t,e)=>e===\"foreground\"?t:\"bg\"+t[0].toUpperCase()+t.slice(1);mB.default=(t,e,r)=>{if(!e)return t;if(e in dB.default){let a=sQ(e,r);return dB.default[a](t)}if(e.startsWith(\"#\")){let a=sQ(\"hex\",r);return dB.default[a](e)(t)}if(e.startsWith(\"ansi\")){let a=YEt.exec(e);if(!a)return t;let n=sQ(a[1],r),u=Number(a[2]);return dB.default[n](u)(t)}if(e.startsWith(\"rgb\")||e.startsWith(\"hsl\")||e.startsWith(\"hsv\")||e.startsWith(\"hwb\")){let a=GEt.exec(e);if(!a)return t;let n=sQ(a[1],r),u=Number(a[2]),A=Number(a[3]),p=Number(a[4]);return dB.default[n](u,A,p)(t)}return t}});var TCe=_(yB=>{\"use strict\";var FCe=yB&&yB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yB,\"__esModule\",{value:!0});var WEt=FCe(yCe()),ej=FCe($6());yB.default=(t,e,r,o)=>{if(typeof r.style.borderStyle==\"string\"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),u=r.style.borderColor,A=WEt.default[r.style.borderStyle],p=ej.default(A.topLeft+A.horizontal.repeat(a-2)+A.topRight,u,\"foreground\"),h=(ej.default(A.vertical,u,\"foreground\")+`\n`).repeat(n-2),E=ej.default(A.bottomLeft+A.horizontal.repeat(a-2)+A.bottomRight,u,\"foreground\");o.write(t,e,p,{transformers:[]}),o.write(t,e+1,h,{transformers:[]}),o.write(t+a-1,e+1,h,{transformers:[]}),o.write(t,e+n-1,E,{transformers:[]})}}});var NCe=_(EB=>{\"use strict\";var am=EB&&EB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(EB,\"__esModule\",{value:!0});var VEt=am(om()),KEt=am(M6()),JEt=am(hCe()),zEt=am(q6()),XEt=am(gCe()),ZEt=am(Y6()),$Et=am(TCe()),eCt=(t,e)=>{var r;let o=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(o){let a=o.getComputedLeft(),n=o.getComputedTop();e=`\n`.repeat(n)+JEt.default(e,a)}return e},RCe=(t,e,r)=>{var o;let{offsetX:a=0,offsetY:n=0,transformers:u=[],skipStaticElements:A}=r;if(A&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===VEt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),I=u;if(typeof t.internal_transform==\"function\"&&(I=[t.internal_transform,...u]),t.nodeName===\"ink-text\"){let v=ZEt.default(t);if(v.length>0){let b=KEt.default(v),C=XEt.default(p);if(b>C){let T=(o=t.style.textWrap)!==null&&o!==void 0?o:\"wrap\";v=zEt.default(v,C,T)}v=eCt(t,v),e.write(h,E,v,{transformers:I})}return}if(t.nodeName===\"ink-box\"&&$Et.default(h,E,t,e),t.nodeName===\"ink-root\"||t.nodeName===\"ink-box\")for(let v of t.childNodes)RCe(v,e,{offsetX:h,offsetY:E,transformers:I,skipStaticElements:A})}};EB.default=RCe});var MCe=_((WVt,LCe)=>{\"use strict\";LCe.exports=t=>{t=Object.assign({onlyFirst:!1},t);let e=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\d]*(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(e,t.onlyFirst?void 0:\"g\")}});var UCe=_((VVt,tj)=>{\"use strict\";var tCt=MCe(),OCe=t=>typeof t==\"string\"?t.replace(tCt(),\"\"):t;tj.exports=OCe;tj.exports.default=OCe});var jCe=_((KVt,HCe)=>{\"use strict\";var _Ce=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\";HCe.exports=t=>t&&t.exact?new RegExp(`^${_Ce}$`):new RegExp(_Ce,\"g\")});var GCe=_((JVt,rj)=>{\"use strict\";var rCt=UCe(),nCt=jCe(),qCe=t=>rCt(t).replace(nCt(),\" \").length;rj.exports=qCe;rj.exports.default=qCe});var VCe=_(CB=>{\"use strict\";var WCe=CB&&CB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CB,\"__esModule\",{value:!0});var YCe=WCe(H6()),iCt=WCe(GCe()),nj=class{constructor(e){this.writes=[];let{width:r,height:o}=e;this.width=r,this.height=o}write(e,r,o,a){let{transformers:n}=a;!o||this.writes.push({x:e,y:r,text:o,transformers:n})}get(){let e=[];for(let o=0;o<this.height;o++)e.push(\" \".repeat(this.width));for(let o of this.writes){let{x:a,y:n,text:u,transformers:A}=o,p=u.split(`\n`),h=0;for(let E of p){let I=e[n+h];if(!I)continue;let v=iCt.default(E);for(let b of A)E=b(E);e[n+h]=YCe.default(I,0,a)+E+YCe.default(I,a+v),h++}}return{output:e.map(o=>o.trimRight()).join(`\n`),height:e.length}}};CB.default=nj});var zCe=_(wB=>{\"use strict\";var ij=wB&&wB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wB,\"__esModule\",{value:!0});var sCt=ij(om()),KCe=ij(NCe()),JCe=ij(VCe());wB.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,sCt.default.DIRECTION_LTR);let o=new JCe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});KCe.default(t,o,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new JCe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),KCe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:u}=o.get();return{output:n,outputHeight:u,staticOutput:a?`${a.get().output}\n`:\"\"}}return{output:\"\",outputHeight:0,staticOutput:\"\"}}});var ewe=_((ZVt,$Ce)=>{\"use strict\";var XCe=Be(\"stream\"),ZCe=[\"assert\",\"count\",\"countReset\",\"debug\",\"dir\",\"dirxml\",\"error\",\"group\",\"groupCollapsed\",\"groupEnd\",\"info\",\"log\",\"table\",\"time\",\"timeEnd\",\"timeLog\",\"trace\",\"warn\"],sj={},oCt=t=>{let e=new XCe.PassThrough,r=new XCe.PassThrough;e.write=a=>t(\"stdout\",a),r.write=a=>t(\"stderr\",a);let o=new console.Console(e,r);for(let a of ZCe)sj[a]=console[a],console[a]=o[a];return()=>{for(let a of ZCe)console[a]=sj[a];sj={}}};$Ce.exports=oCt});var aj=_(oj=>{\"use strict\";Object.defineProperty(oj,\"__esModule\",{value:!0});oj.default=new WeakMap});var cj=_(lj=>{\"use strict\";Object.defineProperty(lj,\"__esModule\",{value:!0});var aCt=sn(),twe=aCt.createContext({exit:()=>{}});twe.displayName=\"InternalAppContext\";lj.default=twe});var Aj=_(uj=>{\"use strict\";Object.defineProperty(uj,\"__esModule\",{value:!0});var lCt=sn(),rwe=lCt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});rwe.displayName=\"InternalStdinContext\";uj.default=rwe});var pj=_(fj=>{\"use strict\";Object.defineProperty(fj,\"__esModule\",{value:!0});var cCt=sn(),nwe=cCt.createContext({stdout:void 0,write:()=>{}});nwe.displayName=\"InternalStdoutContext\";fj.default=nwe});var gj=_(hj=>{\"use strict\";Object.defineProperty(hj,\"__esModule\",{value:!0});var uCt=sn(),iwe=uCt.createContext({stderr:void 0,write:()=>{}});iwe.displayName=\"InternalStderrContext\";hj.default=iwe});var oQ=_(dj=>{\"use strict\";Object.defineProperty(dj,\"__esModule\",{value:!0});var ACt=sn(),swe=ACt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});swe.displayName=\"InternalFocusContext\";dj.default=swe});var awe=_((sKt,owe)=>{\"use strict\";var fCt=/[|\\\\{}()[\\]^$+*?.-]/g;owe.exports=t=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return t.replace(fCt,\"\\\\$&\")}});var Awe=_((oKt,uwe)=>{\"use strict\";var pCt=awe(),hCt=typeof process==\"object\"&&process&&typeof process.cwd==\"function\"?process.cwd():\".\",cwe=[].concat(Be(\"module\").builtinModules,\"bootstrap_node\",\"node\").map(t=>new RegExp(`(?:\\\\((?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+\\\\)$|^\\\\s*at (?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+$)`));cwe.push(/\\((?:node:)?internal\\/[^:]+:\\d+:\\d+\\)$/,/\\s*at (?:node:)?internal\\/[^:]+:\\d+:\\d+$/,/\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/);var IB=class{constructor(e){e={ignoredPackages:[],...e},\"internals\"in e||(e.internals=IB.nodeInternals()),\"cwd\"in e||(e.cwd=hCt),this._cwd=e.cwd.replace(/\\\\/g,\"/\"),this._internals=[].concat(e.internals,gCt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...cwe]}clean(e,r=0){r=\" \".repeat(r),Array.isArray(e)||(e=e.split(`\n`)),!/^\\s*at /.test(e[0])&&/^\\s*at /.test(e[1])&&(e=e.slice(1));let o=!1,a=null,n=[];return e.forEach(u=>{if(u=u.replace(/\\\\/g,\"/\"),this._internals.some(p=>p.test(u)))return;let A=/^\\s*at /.test(u);o?u=u.trimEnd().replace(/^(\\s+)at /,\"$1\"):(u=u.trim(),A&&(u=u.slice(3))),u=u.replace(`${this._cwd}/`,\"\"),u&&(A?(a&&(n.push(a),a=null),n.push(u)):(o=!0,a=u))}),n.map(u=>`${r}${u}\n`).join(\"\")}captureString(e,r=this.captureString){typeof e==\"function\"&&(r=e,e=1/0);let{stackTraceLimit:o}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=o,this.clean(n)}capture(e,r=this.capture){typeof e==\"function\"&&(r=e,e=1/0);let{prepareStackTrace:o,stackTraceLimit:a}=Error;Error.prepareStackTrace=(A,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:u}=n;return Object.assign(Error,{prepareStackTrace:o,stackTraceLimit:a}),u}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let o={line:r.getLineNumber(),column:r.getColumnNumber()};lwe(o,r.getFileName(),this._cwd),r.isConstructor()&&(o.constructor=!0),r.isEval()&&(o.evalOrigin=r.getEvalOrigin()),r.isNative()&&(o.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!==\"Object\"&&a!==\"[object Object]\"&&(o.type=a);let n=r.getFunctionName();n&&(o.function=n);let u=r.getMethodName();return u&&n!==u&&(o.method=u),o}parseLine(e){let r=e&&e.match(dCt);if(!r)return null;let o=r[1]===\"new\",a=r[2],n=r[3],u=r[4],A=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],I=r[9],v=r[10]===\"native\",b=r[11]===\")\",C,T={};if(E&&(T.line=Number(E)),I&&(T.column=Number(I)),b&&h){let L=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===\")\")L++;else if(h.charAt(U)===\"(\"&&h.charAt(U-1)===\" \"&&(L--,L===-1&&h.charAt(U-1)===\" \")){let J=h.slice(0,U-1);h=h.slice(U+1),a+=` (${J}`;break}}if(a){let L=a.match(mCt);L&&(a=L[1],C=L[2])}return lwe(T,h,this._cwd),o&&(T.constructor=!0),n&&(T.evalOrigin=n,T.evalLine=A,T.evalColumn=p,T.evalFile=u&&u.replace(/\\\\/g,\"/\")),v&&(T.native=!0),a&&(T.function=a),C&&a!==C&&(T.method=C),T}};function lwe(t,e,r){e&&(e=e.replace(/\\\\/g,\"/\"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function gCt(t){if(t.length===0)return[];let e=t.map(r=>pCt(r));return new RegExp(`[/\\\\\\\\]node_modules[/\\\\\\\\](?:${e.join(\"|\")})[/\\\\\\\\][^:]+:\\\\d+:\\\\d+`)}var dCt=new RegExp(\"^(?:\\\\s*at )?(?:(new) )?(?:(.*?) \\\\()?(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?(?:(.+?):(\\\\d+):(\\\\d+)|(native))(\\\\)?)$\"),mCt=/^(.*?) \\[as (.*?)\\]$/;uwe.exports=IB});var pwe=_((aKt,fwe)=>{\"use strict\";fwe.exports=(t,e)=>t.replace(/^\\t+/gm,r=>\" \".repeat(r.length*(e||2)))});var gwe=_((lKt,hwe)=>{\"use strict\";var yCt=pwe(),ECt=(t,e)=>{let r=[],o=t-e,a=t+e;for(let n=o;n<=a;n++)r.push(n);return r};hwe.exports=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(\"Source code is missing.\");if(!e||e<1)throw new TypeError(\"Line number must start from `1`.\");if(t=yCt(t).split(/\\r?\\n/),!(e>t.length))return r={around:3,...r},ECt(e,r.around).filter(o=>t[o-1]!==void 0).map(o=>({line:o,value:t[o-1]}))}});var aQ=_(ru=>{\"use strict\";var CCt=ru&&ru.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),wCt=ru&&ru.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ICt=ru&&ru.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&CCt(e,t,r);return wCt(e,t),e},BCt=ru&&ru.__rest||function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var a=0,o=Object.getOwnPropertySymbols(t);a<o.length;a++)e.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(t,o[a])&&(r[o[a]]=t[o[a]]);return r};Object.defineProperty(ru,\"__esModule\",{value:!0});var dwe=ICt(sn()),mj=dwe.forwardRef((t,e)=>{var{children:r}=t,o=BCt(t,[\"children\"]);let a=Object.assign(Object.assign({},o),{marginLeft:o.marginLeft||o.marginX||o.margin||0,marginRight:o.marginRight||o.marginX||o.margin||0,marginTop:o.marginTop||o.marginY||o.margin||0,marginBottom:o.marginBottom||o.marginY||o.margin||0,paddingLeft:o.paddingLeft||o.paddingX||o.padding||0,paddingRight:o.paddingRight||o.paddingX||o.padding||0,paddingTop:o.paddingTop||o.paddingY||o.padding||0,paddingBottom:o.paddingBottom||o.paddingY||o.padding||0});return dwe.default.createElement(\"ink-box\",{ref:e,style:a},r)});mj.displayName=\"Box\";mj.defaultProps={flexDirection:\"row\",flexGrow:0,flexShrink:1};ru.default=mj});var Cj=_(BB=>{\"use strict\";var yj=BB&&BB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(BB,\"__esModule\",{value:!0});var vCt=yj(sn()),HC=yj(iQ()),mwe=yj($6()),Ej=({color:t,backgroundColor:e,dimColor:r,bold:o,italic:a,underline:n,strikethrough:u,inverse:A,wrap:p,children:h})=>{if(h==null)return null;let E=I=>(r&&(I=HC.default.dim(I)),t&&(I=mwe.default(I,t,\"foreground\")),e&&(I=mwe.default(I,e,\"background\")),o&&(I=HC.default.bold(I)),a&&(I=HC.default.italic(I)),n&&(I=HC.default.underline(I)),u&&(I=HC.default.strikethrough(I)),A&&(I=HC.default.inverse(I)),I);return vCt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\",textWrap:p},internal_transform:E},h)};Ej.displayName=\"Text\";Ej.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:\"wrap\"};BB.default=Ej});var wwe=_(nu=>{\"use strict\";var DCt=nu&&nu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),PCt=nu&&nu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),SCt=nu&&nu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&DCt(e,t,r);return PCt(e,t),e},vB=nu&&nu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nu,\"__esModule\",{value:!0});var ywe=SCt(Be(\"fs\")),fs=vB(sn()),Ewe=vB(Awe()),xCt=vB(gwe()),Xf=vB(aQ()),hA=vB(Cj()),Cwe=new Ewe.default({cwd:process.cwd(),internals:Ewe.default.nodeInternals()}),bCt=({error:t})=>{let e=t.stack?t.stack.split(`\n`).slice(1):void 0,r=e?Cwe.parseLine(e[0]):void 0,o,a=0;if(r?.file&&r?.line&&ywe.existsSync(r.file)){let n=ywe.readFileSync(r.file,\"utf8\");if(o=xCt.default(n,r.line),o)for(let{line:u}of o)a=Math.max(a,String(u).length)}return fs.default.createElement(Xf.default,{flexDirection:\"column\",padding:1},fs.default.createElement(Xf.default,null,fs.default.createElement(hA.default,{backgroundColor:\"red\",color:\"white\"},\" \",\"ERROR\",\" \"),fs.default.createElement(hA.default,null,\" \",t.message)),r&&fs.default.createElement(Xf.default,{marginTop:1},fs.default.createElement(hA.default,{dimColor:!0},r.file,\":\",r.line,\":\",r.column)),r&&o&&fs.default.createElement(Xf.default,{marginTop:1,flexDirection:\"column\"},o.map(({line:n,value:u})=>fs.default.createElement(Xf.default,{key:n},fs.default.createElement(Xf.default,{width:a+1},fs.default.createElement(hA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},String(n).padStart(a,\" \"),\":\")),fs.default.createElement(hA.default,{key:n,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},\" \"+u)))),t.stack&&fs.default.createElement(Xf.default,{marginTop:1,flexDirection:\"column\"},t.stack.split(`\n`).slice(1).map(n=>{let u=Cwe.parseLine(n);return u?fs.default.createElement(Xf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},\"- \"),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},u.function),fs.default.createElement(hA.default,{dimColor:!0,color:\"gray\"},\" \",\"(\",u.file,\":\",u.line,\":\",u.column,\")\")):fs.default.createElement(Xf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},\"- \"),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},n))})))};nu.default=bCt});var Bwe=_(iu=>{\"use strict\";var kCt=iu&&iu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),QCt=iu&&iu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),FCt=iu&&iu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&kCt(e,t,r);return QCt(e,t),e},cm=iu&&iu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iu,\"__esModule\",{value:!0});var lm=FCt(sn()),Iwe=cm(m6()),TCt=cm(cj()),RCt=cm(Aj()),NCt=cm(pj()),LCt=cm(gj()),MCt=cm(oQ()),OCt=cm(wwe()),UCt=\"\t\",_Ct=\"\\x1B[Z\",HCt=\"\\x1B\",lQ=class extends lm.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding(\"utf8\"),e){this.rawModeEnabledCount===0&&(r.addListener(\"data\",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener(\"data\",this.handleInput),r.pause())},this.handleInput=e=>{e===\"\u0003\"&&this.props.exitOnCtrlC&&this.handleExit(),e===HCt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===UCt&&this.focusNext(),e===_Ct&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(e=>{let r=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||r}})},this.focusPrevious=()=>{this.setState(e=>{let r=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||r}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(o=>{let a=o.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...o.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(o=>o.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r+1;o<e.focusables.length;o++)if(e.focusables[o].isActive)return e.focusables[o].id},this.findPreviousFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r-1;o>=0;o--)if(e.focusables[o].isActive)return e.focusables[o].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return lm.default.createElement(TCt.default.Provider,{value:{exit:this.handleExit}},lm.default.createElement(RCt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},lm.default.createElement(NCt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},lm.default.createElement(LCt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},lm.default.createElement(MCt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?lm.default.createElement(OCt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){Iwe.default.hide(this.props.stdout)}componentWillUnmount(){Iwe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};iu.default=lQ;lQ.displayName=\"InternalApp\"});var Pwe=_(su=>{\"use strict\";var jCt=su&&su.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),qCt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),GCt=su&&su.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&jCt(e,t,r);return qCt(e,t),e},ou=su&&su.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(su,\"__esModule\",{value:!0});var YCt=ou(sn()),vwe=uO(),WCt=ou(AEe()),VCt=ou(f6()),KCt=ou(mEe()),JCt=ou(EEe()),wj=ou(fCe()),zCt=ou(zCe()),XCt=ou(d6()),ZCt=ou(ewe()),$Ct=GCt(W6()),ewt=ou(aj()),twt=ou(Bwe()),jC=process.env.CI===\"false\"?!1:KCt.default,Dwe=()=>{},Ij=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:o,staticOutput:a}=zCt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==`\n`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(jC){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),o>=this.options.stdout.rows){this.options.stdout.write(VCt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},JCt.default(this),this.options=e,this.rootNode=$Ct.createNode(\"ink-root\"),this.rootNode.onRender=e.debug?this.onRender:vwe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=WCt.default.create(e.stdout),this.throttledLog=e.debug?this.log:vwe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput=\"\",this.fullStaticOutput=\"\",this.container=wj.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=XCt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),jC||(e.stdout.on(\"resize\",this.onRender),this.unsubscribeResize=()=>{e.stdout.off(\"resize\",this.onRender)})}render(e){let r=YCt.default.createElement(twt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);wj.default.updateContainer(r,this.container,null,Dwe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(jC){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(jC){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole==\"function\"&&this.restoreConsole(),typeof this.unsubscribeResize==\"function\"&&this.unsubscribeResize(),jC?this.options.stdout.write(this.lastOutput+`\n`):this.options.debug||this.log.done(),this.isUnmounted=!0,wj.default.updateContainer(null,this.container,null,Dwe),ewt.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!jC&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=ZCt.default((e,r)=>{e===\"stdout\"&&this.writeToStdout(r),e===\"stderr\"&&(r.startsWith(\"The above error occurred\")||this.writeToStderr(r))}))}};su.default=Ij});var xwe=_(DB=>{\"use strict\";var Swe=DB&&DB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(DB,\"__esModule\",{value:!0});var rwt=Swe(Pwe()),cQ=Swe(aj()),nwt=Be(\"stream\"),iwt=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},swt(e)),o=owt(r.stdout,()=>new rwt.default(r));return o.render(t),{rerender:o.render,unmount:()=>o.unmount(),waitUntilExit:o.waitUntilExit,cleanup:()=>cQ.default.delete(r.stdout),clear:o.clear}};DB.default=iwt;var swt=(t={})=>t instanceof nwt.Stream?{stdout:t,stdin:process.stdin}:t,owt=(t,e)=>{let r;return cQ.default.has(t)?r=cQ.default.get(t):(r=e(),cQ.default.set(t,r)),r}});var kwe=_(Zf=>{\"use strict\";var awt=Zf&&Zf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),lwt=Zf&&Zf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),cwt=Zf&&Zf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&awt(e,t,r);return lwt(e,t),e};Object.defineProperty(Zf,\"__esModule\",{value:!0});var PB=cwt(sn()),bwe=t=>{let{items:e,children:r,style:o}=t,[a,n]=PB.useState(0),u=PB.useMemo(()=>e.slice(a),[e,a]);PB.useLayoutEffect(()=>{n(e.length)},[e.length]);let A=u.map((h,E)=>r(h,a+E)),p=PB.useMemo(()=>Object.assign({position:\"absolute\",flexDirection:\"column\"},o),[o]);return PB.default.createElement(\"ink-box\",{internal_static:!0,style:p},A)};bwe.displayName=\"Static\";Zf.default=bwe});var Fwe=_(SB=>{\"use strict\";var uwt=SB&&SB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(SB,\"__esModule\",{value:!0});var Awt=uwt(sn()),Qwe=({children:t,transform:e})=>t==null?null:Awt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\"},internal_transform:e},t);Qwe.displayName=\"Transform\";SB.default=Qwe});var Rwe=_(xB=>{\"use strict\";var fwt=xB&&xB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xB,\"__esModule\",{value:!0});var pwt=fwt(sn()),Twe=({count:t=1})=>pwt.default.createElement(\"ink-text\",null,`\n`.repeat(t));Twe.displayName=\"Newline\";xB.default=Twe});var Mwe=_(bB=>{\"use strict\";var Nwe=bB&&bB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bB,\"__esModule\",{value:!0});var hwt=Nwe(sn()),gwt=Nwe(aQ()),Lwe=()=>hwt.default.createElement(gwt.default,{flexGrow:1});Lwe.displayName=\"Spacer\";bB.default=Lwe});var uQ=_(kB=>{\"use strict\";var dwt=kB&&kB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kB,\"__esModule\",{value:!0});var mwt=sn(),ywt=dwt(Aj()),Ewt=()=>mwt.useContext(ywt.default);kB.default=Ewt});var Uwe=_(QB=>{\"use strict\";var Cwt=QB&&QB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(QB,\"__esModule\",{value:!0});var Owe=sn(),wwt=Cwt(uQ()),Iwt=(t,e={})=>{let{stdin:r,setRawMode:o,internal_exitOnCtrlC:a}=wwt.default();Owe.useEffect(()=>{if(e.isActive!==!1)return o(!0),()=>{o(!1)}},[e.isActive,o]),Owe.useEffect(()=>{if(e.isActive===!1)return;let n=u=>{let A=String(u),p={upArrow:A===\"\\x1B[A\",downArrow:A===\"\\x1B[B\",leftArrow:A===\"\\x1B[D\",rightArrow:A===\"\\x1B[C\",pageDown:A===\"\\x1B[6~\",pageUp:A===\"\\x1B[5~\",return:A===\"\\r\",escape:A===\"\\x1B\",ctrl:!1,shift:!1,tab:A===\"\t\"||A===\"\\x1B[Z\",backspace:A===\"\\b\",delete:A===\"\\x7F\"||A===\"\\x1B[3~\",meta:!1};A<=\"\u001a\"&&!p.return&&(A=String.fromCharCode(A.charCodeAt(0)+\"a\".charCodeAt(0)-1),p.ctrl=!0),A.startsWith(\"\\x1B\")&&(A=A.slice(1),p.meta=!0);let h=A>=\"A\"&&A<=\"Z\",E=A>=\"\\u0410\"&&A<=\"\\u042F\";A.length===1&&(h||E)&&(p.shift=!0),p.tab&&A===\"[Z\"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(A=\"\"),(!(A===\"c\"&&p.ctrl)||!a)&&t(A,p)};return r?.on(\"data\",n),()=>{r?.off(\"data\",n)}},[e.isActive,r,a,t])};QB.default=Iwt});var _we=_(FB=>{\"use strict\";var Bwt=FB&&FB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(FB,\"__esModule\",{value:!0});var vwt=sn(),Dwt=Bwt(cj()),Pwt=()=>vwt.useContext(Dwt.default);FB.default=Pwt});var Hwe=_(TB=>{\"use strict\";var Swt=TB&&TB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TB,\"__esModule\",{value:!0});var xwt=sn(),bwt=Swt(pj()),kwt=()=>xwt.useContext(bwt.default);TB.default=kwt});var jwe=_(RB=>{\"use strict\";var Qwt=RB&&RB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(RB,\"__esModule\",{value:!0});var Fwt=sn(),Twt=Qwt(gj()),Rwt=()=>Fwt.useContext(Twt.default);RB.default=Rwt});var Gwe=_(LB=>{\"use strict\";var qwe=LB&&LB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(LB,\"__esModule\",{value:!0});var NB=sn(),Nwt=qwe(oQ()),Lwt=qwe(uQ()),Mwt=({isActive:t=!0,autoFocus:e=!1}={})=>{let{isRawModeSupported:r,setRawMode:o}=Lwt.default(),{activeId:a,add:n,remove:u,activate:A,deactivate:p}=NB.useContext(Nwt.default),h=NB.useMemo(()=>Math.random().toString().slice(2,7),[]);return NB.useEffect(()=>(n(h,{autoFocus:e}),()=>{u(h)}),[h,e]),NB.useEffect(()=>{t?A(h):p(h)},[t,h]),NB.useEffect(()=>{if(!(!r||!t))return o(!0),()=>{o(!1)}},[t]),{isFocused:Boolean(h)&&a===h}};LB.default=Mwt});var Ywe=_(MB=>{\"use strict\";var Owt=MB&&MB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(MB,\"__esModule\",{value:!0});var Uwt=sn(),_wt=Owt(oQ()),Hwt=()=>{let t=Uwt.useContext(_wt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious}};MB.default=Hwt});var Wwe=_(Bj=>{\"use strict\";Object.defineProperty(Bj,\"__esModule\",{value:!0});Bj.default=t=>{var e,r,o,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(o=t.yogaNode)===null||o===void 0?void 0:o.getComputedHeight())!==null&&a!==void 0?a:0}}});var ic=_(ro=>{\"use strict\";Object.defineProperty(ro,\"__esModule\",{value:!0});var jwt=xwe();Object.defineProperty(ro,\"render\",{enumerable:!0,get:function(){return jwt.default}});var qwt=aQ();Object.defineProperty(ro,\"Box\",{enumerable:!0,get:function(){return qwt.default}});var Gwt=Cj();Object.defineProperty(ro,\"Text\",{enumerable:!0,get:function(){return Gwt.default}});var Ywt=kwe();Object.defineProperty(ro,\"Static\",{enumerable:!0,get:function(){return Ywt.default}});var Wwt=Fwe();Object.defineProperty(ro,\"Transform\",{enumerable:!0,get:function(){return Wwt.default}});var Vwt=Rwe();Object.defineProperty(ro,\"Newline\",{enumerable:!0,get:function(){return Vwt.default}});var Kwt=Mwe();Object.defineProperty(ro,\"Spacer\",{enumerable:!0,get:function(){return Kwt.default}});var Jwt=Uwe();Object.defineProperty(ro,\"useInput\",{enumerable:!0,get:function(){return Jwt.default}});var zwt=_we();Object.defineProperty(ro,\"useApp\",{enumerable:!0,get:function(){return zwt.default}});var Xwt=uQ();Object.defineProperty(ro,\"useStdin\",{enumerable:!0,get:function(){return Xwt.default}});var Zwt=Hwe();Object.defineProperty(ro,\"useStdout\",{enumerable:!0,get:function(){return Zwt.default}});var $wt=jwe();Object.defineProperty(ro,\"useStderr\",{enumerable:!0,get:function(){return $wt.default}});var eIt=Gwe();Object.defineProperty(ro,\"useFocus\",{enumerable:!0,get:function(){return eIt.default}});var tIt=Ywe();Object.defineProperty(ro,\"useFocusManager\",{enumerable:!0,get:function(){return tIt.default}});var rIt=Wwe();Object.defineProperty(ro,\"measureElement\",{enumerable:!0,get:function(){return rIt.default}})});var Dj={};Kt(Dj,{Gem:()=>vj});var Vwe,um,vj,AQ=Et(()=>{Vwe=$e(ic()),um=$e(sn()),vj=(0,um.memo)(({active:t})=>{let e=(0,um.useMemo)(()=>t?\"\\u25C9\":\"\\u25EF\",[t]),r=(0,um.useMemo)(()=>t?\"green\":\"yellow\",[t]);return um.default.createElement(Vwe.Text,{color:r},e)})});var Jwe={};Kt(Jwe,{useKeypress:()=>Am});function Am({active:t},e,r){let{stdin:o}=(0,Kwe.useStdin)(),a=(0,fQ.useCallback)((n,u)=>e(n,u),r);(0,fQ.useEffect)(()=>{if(!(!t||!o))return o.on(\"keypress\",a),()=>{o.off(\"keypress\",a)}},[t,a,o])}var Kwe,fQ,OB=Et(()=>{Kwe=$e(ic()),fQ=$e(sn())});var Xwe={};Kt(Xwe,{FocusRequest:()=>zwe,useFocusRequest:()=>Pj});var zwe,Pj,Sj=Et(()=>{OB();zwe=(r=>(r.BEFORE=\"before\",r.AFTER=\"after\",r))(zwe||{}),Pj=function({active:t},e,r){Am({active:t},(o,a)=>{a.name===\"tab\"&&(a.shift?e(\"before\"):e(\"after\"))},r)}});var Zwe={};Kt(Zwe,{useListInput:()=>UB});var UB,pQ=Et(()=>{OB();UB=function(t,e,{active:r,minus:o,plus:a,set:n,loop:u=!0}){Am({active:r},(A,p)=>{let h=e.indexOf(t);switch(p.name){case o:{let E=h-1;if(u){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(u){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,u])}});var hQ={};Kt(hQ,{ScrollableItems:()=>nIt});var E0,La,nIt,gQ=Et(()=>{E0=$e(ic()),La=$e(sn());Sj();pQ();nIt=({active:t=!0,children:e=[],radius:r=10,size:o=1,loop:a=!0,onFocusRequest:n,willReachEnd:u})=>{let A=L=>{if(L.key===null)throw new Error(\"Expected all children to have a key\");return L.key},p=La.default.Children.map(e,L=>A(L)),h=p[0],[E,I]=(0,La.useState)(h),v=p.indexOf(E);(0,La.useEffect)(()=>{p.includes(E)||I(h)},[e]),(0,La.useEffect)(()=>{u&&v>=p.length-2&&u()},[v]),Pj({active:t&&!!n},L=>{n?.(L)},[n]),UB(E,p,{active:t,minus:\"up\",plus:\"down\",set:I,loop:a});let b=v-r,C=v+r;C>p.length&&(b-=C-p.length,C=p.length),b<0&&(C+=-b,b=0),C>=p.length&&(C=p.length-1);let T=[];for(let L=b;L<=C;++L){let U=p[L],J=t&&U===E;T.push(La.default.createElement(E0.Box,{key:U,height:o},La.default.createElement(E0.Box,{marginLeft:1,marginRight:1},La.default.createElement(E0.Text,null,J?La.default.createElement(E0.Text,{color:\"cyan\",bold:!0},\">\"):\" \")),La.default.createElement(E0.Box,null,La.default.cloneElement(e[L],{active:J}))))}return La.default.createElement(E0.Box,{flexDirection:\"column\",width:\"100%\"},T)}});var $we,$f,eIe,xj,tIe,bj=Et(()=>{$we=$e(ic()),$f=$e(sn()),eIe=Be(\"readline\"),xj=$f.default.createContext(null),tIe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,$we.useStdin)();(0,$f.useEffect)(()=>{r&&r(!0),e&&(0,eIe.emitKeypressEvents)(e)},[e,r]);let[o,a]=(0,$f.useState)(new Map),n=(0,$f.useMemo)(()=>({getAll:()=>o,get:u=>o.get(u),set:(u,A)=>a(new Map([...o,[u,A]]))}),[o,a]);return $f.default.createElement(xj.Provider,{value:n,children:t})}});var kj={};Kt(kj,{useMinistore:()=>iIt});function iIt(t,e){let r=(0,dQ.useContext)(xj);if(r===null)throw new Error(\"Expected this hook to run with a ministore context attached\");if(typeof t>\"u\")return r.getAll();let o=(0,dQ.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>\"u\"&&(a=e),[a,o]}var dQ,Qj=Et(()=>{dQ=$e(sn());bj()});var yQ={};Kt(yQ,{renderForm:()=>sIt});async function sIt(t,e,{stdin:r,stdout:o,stderr:a}){let n,u=p=>{let{exit:h}=(0,mQ.useApp)();Am({active:!0},(E,I)=>{I.name===\"return\"&&(n=p,h())},[h,p])},{waitUntilExit:A}=(0,mQ.render)(Fj.default.createElement(tIe,null,Fj.default.createElement(t,{...e,useSubmit:u})),{stdin:r,stdout:o,stderr:a});return await A(),n}var mQ,Fj,EQ=Et(()=>{mQ=$e(ic()),Fj=$e(sn());bj();OB()});var sIe=_(_B=>{\"use strict\";Object.defineProperty(_B,\"__esModule\",{value:!0});_B.UncontrolledTextInput=void 0;var nIe=sn(),Tj=sn(),rIe=ic(),fm=iQ(),iIe=({value:t,placeholder:e=\"\",focus:r=!0,mask:o,highlightPastedText:a=!1,showCursor:n=!0,onChange:u,onSubmit:A})=>{let[{cursorOffset:p,cursorWidth:h},E]=Tj.useState({cursorOffset:(t||\"\").length,cursorWidth:0});Tj.useEffect(()=>{E(T=>{if(!r||!n)return T;let L=t||\"\";return T.cursorOffset>L.length-1?{cursorOffset:L.length,cursorWidth:0}:T})},[t,r,n]);let I=a?h:0,v=o?o.repeat(t.length):t,b=v,C=e?fm.grey(e):void 0;if(n&&r){C=e.length>0?fm.inverse(e[0])+fm.grey(e.slice(1)):fm.inverse(\" \"),b=v.length>0?\"\":fm.inverse(\" \");let T=0;for(let L of v)T>=p-I&&T<=p?b+=fm.inverse(L):b+=L,T++;v.length>0&&p===v.length&&(b+=fm.inverse(\" \"))}return rIe.useInput((T,L)=>{if(L.upArrow||L.downArrow||L.ctrl&&T===\"c\"||L.tab||L.shift&&L.tab)return;if(L.return){A&&A(t);return}let U=p,J=t,te=0;L.leftArrow?n&&U--:L.rightArrow?n&&U++:L.backspace||L.delete?p>0&&(J=t.slice(0,p-1)+t.slice(p,t.length),U--):(J=t.slice(0,p)+T+t.slice(p,t.length),U+=T.length,T.length>1&&(te=T.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:te}),J!==t&&u(J)},{isActive:r}),nIe.createElement(rIe.Text,null,e?v.length>0?b:C:b)};_B.default=iIe;_B.UncontrolledTextInput=t=>{let[e,r]=Tj.useState(\"\");return nIe.createElement(iIe,Object.assign({},t,{value:e,onChange:r}))}});var lIe={};Kt(lIe,{Pad:()=>Rj});var oIe,aIe,Rj,Nj=Et(()=>{oIe=$e(ic()),aIe=$e(sn()),Rj=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${\"-\".repeat(t-1)}`:\" \";return aIe.default.createElement(oIe.Text,{dimColor:!e},r)}});var cIe={};Kt(cIe,{ItemOptions:()=>oIt});var jB,w0,oIt,uIe=Et(()=>{jB=$e(ic()),w0=$e(sn());pQ();AQ();Nj();oIt=function({active:t,skewer:e,options:r,value:o,onChange:a,sizes:n=[]}){let u=r.filter(({label:p})=>!!p).map(({value:p})=>p),A=r.findIndex(p=>p.value===o&&p.label!=\"\");return UB(o,u,{active:t,minus:\"left\",plus:\"right\",set:a}),w0.default.createElement(w0.default.Fragment,null,r.map(({label:p},h)=>{let E=h===A,I=n[h]-1||0,v=p.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\"\"),b=Math.max(0,I-v.length-2);return p?w0.default.createElement(jB.Box,{key:p,width:I,marginLeft:1},w0.default.createElement(jB.Text,{wrap:\"truncate\"},w0.default.createElement(vj,{active:E}),\" \",p),e?w0.default.createElement(Rj,{active:t,length:b}):null):w0.default.createElement(jB.Box,{key:`spacer-${h}`,width:I,marginLeft:1})}))}});var PIe=_((zJt,DIe)=>{var Gj;DIe.exports=()=>(typeof Gj>\"u\"&&(Gj=Be(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),Gj)});var VIe=_((wzt,WIe)=>{var $j=Symbol(\"arg flag\"),Ma=class extends Error{constructor(e,r){super(e),this.name=\"ArgError\",this.code=r,Object.setPrototypeOf(this,Ma.prototype)}};function iv(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:o=!1}={}){if(!t)throw new Ma(\"argument specification object is required\",\"ARG_CONFIG_NO_SPEC\");let a={_:[]},n={},u={};for(let A of Object.keys(t)){if(!A)throw new Ma(\"argument key cannot be an empty string\",\"ARG_CONFIG_EMPTY_KEY\");if(A[0]!==\"-\")throw new Ma(`argument key must start with '-' but found: '${A}'`,\"ARG_CONFIG_NONOPT_KEY\");if(A.length===1)throw new Ma(`argument key must have a name; singular '-' keys are not allowed: ${A}`,\"ARG_CONFIG_NONAME_KEY\");if(typeof t[A]==\"string\"){n[A]=t[A];continue}let p=t[A],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]==\"function\"){let[E]=p;p=(I,v,b=[])=>(b.push(E(I,v,b[b.length-1])),b),h=E===Boolean||E[$j]===!0}else if(typeof p==\"function\")h=p===Boolean||p[$j]===!0;else throw new Ma(`type missing or not a function or valid array type: ${A}`,\"ARG_CONFIG_VAD_TYPE\");if(A[1]!==\"-\"&&A.length>2)throw new Ma(`short argument keys (with a single hyphen) must have only one character: ${A}`,\"ARG_CONFIG_SHORTOPT_TOOLONG\");u[A]=[p,h]}for(let A=0,p=e.length;A<p;A++){let h=e[A];if(o&&a._.length>0){a._=a._.concat(e.slice(A));break}if(h===\"--\"){a._=a._.concat(e.slice(A+1));break}if(h.length>1&&h[0]===\"-\"){let E=h[1]===\"-\"||h.length===2?[h]:h.slice(1).split(\"\").map(I=>`-${I}`);for(let I=0;I<E.length;I++){let v=E[I],[b,C]=v[1]===\"-\"?v.split(/=(.*)/,2):[v,void 0],T=b;for(;T in n;)T=n[T];if(!(T in u))if(r){a._.push(v);continue}else throw new Ma(`unknown or unexpected option: ${b}`,\"ARG_UNKNOWN_OPTION\");let[L,U]=u[T];if(!U&&I+1<E.length)throw new Ma(`option requires argument (but was followed by another short argument): ${b}`,\"ARG_MISSING_REQUIRED_SHORTARG\");if(U)a[T]=L(!0,T,a[T]);else if(C===void 0){if(e.length<A+2||e[A+1].length>1&&e[A+1][0]===\"-\"&&!(e[A+1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/)&&(L===Number||typeof BigInt<\"u\"&&L===BigInt))){let J=b===T?\"\":` (alias for ${T})`;throw new Ma(`option requires argument: ${b}${J}`,\"ARG_MISSING_REQUIRED_LONGARG\")}a[T]=L(e[A+1],T,a[T]),++A}else a[T]=L(C,T,a[T])}}else a._.push(h)}return a}iv.flag=t=>(t[$j]=!0,t);iv.COUNT=iv.flag((t,e,r)=>(r||0)+1);iv.ArgError=Ma;WIe.exports=iv});var t1e=_((Kzt,e1e)=>{var nq;e1e.exports=()=>(typeof nq>\"u\"&&(nq=Be(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),nq)});var o1e=_((cq,uq)=>{(function(t){cq&&typeof cq==\"object\"&&typeof uq<\"u\"?uq.exports=t():typeof define==\"function\"&&define.amd?define([],t):typeof window<\"u\"?window.isWindows=t():typeof global<\"u\"?global.isWindows=t():typeof self<\"u\"?self.isWindows=t():this.isWindows=t()})(function(){\"use strict\";return function(){return process&&(process.platform===\"win32\"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var u1e=_((WXt,c1e)=>{\"use strict\";Aq.ifExists=n1t;var GC=Be(\"util\"),sc=Be(\"path\"),a1e=o1e(),e1t=/^#!\\s*(?:\\/usr\\/bin\\/env)?\\s*([^ \\t]+)(.*)$/,t1t={createPwshFile:!0,createCmdFile:a1e(),fs:Be(\"fs\")},r1t=new Map([[\".js\",\"node\"],[\".cjs\",\"node\"],[\".mjs\",\"node\"],[\".cmd\",\"cmd\"],[\".bat\",\"cmd\"],[\".ps1\",\"pwsh\"],[\".sh\",\"sh\"]]);function l1e(t){let e={...t1t,...t},r=e.fs;return e.fs_={chmod:r.chmod?GC.promisify(r.chmod):async()=>{},mkdir:GC.promisify(r.mkdir),readFile:GC.promisify(r.readFile),stat:GC.promisify(r.stat),unlink:GC.promisify(r.unlink),writeFile:GC.promisify(r.writeFile)},e}async function Aq(t,e,r){let o=l1e(r);await o.fs_.stat(t),await s1t(t,e,o)}function n1t(t,e,r){return Aq(t,e,r).catch(()=>{})}function i1t(t,e){return e.fs_.unlink(t).catch(()=>{})}async function s1t(t,e,r){let o=await u1t(t,r);return await o1t(e,r),a1t(t,e,o,r)}function o1t(t,e){return e.fs_.mkdir(sc.dirname(t),{recursive:!0})}function a1t(t,e,r,o){let a=l1e(o),n=[{generator:p1t,extension:\"\"}];return a.createCmdFile&&n.push({generator:f1t,extension:\".cmd\"}),a.createPwshFile&&n.push({generator:h1t,extension:\".ps1\"}),Promise.all(n.map(u=>A1t(t,e+u.extension,r,u.generator,a)))}function l1t(t,e){return i1t(t,e)}function c1t(t,e){return g1t(t,e)}async function u1t(t,e){let a=(await e.fs_.readFile(t,\"utf8\")).trim().split(/\\r*\\n/)[0].match(e1t);if(!a){let n=sc.extname(t).toLowerCase();return{program:r1t.get(n)||null,additionalArgs:\"\"}}return{program:a[1],additionalArgs:a[2]}}async function A1t(t,e,r,o,a){let n=a.preserveSymlinks?\"--preserve-symlinks\":\"\",u=[r.additionalArgs,n].filter(A=>A).join(\" \");return a=Object.assign({},a,{prog:r.program,args:u}),await l1t(e,a),await a.fs_.writeFile(e,o(t,e,a),\"utf8\"),c1t(e,a)}function f1t(t,e,r){let a=sc.relative(sc.dirname(e),t).split(\"/\").join(\"\\\\\"),n=sc.isAbsolute(a)?`\"${a}\"`:`\"%~dp0\\\\${a}\"`,u,A=r.prog,p=r.args||\"\",h=fq(r.nodePath).win32;A?(u=`\"%~dp0\\\\${A}.exe\"`,a=n):(A=n,p=\"\",a=\"\");let E=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",I=h?`@SET NODE_PATH=${h}\\r\n`:\"\";return u?I+=`@IF EXIST ${u} (\\r\n  ${u} ${p} ${a} ${E}%*\\r\n) ELSE (\\r\n  @SETLOCAL\\r\n  @SET PATHEXT=%PATHEXT:;.JS;=;%\\r\n  ${A} ${p} ${a} ${E}%*\\r\n)\\r\n`:I+=`@${A} ${p} ${a} ${E}%*\\r\n`,I}function p1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n;o=o.split(\"\\\\\").join(\"/\");let u=sc.isAbsolute(o)?`\"${o}\"`:`\"$basedir/${o}\"`,A=r.args||\"\",p=fq(r.nodePath).posix;a?(n=`\"$basedir/${r.prog}\"`,o=u):(a=u,A=\"\",o=\"\");let h=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",E=`#!/bin/sh\nbasedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\\\\\,/,g')\")\n\ncase \\`uname\\` in\n    *CYGWIN*) basedir=\\`cygpath -w \"$basedir\"\\`;;\nesac\n\n`,I=r.nodePath?`export NODE_PATH=\"${p}\"\n`:\"\";return n?E+=`${I}if [ -x ${n} ]; then\n  exec ${n} ${A} ${o} ${h}\"$@\"\nelse\n  exec ${a} ${A} ${o} ${h}\"$@\"\nfi\n`:E+=`${I}${a} ${A} ${o} ${h}\"$@\"\nexit $?\n`,E}function h1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n=a&&`\"${a}$exe\"`,u;o=o.split(\"\\\\\").join(\"/\");let A=sc.isAbsolute(o)?`\"${o}\"`:`\"$basedir/${o}\"`,p=r.args||\"\",h=fq(r.nodePath),E=h.win32,I=h.posix;n?(u=`\"$basedir/${r.prog}$exe\"`,o=A):(n=A,p=\"\",o=\"\");let v=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",b=`#!/usr/bin/env pwsh\n$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n\n$exe=\"\"\n${r.nodePath?`$env_node_path=$env:NODE_PATH\n$env:NODE_PATH=\"${E}\"\n`:\"\"}if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n  # Fix case when both the Windows and Linux builds of Node\n  # are installed in the same directory\n  $exe=\".exe\"\n}`;return r.nodePath&&(b+=` else {\n  $env:NODE_PATH=\"${I}\"\n}`),u?b+=`\n$ret=0\nif (Test-Path ${u}) {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${u} ${p} ${o} ${v}$args\n  } else {\n    & ${u} ${p} ${o} ${v}$args\n  }\n  $ret=$LASTEXITCODE\n} else {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${n} ${p} ${o} ${v}$args\n  } else {\n    & ${n} ${p} ${o} ${v}$args\n  }\n  $ret=$LASTEXITCODE\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $ret\n`:b+=`\n# Support pipeline input\nif ($MyInvocation.ExpectingInput) {\n  $input | & ${n} ${p} ${o} ${v}$args\n} else {\n  & ${n} ${p} ${o} ${v}$args\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $LASTEXITCODE\n`,b}function g1t(t,e){return e.fs_.chmod(t,493)}function fq(t){if(!t)return{win32:\"\",posix:\"\"};let e=typeof t==\"string\"?t.split(sc.delimiter):Array.from(t),r={};for(let o=0;o<e.length;o++){let a=e[o].split(\"/\").join(\"\\\\\"),n=a1e()?e[o].split(\"\\\\\").join(\"/\").replace(/^([^:\\\\/]*):/,(u,A)=>`/mnt/${A.toLowerCase()}`):e[o];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[o]={win32:a,posix:n}}return r}c1e.exports=Aq});var Sq=_((h$t,F1e)=>{F1e.exports=Be(\"stream\")});var L1e=_((g$t,N1e)=>{\"use strict\";function T1e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function U1t(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?T1e(Object(r),!0).forEach(function(o){_1t(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):T1e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function _1t(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function H1t(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function R1e(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function j1t(t,e,r){return e&&R1e(t.prototype,e),r&&R1e(t,r),t}var q1t=Be(\"buffer\"),QQ=q1t.Buffer,G1t=Be(\"util\"),xq=G1t.inspect,Y1t=xq&&xq.custom||\"inspect\";function W1t(t,e,r){QQ.prototype.copy.call(t,e,r)}N1e.exports=function(){function t(){H1t(this,t),this.head=null,this.tail=null,this.length=0}return j1t(t,[{key:\"push\",value:function(r){var o={data:r,next:null};this.length>0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:\"unshift\",value:function(r){var o={data:r,next:this.head};this.length===0&&(this.tail=o),this.head=o,++this.length}},{key:\"shift\",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(r){if(this.length===0)return\"\";for(var o=this.head,a=\"\"+o.data;o=o.next;)a+=r+o.data;return a}},{key:\"concat\",value:function(r){if(this.length===0)return QQ.alloc(0);for(var o=QQ.allocUnsafe(r>>>0),a=this.head,n=0;a;)W1t(a.data,o,n),n+=a.data.length,a=a.next;return o}},{key:\"consume\",value:function(r,o){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=o?this._getString(r):this._getBuffer(r),a}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(r){var o=this.head,a=1,n=o.data;for(r-=n.length;o=o.next;){var u=o.data,A=r>u.length?u.length:r;if(A===u.length?n+=u:n+=u.slice(0,r),r-=A,r===0){A===u.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(A));break}++a}return this.length-=a,n}},{key:\"_getBuffer\",value:function(r){var o=QQ.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(o),r-=a.data.length;a=a.next;){var u=a.data,A=r>u.length?u.length:r;if(u.copy(o,o.length-r,0,A),r-=A,r===0){A===u.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=u.slice(A));break}++n}return this.length-=n,o}},{key:Y1t,value:function(r,o){return xq(this,U1t({},o,{depth:0,customInspect:!1}))}}]),t}()});var kq=_((d$t,O1e)=>{\"use strict\";function V1t(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(bq,this,t)):process.nextTick(bq,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(FQ,r):(r._writableState.errorEmitted=!0,process.nextTick(M1e,r,n)):process.nextTick(M1e,r,n):e?(process.nextTick(FQ,r),e(n)):process.nextTick(FQ,r)}),this)}function M1e(t,e){bq(t,e),FQ(t)}function FQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit(\"close\")}function K1t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function bq(t,e){t.emit(\"error\",e)}function J1t(t,e){var r=t._readableState,o=t._writableState;r&&r.autoDestroy||o&&o.autoDestroy?t.destroy(e):t.emit(\"error\",e)}O1e.exports={destroy:V1t,undestroy:K1t,errorOrDestroy:J1t}});var k0=_((m$t,H1e)=>{\"use strict\";var _1e={};function ac(t,e,r){r||(r=Error);function o(n,u,A){return typeof e==\"string\"?e:e(n,u,A)}class a extends r{constructor(u,A,p){super(o(u,A,p))}}a.prototype.name=r.name,a.prototype.code=t,_1e[t]=a}function U1e(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(o=>String(o)),r>2?`one of ${e} ${t.slice(0,r-1).join(\", \")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function z1t(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function X1t(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function Z1t(t,e,r){return typeof r!=\"number\"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}ac(\"ERR_INVALID_OPT_VALUE\",function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'},TypeError);ac(\"ERR_INVALID_ARG_TYPE\",function(t,e,r){let o;typeof e==\"string\"&&z1t(e,\"not \")?(o=\"must not be\",e=e.replace(/^not /,\"\")):o=\"must be\";let a;if(X1t(t,\" argument\"))a=`The ${t} ${o} ${U1e(e,\"type\")}`;else{let n=Z1t(t,\".\")?\"property\":\"argument\";a=`The \"${t}\" ${n} ${o} ${U1e(e,\"type\")}`}return a+=`. Received type ${typeof r}`,a},TypeError);ac(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");ac(\"ERR_METHOD_NOT_IMPLEMENTED\",function(t){return\"The \"+t+\" method is not implemented\"});ac(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");ac(\"ERR_STREAM_DESTROYED\",function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"});ac(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");ac(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");ac(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");ac(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);ac(\"ERR_UNKNOWN_ENCODING\",function(t){return\"Unknown encoding: \"+t},TypeError);ac(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");H1e.exports.codes=_1e});var Qq=_((y$t,j1e)=>{\"use strict\";var $1t=k0().codes.ERR_INVALID_OPT_VALUE;function e2t(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function t2t(t,e,r,o){var a=e2t(e,o,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=o?r:\"highWaterMark\";throw new $1t(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}j1e.exports={getHighWaterMark:t2t}});var q1e=_((E$t,Fq)=>{typeof Object.create==\"function\"?Fq.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Fq.exports=function(e,r){if(r){e.super_=r;var o=function(){};o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e}}});var Q0=_((C$t,Rq)=>{try{if(Tq=Be(\"util\"),typeof Tq.inherits!=\"function\")throw\"\";Rq.exports=Tq.inherits}catch{Rq.exports=q1e()}var Tq});var Y1e=_((w$t,G1e)=>{G1e.exports=Be(\"util\").deprecate});var Mq=_((I$t,X1e)=>{\"use strict\";X1e.exports=Ti;function V1e(t){var e=this;this.next=null,this.entry=null,this.finish=function(){x2t(e,t)}}var JC;Ti.WritableState=mv;var r2t={deprecate:Y1e()},K1e=Sq(),RQ=Be(\"buffer\").Buffer,n2t=global.Uint8Array||function(){};function i2t(t){return RQ.from(t)}function s2t(t){return RQ.isBuffer(t)||t instanceof n2t}var Lq=kq(),o2t=Qq(),a2t=o2t.getHighWaterMark,F0=k0().codes,l2t=F0.ERR_INVALID_ARG_TYPE,c2t=F0.ERR_METHOD_NOT_IMPLEMENTED,u2t=F0.ERR_MULTIPLE_CALLBACK,A2t=F0.ERR_STREAM_CANNOT_PIPE,f2t=F0.ERR_STREAM_DESTROYED,p2t=F0.ERR_STREAM_NULL_VALUES,h2t=F0.ERR_STREAM_WRITE_AFTER_END,g2t=F0.ERR_UNKNOWN_ENCODING,zC=Lq.errorOrDestroy;Q0()(Ti,K1e);function d2t(){}function mv(t,e,r){JC=JC||Em(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof JC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=a2t(this,t,\"writableHighWaterMark\",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=t.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){B2t(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new V1e(this)}mv.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(mv.prototype,\"buffer\",{get:r2t.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch{}})();var TQ;typeof Symbol==\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==\"function\"?(TQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Ti,Symbol.hasInstance,{value:function(e){return TQ.call(this,e)?!0:this!==Ti?!1:e&&e._writableState instanceof mv}})):TQ=function(e){return e instanceof this};function Ti(t){JC=JC||Em();var e=this instanceof JC;if(!e&&!TQ.call(Ti,this))return new Ti(t);this._writableState=new mv(t,this,e),this.writable=!0,t&&(typeof t.write==\"function\"&&(this._write=t.write),typeof t.writev==\"function\"&&(this._writev=t.writev),typeof t.destroy==\"function\"&&(this._destroy=t.destroy),typeof t.final==\"function\"&&(this._final=t.final)),K1e.call(this)}Ti.prototype.pipe=function(){zC(this,new A2t)};function m2t(t,e){var r=new h2t;zC(t,r),process.nextTick(e,r)}function y2t(t,e,r,o){var a;return r===null?a=new p2t:typeof r!=\"string\"&&!e.objectMode&&(a=new l2t(\"chunk\",[\"string\",\"Buffer\"],r)),a?(zC(t,a),process.nextTick(o,a),!1):!0}Ti.prototype.write=function(t,e,r){var o=this._writableState,a=!1,n=!o.objectMode&&s2t(t);return n&&!RQ.isBuffer(t)&&(t=i2t(t)),typeof e==\"function\"&&(r=e,e=null),n?e=\"buffer\":e||(e=o.defaultEncoding),typeof r!=\"function\"&&(r=d2t),o.ending?m2t(this,r):(n||y2t(this,o,t,r))&&(o.pendingcb++,a=C2t(this,o,n,t,e,r)),a};Ti.prototype.cork=function(){this._writableState.corked++};Ti.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&J1e(this,t))};Ti.prototype.setDefaultEncoding=function(e){if(typeof e==\"string\"&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new g2t(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Ti.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function E2t(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e==\"string\"&&(e=RQ.from(e,r)),e}Object.defineProperty(Ti.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function C2t(t,e,r,o,a,n){if(!r){var u=E2t(e,o,a);o!==u&&(r=!0,a=\"buffer\",o=u)}var A=e.objectMode?1:o.length;e.length+=A;var p=e.length<e.highWaterMark;if(p||(e.needDrain=!0),e.writing||e.corked){var h=e.lastBufferedRequest;e.lastBufferedRequest={chunk:o,encoding:a,isBuf:r,callback:n,next:null},h?h.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else Nq(t,e,!1,A,o,a,n);return p}function Nq(t,e,r,o,a,n,u){e.writelen=o,e.writecb=u,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new f2t(\"write\")):r?t._writev(a,e.onwrite):t._write(a,n,e.onwrite),e.sync=!1}function w2t(t,e,r,o,a){--e.pendingcb,r?(process.nextTick(a,o),process.nextTick(dv,t,e),t._writableState.errorEmitted=!0,zC(t,o)):(a(o),t._writableState.errorEmitted=!0,zC(t,o),dv(t,e))}function I2t(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function B2t(t,e){var r=t._writableState,o=r.sync,a=r.writecb;if(typeof a!=\"function\")throw new u2t;if(I2t(r),e)w2t(t,r,o,e,a);else{var n=z1e(r)||t.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&J1e(t,r),o?process.nextTick(W1e,t,r,n,a):W1e(t,r,n,a)}}function W1e(t,e,r,o){r||v2t(t,e),e.pendingcb--,o(),dv(t,e)}function v2t(t,e){e.length===0&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}function J1e(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var o=e.bufferedRequestCount,a=new Array(o),n=e.corkedRequestsFree;n.entry=r;for(var u=0,A=!0;r;)a[u]=r,r.isBuf||(A=!1),r=r.next,u+=1;a.allBuffers=A,Nq(t,e,!0,e.length,a,\"\",n.finish),e.pendingcb++,e.lastBufferedRequest=null,n.next?(e.corkedRequestsFree=n.next,n.next=null):e.corkedRequestsFree=new V1e(e),e.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,E=r.callback,I=e.objectMode?1:p.length;if(Nq(t,e,!1,I,p,h,E),r=r.next,e.bufferedRequestCount--,e.writing)break}r===null&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}Ti.prototype._write=function(t,e,r){r(new c2t(\"_write()\"))};Ti.prototype._writev=null;Ti.prototype.end=function(t,e,r){var o=this._writableState;return typeof t==\"function\"?(r=t,t=null,e=null):typeof e==\"function\"&&(r=e,e=null),t!=null&&this.write(t,e),o.corked&&(o.corked=1,this.uncork()),o.ending||S2t(this,o,r),this};Object.defineProperty(Ti.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function z1e(t){return t.ending&&t.length===0&&t.bufferedRequest===null&&!t.finished&&!t.writing}function D2t(t,e){t._final(function(r){e.pendingcb--,r&&zC(t,r),e.prefinished=!0,t.emit(\"prefinish\"),dv(t,e)})}function P2t(t,e){!e.prefinished&&!e.finalCalled&&(typeof t._final==\"function\"&&!e.destroyed?(e.pendingcb++,e.finalCalled=!0,process.nextTick(D2t,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}function dv(t,e){var r=z1e(e);if(r&&(P2t(t,e),e.pendingcb===0&&(e.finished=!0,t.emit(\"finish\"),e.autoDestroy))){var o=t._readableState;(!o||o.autoDestroy&&o.endEmitted)&&t.destroy()}return r}function S2t(t,e,r){e.ending=!0,dv(t,e),r&&(e.finished?process.nextTick(r):t.once(\"finish\",r)),e.ended=!0,t.writable=!1}function x2t(t,e,r){var o=t.entry;for(t.entry=null;o;){var a=o.callback;e.pendingcb--,a(r),o=o.next}e.corkedRequestsFree.next=t}Object.defineProperty(Ti.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){!this._writableState||(this._writableState.destroyed=e)}});Ti.prototype.destroy=Lq.destroy;Ti.prototype._undestroy=Lq.undestroy;Ti.prototype._destroy=function(t,e){e(t)}});var Em=_((B$t,$1e)=>{\"use strict\";var b2t=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};$1e.exports=yA;var Z1e=_q(),Uq=Mq();Q0()(yA,Z1e);for(Oq=b2t(Uq.prototype),NQ=0;NQ<Oq.length;NQ++)LQ=Oq[NQ],yA.prototype[LQ]||(yA.prototype[LQ]=Uq.prototype[LQ]);var Oq,LQ,NQ;function yA(t){if(!(this instanceof yA))return new yA(t);Z1e.call(this,t),Uq.call(this,t),this.allowHalfOpen=!0,t&&(t.readable===!1&&(this.readable=!1),t.writable===!1&&(this.writable=!1),t.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once(\"end\",k2t)))}Object.defineProperty(yA.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(yA.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(yA.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function k2t(){this._writableState.ended||process.nextTick(Q2t,this)}function Q2t(t){t.end()}Object.defineProperty(yA.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(e){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=e,this._writableState.destroyed=e)}})});var r2e=_((Hq,t2e)=>{var MQ=Be(\"buffer\"),np=MQ.Buffer;function e2e(t,e){for(var r in t)e[r]=t[r]}np.from&&np.alloc&&np.allocUnsafe&&np.allocUnsafeSlow?t2e.exports=MQ:(e2e(MQ,Hq),Hq.Buffer=XC);function XC(t,e,r){return np(t,e,r)}e2e(np,XC);XC.from=function(t,e,r){if(typeof t==\"number\")throw new TypeError(\"Argument must not be a number\");return np(t,e,r)};XC.alloc=function(t,e,r){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");var o=np(t);return e!==void 0?typeof r==\"string\"?o.fill(e,r):o.fill(e):o.fill(0),o};XC.allocUnsafe=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return np(t)};XC.allocUnsafeSlow=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return MQ.SlowBuffer(t)}});var Gq=_(i2e=>{\"use strict\";var qq=r2e().Buffer,n2e=qq.isEncoding||function(t){switch(t=\"\"+t,t&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function F2t(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}function T2t(t){var e=F2t(t);if(typeof e!=\"string\"&&(qq.isEncoding===n2e||!n2e(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}i2e.StringDecoder=yv;function yv(t){this.encoding=T2t(t);var e;switch(this.encoding){case\"utf16le\":this.text=U2t,this.end=_2t,e=4;break;case\"utf8\":this.fillLast=L2t,e=4;break;case\"base64\":this.text=H2t,this.end=j2t,e=3;break;default:this.write=q2t,this.end=G2t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=qq.allocUnsafe(e)}yv.prototype.write=function(t){if(t.length===0)return\"\";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||\"\"};yv.prototype.end=O2t;yv.prototype.text=M2t;yv.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};function jq(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function R2t(t,e,r){var o=e.length-1;if(o<r)return 0;var a=jq(e[o]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--o<r||a===-2?0:(a=jq(e[o]),a>=0?(a>0&&(t.lastNeed=a-2),a):--o<r||a===-2?0:(a=jq(e[o]),a>=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function N2t(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,\"\\uFFFD\";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,\"\\uFFFD\";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,\"\\uFFFD\"}}function L2t(t){var e=this.lastTotal-this.lastNeed,r=N2t(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function M2t(t,e){var r=R2t(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var o=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,o),t.toString(\"utf8\",e,o)}function O2t(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"\\uFFFD\":e}function U2t(t,e){if((t.length-e)%2===0){var r=t.toString(\"utf16le\",e);if(r){var o=r.charCodeAt(r.length-1);if(o>=55296&&o<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function _2t(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function H2t(t,e){var r=(t.length-e)%3;return r===0?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function j2t(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function q2t(t){return t.toString(this.encoding)}function G2t(t){return t&&t.length?this.write(t):\"\"}});var OQ=_((D$t,a2e)=>{\"use strict\";var s2e=k0().codes.ERR_STREAM_PREMATURE_CLOSE;function Y2t(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];t.apply(this,o)}}}function W2t(){}function V2t(t){return t.setHeader&&typeof t.abort==\"function\"}function o2e(t,e,r){if(typeof e==\"function\")return o2e(t,null,e);e||(e={}),r=Y2t(r||W2t);var o=e.readable||e.readable!==!1&&t.readable,a=e.writable||e.writable!==!1&&t.writable,n=function(){t.writable||A()},u=t._writableState&&t._writableState.finished,A=function(){a=!1,u=!0,o||r.call(t)},p=t._readableState&&t._readableState.endEmitted,h=function(){o=!1,p=!0,a||r.call(t)},E=function(C){r.call(t,C)},I=function(){var C;if(o&&!p)return(!t._readableState||!t._readableState.ended)&&(C=new s2e),r.call(t,C);if(a&&!u)return(!t._writableState||!t._writableState.ended)&&(C=new s2e),r.call(t,C)},v=function(){t.req.on(\"finish\",A)};return V2t(t)?(t.on(\"complete\",A),t.on(\"abort\",I),t.req?v():t.on(\"request\",v)):a&&!t._writableState&&(t.on(\"end\",n),t.on(\"close\",n)),t.on(\"end\",h),t.on(\"finish\",A),e.error!==!1&&t.on(\"error\",E),t.on(\"close\",I),function(){t.removeListener(\"complete\",A),t.removeListener(\"abort\",I),t.removeListener(\"request\",v),t.req&&t.req.removeListener(\"finish\",A),t.removeListener(\"end\",n),t.removeListener(\"close\",n),t.removeListener(\"finish\",A),t.removeListener(\"end\",h),t.removeListener(\"error\",E),t.removeListener(\"close\",I)}}a2e.exports=o2e});var c2e=_((P$t,l2e)=>{\"use strict\";var UQ;function T0(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var K2t=OQ(),R0=Symbol(\"lastResolve\"),Cm=Symbol(\"lastReject\"),Ev=Symbol(\"error\"),_Q=Symbol(\"ended\"),wm=Symbol(\"lastPromise\"),Yq=Symbol(\"handlePromise\"),Im=Symbol(\"stream\");function N0(t,e){return{value:t,done:e}}function J2t(t){var e=t[R0];if(e!==null){var r=t[Im].read();r!==null&&(t[wm]=null,t[R0]=null,t[Cm]=null,e(N0(r,!1)))}}function z2t(t){process.nextTick(J2t,t)}function X2t(t,e){return function(r,o){t.then(function(){if(e[_Q]){r(N0(void 0,!0));return}e[Yq](r,o)},o)}}var Z2t=Object.getPrototypeOf(function(){}),$2t=Object.setPrototypeOf((UQ={get stream(){return this[Im]},next:function(){var e=this,r=this[Ev];if(r!==null)return Promise.reject(r);if(this[_Q])return Promise.resolve(N0(void 0,!0));if(this[Im].destroyed)return new Promise(function(u,A){process.nextTick(function(){e[Ev]?A(e[Ev]):u(N0(void 0,!0))})});var o=this[wm],a;if(o)a=new Promise(X2t(o,this));else{var n=this[Im].read();if(n!==null)return Promise.resolve(N0(n,!1));a=new Promise(this[Yq])}return this[wm]=a,a}},T0(UQ,Symbol.asyncIterator,function(){return this}),T0(UQ,\"return\",function(){var e=this;return new Promise(function(r,o){e[Im].destroy(null,function(a){if(a){o(a);return}r(N0(void 0,!0))})})}),UQ),Z2t),eBt=function(e){var r,o=Object.create($2t,(r={},T0(r,Im,{value:e,writable:!0}),T0(r,R0,{value:null,writable:!0}),T0(r,Cm,{value:null,writable:!0}),T0(r,Ev,{value:null,writable:!0}),T0(r,_Q,{value:e._readableState.endEmitted,writable:!0}),T0(r,Yq,{value:function(n,u){var A=o[Im].read();A?(o[wm]=null,o[R0]=null,o[Cm]=null,n(N0(A,!1))):(o[R0]=n,o[Cm]=u)},writable:!0}),r));return o[wm]=null,K2t(e,function(a){if(a&&a.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var n=o[Cm];n!==null&&(o[wm]=null,o[R0]=null,o[Cm]=null,n(a)),o[Ev]=a;return}var u=o[R0];u!==null&&(o[wm]=null,o[R0]=null,o[Cm]=null,u(N0(void 0,!0))),o[_Q]=!0}),e.on(\"readable\",z2t.bind(null,o)),o};l2e.exports=eBt});var p2e=_((S$t,f2e)=>{\"use strict\";function u2e(t,e,r,o,a,n,u){try{var A=t[n](u),p=A.value}catch(h){r(h);return}A.done?e(p):Promise.resolve(p).then(o,a)}function tBt(t){return function(){var e=this,r=arguments;return new Promise(function(o,a){var n=t.apply(e,r);function u(p){u2e(n,o,a,u,A,\"next\",p)}function A(p){u2e(n,o,a,u,A,\"throw\",p)}u(void 0)})}}function A2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function rBt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?A2e(Object(r),!0).forEach(function(o){nBt(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):A2e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function nBt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var iBt=k0().codes.ERR_INVALID_ARG_TYPE;function sBt(t,e,r){var o;if(e&&typeof e.next==\"function\")o=e;else if(e&&e[Symbol.asyncIterator])o=e[Symbol.asyncIterator]();else if(e&&e[Symbol.iterator])o=e[Symbol.iterator]();else throw new iBt(\"iterable\",[\"Iterable\"],e);var a=new t(rBt({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,u())};function u(){return A.apply(this,arguments)}function A(){return A=tBt(function*(){try{var p=yield o.next(),h=p.value,E=p.done;E?a.push(null):a.push(yield h)?u():n=!1}catch(I){a.destroy(I)}}),A.apply(this,arguments)}return a}f2e.exports=sBt});var _q=_((b$t,B2e)=>{\"use strict\";B2e.exports=mn;var ZC;mn.ReadableState=m2e;var x$t=Be(\"events\").EventEmitter,d2e=function(e,r){return e.listeners(r).length},wv=Sq(),HQ=Be(\"buffer\").Buffer,oBt=global.Uint8Array||function(){};function aBt(t){return HQ.from(t)}function lBt(t){return HQ.isBuffer(t)||t instanceof oBt}var Wq=Be(\"util\"),$r;Wq&&Wq.debuglog?$r=Wq.debuglog(\"stream\"):$r=function(){};var cBt=L1e(),$q=kq(),uBt=Qq(),ABt=uBt.getHighWaterMark,jQ=k0().codes,fBt=jQ.ERR_INVALID_ARG_TYPE,pBt=jQ.ERR_STREAM_PUSH_AFTER_EOF,hBt=jQ.ERR_METHOD_NOT_IMPLEMENTED,gBt=jQ.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,$C,Vq,Kq;Q0()(mn,wv);var Cv=$q.errorOrDestroy,Jq=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function dBt(t,e,r){if(typeof t.prependListener==\"function\")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function m2e(t,e,r){ZC=ZC||Em(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof ZC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=ABt(this,t,\"readableHighWaterMark\",r),this.buffer=new cBt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&($C||($C=Gq().StringDecoder),this.decoder=new $C(t.encoding),this.encoding=t.encoding)}function mn(t){if(ZC=ZC||Em(),!(this instanceof mn))return new mn(t);var e=this instanceof ZC;this._readableState=new m2e(t,this,e),this.readable=!0,t&&(typeof t.read==\"function\"&&(this._read=t.read),typeof t.destroy==\"function\"&&(this._destroy=t.destroy)),wv.call(this)}Object.defineProperty(mn.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});mn.prototype.destroy=$q.destroy;mn.prototype._undestroy=$q.undestroy;mn.prototype._destroy=function(t,e){e(t)};mn.prototype.push=function(t,e){var r=this._readableState,o;return r.objectMode?o=!0:typeof t==\"string\"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=HQ.from(t,e),e=\"\"),o=!0),y2e(this,t,e,!1,o)};mn.prototype.unshift=function(t){return y2e(this,t,null,!0,!1)};function y2e(t,e,r,o,a){$r(\"readableAddChunk\",e);var n=t._readableState;if(e===null)n.reading=!1,EBt(t,n);else{var u;if(a||(u=mBt(n,e)),u)Cv(t,u);else if(n.objectMode||e&&e.length>0)if(typeof e!=\"string\"&&!n.objectMode&&Object.getPrototypeOf(e)!==HQ.prototype&&(e=aBt(e)),o)n.endEmitted?Cv(t,new gBt):zq(t,n,e,!0);else if(n.ended)Cv(t,new pBt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?zq(t,n,e,!1):Zq(t,n)):zq(t,n,e,!1)}else o||(n.reading=!1,Zq(t,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function zq(t,e,r,o){e.flowing&&e.length===0&&!e.sync?(e.awaitDrain=0,t.emit(\"data\",r)):(e.length+=e.objectMode?1:r.length,o?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&qQ(t)),Zq(t,e)}function mBt(t,e){var r;return!lBt(e)&&typeof e!=\"string\"&&e!==void 0&&!t.objectMode&&(r=new fBt(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],e)),r}mn.prototype.isPaused=function(){return this._readableState.flowing===!1};mn.prototype.setEncoding=function(t){$C||($C=Gq().StringDecoder);var e=new $C(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,o=\"\";r!==null;)o+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),o!==\"\"&&this._readableState.buffer.push(o),this._readableState.length=o.length,this};var h2e=1073741824;function yBt(t){return t>=h2e?t=h2e:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function g2e(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=yBt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}mn.prototype.read=function(t){$r(\"read\",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return $r(\"read: emitReadable\",e.length,e.ended),e.length===0&&e.ended?Xq(this):qQ(this),null;if(t=g2e(t,e),t===0&&e.ended)return e.length===0&&Xq(this),null;var o=e.needReadable;$r(\"need readable\",o),(e.length===0||e.length-t<e.highWaterMark)&&(o=!0,$r(\"length less than watermark\",o)),e.ended||e.reading?(o=!1,$r(\"reading or ended\",o)):o&&($r(\"do read\"),e.reading=!0,e.sync=!0,e.length===0&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=g2e(r,e)));var a;return t>0?a=w2e(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&Xq(this)),a!==null&&this.emit(\"data\",a),a};function EBt(t,e){if($r(\"onEofChunk\"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?qQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,E2e(t)))}}function qQ(t){var e=t._readableState;$r(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||($r(\"emitReadable\",e.flowing),e.emittedReadable=!0,process.nextTick(E2e,t))}function E2e(t){var e=t._readableState;$r(\"emitReadable_\",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,eG(t)}function Zq(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(CBt,t,e))}function CBt(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&e.length===0);){var r=e.length;if($r(\"maybeReadMore read 0\"),t.read(0),r===e.length)break}e.readingMore=!1}mn.prototype._read=function(t){Cv(this,new hBt(\"_read()\"))};mn.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,$r(\"pipe count=%d opts=%j\",o.pipesCount,e);var a=(!e||e.end!==!1)&&t!==process.stdout&&t!==process.stderr,n=a?A:T;o.endEmitted?process.nextTick(n):r.once(\"end\",n),t.on(\"unpipe\",u);function u(L,U){$r(\"onunpipe\"),L===r&&U&&U.hasUnpiped===!1&&(U.hasUnpiped=!0,E())}function A(){$r(\"onend\"),t.end()}var p=wBt(r);t.on(\"drain\",p);var h=!1;function E(){$r(\"cleanup\"),t.removeListener(\"close\",b),t.removeListener(\"finish\",C),t.removeListener(\"drain\",p),t.removeListener(\"error\",v),t.removeListener(\"unpipe\",u),r.removeListener(\"end\",A),r.removeListener(\"end\",T),r.removeListener(\"data\",I),h=!0,o.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&p()}r.on(\"data\",I);function I(L){$r(\"ondata\");var U=t.write(L);$r(\"dest.write\",U),U===!1&&((o.pipesCount===1&&o.pipes===t||o.pipesCount>1&&I2e(o.pipes,t)!==-1)&&!h&&($r(\"false write response, pause\",o.awaitDrain),o.awaitDrain++),r.pause())}function v(L){$r(\"onerror\",L),T(),t.removeListener(\"error\",v),d2e(t,\"error\")===0&&Cv(t,L)}dBt(t,\"error\",v);function b(){t.removeListener(\"finish\",C),T()}t.once(\"close\",b);function C(){$r(\"onfinish\"),t.removeListener(\"close\",b),T()}t.once(\"finish\",C);function T(){$r(\"unpipe\"),r.unpipe(t)}return t.emit(\"pipe\",r),o.flowing||($r(\"pipe resume\"),r.resume()),t};function wBt(t){return function(){var r=t._readableState;$r(\"pipeOnDrain\",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&d2e(t,\"data\")&&(r.flowing=!0,eG(t))}}mn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r),this);if(!t){var o=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n<a;n++)o[n].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var u=I2e(e.pipes,t);return u===-1?this:(e.pipes.splice(u,1),e.pipesCount-=1,e.pipesCount===1&&(e.pipes=e.pipes[0]),t.emit(\"unpipe\",this,r),this)};mn.prototype.on=function(t,e){var r=wv.prototype.on.call(this,t,e),o=this._readableState;return t===\"data\"?(o.readableListening=this.listenerCount(\"readable\")>0,o.flowing!==!1&&this.resume()):t===\"readable\"&&!o.endEmitted&&!o.readableListening&&(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,$r(\"on readable\",o.length,o.reading),o.length?qQ(this):o.reading||process.nextTick(IBt,this)),r};mn.prototype.addListener=mn.prototype.on;mn.prototype.removeListener=function(t,e){var r=wv.prototype.removeListener.call(this,t,e);return t===\"readable\"&&process.nextTick(C2e,this),r};mn.prototype.removeAllListeners=function(t){var e=wv.prototype.removeAllListeners.apply(this,arguments);return(t===\"readable\"||t===void 0)&&process.nextTick(C2e,this),e};function C2e(t){var e=t._readableState;e.readableListening=t.listenerCount(\"readable\")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function IBt(t){$r(\"readable nexttick read 0\"),t.read(0)}mn.prototype.resume=function(){var t=this._readableState;return t.flowing||($r(\"resume\"),t.flowing=!t.readableListening,BBt(this,t)),t.paused=!1,this};function BBt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(vBt,t,e))}function vBt(t,e){$r(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),eG(t),e.flowing&&!e.reading&&t.read(0)}mn.prototype.pause=function(){return $r(\"call pause flowing=%j\",this._readableState.flowing),this._readableState.flowing!==!1&&($r(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this};function eG(t){var e=t._readableState;for($r(\"flow\",e.flowing);e.flowing&&t.read()!==null;);}mn.prototype.wrap=function(t){var e=this,r=this._readableState,o=!1;t.on(\"end\",function(){if($r(\"wrapped end\"),r.decoder&&!r.ended){var u=r.decoder.end();u&&u.length&&e.push(u)}e.push(null)}),t.on(\"data\",function(u){if($r(\"wrapped data\"),r.decoder&&(u=r.decoder.write(u)),!(r.objectMode&&u==null)&&!(!r.objectMode&&(!u||!u.length))){var A=e.push(u);A||(o=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]==\"function\"&&(this[a]=function(A){return function(){return t[A].apply(t,arguments)}}(a));for(var n=0;n<Jq.length;n++)t.on(Jq[n],this.emit.bind(this,Jq[n]));return this._read=function(u){$r(\"wrapped _read\",u),o&&(o=!1,t.resume())},this};typeof Symbol==\"function\"&&(mn.prototype[Symbol.asyncIterator]=function(){return Vq===void 0&&(Vq=c2e()),Vq(this)});Object.defineProperty(mn.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(mn.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(mn.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});mn._fromList=w2e;Object.defineProperty(mn.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}});function w2e(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(\"\"):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function Xq(t){var e=t._readableState;$r(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(DBt,e,t))}function DBt(t,e){if($r(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol==\"function\"&&(mn.from=function(t,e){return Kq===void 0&&(Kq=p2e()),Kq(mn,t,e)});function I2e(t,e){for(var r=0,o=t.length;r<o;r++)if(t[r]===e)return r;return-1}});var tG=_((k$t,D2e)=>{\"use strict\";D2e.exports=ip;var GQ=k0().codes,PBt=GQ.ERR_METHOD_NOT_IMPLEMENTED,SBt=GQ.ERR_MULTIPLE_CALLBACK,xBt=GQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,bBt=GQ.ERR_TRANSFORM_WITH_LENGTH_0,YQ=Em();Q0()(ip,YQ);function kBt(t,e){var r=this._transformState;r.transforming=!1;var o=r.writecb;if(o===null)return this.emit(\"error\",new SBt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),o(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function ip(t){if(!(this instanceof ip))return new ip(t);YQ.call(this,t),this._transformState={afterTransform:kBt.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&(typeof t.transform==\"function\"&&(this._transform=t.transform),typeof t.flush==\"function\"&&(this._flush=t.flush)),this.on(\"prefinish\",QBt)}function QBt(){var t=this;typeof this._flush==\"function\"&&!this._readableState.destroyed?this._flush(function(e,r){v2e(t,e,r)}):v2e(this,null,null)}ip.prototype.push=function(t,e){return this._transformState.needTransform=!1,YQ.prototype.push.call(this,t,e)};ip.prototype._transform=function(t,e,r){r(new PBt(\"_transform()\"))};ip.prototype._write=function(t,e,r){var o=this._transformState;if(o.writecb=r,o.writechunk=t,o.writeencoding=e,!o.transforming){var a=this._readableState;(o.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};ip.prototype._read=function(t){var e=this._transformState;e.writechunk!==null&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0};ip.prototype._destroy=function(t,e){YQ.prototype._destroy.call(this,t,function(r){e(r)})};function v2e(t,e,r){if(e)return t.emit(\"error\",e);if(r!=null&&t.push(r),t._writableState.length)throw new bBt;if(t._transformState.transforming)throw new xBt;return t.push(null)}});var x2e=_((Q$t,S2e)=>{\"use strict\";S2e.exports=Iv;var P2e=tG();Q0()(Iv,P2e);function Iv(t){if(!(this instanceof Iv))return new Iv(t);P2e.call(this,t)}Iv.prototype._transform=function(t,e,r){r(null,t)}});var T2e=_((F$t,F2e)=>{\"use strict\";var rG;function FBt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Q2e=k0().codes,TBt=Q2e.ERR_MISSING_ARGS,RBt=Q2e.ERR_STREAM_DESTROYED;function b2e(t){if(t)throw t}function NBt(t){return t.setHeader&&typeof t.abort==\"function\"}function LBt(t,e,r,o){o=FBt(o);var a=!1;t.on(\"close\",function(){a=!0}),rG===void 0&&(rG=OQ()),rG(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,NBt(t))return t.abort();if(typeof t.destroy==\"function\")return t.destroy();o(u||new RBt(\"pipe\"))}}}function k2e(t){t()}function MBt(t,e){return t.pipe(e)}function OBt(t){return!t.length||typeof t[t.length-1]!=\"function\"?b2e:t.pop()}function UBt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var o=OBt(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new TBt(\"streams\");var a,n=e.map(function(u,A){var p=A<e.length-1,h=A>0;return LBt(u,p,h,function(E){a||(a=E),E&&n.forEach(k2e),!p&&(n.forEach(k2e),o(a))})});return e.reduce(MBt)}F2e.exports=UBt});var ew=_((lc,vv)=>{var Bv=Be(\"stream\");process.env.READABLE_STREAM===\"disable\"&&Bv?(vv.exports=Bv.Readable,Object.assign(vv.exports,Bv),vv.exports.Stream=Bv):(lc=vv.exports=_q(),lc.Stream=Bv||lc,lc.Readable=lc,lc.Writable=Mq(),lc.Duplex=Em(),lc.Transform=tG(),lc.PassThrough=x2e(),lc.finished=OQ(),lc.pipeline=T2e())});var L2e=_((T$t,N2e)=>{\"use strict\";var{Buffer:lu}=Be(\"buffer\"),R2e=Symbol.for(\"BufferList\");function ni(t){if(!(this instanceof ni))return new ni(t);ni._init.call(this,t)}ni._init=function(e){Object.defineProperty(this,R2e,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};ni.prototype._new=function(e){return new ni(e)};ni.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let o=0;o<this._bufs.length;o++){let a=r+this._bufs[o].length;if(e<a||o===this._bufs.length-1)return[o,e-r];r=a}};ni.prototype._reverseOffset=function(t){let e=t[0],r=t[1];for(let o=0;o<e;o++)r+=this._bufs[o].length;return r};ni.prototype.get=function(e){if(e>this.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};ni.prototype.slice=function(e,r){return typeof e==\"number\"&&e<0&&(e+=this.length),typeof r==\"number\"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};ni.prototype.copy=function(e,r,o,a){if((typeof o!=\"number\"||o<0)&&(o=0),(typeof a!=\"number\"||a>this.length)&&(a=this.length),o>=this.length||a<=0)return e||lu.alloc(0);let n=!!e,u=this._offset(o),A=a-o,p=A,h=n&&r||0,E=u[1];if(o===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:lu.concat(this._bufs,this.length);for(let I=0;I<this._bufs.length;I++)this._bufs[I].copy(e,h),h+=this._bufs[I].length;return e}if(p<=this._bufs[u[0]].length-E)return n?this._bufs[u[0]].copy(e,r,E,E+p):this._bufs[u[0]].slice(E,E+p);n||(e=lu.allocUnsafe(A));for(let I=u[0];I<this._bufs.length;I++){let v=this._bufs[I].length-E;if(p>v)this._bufs[I].copy(e,h,E),h+=v;else{this._bufs[I].copy(e,h,E,E+p),h+=v;break}p-=v,E&&(E=0)}return e.length>h?e.slice(0,h):e};ni.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!=\"number\"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let o=this._offset(e),a=this._offset(r),n=this._bufs.slice(o[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),o[1]!==0&&(n[0]=n[0].slice(o[1])),this._new(n)};ni.prototype.toString=function(e,r,o){return this.slice(r,o).toString(e)};ni.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};ni.prototype.duplicate=function(){let e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};ni.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(lu.from(e.buffer,e.byteOffset,e.byteLength));else if(Array.isArray(e))for(let r=0;r<e.length;r++)this.append(e[r]);else if(this._isBufferList(e))for(let r=0;r<e._bufs.length;r++)this.append(e._bufs[r]);else typeof e==\"number\"&&(e=e.toString()),this._appendBuffer(lu.from(e));return this};ni.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};ni.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e==\"string\"&&(r=e,e=void 0),typeof t==\"function\"||Array.isArray(t))throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t==\"number\"?t=lu.from([t]):typeof t==\"string\"?t=lu.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=lu.from(t.buffer,t.byteOffset,t.byteLength):lu.isBuffer(t)||(t=lu.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=this._offset(e),a=o[0],n=o[1];for(;a<this._bufs.length;a++){let u=this._bufs[a];for(;n<u.length;)if(u.length-n>=t.length){let p=u.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=u.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};ni.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){let t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let e in t)(function(r){t[r]===null?ni.prototype[r]=function(o,a){return this.slice(o,o+a)[r](0,a)}:ni.prototype[r]=function(o=0){return this.slice(o,o+t[r])[r](0)}})(e)})();ni.prototype._isBufferList=function(e){return e instanceof ni||ni.isBufferList(e)};ni.isBufferList=function(e){return e!=null&&e[R2e]};N2e.exports=ni});var M2e=_((R$t,WQ)=>{\"use strict\";var nG=ew().Duplex,_Bt=Q0(),Dv=L2e();function Uo(t){if(!(this instanceof Uo))return new Uo(t);if(typeof t==\"function\"){this._callback=t;let e=function(o){this._callback&&(this._callback(o),this._callback=null)}.bind(this);this.on(\"pipe\",function(o){o.on(\"error\",e)}),this.on(\"unpipe\",function(o){o.removeListener(\"error\",e)}),t=null}Dv._init.call(this,t),nG.call(this)}_Bt(Uo,nG);Object.assign(Uo.prototype,Dv.prototype);Uo.prototype._new=function(e){return new Uo(e)};Uo.prototype._write=function(e,r,o){this._appendBuffer(e),typeof o==\"function\"&&o()};Uo.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Uo.prototype.end=function(e){nG.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Uo.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Uo.prototype._isBufferList=function(e){return e instanceof Uo||e instanceof Dv||Uo.isBufferList(e)};Uo.isBufferList=Dv.isBufferList;WQ.exports=Uo;WQ.exports.BufferListStream=Uo;WQ.exports.BufferList=Dv});var oG=_(rw=>{var HBt=Buffer.alloc,jBt=\"0000000000000000000\",qBt=\"7777777777777777777\",O2e=\"0\".charCodeAt(0),U2e=Buffer.from(\"ustar\\0\",\"binary\"),GBt=Buffer.from(\"00\",\"binary\"),YBt=Buffer.from(\"ustar \",\"binary\"),WBt=Buffer.from(\" \\0\",\"binary\"),VBt=parseInt(\"7777\",8),Pv=257,sG=263,KBt=function(t,e,r){return typeof t!=\"number\"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},JBt=function(t){switch(t){case 0:return\"file\";case 1:return\"link\";case 2:return\"symlink\";case 3:return\"character-device\";case 4:return\"block-device\";case 5:return\"directory\";case 6:return\"fifo\";case 7:return\"contiguous-file\";case 72:return\"pax-header\";case 55:return\"pax-global-header\";case 27:return\"gnu-long-link-path\";case 28:case 30:return\"gnu-long-path\"}return null},zBt=function(t){switch(t){case\"file\":return 0;case\"link\":return 1;case\"symlink\":return 2;case\"character-device\":return 3;case\"block-device\":return 4;case\"directory\":return 5;case\"fifo\":return 6;case\"contiguous-file\":return 7;case\"pax-header\":return 72}return 0},_2e=function(t,e,r,o){for(;r<o;r++)if(t[r]===e)return r;return o},H2e=function(t){for(var e=256,r=0;r<148;r++)e+=t[r];for(var o=156;o<512;o++)e+=t[o];return e},L0=function(t,e){return t=t.toString(8),t.length>e?qBt.slice(0,e)+\" \":jBt.slice(0,e-t.length)+t+\" \"};function XBt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],o=t.length-1;o>0;o--){var a=t[o];e?r.push(a):r.push(255-a)}var n=0,u=r.length;for(o=0;o<u;o++)n+=r[o]*Math.pow(256,o);return e?n:-1*n}var M0=function(t,e,r){if(t=t.slice(e,e+r),e=0,t[e]&128)return XBt(t);for(;e<t.length&&t[e]===32;)e++;for(var o=KBt(_2e(t,32,e,t.length),t.length,t.length);e<o&&t[e]===0;)e++;return o===e?0:parseInt(t.slice(e,o).toString(),8)},tw=function(t,e,r,o){return t.slice(e,_2e(t,0,e,e+r)).toString(o)},iG=function(t){var e=Buffer.byteLength(t),r=Math.floor(Math.log(e)/Math.log(10))+1;return e+r>=Math.pow(10,r)&&r++,e+r+t};rw.decodeLongPath=function(t,e){return tw(t,0,t.length,e)};rw.encodePax=function(t){var e=\"\";t.name&&(e+=iG(\" path=\"+t.name+`\n`)),t.linkname&&(e+=iG(\" linkpath=\"+t.linkname+`\n`));var r=t.pax;if(r)for(var o in r)e+=iG(\" \"+o+\"=\"+r[o]+`\n`);return Buffer.from(e)};rw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var o=parseInt(t.slice(0,r).toString(),10);if(!o)return e;var a=t.slice(r+1,o-1).toString(),n=a.indexOf(\"=\");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(o)}return e};rw.encode=function(t){var e=HBt(512),r=t.name,o=\"\";if(t.typeflag===5&&r[r.length-1]!==\"/\"&&(r+=\"/\"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf(\"/\");if(a===-1)return null;o+=o?\"/\"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(o)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(L0(t.mode&VBt,6),100),e.write(L0(t.uid,6),108),e.write(L0(t.gid,6),116),e.write(L0(t.size,11),124),e.write(L0(t.mtime.getTime()/1e3|0,11),136),e[156]=O2e+zBt(t.type),t.linkname&&e.write(t.linkname,157),U2e.copy(e,Pv),GBt.copy(e,sG),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(L0(t.devmajor||0,6),329),e.write(L0(t.devminor||0,6),337),o&&e.write(o,345),e.write(L0(H2e(e),6),148),e)};rw.decode=function(t,e,r){var o=t[156]===0?0:t[156]-O2e,a=tw(t,0,100,e),n=M0(t,100,8),u=M0(t,108,8),A=M0(t,116,8),p=M0(t,124,12),h=M0(t,136,12),E=JBt(o),I=t[157]===0?null:tw(t,157,100,e),v=tw(t,265,32),b=tw(t,297,32),C=M0(t,329,8),T=M0(t,337,8),L=H2e(t);if(L===8*32)return null;if(L!==M0(t,148,8))throw new Error(\"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?\");if(U2e.compare(t,Pv,Pv+6)===0)t[345]&&(a=tw(t,345,155,e)+\"/\"+a);else if(!(YBt.compare(t,Pv,Pv+6)===0&&WBt.compare(t,sG,sG+2)===0)){if(!r)throw new Error(\"Invalid tar header: unknown format.\")}return o===0&&a&&a[a.length-1]===\"/\"&&(o=5),{name:a,mode:n,uid:u,gid:A,size:p,mtime:new Date(1e3*h),type:E,linkname:I,uname:v,gname:b,devmajor:C,devminor:T}}});var K2e=_((L$t,V2e)=>{var q2e=Be(\"util\"),ZBt=M2e(),Sv=oG(),G2e=ew().Writable,Y2e=ew().PassThrough,W2e=function(){},j2e=function(t){return t&=511,t&&512-t},$Bt=function(t,e){var r=new VQ(t,e);return r.end(),r},evt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},VQ=function(t,e){this._parent=t,this.offset=e,Y2e.call(this,{autoDestroy:!1})};q2e.inherits(VQ,Y2e);VQ.prototype.destroy=function(t){this._parent.destroy(t)};var sp=function(t){if(!(this instanceof sp))return new sp(t);G2e.call(this,t),t=t||{},this._offset=0,this._buffer=ZBt(),this._missing=0,this._partial=!1,this._onparse=W2e,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,o=function(){e._continue()},a=function(v){if(e._locked=!1,v)return e.destroy(v);e._stream||o()},n=function(){e._stream=null;var v=j2e(e._header.size);v?e._parse(v,u):e._parse(512,I),e._locked||o()},u=function(){e._buffer.consume(j2e(e._header.size)),e._parse(512,I),o()},A=function(){var v=e._header.size;e._paxGlobal=Sv.decodePax(r.slice(0,v)),r.consume(v),n()},p=function(){var v=e._header.size;e._pax=Sv.decodePax(r.slice(0,v)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(v),n()},h=function(){var v=e._header.size;this._gnuLongPath=Sv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},E=function(){var v=e._header.size;this._gnuLongLinkPath=Sv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},I=function(){var v=e._offset,b;try{b=e._header=Sv.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(C){e.emit(\"error\",C)}if(r.consume(512),!b){e._parse(512,I),o();return}if(b.type===\"gnu-long-path\"){e._parse(b.size,h),o();return}if(b.type===\"gnu-long-link-path\"){e._parse(b.size,E),o();return}if(b.type===\"pax-global-header\"){e._parse(b.size,A),o();return}if(b.type===\"pax-header\"){e._parse(b.size,p),o();return}if(e._gnuLongPath&&(b.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(b.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=b=evt(b,e._pax),e._pax=null),e._locked=!0,!b.size||b.type===\"directory\"){e._parse(512,I),e.emit(\"entry\",b,$Bt(e,v),a);return}e._stream=new VQ(e,v),e.emit(\"entry\",b,e._stream,a),e._parse(b.size,n),o()};this._onheader=I,this._parse(512,I)};q2e.inherits(sp,G2e);sp.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.emit(\"close\"))};sp.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};sp.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=W2e,this._overflow?this._write(this._overflow,void 0,t):t()}};sp.prototype._write=function(t,e,r){if(!this._destroyed){var o=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.length<n)return this._missing-=t.length,this._overflow=null,o?o.write(t,r):(a.append(t),r());this._cb=r,this._missing=0;var u=null;t.length>n&&(u=t.slice(n),t=t.slice(0,n)),o?o.end(t):a.append(t),this._overflow=u,this._onparse()}};sp.prototype._final=function(t){if(this._partial)return this.destroy(new Error(\"Unexpected end of data\"));t()};V2e.exports=sp});var z2e=_((M$t,J2e)=>{J2e.exports=Be(\"fs\").constants||Be(\"constants\")});var tBe=_((O$t,eBe)=>{var nw=z2e(),X2e=OO(),JQ=Q0(),tvt=Buffer.alloc,Z2e=ew().Readable,iw=ew().Writable,rvt=Be(\"string_decoder\").StringDecoder,KQ=oG(),nvt=parseInt(\"755\",8),ivt=parseInt(\"644\",8),$2e=tvt(1024),lG=function(){},aG=function(t,e){e&=511,e&&t.push($2e.slice(0,512-e))};function svt(t){switch(t&nw.S_IFMT){case nw.S_IFBLK:return\"block-device\";case nw.S_IFCHR:return\"character-device\";case nw.S_IFDIR:return\"directory\";case nw.S_IFIFO:return\"fifo\";case nw.S_IFLNK:return\"symlink\"}return\"file\"}var zQ=function(t){iw.call(this),this.written=0,this._to=t,this._destroyed=!1};JQ(zQ,iw);zQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};zQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var XQ=function(){iw.call(this),this.linkname=\"\",this._decoder=new rvt(\"utf-8\"),this._destroyed=!1};JQ(XQ,iw);XQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};XQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var xv=function(){iw.call(this),this._destroyed=!1};JQ(xv,iw);xv.prototype._write=function(t,e,r){r(new Error(\"No body allowed for this entry\"))};xv.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var EA=function(t){if(!(this instanceof EA))return new EA(t);Z2e.call(this,t),this._drain=lG,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};JQ(EA,Z2e);EA.prototype.entry=function(t,e,r){if(this._stream)throw new Error(\"already piping an entry\");if(!(this._finalized||this._destroyed)){typeof e==\"function\"&&(r=e,e=null),r||(r=lG);var o=this;if((!t.size||t.type===\"symlink\")&&(t.size=0),t.type||(t.type=svt(t.mode)),t.mode||(t.mode=t.type===\"directory\"?nvt:ivt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e==\"string\"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return aG(o,t.size),a?process.nextTick(r):this._drain=r,new xv}if(t.type===\"symlink\"&&!t.linkname){var n=new XQ;return X2e(n,function(A){if(A)return o.destroy(),r(A);t.linkname=n.linkname,o._encode(t),r()}),n}if(this._encode(t),t.type!==\"file\"&&t.type!==\"contiguous-file\")return process.nextTick(r),new xv;var u=new zQ(this);return this._stream=u,X2e(u,function(A){if(o._stream=null,A)return o.destroy(),r(A);if(u.written!==t.size)return o.destroy(),r(new Error(\"size mismatch\"));aG(o,t.size),o._finalizing&&o.finalize(),r()}),u}};EA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push($2e),this.push(null))};EA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.destroy&&this._stream.destroy())};EA.prototype._encode=function(t){if(!t.pax){var e=KQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};EA.prototype._encodePax=function(t){var e=KQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:\"PaxHeader\",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:\"pax-header\",linkname:t.linkname&&\"PaxHeader\",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(KQ.encode(r)),this.push(e),aG(this,e.length),r.size=t.size,r.type=t.type,this.push(KQ.encode(r))};EA.prototype._read=function(t){var e=this._drain;this._drain=lG,e()};eBe.exports=EA});var rBe=_(cG=>{cG.extract=K2e();cG.pack=tBe()});var hBe=_((ier,pBe)=>{\"use strict\";var Bm=class{constructor(e,r,o){this.__specs=e||{},Object.keys(this.__specs).forEach(a=>{if(typeof this.__specs[a]==\"string\"){let n=this.__specs[a],u=this.__specs[n];if(u){let A=u.aliases||[];A.push(a,n),u.aliases=[...new Set(A)],this.__specs[a]=u}else throw new Error(`Alias refers to invalid key: ${n} -> ${a}`)}}),this.__opts=r||{},this.__providers=ABe(o.filter(a=>a!=null&&typeof a==\"object\")),this.__isFiggyPudding=!0}get(e){return gG(this,e,!0)}get[Symbol.toStringTag](){return\"FiggyPudding\"}forEach(e,r=this){for(let[o,a]of this.entries())e.call(r,a,o,this)}toJSON(){let e={};return this.forEach((r,o)=>{e[o]=r}),e}*entries(e){for(let o of Object.keys(this.__specs))yield[o,this.get(o)];let r=e||this.__opts.other;if(r){let o=new Set;for(let a of this.__providers){let n=a.entries?a.entries(r):Cvt(a);for(let[u,A]of n)r(u)&&!o.has(u)&&(o.add(u),yield[u,A])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Bm(this.__specs,this.__opts,ABe(this.__providers).concat(e)),fBe)}};try{let t=Be(\"util\");Bm.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+\" \"+t.inspect(this.toJSON(),r)}}catch{}function yvt(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:\"EBADKEY\"})}function gG(t,e,r){let o=t.__specs[e];if(r&&!o&&(!t.__opts.other||!t.__opts.other(e)))yvt(e);else{o||(o={});let a;for(let n of t.__providers){if(a=uBe(e,n),a===void 0&&o.aliases&&o.aliases.length){for(let u of o.aliases)if(u!==e&&(a=uBe(u,n),a!==void 0))break}if(a!==void 0)break}return a===void 0&&o.default!==void 0?typeof o.default==\"function\"?o.default(t):o.default:a}}function uBe(t,e){let r;return e.__isFiggyPudding?r=gG(e,t,!1):typeof e.get==\"function\"?r=e.get(t):r=e[t],r}var fBe={has(t,e){return e in t.__specs&&gG(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e==\"symbol\"||e.slice(0,2)===\"__\"||e in Bm.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e==\"symbol\"||e.slice(0,2)===\"__\")return t[e]=r,!0;throw new Error(\"figgyPudding options cannot be modified. Use .concat() instead.\")},deleteProperty(){throw new Error(\"figgyPudding options cannot be deleted. Use .concat() and shadow them instead.\")}};pBe.exports=Evt;function Evt(t,e){function r(...o){return new Proxy(new Bm(t,e,o),fBe)}return r}function ABe(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function Cvt(t){return Object.keys(t).map(e=>[e,t[e]])}});var mBe=_((ser,IA)=>{\"use strict\";var kv=Be(\"crypto\"),wvt=hBe(),Ivt=Be(\"stream\").Transform,gBe=[\"sha256\",\"sha384\",\"sha512\"],Bvt=/^[a-z0-9+/]+(?:=?=?)$/i,vvt=/^([^-]+)-([^?]+)([?\\S*]*)$/,Dvt=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)*$/,Pvt=/^[\\x21-\\x7E]+$/,ia=wvt({algorithms:{default:[\"sha512\"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>Rvt},Promise:{default:()=>Promise},sep:{default:\" \"},single:{default:!1},size:{},strict:{default:!1}}),U0=class{get isHash(){return!0}constructor(e,r){r=ia(r);let o=!!r.strict;this.source=e.trim();let a=this.source.match(o?Dvt:vvt);if(!a||o&&!gBe.some(u=>u===a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];this.options=n?n.slice(1).split(\"?\"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,\"base64\").toString(\"hex\")}toJSON(){return this.toString()}toString(e){if(e=ia(e),e.strict&&!(gBe.some(o=>o===this.algorithm)&&this.digest.match(Bvt)&&(this.options||[]).every(o=>o.match(Pvt))))return\"\";let r=this.options&&this.options.length?`?${this.options.join(\"?\")}`:\"\";return`${this.algorithm}-${this.digest}${r}`}},vm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=ia(e);let r=e.sep||\" \";return e.strict&&(r=r.replace(/\\S+/g,\" \")),Object.keys(this).map(o=>this[o].map(a=>U0.prototype.toString.call(a,e)).filter(a=>a.length).join(r)).filter(o=>o.length).join(r)}concat(e,r){r=ia(r);let o=typeof e==\"string\"?e:bv(e,r);return wA(`${this.toString(r)} ${o}`,r)}hexDigest(){return wA(this,{single:!0}).hexDigest()}match(e,r){r=ia(r);let o=wA(e,r),a=o.pickAlgorithm(r);return this[a]&&o[a]&&this[a].find(n=>o[a].find(u=>n.digest===u.digest))||!1}pickAlgorithm(e){e=ia(e);let r=e.pickAlgorithm,o=Object.keys(this);if(!o.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return o.reduce((a,n)=>r(a,n)||a)}};IA.exports.parse=wA;function wA(t,e){if(e=ia(e),typeof t==\"string\")return dG(t,e);if(t.algorithm&&t.digest){let r=new vm;return r[t.algorithm]=[t],dG(bv(r,e),e)}else return dG(bv(t,e),e)}function dG(t,e){return e.single?new U0(t,e):t.trim().split(/\\s+/).reduce((r,o)=>{let a=new U0(o,e);if(a.algorithm&&a.digest){let n=a.algorithm;r[n]||(r[n]=[]),r[n].push(a)}return r},new vm)}IA.exports.stringify=bv;function bv(t,e){return e=ia(e),t.algorithm&&t.digest?U0.prototype.toString.call(t,e):typeof t==\"string\"?bv(wA(t,e),e):vm.prototype.toString.call(t,e)}IA.exports.fromHex=Svt;function Svt(t,e,r){r=ia(r);let o=r.options&&r.options.length?`?${r.options.join(\"?\")}`:\"\";return wA(`${e}-${Buffer.from(t,\"hex\").toString(\"base64\")}${o}`,r)}IA.exports.fromData=xvt;function xvt(t,e){e=ia(e);let r=e.algorithms,o=e.options&&e.options.length?`?${e.options.join(\"?\")}`:\"\";return r.reduce((a,n)=>{let u=kv.createHash(n).update(t).digest(\"base64\"),A=new U0(`${n}-${u}${o}`,e);if(A.algorithm&&A.digest){let p=A.algorithm;a[p]||(a[p]=[]),a[p].push(A)}return a},new vm)}IA.exports.fromStream=bvt;function bvt(t,e){e=ia(e);let r=e.Promise||Promise,o=mG(e);return new r((a,n)=>{t.pipe(o),t.on(\"error\",n),o.on(\"error\",n);let u;o.on(\"integrity\",A=>{u=A}),o.on(\"end\",()=>a(u)),o.on(\"data\",()=>{})})}IA.exports.checkData=kvt;function kvt(t,e,r){if(r=ia(r),e=wA(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"});return!1}let o=e.pickAlgorithm(r),a=kv.createHash(o).update(t).digest(\"base64\"),n=wA({algorithm:o,digest:a}),u=n.match(e,r);if(u||!r.error)return u;if(typeof r.size==\"number\"&&t.length!==r.size){let A=new Error(`data size mismatch when checking ${e}.\n  Wanted: ${r.size}\n  Found: ${t.length}`);throw A.code=\"EBADSIZE\",A.found=t.length,A.expected=r.size,A.sri=e,A}else{let A=new Error(`Integrity checksum failed when using ${o}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw A.code=\"EINTEGRITY\",A.found=n,A.expected=e,A.algorithm=o,A.sri=e,A}}IA.exports.checkStream=Qvt;function Qvt(t,e,r){r=ia(r);let o=r.Promise||Promise,a=mG(r.concat({integrity:e}));return new o((n,u)=>{t.pipe(a),t.on(\"error\",u),a.on(\"error\",u);let A;a.on(\"verified\",p=>{A=p}),a.on(\"end\",()=>n(A)),a.on(\"data\",()=>{})})}IA.exports.integrityStream=mG;function mG(t){t=ia(t);let e=t.integrity&&wA(t.integrity,t),r=e&&Object.keys(e).length,o=r&&e.pickAlgorithm(t),a=r&&e[o],n=Array.from(new Set(t.algorithms.concat(o?[o]:[]))),u=n.map(kv.createHash),A=0,p=new Ivt({transform(h,E,I){A+=h.length,u.forEach(v=>v.update(h,E)),I(null,h,E)}}).on(\"end\",()=>{let h=t.options&&t.options.length?`?${t.options.join(\"?\")}`:\"\",E=wA(u.map((v,b)=>`${n[b]}-${v.digest(\"base64\")}${h}`).join(\" \"),t),I=r&&E.match(e,t);if(typeof t.size==\"number\"&&A!==t.size){let v=new Error(`stream size mismatch when checking ${e}.\n  Wanted: ${t.size}\n  Found: ${A}`);v.code=\"EBADSIZE\",v.found=A,v.expected=t.size,v.sri=e,p.emit(\"error\",v)}else if(t.integrity&&!I){let v=new Error(`${e} integrity checksum failed when using ${o}: wanted ${a} but got ${E}. (${A} bytes)`);v.code=\"EINTEGRITY\",v.found=E,v.expected=a,v.algorithm=o,v.sri=e,p.emit(\"error\",v)}else p.emit(\"size\",A),p.emit(\"integrity\",E),I&&p.emit(\"verified\",I)});return p}IA.exports.create=Fvt;function Fvt(t){t=ia(t);let e=t.algorithms,r=t.options.length?`?${t.options.join(\"?\")}`:\"\",o=e.map(kv.createHash);return{update:function(a,n){return o.forEach(u=>u.update(a,n)),this},digest:function(a){return e.reduce((u,A)=>{let p=o.shift().digest(\"base64\"),h=new U0(`${A}-${p}${r}`,t);if(h.algorithm&&h.digest){let E=h.algorithm;u[E]||(u[E]=[]),u[E].push(h)}return u},new vm)}}}var Tvt=new Set(kv.getHashes()),dBe=[\"md5\",\"whirlpool\",\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"sha3\",\"sha3-256\",\"sha3-384\",\"sha3-512\",\"sha3_256\",\"sha3_384\",\"sha3_512\"].filter(t=>Tvt.has(t));function Rvt(t,e){return dBe.indexOf(t.toLowerCase())>=dBe.indexOf(e.toLowerCase())?t:e}});var VBe=_((lir,WBe)=>{var TDt=uL();function RDt(t){return TDt(t)?void 0:t}WBe.exports=RDt});var JBe=_((cir,KBe)=>{var NDt=jx(),LDt=Q8(),MDt=N8(),ODt=jd(),UDt=gd(),_Dt=VBe(),HDt=P_(),jDt=k8(),qDt=1,GDt=2,YDt=4,WDt=HDt(function(t,e){var r={};if(t==null)return r;var o=!1;e=NDt(e,function(n){return n=ODt(n,t),o||(o=n.length>1),n}),UDt(t,jDt(t),r),o&&(r=LDt(r,qDt|GDt|YDt,_Dt));for(var a=e.length;a--;)MDt(r,e[a]);return r});KBe.exports=WDt});Pt();Ye();Pt();var eve=Be(\"child_process\"),tve=$e(ed());qt();var uC=new Map([]);var o2={};Kt(o2,{BaseCommand:()=>ut,WorkspaceRequiredError:()=>rr,getCli:()=>the,getDynamicLibs:()=>ehe,getPluginConfiguration:()=>fC,openWorkspace:()=>AC,pluginCommands:()=>uC,runExit:()=>sk});qt();var ut=class extends nt{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<\"u\")throw new it(\"The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path\");return super.validateAndExecute()}};Ye();Pt();qt();var rr=class extends it{constructor(e,r){let o=K.relative(e,r),a=K.join(e,Mt.fileName);super(`This command can only be run from within a workspace of your project (${o} isn't a workspace of ${a}).`)}};Ye();Pt();nA();Nl();b1();qt();var OAt=$e(zn());Za();var ehe=()=>new Map([[\"@yarnpkg/cli\",o2],[\"@yarnpkg/core\",s2],[\"@yarnpkg/fslib\",Vw],[\"@yarnpkg/libzip\",x1],[\"@yarnpkg/parsers\",tI],[\"@yarnpkg/shell\",T1],[\"clipanion\",pI],[\"semver\",OAt],[\"typanion\",Ko]]);Ye();async function AC(t,e){let{project:r,workspace:o}=await St.find(t,e);if(!o)throw new rr(r.cwd,e);return o}Ye();Pt();nA();Nl();b1();qt();var tPt=$e(zn());Za();var tH={};Kt(tH,{AddCommand:()=>bh,BinCommand:()=>kh,CacheCleanCommand:()=>Qh,ClipanionCommand:()=>Wd,ConfigCommand:()=>Nh,ConfigGetCommand:()=>Fh,ConfigSetCommand:()=>Th,ConfigUnsetCommand:()=>Rh,DedupeCommand:()=>Lh,EntryCommand:()=>dC,ExecCommand:()=>Mh,ExplainCommand:()=>_h,ExplainPeerRequirementsCommand:()=>Oh,HelpCommand:()=>Vd,InfoCommand:()=>Hh,LinkCommand:()=>qh,NodeCommand:()=>Gh,PluginCheckCommand:()=>Yh,PluginImportCommand:()=>Kh,PluginImportSourcesCommand:()=>Jh,PluginListCommand:()=>Wh,PluginRemoveCommand:()=>zh,PluginRuntimeCommand:()=>Xh,RebuildCommand:()=>Zh,RemoveCommand:()=>$h,RunCommand:()=>e0,RunIndexCommand:()=>zd,SetResolutionCommand:()=>t0,SetVersionCommand:()=>Uh,SetVersionSourcesCommand:()=>Vh,UnlinkCommand:()=>r0,UpCommand:()=>Kf,VersionCommand:()=>Kd,WhyCommand:()=>n0,WorkspaceCommand:()=>o0,WorkspacesListCommand:()=>s0,YarnCommand:()=>jh,dedupeUtils:()=>gk,default:()=>Qgt,suggestUtils:()=>zc});var Tde=$e(ed());Ye();Ye();Ye();qt();var j0e=$e(A2());Za();var zc={};Kt(zc,{Modifier:()=>D8,Strategy:()=>fk,Target:()=>f2,WorkspaceModifier:()=>M0e,applyModifier:()=>ipt,extractDescriptorFromPath:()=>P8,extractRangeModifier:()=>O0e,fetchDescriptorFrom:()=>S8,findProjectDescriptors:()=>H0e,getModifier:()=>p2,getSuggestedDescriptors:()=>h2,makeWorkspaceDescriptor:()=>_0e,toWorkspaceModifier:()=>U0e});Ye();Ye();Pt();var v8=$e(zn()),rpt=\"workspace:\",f2=(o=>(o.REGULAR=\"dependencies\",o.DEVELOPMENT=\"devDependencies\",o.PEER=\"peerDependencies\",o))(f2||{}),D8=(o=>(o.CARET=\"^\",o.TILDE=\"~\",o.EXACT=\"\",o))(D8||{}),M0e=(o=>(o.CARET=\"^\",o.TILDE=\"~\",o.EXACT=\"*\",o))(M0e||{}),fk=(n=>(n.KEEP=\"keep\",n.REUSE=\"reuse\",n.PROJECT=\"project\",n.LATEST=\"latest\",n.CACHE=\"cache\",n))(fk||{});function p2(t,e){return t.exact?\"\":t.caret?\"^\":t.tilde?\"~\":e.configuration.get(\"defaultSemverRangePrefix\")}var npt=/^([\\^~]?)[0-9]+(?:\\.[0-9]+){0,2}(?:-\\S+)?$/;function O0e(t,{project:e}){let r=t.match(npt);return r?r[1]:e.configuration.get(\"defaultSemverRangePrefix\")}function ipt(t,e){let{protocol:r,source:o,params:a,selector:n}=W.parseRange(t.range);return v8.default.valid(n)&&(n=`${e}${t.range}`),W.makeDescriptor(t,W.makeRange({protocol:r,source:o,params:a,selector:n}))}function U0e(t){switch(t){case\"^\":return\"^\";case\"~\":return\"~\";case\"\":return\"*\";default:throw new Error(`Assertion failed: Unknown modifier: \"${t}\"`)}}function _0e(t,e){return W.makeDescriptor(t.anchoredDescriptor,`${rpt}${U0e(e)}`)}async function H0e(t,{project:e,target:r}){let o=new Map,a=n=>{let u=o.get(n.descriptorHash);return u||o.set(n.descriptorHash,u={descriptor:n,locators:[]}),u};for(let n of e.workspaces)if(r===\"peerDependencies\"){let u=n.manifest.peerDependencies.get(t.identHash);u!==void 0&&a(u).locators.push(n.anchoredLocator)}else{let u=n.manifest.dependencies.get(t.identHash),A=n.manifest.devDependencies.get(t.identHash);r===\"devDependencies\"?A!==void 0?a(A).locators.push(n.anchoredLocator):u!==void 0&&a(u).locators.push(n.anchoredLocator):u!==void 0?a(u).locators.push(n.anchoredLocator):A!==void 0&&a(A).locators.push(n.anchoredLocator)}return o}async function P8(t,{cwd:e,workspace:r}){return await spt(async o=>{K.isAbsolute(t)||(t=K.relative(r.cwd,K.resolve(e,t)),t.match(/^\\.{0,2}\\//)||(t=`./${t}`));let{project:a}=r,n=await S8(W.makeIdent(null,\"archive\"),t,{project:r.project,cache:o,workspace:r});if(!n)throw new Error(\"Assertion failed: The descriptor should have been found\");let u=new Qi,A=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:o,fetcher:p,report:u,resolver:A},E=A.bindDescriptor(n,r.anchoredLocator,h),I=W.convertDescriptorToLocator(E),v=await p.fetch(I,h),b=await Mt.find(v.prefixPath,{baseFs:v.packageFs});if(!b.name)throw new Error(\"Target path doesn't have a name\");return W.makeDescriptor(b.name,t)})}async function h2(t,{project:e,workspace:r,cache:o,target:a,fixed:n,modifier:u,strategies:A,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let[h,E]=t.range!==\"unknown\"?n||kr.validRange(t.range)||!t.range.match(/^[a-z0-9._-]+$/i)?[t.range,\"latest\"]:[\"unknown\",t.range]:[\"unknown\",\"latest\"];if(h!==\"unknown\")return{suggestions:[{descriptor:t,name:`Use ${W.prettyDescriptor(e.configuration,t)}`,reason:\"(unambiguous explicit request)\"}],rejections:[]};let I=typeof r<\"u\"&&r!==null&&r.manifest[a].get(t.identHash)||null,v=[],b=[],C=async T=>{try{await T()}catch(L){b.push(L)}};for(let T of A){if(v.length>=p)break;switch(T){case\"keep\":await C(async()=>{I&&v.push({descriptor:I,name:`Keep ${W.prettyDescriptor(e.configuration,I)}`,reason:\"(no changes)\"})});break;case\"reuse\":await C(async()=>{for(let{descriptor:L,locators:U}of(await H0e(t,{project:e,target:a})).values()){if(U.length===1&&U[0].locatorHash===r.anchoredLocator.locatorHash&&A.includes(\"keep\"))continue;let J=`(originally used by ${W.prettyLocator(e.configuration,U[0])}`;J+=U.length>1?` and ${U.length-1} other${U.length>2?\"s\":\"\"})`:\")\",v.push({descriptor:L,name:`Reuse ${W.prettyDescriptor(e.configuration,L)}`,reason:J})}});break;case\"cache\":await C(async()=>{for(let L of e.storedDescriptors.values())L.identHash===t.identHash&&v.push({descriptor:L,name:`Reuse ${W.prettyDescriptor(e.configuration,L)}`,reason:\"(already used somewhere in the lockfile)\"})});break;case\"project\":await C(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let L=e.tryWorkspaceByIdent(t);if(L===null)return;let U=_0e(L,u);v.push({descriptor:U,name:`Attach ${W.prettyDescriptor(e.configuration,U)}`,reason:`(local workspace at ${de.pretty(e.configuration,L.relativeCwd,de.Type.PATH)})`})});break;case\"latest\":{let L=e.configuration.get(\"enableNetwork\"),U=e.configuration.get(\"enableOfflineMode\");await C(async()=>{if(a===\"peerDependencies\")v.push({descriptor:W.makeDescriptor(t,\"*\"),name:\"Use *\",reason:\"(catch-all peer dependency pattern)\"});else if(!L&&!U)v.push({descriptor:null,name:\"Resolve from latest\",reason:de.pretty(e.configuration,\"(unavailable because enableNetwork is toggled off)\",\"grey\")});else{let J=await S8(t,E,{project:e,cache:o,workspace:r,modifier:u});J&&v.push({descriptor:J,name:`Use ${W.prettyDescriptor(e.configuration,J)}`,reason:`(resolved from ${U?\"the cache\":\"latest\"})`})}})}break}}return{suggestions:v.slice(0,p),rejections:b.slice(0,p)}}async function S8(t,e,{project:r,cache:o,workspace:a,preserveModifier:n=!0,modifier:u}){let A=r.configuration.normalizeDependency(W.makeDescriptor(t,e)),p=new Qi,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),I={project:r,fetcher:h,cache:o,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},v={...I,resolver:E,fetchOptions:I},b=E.bindDescriptor(A,a.anchoredLocator,v),C=await E.getCandidates(b,{},v);if(C.length===0)return null;let T=C[0],{protocol:L,source:U,params:J,selector:te}=W.parseRange(W.convertToManifestRange(T.reference));if(L===r.configuration.get(\"defaultProtocol\")&&(L=null),v8.default.valid(te)){let le=te;if(typeof u<\"u\")te=u+te;else if(n!==!1){let ye=typeof n==\"string\"?n:A.range;te=O0e(ye,{project:r})+te}let pe=W.makeDescriptor(T,W.makeRange({protocol:L,source:U,params:J,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(pe),{},v)).length!==1&&(te=le)}return W.makeDescriptor(T,W.makeRange({protocol:L,source:U,params:J,selector:te}))}async function spt(t){return await oe.mktempPromise(async e=>{let r=Ve.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Lr(e,{configuration:r,check:!1,immutable:!1}))})}var bh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.fixed=ge.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=ge.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=ge.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=ge.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.dev=ge.Boolean(\"-D,--dev\",!1,{description:\"Add a package as a dev dependency\"});this.peer=ge.Boolean(\"-P,--peer\",!1,{description:\"Add a package as a peer dependency\"});this.optional=ge.Boolean(\"-O,--optional\",!1,{description:\"Add / upgrade a package to an optional regular / peer dependency\"});this.preferDev=ge.Boolean(\"--prefer-dev\",!1,{description:\"Add / upgrade a package to a dev dependency\"});this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Reuse the specified package from other workspaces in the project\"});this.cached=ge.Boolean(\"--cached\",!1,{description:\"Reuse the highest version already used somewhere within the project\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Vs(pl)});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.packages=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get(\"preferInteractive\"),p=A||r.get(\"preferReuse\"),h=p2(this,o),E=[p?\"reuse\":void 0,\"project\",this.cached?\"cache\":void 0,\"latest\"].filter(U=>typeof U<\"u\"),I=A?1/0:1,v=await Promise.all(this.packages.map(async U=>{let J=U.match(/^\\.{0,2}\\//)?await P8(U,{cwd:this.context.cwd,workspace:a}):W.tryParseDescriptor(U),te=U.match(/^(https?:|git@github)/);if(te)throw new it(`It seems you are trying to add a package using a ${de.pretty(r,`${te[0]}...`,de.Type.RANGE)} url; we now require package names to be explicitly specified.\nTry running the command again with the package name prefixed: ${de.pretty(r,\"yarn add\",de.Type.CODE)} ${de.pretty(r,W.makeDescriptor(W.makeIdent(null,\"my-package\"),`${te[0]}...`),de.Type.DESCRIPTOR)}`);if(!J)throw new it(`The ${de.pretty(r,U,de.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let le=opt(a,J,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(le.map(async Ae=>{let ye=await h2(J,{project:o,workspace:a,cache:n,fixed:u,target:Ae,modifier:h,strategies:E,maxResults:I});return{request:J,suggestedDescriptors:ye,target:Ae}}))})).then(U=>U.flat()),b=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async U=>{for(let{request:J,suggestedDescriptors:{suggestions:te,rejections:le}}of v)if(te.filter(Ae=>Ae.descriptor!==null).length===0){let[Ae]=le;if(typeof Ae>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");o.configuration.get(\"enableNetwork\")?U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range`):U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),U.reportSeparator(),U.reportExceptionOnce(Ae)}});if(b.hasErrors())return b.exitCode();let C=!1,T=[],L=[];for(let{suggestedDescriptors:{suggestions:U},target:J}of v){let te,le=U.filter(ae=>ae.descriptor!==null),pe=le[0].descriptor,Ae=le.every(ae=>W.areDescriptorsEqual(ae.descriptor,pe));le.length===1||Ae?te=pe:(C=!0,{answer:te}=await(0,j0e.prompt)({type:\"select\",name:\"answer\",message:\"Which range do you want to use?\",choices:U.map(({descriptor:ae,name:we,reason:Pe})=>ae?{name:we,hint:Pe,descriptor:ae}:{name:we,hint:Pe,disabled:!0}),onCancel:()=>process.exit(130),result(ae){return this.find(ae,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let ye=a.manifest[J].get(te.identHash);(typeof ye>\"u\"||ye.descriptorHash!==te.descriptorHash)&&(a.manifest[J].set(te.identHash,te),this.optional&&(J===\"dependencies\"?a.manifest.ensureDependencyMeta({...te,range:\"unknown\"}).optional=!0:J===\"peerDependencies\"&&(a.manifest.ensurePeerDependencyMeta({...te,range:\"unknown\"}).optional=!0)),typeof ye>\"u\"?T.push([a,J,te,E]):L.push([a,J,ye,te]))}return await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyAddition,T),await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyReplacement,L),C&&this.context.stdout.write(`\n`),await o.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};bh.paths=[[\"add\"]],bh.usage=nt.Usage({description:\"add dependencies to the project\",details:\"\\n      This command adds a package to the package.json for the nearest workspace.\\n\\n      - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\\n\\n      - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\\n\\n      - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\\n\\n      - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\\\"peerDependenciesMeta\\\": { \\\"<package>\\\": { \\\"optional\\\": true } }`\\n\\n      - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\\n\\n      - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\\n\\n      If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\\n\\n      If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\\n    \",examples:[[\"Add a regular package to the current workspace\",\"$0 add lodash\"],[\"Add a specific version for a package to the current workspace\",\"$0 add lodash@1.2.3\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using a URL\",\"$0 add lodash@https://github.com/lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol\",\"$0 add lodash@github:lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash@lodash/lodash\"],[\"Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash-es@lodash/lodash#es\"]]});function opt(t,e,{dev:r,peer:o,preferDev:a,optional:n}){let u=t.manifest[\"dependencies\"].has(e.identHash),A=t.manifest[\"devDependencies\"].has(e.identHash),p=t.manifest[\"peerDependencies\"].has(e.identHash);if((r||o)&&u)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!o&&p)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&A)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!o&&p)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return o&&h.push(\"peerDependencies\"),(r||a)&&h.push(\"devDependencies\"),n&&h.push(\"dependencies\"),h.length>0?h:A?[\"devDependencies\"]:p?[\"peerDependencies\"]:[\"dependencies\"]}Ye();Ye();qt();var kh=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Print both the binary name and the locator of the package that provides the binary\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.name=ge.String({required:!1})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await St.find(r,this.context.cwd);if(await o.restoreInstallState(),this.name){let A=(await un.getPackageAccessibleBinaries(a,{project:o})).get(this.name);if(!A)throw new it(`Couldn't find a binary named \"${this.name}\" for package \"${W.prettyLocator(r,a)}\"`);let[,p]=A;return this.context.stdout.write(`${p}\n`),0}return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async u=>{let A=await un.getPackageAccessibleBinaries(a,{project:o}),h=Array.from(A.keys()).reduce((E,I)=>Math.max(E,I.length),0);for(let[E,[I,v]]of A)u.reportJson({name:E,source:W.stringifyIdent(I),path:v});if(this.verbose)for(let[E,[I]]of A)u.reportInfo(null,`${E.padEnd(h,\" \")}   ${W.prettyLocator(r,I)}`);else for(let E of A.keys())u.reportInfo(null,E)})).exitCode()}};kh.paths=[[\"bin\"]],kh.usage=nt.Usage({description:\"get the path to a binary script\",details:`\n      When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \\`-v,--verbose\\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary.\n\n      When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive.\n    `,examples:[[\"List all the available binaries\",\"$0 bin\"],[\"Print the path to a specific binary\",\"$0 bin eslint\"]]});Ye();Pt();qt();var Qh=class extends ut{constructor(){super(...arguments);this.mirror=ge.Boolean(\"--mirror\",!1,{description:\"Remove the global cache files instead of the local cache files\"});this.all=ge.Boolean(\"--all\",!1,{description:\"Remove both the global cache files and the local cache files of the current project\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=await Lr.find(r);return(await Nt.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&o.mirrorCwd!==null,u=!this.mirror;n&&(await oe.removePromise(o.mirrorCwd),await r.triggerHook(A=>A.cleanGlobalArtifacts,r)),u&&await oe.removePromise(o.cwd)})).exitCode()}};Qh.paths=[[\"cache\",\"clean\"],[\"cache\",\"clear\"]],Qh.usage=nt.Usage({description:\"remove the shared cache files\",details:`\n      This command will remove all the files from the cache.\n    `,examples:[[\"Remove all the local archives\",\"$0 cache clean\"],[\"Remove all the archives stored in the ~/.yarn directory\",\"$0 cache clean --mirror\"]]});Ye();qt();var G0e=$e(g2()),x8=Be(\"util\"),Fh=class extends ut{constructor(){super(...arguments);this.why=ge.Boolean(\"--why\",!1,{description:\"Print the explanation for why a setting has its value\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.unsafe=ge.Boolean(\"--no-redacted\",!1,{description:\"Don't redact secrets (such as tokens) from the output\"});this.name=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=this.name.replace(/[.[].*$/,\"\"),a=this.name.replace(/^[^.[]*/,\"\");if(typeof r.settings.get(o)>\"u\")throw new it(`Couldn't find a configuration settings named \"${o}\"`);let u=r.getSpecial(o,{hideSecrets:!this.unsafe,getNativePaths:!0}),A=je.convertMapsToIndexableObjects(u),p=a?(0,G0e.default)(A,a):A,h=await Nt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p==\"string\")return this.context.stdout.write(`${p}\n`),h.exitCode();x8.inspect.styles.name=\"cyan\",this.context.stdout.write(`${(0,x8.inspect)(p,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}\n`)}return h.exitCode()}};Fh.paths=[[\"config\",\"get\"]],Fh.usage=nt.Usage({description:\"read a configuration settings\",details:`\n      This command will print a configuration setting.\n\n      Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \\`--no-redacted\\` to get the untransformed value.\n    `,examples:[[\"Print a simple configuration setting\",\"yarn config get yarnPath\"],[\"Print a complex configuration setting\",\"yarn config get packageExtensions\"],[\"Print a nested field from the configuration\",`yarn config get 'npmScopes[\"my-company\"].npmRegistryServer'`],[\"Print a token from the configuration\",\"yarn config get npmAuthToken --no-redacted\"],[\"Print a configuration setting as JSON\",\"yarn config get packageExtensions --json\"]]});Ye();qt();var Rge=$e(F8()),Nge=$e(g2()),Lge=$e(T8()),R8=Be(\"util\"),Th=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Set complex configuration settings to JSON values\"});this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String();this.value=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new it(`Couldn't find a configuration settings named \"${a}\"`);if(a===\"enableStrictSettings\")throw new it(\"This setting only affects the file it's in, and thus cannot be set from the CLI\");let A=this.json?JSON.parse(this.value):this.value;await(this.home?C=>Ve.updateHomeConfiguration(C):C=>Ve.updateConfiguration(o(),C))(C=>{if(n){let T=(0,Rge.default)(C);return(0,Lge.default)(T,this.name,A),T}else return{...C,[a]:A}});let E=(await Ve.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),I=je.convertMapsToIndexableObjects(E),v=n?(0,Nge.default)(I,n):I;return(await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async C=>{R8.inspect.styles.name=\"cyan\",C.reportInfo(0,`Successfully set ${this.name} to ${(0,R8.inspect)(v,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}`)})).exitCode()}};Th.paths=[[\"config\",\"set\"]],Th.usage=nt.Usage({description:\"change a configuration settings\",details:`\n      This command will set a configuration setting.\n\n      When used without the \\`--json\\` flag, it can only set a simple configuration setting (a string, a number, or a boolean).\n\n      When used with the \\`--json\\` flag, it can set both simple and complex configuration settings, including Arrays and Objects.\n    `,examples:[[\"Set a simple configuration setting (a string, a number, or a boolean)\",\"yarn config set initScope myScope\"],[\"Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag\",'yarn config set initScope --json \\\\\"myScope\\\\\"'],[\"Set a complex configuration setting (an Array) using the `--json` flag\",`yarn config set unsafeHttpWhitelist --json '[\"*.example.com\", \"example.com\"]'`],[\"Set a complex configuration setting (an Object) using the `--json` flag\",`yarn config set packageExtensions --json '{ \"@babel/parser@*\": { \"dependencies\": { \"@babel/types\": \"*\" } } }'`],[\"Set a nested configuration setting\",'yarn config set npmScopes.company.npmRegistryServer \"https://npm.example.com\"'],[\"Set a nested configuration setting using indexed access for non-simple keys\",`yarn config set 'npmRegistries[\"//npm.example.com\"].npmAuthToken' \"ffffffff-ffff-ffff-ffff-ffffffffffff\"`]]});Ye();qt();var Vge=$e(F8()),Kge=$e(_ge()),Jge=$e(L8()),Rh=class extends ut{constructor(){super(...arguments);this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new it(`Couldn't find a configuration settings named \"${a}\"`);let A=this.home?h=>Ve.updateHomeConfiguration(h):h=>Ve.updateConfiguration(o(),h);return(await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await A(I=>{if(!(0,Kge.default)(I,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,I;let v=n?(0,Vge.default)(I):{...I};return(0,Jge.default)(v,this.name),v}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Rh.paths=[[\"config\",\"unset\"]],Rh.usage=nt.Usage({description:\"unset a configuration setting\",details:`\n      This command will unset a configuration setting.\n    `,examples:[[\"Unset a simple configuration setting\",\"yarn config unset initScope\"],[\"Unset a complex configuration setting\",\"yarn config unset packageExtensions\"],[\"Unset a nested configuration setting\",\"yarn config unset npmScopes.company.npmRegistryServer\"]]});Ye();Pt();qt();var hk=Be(\"util\"),Nh=class extends ut{constructor(){super(...arguments);this.noDefaults=ge.Boolean(\"--no-defaults\",!1,{description:\"Omit the default values from the display\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.verbose=ge.Boolean(\"-v,--verbose\",{hidden:!0});this.why=ge.Boolean(\"--why\",{hidden:!0});this.names=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins,{strict:!1}),o=await NE({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:\"The --verbose option is deprecated, the settings' descriptions are now always displayed\"},{option:this.why,message:\"The --why option is deprecated, the settings' sources are now always displayed\"}]);if(o!==null)return o;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,u=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async A=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)A.reportError(34,`Invalid configuration key \"${p}\" in ${h}`);A.reportSeparator()}if(this.json)for(let p of a){let h=r.settings.get(p);typeof h>\"u\"&&A.reportError(34,`No configuration key named \"${p}\"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),I=r.sources.get(p)??\"<default>\",v=I&&I[0]!==\"<\"?ue.fromPortablePath(I):I;A.reportJson({key:p,effective:E,source:v,...h})}else{let p={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},h={},E={children:h};for(let I of a){if(this.noDefaults&&!r.sources.has(I))continue;let v=r.settings.get(I),b=r.sources.get(I)??\"<default>\",C=r.getSpecial(I,{hideSecrets:!0,getNativePaths:!0}),T={Description:{label:\"Description\",value:de.tuple(de.Type.MARKDOWN,{text:v.description,format:this.cli.format(),paragraphs:!1})},Source:{label:\"Source\",value:de.tuple(b[0]===\"<\"?de.Type.CODE:de.Type.PATH,b)}};h[I]={value:de.tuple(de.Type.CODE,I),children:T};let L=(U,J)=>{for(let[te,le]of J)if(le instanceof Map){let pe={};U[te]={children:pe},L(pe,le)}else U[te]={label:te,value:de.tuple(de.Type.NO_HINT,(0,hk.inspect)(le,p))}};C instanceof Map?L(T,C):T.Value={label:\"Value\",value:de.tuple(de.Type.NO_HINT,(0,hk.inspect)(C,p))}}a.length!==1&&(n=void 0),$s.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<\"u\"){let A=a[0],p=(0,hk.inspect)(r.getSpecial(A,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get(\"enableColors\")});this.context.stdout.write(`\n`),this.context.stdout.write(`${p}\n`)}return u.exitCode()}};Nh.paths=[[\"config\"]],Nh.usage=nt.Usage({description:\"display the current configuration\",details:`\n      This command prints the current active configuration settings.\n    `,examples:[[\"Print the active configuration settings\",\"$0 config\"]]});Ye();qt();Za();var gk={};Kt(gk,{Strategy:()=>d2,acceptedStrategies:()=>j0t,dedupe:()=>M8});Ye();Ye();var zge=$e(Zo()),d2=(e=>(e.HIGHEST=\"highest\",e))(d2||{}),j0t=new Set(Object.values(d2)),q0t={highest:async(t,e,{resolver:r,fetcher:o,resolveOptions:a,fetchOptions:n})=>{let u=new Map;for(let[p,h]of t.storedResolutions){let E=t.storedDescriptors.get(p);if(typeof E>\"u\")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);je.getSetWithDefault(u,E.identHash).add(h)}let A=new Map(je.mapAndFilter(t.storedDescriptors.values(),p=>W.isVirtualDescriptor(p)?je.mapAndFilter.skip:[p.descriptorHash,je.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=A.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(p.descriptorHash);if(typeof E>\"u\")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let I=t.originalPackages.get(E);if(typeof I>\"u\")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let v=r.getResolutionDependencies(p,a),b=Object.fromEntries(await je.allSettledSafe(Object.entries(v).map(async([te,le])=>{let pe=A.get(le.descriptorHash);if(typeof pe>\"u\")throw new Error(`Assertion failed: The descriptor (${le.descriptorHash}) should have been registered`);let Ae=await pe.promise;if(!Ae)throw new Error(\"Assertion failed: Expected the dependency to have been through the dedupe process itself\");return[te,Ae.updatedPackage]})));if(e.length&&!zge.default.isMatch(W.stringifyIdent(p),e)||!r.shouldPersistResolution(I,a))return I;let C=u.get(p.identHash);if(typeof C>\"u\")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(C.size===1)return I;let T=[...C].map(te=>{let le=t.originalPackages.get(te);if(typeof le>\"u\")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return le}),L=await r.getSatisfying(p,b,T,a),U=L.locators?.[0];if(typeof U>\"u\"||!L.sorted)return I;let J=t.originalPackages.get(U.locatorHash);if(typeof J>\"u\")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return J}).then(async v=>{let b=await t.preparePackage(v,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:I,updatedPackage:v,resolvedPackage:b})}).catch(v=>{h.reject(v)})}return[...A.values()].map(p=>p.promise)}};async function M8(t,{strategy:e,patterns:r,cache:o,report:a}){let{configuration:n}=t,u=new Qi,A=n.makeResolver(),p=n.makeFetcher(),h={cache:o,checksums:t.storedChecksums,fetcher:p,project:t,report:u,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:A,report:u,fetchOptions:h};return await a.startTimerPromise(\"Deduplication step\",async()=>{let I=q0t[e],v=await I(t,r,{resolver:A,resolveOptions:E,fetcher:p,fetchOptions:h}),b=Xs.progressViaCounter(v.length);await a.reportProgress(b);let C=0;await Promise.all(v.map(U=>U.then(J=>{if(J===null||J.currentPackage.locatorHash===J.updatedPackage.locatorHash)return;C++;let{descriptor:te,currentPackage:le,updatedPackage:pe}=J;a.reportInfo(0,`${W.prettyDescriptor(n,te)} can be deduped from ${W.prettyLocator(n,le)} to ${W.prettyLocator(n,pe)}`),a.reportJson({descriptor:W.stringifyDescriptor(te),currentResolution:W.stringifyLocator(le),updatedResolution:W.stringifyLocator(pe)}),t.storedResolutions.set(te.descriptorHash,pe.locatorHash)}).finally(()=>b.tick())));let T;switch(C){case 0:T=\"No packages\";break;case 1:T=\"One package\";break;default:T=`${C} packages`}let L=de.pretty(n,e,de.Type.CODE);return a.reportInfo(0,`${T} can be deduped using the ${L} strategy`),C})}var Lh=class extends ut{constructor(){super(...arguments);this.strategy=ge.String(\"-s,--strategy\",\"highest\",{description:\"The strategy to use when deduping dependencies\",validator:Vs(d2)});this.check=ge.Boolean(\"-c,--check\",!1,{description:\"Exit with exit code 1 when duplicates are found, without persisting the dependency tree\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Vs(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=await Lr.find(r);await o.restoreInstallState({restoreResolutions:!1});let n=0,u=await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async A=>{n=await M8(o,{strategy:this.strategy,patterns:this.patterns,cache:a,report:A})});return u.hasErrors()?u.exitCode():this.check?n?1:0:await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Lh.paths=[[\"dedupe\"]],Lh.usage=nt.Usage({description:\"deduplicate dependencies with overlapping ranges\",details:\"\\n      Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\\n\\n      This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\\n\\n      - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\\n\\n      **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\\n\\n      If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      ### In-depth explanation:\\n\\n      Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\\n\\n      Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\\n    \",examples:[[\"Dedupe all packages\",\"$0 dedupe\"],[\"Dedupe all packages using a specific strategy\",\"$0 dedupe --strategy highest\"],[\"Dedupe a specific package\",\"$0 dedupe lodash\"],[\"Dedupe all packages with the `@babel/*` scope\",\"$0 dedupe '@babel/*'\"],[\"Check for duplicates (can be used as a CI step)\",\"$0 dedupe --check\"]]});Ye();qt();var Wd=class extends ut{async execute(){let{plugins:e}=await Ve.find(this.context.cwd,this.context.plugins),r=[];for(let u of e){let{commands:A}=u[1];if(A){let h=as.from(A).definitions();r.push([u[0],h])}}let o=this.cli.definitions(),a=(u,A)=>u.split(\" \").slice(1).join()===A.split(\" \").slice(1).join(),n=Xge()[\"@yarnpkg/builder\"].bundles.standard;for(let u of r){let A=u[1];for(let p of A)o.find(h=>a(h.path,p.path)).plugin={name:u[0],isDefault:n.includes(u[0])}}this.context.stdout.write(`${JSON.stringify(o,null,2)}\n`)}};Wd.paths=[[\"--clipanion=definitions\"]];var Vd=class extends ut{async execute(){this.context.stdout.write(this.cli.usage(null))}};Vd.paths=[[\"help\"],[\"--help\"],[\"-h\"]];Ye();Pt();qt();var dC=class extends ut{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\\\/]/)&&!W.tryParseIdent(this.leadingArgument)){let r=K.resolve(this.context.cwd,ue.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run([\"run\",this.leadingArgument,...this.args])}};Ye();var Kd=class extends ut{async execute(){this.context.stdout.write(`${tn||\"<unknown>\"}\n`)}};Kd.paths=[[\"-v\"],[\"--version\"]];Ye();Ye();qt();var Mh=class extends ut{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await St.find(r,this.context.cwd);return await o.restoreInstallState(),await un.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:o})}};Mh.paths=[[\"exec\"]],Mh.usage=nt.Usage({description:\"execute a shell script\",details:`\n      This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell.\n\n      It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n    `,examples:[[\"Execute a single shell command\",\"$0 exec echo Hello World\"],[\"Execute a shell script\",'$0 exec \"tsc & babel src --out-dir lib\"']]});Ye();qt();Za();var Oh=class extends ut{constructor(){super(...arguments);this.hash=ge.String({validator:aP(Ey(),[sI(/^p[0-9a-f]{5}$/)])})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),await o.applyLightResolution(),await Y0t(this.hash,o,{stdout:this.context.stdout})}};Oh.paths=[[\"explain\",\"peer-requirements\"]],Oh.usage=nt.Usage({description:\"explain a set of peer requirements\",details:`\n      A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants.\n\n      When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not.\n\n      When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set.\n\n      **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\\`yarn explain peer-requirements\\`).\n    `,examples:[[\"Explain the corresponding set of peer requirements for a hash\",\"$0 explain peer-requirements p1a4ed\"],[\"List all sets of peer requirements\",\"$0 explain peer-requirements\"]]});async function Y0t(t,e,r){let o=e.peerWarnings.find(n=>n.hash===t);if(typeof o>\"u\")throw new Error(`No peerDependency requirements found for hash: \"${t}\"`);return(await Nt.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async n=>{let u=de.mark(e.configuration);switch(o.type){case 2:{n.reportInfo(0,`We have a problem with ${de.pretty(e.configuration,o.requested,de.Type.IDENT)}, which is provided with version ${W.prettyReference(e.configuration,o.version)}.`),n.reportInfo(0,\"It is needed by the following direct dependencies of workspaces in your project:\"),n.reportSeparator();for(let h of o.requesters.values()){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error(\"Assertion failed: Expected the package to list the peer dependency\");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,`  ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}let A=[...o.links.values()].filter(h=>!o.requesters.has(h.locatorHash));if(A.length>0){n.reportSeparator(),n.reportInfo(0,`However, those packages themselves have more dependencies listing ${W.prettyIdent(e.configuration,o.requested)} as peer dependency:`),n.reportSeparator();for(let h of A){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error(\"Assertion failed: Expected the package to list the peer dependency\");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,`  ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}}let p=Array.from(o.links.values(),h=>{let E=e.storedPackages.get(h.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E.peerDependencies.get(o.requested.identHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");return I.range});if(p.length>1){let h=kr.simplifyRanges(p);n.reportSeparator(),h===null?(n.reportInfo(0,\"Unfortunately, put together, we found no single range that can satisfy all those peer requirements.\"),n.reportInfo(0,`Your best option may be to try to upgrade some dependencies with ${de.pretty(e.configuration,\"yarn up\",de.Type.CODE)}, or silence the warning via ${de.pretty(e.configuration,\"logFilters\",de.Type.CODE)}.`)):n.reportInfo(0,`Put together, the final range we computed is ${de.pretty(e.configuration,h,de.Type.RANGE)}`)}}break;default:n.reportInfo(0,`The ${de.pretty(e.configuration,\"yarn explain peer-requirements\",de.Type.CODE)} command doesn't support this warning type yet.`);break}})).exitCode()}Ye();qt();Za();Ye();Ye();Pt();qt();var Zge=$e(zn()),Uh=class extends ut{constructor(){super(...arguments);this.useYarnPath=ge.Boolean(\"--yarn-path\",{description:\"Set the yarnPath setting even if the version can be accessed by Corepack\"});this.onlyIfNeeded=ge.Boolean(\"--only-if-needed\",!1,{description:\"Only lock the Yarn version if it isn't already locked\"});this.version=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get(\"yarnPath\")){let A=r.sources.get(\"yarnPath\");if(!A)throw new Error(\"Assertion failed: Expected 'yarnPath' to have a source\");let p=r.projectCwd??r.startingCwd;if(K.contains(p,A))return 0}let o=()=>{if(typeof tn>\"u\")throw new it(\"The --install flag can only be used without explicit version specifier from the Yarn CLI\");return`file://${process.argv[1]}`},a,n=(A,p)=>({version:p,url:A.replace(/\\{\\}/g,p)});if(this.version===\"self\")a={url:o(),version:tn??\"self\"};else if(this.version===\"latest\"||this.version===\"berry\"||this.version===\"stable\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await m2(r,\"stable\"));else if(this.version===\"canary\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await m2(r,\"canary\"));else if(this.version===\"classic\")a={url:\"https://classic.yarnpkg.com/latest.js\",version:\"classic\"};else if(this.version.match(/^https?:/))a={url:this.version,version:\"remote\"};else if(this.version.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.version))a={url:`file://${K.resolve(ue.toPortablePath(this.version))}`,version:\"file\"};else if(kr.satisfiesWithPrereleases(this.version,\">=2.0.0\"))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",this.version);else if(kr.satisfiesWithPrereleases(this.version,\"^0.x || ^1.x\"))a=n(\"https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js\",this.version);else if(kr.validRange(this.version))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await W0t(r,this.version));else throw new it(`Invalid version descriptor \"${this.version}\"`);return(await Nt.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async A=>{let p=async()=>{let h=\"file://\";return a.url.startsWith(h)?(A.reportInfo(0,`Retrieving ${de.pretty(r,a.url,de.Type.PATH)}`),await oe.readFilePromise(a.url.slice(h.length))):(A.reportInfo(0,`Downloading ${de.pretty(r,a.url,de.Type.URL)}`),await rn.get(a.url,{configuration:r}))};await O8(r,a.version,p,{report:A,useYarnPath:this.useYarnPath})})).exitCode()}};Uh.paths=[[\"set\",\"version\"]],Uh.usage=nt.Usage({description:\"lock the Yarn version used by the project\",details:\"\\n      This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\\n\\n      By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\\n\\n      A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\\n\\n      The version specifier can be:\\n\\n      - a tag:\\n        - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\\n        - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\\n        - `classic` -> the most recent classic (`^0.x || ^1.x`) release\\n\\n      - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\\n\\n      - a semver version (e.g. `2.4.1`, `1.22.1`)\\n\\n      - a local file referenced through either a relative or absolute path\\n\\n      - `self` -> the version used to invoke the command\\n    \",examples:[[\"Download the latest release from the Yarn repository\",\"$0 set version latest\"],[\"Download the latest canary release from the Yarn repository\",\"$0 set version canary\"],[\"Download the latest classic release from the Yarn repository\",\"$0 set version classic\"],[\"Download the most recent Yarn 3 build\",\"$0 set version 3.x\"],[\"Download a specific Yarn 2 build\",\"$0 set version 2.0.0-rc.30\"],[\"Switch back to a specific Yarn 1 release\",\"$0 set version 1.22.1\"],[\"Use a release from the local filesystem\",\"$0 set version ./yarn.cjs\"],[\"Use a release from a URL\",\"$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js\"],[\"Download the version used to invoke the command\",\"$0 set version self\"]]});async function W0t(t,e){let o=(await rn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0})).tags.filter(a=>kr.satisfiesWithPrereleases(a,e));if(o.length===0)throw new it(`No matching release found for range ${de.pretty(t,e,de.Type.RANGE)}.`);return o[0]}async function m2(t,e){let r=await rn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new it(`Tag ${de.pretty(t,e,de.Type.RANGE)} not found`);return r.latest[e]}async function O8(t,e,r,{report:o,useYarnPath:a}){let n,u=async()=>(typeof n>\"u\"&&(n=await r()),n);if(e===null){let te=await u();await oe.mktempPromise(async le=>{let pe=K.join(le,\"yarn.cjs\");await oe.writeFilePromise(pe,te);let{stdout:Ae}=await Ur.execvp(process.execPath,[ue.fromPortablePath(pe),\"--version\"],{cwd:le,env:{...t.env,YARN_IGNORE_PATH:\"1\"}});if(e=Ae.trim(),!Zge.default.valid(e))throw new Error(`Invalid semver version. ${de.pretty(t,\"yarn --version\",de.Type.CODE)} returned:\n${e}`)})}let A=t.projectCwd??t.startingCwd,p=K.resolve(A,\".yarn/releases\"),h=K.resolve(p,`yarn-${e}.cjs`),E=K.relative(t.startingCwd,h),I=je.isTaggedYarnVersion(e),v=t.get(\"yarnPath\"),b=!I,C=b||!!v||!!a;if(a===!1){if(b)throw new zt(0,\"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack\");C=!1}else!C&&!process.env.COREPACK_ROOT&&(o.reportWarning(0,`You don't seem to have ${de.applyHyperlink(t,\"Corepack\",\"https://nodejs.org/api/corepack.html\")} enabled; we'll have to rely on ${de.applyHyperlink(t,\"yarnPath\",\"https://yarnpkg.com/configuration/yarnrc#yarnPath\")} instead`),C=!0);if(C){let te=await u();o.reportInfo(0,`Saving the new release in ${de.pretty(t,E,\"magenta\")}`),await oe.removePromise(K.dirname(h)),await oe.mkdirPromise(K.dirname(h),{recursive:!0}),await oe.writeFilePromise(h,te,{mode:493}),await Ve.updateConfiguration(A,{yarnPath:K.relative(A,h)})}else await oe.removePromise(K.dirname(h)),await Ve.updateConfiguration(A,{yarnPath:Ve.deleteProperty});let T=await Mt.tryFind(A)||new Mt;T.packageManager=`yarn@${I?e:await m2(t,\"stable\")}`;let L={};T.exportTo(L);let U=K.join(A,Mt.fileName),J=`${JSON.stringify(L,null,T.indent)}\n`;return await oe.changeFilePromise(U,J,{automaticNewlines:!0}),{bundleVersion:e}}function $ge(t){return wr[fP(t)]}var V0t=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\\n\\n(?<details>(?:.(?!##))+)/gs;async function K0t(t){let r=`https://repo.yarnpkg.com/${je.isTaggedYarnVersion(tn)?tn:await m2(t,\"canary\")}/packages/gatsby/content/advanced/error-codes.md`,o=await rn.get(r,{configuration:t});return new Map(Array.from(o.toString().matchAll(V0t),({groups:a})=>{if(!a)throw new Error(\"Assertion failed: Expected the match to have been successful\");let n=$ge(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected \"${a.name}\" to be named \"${n}\"`);return[a.code,a.details]}))}var _h=class extends ut{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:oI(Ey(),[sI(/^YN[0-9]{4}$/)])});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins);if(typeof this.code<\"u\"){let o=$ge(this.code),a=de.pretty(r,o,de.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),A=(await K0t(r)).get(this.code),p=typeof A<\"u\"?de.jsonOrPretty(this.json,r,de.tuple(de.Type.MARKDOWN,{text:A,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description.\n\nYou can help us by editing this page on GitHub \\u{1F642}:\n${de.jsonOrPretty(this.json,r,de.tuple(de.Type.URL,\"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md\"))}\n`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:o,details:p})}\n`):this.context.stdout.write(`${n}\n\n${p}\n`)}else{let o={children:je.mapAndFilter(Object.entries(wr),([a,n])=>Number.isNaN(Number(a))?je.mapAndFilter.skip:{label:Wu(Number(a)),value:de.tuple(de.Type.CODE,n)})};$s.emitTree(o,{configuration:r,stdout:this.context.stdout,json:this.json})}}};_h.paths=[[\"explain\"]],_h.usage=nt.Usage({description:\"explain an error code\",details:`\n      When the code argument is specified, this command prints its name and its details.\n\n      When used without arguments, this command lists all error codes and their names.\n    `,examples:[[\"Explain an error code\",\"$0 explain YN0006\"],[\"List all error codes\",\"$0 explain\"]]});Ye();Pt();qt();var ede=$e(Zo()),Hh=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Print versions of a package from the whole project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Print information for all packages, including transitive dependencies\"});this.extra=ge.Array(\"-X,--extra\",[],{description:\"An array of requests of extra data provided by plugins\"});this.cache=ge.Boolean(\"--cache\",!1,{description:\"Print information about the cache entry of a package (path, size, checksum)\"});this.dependents=ge.Boolean(\"--dependents\",!1,{description:\"Print all dependents for each matching package\"});this.manifest=ge.Boolean(\"--manifest\",!1,{description:\"Print data obtained by looking at the package archive (license, homepage, ...)\"});this.nameOnly=ge.Boolean(\"--name-only\",!1,{description:\"Only print the name for the matching packages\"});this.virtuals=ge.Boolean(\"--virtuals\",!1,{description:\"Print each instance of the virtual packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a&&!this.all)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=new Set(this.extra);this.cache&&u.add(\"cache\"),this.dependents&&u.add(\"dependents\"),this.manifest&&u.add(\"manifest\");let A=(le,{recursive:pe})=>{let Ae=le.anchoredLocator.locatorHash,ye=new Map,ae=[Ae];for(;ae.length>0;){let we=ae.shift();if(ye.has(we))continue;let Pe=o.storedPackages.get(we);if(typeof Pe>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");if(ye.set(we,Pe),W.isVirtualLocator(Pe)&&ae.push(W.devirtualizeLocator(Pe).locatorHash),!(!pe&&we!==Ae))for(let g of Pe.dependencies.values()){let Ee=o.storedResolutions.get(g.descriptorHash);if(typeof Ee>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");ae.push(Ee)}}return ye.values()},p=({recursive:le})=>{let pe=new Map;for(let Ae of o.workspaces)for(let ye of A(Ae,{recursive:le}))pe.set(ye.locatorHash,ye);return pe.values()},h=({all:le,recursive:pe})=>le&&pe?o.storedPackages.values():le?p({recursive:pe}):A(a,{recursive:pe}),E=({all:le,recursive:pe})=>{let Ae=h({all:le,recursive:pe}),ye=this.patterns.map(Pe=>{let g=W.parseLocator(Pe),Ee=ede.default.makeRe(W.stringifyIdent(g)),De=W.isVirtualLocator(g),ce=De?W.devirtualizeLocator(g):g;return ne=>{let ee=W.stringifyIdent(ne);if(!Ee.test(ee))return!1;if(g.reference===\"unknown\")return!0;let Ie=W.isVirtualLocator(ne),ke=Ie?W.devirtualizeLocator(ne):ne;return!(De&&Ie&&g.reference!==ne.reference||ce.reference!==ke.reference)}}),ae=je.sortMap([...Ae],Pe=>W.stringifyLocator(Pe));return{selection:ae.filter(Pe=>ye.length===0||ye.some(g=>g(Pe))),sortedLookup:ae}},{selection:I,sortedLookup:v}=E({all:this.all,recursive:this.recursive});if(I.length===0)throw new it(\"No package matched your request\");let b=new Map;if(this.dependents)for(let le of v)for(let pe of le.dependencies.values()){let Ae=o.storedResolutions.get(pe.descriptorHash);if(typeof Ae>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");je.getArrayWithDefault(b,Ae).push(le)}let C=new Map;for(let le of v){if(!W.isVirtualLocator(le))continue;let pe=W.devirtualizeLocator(le);je.getArrayWithDefault(C,pe.locatorHash).push(le)}let T={},L={children:T},U=r.makeFetcher(),J={project:o,fetcher:U,cache:n,checksums:o.storedChecksums,report:new Qi,cacheOptions:{skipIntegrityCheck:!0}},te=[async(le,pe,Ae)=>{if(!pe.has(\"manifest\"))return;let ye=await U.fetch(le,J),ae;try{ae=await Mt.find(ye.prefixPath,{baseFs:ye.packageFs})}finally{ye.releaseFs?.()}Ae(\"Manifest\",{License:de.tuple(de.Type.NO_HINT,ae.license),Homepage:de.tuple(de.Type.URL,ae.raw.homepage??null)})},async(le,pe,Ae)=>{if(!pe.has(\"cache\"))return;let ye=o.storedChecksums.get(le.locatorHash)??null,ae=n.getLocatorPath(le,ye),we;if(ae!==null)try{we=await oe.statPromise(ae)}catch{}let Pe=typeof we<\"u\"?[we.size,de.Type.SIZE]:void 0;Ae(\"Cache\",{Checksum:de.tuple(de.Type.NO_HINT,ye),Path:de.tuple(de.Type.PATH,ae),Size:Pe})}];for(let le of I){let pe=W.isVirtualLocator(le);if(!this.virtuals&&pe)continue;let Ae={},ye={value:[le,de.Type.LOCATOR],children:Ae};if(T[W.stringifyLocator(le)]=ye,this.nameOnly){delete ye.children;continue}let ae=C.get(le.locatorHash);typeof ae<\"u\"&&(Ae.Instances={label:\"Instances\",value:de.tuple(de.Type.NUMBER,ae.length)}),Ae.Version={label:\"Version\",value:de.tuple(de.Type.NO_HINT,le.version)};let we=(g,Ee)=>{let De={};if(Ae[g]=De,Array.isArray(Ee))De.children=Ee.map(ce=>({value:ce}));else{let ce={};De.children=ce;for(let[ne,ee]of Object.entries(Ee))typeof ee>\"u\"||(ce[ne]={label:ne,value:ee})}};if(!pe){for(let g of te)await g(le,u,we);await r.triggerHook(g=>g.fetchPackageInfo,le,u,we)}le.bin.size>0&&!pe&&we(\"Exported Binaries\",[...le.bin.keys()].map(g=>de.tuple(de.Type.PATH,g)));let Pe=b.get(le.locatorHash);typeof Pe<\"u\"&&Pe.length>0&&we(\"Dependents\",Pe.map(g=>de.tuple(de.Type.LOCATOR,g))),le.dependencies.size>0&&!pe&&we(\"Dependencies\",[...le.dependencies.values()].map(g=>{let Ee=o.storedResolutions.get(g.descriptorHash),De=typeof Ee<\"u\"?o.storedPackages.get(Ee)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:De})})),le.peerDependencies.size>0&&pe&&we(\"Peer dependencies\",[...le.peerDependencies.values()].map(g=>{let Ee=le.dependencies.get(g.identHash),De=typeof Ee<\"u\"?o.storedResolutions.get(Ee.descriptorHash)??null:null,ce=De!==null?o.storedPackages.get(De)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:ce})}))}$s.emitTree(L,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};Hh.paths=[[\"info\"]],Hh.usage=nt.Usage({description:\"see information related to packages\",details:\"\\n      This command prints various information related to the specified packages, accepting glob patterns.\\n\\n      By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\\n\\n      Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\\n\\n      Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\\n    \",examples:[[\"Show information about Lodash\",\"$0 info lodash\"]]});Ye();Pt();Nl();var dk=$e(ed());qt();var U8=$e(zn());Za();var J0t=[{selector:t=>t===-1,name:\"nodeLinker\",value:\"node-modules\"},{selector:t=>t!==-1&&t<8,name:\"enableGlobalCache\",value:!1},{selector:t=>t!==-1&&t<8,name:\"compressionLevel\",value:\"mixed\"}],jh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.immutable=ge.Boolean(\"--immutable\",{description:\"Abort with an error exit code if the lockfile was to be modified\"});this.immutableCache=ge.Boolean(\"--immutable-cache\",{description:\"Abort with an error exit code if the cache folder was to be modified\"});this.refreshLockfile=ge.Boolean(\"--refresh-lockfile\",{description:\"Refresh the package metadata stored in the lockfile\"});this.checkCache=ge.Boolean(\"--check-cache\",{description:\"Always refetch the packages and ensure that their checksums are consistent\"});this.checkResolutions=ge.Boolean(\"--check-resolutions\",{description:\"Validates that the package resolutions are coherent\"});this.inlineBuilds=ge.Boolean(\"--inline-builds\",{description:\"Verbosely print the output of the build steps of dependencies\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Vs(pl)});this.cacheFolder=ge.String(\"--cache-folder\",{hidden:!0});this.frozenLockfile=ge.Boolean(\"--frozen-lockfile\",{hidden:!0});this.ignoreEngines=ge.Boolean(\"--ignore-engines\",{hidden:!0});this.nonInteractive=ge.Boolean(\"--non-interactive\",{hidden:!0});this.preferOffline=ge.Boolean(\"--prefer-offline\",{hidden:!0});this.production=ge.Boolean(\"--production\",{hidden:!0});this.registry=ge.String(\"--registry\",{hidden:!0});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.networkTimeout=ge.String(\"--network-timeout\",{hidden:!0})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<\"u\"&&r.useWithSource(\"<cli>\",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let o=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await NE({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:\"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore\",error:!dk.default.VERCEL},{option:this.registry,message:\"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file\"},{option:this.preferOffline,message:\"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead\",error:!dk.default.VERCEL},{option:this.production,message:\"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead\",error:!0},{option:this.nonInteractive,message:\"The --non-interactive option is deprecated\",error:!o},{option:this.frozenLockfile,message:\"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead\",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:\"The cache-folder option has been deprecated; use rc settings instead\",error:!dk.default.NETLIFY}]);if(a!==null)return a;let n=this.mode===\"update-lockfile\";if(n&&(this.immutable||this.immutableCache))throw new it(`${de.pretty(r,\"--immutable\",de.Type.CODE)} and ${de.pretty(r,\"--immutable-cache\",de.Type.CODE)} cannot be used with ${de.pretty(r,\"--mode=update-lockfile\",de.Type.CODE)}`);let u=(this.immutable??r.get(\"enableImmutableInstalls\"))&&!n,A=this.immutableCache&&!n;if(r.projectCwd!==null){let T=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{let U=!1;await Z0t(r,u)&&(L.reportInfo(48,\"Automatically removed core plugins that are now builtins \\u{1F44D}\"),U=!0),await X0t(r,u)&&(L.reportInfo(48,\"Automatically fixed merge conflicts \\u{1F44D}\"),U=!0),U&&L.reportSeparator()});if(T.hasErrors())return T.exitCode()}if(r.projectCwd!==null){let T=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{if(Ve.telemetry?.isNew)Ve.telemetry.commitTips(),L.reportInfo(65,\"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry\"),L.reportInfo(65,`Run ${de.pretty(r,\"yarn config set --home enableTelemetry 0\",de.Type.CODE)} to disable`),L.reportSeparator();else if(Ve.telemetry?.shouldShowTips){let U=await rn.get(\"https://repo.yarnpkg.com/tags\",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let J=null;if(tn!==null){let le=U8.default.prerelease(tn)?\"canary\":\"stable\",pe=U.latest[le];U8.default.gt(pe,tn)&&(J=[le,pe])}if(J)Ve.telemetry.commitTips(),L.reportInfo(88,`${de.applyStyle(r,`A new ${J[0]} version of Yarn is available:`,de.Style.BOLD)} ${W.prettyReference(r,J[1])}!`),L.reportInfo(88,`Upgrade now by running ${de.pretty(r,`yarn set version ${J[1]}`,de.Type.CODE)}`),L.reportSeparator();else{let te=Ve.telemetry.selectTip(U.tips);te&&(L.reportInfo(89,de.pretty(r,te.message,de.Type.MARKDOWN_INLINE)),te.url&&L.reportInfo(89,`Learn more at ${te.url}`),L.reportSeparator())}}}});if(T.hasErrors())return T.exitCode()}let{project:p,workspace:h}=await St.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let T=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{let U={};for(let J of J0t)J.selector(E)&&typeof r.sources.get(J.name)>\"u\"&&(r.use(\"<compat>\",{[J.name]:J.value},p.cwd,{overwrite:!0}),U[J.name]=J.value);Object.keys(U).length>0&&(await Ve.updateConfiguration(p.cwd,U),L.reportInfo(87,\"Migrated your project to the latest Yarn version \\u{1F680}\"),L.reportSeparator())});if(T.hasErrors())return T.exitCode()}let I=await Lr.find(r,{immutable:A,check:this.checkCache});if(!h)throw new rr(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let v=r.get(\"enableHardenedMode\");v&&typeof r.sources.get(\"enableHardenedMode\")>\"u\"&&await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async T=>{T.reportWarning(0,\"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled.\"),T.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${de.applyHyperlink(r,\"documentation\",\"https://yarnpkg.com/features/security#hardened-mode\")} for more details.`),T.reportSeparator()}),(this.refreshLockfile??v)&&(p.lockfileNeedsRefresh=!0);let b=this.checkResolutions??v;return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async T=>{await p.install({cache:I,report:T,immutable:u,checkResolutions:b,mode:this.mode})})).exitCode()}};jh.paths=[[\"install\"],nt.Default],jh.usage=nt.Usage({description:\"install the project dependencies\",details:\"\\n      This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\\n\\n      - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\\n\\n      - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\\n\\n      - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know).\\n\\n      - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\\n\\n      Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\\n\\n      If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\\n\\n      If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\\n\\n      If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\\n\\n      If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\\n\\n      If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n    \",examples:[[\"Install the project\",\"$0 install\"],[\"Validate a project when using Zero-Installs\",\"$0 install --immutable --immutable-cache\"],[\"Validate a project when using Zero-Installs (slightly safer if you accept external PRs)\",\"$0 install --immutable --immutable-cache --check-cache\"]]});var z0t=\"<<<<<<<\";async function X0t(t,e){if(!t.projectCwd)return!1;let r=K.join(t.projectCwd,dr.lockfile);if(!await oe.existsPromise(r)||!(await oe.readFilePromise(r,\"utf8\")).includes(z0t))return!1;if(e)throw new zt(47,\"Cannot autofix a lockfile when running an immutable install\");let a=await Ur.execvp(\"git\",[\"rev-parse\",\"MERGE_HEAD\",\"HEAD\"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Ur.execvp(\"git\",[\"rev-parse\",\"REBASE_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0&&(a=await Ur.execvp(\"git\",[\"rev-parse\",\"CHERRY_PICK_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0)throw new zt(83,\"Git returned an error when trying to find the commits pertaining to the conflict\");let n=await Promise.all(a.stdout.trim().split(/\\n/).map(async A=>{let p=await Ur.execvp(\"git\",[\"show\",`${A}:./${dr.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new zt(83,`Git returned an error when trying to access the lockfile content in ${A}`);try{return Vi(p.stdout)}catch{throw new zt(46,\"A variant of the conflicting lockfile failed to parse\")}}));n=n.filter(A=>!!A.__metadata);for(let A of n){if(A.__metadata.version<7)for(let p of Object.keys(A)){if(p===\"__metadata\")continue;let h=W.parseDescriptor(p,!0),E=t.normalizeDependency(h),I=W.stringifyDescriptor(E);I!==p&&(A[I]=A[p],delete A[p])}for(let p of Object.keys(A)){if(p===\"__metadata\")continue;let h=A[p].checksum;typeof h==\"string\"&&h.includes(\"/\")||(A[p].checksum=`${A.__metadata.cacheKey}/${h}`)}}let u=Object.assign({},...n);u.__metadata.version=`${Math.min(...n.map(A=>parseInt(A.__metadata.version??0)))}`,u.__metadata.cacheKey=\"merged\";for(let[A,p]of Object.entries(u))typeof p==\"string\"&&delete u[A];return await oe.changeFilePromise(r,Ba(u),{automaticNewlines:!0}),!0}async function Z0t(t,e){if(!t.projectCwd)return!1;let r=[],o=K.join(t.projectCwd,\".yarn/plugins/@yarnpkg\");return await Ve.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let u=n.filter(A=>{if(!A.path)return!0;let p=K.resolve(t.projectCwd,A.path),h=B1.has(A.spec)&&K.contains(o,p);return h&&r.push(p),!h});return u.length===0?Ve.deleteProperty:u.length===n.length?n:u}},{immutable:e})?(await Promise.all(r.map(async n=>{await oe.removePromise(n)})),!0):!1}Ye();Pt();qt();var qh=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Link all workspaces belonging to the target projects to the current one\"});this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Also link private workspaces belonging to the target projects to the current one\"});this.relative=ge.Boolean(\"-r,--relative\",!1,{description:\"Link workspaces using relative paths instead of absolute paths\"});this.destinations=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=o.topLevelWorkspace,A=[];for(let p of this.destinations){let h=K.resolve(this.context.cwd,ue.toPortablePath(p)),E=await Ve.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await St.find(E,h);if(o.cwd===I.cwd)throw new it(`Invalid destination '${p}'; Can't link the project to itself`);if(!v)throw new rr(I.cwd,h);if(this.all){let b=!1;for(let C of I.workspaces)C.manifest.name&&(!C.manifest.private||this.private)&&(A.push(C),b=!0);if(!b)throw new it(`No workspace found to be linked in the target project: ${p}`)}else{if(!v.manifest.name)throw new it(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(v.manifest.private&&!this.private)throw new it(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);A.push(v)}}for(let p of A){let h=W.stringifyIdent(p.anchoredLocator),E=this.relative?K.relative(o.cwd,p.cwd):p.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};qh.paths=[[\"link\"]],qh.usage=nt.Usage({description:\"connect the local project to another one\",details:\"\\n      This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\\n    \",examples:[[\"Register one or more remote workspaces for use in the current project\",\"$0 link ~/ts-loader ~/jest\"],[\"Register all workspaces from a remote project for use in the current project\",\"$0 link ~/jest --all\"]]});qt();var Gh=class extends ut{constructor(){super(...arguments);this.args=ge.Proxy()}async execute(){return this.cli.run([\"exec\",\"node\",...this.args])}};Gh.paths=[[\"node\"]],Gh.usage=nt.Usage({description:\"run node with the hook already setup\",details:`\n      This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n\n      The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version.\n    `,examples:[[\"Run a Node script\",\"$0 node ./my-script.js\"]]});Ye();qt();var Yh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=await Ve.findRcFiles(this.context.cwd);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let u of o)if(!!u.data?.plugins)for(let A of u.data.plugins){if(!A.checksum||!A.spec.match(/^https?:/))continue;let p=await rn.get(A.spec,{configuration:r}),h=wn.makeHash(p);if(A.checksum===h)continue;let E=de.pretty(r,A.path,de.Type.PATH),I=de.pretty(r,A.spec,de.Type.URL),v=`${E} is different from the file provided by ${I}`;n.reportJson({...A,newChecksum:h}),n.reportError(0,v)}})).exitCode()}};Yh.paths=[[\"plugin\",\"check\"]],Yh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"find all third-party plugins that differ from their own spec\",details:`\n      Check only the plugins from https.\n\n      If this command detects any plugin differences in the CI environment, it will throw an error.\n    `,examples:[[\"find all third-party plugins that differ from their own spec\",\"$0 plugin check\"]]});Ye();Ye();Pt();qt();var ode=Be(\"os\");Ye();Pt();qt();var tde=Be(\"os\");Ye();Nl();qt();var $0t=\"https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml\";async function Jd(t,e){let r=await rn.get($0t,{configuration:t}),o=Vi(r.toString());return Object.fromEntries(Object.entries(o).filter(([a,n])=>!e||kr.satisfiesWithPrereleases(e,n.range??\"<4.0.0-rc.1\")))}var Wh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Jd(r,tn);for(let[u,{experimental:A,...p}]of Object.entries(n)){let h=u;A&&(h+=\" [experimental]\"),a.reportJson({name:u,experimental:A,...p}),a.reportInfo(null,h)}})).exitCode()}};Wh.paths=[[\"plugin\",\"list\"]],Wh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"list the available official plugins\",details:\"\\n      This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\\n    \",examples:[[\"List the official plugins\",\"$0 plugin list\"]]});var egt=/^[0-9]+$/,tgt=process.platform===\"win32\";function rde(t){return egt.test(t)?`pull/${t}/head`:t}var rgt=({repository:t,branch:e},r)=>[[\"git\",\"init\",ue.fromPortablePath(r)],[\"git\",\"remote\",\"add\",\"origin\",t],[\"git\",\"fetch\",\"origin\",\"--depth=1\",rde(e)],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"]],ngt=({branch:t})=>[[\"git\",\"fetch\",\"origin\",\"--depth=1\",rde(t),\"--force\"],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"],[\"git\",\"clean\",\"-dfx\",\"-e\",\"packages/yarnpkg-cli/bundles\"]],igt=({plugins:t,noMinify:e},r,o)=>[[\"yarn\",\"build:cli\",...new Array().concat(...t.map(a=>[\"--plugin\",K.resolve(o,a)])),...e?[\"--no-minify\"]:[],\"|\"],[tgt?\"move\":\"mv\",\"packages/yarnpkg-cli/bundles/yarn.js\",ue.fromPortablePath(r),\"|\"]],Vh=class extends ut{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.plugins=ge.Array(\"--plugin\",[],{description:\"An array of additional plugins that should be included in the bundle\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"If set, the bundle will be built but not added to the project\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a bundle for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.skipPlugins=ge.Boolean(\"--skip-plugins\",!1,{description:\"Skip updating the contrib plugins\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=typeof this.installPath<\"u\"?K.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):K.resolve(ue.toPortablePath((0,tde.tmpdir)()),\"yarnpkg-sources\",wn.makeHash(this.repository).slice(0,6));return(await Nt.start({configuration:r,stdout:this.context.stdout},async u=>{await _8(this,{configuration:r,report:u,target:a}),u.reportSeparator(),u.reportInfo(0,\"Building a fresh bundle\"),u.reportSeparator();let A=await Ur.execvp(\"git\",[\"rev-parse\",\"--short\",\"HEAD\"],{cwd:a,strict:!0}),p=K.join(a,`packages/yarnpkg-cli/bundles/yarn-${A.stdout.trim()}.js`);oe.existsSync(p)||(await y2(igt(this,p,a),{configuration:r,context:this.context,target:a}),u.reportSeparator());let h=await oe.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await O8(r,null,async()=>h,{report:u});this.skipPlugins||await sgt(this,E,{project:o,report:u,target:a})}})).exitCode()}};Vh.paths=[[\"set\",\"version\",\"from\",\"sources\"]],Vh.usage=nt.Usage({description:\"build Yarn from master\",details:`\n      This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project.\n\n      By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \\`--skip-plugins\\` flag.\n    `,examples:[[\"Build Yarn from master\",\"$0 set version from sources\"]]});async function y2(t,{configuration:e,context:r,target:o}){for(let[a,...n]of t){let u=n[n.length-1]===\"|\";if(u&&n.pop(),u)await Ur.pipevp(a,n,{cwd:o,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${de.pretty(e,`  $ ${[a,...n].join(\" \")}`,\"grey\")}\n`);try{await Ur.execvp(a,n,{cwd:o,strict:!0})}catch(A){throw r.stdout.write(A.stdout||A.stack),A}}}}async function _8(t,{configuration:e,report:r,target:o}){let a=!1;if(!t.force&&oe.existsSync(K.join(o,\".git\"))){r.reportInfo(0,\"Fetching the latest commits\"),r.reportSeparator();try{await y2(ngt(t),{configuration:e,context:t.context,target:o}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,\"Repository update failed; we'll try to regenerate it\")}}a||(r.reportInfo(0,\"Cloning the remote repository\"),r.reportSeparator(),await oe.removePromise(o),await oe.mkdirPromise(o,{recursive:!0}),await y2(rgt(t,o),{configuration:e,context:t.context,target:o}))}async function sgt(t,e,{project:r,report:o,target:a}){let n=await Jd(r.configuration,e),u=new Set(Object.keys(n));for(let A of r.configuration.plugins.keys())!u.has(A)||await H8(A,t,{project:r,report:o,target:a})}Ye();Ye();Pt();qt();var nde=$e(zn()),ide=Be(\"url\"),sde=Be(\"vm\");var Kh=class extends ut{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean(\"--checksum\",!0,{description:\"Whether to care if this plugin is modified\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await St.find(r,this.context.cwd),u,A;if(this.name.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.name)){let p=K.resolve(this.context.cwd,ue.toPortablePath(this.name));a.reportInfo(0,`Reading ${de.pretty(r,p,de.Type.PATH)}`),u=K.relative(n.cwd,p),A=await oe.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new ide.URL(this.name)}catch{throw new zt(52,`Plugin specifier \"${this.name}\" is neither a plugin name nor a valid url`)}u=this.name,p=this.name}else{let h=W.parseLocator(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\"));if(h.reference!==\"unknown\"&&!nde.default.valid(h.reference))throw new zt(0,\"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.\");let E=W.stringifyIdent(h),I=await Jd(r,tn);if(!Object.hasOwn(I,E)){let v=`Couldn't find a plugin named ${W.prettyIdent(r,h)} on the remote registry.\n`;throw r.plugins.has(E)?v+=`A plugin named ${W.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:v+=`Note that only the plugins referenced on our website (${de.pretty(r,\"https://github.com/yarnpkg/berry/blob/master/plugins.yml\",de.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${de.pretty(r,\"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js\",de.Type.URL)}).`,new zt(51,v)}u=E,p=I[E].url,h.reference!==\"unknown\"?p=p.replace(/\\/master\\//,`/${E}/${h.reference}/`):tn!==null&&(p=p.replace(/\\/master\\//,`/@yarnpkg/cli/${tn}/`))}a.reportInfo(0,`Downloading ${de.pretty(r,p,\"green\")}`),A=await rn.get(p,{configuration:r})}await j8(u,A,{checksum:this.checksum,project:n,report:a})})).exitCode()}};Kh.paths=[[\"plugin\",\"import\"]],Kh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"download a plugin\",details:`\n      This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations.\n\n      Three types of plugin references are accepted:\n\n      - If the plugin is stored within the Yarn repository, it can be referenced by name.\n      - Third-party plugins can be referenced directly through their public urls.\n      - Local plugins can be referenced by their path on the disk.\n\n      If the \\`--no-checksum\\` option is set, Yarn will no longer care if the plugin is modified.\n\n      Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \\`@yarnpkg/builder\\` package).\n    `,examples:[['Download and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import @yarnpkg/plugin-exec\"],['Download and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import exec\"],[\"Download and activate a community plugin\",\"$0 plugin import https://example.org/path/to/plugin.js\"],[\"Activate a local plugin\",\"$0 plugin import ./path/to/plugin.js\"]]});async function j8(t,e,{checksum:r=!0,project:o,report:a}){let{configuration:n}=o,u={},A={exports:u};(0,sde.runInNewContext)(e.toString(),{module:A,exports:u});let h=`.yarn/plugins/${A.exports.name}.cjs`,E=K.resolve(o.cwd,h);a.reportInfo(0,`Saving the new plugin in ${de.pretty(n,h,\"magenta\")}`),await oe.mkdirPromise(K.dirname(E),{recursive:!0}),await oe.writeFilePromise(E,e);let I={path:h,spec:t};r&&(I.checksum=wn.makeHash(e)),await Ve.addPlugin(o.cwd,[I])}var ogt=({pluginName:t,noMinify:e},r)=>[[\"yarn\",`build:${t}`,...e?[\"--no-minify\"]:[],\"|\"]],Jh=class extends ut{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a plugin for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.name=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=typeof this.installPath<\"u\"?K.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):K.resolve(ue.toPortablePath((0,ode.tmpdir)()),\"yarnpkg-sources\",wn.makeHash(this.repository).slice(0,6));return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:u}=await St.find(r,this.context.cwd),A=W.parseIdent(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\")),p=W.stringifyIdent(A),h=await Jd(r,tn);if(!Object.hasOwn(h,p))throw new zt(51,`Couldn't find a plugin named \"${p}\" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await _8(this,{configuration:r,report:n,target:o}),await H8(E,this,{project:u,report:n,target:o})})).exitCode()}};Jh.paths=[[\"plugin\",\"import\",\"from\",\"sources\"]],Jh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"build a plugin from sources\",details:`\n      This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations.\n\n      The plugins can be referenced by their short name if sourced from the official Yarn repository.\n    `,examples:[['Build and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import from sources @yarnpkg/plugin-exec\"],['Build and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import from sources exec\"]]});async function H8(t,{context:e,noMinify:r},{project:o,report:a,target:n}){let u=t.replace(/@yarnpkg\\//,\"\"),{configuration:A}=o;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${u}`),a.reportSeparator(),await y2(ogt({pluginName:u,noMinify:r},n),{configuration:A,context:e,target:n}),a.reportSeparator();let p=K.resolve(n,`packages/${u}/bundles/${t}.js`),h=await oe.readFilePromise(p);await j8(t,h,{project:o,report:a})}Ye();Pt();qt();var zh=class extends ut{constructor(){super(...arguments);this.name=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let u=this.name,A=W.parseIdent(u);if(!r.plugins.has(u))throw new it(`${W.prettyIdent(r,A)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${u}.cjs`,h=K.resolve(o.cwd,p);oe.existsSync(h)&&(n.reportInfo(0,`Removing ${de.pretty(r,p,de.Type.PATH)}...`),await oe.removePromise(h)),n.reportInfo(0,\"Updating the configuration...\"),await Ve.updateConfiguration(o.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let I=E.filter(v=>v.path!==p);return I.length===0?Ve.deleteProperty:I.length===E.length?E:I}})})).exitCode()}};zh.paths=[[\"plugin\",\"remove\"]],zh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"remove a plugin\",details:`\n      This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration.\n\n      **Note:** The plugins have to be referenced by their name property, which can be obtained using the \\`yarn plugin runtime\\` command. Shorthands are not allowed.\n   `,examples:[[\"Remove a plugin imported from the Yarn repository\",\"$0 plugin remove @yarnpkg/plugin-typescript\"],[\"Remove a plugin imported from a local file\",\"$0 plugin remove my-local-plugin\"]]});Ye();qt();var Xh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let u=this.context.plugins.plugins.has(n),A=n;u&&(A+=\" [builtin]\"),a.reportJson({name:n,builtin:u}),a.reportInfo(null,`${A}`)}})).exitCode()}};Xh.paths=[[\"plugin\",\"runtime\"]],Xh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"list the active plugins\",details:`\n      This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins.\n    `,examples:[[\"List the currently active plugins\",\"$0 plugin runtime\"]]});Ye();Ye();qt();var Zh=class extends ut{constructor(){super(...arguments);this.idents=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=new Set;for(let A of this.idents)u.add(W.parseIdent(A).identHash);if(await o.restoreInstallState({restoreResolutions:!1}),await o.resolveEverything({cache:n,report:new Qi}),u.size>0)for(let A of o.storedPackages.values())u.has(A.identHash)&&(o.storedBuildState.delete(A.locatorHash),o.skippedBuilds.delete(A.locatorHash));else o.storedBuildState.clear(),o.skippedBuilds.clear();return await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Zh.paths=[[\"rebuild\"]],Zh.usage=nt.Usage({description:\"rebuild the project's native packages\",details:`\n      This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again.\n\n      Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future).\n\n      By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory.\n    `,examples:[[\"Rebuild all packages\",\"$0 rebuild\"],[\"Rebuild fsevents only\",\"$0 rebuild fsevents\"]]});Ye();Ye();Ye();qt();var q8=$e(Zo());Za();var $h=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Apply the operation to all workspaces from the current project\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Vs(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.all?o.workspaces:[a],A=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],p=[],h=!1,E=[];for(let C of this.patterns){let T=!1,L=W.parseIdent(C);for(let U of u){let J=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,q8.default)(J,C))U.manifest.peerDependenciesMeta.delete(te),h=!0,T=!0;for(let te of A){let le=U.manifest.getForScope(te),pe=[...le.values()].map(Ae=>W.stringifyIdent(Ae));for(let Ae of(0,q8.default)(pe,W.stringifyIdent(L))){let{identHash:ye}=W.parseIdent(Ae),ae=le.get(ye);if(typeof ae>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");U.manifest[te].delete(ye),E.push([U,te,ae]),h=!0,T=!0}}}T||p.push(C)}let I=p.length>1?\"Patterns\":\"Pattern\",v=p.length>1?\"don't\":\"doesn't\",b=this.all?\"any\":\"this\";if(p.length>0)throw new it(`${I} ${de.prettyList(r,p,de.Type.CODE)} ${v} match any packages referenced by ${b} workspace`);return h?(await r.triggerMultipleHooks(C=>C.afterWorkspaceDependencyRemoval,E),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};$h.paths=[[\"remove\"]],$h.usage=nt.Usage({description:\"remove dependencies from the project\",details:`\n      This command will remove the packages matching the specified patterns from the current workspace.\n\n      If the \\`--mode=<mode>\\` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n      - \\`skip-build\\` will not run the build scripts at all. Note that this is different from setting \\`enableScripts\\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n      - \\`update-lockfile\\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n    `,examples:[[\"Remove a dependency from the current project\",\"$0 remove lodash\"],[\"Remove a dependency from all workspaces at once\",\"$0 remove lodash --all\"],[\"Remove all dependencies starting with `eslint-`\",\"$0 remove 'eslint-*'\"],[\"Remove all dependencies with the `@babel` scope\",\"$0 remove '@babel/*'\"],[\"Remove all dependencies matching `react-dom` or `react-helmet`\",\"$0 remove 'react-{dom,helmet}'\"]]});Ye();Ye();var ade=Be(\"util\"),zd=class extends ut{async execute(){let e=await Ve.find(this.context.cwd,this.context.plugins),{project:r,workspace:o}=await St.find(e,this.context.cwd);if(!o)throw new rr(r.cwd,this.context.cwd);return(await Nt.start({configuration:e,stdout:this.context.stdout},async n=>{let u=o.manifest.scripts,A=je.sortMap(u.keys(),E=>E),p={breakLength:1/0,colors:e.get(\"enableColors\"),maxArrayLength:2},h=A.reduce((E,I)=>Math.max(E,I.length),0);for(let[E,I]of u.entries())n.reportInfo(null,`${E.padEnd(h,\" \")}   ${(0,ade.inspect)(I,p)}`)})).exitCode()}};zd.paths=[[\"run\"]];Ye();Ye();qt();var e0=class extends ut{constructor(){super(...arguments);this.inspect=ge.String(\"--inspect\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.inspectBrk=ge.String(\"--inspect-brk\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.topLevel=ge.Boolean(\"-T,--top-level\",!1,{description:\"Check the root workspace for scripts and/or binaries instead of the current one\"});this.binariesOnly=ge.Boolean(\"-B,--binaries-only\",!1,{description:\"Ignore any user defined scripts and only check for binaries\"});this.require=ge.String(\"--require\",{description:\"Forwarded to the underlying Node process when executing a binary\"});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.scriptName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a,locator:n}=await St.find(r,this.context.cwd);await o.restoreInstallState();let u=this.topLevel?o.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await un.hasPackageScript(u,this.scriptName,{project:o}))return await un.executePackageScript(u,this.scriptName,this.args,{project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let A=await un.getPackageAccessibleBinaries(u,{project:o});if(A.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect==\"string\"?h.push(`--inspect=${this.inspect}`):h.push(\"--inspect\")),this.inspectBrk&&(typeof this.inspectBrk==\"string\"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push(\"--inspect-brk\")),this.require&&h.push(`--require=${this.require}`),await un.executePackageAccessibleBinary(u,this.scriptName,this.args,{cwd:this.context.cwd,project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:A})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(\":\")){let E=(await Promise.all(o.workspaces.map(async I=>I.manifest.scripts.has(this.scriptName)?I:null))).filter(I=>I!==null);if(E.length===1)return await un.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName===\"node-gyp\"?new it(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${W.prettyLocator(r,n)}). This typically happens because some package depends on \"node-gyp\" to build itself, but didn't list it in their dependencies. To fix that, please run \"yarn add node-gyp\" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new it(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${W.prettyLocator(r,n)}).`);{if(this.scriptName===\"global\")throw new it(\"The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead\");let h=[this.scriptName].concat(this.args);for(let[E,I]of uC)for(let v of I)if(h.length>=v.length&&JSON.stringify(h.slice(0,v.length))===JSON.stringify(v))throw new it(`Couldn't find a script named \"${this.scriptName}\", but a matching command can be found in the ${E} plugin. You can install it with \"yarn plugin import ${E}\".`);throw new it(`Couldn't find a script named \"${this.scriptName}\".`)}}};e0.paths=[[\"run\"]],e0.usage=nt.Usage({description:\"run a script defined in the package.json\",details:`\n      This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace:\n\n      - If the \\`scripts\\` field from your local package.json contains a matching script name, its definition will get executed.\n\n      - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed.\n\n      - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed.\n\n      Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax).\n    `,examples:[[\"Run the tests from the local workspace\",\"$0 run test\"],['Same thing, but without the \"run\" keyword',\"$0 test\"],[\"Inspect Webpack while running\",\"$0 run --inspect-brk webpack\"]]});Ye();Ye();qt();var t0=class extends ut{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(await o.restoreInstallState({restoreResolutions:!1}),!a)throw new rr(o.cwd,this.context.cwd);let u=W.parseDescriptor(this.descriptor,!0),A=W.makeDescriptor(u,this.resolution);return o.storedDescriptors.set(u.descriptorHash,u),o.storedDescriptors.set(A.descriptorHash,A),o.resolutionAliases.set(u.descriptorHash,A.descriptorHash),await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};t0.paths=[[\"set\",\"resolution\"]],t0.usage=nt.Usage({description:\"enforce a package resolution\",details:'\\n      This command updates the resolution table so that `descriptor` is resolved by `resolution`.\\n\\n      Note that by default this command only affect the current resolution table - meaning that this \"manual override\" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\\n\\n      Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\\n    ',examples:[[\"Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0\",\"$0 set resolution lodash@npm:^1.2.3 1.5.0\"]]});Ye();Pt();qt();var lde=$e(Zo()),r0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unlink all workspaces belonging to the target project from the current one\"});this.leadingArguments=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=o.topLevelWorkspace,A=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of u.manifest.resolutions)h.startsWith(\"portal:\")&&A.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=K.resolve(this.context.cwd,ue.toPortablePath(p));if(je.isPathLike(p)){let E=await Ve.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await St.find(E,h);if(!v)throw new rr(I.cwd,h);if(this.all){for(let b of I.workspaces)b.manifest.name&&A.add(W.stringifyIdent(b.anchoredLocator));if(A.size===0)throw new it(\"No workspace found to be unlinked in the target project\")}else{if(!v.manifest.name)throw new it(\"The target workspace doesn't have a name and thus cannot be unlinked\");A.add(W.stringifyIdent(v.anchoredLocator))}}else{let E=[...u.manifest.resolutions.map(({pattern:I})=>I.descriptor.fullName)];for(let I of(0,lde.default)(E,p))A.add(I)}}return u.manifest.resolutions=u.manifest.resolutions.filter(({pattern:p})=>!A.has(p.descriptor.fullName)),await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};r0.paths=[[\"unlink\"]],r0.usage=nt.Usage({description:\"disconnect the local project from another one\",details:`\n      This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments.\n    `,examples:[[\"Unregister a remote workspace in the current project\",\"$0 unlink ~/ts-loader\"],[\"Unregister all workspaces from a remote project in the current project\",\"$0 unlink ~/jest --all\"],[\"Unregister all previously linked workspaces\",\"$0 unlink --all\"],[\"Unregister all workspaces matching a glob\",\"$0 unlink '@babel/*' 'pkg-{a,b}'\"]]});Ye();Ye();Ye();qt();var cde=$e(A2()),G8=$e(Zo());Za();var Kf=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Offer various choices, depending on the detected upgrade paths\"});this.fixed=ge.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=ge.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=ge.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=ge.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Resolve again ALL resolutions for those packages\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Vs(pl)});this.patterns=ge.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=[...o.storedDescriptors.values()],A=u.map(E=>W.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(W.parseDescriptor(E).range!==\"unknown\")throw new it(\"Ranges aren't allowed when using --recursive\");for(let I of(0,G8.default)(A,E)){let v=W.parseIdent(I);p.add(v.identHash)}}let h=u.filter(E=>p.has(E.identHash));for(let E of h)o.storedDescriptors.delete(E.descriptorHash),o.storedResolutions.delete(E.descriptorHash);return await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get(\"preferInteractive\"),p=p2(this,o),h=A?[\"keep\",\"reuse\",\"project\",\"latest\"]:[\"project\",\"latest\"],E=[],I=[];for(let L of this.patterns){let U=!1,J=W.parseDescriptor(L),te=W.stringifyIdent(J);for(let le of o.workspaces)for(let pe of[\"dependencies\",\"devDependencies\"]){let ye=[...le.manifest.getForScope(pe).values()].map(we=>W.stringifyIdent(we)),ae=te===\"*\"?ye:(0,G8.default)(ye,te);for(let we of ae){let Pe=W.parseIdent(we),g=le.manifest[pe].get(Pe.identHash);if(typeof g>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let Ee=W.makeDescriptor(Pe,J.range);E.push(Promise.resolve().then(async()=>[le,pe,g,await h2(Ee,{project:o,workspace:le,cache:n,target:pe,fixed:u,modifier:p,strategies:h})])),U=!0}}U||I.push(L)}if(I.length>1)throw new it(`Patterns ${de.prettyList(r,I,de.Type.CODE)} don't match any packages referenced by any workspace`);if(I.length>0)throw new it(`Pattern ${de.prettyList(r,I,de.Type.CODE)} doesn't match any packages referenced by any workspace`);let v=await Promise.all(E),b=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async L=>{for(let[,,U,{suggestions:J,rejections:te}]of v){let le=J.filter(pe=>pe.descriptor!==null);if(le.length===0){let[pe]=te;if(typeof pe>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");let Ae=this.cli.error(pe);o.configuration.get(\"enableNetwork\")?L.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range\n\n${Ae}`):L.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled)\n\n${Ae}`)}else le.length>1&&!A&&L.reportError(27,`${W.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(b.hasErrors())return b.exitCode();let C=!1,T=[];for(let[L,U,,{suggestions:J}]of v){let te,le=J.filter(ae=>ae.descriptor!==null),pe=le[0].descriptor,Ae=le.every(ae=>W.areDescriptorsEqual(ae.descriptor,pe));le.length===1||Ae?te=pe:(C=!0,{answer:te}=await(0,cde.prompt)({type:\"select\",name:\"answer\",message:`Which range do you want to use in ${W.prettyWorkspace(r,L)} \\u276F ${U}?`,choices:J.map(({descriptor:ae,name:we,reason:Pe})=>ae?{name:we,hint:Pe,descriptor:ae}:{name:we,hint:Pe,disabled:!0}),onCancel:()=>process.exit(130),result(ae){return this.find(ae,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let ye=L.manifest[U].get(te.identHash);if(typeof ye>\"u\")throw new Error(\"Assertion failed: This descriptor should have a matching entry\");if(ye.descriptorHash!==te.descriptorHash)L.manifest[U].set(te.identHash,te),T.push([L,U,ye,te]);else{let ae=r.makeResolver(),we={project:o,resolver:ae},Pe=r.normalizeDependency(ye),g=ae.bindDescriptor(Pe,L.anchoredLocator,we);o.forgetResolution(g)}}return await r.triggerMultipleHooks(L=>L.afterWorkspaceDependencyReplacement,T),C&&this.context.stdout.write(`\n`),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Kf.paths=[[\"up\"]],Kf.usage=nt.Usage({description:\"upgrade dependencies across the project\",details:\"\\n      This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\\n\\n      If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\\n\\n      If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\\n\\n      The, `-C,--caret`, `-E,--exact` and  `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\\n\\n      This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\\n    \",examples:[[\"Upgrade all instances of lodash to the latest release\",\"$0 up lodash\"],[\"Upgrade all instances of lodash to the latest release, but ask confirmation for each\",\"$0 up lodash -i\"],[\"Upgrade all instances of lodash to 1.2.3\",\"$0 up lodash@1.2.3\"],[\"Upgrade all instances of packages with the `@babel` scope to the latest release\",\"$0 up '@babel/*'\"],[\"Upgrade all instances of packages containing the word `jest` to the latest release\",\"$0 up '*jest*'\"],[\"Upgrade all instances of packages with the `@babel` scope to 7.0.0\",\"$0 up '@babel/*@7.0.0'\"]]}),Kf.schema=[lI(\"recursive\",Gu.Forbids,[\"interactive\",\"exact\",\"tilde\",\"caret\"],{ignore:[void 0,!1]})];Ye();Ye();Ye();qt();var n0=class extends ut{constructor(){super(...arguments);this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"List, for each workspace, what are all the paths that lead to the dependency\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.peers=ge.Boolean(\"--peers\",!1,{description:\"Also print the peer dependencies that match the specified name\"});this.package=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=W.parseIdent(this.package).identHash,u=this.recursive?lgt(o,n,{configuration:r,peers:this.peers}):agt(o,n,{configuration:r,peers:this.peers});$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};n0.paths=[[\"why\"]],n0.usage=nt.Usage({description:\"display the reason why a package is needed\",details:`\n      This command prints the exact reasons why a package appears in the dependency tree.\n\n      If \\`-R,--recursive\\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named \"Foo\" when looking for \"Bar\", it means that \"Foo\" already got printed higher in the tree.\n    `,examples:[[\"Explain why lodash is used in your project\",\"$0 why lodash\"]]});function agt(t,e,{configuration:r,peers:o}){let a=je.sortMap(t.storedPackages.values(),A=>W.stringifyLocator(A)),n={},u={children:n};for(let A of a){let p={};for(let E of A.dependencies.values()){if(!o&&A.peerDependencies.has(E.identHash))continue;let I=t.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(\"Assertion failed: The resolution should have been registered\");let v=t.storedPackages.get(I);if(!v)throw new Error(\"Assertion failed: The package should have been registered\");if(v.identHash!==e)continue;{let C=W.stringifyLocator(A);n[C]={value:[A,de.Type.LOCATOR],children:p}}let b=W.stringifyLocator(v);p[b]={value:[{descriptor:E,locator:v},de.Type.DEPENDENT]}}}return u}function lgt(t,e,{configuration:r,peers:o}){let a=je.sortMap(t.workspaces,v=>W.stringifyLocator(v.anchoredLocator)),n=new Set,u=new Set,A=v=>{if(n.has(v.locatorHash))return u.has(v.locatorHash);if(n.add(v.locatorHash),v.identHash===e)return u.add(v.locatorHash),!0;let b=!1;v.identHash===e&&(b=!0);for(let C of v.dependencies.values()){if(!o&&v.peerDependencies.has(C.identHash))continue;let T=t.storedResolutions.get(C.descriptorHash);if(!T)throw new Error(\"Assertion failed: The resolution should have been registered\");let L=t.storedPackages.get(T);if(!L)throw new Error(\"Assertion failed: The package should have been registered\");A(L)&&(b=!0)}return b&&u.add(v.locatorHash),b};for(let v of a)A(v.anchoredPackage);let p=new Set,h={},E={children:h},I=(v,b,C)=>{if(!u.has(v.locatorHash))return;let T=C!==null?de.tuple(de.Type.DEPENDENT,{locator:v,descriptor:C}):de.tuple(de.Type.LOCATOR,v),L={},U={value:T,children:L},J=W.stringifyLocator(v);if(b[J]=U,!p.has(v.locatorHash)&&(p.add(v.locatorHash),!(C!==null&&t.tryWorkspaceByLocator(v))))for(let te of v.dependencies.values()){if(!o&&v.peerDependencies.has(te.identHash))continue;let le=t.storedResolutions.get(te.descriptorHash);if(!le)throw new Error(\"Assertion failed: The resolution should have been registered\");let pe=t.storedPackages.get(le);if(!pe)throw new Error(\"Assertion failed: The package should have been registered\");I(pe,L,te)}};for(let v of a)I(v.anchoredPackage,h,null);return E}Ye();var eH={};Kt(eH,{GitFetcher:()=>C2,GitResolver:()=>w2,default:()=>bgt,gitUtils:()=>ra});Ye();Pt();var ra={};Kt(ra,{TreeishProtocols:()=>E2,clone:()=>$8,fetchBase:()=>Qde,fetchChangedFiles:()=>Fde,fetchChangedWorkspaces:()=>Sgt,fetchRoot:()=>kde,isGitUrl:()=>EC,lsRemote:()=>bde,normalizeLocator:()=>Pgt,normalizeRepoUrl:()=>mC,resolveUrl:()=>Z8,splitRepoUrl:()=>i0,validateRepoUrl:()=>X8});Ye();Pt();qt();var Pde=$e(Bde()),Sde=$e(EU()),yC=$e(Be(\"querystring\")),J8=$e(zn());function K8(t,e,r){let o=t.indexOf(r);return t.lastIndexOf(e,o>-1?o:1/0)}function vde(t){try{return new URL(t)}catch{return}}function vgt(t){let e=K8(t,\"@\",\"#\"),r=K8(t,\":\",\"#\");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),K8(t,\":\",\"#\")===-1&&t.indexOf(\"//\")===-1&&(t=`ssh://${t}`),t}function Dde(t){return vde(t)||vde(vgt(t))}function mC(t,{git:e=!1}={}){if(t=t.replace(/^git\\+https:/,\"https:\"),t=t.replace(/^(?:github:|https:\\/\\/github\\.com\\/|git:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\\.git)?(#.*)?$/,\"https://github.com/$1/$2.git$3\"),t=t.replace(/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/,\"https://github.com/$1/$2.git#$3\"),e){let r=Dde(t);r&&(t=r.href),t=t.replace(/^git\\+([^:]+):/,\"$1:\")}return t}function xde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||\"ssh\"} -o BatchMode=yes`}}var Dgt=[/^ssh:/,/^git(?:\\+[^:]+)?:/,/^(?:git\\+)?https?:[^#]+\\/[^#]+(?:\\.git)(?:#.*)?$/,/^git@[^#]+\\/[^#]+\\.git(?:#.*)?$/,/^(?:github:|https:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z._0-9-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\\.git)?(?:#.*)?$/,/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/],E2=(a=>(a.Commit=\"commit\",a.Head=\"head\",a.Tag=\"tag\",a.Semver=\"semver\",a))(E2||{});function EC(t){return t?Dgt.some(e=>!!t.match(e)):!1}function i0(t){t=mC(t);let e=t.indexOf(\"#\");if(e===-1)return{repo:t,treeish:{protocol:\"head\",request:\"HEAD\"},extra:{}};let r=t.slice(0,e),o=t.slice(e+1);if(o.match(/^[a-z]+=/)){let a=yC.default.parse(o);for(let[p,h]of Object.entries(a))if(typeof h!=\"string\")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(E2).find(p=>Object.hasOwn(a,p)),[u,A]=typeof n<\"u\"?[n,a[n]]:[\"head\",\"HEAD\"];for(let p of Object.values(E2))delete a[p];return{repo:r,treeish:{protocol:u,request:A},extra:a}}else{let a=o.indexOf(\":\"),[n,u]=a===-1?[null,o]:[o.slice(0,a),o.slice(a+1)];return{repo:r,treeish:{protocol:n,request:u},extra:{}}}}function Pgt(t){return W.makeLocator(t,mC(t.reference))}function X8(t,{configuration:e}){let r=mC(t,{git:!0});if(!rn.getNetworkSettings(`https://${(0,Pde.default)(r).resource}`,{configuration:e}).enableNetwork)throw new zt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function bde(t,e){let r=X8(t,{configuration:e}),o=await z8(\"listing refs\",[\"ls-remote\",r],{cwd:e.startingCwd,env:xde()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\\t([^\\n]+)/gm,u;for(;(u=n.exec(o.stdout))!==null;)a.set(u[2],u[1]);return a}async function Z8(t,e){let{repo:r,treeish:{protocol:o,request:a},extra:n}=i0(t),u=await bde(r,e),A=(h,E)=>{switch(h){case\"commit\":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error(\"Invalid commit hash\");return yC.default.stringify({...n,commit:E})}case\"head\":{let I=u.get(E===\"HEAD\"?E:`refs/heads/${E}`);if(typeof I>\"u\")throw new Error(`Unknown head (\"${E}\")`);return yC.default.stringify({...n,commit:I})}case\"tag\":{let I=u.get(`refs/tags/${E}`);if(typeof I>\"u\")throw new Error(`Unknown tag (\"${E}\")`);return yC.default.stringify({...n,commit:I})}case\"semver\":{let I=kr.validRange(E);if(!I)throw new Error(`Invalid range (\"${E}\")`);let v=new Map([...u.entries()].filter(([C])=>C.startsWith(\"refs/tags/\")).map(([C,T])=>[J8.default.parse(C.slice(10)),T]).filter(C=>C[0]!==null)),b=J8.default.maxSatisfying([...v.keys()],I);if(b===null)throw new Error(`No matching range (\"${E}\")`);return yC.default.stringify({...n,commit:v.get(b)})}case null:{let I;if((I=p(\"commit\",E))!==null||(I=p(\"tag\",E))!==null||(I=p(\"head\",E))!==null)return I;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol (\"${h}\")`)}},p=(h,E)=>{try{return A(h,E)}catch{return null}};return mC(`${r}#${A(o,a)}`)}async function $8(t,e){return await e.getLimit(\"cloneConcurrency\")(async()=>{let{repo:r,treeish:{protocol:o,request:a}}=i0(t);if(o!==\"commit\")throw new Error(\"Invalid treeish protocol when cloning\");let n=X8(r,{configuration:e}),u=await oe.mktempPromise(),A={cwd:u,env:xde()};return await z8(\"cloning the repository\",[\"clone\",\"-c core.autocrlf=false\",n,ue.fromPortablePath(u)],A,{configuration:e,normalizedRepoUrl:n}),await z8(\"switching branch\",[\"checkout\",`${a}`],A,{configuration:e,normalizedRepoUrl:n}),u})}async function kde(t){let e,r=t;do{if(e=r,await oe.existsPromise(K.join(e,\".git\")))return e;r=K.dirname(e)}while(r!==e);return null}async function Qde(t,{baseRefs:e}){if(e.length===0)throw new it(\"Can't run this command with zero base refs specified.\");let r=[];for(let A of e){let{code:p}=await Ur.execvp(\"git\",[\"merge-base\",A,\"HEAD\"],{cwd:t});p===0&&r.push(A)}if(r.length===0)throw new it(`No ancestor could be found between any of HEAD and ${e.join(\", \")}`);let{stdout:o}=await Ur.execvp(\"git\",[\"merge-base\",\"HEAD\",...r],{cwd:t,strict:!0}),a=o.trim(),{stdout:n}=await Ur.execvp(\"git\",[\"show\",\"--quiet\",\"--pretty=format:%s\",a],{cwd:t,strict:!0}),u=n.trim();return{hash:a,title:u}}async function Fde(t,{base:e,project:r}){let o=je.buildIgnorePattern(r.configuration.get(\"changesetIgnorePatterns\")),{stdout:a}=await Ur.execvp(\"git\",[\"diff\",\"--name-only\",`${e}`],{cwd:t,strict:!0}),n=a.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>K.resolve(t,ue.toPortablePath(h))),{stdout:u}=await Ur.execvp(\"git\",[\"ls-files\",\"--others\",\"--exclude-standard\"],{cwd:t,strict:!0}),A=u.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>K.resolve(t,ue.toPortablePath(h))),p=[...new Set([...n,...A].sort())];return o?p.filter(h=>!K.relative(r.cwd,h).match(o)):p}async function Sgt({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new it(\"This command can only be run from within a Yarn project\");let r=[K.resolve(e.cwd,dr.lockfile),K.resolve(e.cwd,e.configuration.get(\"cacheFolder\")),K.resolve(e.cwd,e.configuration.get(\"installStatePath\")),K.resolve(e.cwd,e.configuration.get(\"virtualFolder\"))];await e.configuration.triggerHook(u=>u.populateYarnPaths,e,u=>{u!=null&&r.push(u)});let o=await kde(e.configuration.projectCwd);if(o==null)throw new it(\"This command can only be run on Git repositories\");let a=await Qde(o,{baseRefs:typeof t==\"string\"?[t]:e.configuration.get(\"changesetBaseRefs\")}),n=await Fde(o,{base:a.hash,project:e});return new Set(je.mapAndFilter(n,u=>{let A=e.tryWorkspaceByFilePath(u);return A===null?je.mapAndFilter.skip:r.some(p=>u.startsWith(p))?je.mapAndFilter.skip:A}))}async function z8(t,e,r,{configuration:o,normalizedRepoUrl:a}){try{return await Ur.execvp(\"git\",e,{...r,strict:!0})}catch(n){if(!(n instanceof Ur.ExecError))throw n;let u=n.reportExtra,A=n.stderr.toString();throw new zt(1,`Failed ${t}`,p=>{p.reportError(1,`  ${de.prettyField(o,{label:\"Repository URL\",value:de.tuple(de.Type.URL,a)})}`);for(let h of A.matchAll(/^(.+?): (.*)$/gm)){let[,E,I]=h;E=E.toLowerCase();let v=E===\"error\"?\"Error\":`${(0,Sde.default)(E)} Error`;p.reportError(1,`  ${de.prettyField(o,{label:v,value:de.tuple(de.Type.NO_HINT,I)})}`)}u?.(p)})}}var C2=class{supports(e,r){return EC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,o);let n={...r,checksums:a},u=await this.downloadHosted(e,n);if(u!==null)return u;let[A,p,h]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(e,n),...r.cacheOptions});return{packageFs:A,releaseFs:p,prefixPath:W.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(o=>o.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let o=await $8(e.reference,r.project.configuration),a=i0(e.reference),n=K.join(o,\"package.tgz\");await un.prepareExternalProject(o,n,{configuration:r.project.configuration,report:r.report,workspace:a.extra.workspace,locator:e});let u=await oe.readFilePromise(n);return await je.releaseAfterUseAsync(async()=>await Xi.convertToZip(u,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1}))}};Ye();Ye();var w2=class{supportsDescriptor(e,r){return EC(e.range)}supportsLocator(e,r){return EC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=await Z8(e.range,o.project.configuration);return[W.makeLocator(e,a)]}async getSatisfying(e,r,o,a){let n=i0(e.range);return{locators:o.filter(A=>{if(A.identHash!==e.identHash)return!1;let p=i0(A.reference);return!(n.repo!==p.repo||n.treeish.protocol===\"commit\"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Mt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var xgt={configuration:{changesetBaseRefs:{description:\"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.\",type:\"STRING\",isArray:!0,isNullable:!1,default:[\"master\",\"origin/master\",\"upstream/master\",\"main\",\"origin/main\",\"upstream/main\"]},changesetIgnorePatterns:{description:\"Array of glob patterns; files matching them will be ignored when fetching the changed files\",type:\"STRING\",default:[],isArray:!0},cloneConcurrency:{description:\"Maximal number of concurrent clones\",type:\"NUMBER\",default:2}},fetchers:[C2],resolvers:[w2]};var bgt=xgt;qt();var s0=class extends ut{constructor(){super(...arguments);this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Find packages via dependencies/devDependencies instead of using the workspaces field\"});this.noPrivate=ge.Boolean(\"--no-private\",{description:\"Exclude workspaces that have the private field set to true\"});this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also return the cross-dependencies between workspaces\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let u=this.since?await ra.fetchChangedWorkspaces({ref:this.since,project:o}):o.workspaces,A=new Set(u);if(this.recursive)for(let p of[...u].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)A.add(h);for(let p of A){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let I=new Set,v=new Set;for(let b of Mt.hardDependencies)for(let[C,T]of h.getForScope(b)){let L=o.tryWorkspaceByDescriptor(T);L===null?o.workspacesByIdent.has(C)&&v.add(T):I.add(L)}E={workspaceDependencies:Array.from(I).map(b=>b.relativeCwd),mismatchedWorkspaceDependencies:Array.from(v).map(b=>W.stringifyDescriptor(b))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?W.stringifyIdent(h.name):null,...E})}})).exitCode()}};s0.paths=[[\"workspaces\",\"list\"]],s0.usage=nt.Usage({category:\"Workspace-related commands\",description:\"list all available workspaces\",details:\"\\n      This command will print the list of all workspaces in the project.\\n\\n      - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\\n\\n      - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\\n    \"});Ye();Ye();qt();var o0=class extends ut{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=o.workspaces,u=new Map(n.map(p=>[W.stringifyIdent(p.anchoredLocator),p])),A=u.get(this.workspaceName);if(A===void 0){let p=Array.from(u.keys()).sort();throw new it(`Workspace '${this.workspaceName}' not found. Did you mean any of the following:\n  - ${p.join(`\n  - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:A.cwd})}};o0.paths=[[\"workspace\"]],o0.usage=nt.Usage({category:\"Workspace-related commands\",description:\"run a command within the specified workspace\",details:`\n      This command will run a given sub-command on a single workspace.\n    `,examples:[[\"Add a package to a single workspace\",\"yarn workspace components add -D react\"],[\"Run build script on a single workspace\",\"yarn workspace components run build\"]]});var kgt={configuration:{enableImmutableInstalls:{description:\"If true (the default on CI), prevents the install command from modifying the lockfile\",type:\"BOOLEAN\",default:Tde.isCI},defaultSemverRangePrefix:{description:\"The default save prefix: '^', '~' or ''\",type:\"STRING\",values:[\"^\",\"~\",\"\"],default:\"^\"},preferReuse:{description:\"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.\",type:\"BOOLEAN\",default:!1}},commands:[Qh,Fh,Th,Rh,t0,Vh,Uh,s0,Wd,Vd,dC,Kd,bh,kh,Nh,Lh,Mh,Oh,_h,Hh,jh,qh,r0,Gh,Yh,Jh,Kh,zh,Wh,Xh,Zh,$h,zd,e0,Kf,n0,o0]},Qgt=kgt;var oH={};Kt(oH,{default:()=>Tgt});Ye();var kt={optional:!0},rH=[[\"@tailwindcss/aspect-ratio@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@tailwindcss/line-clamp@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0\",{peerDependencies:{postcss:\"^8.0.0\"}}],[\"@samverschueren/stream-to-observable@<0.3.1\",{peerDependenciesMeta:{rxjs:kt,zenObservable:kt}}],[\"any-observable@<0.5.1\",{peerDependenciesMeta:{rxjs:kt,zenObservable:kt}}],[\"@pm2/agent@<1.0.4\",{dependencies:{debug:\"*\"}}],[\"debug@<4.2.0\",{peerDependenciesMeta:{[\"supports-color\"]:kt}}],[\"got@<11\",{dependencies:{[\"@types/responselike\"]:\"^1.0.0\",[\"@types/keyv\"]:\"^3.1.1\"}}],[\"cacheable-lookup@<4.1.2\",{dependencies:{[\"@types/keyv\"]:\"^3.1.1\"}}],[\"http-link-dataloader@*\",{peerDependencies:{graphql:\"^0.13.1 || ^14.0.0\"}}],[\"typescript-language-server@*\",{dependencies:{[\"vscode-jsonrpc\"]:\"^5.0.1\",[\"vscode-languageserver-protocol\"]:\"^3.15.0\"}}],[\"postcss-syntax@*\",{peerDependenciesMeta:{[\"postcss-html\"]:kt,[\"postcss-jsx\"]:kt,[\"postcss-less\"]:kt,[\"postcss-markdown\"]:kt,[\"postcss-scss\"]:kt}}],[\"jss-plugin-rule-value-function@<=10.1.1\",{dependencies:{[\"tiny-warning\"]:\"^1.0.2\"}}],[\"ink-select-input@<4.1.0\",{peerDependencies:{react:\"^16.8.2\"}}],[\"license-webpack-plugin@<2.3.18\",{peerDependenciesMeta:{webpack:kt}}],[\"snowpack@>=3.3.0\",{dependencies:{[\"node-gyp\"]:\"^7.1.0\"}}],[\"promise-inflight@*\",{peerDependenciesMeta:{bluebird:kt}}],[\"reactcss@*\",{peerDependencies:{react:\"*\"}}],[\"react-color@<=2.19.0\",{peerDependencies:{react:\"*\"}}],[\"gatsby-plugin-i18n@*\",{dependencies:{ramda:\"^0.24.1\"}}],[\"useragent@^2.0.0\",{dependencies:{request:\"^2.88.0\",yamlparser:\"0.0.x\",semver:\"5.5.x\"}}],[\"@apollographql/apollo-tools@<=0.5.2\",{peerDependencies:{graphql:\"^14.2.1 || ^15.0.0\"}}],[\"material-table@^2.0.0\",{dependencies:{\"@babel/runtime\":\"^7.11.2\"}}],[\"@babel/parser@*\",{dependencies:{\"@babel/types\":\"^7.8.3\"}}],[\"fork-ts-checker-webpack-plugin@<=6.3.4\",{peerDependencies:{eslint:\">= 6\",typescript:\">= 2.7\",webpack:\">= 4\",\"vue-template-compiler\":\"*\"},peerDependenciesMeta:{eslint:kt,\"vue-template-compiler\":kt}}],[\"rc-animate@<=3.1.1\",{peerDependencies:{react:\">=16.9.0\",\"react-dom\":\">=16.9.0\"}}],[\"react-bootstrap-table2-paginator@*\",{dependencies:{classnames:\"^2.2.6\"}}],[\"react-draggable@<=4.4.3\",{peerDependencies:{react:\">= 16.3.0\",\"react-dom\":\">= 16.3.0\"}}],[\"apollo-upload-client@<14\",{peerDependencies:{graphql:\"14 - 15\"}}],[\"react-instantsearch-core@<=6.7.0\",{peerDependencies:{algoliasearch:\">= 3.1 < 5\"}}],[\"react-instantsearch-dom@<=6.7.0\",{dependencies:{\"react-fast-compare\":\"^3.0.0\"}}],[\"ws@<7.2.1\",{peerDependencies:{bufferutil:\"^4.0.1\",\"utf-8-validate\":\"^5.0.2\"},peerDependenciesMeta:{bufferutil:kt,\"utf-8-validate\":kt}}],[\"react-portal@<4.2.2\",{peerDependencies:{\"react-dom\":\"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0\"}}],[\"react-scripts@<=4.0.1\",{peerDependencies:{react:\"*\"}}],[\"testcafe@<=1.10.1\",{dependencies:{\"@babel/plugin-transform-for-of\":\"^7.12.1\",\"@babel/runtime\":\"^7.12.5\"}}],[\"testcafe-legacy-api@<=4.2.0\",{dependencies:{\"testcafe-hammerhead\":\"^17.0.1\",\"read-file-relative\":\"^1.2.0\"}}],[\"@google-cloud/firestore@<=4.9.3\",{dependencies:{protobufjs:\"^6.8.6\"}}],[\"gatsby-source-apiserver@*\",{dependencies:{[\"babel-polyfill\"]:\"^6.26.0\"}}],[\"@webpack-cli/package-utils@<=1.0.1-alpha.4\",{dependencies:{[\"cross-spawn\"]:\"^7.0.3\"}}],[\"gatsby-remark-prismjs@<3.3.28\",{dependencies:{lodash:\"^4\"}}],[\"gatsby-plugin-favicon@*\",{peerDependencies:{webpack:\"*\"}}],[\"gatsby-plugin-sharp@<=4.6.0-next.3\",{dependencies:{debug:\"^4.3.1\"}}],[\"gatsby-react-router-scroll@<=5.6.0-next.0\",{dependencies:{[\"prop-types\"]:\"^15.7.2\"}}],[\"@rebass/forms@*\",{dependencies:{[\"@styled-system/should-forward-prop\"]:\"^5.0.0\"},peerDependencies:{react:\"^16.8.6\"}}],[\"rebass@*\",{peerDependencies:{react:\"^16.8.6\"}}],[\"@ant-design/react-slick@<=0.28.3\",{peerDependencies:{react:\">=16.0.0\"}}],[\"mqtt@<4.2.7\",{dependencies:{duplexify:\"^4.1.1\"}}],[\"vue-cli-plugin-vuetify@<=2.0.3\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":kt,\"vuetify-loader\":kt}}],[\"vue-cli-plugin-vuetify@<=2.0.4\",{dependencies:{\"null-loader\":\"^3.0.0\"}}],[\"vue-cli-plugin-vuetify@>=2.4.3\",{peerDependencies:{vue:\"*\"}}],[\"@vuetify/cli-plugin-utils@<=0.0.4\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":kt}}],[\"@vue/cli-plugin-typescript@<=5.0.0-alpha.0\",{dependencies:{\"babel-loader\":\"^8.1.0\"}}],[\"@vue/cli-plugin-typescript@<=5.0.0-beta.0\",{dependencies:{\"@babel/core\":\"^7.12.16\"},peerDependencies:{\"vue-template-compiler\":\"^2.0.0\"},peerDependenciesMeta:{\"vue-template-compiler\":kt}}],[\"cordova-ios@<=6.3.0\",{dependencies:{underscore:\"^1.9.2\"}}],[\"cordova-lib@<=10.0.1\",{dependencies:{underscore:\"^1.9.2\"}}],[\"git-node-fs@*\",{peerDependencies:{\"js-git\":\"^0.7.8\"},peerDependenciesMeta:{\"js-git\":kt}}],[\"consolidate@<0.16.0\",{peerDependencies:{mustache:\"^3.0.0\"},peerDependenciesMeta:{mustache:kt}}],[\"consolidate@<=0.16.0\",{peerDependencies:{velocityjs:\"^2.0.1\",tinyliquid:\"^0.2.34\",\"liquid-node\":\"^3.0.1\",jade:\"^1.11.0\",\"then-jade\":\"*\",dust:\"^0.3.0\",\"dustjs-helpers\":\"^1.7.4\",\"dustjs-linkedin\":\"^2.7.5\",swig:\"^1.4.2\",\"swig-templates\":\"^2.0.3\",\"razor-tmpl\":\"^1.3.1\",atpl:\">=0.7.6\",liquor:\"^0.0.5\",twig:\"^1.15.2\",ejs:\"^3.1.5\",eco:\"^1.1.0-rc-3\",jazz:\"^0.0.18\",jqtpl:\"~1.1.0\",hamljs:\"^0.6.2\",hamlet:\"^0.3.3\",whiskers:\"^0.4.0\",\"haml-coffee\":\"^1.14.1\",\"hogan.js\":\"^3.0.2\",templayed:\">=0.2.3\",handlebars:\"^4.7.6\",underscore:\"^1.11.0\",lodash:\"^4.17.20\",pug:\"^3.0.0\",\"then-pug\":\"*\",qejs:\"^3.0.5\",walrus:\"^0.10.1\",mustache:\"^4.0.1\",just:\"^0.1.8\",ect:\"^0.5.9\",mote:\"^0.2.0\",toffee:\"^0.3.6\",dot:\"^1.1.3\",\"bracket-template\":\"^1.1.5\",ractive:\"^1.3.12\",nunjucks:\"^3.2.2\",htmling:\"^0.0.8\",\"babel-core\":\"^6.26.3\",plates:\"~0.4.11\",\"react-dom\":\"^16.13.1\",react:\"^16.13.1\",\"arc-templates\":\"^0.5.3\",vash:\"^0.13.0\",slm:\"^2.0.0\",marko:\"^3.14.4\",teacup:\"^2.0.0\",\"coffee-script\":\"^1.12.7\",squirrelly:\"^5.1.0\",twing:\"^5.0.2\"},peerDependenciesMeta:{velocityjs:kt,tinyliquid:kt,\"liquid-node\":kt,jade:kt,\"then-jade\":kt,dust:kt,\"dustjs-helpers\":kt,\"dustjs-linkedin\":kt,swig:kt,\"swig-templates\":kt,\"razor-tmpl\":kt,atpl:kt,liquor:kt,twig:kt,ejs:kt,eco:kt,jazz:kt,jqtpl:kt,hamljs:kt,hamlet:kt,whiskers:kt,\"haml-coffee\":kt,\"hogan.js\":kt,templayed:kt,handlebars:kt,underscore:kt,lodash:kt,pug:kt,\"then-pug\":kt,qejs:kt,walrus:kt,mustache:kt,just:kt,ect:kt,mote:kt,toffee:kt,dot:kt,\"bracket-template\":kt,ractive:kt,nunjucks:kt,htmling:kt,\"babel-core\":kt,plates:kt,\"react-dom\":kt,react:kt,\"arc-templates\":kt,vash:kt,slm:kt,marko:kt,teacup:kt,\"coffee-script\":kt,squirrelly:kt,twing:kt}}],[\"vue-loader@<=16.3.3\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",webpack:\"^4.1.0 || ^5.0.0-0\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":kt}}],[\"vue-loader@^16.7.0\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",vue:\"^3.2.13\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":kt,vue:kt}}],[\"scss-parser@<=1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"query-ast@<1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"redux-thunk@<=2.3.0\",{peerDependencies:{redux:\"^4.0.0\"}}],[\"skypack@<=0.3.2\",{dependencies:{tar:\"^6.1.0\"}}],[\"@npmcli/metavuln-calculator@<2.0.0\",{dependencies:{\"json-parse-even-better-errors\":\"^2.3.1\"}}],[\"bin-links@<2.3.0\",{dependencies:{\"mkdirp-infer-owner\":\"^1.0.2\"}}],[\"rollup-plugin-polyfill-node@<=0.8.0\",{peerDependencies:{rollup:\"^1.20.0 || ^2.0.0\"}}],[\"snowpack@<3.8.6\",{dependencies:{\"magic-string\":\"^0.25.7\"}}],[\"elm-webpack-loader@*\",{dependencies:{temp:\"^0.9.4\"}}],[\"winston-transport@<=4.4.0\",{dependencies:{logform:\"^2.2.0\"}}],[\"jest-vue-preprocessor@*\",{dependencies:{\"@babel/core\":\"7.8.7\",\"@babel/template\":\"7.8.6\"},peerDependencies:{pug:\"^2.0.4\"},peerDependenciesMeta:{pug:kt}}],[\"redux-persist@*\",{peerDependencies:{react:\">=16\"},peerDependenciesMeta:{react:kt}}],[\"sodium@>=3\",{dependencies:{\"node-gyp\":\"^3.8.0\"}}],[\"babel-plugin-graphql-tag@<=3.1.0\",{peerDependencies:{graphql:\"^14.0.0 || ^15.0.0\"}}],[\"@playwright/test@<=1.14.1\",{dependencies:{\"jest-matcher-utils\":\"^26.4.2\"}}],...[\"babel-plugin-remove-graphql-queries@<3.14.0-next.1\",\"babel-preset-gatsby-package@<1.14.0-next.1\",\"create-gatsby@<1.14.0-next.1\",\"gatsby-admin@<0.24.0-next.1\",\"gatsby-cli@<3.14.0-next.1\",\"gatsby-core-utils@<2.14.0-next.1\",\"gatsby-design-tokens@<3.14.0-next.1\",\"gatsby-legacy-polyfills@<1.14.0-next.1\",\"gatsby-plugin-benchmark-reporting@<1.14.0-next.1\",\"gatsby-plugin-graphql-config@<0.23.0-next.1\",\"gatsby-plugin-image@<1.14.0-next.1\",\"gatsby-plugin-mdx@<2.14.0-next.1\",\"gatsby-plugin-netlify-cms@<5.14.0-next.1\",\"gatsby-plugin-no-sourcemaps@<3.14.0-next.1\",\"gatsby-plugin-page-creator@<3.14.0-next.1\",\"gatsby-plugin-preact@<5.14.0-next.1\",\"gatsby-plugin-preload-fonts@<2.14.0-next.1\",\"gatsby-plugin-schema-snapshot@<2.14.0-next.1\",\"gatsby-plugin-styletron@<6.14.0-next.1\",\"gatsby-plugin-subfont@<3.14.0-next.1\",\"gatsby-plugin-utils@<1.14.0-next.1\",\"gatsby-recipes@<0.25.0-next.1\",\"gatsby-source-shopify@<5.6.0-next.1\",\"gatsby-source-wikipedia@<3.14.0-next.1\",\"gatsby-transformer-screenshot@<3.14.0-next.1\",\"gatsby-worker@<0.5.0-next.1\"].map(t=>[t,{dependencies:{\"@babel/runtime\":\"^7.14.8\"}}]),[\"gatsby-core-utils@<2.14.0-next.1\",{dependencies:{got:\"8.3.2\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.1.0-next.0\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.2.0-next.1\",{peerDependencies:{webpack:\"*\"}}],[\"babel-plugin-remove-graphql-queries@<=3.14.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.8.0-next.1\"}}],[\"gatsby-plugin-netlify@3.13.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"clipanion-v3-codemod@<=0.2.0\",{peerDependencies:{jscodeshift:\"^0.11.0\"}}],[\"react-live@*\",{peerDependencies:{\"react-dom\":\"*\",react:\"*\"}}],[\"webpack@<4.44.1\",{peerDependenciesMeta:{\"webpack-cli\":kt,\"webpack-command\":kt}}],[\"webpack@<5.0.0-beta.23\",{peerDependenciesMeta:{\"webpack-cli\":kt}}],[\"webpack-dev-server@<3.10.2\",{peerDependenciesMeta:{\"webpack-cli\":kt}}],[\"@docusaurus/responsive-loader@<1.5.0\",{peerDependenciesMeta:{sharp:kt,jimp:kt}}],[\"eslint-module-utils@*\",{peerDependenciesMeta:{\"eslint-import-resolver-node\":kt,\"eslint-import-resolver-typescript\":kt,\"eslint-import-resolver-webpack\":kt,\"@typescript-eslint/parser\":kt}}],[\"eslint-plugin-import@*\",{peerDependenciesMeta:{\"@typescript-eslint/parser\":kt}}],[\"critters-webpack-plugin@<3.0.2\",{peerDependenciesMeta:{\"html-webpack-plugin\":kt}}],[\"terser@<=5.10.0\",{dependencies:{acorn:\"^8.5.0\"}}],[\"babel-preset-react-app@10.0.x\",{dependencies:{\"@babel/plugin-proposal-private-property-in-object\":\"^7.16.0\"}}],[\"eslint-config-react-app@*\",{peerDependenciesMeta:{typescript:kt}}],[\"@vue/eslint-config-typescript@<11.0.0\",{peerDependenciesMeta:{typescript:kt}}],[\"unplugin-vue2-script-setup@<0.9.1\",{peerDependencies:{\"@vue/composition-api\":\"^1.4.3\",\"@vue/runtime-dom\":\"^3.2.26\"}}],[\"@cypress/snapshot@*\",{dependencies:{debug:\"^3.2.7\"}}],[\"auto-relay@<=0.14.0\",{peerDependencies:{\"reflect-metadata\":\"^0.1.13\"}}],[\"vue-template-babel-compiler@<1.2.0\",{peerDependencies:{[\"vue-template-compiler\"]:\"^2.6.0\"}}],[\"@parcel/transformer-image@<2.5.0\",{peerDependencies:{[\"@parcel/core\"]:\"*\"}}],[\"@parcel/transformer-js@<2.5.0\",{peerDependencies:{[\"@parcel/core\"]:\"*\"}}],[\"parcel@*\",{peerDependenciesMeta:{[\"@parcel/core\"]:kt}}],[\"react-scripts@*\",{peerDependencies:{eslint:\"*\"}}],[\"focus-trap-react@^8.0.0\",{dependencies:{tabbable:\"^5.3.2\"}}],[\"react-rnd@<10.3.7\",{peerDependencies:{react:\">=16.3.0\",\"react-dom\":\">=16.3.0\"}}],[\"connect-mongo@*\",{peerDependencies:{\"express-session\":\"^1.17.1\"}}],[\"vue-i18n@<9\",{peerDependencies:{vue:\"^2\"}}],[\"vue-router@<4\",{peerDependencies:{vue:\"^2\"}}],[\"unified@<10\",{dependencies:{\"@types/unist\":\"^2.0.0\"}}],[\"react-github-btn@<=1.3.0\",{peerDependencies:{react:\">=16.3.0\"}}],[\"react-dev-utils@*\",{peerDependencies:{typescript:\">=2.7\",webpack:\">=4\"},peerDependenciesMeta:{typescript:kt}}],[\"@asyncapi/react-component@<=1.0.0-next.39\",{peerDependencies:{react:\">=16.8.0\",\"react-dom\":\">=16.8.0\"}}],[\"xo@*\",{peerDependencies:{webpack:\">=1.11.0\"},peerDependenciesMeta:{webpack:kt}}],[\"babel-plugin-remove-graphql-queries@<=4.20.0-next.0\",{dependencies:{\"@babel/types\":\"^7.15.4\"}}],[\"gatsby-plugin-page-creator@<=4.20.0-next.1\",{dependencies:{\"fs-extra\":\"^10.1.0\"}}],[\"gatsby-plugin-utils@<=3.14.0-next.1\",{dependencies:{fastq:\"^1.13.0\"},peerDependencies:{graphql:\"^15.0.0\"}}],[\"gatsby-plugin-mdx@<3.1.0-next.1\",{dependencies:{mkdirp:\"^1.0.4\"}}],[\"gatsby-plugin-mdx@^2\",{peerDependencies:{gatsby:\"^3.0.0-next\"}}],[\"fdir@<=5.2.0\",{peerDependencies:{picomatch:\"2.x\"},peerDependenciesMeta:{picomatch:kt}}],[\"babel-plugin-transform-typescript-metadata@<=0.3.2\",{peerDependencies:{\"@babel/core\":\"^7\",\"@babel/traverse\":\"^7\"},peerDependenciesMeta:{\"@babel/traverse\":kt}}],[\"graphql-compose@>=9.0.10\",{peerDependencies:{graphql:\"^14.2.0 || ^15.0.0 || ^16.0.0\"}}]];var nH;function Rde(){return typeof nH>\"u\"&&(nH=Be(\"zlib\").brotliDecompressSync(Buffer.from(\"G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==\",\"base64\")).toString()),nH}var iH;function Nde(){return typeof iH>\"u\"&&(iH=Be(\"zlib\").brotliDecompressSync(Buffer.from(\"G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=\",\"base64\")).toString()),iH}var sH;function Lde(){return typeof sH>\"u\"&&(sH=Be(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),sH}var Mde=new Map([[W.makeIdent(null,\"fsevents\").identHash,Rde],[W.makeIdent(null,\"resolve\").identHash,Nde],[W.makeIdent(null,\"typescript\").identHash,Lde]]),Fgt={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,o]of rH)e(W.parseDescriptor(r,!0),o)},getBuiltinPatch:async(t,e)=>{let r=\"compat/\";if(!e.startsWith(r))return;let o=W.parseIdent(e.slice(r.length)),a=Mde.get(o.identHash)?.();return typeof a<\"u\"?a:null},reduceDependency:async(t,e,r,o)=>typeof Mde.get(t.identHash)>\"u\"?t:W.makeDescriptor(t,W.makeRange({protocol:\"patch:\",source:W.stringifyDescriptor(t),selector:`optional!builtin<compat/${W.stringifyIdent(t)}>`,params:null}))}},Tgt=Fgt;var BH={};Kt(BH,{ConstraintsCheckCommand:()=>p0,ConstraintsQueryCommand:()=>A0,ConstraintsSourceCommand:()=>f0,default:()=>odt});Ye();Ye();B2();var wC=class{constructor(e){this.project=e}createEnvironment(){let e=new CC([\"cwd\",\"ident\"]),r=new CC([\"workspace\",\"type\",\"ident\"]),o=new CC([\"ident\"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,u=new Map;for(let A of this.project.storedPackages.values()){let p=Array.from(A.peerDependencies.values(),h=>[W.stringifyIdent(h),h.range]);n.set(A.locatorHash,{workspace:null,ident:W.stringifyIdent(A),version:A.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional===!0))})}for(let A of this.project.storedPackages.values()){let p=n.get(A.locatorHash);p.dependencies=new Map(Array.from(A.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let I=n.get(E);if(typeof I>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");return[W.stringifyIdent(h),I]})),p.dependencies.delete(p.ident)}for(let A of this.project.workspaces){let p=W.stringifyIdent(A.anchoredLocator),h=A.manifest.exportTo({}),E=n.get(A.anchoredLocator.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let I=(T,L,{caller:U=Ji.getCaller()}={})=>{let J=I2(T),te=je.getMapWithDefault(a.manifestUpdates,A.cwd),le=je.getMapWithDefault(te,J),pe=je.getSetWithDefault(le,L);U!==null&&pe.add(U)},v=T=>I(T,void 0,{caller:Ji.getCaller()}),b=T=>{je.getArrayWithDefault(a.reportedErrors,A.cwd).push(T)},C=e.insert({cwd:A.relativeCwd,ident:p,manifest:h,pkg:E,set:I,unset:v,error:b});u.set(A,C);for(let T of Mt.allDependencies)for(let L of A.manifest[T].values()){let U=W.stringifyIdent(L),J=()=>{I([T,U],void 0,{caller:Ji.getCaller()})},te=pe=>{I([T,U],pe,{caller:Ji.getCaller()})},le=null;if(T!==\"peerDependencies\"&&(T!==\"dependencies\"||!A.manifest.devDependencies.has(L.identHash))){let pe=A.anchoredPackage.dependencies.get(L.identHash);if(pe){if(typeof pe>\"u\")throw new Error(\"Assertion failed: The dependency should have been registered\");let Ae=this.project.storedResolutions.get(pe.descriptorHash);if(typeof Ae>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let ye=n.get(Ae);if(typeof ye>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");le=ye}}r.insert({workspace:C,ident:U,range:L.range,type:T,resolution:le,update:te,delete:J,error:b})}}for(let A of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(A);if(!p)continue;let h=u.get(p);if(typeof h>\"u\")throw new Error(\"Assertion failed: The workspace should have been registered\");let E=n.get(A.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");E.workspace=h}return{workspaces:e,dependencies:r,packages:o,result:a}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependency:a=>e.dependencies.find(a)[0]??null,dependencies:a=>e.dependencies.find(a),package:a=>e.packages.find(a)[0]??null,packages:a=>e.packages.find(a)}},o=await this.project.loadUserConfig();return o?.constraints?(await o.constraints(r),e.result):null}};Ye();Ye();qt();var A0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.query=ge.String()}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),S2)),o=await Ve.find(this.context.cwd,this.context.plugins),{project:a}=await St.find(o,this.context.cwd),n=await r.find(a),u=this.query;return u.endsWith(\".\")||(u=`${u}.`),(await Nt.start({configuration:o,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(u)){let E=Array.from(Object.entries(h)),I=E.length,v=E.reduce((b,[C])=>Math.max(b,C.length),0);for(let b=0;b<I;b++){let[C,T]=E[b];p.reportInfo(null,`${idt(b,I)}${C.padEnd(v,\" \")} = ${ndt(T)}`)}p.reportJson(h)}})).exitCode()}};A0.paths=[[\"constraints\",\"query\"]],A0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"query the constraints fact database\",details:`\n      This command will output all matches to the given prolog query.\n    `,examples:[[\"List all dependencies throughout the workspace\",\"yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'\"]]});function ndt(t){return typeof t!=\"string\"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function idt(t,e){let r=t===0,o=t===e-1;return r&&o?\"\":r?\"\\u250C \":o?\"\\u2514 \":\"\\u2502 \"}Ye();qt();var f0=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also print the fact database automatically compiled from the workspace manifests\"})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),S2)),o=await Ve.find(this.context.cwd,this.context.plugins),{project:a}=await St.find(o,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};f0.paths=[[\"constraints\",\"source\"]],f0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"print the source code for the constraints\",details:\"\\n      This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\\n    \",examples:[[\"Prints the source code\",\"yarn constraints source\"],[\"Print the source code and the fact database\",\"yarn constraints source -v\"]]});Ye();Ye();qt();B2();var p0=class extends ut{constructor(){super(...arguments);this.fix=ge.Boolean(\"--fix\",!1,{description:\"Attempt to automatically fix unambiguous issues, following a multi-pass process\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);await o.restoreInstallState();let a=await o.loadUserConfig(),n;if(a?.constraints)n=new wC(o);else{let{Constraints:h}=await Promise.resolve().then(()=>(x2(),S2));n=await h.find(o)}let u,A=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:I,remainingErrors:v}=mk(o,E,{fix:this.fix}),b=[];for(let[C,T]of I){let L=C.manifest.indent;C.manifest=new Mt,C.manifest.indent=L,C.manifest.load(T),b.push(C.persistManifest())}if(await Promise.all(b),!(I.size>0&&h>1)){u=Gde(v,{configuration:r}),A=!1,p=!0;for(let[,C]of v)for(let T of C)T.fixable?A=!0:p=!1}}if(u.children.length===0)return 0;if(A){let h=p?`Those errors can all be fixed by running ${de.pretty(r,\"yarn constraints --fix\",de.Type.CODE)}`:`Errors prefixed by '\\u2699' can be fixed by running ${de.pretty(r,\"yarn constraints --fix\",de.Type.CODE)}`;await Nt.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return u.children=je.sortMap(u.children,h=>h.value[1]),$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};p0.paths=[[\"constraints\"]],p0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"check that the project constraints are met\",details:`\n      This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code.\n\n      If the \\`--fix\\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution.\n\n      For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints.\n    `,examples:[[\"Check that all constraints are satisfied\",\"yarn constraints\"],[\"Autofix all unmet constraints\",\"yarn constraints --fix\"]]});B2();var sdt={configuration:{enableConstraintsChecks:{description:\"If true, constraints will run during installs\",type:\"BOOLEAN\",default:!1},constraintsPath:{description:\"The path of the constraints file.\",type:\"ABSOLUTE_PATH\",default:\"./constraints.pro\"}},commands:[A0,f0,p0],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get(\"enableConstraintsChecks\"))return;let r=await t.loadUserConfig(),o;if(r?.constraints)o=new wC(t);else{let{Constraints:u}=await Promise.resolve().then(()=>(x2(),S2));o=await u.find(t)}let a=await o.process();if(!a)return;let{remainingErrors:n}=mk(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[u,A]of n)for(let p of A)e(84,`${de.pretty(t.configuration,u.anchoredLocator,de.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${de.pretty(t.configuration,\"yarn constraints\",de.Type.CODE)} for more details`)}}},odt=sdt;var vH={};Kt(vH,{CreateCommand:()=>em,DlxCommand:()=>h0,default:()=>ldt});Ye();qt();var em=class extends ut{constructor(){super(...arguments);this.pkg=ge.String(\"-p,--package\",{description:\"The package to run the provided command from\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}async execute(){let r=[];this.pkg&&r.push(\"--package\",this.pkg),this.quiet&&r.push(\"--quiet\");let o=this.command.replace(/^(@[^@/]+)(@|$)/,\"$1/create$2\"),a=W.parseDescriptor(o),n=a.name.match(/^create(-|$)/)?a:a.scope?W.makeIdent(a.scope,`create-${a.name}`):W.makeIdent(null,`create-${a.name}`),u=W.stringifyIdent(n);return a.range!==\"unknown\"&&(u+=`@${a.range}`),this.cli.run([\"dlx\",...r,u,...this.args])}};em.paths=[[\"create\"]];Ye();Ye();Pt();qt();var h0=class extends ut{constructor(){super(...arguments);this.packages=ge.Array(\"-p,--package\",{description:\"The package(s) to install before running the command\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}async execute(){return Ve.telemetry=null,await oe.mktempPromise(async r=>{let o=K.join(r,`dlx-${process.pid}`);await oe.mkdirPromise(o),await oe.writeFilePromise(K.join(o,\"package.json\"),`{}\n`),await oe.writeFilePromise(K.join(o,\"yarn.lock\"),\"\");let a=K.join(o,\".yarnrc.yml\"),n=await Ve.findProjectCwd(this.context.cwd),A={enableGlobalCache:!(await Ve.find(this.context.cwd,null,{strict:!1})).get(\"enableGlobalCache\"),enableTelemetry:!1,logFilters:[{code:Wu(68),level:de.LogLevel.Discard}]},p=n!==null?K.join(n,\".yarnrc.yml\"):null;p!==null&&oe.existsSync(p)?(await oe.copyFilePromise(p,a),await Ve.updateConfiguration(o,L=>{let U=je.toMerged(L,A);return Array.isArray(L.plugins)&&(U.plugins=L.plugins.map(J=>{let te=typeof J==\"string\"?J:J.path,le=ue.isAbsolute(te)?te:ue.resolve(ue.fromPortablePath(n),te);return typeof J==\"string\"?le:{path:le,spec:J.spec}})),U})):await oe.writeJsonPromise(a,A);let h=this.packages??[this.command],E=W.parseDescriptor(this.command).name,I=await this.cli.run([\"add\",\"--fixed\",\"--\",...h],{cwd:o,quiet:this.quiet});if(I!==0)return I;this.quiet||this.context.stdout.write(`\n`);let v=await Ve.find(o,this.context.plugins),{project:b,workspace:C}=await St.find(v,o);if(C===null)throw new rr(b.cwd,o);await b.restoreInstallState();let T=await un.getWorkspaceAccessibleBinaries(C);return T.has(E)===!1&&T.size===1&&typeof this.packages>\"u\"&&(E=Array.from(T)[0][0]),await un.executeWorkspaceAccessibleBinary(C,E,this.args,{packageAccessibleBinaries:T,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};h0.paths=[[\"dlx\"]],h0.usage=nt.Usage({description:\"run a package in a temporary environment\",details:\"\\n      This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\\n\\n      By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\\n\\n      Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\\n    \",examples:[[\"Use create-react-app to create a new React app\",\"yarn dlx create-react-app ./my-app\"],[\"Install multiple packages for a single command\",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e \"console.log('hello!')\"`]]});var adt={commands:[em,h0]},ldt=adt;var SH={};Kt(SH,{ExecFetcher:()=>k2,ExecResolver:()=>Q2,default:()=>Adt,execUtils:()=>wk});Ye();Ye();Pt();var fA=\"exec:\";var wk={};Kt(wk,{loadGeneratorFile:()=>b2,makeLocator:()=>PH,makeSpec:()=>dme,parseSpec:()=>DH});Ye();Pt();function DH(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?W.parseLocator(e.locator):null,path:o}}function dme({parentLocator:t,path:e,generatorHash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function PH(t,{parentLocator:e,path:r,generatorHash:o,protocol:a}){return W.makeLocator(t,dme({parentLocator:e,path:r,generatorHash:o,protocol:a}))}async function b2(t,e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(t,{protocol:e}),n=K.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:K.relative(Bt.root,n.localPath)}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=K.join(u.prefixPath,a);return await A.readFilePromise(p,\"utf8\")}var k2=class{supports(e,r){return!!e.reference.startsWith(fA)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:fA});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){let o=await b2(e.reference,fA,r);return oe.mktempPromise(async a=>{let n=K.join(a,\"generator.js\");return await oe.writeFilePromise(n,o),oe.mktempPromise(async u=>{if(await this.generatePackage(u,e,n,r),!oe.existsSync(K.join(u,\"build\")))throw new Error(\"The script should have generated a build directory\");return await Xi.makeArchiveFromDirectory(K.join(u,\"build\"),{prefixPath:W.getIdentVendorPath(e),compressionLevel:r.project.configuration.get(\"compressionLevel\")})})})}async generatePackage(e,r,o,a){return await oe.mktempPromise(async n=>{let u=await un.makeScriptEnv({project:a.project,binFolder:n}),A=K.join(e,\"runtime.js\");return await oe.mktempPromise(async p=>{let h=K.join(p,\"buildfile.log\"),E=K.join(e,\"generator\"),I=K.join(e,\"build\");await oe.mkdirPromise(E),await oe.mkdirPromise(I);let v={tempDir:ue.fromPortablePath(E),buildDir:ue.fromPortablePath(I),locator:W.stringifyLocator(r)};await oe.writeFilePromise(A,`\n          // Expose 'Module' as a global variable\n          Object.defineProperty(global, 'Module', {\n            get: () => require('module'),\n            configurable: true,\n            enumerable: false,\n          });\n\n          // Expose non-hidden built-in modules as global variables\n          for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) {\n            Object.defineProperty(global, name, {\n              get: () => require(name),\n              configurable: true,\n              enumerable: false,\n            });\n          }\n\n          // Expose the 'execEnv' global variable\n          Object.defineProperty(global, 'execEnv', {\n            value: {\n              ...${JSON.stringify(v)},\n            },\n            enumerable: true,\n          });\n        `);let b=u.NODE_OPTIONS||\"\",C=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g;b=b.replace(C,\" \").trim(),u.NODE_OPTIONS=b;let{stdout:T,stderr:L}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${W.stringifyLocator(r)})\n`,prefix:W.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await Ur.pipevp(process.execPath,[\"--require\",ue.fromPortablePath(A),ue.fromPortablePath(o),W.stringifyIdent(r)],{cwd:e,env:u,stdin:null,stdout:T,stderr:L});if(U!==0)throw oe.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${de.pretty(a.project.configuration,h,de.Type.PATH)})`)})})}};Ye();Ye();var cdt=2,Q2=class{supportsDescriptor(e,r){return!!e.range.startsWith(fA)}supportsLocator(e,r){return!!e.reference.startsWith(fA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=DH(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=await b2(W.makeRange({protocol:fA,source:a,selector:a,params:{locator:W.stringifyLocator(n)}}),fA,o.fetchOptions),A=wn.makeHash(`${cdt}`,u).slice(0,6);return[PH(e,{parentLocator:n,path:a,generatorHash:A,protocol:fA})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Mt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var udt={fetchers:[k2],resolvers:[Q2]},Adt=udt;var bH={};Kt(bH,{FileFetcher:()=>N2,FileResolver:()=>L2,TarballFileFetcher:()=>M2,TarballFileResolver:()=>O2,default:()=>hdt,fileUtils:()=>tm});Ye();Pt();var DC=/^(?:[a-zA-Z]:[\\\\/]|\\.{0,2}\\/)/,F2=/^[^?]*\\.(?:tar\\.gz|tgz)(?:::.*)?$/,Ui=\"file:\";var tm={};Kt(tm,{fetchArchiveFromLocator:()=>R2,makeArchiveFromLocator:()=>Ik,makeBufferFromLocator:()=>xH,makeLocator:()=>PC,makeSpec:()=>mme,parseSpec:()=>T2});Ye();Pt();function T2(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?W.parseLocator(e.locator):null,path:o}}function mme({parentLocator:t,path:e,hash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function PC(t,{parentLocator:e,path:r,hash:o,protocol:a}){return W.makeLocator(t,mme({parentLocator:e,path:r,hash:o,protocol:a}))}async function R2(t,e){let{parentLocator:r,path:o}=W.parseFileStyleRange(t.reference,{protocol:Ui}),a=K.isAbsolute(o)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new gn(Bt.root),prefixPath:K.relative(Bt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let u=n.packageFs,A=K.join(n.prefixPath,o);return await je.releaseAfterUseAsync(async()=>await u.readFilePromise(A),n.releaseFs)}async function Ik(t,{protocol:e,fetchOptions:r,inMemory:o=!1}){let{parentLocator:a,path:n}=W.parseFileStyleRange(t.reference,{protocol:e}),u=K.isAbsolute(n)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(a,r),A=u.localPath?{packageFs:new gn(Bt.root),prefixPath:K.relative(Bt.root,u.localPath)}:u;u!==A&&u.releaseFs&&u.releaseFs();let p=A.packageFs,h=K.join(A.prefixPath,n);return await je.releaseAfterUseAsync(async()=>await Xi.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:W.getIdentVendorPath(t),compressionLevel:r.project.configuration.get(\"compressionLevel\"),inMemory:o}),A.releaseFs)}async function xH(t,{protocol:e,fetchOptions:r}){return(await Ik(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var N2=class{supports(e,r){return!!e.reference.startsWith(Ui)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:Ui});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){return Ik(e,{protocol:Ui,fetchOptions:r})}};Ye();Ye();var fdt=2,L2=class{supportsDescriptor(e,r){return e.range.match(DC)?!0:!!e.range.startsWith(Ui)}supportsLocator(e,r){return!!e.reference.startsWith(Ui)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return DC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=await xH(W.makeLocator(e,W.makeRange({protocol:Ui,source:a,selector:a,params:{locator:W.stringifyLocator(n)}})),{protocol:Ui,fetchOptions:o.fetchOptions}),A=wn.makeHash(`${fdt}`,u).slice(0,6);return[PC(e,{parentLocator:n,path:a,hash:A,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Mt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ye();var M2=class{supports(e,r){return F2.test(e.reference)?!!e.reference.startsWith(Ui):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromDisk(e,r){let o=await R2(e,r);return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();Ye();var O2=class{supportsDescriptor(e,r){return F2.test(e.range)?!!(e.range.startsWith(Ui)||DC.test(e.range)):!1}supportsLocator(e,r){return F2.test(e.reference)?!!e.reference.startsWith(Ui):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return DC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=PC(e,{parentLocator:n,path:a,hash:\"\",protocol:Ui}),A=await R2(u,o.fetchOptions),p=wn.makeHash(A).slice(0,6);return[PC(e,{parentLocator:n,path:a,hash:p,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Mt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var pdt={fetchers:[M2,N2],resolvers:[O2,L2]},hdt=pdt;var FH={};Kt(FH,{GithubFetcher:()=>U2,default:()=>ddt,githubUtils:()=>Bk});Ye();Pt();var Bk={};Kt(Bk,{invalidGithubUrlMessage:()=>Cme,isGithubUrl:()=>kH,parseGithubUrl:()=>QH});var yme=$e(Be(\"querystring\")),Eme=[/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+)\\/tarball\\/([^/#]+)(?:#(.*))?$/,/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+?)(?:\\.git)?(?:#(.*))?$/];function kH(t){return t?Eme.some(e=>!!t.match(e)):!1}function QH(t){let e;for(let A of Eme)if(e=t.match(A),e)break;if(!e)throw new Error(Cme(t));let[,r,o,a,n=\"master\"]=e,{commit:u}=yme.default.parse(n);return n=u||n.replace(/[^:]*:/,\"\"),{auth:r,username:o,reponame:a,treeish:n}}function Cme(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var U2=class{supports(e,r){return!!kH(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await rn.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await oe.mktempPromise(async a=>{let n=new gn(a);await Xi.extractArchiveTo(o,n,{stripComponents:1});let u=ra.splitRepoUrl(e.reference),A=K.join(a,\"package.tgz\");await un.prepareExternalProject(a,A,{configuration:r.project.configuration,report:r.report,workspace:u.extra.workspace,locator:e});let p=await oe.readFilePromise(A);return await Xi.convertToZip(p,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:o,username:a,reponame:n,treeish:u}=QH(e.reference);return`https://${o?`${o}@`:\"\"}github.com/${a}/${n}/archive/${u}.tar.gz`}};var gdt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let o=new U2;if(!o.supports(e,r))return null;try{return await o.fetch(e,r)}catch{return null}}}},ddt=gdt;var TH={};Kt(TH,{TarballHttpFetcher:()=>H2,TarballHttpResolver:()=>j2,default:()=>ydt});Ye();function _2(t){let e;try{e=new URL(t)}catch{return!1}return!(e.protocol!==\"http:\"&&e.protocol!==\"https:\"||!e.pathname.match(/(\\.tar\\.gz|\\.tgz|\\/[^.]+)$/))}var H2=class{supports(e,r){return _2(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await rn.get(e.reference,{configuration:r.project.configuration});return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();var j2=class{supportsDescriptor(e,r){return _2(e.range)}supportsLocator(e,r){return _2(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[W.convertDescriptorToLocator(e)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Mt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var mdt={fetchers:[H2],resolvers:[j2]},ydt=mdt;var RH={};Kt(RH,{InitCommand:()=>g0,default:()=>Cdt});Ye();Ye();Pt();qt();var g0=class extends ut{constructor(){super(...arguments);this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Initialize a private package\"});this.workspace=ge.Boolean(\"-w,--workspace\",!1,{description:\"Initialize a workspace root with a `packages/` directory\"});this.install=ge.String(\"-i,--install\",!1,{tolerateBoolean:!0,description:\"Initialize a package with a specific bundle that will be locked in the project\"});this.name=ge.String(\"-n,--name\",{description:\"Initialize a package with the given name\"});this.usev2=ge.Boolean(\"-2\",!1,{hidden:!0});this.yes=ge.Boolean(\"-y,--yes\",{hidden:!0})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=typeof this.install==\"string\"?this.install:this.usev2||this.install===!0?\"latest\":null;return o!==null?await this.executeProxy(r,o):await this.executeRegular(r)}async executeProxy(r,o){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new it(\"Cannot use the --install flag from within a project subdirectory\");oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=K.join(this.context.cwd,dr.lockfile);oe.existsSync(a)||await oe.writeFilePromise(a,\"\");let n=await this.cli.run([\"set\",\"version\",o],{quiet:!0});if(n!==0)return n;let u=[];return this.private&&u.push(\"-p\"),this.workspace&&u.push(\"-w\"),this.name&&u.push(`-n=${this.name}`),this.yes&&u.push(\"-y\"),await oe.mktempPromise(async A=>{let{code:p}=await Ur.pipevp(\"yarn\",[\"init\",...u],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await un.makeScriptEnv({binFolder:A})});return p})}async executeRegular(r){let o=null;try{o=(await St.find(r,this.context.cwd)).project}catch{o=null}oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Mt.tryFind(this.context.cwd),n=a??new Mt,u=Object.fromEntries(r.get(\"initFields\").entries());n.load(u),n.name=n.name??W.makeIdent(r.get(\"initScope\"),this.name??K.basename(this.context.cwd)),n.packageManager=tn&&je.isTaggedYarnVersion(tn)?`yarn@${tn}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await oe.mkdirPromise(K.join(this.context.cwd,\"packages\"),{recursive:!0}),n.workspaceDefinitions=[{pattern:\"packages/*\"}]);let A={};n.exportTo(A);let p=K.join(this.context.cwd,Mt.fileName);await oe.changeFilePromise(p,`${JSON.stringify(A,null,2)}\n`,{automaticNewlines:!0});let h=[p],E=K.join(this.context.cwd,\"README.md\");if(oe.existsSync(E)||(await oe.writeFilePromise(E,`# ${W.stringifyIdent(n.name)}\n`),h.push(E)),!o||o.cwd===this.context.cwd){let I=K.join(this.context.cwd,dr.lockfile);oe.existsSync(I)||(await oe.writeFilePromise(I,\"\"),h.push(I));let b=[\".yarn/*\",\"!.yarn/patches\",\"!.yarn/plugins\",\"!.yarn/releases\",\"!.yarn/sdks\",\"!.yarn/versions\",\"\",\"# Swap the comments on the following lines if you wish to use zero-installs\",\"# In that case, don't forget to run `yarn config set enableGlobalCache false`!\",\"# Documentation here: https://yarnpkg.com/features/caching#zero-installs\",\"\",\"#!.yarn/cache\",\".pnp.*\"].map(pe=>`${pe}\n`).join(\"\"),C=K.join(this.context.cwd,\".gitignore\");oe.existsSync(C)||(await oe.writeFilePromise(C,b),h.push(C));let L=[\"/.yarn/**            linguist-vendored\",\"/.yarn/releases/*    binary\",\"/.yarn/plugins/**/*  binary\",\"/.pnp.*              binary linguist-generated\"].map(pe=>`${pe}\n`).join(\"\"),U=K.join(this.context.cwd,\".gitattributes\");oe.existsSync(U)||(await oe.writeFilePromise(U,L),h.push(U));let J={[\"*\"]:{endOfLine:\"lf\",insertFinalNewline:!0},[\"*.{js,json,yml}\"]:{charset:\"utf-8\",indentStyle:\"space\",indentSize:2}};je.mergeIntoTarget(J,r.get(\"initEditorConfig\"));let te=`root = true\n`;for(let[pe,Ae]of Object.entries(J)){te+=`\n[${pe}]\n`;for(let[ye,ae]of Object.entries(Ae)){let we=ye.replace(/[A-Z]/g,Pe=>`_${Pe.toLowerCase()}`);te+=`${we} = ${ae}\n`}}let le=K.join(this.context.cwd,\".editorconfig\");oe.existsSync(le)||(await oe.writeFilePromise(le,te),h.push(le)),await this.cli.run([\"install\"],{quiet:!0}),oe.existsSync(K.join(this.context.cwd,\".git\"))||(await Ur.execvp(\"git\",[\"init\"],{cwd:this.context.cwd}),await Ur.execvp(\"git\",[\"add\",\"--\",...h],{cwd:this.context.cwd}),await Ur.execvp(\"git\",[\"commit\",\"--allow-empty\",\"-m\",\"First commit\"],{cwd:this.context.cwd}))}}};g0.paths=[[\"init\"]],g0.usage=nt.Usage({description:\"create a new package\",details:\"\\n      This command will setup a new package in your local directory.\\n\\n      If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\\n\\n      If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\\n\\n      If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\\n\\n      The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\\n    \",examples:[[\"Create a new package in the local directory\",\"yarn init\"],[\"Create a new private package in the local directory\",\"yarn init -p\"],[\"Create a new package and store the Yarn release inside\",\"yarn init -i=latest\"],[\"Create a new private package and defines it as a workspace root\",\"yarn init -w\"]]});var Edt={configuration:{initScope:{description:\"Scope used when creating packages via the init command\",type:\"STRING\",default:null},initFields:{description:\"Additional fields to set when creating packages via the init command\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}},initEditorConfig:{description:\"Extra rules to define in the generator editorconfig\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}}},commands:[g0]},Cdt=Edt;var Lj={};Kt(Lj,{SearchCommand:()=>C0,UpgradeInteractiveCommand:()=>I0,default:()=>lIt});Ye();var Ime=$e(Be(\"os\"));function SC({stdout:t}){if(Ime.default.endianness()===\"BE\")throw new Error(\"Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures\");if(!t.isTTY)throw new Error(\"Interactive commands can only be used inside a TTY environment\")}qt();var Rye=$e(ZH()),$H={appId:\"OFCNCOG2CU\",apiKey:\"6fe4476ee5a1832882e326b506d14126\",indexName:\"npm-search\"},myt=(0,Rye.default)($H.appId,$H.apiKey).initIndex($H.indexName),e6=async(t,e=0)=>await myt.search(t,{analyticsTags:[\"yarn-plugin-interactive-tools\"],attributesToRetrieve:[\"name\",\"version\",\"owner\",\"repository\",\"humanDownloadsLast30Days\"],page:e,hitsPerPage:10});var HB=[\"regular\",\"dev\",\"peer\"],C0=class extends ut{async execute(){SC(this.context);let{Gem:e}=await Promise.resolve().then(()=>(AQ(),Dj)),{ScrollableItems:r}=await Promise.resolve().then(()=>(gQ(),hQ)),{useKeypress:o}=await Promise.resolve().then(()=>(OB(),Jwe)),{useMinistore:a}=await Promise.resolve().then(()=>(Qj(),kj)),{renderForm:n}=await Promise.resolve().then(()=>(EQ(),yQ)),{default:u}=await Promise.resolve().then(()=>$e(sIe())),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useEffect:E,useState:I}=await Promise.resolve().then(()=>$e(sn())),v=await Ve.find(this.context.cwd,this.context.plugins),b=()=>h.createElement(A,{flexDirection:\"row\"},h.createElement(A,{flexDirection:\"column\",width:48},h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to move between packages.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" to select a package.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" again to change the target.\"))),h.createElement(A,{flexDirection:\"column\"},h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install the selected packages.\")),h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),C=()=>h.createElement(h.Fragment,null,h.createElement(A,{width:15},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Owner\")),h.createElement(A,{width:11},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Version\")),h.createElement(A,{width:10},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Downloads\"))),T=()=>h.createElement(A,{width:17},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Target\")),L=({hit:ae,active:we})=>{let[Pe,g]=a(ae.name,null);o({active:we},(ce,ne)=>{if(ne.name!==\"space\")return;if(!Pe){g(HB[0]);return}let ee=HB.indexOf(Pe)+1;ee===HB.length?g(null):g(HB[ee])},[Pe,g]);let Ee=W.parseIdent(ae.name),De=W.prettyIdent(v,Ee);return h.createElement(A,null,h.createElement(A,{width:45},h.createElement(p,{bold:!0,wrap:\"wrap\"},De)),h.createElement(A,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:\"truncate\"},ae.owner.name)),h.createElement(A,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:\"truncate\"},ae.version)),h.createElement(A,{width:16,marginLeft:1},h.createElement(p,null,ae.humanDownloadsLast30Days)))},U=({name:ae,active:we})=>{let[Pe]=a(ae,null),g=W.parseIdent(ae);return h.createElement(A,null,h.createElement(A,{width:47},h.createElement(p,{bold:!0},\" - \",W.prettyIdent(v,g))),HB.map(Ee=>h.createElement(A,{key:Ee,width:14,marginLeft:1},h.createElement(p,null,\" \",h.createElement(e,{active:Pe===Ee}),\" \",h.createElement(p,{bold:!0},Ee)))))},J=()=>h.createElement(A,{marginTop:1},h.createElement(p,null,\"Powered by Algolia.\")),le=await n(({useSubmit:ae})=>{let we=a();ae(we);let Pe=Array.from(we.keys()).filter(H=>we.get(H)!==null),[g,Ee]=I(\"\"),[De,ce]=I(0),[ne,ee]=I([]),Ie=H=>{H.match(/\\t| /)||Ee(H)},ke=async()=>{ce(0);let H=await e6(g);H.query===g&&ee(H.hits)},ht=async()=>{let H=await e6(g,De+1);H.query===g&&H.page-1===De&&(ce(H.page),ee([...ne,...H.hits]))};return E(()=>{g?ke():ee([])},[g]),h.createElement(A,{flexDirection:\"column\"},h.createElement(b,null),h.createElement(A,{flexDirection:\"row\",marginTop:1},h.createElement(p,{bold:!0},\"Search: \"),h.createElement(A,{width:41},h.createElement(u,{value:g,onChange:Ie,placeholder:\"i.e. babel, webpack, react...\",showCursor:!1})),h.createElement(C,null)),ne.length?h.createElement(r,{radius:2,loop:!1,children:ne.map(H=>h.createElement(L,{key:H.name,hit:H,active:!1})),willReachEnd:ht}):h.createElement(p,{color:\"gray\"},\"Start typing...\"),h.createElement(A,{flexDirection:\"row\",marginTop:1},h.createElement(A,{width:49},h.createElement(p,{bold:!0},\"Selected:\")),h.createElement(T,null)),Pe.length?Pe.map(H=>h.createElement(U,{key:H,name:H,active:!1})):h.createElement(p,{color:\"gray\"},\"No selected packages...\"),h.createElement(J,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof le>\"u\")return 1;let pe=Array.from(le.keys()).filter(ae=>le.get(ae)===\"regular\"),Ae=Array.from(le.keys()).filter(ae=>le.get(ae)===\"dev\"),ye=Array.from(le.keys()).filter(ae=>le.get(ae)===\"peer\");return pe.length&&await this.cli.run([\"add\",...pe]),Ae.length&&await this.cli.run([\"add\",\"--dev\",...Ae]),ye&&await this.cli.run([\"add\",\"--peer\",...ye]),0}};C0.paths=[[\"search\"]],C0.usage=nt.Usage({category:\"Interactive commands\",description:\"open the search interface\",details:`\n    This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.\n    `,examples:[[\"Open the search window\",\"yarn search\"]]});Ye();qt();w_();var fIe=$e(zn()),AIe=/^((?:[\\^~]|>=?)?)([0-9]+)(\\.[0-9]+)(\\.[0-9]+)((?:-\\S+)?)$/,pIe=(t,e)=>t.length>0?[t.slice(0,e)].concat(pIe(t.slice(e),e)):[],I0=class extends ut{async execute(){SC(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(uIe(),cIe)),{Pad:r}=await Promise.resolve().then(()=>(Nj(),lIe)),{ScrollableItems:o}=await Promise.resolve().then(()=>(gQ(),hQ)),{useMinistore:a}=await Promise.resolve().then(()=>(Qj(),kj)),{renderForm:n}=await Promise.resolve().then(()=>(EQ(),yQ)),{Box:u,Text:A}=await Promise.resolve().then(()=>$e(ic())),{default:p,useEffect:h,useRef:E,useState:I}=await Promise.resolve().then(()=>$e(sn())),v=await Ve.find(this.context.cwd,this.context.plugins),{project:b,workspace:C}=await St.find(v,this.context.cwd),T=await Lr.find(v);if(!C)throw new rr(b.cwd,this.context.cwd);await b.restoreInstallState({restoreResolutions:!1});let L=this.context.stdout.rows-7,U=(Ee,De)=>{let ce=fpe(Ee,De),ne=\"\";for(let ee of ce)ee.added?ne+=de.pretty(v,ee.value,\"green\"):ee.removed||(ne+=ee.value);return ne},J=(Ee,De)=>{if(Ee===De)return De;let ce=W.parseRange(Ee),ne=W.parseRange(De),ee=ce.selector.match(AIe),Ie=ne.selector.match(AIe);if(!ee||!Ie)return U(Ee,De);let ke=[\"gray\",\"red\",\"yellow\",\"green\",\"magenta\"],ht=null,H=\"\";for(let lt=1;lt<ke.length;++lt)ht!==null||ee[lt]!==Ie[lt]?(ht===null&&(ht=ke[lt-1]),H+=de.pretty(v,Ie[lt],ht)):H+=Ie[lt];return H},te=async(Ee,De,ce)=>{let ne=await zc.fetchDescriptorFrom(Ee,ce,{project:b,cache:T,preserveModifier:De,workspace:C});return ne!==null?ne.range:Ee.range},le=async Ee=>{let De=fIe.default.valid(Ee.range)?`^${Ee.range}`:Ee.range,[ce,ne]=await Promise.all([te(Ee,Ee.range,De).catch(()=>null),te(Ee,Ee.range,\"latest\").catch(()=>null)]),ee=[{value:null,label:Ee.range}];return ce&&ce!==Ee.range?ee.push({value:ce,label:J(Ee.range,ce)}):ee.push({value:null,label:\"\"}),ne&&ne!==ce&&ne!==Ee.range?ee.push({value:ne,label:J(Ee.range,ne)}):ee.push({value:null,label:\"\"}),ee},pe=()=>p.createElement(u,{flexDirection:\"row\"},p.createElement(u,{flexDirection:\"column\",width:49},p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select packages.\")),p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select versions.\"))),p.createElement(u,{flexDirection:\"column\"},p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install.\")),p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),Ae=()=>p.createElement(u,{flexDirection:\"row\",paddingTop:1,paddingBottom:1},p.createElement(u,{width:50},p.createElement(A,{bold:!0},p.createElement(A,{color:\"greenBright\"},\"?\"),\" Pick the packages you want to upgrade.\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Current\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Range\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Latest\"))),ye=({active:Ee,descriptor:De,suggestions:ce})=>{let[ne,ee]=a(De.descriptorHash,null),Ie=W.stringifyIdent(De),ke=Math.max(0,45-Ie.length);return p.createElement(p.Fragment,null,p.createElement(u,null,p.createElement(u,{width:45},p.createElement(A,{bold:!0},W.prettyIdent(v,De)),p.createElement(r,{active:Ee,length:ke})),p.createElement(e,{active:Ee,options:ce,value:ne,skewer:!0,onChange:ee,sizes:[17,17,17]})))},ae=({dependencies:Ee})=>{let[De,ce]=I(Ee.map(()=>null)),ne=E(!0),ee=async Ie=>{let ke=await le(Ie);return ke.filter(ht=>ht.label!==\"\").length<=1?null:{descriptor:Ie,suggestions:ke}};return h(()=>()=>{ne.current=!1},[]),h(()=>{let Ie=Math.trunc(L*1.75),ke=Ee.slice(0,Ie),ht=Ee.slice(Ie),H=pIe(ht,L),lt=ke.map(ee).reduce(async(Re,Qe)=>{await Re;let be=await Qe;be!==null&&(!ne.current||ce(_e=>{let Te=_e.findIndex(He=>He===null),Je=[..._e];return Je[Te]=be,Je}))},Promise.resolve());H.reduce((Re,Qe)=>Promise.all(Qe.map(be=>Promise.resolve().then(()=>ee(be)))).then(async be=>{be=be.filter(_e=>_e!==null),await Re,ne.current&&ce(_e=>{let Te=_e.findIndex(Je=>Je===null);return _e.slice(0,Te).concat(be).concat(_e.slice(Te+be.length))})}),lt).then(()=>{ne.current&&ce(Re=>Re.filter(Qe=>Qe!==null))})},[]),De.length?p.createElement(o,{radius:L>>1,children:De.map((Ie,ke)=>Ie!==null?p.createElement(ye,{key:ke,active:!1,descriptor:Ie.descriptor,suggestions:Ie.suggestions}):p.createElement(A,{key:ke},\"Loading...\"))}):p.createElement(A,null,\"No upgrades found\")},Pe=await n(({useSubmit:Ee})=>{Ee(a());let De=new Map;for(let ne of b.workspaces)for(let ee of[\"dependencies\",\"devDependencies\"])for(let Ie of ne.manifest[ee].values())b.tryWorkspaceByDescriptor(Ie)===null&&(Ie.range.startsWith(\"link:\")||De.set(Ie.descriptorHash,Ie));let ce=je.sortMap(De.values(),ne=>W.stringifyDescriptor(ne));return p.createElement(u,{flexDirection:\"column\"},p.createElement(pe,null),p.createElement(Ae,null),p.createElement(ae,{dependencies:ce}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Pe>\"u\")return 1;let g=!1;for(let Ee of b.workspaces)for(let De of[\"dependencies\",\"devDependencies\"]){let ce=Ee.manifest[De];for(let ne of ce.values()){let ee=Pe.get(ne.descriptorHash);typeof ee<\"u\"&&ee!==null&&(ce.set(ne.identHash,W.makeDescriptor(ne,ee)),g=!0)}}return g?await b.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:T}):0}};I0.paths=[[\"upgrade-interactive\"]],I0.usage=nt.Usage({category:\"Interactive commands\",description:\"open the upgrade interface\",details:`\n      This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n    `,examples:[[\"Open the upgrade window\",\"yarn upgrade-interactive\"]]});var aIt={commands:[C0,I0]},lIt=aIt;var Mj={};Kt(Mj,{LinkFetcher:()=>qB,LinkResolver:()=>GB,PortalFetcher:()=>YB,PortalResolver:()=>WB,default:()=>uIt});Ye();Pt();var ep=\"portal:\",tp=\"link:\";var qB=class{supports(e,r){return!!e.reference.startsWith(tp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp}),n=K.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:K.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=K.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0}}};Ye();Pt();var GB=class{supportsDescriptor(e,r){return!!e.range.startsWith(tp)}supportsLocator(e,r){return!!e.reference.startsWith(tp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(tp.length);return[W.makeLocator(e,`${tp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:\"0.0.0\",languageName:r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ye();Pt();var YB=class{supports(e,r){return!!e.reference.startsWith(ep)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:ep});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:K.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:ep}),n=K.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:K.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=K.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot}}};Ye();Ye();Pt();var WB=class{supportsDescriptor(e,r){return!!e.range.startsWith(ep)}supportsLocator(e,r){return!!e.reference.startsWith(ep)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(ep.length);return[W.makeLocator(e,`${ep}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Mt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var cIt={fetchers:[qB,YB],resolvers:[GB,WB]},uIt=cIt;var Cq={};Kt(Cq,{NodeModulesLinker:()=>lv,NodeModulesMode:()=>dq,PnpLooseLinker:()=>cv,default:()=>P1t});Pt();Ye();Pt();Pt();var Uj=(t,e)=>`${t}@${e}`,hIe=(t,e)=>{let r=e.indexOf(\"#\"),o=r>=0?e.substring(r+1):e;return Uj(t,o)};var mIe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),o=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:o,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},u;n.debugLevel>=0&&(u=Date.now());let A=mIt(t,n),p=!1,h=0;do p=_j(A,[A],new Set([A.locator]),new Map,n).anotherRoundNeeded,n.fastLookupPossible=!1,h++;while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-u}ms, rounds: ${h}`),n.debugLevel>=1){let E=VB(A);if(_j(A,[A],new Set([A.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree:\n${E}, next tree:\n${VB(A)}`);let v=yIe(A);if(v)throw new Error(`${v}, after hoisting finished:\n${VB(A)}`)}return n.debugLevel>=2&&console.log(VB(A)),yIt(A)},AIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=n=>{if(!o.has(n)){o.add(n);for(let u of n.hoistedDependencies.values())r.set(u.name,u);for(let u of n.dependencies.values())n.peerNames.has(u.name)||a(u)}};return a(e),r},fIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=new Set,n=(u,A)=>{if(o.has(u))return;o.add(u);for(let h of u.hoistedDependencies.values())if(!A.has(h.name)){let E;for(let I of t)E=I.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of u.dependencies.values())p.add(h.name);for(let h of u.dependencies.values())u.peerNames.has(h.name)||n(h,p)};return n(e,a),r},gIe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:o,ident:a,locator:n,dependencies:u,originalDependencies:A,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:I,hoistPriority:v,dependencyKind:b,hoistedFrom:C,hoistedTo:T}=e,L={name:r,references:new Set(o),ident:a,locator:n,dependencies:new Map(u),originalDependencies:new Map(A),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:I,hoistPriority:v,dependencyKind:b,hoistedFrom:new Map(C),hoistedTo:new Map(T)},U=L.dependencies.get(r);return U&&U.ident==L.ident&&L.dependencies.set(r,L),t.dependencies.set(L.name,L),L},pIt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let o=Array.from(e.keys());o.sort((a,n)=>{let u=e.get(a),A=e.get(n);return A.hoistPriority!==u.hoistPriority?A.hoistPriority-u.hoistPriority:A.peerDependents.size!==u.peerDependents.size?A.peerDependents.size-u.peerDependents.size:A.dependents.size-u.dependents.size});for(let a of o){let n=a.substring(0,a.indexOf(\"@\",1)),u=a.substring(n.length+1);if(!t.peerNames.has(n)){let A=r.get(n);A||(A=[],r.set(n,A)),A.indexOf(u)<0&&A.push(u)}}return r},Oj=t=>{let e=new Set,r=(o,a=new Set)=>{if(!a.has(o)){a.add(o);for(let n of o.peerNames)if(!t.peerNames.has(n)){let u=t.dependencies.get(n);u&&!e.has(u)&&r(u,a)}e.add(o)}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||r(o);return e},_j=(t,e,r,o,a,n=new Set)=>{let u=e[e.length-1];if(n.has(u))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(u);let A=EIt(u),p=pIt(u,A),h=t==u?new Map:a.fastLookupPossible?AIt(e):fIt(e),E,I=!1,v=!1,b=new Map(Array.from(p.entries()).map(([T,L])=>[T,L[0]])),C=new Map;do{let T=dIt(t,e,r,h,b,p,o,C,a);T.isGraphChanged&&(v=!0),T.anotherRoundNeeded&&(I=!0),E=!1;for(let[L,U]of p)U.length>1&&!u.dependencies.has(L)&&(b.delete(L),U.shift(),b.set(L,U[0]),E=!0)}while(E);for(let T of u.dependencies.values())if(!u.peerNames.has(T.name)&&!r.has(T.locator)){r.add(T.locator);let L=_j(t,[...e,T],r,C,a);L.isGraphChanged&&(v=!0),L.anotherRoundNeeded&&(I=!0),r.delete(T.locator)}return{anotherRoundNeeded:I,isGraphChanged:v}},hIt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},gIt=(t,e,r,o,a,n,u,A,{outputReason:p,fastLookupPossible:h})=>{let E,I=null,v=new Set;p&&(E=`${Array.from(e).map(L=>no(L)).join(\"\\u2192\")}`);let b=r[r.length-1],T=!(o.ident===b.ident);if(p&&!T&&(I=\"- self-reference\"),T&&(T=o.dependencyKind!==1,p&&!T&&(I=\"- workspace\")),T&&o.dependencyKind===2&&(T=!hIt(o),p&&!T&&(I=\"- external soft link with unhoisted dependencies\")),T&&(T=b.dependencyKind!==1||b.hoistedFrom.has(o.name)||e.size===1,p&&!T&&(I=b.reasons.get(o.name))),T&&(T=!t.peerNames.has(o.name),p&&!T&&(I=`- cannot shadow peer: ${no(t.originalDependencies.get(o.name).locator)} at ${E}`)),T){let L=!1,U=a.get(o.name);if(L=!U||U.ident===o.ident,p&&!L&&(I=`- filled by: ${no(U.locator)} at ${E}`),L)for(let J=r.length-1;J>=1;J--){let le=r[J].dependencies.get(o.name);if(le&&le.ident!==o.ident){L=!1;let pe=A.get(b);pe||(pe=new Set,A.set(b,pe)),pe.add(o.name),p&&(I=`- filled by ${no(le.locator)} at ${r.slice(0,J).map(Ae=>no(Ae.locator)).join(\"\\u2192\")}`);break}}T=L}if(T&&(T=n.get(o.name)===o.ident,p&&!T&&(I=`- filled by: ${no(u.get(o.name)[0])} at ${E}`)),T){let L=!0,U=new Set(o.peerNames);for(let J=r.length-1;J>=1;J--){let te=r[J];for(let le of U){if(te.peerNames.has(le)&&te.originalDependencies.has(le))continue;let pe=te.dependencies.get(le);pe&&t.dependencies.get(le)!==pe&&(J===r.length-1?v.add(pe):(v=null,L=!1,p&&(I=`- peer dependency ${no(pe.locator)} from parent ${no(te.locator)} was not hoisted to ${E}`))),U.delete(le)}if(!L)break}T=L}if(T&&!h)for(let L of o.hoistedDependencies.values()){let U=a.get(L.name)||t.dependencies.get(L.name);if(!U||L.ident!==U.ident){T=!1,p&&(I=`- previously hoisted dependency mismatch, needed: ${no(L.locator)}, available: ${no(U?.locator)}`);break}}return v!==null&&v.size>0?{isHoistable:2,dependsOn:v,reason:I}:{isHoistable:T?0:1,reason:I}},CQ=t=>`${t.name}@${t.locator}`,dIt=(t,e,r,o,a,n,u,A,p)=>{let h=e[e.length-1],E=new Set,I=!1,v=!1,b=(U,J,te,le,pe)=>{if(E.has(le))return;let Ae=[...J,CQ(le)],ye=[...te,CQ(le)],ae=new Map,we=new Map;for(let ce of Oj(le)){let ne=gIt(h,r,[h,...U,le],ce,o,a,n,A,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(we.set(ce,ne),ne.isHoistable===2)for(let ee of ne.dependsOn){let Ie=ae.get(ee.name)||new Set;Ie.add(ce.name),ae.set(ee.name,Ie)}}let Pe=new Set,g=(ce,ne,ee)=>{if(!Pe.has(ce)){Pe.add(ce),we.set(ce,{isHoistable:1,reason:ee});for(let Ie of ae.get(ce.name)||[])g(le.dependencies.get(Ie),ne,p.debugLevel>=2?`- peer dependency ${no(ce.locator)} from parent ${no(le.locator)} was not hoisted`:\"\")}};for(let[ce,ne]of we)ne.isHoistable===1&&g(ce,ne,ne.reason);let Ee=!1;for(let ce of we.keys())if(!Pe.has(ce)){v=!0;let ne=u.get(le);ne&&ne.has(ce.name)&&(I=!0),Ee=!0,le.dependencies.delete(ce.name),le.hoistedDependencies.set(ce.name,ce),le.reasons.delete(ce.name);let ee=h.dependencies.get(ce.name);if(p.debugLevel>=2){let Ie=Array.from(J).concat([le.locator]).map(ht=>no(ht)).join(\"\\u2192\"),ke=h.hoistedFrom.get(ce.name);ke||(ke=[],h.hoistedFrom.set(ce.name,ke)),ke.push(Ie),le.hoistedTo.set(ce.name,Array.from(e).map(ht=>no(ht.locator)).join(\"\\u2192\"))}if(!ee)h.ident!==ce.ident&&(h.dependencies.set(ce.name,ce),pe.add(ce));else for(let Ie of ce.references)ee.references.add(Ie)}if(le.dependencyKind===2&&Ee&&(I=!0),p.check){let ce=yIe(t);if(ce)throw new Error(`${ce}, after hoisting dependencies of ${[h,...U,le].map(ne=>no(ne.locator)).join(\"\\u2192\")}:\n${VB(t)}`)}let De=Oj(le);for(let ce of De)if(Pe.has(ce)){let ne=we.get(ce);if((a.get(ce.name)===ce.ident||!le.reasons.has(ce.name))&&ne.isHoistable!==0&&le.reasons.set(ce.name,ne.reason),!ce.isHoistBorder&&ye.indexOf(CQ(ce))<0){E.add(le);let Ie=gIe(le,ce);b([...U,le],Ae,ye,Ie,T),E.delete(le)}}},C,T=new Set(Oj(h)),L=Array.from(e).map(U=>CQ(U));do{C=T,T=new Set;for(let U of C){if(U.locator===h.locator||U.isHoistBorder)continue;let J=gIe(h,U);b([],Array.from(r),L,J,T)}}while(T.size>0);return{anotherRoundNeeded:I,isGraphChanged:v}},yIe=t=>{let e=[],r=new Set,o=new Set,a=(n,u,A)=>{if(r.has(n)||(r.add(n),o.has(n)))return;let p=new Map(u);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),I=()=>`${Array.from(o).concat([n]).map(v=>no(v.locator)).join(\"\\u2192\")}`;if(n.peerNames.has(h.name)){let v=u.get(h.name);(v!==E||!v||v.ident!==h.ident)&&e.push(`${I()} - broken peer promise: expected ${h.ident} but found ${v&&v.ident}`)}else{let v=A.hoistedFrom.get(n.name),b=n.hoistedTo.get(h.name),C=`${v?` hoisted from ${v.join(\", \")}`:\"\"}`,T=`${b?` hoisted to ${b}`:\"\"}`,L=`${I()}${C}`;E?E.ident!==h.ident&&e.push(`${L} - broken require promise for ${h.name}${T}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${L} - broken require promise: no required dependency ${h.name}${T} found`)}}o.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);o.delete(n)};return a(t,t.dependencies,t),e.join(`\n`)},mIt=(t,e)=>{let{identName:r,name:o,reference:a,peerNames:n}=t,u={name:o,references:new Set([a]),locator:Uj(r,a),ident:hIe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},A=new Map([[t,u]]),p=(h,E)=>{let I=A.get(h),v=!!I;if(!I){let{name:b,identName:C,reference:T,peerNames:L,hoistPriority:U,dependencyKind:J}=h,te=e.hoistingLimits.get(E.locator);I={name:b,references:new Set([T]),locator:Uj(C,T),ident:hIe(C,T),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(L),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(b):!1,hoistPriority:U||0,dependencyKind:J||0,hoistedFrom:new Map,hoistedTo:new Map},A.set(h,I)}if(E.dependencies.set(h.name,I),E.originalDependencies.set(h.name,I),v){let b=new Set,C=T=>{if(!b.has(T)){b.add(T),T.decoupled=!1;for(let L of T.dependencies.values())T.peerNames.has(L.name)||C(L)}};C(I)}else for(let b of h.dependencies)p(b,I)};for(let h of t.dependencies)p(h,u);return u},Hj=t=>t.substring(0,t.indexOf(\"@\",1)),yIt=t=>{let e={name:t.name,identName:Hj(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),o=(a,n,u)=>{let A=r.has(a),p;if(n===a)p=u;else{let{name:h,references:E,locator:I}=a;p={name:h,identName:Hj(I),references:E,dependencies:new Set}}if(u.dependencies.add(p),!A){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||o(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())o(a,t,e);return e},EIt=t=>{let e=new Map,r=new Set([t]),o=u=>`${u.name}@${u.ident}`,a=u=>{let A=o(u),p=e.get(A);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(A,p)),p},n=(u,A)=>{let p=!!r.has(A);if(a(A).dependents.add(u.ident),!p){r.add(A);for(let E of A.dependencies.values()){let I=a(E);I.hoistPriority=Math.max(I.hoistPriority,E.hoistPriority),A.peerNames.has(E.name)?I.peerDependents.add(A.ident):n(A,E)}}};for(let u of t.dependencies.values())t.peerNames.has(u.name)||n(t,u);return e},no=t=>{if(!t)return\"none\";let e=t.indexOf(\"@\",1),r=t.substring(0,e);r.endsWith(\"$wsroot$\")&&(r=`wh:${r.replace(\"$wsroot$\",\"\")}`);let o=t.substring(e+1);if(o===\"workspace:.\")return\".\";if(o){let a=(o.indexOf(\"#\")>0?o.split(\"#\")[1]:o).replace(\"npm:\",\"\");return o.startsWith(\"virtual\")&&(r=`v:${r}`),a.startsWith(\"workspace\")&&(r=`w:${r}`,a=\"\"),`${r}${a?`@${a}`:\"\"}`}else return`${r}`},dIe=5e4,VB=t=>{let e=0,r=(a,n,u=\"\")=>{if(e>dIe||n.has(a))return\"\";e++;let A=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p=\"\";n.add(a);for(let h=0;h<A.length;h++){let E=A[h];if(!a.peerNames.has(E.name)&&E!==a){let I=a.reasons.get(E.name),v=Hj(E.locator);p+=`${u}${h<A.length-1?\"\\u251C\\u2500\":\"\\u2514\\u2500\"}${(n.has(E)?\">\":\"\")+(v!==E.name?`a:${E.name}:`:\"\")+no(E.locator)+(I?` ${I}`:\"\")}\n`,p+=r(E,n,`${u}${h<A.length-1?\"\\u2502 \":\"  \"}`)}}return n.delete(a),p};return r(t,new Set)+(e>dIe?`\nTree is too large, part of the tree has been dunped\n`:\"\")};var KB=(o=>(o.WORKSPACES=\"workspaces\",o.DEPENDENCIES=\"dependencies\",o.NONE=\"none\",o))(KB||{}),EIe=\"node_modules\",B0=\"$wsroot$\";var JB=(t,e)=>{let{packageTree:r,hoistingLimits:o,errors:a,preserveSymlinksRequired:n}=wIt(t,e),u=null;if(a.length===0){let A=mIe(r,{hoistingLimits:o});u=BIt(t,A,e)}return{tree:u,errors:a,preserveSymlinksRequired:n}},gA=t=>`${t.name}@${t.reference}`,qj=t=>{let e=new Map;for(let[r,o]of t.entries())if(!o.dirList){let a=e.get(o.locator);a||(a={target:o.target,linkType:o.linkType,locations:[],aliases:o.aliases},e.set(o.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((o,a)=>{let n=o.split(K.delimiter).length,u=a.split(K.delimiter).length;return a===o?0:n!==u?u-n:a>o?1:-1});return e},CIe=(t,e)=>{let r=W.isVirtualLocator(t)?W.devirtualizeLocator(t):t,o=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e;return W.areLocatorsEqual(r,o)},jj=(t,e,r,o)=>{if(t.linkType!==\"SOFT\")return!1;let a=ue.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation);return K.contains(o,a)===null},CIt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");if(t.findPackageLocator(e.packageLocation)===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let o=ue.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},u=t.getDependencyTreeRoots(),A=new Map,p=new Set,h=(v,b)=>{let C=gA(v);if(p.has(C))return;p.add(C);let T=t.getPackageInformation(v);if(T){let L=b?gA(b):\"\";if(gA(v)!==L&&T.linkType===\"SOFT\"&&!jj(T,v,t,o)){let U=wIe(T,v,t);(!A.get(U)||v.reference.startsWith(\"workspace:\"))&&A.set(U,v)}for(let[U,J]of T.packageDependencies)J!==null&&(T.packagePeers.has(U)||h(t.getLocator(U,J),v))}};for(let v of u)h(v,null);let E=o.split(K.sep);for(let v of A.values()){let b=t.getPackageInformation(v),T=ue.toPortablePath(b.packageLocation.slice(0,-1)).split(K.sep).slice(E.length),L=n;for(let U of T){let J=L.children.get(U);J||(J={children:new Map},L.children.set(U,J)),L=J}L.workspaceLocator=v}let I=(v,b)=>{if(v.workspaceLocator){let C=gA(b),T=a.get(C);T||(T=new Set,a.set(C,T)),T.add(v.workspaceLocator)}for(let C of v.children.values())I(C,v.workspaceLocator||b)};for(let v of n.children.values())I(v,n.workspaceLocator);return a},wIt=(t,e)=>{let r=[],o=!1,a=new Map,n=CIt(t),u=t.getPackageInformation(t.topLevel);if(u===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");let A=t.findPackageLocator(u.packageLocation);if(A===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let p=ue.toPortablePath(u.packageLocation.slice(0,-1)),h={name:A.name,identName:A.name,reference:A.reference,peerNames:u.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,I=(b,C)=>`${gA(C)}:${b}`,v=(b,C,T,L,U,J,te,le)=>{let pe=I(b,T),Ae=E.get(pe),ye=!!Ae;!ye&&T.name===A.name&&T.reference===A.reference&&(Ae=h,E.set(pe,h));let ae=jj(C,T,t,p);if(!Ae){let ce=0;ae?ce=2:C.linkType===\"SOFT\"&&T.name.endsWith(B0)&&(ce=1),Ae={name:b,identName:T.name,reference:T.reference,dependencies:new Set,peerNames:ce===1?new Set:C.packagePeers,dependencyKind:ce},E.set(pe,Ae)}let we;if(ae?we=2:U.linkType===\"SOFT\"?we=1:we=0,Ae.hoistPriority=Math.max(Ae.hoistPriority||0,we),le&&!ae){let ce=gA({name:L.identName,reference:L.reference}),ne=a.get(ce)||new Set;a.set(ce,ne),ne.add(Ae.name)}let Pe=new Map(C.packageDependencies);if(e.project){let ce=e.project.workspacesByCwd.get(ue.toPortablePath(C.packageLocation.slice(0,-1)));if(ce){let ne=new Set([...Array.from(ce.manifest.peerDependencies.values(),ee=>W.stringifyIdent(ee)),...Array.from(ce.manifest.peerDependenciesMeta.keys())]);for(let ee of ne)Pe.has(ee)||(Pe.set(ee,J.get(ee)||null),Ae.peerNames.add(ee))}}let g=gA({name:T.name.replace(B0,\"\"),reference:T.reference}),Ee=n.get(g);if(Ee)for(let ce of Ee)Pe.set(`${ce.name}${B0}`,ce.reference);(C!==U||C.linkType!==\"SOFT\"||!ae&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(te)))&&L.dependencies.add(Ae);let De=T!==A&&C.linkType===\"SOFT\"&&!T.name.endsWith(B0)&&!ae;if(!ye&&!De){let ce=new Map;for(let[ne,ee]of Pe)if(ee!==null){let Ie=t.getLocator(ne,ee),ke=t.getLocator(ne.replace(B0,\"\"),ee),ht=t.getPackageInformation(ke);if(ht===null)throw new Error(\"Assertion failed: Expected the package to have been registered\");let H=jj(ht,Ie,t,p);if(e.validateExternalSoftLinks&&e.project&&H){ht.packageDependencies.size>0&&(o=!0);for(let[_e,Te]of ht.packageDependencies)if(Te!==null){let Je=W.parseLocator(Array.isArray(Te)?`${Te[0]}@${Te[1]}`:`${_e}@${Te}`);if(gA(Je)!==gA(Ie)){let He=Pe.get(_e);if(He){let x=W.parseLocator(Array.isArray(He)?`${He[0]}@${He[1]}`:`${_e}@${He}`);CIe(x,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${T.name}@${T.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with parent dependency ${W.prettyLocator(e.project.configuration,x)}`})}else{let x=ce.get(_e);if(x){let w=x.target,S=W.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${_e}@${w}`);CIe(S,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${T.name}@${T.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with dependency ${W.prettyLocator(e.project.configuration,S)} from sibling portal ${W.prettyIdent(e.project.configuration,W.parseIdent(x.portal.name))}`})}else ce.set(_e,{target:Je.reference,portal:Ie})}}}}let lt=e.hoistingLimitsByCwd?.get(te),Re=H?te:K.relative(p,ue.toPortablePath(ht.packageLocation))||Bt.dot,Qe=e.hoistingLimitsByCwd?.get(Re);v(ne,ht,Ie,Ae,C,Pe,Re,lt===\"dependencies\"||Qe===\"dependencies\"||Qe===\"workspaces\")}}};return v(A.name,u,A,h,u,u.packageDependencies,Bt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:o}};function wIe(t,e,r){let o=r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation;return ue.toPortablePath(o||t.packageLocation)}function IIt(t,e,r){let o=e.getLocator(t.name.replace(B0,\"\"),t.reference),a=e.getPackageInformation(o);if(a===null)throw new Error(\"Assertion failed: Expected the package to be registered\");return r.pnpifyFs?{linkType:\"SOFT\",target:ue.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:wIe(a,t,e)}}var BIt=(t,e,r)=>{let o=new Map,a=(E,I,v)=>{let{linkType:b,target:C}=IIt(E,t,r);return{locator:gA(E),nodePath:I,target:C,linkType:b,aliases:v}},n=E=>{let[I,v]=E.split(\"/\");return v?{scope:I,name:v}:{scope:null,name:I}},u=new Set,A=(E,I,v)=>{if(u.has(E))return;u.add(E);let b=Array.from(E.references).sort().join(\"#\");for(let C of E.dependencies){let T=Array.from(C.references).sort().join(\"#\");if(C.identName===E.identName.replace(B0,\"\")&&T===b)continue;let L=Array.from(C.references).sort(),U={name:C.identName,reference:L[0]},{name:J,scope:te}=n(C.name),le=te?[te,J]:[J],pe=K.join(I,EIe),Ae=K.join(pe,...le),ye=`${v}/${U.name}`,ae=a(U,v,L.slice(1)),we=!1;if(ae.linkType===\"SOFT\"&&r.project){let Pe=r.project.workspacesByCwd.get(ae.target.slice(0,-1));we=!!(Pe&&!Pe.manifest.name)}if(!C.name.endsWith(B0)&&!we){let Pe=o.get(Ae);if(Pe){if(Pe.dirList)throw new Error(`Assertion failed: ${Ae} cannot merge dir node with leaf node`);{let De=W.parseLocator(Pe.locator),ce=W.parseLocator(ae.locator);if(Pe.linkType!==ae.linkType)throw new Error(`Assertion failed: ${Ae} cannot merge nodes with different link types ${Pe.nodePath}/${W.stringifyLocator(De)} and ${v}/${W.stringifyLocator(ce)}`);if(De.identHash!==ce.identHash)throw new Error(`Assertion failed: ${Ae} cannot merge nodes with different idents ${Pe.nodePath}/${W.stringifyLocator(De)} and ${v}/s${W.stringifyLocator(ce)}`);ae.aliases=[...ae.aliases,...Pe.aliases,W.parseLocator(Pe.locator).reference]}}o.set(Ae,ae);let g=Ae.split(\"/\"),Ee=g.indexOf(EIe);for(let De=g.length-1;Ee>=0&&De>Ee;De--){let ce=ue.toPortablePath(g.slice(0,De).join(K.sep)),ne=g[De],ee=o.get(ce);if(!ee)o.set(ce,{dirList:new Set([ne])});else if(ee.dirList){if(ee.dirList.has(ne))break;ee.dirList.add(ne)}}}A(C,ae.linkType===\"SOFT\"?ae.target:Ae,ye)}},p=a({name:e.name,reference:Array.from(e.references)[0]},\"\",[]),h=p.target;return o.set(h,p),A(e,h,\"\"),o};Ye();Ye();Pt();Pt();nA();Nl();var lq={};Kt(lq,{PnpInstaller:()=>dm,PnpLinker:()=>P0,UnplugCommand:()=>x0,default:()=>$It,getPnpPath:()=>S0,jsInstallUtils:()=>mA,pnpUtils:()=>av,quotePathIfNeeded:()=>s1e});Pt();var i1e=Be(\"url\");Ye();Ye();Pt();Pt();var IIe={[\"DEFAULT\"]:{collapsed:!1,next:{[\"*\"]:\"DEFAULT\"}},[\"TOP_LEVEL\"]:{collapsed:!1,next:{fallbackExclusionList:\"FALLBACK_EXCLUSION_LIST\",packageRegistryData:\"PACKAGE_REGISTRY_DATA\",[\"*\"]:\"DEFAULT\"}},[\"FALLBACK_EXCLUSION_LIST\"]:{collapsed:!1,next:{[\"*\"]:\"FALLBACK_EXCLUSION_ENTRIES\"}},[\"FALLBACK_EXCLUSION_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"FALLBACK_EXCLUSION_DATA\"}},[\"FALLBACK_EXCLUSION_DATA\"]:{collapsed:!0,next:{[\"*\"]:\"DEFAULT\"}},[\"PACKAGE_REGISTRY_DATA\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_REGISTRY_ENTRIES\"}},[\"PACKAGE_REGISTRY_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"PACKAGE_STORE_DATA\"}},[\"PACKAGE_STORE_DATA\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_STORE_ENTRIES\"}},[\"PACKAGE_STORE_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"PACKAGE_INFORMATION_DATA\"}},[\"PACKAGE_INFORMATION_DATA\"]:{collapsed:!1,next:{packageDependencies:\"PACKAGE_DEPENDENCIES\",[\"*\"]:\"DEFAULT\"}},[\"PACKAGE_DEPENDENCIES\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_DEPENDENCY\"}},[\"PACKAGE_DEPENDENCY\"]:{collapsed:!0,next:{[\"*\"]:\"DEFAULT\"}}};function vIt(t,e,r){let o=\"\";o+=\"[\";for(let a=0,n=t.length;a<n;++a)o+=wQ(String(a),t[a],e,r).replace(/^ +/g,\"\"),a+1<n&&(o+=\", \");return o+=\"]\",o}function DIt(t,e,r){let o=`${r}  `,a=\"\";a+=r,a+=`[\n`;for(let n=0,u=t.length;n<u;++n)a+=o+wQ(String(n),t[n],e,o).replace(/^ +/,\"\"),n+1<u&&(a+=\",\"),a+=`\n`;return a+=r,a+=\"]\",a}function PIt(t,e,r){let o=Object.keys(t),a=\"\";a+=\"{\";for(let n=0,u=o.length,A=0;n<u;++n){let p=o[n],h=t[p];typeof h>\"u\"||(A!==0&&(a+=\", \"),a+=JSON.stringify(p),a+=\": \",a+=wQ(p,h,e,r).replace(/^ +/g,\"\"),A+=1)}return a+=\"}\",a}function SIt(t,e,r){let o=Object.keys(t),a=`${r}  `,n=\"\";n+=r,n+=`{\n`;let u=0;for(let A=0,p=o.length;A<p;++A){let h=o[A],E=t[h];typeof E>\"u\"||(u!==0&&(n+=\",\",n+=`\n`),n+=a,n+=JSON.stringify(h),n+=\": \",n+=wQ(h,E,e,a).replace(/^ +/g,\"\"),u+=1)}return u!==0&&(n+=`\n`),n+=r,n+=\"}\",n}function wQ(t,e,r,o){let{next:a}=IIe[r],n=a[t]||a[\"*\"];return BIe(e,n,o)}function BIe(t,e,r){let{collapsed:o}=IIe[e];return Array.isArray(t)?o?vIt(t,e,r):DIt(t,e,r):typeof t==\"object\"&&t!==null?o?PIt(t,e,r):SIt(t,e,r):JSON.stringify(t)}function vIe(t){return BIe(t,\"TOP_LEVEL\",\"\")}function zB(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function xIt(t){let e=new Map,r=zB(t.fallbackExclusionList||[],[({name:o,reference:a})=>o,({name:o,reference:a})=>a]);for(let{name:o,reference:a}of r){let n=e.get(o);typeof n>\"u\"&&e.set(o,n=new Set),n.add(a)}return Array.from(e).map(([o,a])=>[o,Array.from(a)])}function bIt(t){return zB(t.fallbackPool||[],([e])=>e)}function kIt(t){let e=[];for(let[r,o]of zB(t.packageRegistry,([a])=>a===null?\"0\":`1${a}`)){let a=[];e.push([r,a]);for(let[n,{packageLocation:u,packageDependencies:A,packagePeers:p,linkType:h,discardFromLookup:E}]of zB(o,([I])=>I===null?\"0\":`1${I}`)){let I=[];r!==null&&n!==null&&!A.has(r)&&I.push([r,n]);for(let[C,T]of zB(A.entries(),([L])=>L))I.push([C,T]);let v=p&&p.size>0?Array.from(p):void 0,b=E||void 0;a.push([n,{packageLocation:u,packageDependencies:I,packagePeers:v,linkType:h,discardFromLookup:b}])}}return e}function XB(t){return{__info:[\"This file is automatically generated. Do not touch it, or risk\",\"your modifications being lost.\"],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:xIt(t),fallbackPool:bIt(t),packageRegistryData:kIt(t)}}var SIe=$e(PIe());function xIe(t,e){return[t?`${t}\n`:\"\",`/* eslint-disable */\n`,`\"use strict\";\n`,`\n`,e,`\n`,(0,SIe.default)()].join(\"\")}function QIt(t){return JSON.stringify(t,null,2)}function FIt(t){return`'${t.replace(/\\\\/g,\"\\\\\\\\\").replace(/'/g,\"\\\\'\").replace(/\\n/g,`\\\\\n`)}'`}function TIt(t){return[`const RAW_RUNTIME_STATE =\n`,`${FIt(vIe(t))};\n\n`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function RIt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  const fs = require('fs');\n`,`  const path = require('path');\n`,`  const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(dr.pnpData)});\n`,`  return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function bIe(t){let e=XB(t),r=TIt(e);return xIe(t.shebang,r)}function kIe(t){let e=XB(t),r=RIt(),o=xIe(t.shebang,r);return{dataFile:QIt(e),loaderFile:o}}Pt();function Yj(t,{basePath:e}){let r=ue.toPortablePath(e),o=K.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,u=new Map(t.packageRegistryData.map(([I,v])=>[I,new Map(v.map(([b,C])=>{if(I===null!=(b===null))throw new Error(\"Assertion failed: The name and reference should be null, or neither should\");let T=C.discardFromLookup??!1,L={name:I,reference:b},U=n.get(C.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&T,T||(U.locator=L)):n.set(C.packageLocation,{locator:L,discardFromLookup:T});let J=null;return[b,{packageDependencies:new Map(C.packageDependencies),packagePeers:new Set(C.packagePeers),linkType:C.linkType,discardFromLookup:T,get packageLocation(){return J||(J=K.join(o,C.packageLocation))}}]}))])),A=new Map(t.fallbackExclusionList.map(([I,v])=>[I,new Set(v)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:A,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:u}}Pt();Pt();var rp=Be(\"module\"),gm=Be(\"url\"),tq=Be(\"util\");var Oo=Be(\"url\");var RIe=$e(Be(\"assert\"));var Wj=Array.isArray,ZB=JSON.stringify,$B=Object.getOwnPropertyNames,pm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Vj=(t,e)=>RegExp.prototype.exec.call(t,e),Kj=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),v0=(t,...e)=>String.prototype.endsWith.apply(t,e),Jj=(t,...e)=>String.prototype.includes.apply(t,e),zj=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),ev=(t,...e)=>String.prototype.indexOf.apply(t,e),QIe=(t,...e)=>String.prototype.replace.apply(t,e),D0=(t,...e)=>String.prototype.slice.apply(t,e),dA=(t,...e)=>String.prototype.startsWith.apply(t,e),FIe=Map,TIe=JSON.parse;function tv(t,e,r){return class extends r{constructor(...o){super(e(...o)),this.code=t,this.name=`${r.name} [${t}]`}}}var NIe=tv(\"ERR_PACKAGE_IMPORT_NOT_DEFINED\",(t,e,r)=>`Package import specifier \"${t}\" is not defined${e?` in package ${e}package.json`:\"\"} imported from ${r}`,TypeError),Xj=tv(\"ERR_INVALID_MODULE_SPECIFIER\",(t,e,r=void 0)=>`Invalid module \"${t}\" ${e}${r?` imported from ${r}`:\"\"}`,TypeError),LIe=tv(\"ERR_INVALID_PACKAGE_TARGET\",(t,e,r,o=!1,a=void 0)=>{let n=typeof r==\"string\"&&!o&&r.length&&!dA(r,\"./\");return e===\".\"?((0,RIe.default)(o===!1),`Invalid \"exports\" main target ${ZB(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`):`Invalid \"${o?\"imports\":\"exports\"}\" target ${ZB(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`},Error),rv=tv(\"ERR_INVALID_PACKAGE_CONFIG\",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:\"\"}${r?`. ${r}`:\"\"}`,Error),MIe=tv(\"ERR_PACKAGE_PATH_NOT_EXPORTED\",(t,e,r=void 0)=>e===\".\"?`No \"exports\" main defined in ${t}package.json${r?` imported from ${r}`:\"\"}`:`Package subpath '${e}' is not defined by \"exports\" in ${t}package.json${r?` imported from ${r}`:\"\"}`,Error);var BQ=Be(\"url\");function OIe(t,e){let r=Object.create(null);for(let o=0;o<e.length;o++){let a=e[o];pm(t,a)&&(r[a]=t[a])}return r}var IQ=new FIe;function NIt(t,e,r,o){let a=IQ.get(t);if(a!==void 0)return a;let n=o(t);if(n===void 0){let b={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return IQ.set(t,b),b}let u;try{u=TIe(n)}catch(b){throw new rv(t,(r?`\"${e}\" from `:\"\")+(0,BQ.fileURLToPath)(r||e),b.message)}let{imports:A,main:p,name:h,type:E}=OIe(u,[\"imports\",\"main\",\"name\",\"type\"]),I=pm(u,\"exports\")?u.exports:void 0;(typeof A!=\"object\"||A===null)&&(A=void 0),typeof p!=\"string\"&&(p=void 0),typeof h!=\"string\"&&(h=void 0),E!==\"module\"&&E!==\"commonjs\"&&(E=\"none\");let v={pjsonPath:t,exists:!0,main:p,name:h,type:E,exports:I,imports:A};return IQ.set(t,v),v}function UIe(t,e){let r=new URL(\"./package.json\",t);for(;;){let n=r.pathname;if(v0(n,\"node_modules/package.json\"))break;let u=NIt((0,BQ.fileURLToPath)(r),t,void 0,e);if(u.exists)return u;let A=r;if(r=new URL(\"../package.json\",r),r.pathname===A.pathname)break}let o=(0,BQ.fileURLToPath)(r),a={pjsonPath:o,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return IQ.set(o,a),a}function LIt(t,e,r){throw new NIe(t,e&&(0,Oo.fileURLToPath)(new URL(\".\",e)),(0,Oo.fileURLToPath)(r))}function MIt(t,e,r,o){let a=`request is not a valid subpath for the \"${r?\"imports\":\"exports\"}\" resolution of ${(0,Oo.fileURLToPath)(e)}`;throw new Xj(t,a,o&&(0,Oo.fileURLToPath)(o))}function nv(t,e,r,o,a){throw typeof e==\"object\"&&e!==null?e=ZB(e,null,\"\"):e=`${e}`,new LIe((0,Oo.fileURLToPath)(new URL(\".\",r)),t,e,o,a&&(0,Oo.fileURLToPath)(a))}var _Ie=/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\\\|\\/|$)/i,HIe=/\\*/g;function OIt(t,e,r,o,a,n,u,A){if(e!==\"\"&&!n&&t[t.length-1]!==\"/\"&&nv(r,t,o,u,a),!dA(t,\"./\")){if(u&&!dA(t,\"../\")&&!dA(t,\"/\")){let I=!1;try{new URL(t),I=!0}catch{}if(!I)return n?Kj(HIe,t,()=>e):t+e}nv(r,t,o,u,a)}Vj(_Ie,D0(t,2))!==null&&nv(r,t,o,u,a);let p=new URL(t,o),h=p.pathname,E=new URL(\".\",o).pathname;if(dA(h,E)||nv(r,t,o,u,a),e===\"\")return p;if(Vj(_Ie,e)!==null){let I=n?QIe(r,\"*\",()=>e):r+e;MIt(I,o,u,a)}return n?new URL(Kj(HIe,p.href,()=>e)):new URL(e,p)}function UIt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function qC(t,e,r,o,a,n,u,A){if(typeof e==\"string\")return OIt(e,r,o,t,a,n,u,A);if(Wj(e)){if(e.length===0)return null;let p;for(let h=0;h<e.length;h++){let E=e[h],I;try{I=qC(t,E,r,o,a,n,u,A)}catch(v){if(p=v,v.code===\"ERR_INVALID_PACKAGE_TARGET\")continue;throw v}if(I!==void 0){if(I===null){p=null;continue}return I}}if(p==null)return p;throw p}else if(typeof e==\"object\"&&e!==null){let p=$B(e);for(let h=0;h<p.length;h++){let E=p[h];if(UIt(E))throw new rv((0,Oo.fileURLToPath)(t),a,'\"exports\" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let E=p[h];if(E===\"default\"||A.has(E)){let I=e[E],v=qC(t,I,r,o,a,n,u,A);if(v===void 0)continue;return v}}return}else if(e===null)return null;nv(o,e,t,u,a)}function qIe(t,e){let r=ev(t,\"*\"),o=ev(e,\"*\"),a=r===-1?t.length:r+1,n=o===-1?e.length:o+1;return a>n?-1:n>a||r===-1?1:o===-1||t.length>e.length?-1:e.length>t.length?1:0}function _It(t,e,r){if(typeof t==\"string\"||Wj(t))return!0;if(typeof t!=\"object\"||t===null)return!1;let o=$B(t),a=!1,n=0;for(let u=0;u<o.length;u++){let A=o[u],p=A===\"\"||A[0]!==\".\";if(n++===0)a=p;else if(a!==p)throw new rv((0,Oo.fileURLToPath)(e),r,`\"exports\" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return a}function Zj(t,e,r){throw new MIe((0,Oo.fileURLToPath)(new URL(\".\",e)),t,r&&(0,Oo.fileURLToPath)(r))}var jIe=new Set;function HIt(t,e,r){let o=(0,Oo.fileURLToPath)(e);jIe.has(o+\"|\"+t)||(jIe.add(o+\"|\"+t),process.emitWarning(`Use of deprecated trailing slash pattern mapping \"${t}\" in the \"exports\" field module resolution of the package at ${o}${r?` imported from ${(0,Oo.fileURLToPath)(r)}`:\"\"}. Mapping specifiers ending in \"/\" is no longer supported.`,\"DeprecationWarning\",\"DEP0155\"))}function GIe({packageJSONUrl:t,packageSubpath:e,exports:r,base:o,conditions:a}){if(_It(r,t,o)&&(r={\".\":r}),pm(r,e)&&!Jj(e,\"*\")&&!v0(e,\"/\")){let p=r[e],h=qC(t,p,\"\",e,o,!1,!1,a);return h==null&&Zj(e,t,o),h}let n=\"\",u,A=$B(r);for(let p=0;p<A.length;p++){let h=A[p],E=ev(h,\"*\");if(E!==-1&&dA(e,D0(h,0,E))){v0(e,\"/\")&&HIt(e,t,o);let I=D0(h,E+1);e.length>=h.length&&v0(e,I)&&qIe(n,h)===1&&zj(h,\"*\")===E&&(n=h,u=D0(e,E,e.length-I.length))}}if(n){let p=r[n],h=qC(t,p,u,n,o,!0,!1,a);return h==null&&Zj(e,t,o),h}Zj(e,t,o)}function YIe({name:t,base:e,conditions:r,readFileSyncFn:o}){if(t===\"#\"||dA(t,\"#/\")||v0(t,\"/\")){let u=\"is not a valid internal imports specifier name\";throw new Xj(t,u,(0,Oo.fileURLToPath)(e))}let a,n=UIe(e,o);if(n.exists){a=(0,Oo.pathToFileURL)(n.pjsonPath);let u=n.imports;if(u)if(pm(u,t)&&!Jj(t,\"*\")){let A=qC(a,u[t],\"\",t,e,!1,!0,r);if(A!=null)return A}else{let A=\"\",p,h=$B(u);for(let E=0;E<h.length;E++){let I=h[E],v=ev(I,\"*\");if(v!==-1&&dA(t,D0(I,0,v))){let b=D0(I,v+1);t.length>=I.length&&v0(t,b)&&qIe(A,I)===1&&zj(I,\"*\")===v&&(A=I,p=D0(t,v,t.length-b.length))}}if(A){let E=u[A],I=qC(a,E,p,A,e,!0,!0,r);if(I!=null)return I}}}LIt(t,a,e)}Pt();var jIt=new Set([\"BUILTIN_NODE_RESOLUTION_FAILED\",\"MISSING_DEPENDENCY\",\"MISSING_PEER_DEPENDENCY\",\"QUALIFIED_PATH_RESOLUTION_FAILED\",\"UNDECLARED_DEPENDENCY\"]);function $i(t,e,r={},o){o??=jIt.has(t)?\"MODULE_NOT_FOUND\":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:o},pnpCode:{...a,value:t},data:{...a,value:r}})}function au(t){return ue.normalize(ue.fromPortablePath(t))}var JIe=$e(VIe());function zIe(t){return qIt(),eq[t]}var eq;function qIt(){eq||(eq={\"--conditions\":[],...KIe(GIt()),...KIe(process.execArgv)})}function KIe(t){return(0,JIe.default)({\"--conditions\":[String],\"-C\":\"--conditions\"},{argv:t,permissive:!0})}function GIt(){let t=[],e=YIt(process.env.NODE_OPTIONS||\"\",t);return t.length,e}function YIt(t,e){let r=[],o=!1,a=!0;for(let n=0;n<t.length;++n){let u=t[n];if(u===\"\\\\\"&&o){if(n+1===t.length)return e.push(`invalid value for NODE_OPTIONS (invalid escape)\n`),r;u=t[++n]}else if(u===\" \"&&!o){a=!0;continue}else if(u==='\"'){o=!o;continue}a?(r.push(u),a=!1):r[r.length-1]+=u}return o&&e.push(`invalid value for NODE_OPTIONS (unterminated string)\n`),r}Pt();var[hm,sv]=process.versions.node.split(\".\").map(t=>parseInt(t,10)),XIe=hm>19||hm===19&&sv>=2||hm===18&&sv>=13,Bzt=hm===20&&sv<6||hm===19&&sv>=3,vzt=hm>19||hm===19&&sv>=6;function ZIe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(e)))),XIe)process.send({\"watch:require\":t});else for(let e of t)process.send({\"watch:require\":e})}function rq(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\\\/]|\\\\\\\\|\\.{0,2}(?:\\/|$))((?:node:)?(?:@[^/]+\\/)?[^/]+)\\/*(.*|)$/,n=/^(\\/|\\.{1,2}(\\/|$))/,u=/\\/$/,A=/^\\.{0,2}\\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Re of[\"react-scripts\",\"gatsby\"]){let Qe=t.packageRegistry.get(Re);if(Qe)for(let be of Qe.keys()){if(be===null)throw new Error(\"Assertion failed: This reference shouldn't be null\");h.push({name:Re,reference:be})}}let{ignorePattern:I,packageRegistry:v,packageLocatorsByLocations:b}=t;function C(Re,Qe){return{fn:Re,args:Qe,error:null,result:null}}function T(Re){let Qe=process.stderr?.hasColors?.()??process.stdout.isTTY,be=(Je,He)=>`\\x1B[${Je}m${He}\\x1B[0m`,_e=Re.error;console.error(_e?be(\"31;1\",`\\u2716 ${Re.error?.message.replace(/\\n.*/s,\"\")}`):be(\"33;1\",\"\\u203C Resolution\")),Re.args.length>0&&console.error();for(let Je of Re.args)console.error(`  ${be(\"37;1\",\"In \\u2190\")} ${(0,tq.inspect)(Je,{colors:Qe,compact:!0})}`);Re.result&&(console.error(),console.error(`  ${be(\"37;1\",\"Out \\u2192\")} ${(0,tq.inspect)(Re.result,{colors:Qe,compact:!0})}`));let Te=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Te.length>0){console.error();for(let Je of Te)console.error(`  ${be(\"38;5;244\",Je)}`)}console.error()}function L(Re,Qe){if(e.allowDebug===!1)return Qe;if(Number.isFinite(o)){if(o>=2)return(...be)=>{let _e=C(Re,be);try{return _e.result=Qe(...be)}catch(Te){throw _e.error=Te}finally{T(_e)}};if(o>=1)return(...be)=>{try{return Qe(...be)}catch(_e){let Te=C(Re,be);throw Te.error=_e,T(Te),_e}}}return Qe}function U(Re){let Qe=g(Re);if(!Qe)throw $i(\"INTERNAL\",\"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)\");return Qe}function J(Re){if(Re.name===null)return!0;for(let Qe of t.dependencyTreeRoots)if(Qe.name===Re.name&&Qe.reference===Re.reference)return!0;return!1}let te=new Set([\"node\",\"require\",...zIe(\"--conditions\")]);function le(Re,Qe=te,be){let _e=ce(K.join(Re,\"internal.js\"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(_e===null)throw $i(\"INTERNAL\",`The locator that owns the \"${Re}\" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Te}=U(_e),Je=K.join(Te,dr.manifest);if(!e.fakeFs.existsSync(Je))return null;let He=JSON.parse(e.fakeFs.readFileSync(Je,\"utf8\"));if(He.exports==null)return null;let x=K.contains(Te,Re);if(x===null)throw $i(\"INTERNAL\",\"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)\");x!==\".\"&&!A.test(x)&&(x=`./${x}`);try{let w=GIe({packageJSONUrl:(0,gm.pathToFileURL)(ue.fromPortablePath(Je)),packageSubpath:x,exports:He.exports,base:be?(0,gm.pathToFileURL)(ue.fromPortablePath(be)):null,conditions:Qe});return ue.toPortablePath((0,gm.fileURLToPath)(w))}catch(w){throw $i(\"EXPORTS_RESOLUTION_FAILED\",w.message,{unqualifiedPath:au(Re),locator:_e,pkgJson:He,subpath:au(x),conditions:Qe},w.code)}}function pe(Re,Qe,{extensions:be}){let _e;try{Qe.push(Re),_e=e.fakeFs.statSync(Re)}catch{}if(_e&&!_e.isDirectory())return e.fakeFs.realpathSync(Re);if(_e&&_e.isDirectory()){let Te;try{Te=JSON.parse(e.fakeFs.readFileSync(K.join(Re,dr.manifest),\"utf8\"))}catch{}let Je;if(Te&&Te.main&&(Je=K.resolve(Re,Te.main)),Je&&Je!==Re){let He=pe(Je,Qe,{extensions:be});if(He!==null)return He}}for(let Te=0,Je=be.length;Te<Je;Te++){let He=`${Re}${be[Te]}`;if(Qe.push(He),e.fakeFs.existsSync(He))return He}if(_e&&_e.isDirectory())for(let Te=0,Je=be.length;Te<Je;Te++){let He=K.format({dir:Re,name:\"index\",ext:be[Te]});if(Qe.push(He),e.fakeFs.existsSync(He))return He}return null}function Ae(Re){let Qe=new rp.Module(Re,null);return Qe.filename=Re,Qe.paths=rp.Module._nodeModulePaths(Re),Qe}function ye(Re,Qe){return Qe.endsWith(\"/\")&&(Qe=K.join(Qe,\"internal.js\")),rp.Module._resolveFilename(ue.fromPortablePath(Re),Ae(ue.fromPortablePath(Qe)),!1,{plugnplay:!1})}function ae(Re){if(I===null)return!1;let Qe=K.contains(t.basePath,Re);return Qe===null?!1:!!I.test(Qe.replace(/\\/$/,\"\"))}let we={std:3,resolveVirtual:1,getAllLocators:1},Pe=p;function g({name:Re,reference:Qe}){let be=v.get(Re);if(!be)return null;let _e=be.get(Qe);return _e||null}function Ee({name:Re,reference:Qe}){let be=[];for(let[_e,Te]of v)if(_e!==null)for(let[Je,He]of Te)Je===null||He.packageDependencies.get(Re)!==Qe||_e===Re&&Je===Qe||be.push({name:_e,reference:Je});return be}function De(Re,Qe){let be=new Map,_e=new Set,Te=He=>{let x=JSON.stringify(He.name);if(_e.has(x))return;_e.add(x);let w=Ee(He);for(let S of w)if(U(S).packagePeers.has(Re))Te(S);else{let F=be.get(S.name);typeof F>\"u\"&&be.set(S.name,F=new Set),F.add(S.reference)}};Te(Qe);let Je=[];for(let He of[...be.keys()].sort())for(let x of[...be.get(He)].sort())Je.push({name:He,reference:x});return Je}function ce(Re,{resolveIgnored:Qe=!1,includeDiscardFromLookup:be=!1}={}){if(ae(Re)&&!Qe)return null;let _e=K.relative(t.basePath,Re);_e.match(n)||(_e=`./${_e}`),_e.endsWith(\"/\")||(_e=`${_e}/`);do{let Te=b.get(_e);if(typeof Te>\"u\"||Te.discardFromLookup&&!be){_e=_e.substring(0,_e.lastIndexOf(\"/\",_e.length-2)+1);continue}return Te.locator}while(_e!==\"\");return null}function ne(Re){try{return e.fakeFs.readFileSync(ue.toPortablePath(Re),\"utf8\")}catch(Qe){if(Qe.code===\"ENOENT\")return;throw Qe}}function ee(Re,Qe,{considerBuiltins:be=!0}={}){if(Re.startsWith(\"#\"))throw new Error(\"resolveToUnqualified can not handle private import mappings\");if(Re===\"pnpapi\")return ue.toPortablePath(e.pnpapiResolution);if(be&&(0,rp.isBuiltin)(Re))return null;let _e=au(Re),Te=Qe&&au(Qe);if(Qe&&ae(Qe)&&(!K.isAbsolute(Re)||ce(Re)===null)){let x=ye(Re,Qe);if(x===!1)throw $i(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)\n\nRequire request: \"${_e}\"\nRequired by: ${Te}\n`,{request:_e,issuer:Te});return ue.toPortablePath(x)}let Je,He=Re.match(a);if(He){if(!Qe)throw $i(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:_e,issuer:Te});let[,x,w]=He,S=ce(Qe);if(!S){let Ne=ye(Re,Qe);if(Ne===!1)throw $i(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).\n\nRequire path: \"${_e}\"\nRequired by: ${Te}\n`,{request:_e,issuer:Te});return ue.toPortablePath(Ne)}let F=U(S).packageDependencies.get(x),z=null;if(F==null&&S.name!==null){let Ne=t.fallbackExclusionList.get(S.name);if(!Ne||!Ne.has(S.reference)){for(let dt=0,jt=h.length;dt<jt;++dt){let xt=U(h[dt]).packageDependencies.get(x);if(xt!=null){r?z=xt:F=xt;break}}if(t.enableTopLevelFallback&&F==null&&z===null){let dt=t.fallbackPool.get(x);dt!=null&&(z=dt)}}}let X=null;if(F===null)if(J(S))X=$i(\"MISSING_PEER_DEPENDENCY\",`Your application tried to access ${x} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.\n\nRequired package: ${x}${x!==_e?` (via \"${_e}\")`:\"\"}\nRequired by: ${Te}\n`,{request:_e,issuer:Te,dependencyName:x});else{let Ne=De(x,S);Ne.every(ot=>J(ot))?X=$i(\"MISSING_PEER_DEPENDENCY\",`${S.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==_e?` (via \"${_e}\")`:\"\"}\nRequired by: ${S.name}@${S.reference} (via ${Te})\n${Ne.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference}\n`).join(\"\")}\n`,{request:_e,issuer:Te,issuerLocator:Object.assign({},S),dependencyName:x,brokenAncestors:Ne}):X=$i(\"MISSING_PEER_DEPENDENCY\",`${S.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==_e?` (via \"${_e}\")`:\"\"}\nRequired by: ${S.name}@${S.reference} (via ${Te})\n\n${Ne.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference}\n`).join(\"\")}\n`,{request:_e,issuer:Te,issuerLocator:Object.assign({},S),dependencyName:x,brokenAncestors:Ne})}else F===void 0&&(!be&&(0,rp.isBuiltin)(Re)?J(S)?X=$i(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==_e?` (via \"${_e}\")`:\"\"}\nRequired by: ${Te}\n`,{request:_e,issuer:Te,dependencyName:x}):X=$i(\"UNDECLARED_DEPENDENCY\",`${S.name} tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in ${S.name}'s dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==_e?` (via \"${_e}\")`:\"\"}\nRequired by: ${Te}\n`,{request:_e,issuer:Te,issuerLocator:Object.assign({},S),dependencyName:x}):J(S)?X=$i(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==_e?` (via \"${_e}\")`:\"\"}\nRequired by: ${Te}\n`,{request:_e,issuer:Te,dependencyName:x}):X=$i(\"UNDECLARED_DEPENDENCY\",`${S.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==_e?` (via \"${_e}\")`:\"\"}\nRequired by: ${S.name}@${S.reference} (via ${Te})\n`,{request:_e,issuer:Te,issuerLocator:Object.assign({},S),dependencyName:x}));if(F==null){if(z===null||X===null)throw X||new Error(\"Assertion failed: Expected an error to have been set\");F=z;let Ne=X.message.replace(/\\n.*/g,\"\");X.message=Ne,!E.has(Ne)&&o!==0&&(E.add(Ne),process.emitWarning(X))}let Z=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},ie=U(Z);if(!ie.packageLocation)throw $i(\"MISSING_DEPENDENCY\",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${Z.name}@${Z.reference}${Z.name!==_e?` (via \"${_e}\")`:\"\"}\nRequired by: ${S.name}@${S.reference} (via ${Te})\n`,{request:_e,issuer:Te,dependencyLocator:Object.assign({},Z)});let Se=ie.packageLocation;w?Je=K.join(Se,w):Je=Se}else if(K.isAbsolute(Re))Je=K.normalize(Re);else{if(!Qe)throw $i(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:_e,issuer:Te});let x=K.resolve(Qe);Qe.match(u)?Je=K.normalize(K.join(x,Re)):Je=K.normalize(K.join(K.dirname(x),Re))}return K.normalize(Je)}function Ie(Re,Qe,be=te,_e){if(n.test(Re))return Qe;let Te=le(Qe,be,_e);return Te?K.normalize(Te):Qe}function ke(Re,{extensions:Qe=Object.keys(rp.Module._extensions)}={}){let be=[],_e=pe(Re,be,{extensions:Qe});if(_e)return K.normalize(_e);{ZIe(be.map(He=>ue.fromPortablePath(He)));let Te=au(Re),Je=ce(Re);if(Je){let{packageLocation:He}=U(Je),x=!0;try{e.fakeFs.accessSync(He)}catch(w){if(w?.code===\"ENOENT\")x=!1;else{let S=(w?.message??w??\"empty exception thrown\").replace(/^[A-Z]/,y=>y.toLowerCase());throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Required package exists but could not be accessed (${S}).\n\nMissing package: ${Je.name}@${Je.reference}\nExpected package location: ${au(He)}\n`,{unqualifiedPath:Te,extensions:Qe})}}if(!x){let w=He.includes(\"/unplugged/\")?\"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).\":\"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.\";throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`${w}\n\nMissing package: ${Je.name}@${Je.reference}\nExpected package location: ${au(He)}\n`,{unqualifiedPath:Te,extensions:Qe})}}throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.\n\nSource path: ${Te}\n${be.map(He=>`Not found: ${au(He)}\n`).join(\"\")}`,{unqualifiedPath:Te,extensions:Qe})}}function ht(Re,Qe,be){if(!Qe)throw new Error(\"Assertion failed: An issuer is required to resolve private import mappings\");let _e=YIe({name:Re,base:(0,gm.pathToFileURL)(ue.fromPortablePath(Qe)),conditions:be.conditions??te,readFileSyncFn:ne});if(_e instanceof URL)return ke(ue.toPortablePath((0,gm.fileURLToPath)(_e)),{extensions:be.extensions});if(_e.startsWith(\"#\"))throw new Error(\"Mapping from one private import to another isn't allowed\");return H(_e,Qe,be)}function H(Re,Qe,be={}){try{if(Re.startsWith(\"#\"))return ht(Re,Qe,be);let{considerBuiltins:_e,extensions:Te,conditions:Je}=be,He=ee(Re,Qe,{considerBuiltins:_e});if(Re===\"pnpapi\")return He;if(He===null)return null;let x=()=>Qe!==null?ae(Qe):!1,w=(!_e||!(0,rp.isBuiltin)(Re))&&!x()?Ie(Re,He,Je,Qe):He;return ke(w,{extensions:Te})}catch(_e){throw Object.hasOwn(_e,\"pnpCode\")&&Object.assign(_e.data,{request:au(Re),issuer:Qe&&au(Qe)}),_e}}function lt(Re){let Qe=K.normalize(Re),be=mi.resolveVirtual(Qe);return be!==Qe?be:null}return{VERSIONS:we,topLevel:Pe,getLocator:(Re,Qe)=>Array.isArray(Qe)?{name:Qe[0],reference:Qe[1]}:{name:Re,reference:Qe},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Re=[];for(let[Qe,be]of v)for(let _e of be.keys())Qe!==null&&_e!==null&&Re.push({name:Qe,reference:_e});return Re},getPackageInformation:Re=>{let Qe=g(Re);if(Qe===null)return null;let be=ue.fromPortablePath(Qe.packageLocation);return{...Qe,packageLocation:be}},findPackageLocator:Re=>ce(ue.toPortablePath(Re)),resolveToUnqualified:L(\"resolveToUnqualified\",(Re,Qe,be)=>{let _e=Qe!==null?ue.toPortablePath(Qe):null,Te=ee(ue.toPortablePath(Re),_e,be);return Te===null?null:ue.fromPortablePath(Te)}),resolveUnqualified:L(\"resolveUnqualified\",(Re,Qe)=>ue.fromPortablePath(ke(ue.toPortablePath(Re),Qe))),resolveRequest:L(\"resolveRequest\",(Re,Qe,be)=>{let _e=Qe!==null?ue.toPortablePath(Qe):null,Te=H(ue.toPortablePath(Re),_e,be);return Te===null?null:ue.fromPortablePath(Te)}),resolveVirtual:L(\"resolveVirtual\",Re=>{let Qe=lt(ue.toPortablePath(Re));return Qe!==null?ue.fromPortablePath(Qe):null})}}Pt();var $Ie=(t,e,r)=>{let o=XB(t),a=Yj(o,{basePath:e}),n=ue.join(e,dr.pnpCjs);return rq(a,{fakeFs:r,pnpapiResolution:n})};var iq=$e(t1e());qt();var mA={};Kt(mA,{checkManifestCompatibility:()=>r1e,extractBuildRequest:()=>vQ,getExtractHint:()=>sq,hasBindingGyp:()=>oq});Ye();Pt();function r1e(t){return W.isPackageCompatible(t,Ji.getArchitectureSet())}function vQ(t,e,r,{configuration:o}){let a=[];for(let n of[\"preinstall\",\"install\",\"postinstall\"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has(\"install\")&&e.misc.hasBindingGyp&&a.push({type:1,script:\"node-gyp rebuild\"}),a.length===0?null:t.linkType!==\"HARD\"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${W.prettyLocator(o,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${W.prettyLocator(o,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!o.get(\"enableScripts\")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${W.prettyLocator(o,t)} lists build scripts, but all build scripts have been disabled.`)}:r1e(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${W.prettyLocator(o,t)} The ${Ji.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var VIt=new Set([\".exe\",\".bin\",\".h\",\".hh\",\".hpp\",\".c\",\".cc\",\".cpp\",\".java\",\".jar\",\".node\"]);function sq(t){return t.packageFs.getExtractHint({relevantExtensions:VIt})}function oq(t){let e=K.join(t.prefixPath,\"binding.gyp\");return t.packageFs.existsSync(e)}var av={};Kt(av,{getUnpluggedPath:()=>ov});Ye();Pt();function ov(t,{configuration:e}){return K.resolve(e.get(\"pnpUnpluggedFolder\"),W.slugifyLocator(t))}var KIt=new Set([W.makeIdent(null,\"open\").identHash,W.makeIdent(null,\"opn\").identHash]),P0=class{constructor(){this.mode=\"strict\";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"PnpLinker\",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the PnP linker to be enabled\");let o=S0(r.project).cjs;if(!oe.existsSync(o))throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=je.getFactoryWithDefault(this.pnpCache,o,()=>je.dynamicRequire(o,{cachingStrategy:je.CachingStrategy.FsTime})),n={name:W.stringifyIdent(e),reference:e.reference},u=a.getPackageInformation(n);if(!u)throw new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return ue.toPortablePath(u.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=S0(r.project).cjs;if(!oe.existsSync(o))return null;let n=je.getFactoryWithDefault(this.pnpCache,o,()=>je.dynamicRequire(o,{cachingStrategy:je.CachingStrategy.FsTime})).findPackageLocator(ue.fromPortablePath(e));return n?W.makeLocator(W.parseIdent(n.name),n.reference):null}makeInstaller(e){return new dm(e)}isEnabled(e){return!(e.project.configuration.get(\"nodeLinker\")!==\"pnp\"||e.project.configuration.get(\"pnpMode\")!==this.mode)}},dm=class{constructor(e){this.opts=e;this.mode=\"strict\";this.asyncActions=new je.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,o){let a=W.stringifyIdent(e),n=e.reference,u=!!this.opts.project.tryWorkspaceByLocator(e),A=W.isVirtualLocator(e),p=e.peerDependencies.size>0&&!A,h=!p&&!u,E=!p&&e.linkType!==\"SOFT\",I,v;if(h||E){let te=A?W.devirtualizeLocator(e):e;I=this.customData.store.get(te.locatorHash),typeof I>\"u\"&&(I=await JIt(r),e.linkType===\"HARD\"&&this.customData.store.set(te.locatorHash,I)),I.manifest.type===\"module\"&&(this.isESMLoaderRequired=!0),v=this.opts.project.getDependencyMeta(te,e.version)}let b=h?vQ(e,I,v,{configuration:this.opts.project.configuration}):null,C=E?await this.unplugPackageIfNeeded(e,I,r,v,o):r.packageFs;if(K.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let T=K.resolve(C.getRealPath(),r.prefixPath),L=aq(this.opts.project.cwd,T),U=new Map,J=new Set;if(A){for(let te of e.peerDependencies.values())U.set(W.stringifyIdent(te),null),J.add(W.stringifyIdent(te));if(!u){let te=W.devirtualizeLocator(e);this.virtualTemplates.set(te.locatorHash,{location:aq(this.opts.project.cwd,mi.resolveVirtual(T)),locator:te})}}return je.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:L,packageDependencies:U,packagePeers:J,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:T,buildRequest:b}}async attachInternalDependencies(e,r){let o=this.getPackageInformation(e);for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.packageDependencies.set(W.stringifyIdent(a),u)}}async attachExternalDependents(e,r){for(let o of r)this.getDiskInformation(o).packageDependencies.set(W.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get(\"pnpMode\")!==this.mode)return;let e=S0(this.opts.project);if(this.isEsmEnabled()||await oe.removePromise(e.esmLoader),this.opts.project.configuration.get(\"nodeLinker\")!==\"pnp\"){await oe.removePromise(e.cjs),await oe.removePromise(e.data),await oe.removePromise(e.esmLoader),await oe.removePromise(this.opts.project.configuration.get(\"pnpUnpluggedFolder\"));return}for(let{locator:E,location:I}of this.virtualTemplates.values())je.getMapWithDefault(this.packageRegistry,W.stringifyIdent(E)).set(E.reference,{packageLocation:I,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get(\"pnpFallbackMode\"),o=this.opts.project.workspaces.map(({anchoredLocator:E})=>({name:W.stringifyIdent(E),reference:E.reference})),a=r!==\"none\",n=[],u=new Map,A=je.buildIgnorePattern([\".yarn/sdks/**\",...this.opts.project.configuration.get(\"pnpIgnorePatterns\")]),p=this.packageRegistry,h=this.opts.project.configuration.get(\"pnpShebang\");if(r===\"dependencies-only\")for(let E of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(E)&&n.push({name:W.stringifyIdent(E),reference:E.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:o,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:u,ignorePattern:A,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has(\"pnpEnableEsmLoader\"))return this.opts.project.configuration.get(\"pnpEnableEsmLoader\");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type===\"module\")return!0;return!1}async finalizeInstallWithPnp(e){let r=S0(this.opts.project),o=await this.locateNodeModules(e.ignorePattern);if(o.length>0){this.opts.report.reportWarning(31,\"One or more node_modules have been detected and will be removed. This operation may take some time.\");for(let n of o)await oe.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get(\"pnpEnableInlining\")){let n=bIe(e);await oe.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await oe.removePromise(r.data)}else{let{dataFile:n,loaderFile:u}=kIe(e);await oe.changeFilePromise(r.cjs,u,{automaticNewlines:!0,mode:493}),await oe.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,\"ESM support for PnP uses the experimental loader API and is therefore experimental\"),await oe.changeFilePromise(r.esmLoader,(0,iq.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get(\"pnpUnpluggedFolder\");if(this.unpluggedPaths.size===0)await oe.removePromise(a);else for(let n of await oe.readdirPromise(a)){let u=K.resolve(a,n);this.unpluggedPaths.has(u)||await oe.removePromise(u)}}async locateNodeModules(e){let r=[],o=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=K.join(a.cwd,\"node_modules\");if(o&&o.test(K.relative(this.opts.project.cwd,a.cwd))||!oe.existsSync(n))continue;let u=await oe.readdirPromise(n,{withFileTypes:!0}),A=u.filter(p=>!p.isDirectory()||p.name===\".bin\"||!p.name.startsWith(\".\"));if(A.length===u.length)r.push(n);else for(let p of A)r.push(K.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,o,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,o,n):o.packageFs}shouldBeUnplugged(e,r,o){return typeof o.unplugged<\"u\"?o.unplugged:KIt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(vQ(e,r,o,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,o){let a=ov(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new Uu(a,{baseFs:r.packageFs,pathUtils:K}):(this.unpluggedPaths.add(a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=K.join(a,r.prefixPath,\".ready\");await oe.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await oe.mkdirPromise(a,{recursive:!0}),await oe.copyPromise(a,Bt.dot,{baseFs:r.packageFs,overwrite:!1}),await oe.writeFilePromise(n,\"\"))})),new gn(a))}getPackageInformation(e){let r=W.stringifyIdent(e),o=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${W.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(o);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${W.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=je.getMapWithDefault(this.packageRegistry,\"@@disk\"),o=aq(this.opts.project.cwd,e);return je.getFactoryWithDefault(r,o,()=>({packageLocation:o,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1}))}};function aq(t,e){let r=K.relative(t,e);return r.match(/^\\.{0,2}\\//)||(r=`./${r}`),r.replace(/\\/?$/,\"/\")}async function JIt(t){let e=await Mt.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Mt,r=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let o of e.scripts.keys())r.has(o)||e.scripts.delete(o);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:sq(t),hasBindingGyp:oq(t)}}}Ye();Ye();qt();var n1e=$e(Zo());var x0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unplug direct dependencies from the entire project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Unplug both direct and transitive dependencies\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);if(r.get(\"nodeLinker\")!==\"pnp\")throw new it(\"This command can only be used if the `nodeLinker` option is set to `pnp`\");await o.restoreInstallState();let u=new Set(this.patterns),A=this.patterns.map(b=>{let C=W.parseDescriptor(b),T=C.range!==\"unknown\"?C:W.makeDescriptor(C,\"*\");if(!kr.validRange(T.range))throw new it(`The range of the descriptor patterns must be a valid semver range (${W.prettyDescriptor(r,T)})`);return L=>{let U=W.stringifyIdent(L);return!n1e.default.isMatch(U,W.stringifyIdent(T))||L.version&&!kr.satisfiesWithPrereleases(L.version,T.range)?!1:(u.delete(b),!0)}}),p=()=>{let b=[];for(let C of o.storedPackages.values())!o.tryWorkspaceByLocator(C)&&!W.isVirtualLocator(C)&&A.some(T=>T(C))&&b.push(C);return b},h=b=>{let C=new Set,T=[],L=(U,J)=>{if(C.has(U.locatorHash))return;let te=!!o.tryWorkspaceByLocator(U);if(!(J>0&&!this.recursive&&te)&&(C.add(U.locatorHash),!o.tryWorkspaceByLocator(U)&&A.some(le=>le(U))&&T.push(U),!(J>0&&!this.recursive)))for(let le of U.dependencies.values()){let pe=o.storedResolutions.get(le.descriptorHash);if(!pe)throw new Error(\"Assertion failed: The resolution should have been registered\");let Ae=o.storedPackages.get(pe);if(!Ae)throw new Error(\"Assertion failed: The package should have been registered\");L(Ae,J+1)}};for(let U of b)L(U.anchoredPackage,0);return T},E,I;if(this.all&&this.recursive?(E=p(),I=\"the project\"):this.all?(E=h(o.workspaces),I=\"any workspace\"):(E=h([a]),I=\"this workspace\"),u.size>1)throw new it(`Patterns ${de.prettyList(r,u,de.Type.CODE)} don't match any packages referenced by ${I}`);if(u.size>0)throw new it(`Pattern ${de.prettyList(r,u,de.Type.CODE)} doesn't match any packages referenced by ${I}`);E=je.sortMap(E,b=>W.stringifyLocator(b));let v=await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async b=>{for(let C of E){let T=C.version??\"unknown\",L=o.topLevelWorkspace.manifest.ensureDependencyMeta(W.makeDescriptor(C,T));L.unplugged=!0,b.reportInfo(0,`Will unpack ${W.prettyLocator(r,C)} to ${de.pretty(r,ov(C,{configuration:r}),de.Type.PATH)}`),b.reportJson({locator:W.stringifyLocator(C),version:T})}await o.topLevelWorkspace.persistManifest(),this.json||b.reportSeparator()});return v.hasErrors()?v.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};x0.paths=[[\"unplug\"]],x0.usage=nt.Usage({description:\"force the unpacking of a list of packages\",details:\"\\n      This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\\n\\n      A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\\n\\n      Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\\n\\n      By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\\n\\n      This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\\n    \",examples:[[\"Unplug the lodash dependency from the active workspace\",\"yarn unplug lodash\"],[\"Unplug all instances of lodash referenced by any workspace\",\"yarn unplug lodash -A\"],[\"Unplug all instances of lodash referenced by the active workspace and its dependencies\",\"yarn unplug lodash -R\"],[\"Unplug all instances of lodash, anywhere\",\"yarn unplug lodash -AR\"],[\"Unplug one specific version of lodash\",\"yarn unplug lodash@1.2.3\"],[\"Unplug all packages with the `@babel` scope\",\"yarn unplug '@babel/*'\"],[\"Unplug all packages (only for testing, not recommended)\",\"yarn unplug -R '*'\"]]});var S0=t=>({cjs:K.join(t.cwd,dr.pnpCjs),data:K.join(t.cwd,dr.pnpData),esmLoader:K.join(t.cwd,dr.pnpEsmLoader)}),s1e=t=>/\\s/.test(t)?JSON.stringify(t):t;async function zIt(t,e,r){let o=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g,a=/\\s*--experimental-loader\\s+\\S*\\.pnp\\.loader\\.mjs\\s*/,n=(e.NODE_OPTIONS??\"\").replace(o,\" \").replace(a,\" \").trim();if(t.configuration.get(\"nodeLinker\")!==\"pnp\"){e.NODE_OPTIONS=n;return}let u=S0(t),A=`--require ${s1e(ue.fromPortablePath(u.cjs))}`;oe.existsSync(u.esmLoader)&&(A=`${A} --experimental-loader ${(0,i1e.pathToFileURL)(ue.fromPortablePath(u.esmLoader)).href}`),oe.existsSync(u.cjs)&&(e.NODE_OPTIONS=n?`${A} ${n}`:A)}async function XIt(t,e){let r=S0(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get(\"pnpUnpluggedFolder\"))}var ZIt={hooks:{populateYarnPaths:XIt,setupScriptEnvironment:zIt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: \"pnp\", \"pnpm\", or \"node-modules\"',type:\"STRING\",default:\"pnp\"},winLinkType:{description:\"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.\",type:\"STRING\",values:[\"junctions\",\"symlinks\"],default:\"junctions\"},pnpMode:{description:\"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.\",type:\"STRING\",default:\"strict\"},pnpShebang:{description:\"String to prepend to the generated PnP script\",type:\"STRING\",default:\"#!/usr/bin/env node\"},pnpIgnorePatterns:{description:\"Array of glob patterns; files matching them will use the classic resolution\",type:\"STRING\",default:[],isArray:!0},pnpEnableEsmLoader:{description:\"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.\",type:\"BOOLEAN\",default:!1},pnpEnableInlining:{description:\"If true, the PnP data will be inlined along with the generated loader\",type:\"BOOLEAN\",default:!0},pnpFallbackMode:{description:\"If true, the generated PnP loader will follow the top-level fallback rule\",type:\"STRING\",default:\"dependencies-only\"},pnpUnpluggedFolder:{description:\"Folder where the unplugged packages must be stored\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/unplugged\"}},linkers:[P0],commands:[x0]},$It=ZIt;var p1e=$e(u1e());qt();var gq=$e(Be(\"crypto\")),h1e=$e(Be(\"fs\")),g1e=1,Pi=\"node_modules\",DQ=\".bin\",d1e=\".yarn-state.yml\",d1t=1e3,dq=(o=>(o.CLASSIC=\"classic\",o.HARDLINKS_LOCAL=\"hardlinks-local\",o.HARDLINKS_GLOBAL=\"hardlinks-global\",o))(dq||{}),lv=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"NodeModulesLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the node-modules linker to be enabled\");let o=r.project.tryWorkspaceByLocator(e);if(o)return o.cwd;let a=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hq(r.project,{unrollAliases:!0}));if(a===null)throw new it(\"Couldn't find the node_modules state file - running an install might help (findPackageLocation)\");let n=a.locatorMap.get(W.stringifyLocator(e));if(!n){let p=new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code=\"LOCATOR_NOT_INSTALLED\",p}let u=n.locations.sort((p,h)=>p.split(K.sep).length-h.split(K.sep).length),A=K.join(r.project.configuration.startingCwd,Pi);return u.find(p=>K.contains(A,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hq(r.project,{unrollAliases:!0}));if(o===null)return null;let{locationRoot:a,segments:n}=PQ(K.resolve(e),{skipPrefix:r.project.cwd}),u=o.locationTree.get(a);if(!u)return null;let A=u.locator;for(let p of n){if(u=u.children.get(p),!u)break;A=u.locator||A}return W.parseLocator(A)}makeInstaller(e){return new pq(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"node-modules\"}},pq=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let o=K.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>\"u\"&&(a=await m1t(e,r),e.linkType===\"HARD\"&&this.customData.store.set(e.locatorHash,a)),!W.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,u=new Set;n.has(W.stringifyIdent(e))||n.set(W.stringifyIdent(e),e.reference);let A=e;if(W.isVirtualLocator(e)){A=W.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(W.stringifyIdent(E),null),u.add(W.stringifyIdent(E))}let p={packageLocation:`${ue.fromPortablePath(o)}/`,packageDependencies:n,packagePeers:u,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf(\"/\")+1):null;return this.realLocatorChecksums.set(A.locatorHash,h),{packageLocation:o,buildRequest:null}}async attachInternalDependencies(e,r){let o=this.localStore.get(e.locatorHash);if(typeof o>\"u\")throw new Error(\"Assertion failed: Expected information object to have been registered\");for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.pnpNode.packageDependencies.set(W.stringifyIdent(a),u)}}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the node-modules linker\")}async finalizeInstall(){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\")return;let e=new mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),r=await hq(this.opts.project),o=this.opts.project.configuration.get(\"nmMode\");(r===null||o!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:o,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(v=>{let b=this.opts.project.configuration.get(\"nmHoistingLimits\");try{b=je.validateEnum(KB,v.manifest.installConfig?.hoistingLimits??b)}catch{let T=W.prettyWorkspace(this.opts.project.configuration,v);this.opts.report.reportWarning(57,`${T}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(KB).join(\", \")}, using default: \"${b}\"`)}return[v.relativeCwd,b]})),n=new Map(this.opts.project.workspaces.map(v=>{let b=this.opts.project.configuration.get(\"nmSelfReferences\");return b=v.manifest.installConfig?.selfReferences??b,[v.relativeCwd,b]})),u={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(v,b)=>Array.isArray(b)?{name:b[0],reference:b[1]}:{name:v,reference:b},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(v=>{let b=v.anchoredLocator;return{name:W.stringifyIdent(b),reference:b.reference}}),getPackageInformation:v=>{let b=v.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:W.makeLocator(W.parseIdent(v.name),v.reference),C=this.localStore.get(b.locatorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the package reference to have been registered\");return C.pnpNode},findPackageLocator:v=>{let b=this.opts.project.tryWorkspaceByCwd(ue.toPortablePath(v));if(b!==null){let C=b.anchoredLocator;return{name:W.stringifyIdent(C),reference:C.reference}}throw new Error(\"Assertion failed: Unimplemented\")},resolveToUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveRequest:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveVirtual:v=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(v)))},{tree:A,errors:p,preserveSymlinksRequired:h}=JB(u,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!A){for(let{messageName:v,text:b}of p)this.opts.report.reportError(v,b);return}let E=qj(A);await B1t(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async v=>{let b=W.parseLocator(v),C=this.localStore.get(b.locatorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");return C.customPackageData.manifest}});let I=[];for(let[v,b]of E.entries()){if(C1e(v))continue;let C=W.parseLocator(v),T=this.localStore.get(C.locatorHash);if(typeof T>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");if(this.opts.project.tryWorkspaceByLocator(T.pkg))continue;let L=mA.extractBuildRequest(T.pkg,T.customPackageData,T.dependencyMeta,{configuration:this.opts.project.configuration});!L||I.push({buildLocations:b.locations,locator:C,buildRequest:L})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${de.pretty(this.opts.project.configuration,\"--preserve-symlinks\",de.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:I}}};async function m1t(t,e){let r=await Mt.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Mt,o=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let a of r.scripts.keys())o.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:mA.hasBindingGyp(e)}}}async function y1t(t,e,r,o,{installChangedByUser:a}){let n=\"\";n+=`# Warning: This file is automatically generated. Removing it is fine, but will\n`,n+=`# cause your node_modules installation to become invalidated.\n`,n+=`\n`,n+=`__metadata:\n`,n+=`  version: ${g1e}\n`,n+=`  nmMode: ${o.value}\n`;let u=Array.from(e.keys()).sort(),A=W.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of u){let I=e.get(E);n+=`\n`,n+=`${JSON.stringify(E)}:\n`,n+=`  locations:\n`;for(let v of I.locations){let b=K.contains(t.cwd,v);if(b===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=`    - ${JSON.stringify(b)}\n`}if(I.aliases.length>0){n+=`  aliases:\n`;for(let v of I.aliases)n+=`    - ${JSON.stringify(v)}\n`}if(E===A&&r.size>0){n+=`  bin:\n`;for(let[v,b]of r){let C=K.contains(t.cwd,v);if(C===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=`    ${JSON.stringify(C)}:\n`;for(let[T,L]of b){let U=K.relative(K.join(v,Pi),L);n+=`      ${JSON.stringify(T)}: ${JSON.stringify(U)}\n`}}}}let p=t.cwd,h=K.join(p,Pi,d1e);a&&await oe.removePromise(h),await oe.changeFilePromise(h,n,{automaticNewlines:!0})}async function hq(t,{unrollAliases:e=!1}={}){let r=t.cwd,o=K.join(r,Pi,d1e),a;try{a=await oe.statPromise(o)}catch{}if(!a)return null;let n=Vi(await oe.readFilePromise(o,\"utf8\"));if(n.__metadata.version>g1e)return null;let u=n.__metadata.nmMode||\"classic\",A=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let I=E.locations.map(b=>K.join(r,b)),v=E.bin;if(v)for(let[b,C]of Object.entries(v)){let T=K.join(r,ue.toPortablePath(b)),L=je.getMapWithDefault(p,T);for(let[U,J]of Object.entries(C))L.set(U,ue.toPortablePath([T,Pi,J].join(K.sep)))}if(A.set(h,{target:Bt.dot,linkType:\"HARD\",locations:I,aliases:E.aliases||[]}),e&&E.aliases)for(let b of E.aliases){let{scope:C,name:T}=W.parseLocator(h),L=W.makeLocator(W.makeIdent(C,T),b),U=W.stringifyLocator(L);A.set(U,{target:Bt.dot,linkType:\"HARD\",locations:I,aliases:[]})}}return{locatorMap:A,binSymlinks:p,locationTree:m1e(A,{skipPrefix:t.cwd}),nmMode:u,mtimeMs:a.mtimeMs}}var YC=async(t,e)=>{if(t.split(K.sep).indexOf(Pi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let o=e.allowSymlink?await oe.statPromise(t):await oe.lstatPromise(t);if(e.allowSymlink&&!o.isDirectory()||!e.allowSymlink&&o.isSymbolicLink()){await oe.unlinkPromise(t);return}}let r=await oe.readdirPromise(t,{withFileTypes:!0});for(let o of r){let a=K.join(t,o.name);o.isDirectory()?(o.name!==Pi||e&&e.innerLoop)&&await YC(a,{innerLoop:!0,contentsOnly:!1}):await oe.unlinkPromise(a)}e.contentsOnly||await oe.rmdirPromise(t)}catch(r){if(r.code!==\"ENOENT\"&&r.code!==\"ENOTEMPTY\")throw r}},A1e=4,PQ=(t,{skipPrefix:e})=>{let r=K.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let o=r.split(K.sep).filter(p=>p!==\"\"),a=o.indexOf(Pi),n=o.slice(0,a).join(K.sep),u=K.join(e,n),A=o.slice(a);return{locationRoot:u,segments:A}},m1e=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let o=()=>({children:new Map,linkType:\"HARD\"});for(let[a,n]of t.entries()){if(n.linkType===\"SOFT\"&&K.contains(e,n.target)!==null){let A=je.getFactoryWithDefault(r,n.target,o);A.locator=a,A.linkType=n.linkType}for(let u of n.locations){let{locationRoot:A,segments:p}=PQ(u,{skipPrefix:e}),h=je.getFactoryWithDefault(r,A,o);for(let E=0;E<p.length;++E){let I=p[E];if(I!==\".\"){let v=je.getFactoryWithDefault(h.children,I,o);h.children.set(I,v),h=v}E===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},mq=async(t,e,r)=>{if(process.platform===\"win32\"&&r===\"junctions\"){let o;try{o=await oe.lstatPromise(t)}catch{}if(!o||o.isDirectory()){await oe.symlinkPromise(t,e,\"junction\");return}}await oe.symlinkPromise(K.relative(K.dirname(e),t),e)};async function y1e(t,e,r){let o=K.join(t,`${gq.default.randomBytes(16).toString(\"hex\")}.tmp`);try{await oe.writeFilePromise(o,r);try{await oe.linkPromise(o,e)}catch{}}finally{await oe.unlinkPromise(o)}}async function E1t({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:o,baseFs:a,nmMode:n}){if(r.kind===E1e.FILE){if(n.value===\"hardlinks-global\"&&o&&r.digest){let A=K.join(o,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await oe.statPromise(A);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-d1t))if(await wn.checksumFile(A,{baseFs:oe,algorithm:\"sha1\"})!==r.digest){let I=K.join(o,`${gq.default.randomBytes(16).toString(\"hex\")}.tmp`);await oe.renamePromise(A,I);let v=await a.readFilePromise(t);await oe.writeFilePromise(I,v);try{await oe.linkPromise(I,A),r.mtimeMs=new Date().getTime(),await oe.unlinkPromise(I)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await oe.linkPromise(A,e),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(t);await y1e(o,A,h),r.mtimeMs=new Date().getTime();try{await oe.linkPromise(A,e)}catch(E){E&&E.code&&E.code==\"EXDEV\"&&(n.value=\"hardlinks-local\",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let u=r.mode&511;u!==420&&await oe.chmodPromise(e,u)}}var E1e=(o=>(o.FILE=\"file\",o.DIRECTORY=\"directory\",o.SYMLINK=\"symlink\",o))(E1e||{}),C1t=async(t,e,{baseFs:r,globalHardlinksStore:o,nmMode:a,windowsLinkType:n,packageChecksum:u})=>{await oe.mkdirPromise(t,{recursive:!0});let A=async(E=Bt.dot)=>{let I=K.join(e,E),v=await r.readdirPromise(I,{withFileTypes:!0}),b=new Map;for(let C of v){let T=K.join(E,C.name),L,U=K.join(I,C.name);if(C.isFile()){if(L={kind:\"file\",mode:(await r.lstatPromise(U)).mode},a.value===\"hardlinks-global\"){let J=await wn.checksumFile(U,{baseFs:r,algorithm:\"sha1\"});L.digest=J}}else if(C.isDirectory())L={kind:\"directory\"};else if(C.isSymbolicLink())L={kind:\"symlink\",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,\"0\")})`);if(b.set(T,L),C.isDirectory()&&T!==Pi){let J=await A(T);for(let[te,le]of J)b.set(te,le)}}return b},p;if(a.value===\"hardlinks-global\"&&o&&u){let E=K.join(o,u.substring(0,2),`${u.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await oe.readFilePromise(E,\"utf8\"))))}catch{p=await A()}}else p=await A();let h=!1;for(let[E,I]of p){let v=K.join(e,E),b=K.join(t,E);if(I.kind===\"directory\")await oe.mkdirPromise(b,{recursive:!0});else if(I.kind===\"file\"){let C=I.mtimeMs;await E1t({srcPath:v,dstPath:b,entry:I,nmMode:a,baseFs:r,globalHardlinksStore:o}),I.mtimeMs!==C&&(h=!0)}else I.kind===\"symlink\"&&await mq(K.resolve(K.dirname(b),I.symlinkTo),b,n)}if(a.value===\"hardlinks-global\"&&o&&h&&u){let E=K.join(o,u.substring(0,2),`${u.substring(2)}.json`);await oe.removePromise(E),await y1e(o,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function w1t(t,e,r,o){let a=new Map,n=new Map,u=new Map,A=!1,p=(h,E,I,v,b)=>{let C=!0,T=K.join(h,E),L=new Set;if(E===Pi||E.startsWith(\"@\")){let J;try{J=oe.statSync(T)}catch{}C=!!J,J?J.mtimeMs>r?(A=!0,L=new Set(oe.readdirSync(T))):L=new Set(I.children.get(E).children.keys()):A=!0;let te=e.get(h);if(te){let le=K.join(h,Pi,DQ),pe;try{pe=oe.statSync(le)}catch{}if(!pe)A=!0;else if(pe.mtimeMs>r){A=!0;let Ae=new Set(oe.readdirSync(le)),ye=new Map;n.set(h,ye);for(let[ae,we]of te)Ae.has(ae)&&ye.set(ae,we)}else n.set(h,te)}}else C=b.has(E);let U=I.children.get(E);if(C){let{linkType:J,locator:te}=U,le={children:new Map,linkType:J,locator:te};if(v.children.set(E,le),te){let pe=je.getSetWithDefault(u,te);pe.add(T),u.set(te,pe)}for(let pe of U.children.keys())p(T,pe,U,le,L)}else U.locator&&o.storedBuildState.delete(W.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:I,locator:v}=E,b={children:new Map,linkType:I,locator:v};if(a.set(h,b),v){let C=je.getSetWithDefault(u,E.locator);C.add(h),u.set(E.locator,C)}E.children.has(Pi)&&p(h,Pi,E,b,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:u,installChangedByUser:A}}function C1e(t){let e=W.parseDescriptor(t);return W.isVirtualDescriptor(e)&&(e=W.devirtualizeDescriptor(e)),e.range.startsWith(\"link:\")}async function I1t(t,e,r,{loadManifest:o}){let a=new Map;for(let[A,{locations:p}]of t){let h=C1e(A)?null:await o(A,p[0]),E=new Map;if(h)for(let[I,v]of h.bin){let b=K.join(p[0],v);v!==\"\"&&oe.existsSync(b)&&E.set(I,v)}a.set(A,E)}let n=new Map,u=(A,p,h)=>{let E=new Map,I=K.contains(r,A);if(h.locator&&I!==null){let v=a.get(h.locator);for(let[b,C]of v){let T=K.join(A,ue.toPortablePath(C));E.set(b,T)}for(let[b,C]of h.children){let T=K.join(A,b),L=u(T,T,C);L.size>0&&n.set(A,new Map([...n.get(A)||new Map,...L]))}}else for(let[v,b]of h.children){let C=u(K.join(A,v),p,b);for(let[T,L]of C)E.set(T,L)}return E};for(let[A,p]of e){let h=u(A,A,p);h.size>0&&n.set(A,new Map([...n.get(A)||new Map,...h]))}return n}var f1e=(t,e)=>{if(!t||!e)return t===e;let r=W.parseLocator(t);W.isVirtualLocator(r)&&(r=W.devirtualizeLocator(r));let o=W.parseLocator(e);return W.isVirtualLocator(o)&&(o=W.devirtualizeLocator(o)),W.areLocatorsEqual(r,o)};function yq(t){return K.join(t.get(\"globalFolder\"),\"store\")}async function B1t(t,e,{baseFs:r,project:o,report:a,loadManifest:n,realLocatorChecksums:u}){let A=K.join(o.cwd,Pi),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:I}=w1t(t.locationTree,t.binSymlinks,t.mtimeMs,o),v=m1e(e,{skipPrefix:o.cwd}),b=[],C=async({srcDir:we,dstDir:Pe,linkType:g,globalHardlinksStore:Ee,nmMode:De,windowsLinkType:ce,packageChecksum:ne})=>{let ee=(async()=>{try{g===\"SOFT\"?(await oe.mkdirPromise(K.dirname(Pe),{recursive:!0}),await mq(K.resolve(we),Pe,ce)):await C1t(Pe,we,{baseFs:r,globalHardlinksStore:Ee,nmMode:De,windowsLinkType:ce,packageChecksum:ne})}catch(Ie){throw Ie.message=`While persisting ${we} -> ${Pe} ${Ie.message}`,Ie}finally{le.tick()}})().then(()=>b.splice(b.indexOf(ee),1));b.push(ee),b.length>A1e&&await Promise.race(b)},T=async(we,Pe,g)=>{let Ee=(async()=>{let De=async(ce,ne,ee)=>{try{ee.innerLoop||await oe.mkdirPromise(ne,{recursive:!0});let Ie=await oe.readdirPromise(ce,{withFileTypes:!0});for(let ke of Ie){if(!ee.innerLoop&&ke.name===DQ)continue;let ht=K.join(ce,ke.name),H=K.join(ne,ke.name);ke.isDirectory()?(ke.name!==Pi||ee&&ee.innerLoop)&&(await oe.mkdirPromise(H,{recursive:!0}),await De(ht,H,{...ee,innerLoop:!0})):ye.value===\"hardlinks-local\"||ye.value===\"hardlinks-global\"?await oe.linkPromise(ht,H):await oe.copyFilePromise(ht,H,h1e.default.constants.COPYFILE_FICLONE)}}catch(Ie){throw ee.innerLoop||(Ie.message=`While cloning ${ce} -> ${ne} ${Ie.message}`),Ie}finally{ee.innerLoop||le.tick()}};await De(we,Pe,g)})().then(()=>b.splice(b.indexOf(Ee),1));b.push(Ee),b.length>A1e&&await Promise.race(b)},L=async(we,Pe,g)=>{if(g)for(let[Ee,De]of Pe.children){let ce=g.children.get(Ee);await L(K.join(we,Ee),De,ce)}else{Pe.children.has(Pi)&&await YC(K.join(we,Pi),{contentsOnly:!1});let Ee=K.basename(we)===Pi&&v.has(K.join(K.dirname(we),K.sep));await YC(we,{contentsOnly:we===A,allowSymlink:Ee})}};for(let[we,Pe]of p){let g=v.get(we);for(let[Ee,De]of Pe.children){if(Ee===\".\")continue;let ce=g&&g.children.get(Ee),ne=K.join(we,Ee);await L(ne,De,ce)}}let U=async(we,Pe,g)=>{if(g){f1e(Pe.locator,g.locator)||await YC(we,{contentsOnly:Pe.linkType===\"HARD\"});for(let[Ee,De]of Pe.children){let ce=g.children.get(Ee);await U(K.join(we,Ee),De,ce)}}else{Pe.children.has(Pi)&&await YC(K.join(we,Pi),{contentsOnly:!0});let Ee=K.basename(we)===Pi&&v.has(K.join(K.dirname(we),K.sep));await YC(we,{contentsOnly:Pe.linkType===\"HARD\",allowSymlink:Ee})}};for(let[we,Pe]of v){let g=p.get(we);for(let[Ee,De]of Pe.children){if(Ee===\".\")continue;let ce=g&&g.children.get(Ee);await U(K.join(we,Ee),De,ce)}}let J=new Map,te=[];for(let[we,Pe]of E)for(let g of Pe){let{locationRoot:Ee,segments:De}=PQ(g,{skipPrefix:o.cwd}),ce=v.get(Ee),ne=Ee;if(ce){for(let ee of De)if(ne=K.join(ne,ee),ce=ce.children.get(ee),!ce)break;if(ce){let ee=f1e(ce.locator,we),Ie=e.get(ce.locator),ke=Ie.target,ht=ne,H=Ie.linkType;if(ee)J.has(ke)||J.set(ke,ht);else if(ke!==ht){let lt=W.parseLocator(ce.locator);W.isVirtualLocator(lt)&&(lt=W.devirtualizeLocator(lt)),te.push({srcDir:ke,dstDir:ht,linkType:H,realLocatorHash:lt.locatorHash})}}}}for(let[we,{locations:Pe}]of e.entries())for(let g of Pe){let{locationRoot:Ee,segments:De}=PQ(g,{skipPrefix:o.cwd}),ce=p.get(Ee),ne=v.get(Ee),ee=Ee,Ie=e.get(we),ke=W.parseLocator(we);W.isVirtualLocator(ke)&&(ke=W.devirtualizeLocator(ke));let ht=ke.locatorHash,H=Ie.target,lt=g;if(H===lt)continue;let Re=Ie.linkType;for(let Qe of De)ne=ne.children.get(Qe);if(!ce)te.push({srcDir:H,dstDir:lt,linkType:Re,realLocatorHash:ht});else for(let Qe of De)if(ee=K.join(ee,Qe),ce=ce.children.get(Qe),!ce){te.push({srcDir:H,dstDir:lt,linkType:Re,realLocatorHash:ht});break}}let le=Xs.progressViaCounter(te.length),pe=a.reportProgress(le),Ae=o.configuration.get(\"nmMode\"),ye={value:Ae},ae=o.configuration.get(\"winLinkType\");try{let we=ye.value===\"hardlinks-global\"?`${yq(o.configuration)}/v1`:null;if(we&&!await oe.existsPromise(we)){await oe.mkdirpPromise(we);for(let g=0;g<256;g++)await oe.mkdirPromise(K.join(we,g.toString(16).padStart(2,\"0\")))}for(let g of te)(g.linkType===\"SOFT\"||!J.has(g.srcDir))&&(J.set(g.srcDir,g.dstDir),await C({...g,globalHardlinksStore:we,nmMode:ye,windowsLinkType:ae,packageChecksum:u.get(g.realLocatorHash)||null}));await Promise.all(b),b.length=0;for(let g of te){let Ee=J.get(g.srcDir);g.linkType!==\"SOFT\"&&g.dstDir!==Ee&&await T(Ee,g.dstDir,{nmMode:ye})}await Promise.all(b),await oe.mkdirPromise(A,{recursive:!0});let Pe=await I1t(e,v,o.cwd,{loadManifest:n});await v1t(h,Pe,o.cwd,ae),await y1t(o,e,Pe,ye,{installChangedByUser:I}),Ae==\"hardlinks-global\"&&ye.value==\"hardlinks-local\"&&a.reportWarningOnce(74,\"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices\")}finally{pe.stop()}}async function v1t(t,e,r,o){for(let a of t.keys()){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=K.join(a,Pi,DQ);await oe.removePromise(n)}}for(let[a,n]of e){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let u=K.join(a,Pi,DQ),A=t.get(a)||new Map;await oe.mkdirPromise(u,{recursive:!0});for(let p of A.keys())n.has(p)||(await oe.removePromise(K.join(u,p)),process.platform===\"win32\"&&await oe.removePromise(K.join(u,`${p}.cmd`)));for(let[p,h]of n){let E=A.get(p),I=K.join(u,p);E!==h&&(process.platform===\"win32\"?await(0,p1e.default)(ue.fromPortablePath(h),ue.fromPortablePath(I),{createPwshFile:!1}):(await oe.removePromise(I),await mq(h,I,o),K.contains(r,await oe.realpathPromise(h))!==null&&await oe.chmodPromise(h,493)))}}}Ye();Pt();nA();var cv=class extends P0{constructor(){super(...arguments);this.mode=\"loose\"}makeInstaller(r){return new Eq(r)}},Eq=class extends dm{constructor(){super(...arguments);this.mode=\"loose\"}async transformPnpSettings(r){let o=new mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),a=$Ie(r,this.opts.project.cwd,o),{tree:n,errors:u}=JB(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:I,text:v}of u)this.opts.report.reportError(I,v);return}let A=new Map;r.fallbackPool=A;let p=(I,v)=>{let b=W.parseLocator(v.locator),C=W.stringifyIdent(b);C===I?A.set(I,b.reference):A.set(I,[C,b.reference])},h=K.join(this.opts.project.cwd,dr.nodeModules),E=n.get(h);if(!(typeof E>\"u\")){if(\"target\"in E)throw new Error(\"Assertion failed: Expected the root junction point to be a directory\");for(let I of E.dirList){let v=K.join(h,I),b=n.get(v);if(typeof b>\"u\")throw new Error(\"Assertion failed: Expected the child to have been registered\");if(\"target\"in b)p(I,b);else for(let C of b.dirList){let T=K.join(v,C),L=n.get(T);if(typeof L>\"u\")throw new Error(\"Assertion failed: Expected the subchild to have been registered\");if(\"target\"in L)p(`${I}/${C}`,L);else throw new Error(\"Assertion failed: Expected the leaf junction to be a package\")}}}}};var D1t={hooks:{cleanGlobalArtifacts:async t=>{let e=yq(t);await oe.removePromise(e)}},configuration:{nmHoistingLimits:{description:\"Prevents packages to be hoisted past specific levels\",type:\"STRING\",values:[\"workspaces\",\"dependencies\",\"none\"],default:\"none\"},nmMode:{description:\"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.\",type:\"STRING\",values:[\"classic\",\"hardlinks-local\",\"hardlinks-global\"],default:\"classic\"},nmSelfReferences:{description:\"Defines whether the linker should generate self-referencing symlinks for workspaces.\",type:\"BOOLEAN\",default:!0}},linkers:[lv,cv]},P1t=D1t;var EG={};Kt(EG,{NpmHttpFetcher:()=>fv,NpmRemapResolver:()=>pv,NpmSemverFetcher:()=>dl,NpmSemverResolver:()=>hv,NpmTagResolver:()=>gv,default:()=>Ovt,npmConfigUtils:()=>Zn,npmHttpUtils:()=>on,npmPublishUtils:()=>sw});Ye();var x1e=$e(zn());var Wn=\"npm:\";var on={};Kt(on,{AuthType:()=>P1e,customPackageError:()=>mm,del:()=>N1t,get:()=>ym,getIdentUrl:()=>SQ,getPackageMetadata:()=>KC,handleInvalidAuthenticationError:()=>b0,post:()=>T1t,put:()=>R1t});Ye();Ye();Pt();var Bq=$e(A2()),v1e=$e(S_()),D1e=$e(zn()),vq=Be(\"url\");var Zn={};Kt(Zn,{RegistryType:()=>w1e,getAuditRegistry:()=>S1t,getAuthConfiguration:()=>Iq,getDefaultRegistry:()=>uv,getPublishRegistry:()=>x1t,getRegistryConfiguration:()=>I1e,getScopeConfiguration:()=>wq,getScopeRegistry:()=>WC,normalizeRegistry:()=>oc});var w1e=(o=>(o.AUDIT_REGISTRY=\"npmAuditRegistry\",o.FETCH_REGISTRY=\"npmRegistryServer\",o.PUBLISH_REGISTRY=\"npmPublishRegistry\",o))(w1e||{});function oc(t){return t.replace(/\\/$/,\"\")}function S1t({configuration:t}){return uv({configuration:t,type:\"npmAuditRegistry\"})}function x1t(t,{configuration:e}){return t.publishConfig?.registry?oc(t.publishConfig.registry):t.name?WC(t.name.scope,{configuration:e,type:\"npmPublishRegistry\"}):uv({configuration:e,type:\"npmPublishRegistry\"})}function WC(t,{configuration:e,type:r=\"npmRegistryServer\"}){let o=wq(t,{configuration:e});if(o===null)return uv({configuration:e,type:r});let a=o.get(r);return a===null?uv({configuration:e,type:r}):oc(a)}function uv({configuration:t,type:e=\"npmRegistryServer\"}){let r=t.get(e);return oc(r!==null?r:t.get(\"npmRegistryServer\"))}function I1e(t,{configuration:e}){let r=e.get(\"npmRegistries\"),o=oc(t),a=r.get(o);if(typeof a<\"u\")return a;let n=r.get(o.replace(/^[a-z]+:/,\"\"));return typeof n<\"u\"?n:null}function wq(t,{configuration:e}){if(t===null)return null;let o=e.get(\"npmScopes\").get(t);return o||null}function Iq(t,{configuration:e,ident:r}){let o=r&&wq(r.scope,{configuration:e});return o?.get(\"npmAuthIdent\")||o?.get(\"npmAuthToken\")?o:I1e(t,{configuration:e})||e}var P1e=(a=>(a[a.NO_AUTH=0]=\"NO_AUTH\",a[a.BEST_EFFORT=1]=\"BEST_EFFORT\",a[a.CONFIGURATION=2]=\"CONFIGURATION\",a[a.ALWAYS_AUTH=3]=\"ALWAYS_AUTH\",a))(P1e||{});async function b0(t,{attemptedAs:e,registry:r,headers:o,configuration:a}){if(bQ(t))throw new zt(41,\"Invalid OTP token\");if(t.originalError?.name===\"HTTPError\"&&t.originalError?.response.statusCode===401)throw new zt(41,`Invalid authentication (${typeof e!=\"string\"?`as ${await M1t(r,o,{configuration:a})}`:`attempted as ${e}`})`)}function mm(t,e){let r=t.response?.statusCode;return r?r===404?\"Package not found\":r>=500&&r<600?`The registry appears to be down (using a ${de.applyHyperlink(e,\"local cache\",\"https://yarnpkg.com/advanced/lexicon#local-cache\")} might have protected you against such outages)`:null:null}function SQ(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var B1e=new Map;async function KC(t,{cache:e,project:r,registry:o,headers:a,version:n,...u}){return await je.getFactoryWithDefault(B1e,t.identHash,async()=>{let{configuration:A}=r;o=Av(A,{ident:t,registry:o});let p=Q1t(A,o),h=K.join(p,`${W.slugifyIdent(t)}.json`),E=null;if(!r.lockfileNeedsRefresh){try{E=await oe.readJsonPromise(h)}catch{}if(E){if(typeof n<\"u\"&&typeof E.metadata.versions[n]<\"u\")return E.metadata;if(A.get(\"enableOfflineMode\")){let I=structuredClone(E.metadata),v=new Set;if(e){for(let C of Object.keys(I.versions)){let T=W.makeLocator(t,`npm:${C}`),L=e.getLocatorMirrorPath(T);(!L||!oe.existsSync(L))&&(delete I.versions[C],v.add(C))}let b=I[\"dist-tags\"].latest;if(v.has(b)){let C=Object.keys(E.metadata.versions).sort(D1e.default.compare),T=C.indexOf(b);for(;v.has(C[T])&&T>=0;)T-=1;T>=0?I[\"dist-tags\"].latest=C[T]:delete I[\"dist-tags\"].latest}}return I}}}return await ym(SQ(t),{...u,customErrorMessage:mm,configuration:A,registry:o,ident:t,headers:{...a,[\"If-None-Match\"]:E?.etag,[\"If-Modified-Since\"]:E?.lastModified},wrapNetworkRequest:async I=>async()=>{let v=await I();if(v.statusCode===304){if(E===null)throw new Error(\"Assertion failed: cachedMetadata should not be null\");return{...v,body:E.metadata}}let b=b1t(JSON.parse(v.body.toString()));B1e.set(t.identHash,b);let C={metadata:b,etag:v.headers.etag,lastModified:v.headers[\"last-modified\"]},T=`${h}-${process.pid}.tmp`;return await oe.mkdirPromise(p,{recursive:!0}),await oe.writeJsonPromise(T,C,{compact:!0}),await oe.renamePromise(T,h),{...v,body:b}}})})}var S1e=[\"name\",\"dist.tarball\",\"bin\",\"scripts\",\"os\",\"cpu\",\"libc\",\"dependencies\",\"dependenciesMeta\",\"optionalDependencies\",\"peerDependencies\",\"peerDependenciesMeta\",\"deprecated\"];function b1t(t){return{\"dist-tags\":t[\"dist-tags\"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,(0,v1e.default)(r,S1e)]))}}var k1t=wn.makeHash(...S1e).slice(0,6);function Q1t(t,e){let r=F1t(t),o=new vq.URL(e);return K.join(r,k1t,o.hostname)}function F1t(t){return K.join(t.get(\"globalFolder\"),\"metadata/npm\")}async function ym(t,{configuration:e,headers:r,ident:o,authType:a,registry:n,...u}){n=Av(e,{ident:o,registry:n}),o&&o.scope&&typeof a>\"u\"&&(a=1);let A=await xQ(n,{authType:a,configuration:e,ident:o});A&&(r={...r,authorization:A});try{return await rn.get(t.charAt(0)===\"/\"?`${n}${t}`:t,{configuration:e,headers:r,...u})}catch(p){throw await b0(p,{registry:n,configuration:e,headers:r}),p}}async function T1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await xQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await rn.post(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!bQ(I)||p)throw await b0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await Dq(I,{configuration:o});let v={...a,...VC(p)};try{return await rn.post(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(b){throw await b0(b,{attemptedAs:r,registry:A,configuration:o,headers:a}),b}}}async function R1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await xQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await rn.put(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!bQ(I))throw await b0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await Dq(I,{configuration:o});let v={...a,...VC(p)};try{return await rn.put(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(b){throw await b0(b,{attemptedAs:r,registry:A,configuration:o,headers:a}),b}}}async function N1t(t,{attemptedAs:e,configuration:r,headers:o,ident:a,authType:n=3,registry:u,otp:A,...p}){u=Av(r,{ident:a,registry:u});let h=await xQ(u,{authType:n,configuration:r,ident:a});h&&(o={...o,authorization:h}),A&&(o={...o,...VC(A)});try{return await rn.del(u+t,{configuration:r,headers:o,...p})}catch(E){if(!bQ(E)||A)throw await b0(E,{attemptedAs:e,registry:u,configuration:r,headers:o}),E;A=await Dq(E,{configuration:r});let I={...o,...VC(A)};try{return await rn.del(`${u}${t}`,{configuration:r,headers:I,...p})}catch(v){throw await b0(v,{attemptedAs:e,registry:u,configuration:r,headers:o}),v}}}function Av(t,{ident:e,registry:r}){if(typeof r>\"u\"&&e)return WC(e.scope,{configuration:t});if(typeof r!=\"string\")throw new Error(\"Assertion failed: The registry should be a string\");return oc(r)}async function xQ(t,{authType:e=2,configuration:r,ident:o}){let a=Iq(t,{configuration:r,ident:o}),n=L1t(a,e);if(!n)return null;let u=await r.reduceHook(A=>A.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:o});if(u)return u;if(a.get(\"npmAuthToken\"))return`Bearer ${a.get(\"npmAuthToken\")}`;if(a.get(\"npmAuthIdent\")){let A=a.get(\"npmAuthIdent\");return A.includes(\":\")?`Basic ${Buffer.from(A).toString(\"base64\")}`:`Basic ${A}`}if(n&&e!==1)throw new zt(33,\"No authentication configured for request\");return null}function L1t(t,e){switch(e){case 2:return t.get(\"npmAlwaysAuth\");case 1:case 3:return!0;case 0:return!1;default:throw new Error(\"Unreachable\")}}async function M1t(t,e,{configuration:r}){if(typeof e>\"u\"||typeof e.authorization>\"u\")return\"an anonymous user\";try{return(await rn.get(new vq.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??\"an unknown user\"}catch{return\"an unknown user\"}}async function Dq(t,{configuration:e}){let r=t.originalError?.response.headers[\"npm-notice\"];if(r&&(await Nt.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\\/\\/\\S+)/g,de.pretty(e,\"$1\",de.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\\/\\/\\S+)/i);if(n&&Ji.openUrl){let{openNow:u}=await(0,Bq.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open this url now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});u&&(await Ji.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,\"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.\")))}}}),process.stdout.write(`\n`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||\"\";let{otp:o}=await(0,Bq.prompt)({type:\"password\",name:\"otp\",message:\"One-time password:\",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`\n`),o}function bQ(t){if(t.originalError?.name!==\"HTTPError\")return!1;try{return(t.originalError?.response.headers[\"www-authenticate\"].split(/,\\s*/).map(r=>r.toLowerCase())).includes(\"otp\")}catch{return!1}}function VC(t){return{[\"npm-otp\"]:t}}var fv=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o,params:a}=W.parseRange(e.reference);return!(!x1e.default.valid(o)||a===null||typeof a.__archiveUrl!=\"string\")}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let{params:o}=W.parseRange(e.reference);if(o===null||typeof o.__archiveUrl!=\"string\")throw new Error(\"Assertion failed: The archiveUrl querystring parameter should have been available\");let a=await ym(o.__archiveUrl,{customErrorMessage:mm,configuration:r.project.configuration,ident:e});return await Xi.convertToZip(a,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();var pv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!W.tryParseDescriptor(e.range.slice(Wn.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){let o=r.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return r.resolver.getResolutionDependencies(o,r)}async getCandidates(e,r,o){let a=o.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return await o.resolver.getCandidates(a,r,o)}async getSatisfying(e,r,o,a){let n=a.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return a.resolver.getSatisfying(n,r,o,a)}resolve(e,r){throw new Error(\"Unreachable\")}};Ye();Ye();var b1e=$e(zn()),k1e=Be(\"url\");var dl=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let o=new k1e.URL(e.reference);return!(!b1e.default.valid(o.pathname)||o.searchParams.has(\"__archiveUrl\"))}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o;try{o=await ym(dl.getLocatorUrl(e),{customErrorMessage:mm,configuration:r.project.configuration,ident:e})}catch{o=await ym(dl.getLocatorUrl(e).replace(/%2f/g,\"/\"),{customErrorMessage:mm,configuration:r.project.configuration,ident:e})}return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:o}){let a=WC(e.scope,{configuration:o}),n=dl.getLocatorUrl(e);return r=r.replace(/^https?:(\\/\\/(?:[^/]+\\.)?npmjs.org(?:$|\\/))/,\"https:$1\"),a=a.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r=r.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r===a+n||r===a+n.replace(/%2f/g,\"/\")}static getLocatorUrl(e){let r=kr.clean(e.reference.slice(Wn.length));if(r===null)throw new zt(10,\"The npm semver resolver got selected, but the version isn't semver\");return`${SQ(e)}/-/${e.name}-${r}.tgz`}};Ye();Ye();Ye();var Pq=$e(zn());var kQ=W.makeIdent(null,\"node-gyp\"),O1t=/\\b(node-gyp|prebuild-install)\\b/,hv=class{supportsDescriptor(e,r){return e.range.startsWith(Wn)?!!kr.validRange(e.range.slice(Wn.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o}=W.parseRange(e.reference);return!!Pq.default.valid(o)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=kr.validRange(e.range.slice(Wn.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);let n=await KC(e,{cache:o.fetchOptions?.cache,project:o.project,version:Pq.default.valid(a.raw)?a.raw:void 0}),u=je.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new kr.SemVer(h);if(a.test(E))return E}catch{}return je.mapAndFilter.skip}),A=u.filter(h=>!n.versions[h.raw].deprecated),p=A.length>0?A:u;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=W.makeLocator(e,`${Wn}${h.raw}`),I=n.versions[h.raw].dist.tarball;return dl.isConventionalTarballUrl(E,I,{configuration:o.project.configuration})?E:W.bindLocator(E,{__archiveUrl:I})})}async getSatisfying(e,r,o,a){let n=kr.validRange(e.range.slice(Wn.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);return{locators:je.mapAndFilter(o,p=>{if(p.identHash!==e.identHash)return je.mapAndFilter.skip;let h=W.tryParseRange(p.reference,{requireProtocol:Wn});if(!h)return je.mapAndFilter.skip;let E=new kr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:je.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:o}=W.parseRange(e.reference),a=kr.clean(o);if(a===null)throw new zt(10,\"The npm semver resolver got selected, but the version isn't semver\");let n=await KC(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,\"versions\"))throw new zt(15,'Registry returned invalid data for - missing \"versions\" field');if(!Object.hasOwn(n.versions,a))throw new zt(16,`Registry failed to return reference \"${a}\"`);let u=new Mt;if(u.load(n.versions[a]),!u.dependencies.has(kQ.identHash)&&!u.peerDependencies.has(kQ.identHash)){for(let A of u.scripts.values())if(A.match(O1t)){u.dependencies.set(kQ.identHash,W.makeDescriptor(kQ,\"latest\"));break}}return{...e,version:a,languageName:\"node\",linkType:\"HARD\",conditions:u.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(u.dependencies),peerDependencies:u.peerDependencies,dependenciesMeta:u.dependenciesMeta,peerDependenciesMeta:u.peerDependenciesMeta,bin:u.bin}}};Ye();Ye();var Q1e=$e(zn());var gv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!QE.test(e.range.slice(Wn.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(Wn.length),n=await KC(e,{cache:o.fetchOptions?.cache,project:o.project});if(!Object.hasOwn(n,\"dist-tags\"))throw new zt(15,'Registry returned invalid data - missing \"dist-tags\" field');let u=n[\"dist-tags\"];if(!Object.hasOwn(u,a))throw new zt(16,`Registry failed to return tag \"${a}\"`);let A=u[a],p=W.makeLocator(e,`${Wn}${A}`),h=n.versions[A].dist.tarball;return dl.isConventionalTarballUrl(p,h,{configuration:o.project.configuration})?[p]:[W.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,o,a){let n=[];for(let u of o){if(u.identHash!==e.identHash)continue;let A=W.tryParseRange(u.reference,{requireProtocol:Wn});if(!(!A||!Q1e.default.valid(A.selector))){if(A.params?.__archiveUrl){let p=W.makeRange({protocol:Wn,selector:A.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(W.makeDescriptor(e,p),r,a);if(u.reference!==h.reference)continue}n.push(u)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error(\"Unreachable\")}};var sw={};Kt(sw,{getGitHead:()=>Lvt,getPublishAccess:()=>wBe,getReadmeContent:()=>IBe,makePublishBody:()=>Nvt});Ye();Ye();Pt();var hG={};Kt(hG,{PackCommand:()=>O0,default:()=>mvt,packUtils:()=>CA});Ye();Ye();Ye();Pt();qt();var CA={};Kt(CA,{genPackList:()=>$Q,genPackStream:()=>pG,genPackageManifest:()=>lBe,hasPackScripts:()=>AG,prepareForPack:()=>fG});Ye();Pt();var uG=$e(Zo()),oBe=$e(rBe()),aBe=Be(\"zlib\"),ovt=[\"/package.json\",\"/readme\",\"/readme.*\",\"/license\",\"/license.*\",\"/licence\",\"/licence.*\",\"/changelog\",\"/changelog.*\"],avt=[\"/package.tgz\",\".github\",\".git\",\".hg\",\"node_modules\",\".npmignore\",\".gitignore\",\".#*\",\".DS_Store\"];async function AG(t){return!!(un.hasWorkspaceScript(t,\"prepack\")||un.hasWorkspaceScript(t,\"postpack\"))}async function fG(t,{report:e},r){await un.maybeExecuteWorkspaceLifecycleScript(t,\"prepack\",{report:e});try{let o=K.join(t.cwd,Mt.fileName);await oe.existsPromise(o)&&await t.manifest.loadFile(o,{baseFs:oe}),await r()}finally{await un.maybeExecuteWorkspaceLifecycleScript(t,\"postpack\",{report:e})}}async function pG(t,e){typeof e>\"u\"&&(e=await $Q(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(K.normalize(n));for(let n of t.manifest.bin.values())r.add(K.normalize(n));let o=oBe.default.pack();process.nextTick(async()=>{for(let n of e){let u=K.normalize(n),A=K.resolve(t.cwd,u),p=K.join(\"package\",u),h=await oe.lstatPromise(A),E={name:p,mtime:new Date(vi.SAFE_TIME*1e3)},I=r.has(u)?493:420,v,b,C=new Promise((L,U)=>{v=L,b=U}),T=L=>{L?b(L):v()};if(h.isFile()){let L;u===\"package.json\"?L=Buffer.from(JSON.stringify(await lBe(t),null,2)):L=await oe.readFilePromise(A),o.entry({...E,mode:I,type:\"file\"},L,T)}else h.isSymbolicLink()?o.entry({...E,mode:I,type:\"symlink\",linkname:await oe.readlinkPromise(A)},T):T(new Error(`Unsupported file type ${h.mode} for ${ue.fromPortablePath(u)}`));await C}o.finalize()});let a=(0,aBe.createGzip)();return o.pipe(a),a}async function lBe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function $Q(t){let e=t.project,r=e.configuration,o={accept:[],reject:[]};for(let I of avt)o.reject.push(I);for(let I of ovt)o.accept.push(I);o.reject.push(r.get(\"rcFilename\"));let a=I=>{if(I===null||!I.startsWith(`${t.cwd}/`))return;let v=K.relative(t.cwd,I),b=K.resolve(Bt.root,v);o.reject.push(b)};a(K.resolve(e.cwd,dr.lockfile)),a(r.get(\"cacheFolder\")),a(r.get(\"globalFolder\")),a(r.get(\"installStatePath\")),a(r.get(\"virtualFolder\")),a(r.get(\"yarnPath\")),await r.triggerHook(I=>I.populateYarnPaths,e,I=>{a(I)});for(let I of e.workspaces){let v=K.relative(t.cwd,I.cwd);v!==\"\"&&!v.match(/^(\\.\\.)?\\//)&&o.reject.push(`/${v}`)}let n={accept:[],reject:[]},u=t.manifest.publishConfig?.main??t.manifest.main,A=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;u!=null&&n.accept.push(K.resolve(Bt.root,u)),A!=null&&n.accept.push(K.resolve(Bt.root,A)),typeof p==\"string\"&&n.accept.push(K.resolve(Bt.root,p));for(let I of h.values())n.accept.push(K.resolve(Bt.root,I));if(p instanceof Map)for(let[I,v]of p.entries())n.accept.push(K.resolve(Bt.root,I)),typeof v==\"string\"&&n.accept.push(K.resolve(Bt.root,v));let E=t.manifest.files!==null;if(E){n.reject.push(\"/*\");for(let I of t.manifest.files)cBe(n.accept,I,{cwd:Bt.root})}return await lvt(t.cwd,{hasExplicitFileList:E,globalList:o,ignoreList:n})}async function lvt(t,{hasExplicitFileList:e,globalList:r,ignoreList:o}){let a=[],n=new _u(t),u=[[Bt.root,[o]]];for(;u.length>0;){let[A,p]=u.pop(),h=await n.lstatPromise(A);if(!iBe(A,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(A),I=!1,v=!1;if(!e||A!==Bt.root)for(let T of E)I=I||T===\".gitignore\",v=v||T===\".npmignore\";let b=v?await nBe(n,A,\".npmignore\"):I?await nBe(n,A,\".gitignore\"):null,C=b!==null?[b].concat(p):p;iBe(A,{globalList:r,ignoreLists:p})&&(C=[...p,{accept:[],reject:[\"**/*\"]}]);for(let T of E)u.push([K.resolve(A,T),C])}else(h.isFile()||h.isSymbolicLink())&&a.push(K.relative(Bt.root,A))}return a.sort()}async function nBe(t,e,r){let o={accept:[],reject:[]},a=await t.readFilePromise(K.join(e,r),\"utf8\");for(let n of a.split(/\\n/g))cBe(o.reject,n,{cwd:e});return o}function cvt(t,{cwd:e}){let r=t[0]===\"!\";return r&&(t=t.slice(1)),t.match(/\\.{0,1}\\//)&&(t=K.resolve(e,t)),r&&(t=`!${t}`),t}function cBe(t,e,{cwd:r}){let o=e.trim();o===\"\"||o[0]===\"#\"||t.push(cvt(o,{cwd:r}))}function iBe(t,{globalList:e,ignoreLists:r}){let o=ZQ(t,e.accept);if(o!==0)return o===2;let a=ZQ(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let u=ZQ(t,n.accept);if(u!==0)return u===2;let A=ZQ(t,n.reject);if(A!==0)return A===1}return!1}function ZQ(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a][0]!==\"!\"?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a].slice(1)));return sBe(t,o)?2:sBe(t,r)?1:0}function sBe(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a].includes(\"/\")?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a]));return!!(uG.default.isMatch(t,r,{dot:!0,nocase:!0})||uG.default.isMatch(t,o,{dot:!0,basename:!0,nocase:!0}))}var O0=class extends ut{constructor(){super(...arguments);this.installIfNeeded=ge.Boolean(\"--install-if-needed\",!1,{description:\"Run a preliminary `yarn install` if the package contains build scripts\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the file paths without actually generating the package archive\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.out=ge.String(\"-o,--out\",{description:\"Create the archive at the specified path\"});this.filename=ge.String(\"--filename\",{hidden:!0})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await AG(a)&&(this.installIfNeeded?await o.install({cache:await Lr.find(r),report:new Qi}):await o.restoreInstallState());let n=this.out??this.filename,u=typeof n<\"u\"?K.resolve(this.context.cwd,uvt(n,{workspace:a})):K.resolve(a.cwd,\"package.tgz\");return(await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await fG(a,{report:p},async()=>{p.reportJson({base:ue.fromPortablePath(a.cwd)});let h=await $Q(a);for(let E of h)p.reportInfo(null,ue.fromPortablePath(E)),p.reportJson({location:ue.fromPortablePath(E)});if(!this.dryRun){let E=await pG(a,h),I=oe.createWriteStream(u);E.pipe(I),await new Promise(v=>{I.on(\"finish\",v)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${de.pretty(r,u,de.Type.PATH)}`),p.reportJson({output:ue.fromPortablePath(u)}))})).exitCode()}};O0.paths=[[\"pack\"]],O0.usage=nt.Usage({description:\"generate a tarball from the active workspace\",details:\"\\n      This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\\n\\n      If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\\n    \",examples:[[\"Create an archive from the active workspace\",\"yarn pack\"],[\"List the files that would be made part of the workspace's archive\",\"yarn pack --dry-run\"],[\"Name and output the archive in a dedicated folder\",\"yarn pack --out /artifacts/%s-%v.tgz\"]]});function uvt(t,{workspace:e}){let r=t.replace(\"%s\",Avt(e)).replace(\"%v\",fvt(e));return ue.toPortablePath(r)}function Avt(t){return t.manifest.name!==null?W.slugifyIdent(t.manifest.name):\"package\"}function fvt(t){return t.manifest.version!==null?t.manifest.version:\"unknown\"}var pvt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],hvt=\"workspace:\",gvt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let o of pvt)for(let a of t.manifest.getForScope(o).values()){let n=r.tryWorkspaceByDescriptor(a),u=W.parseRange(a.range);if(u.protocol===hvt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new zt(21,`${W.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let A;W.areDescriptorsEqual(a,n.anchoredDescriptor)||u.selector===\"*\"?A=n.manifest.version??\"0.0.0\":u.selector===\"~\"||u.selector===\"^\"?A=`${u.selector}${n.manifest.version??\"0.0.0\"}`:A=u.selector;let p=o===\"dependencies\"?W.makeDescriptor(a,\"unknown\"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?\"optionalDependencies\":o;e[h][W.stringifyIdent(a)]=A}}},dvt={hooks:{beforeWorkspacePacking:gvt},commands:[O0]},mvt=dvt;var yBe=Be(\"crypto\"),EBe=$e(mBe()),CBe=Be(\"url\");async function Nvt(t,e,{access:r,tag:o,registry:a,gitHead:n}){let u=t.manifest.name,A=t.manifest.version,p=W.stringifyIdent(u),h=(0,yBe.createHash)(\"sha1\").update(e).digest(\"hex\"),E=EBe.default.fromData(e).toString(),I=r??wBe(t,u),v=await IBe(t),b=await CA.genPackageManifest(t),C=`${p}-${A}.tgz`,T=new CBe.URL(`${oc(a)}/${p}/-/${C}`);return{_id:p,_attachments:{[C]:{content_type:\"application/octet-stream\",data:e.toString(\"base64\"),length:e.length}},name:p,access:I,[\"dist-tags\"]:{[o]:A},versions:{[A]:{...b,_id:`${p}@${A}`,name:p,version:A,gitHead:n,dist:{shasum:h,integrity:E,tarball:T.toString()}}},readme:v}}async function Lvt(t){try{let{stdout:e}=await Ur.execvp(\"git\",[\"rev-parse\",\"--revs-only\",\"HEAD\"],{cwd:t});return e.trim()===\"\"?void 0:e.trim()}catch{return}}function wBe(t,e){let r=t.project.configuration;return t.manifest.publishConfig&&typeof t.manifest.publishConfig.access==\"string\"?t.manifest.publishConfig.access:r.get(\"npmPublishAccess\")!==null?r.get(\"npmPublishAccess\"):e.scope?\"restricted\":\"public\"}async function IBe(t){let e=ue.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${W.stringifyIdent(r)}\n`;try{a=await oe.readFilePromise(e,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return a;throw n}return a}var yG={npmAlwaysAuth:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"BOOLEAN\",default:!1},npmAuthIdent:{description:\"Authentication identity for the npm registry (_auth in npm and yarn v1)\",type:\"SECRET\",default:null},npmAuthToken:{description:\"Authentication token for the npm registry (_authToken in npm and yarn v1)\",type:\"SECRET\",default:null}},BBe={npmAuditRegistry:{description:\"Registry to query for audit reports\",type:\"STRING\",default:null},npmPublishRegistry:{description:\"Registry to push packages to\",type:\"STRING\",default:null},npmRegistryServer:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"STRING\",default:\"https://registry.yarnpkg.com\"}},Mvt={configuration:{...yG,...BBe,npmScopes:{description:\"Settings per package scope\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...yG,...BBe}}},npmRegistries:{description:\"Settings per registry\",type:\"MAP\",normalizeKeys:oc,valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...yG}}}},fetchers:[fv,dl],resolvers:[pv,hv,gv]},Ovt=Mvt;var xG={};Kt(xG,{NpmAuditCommand:()=>_0,NpmInfoCommand:()=>H0,NpmLoginCommand:()=>j0,NpmLogoutCommand:()=>q0,NpmPublishCommand:()=>G0,NpmTagAddCommand:()=>W0,NpmTagListCommand:()=>Y0,NpmTagRemoveCommand:()=>V0,NpmWhoamiCommand:()=>K0,default:()=>Gvt,npmAuditTypes:()=>Tv,npmAuditUtils:()=>eF});Ye();Ye();qt();var vG=$e(Zo());Za();var Tv={};Kt(Tv,{Environment:()=>Qv,Severity:()=>Fv});var Qv=(o=>(o.All=\"all\",o.Production=\"production\",o.Development=\"development\",o))(Qv||{}),Fv=(n=>(n.Info=\"info\",n.Low=\"low\",n.Moderate=\"moderate\",n.High=\"high\",n.Critical=\"critical\",n))(Fv||{});var eF={};Kt(eF,{allSeverities:()=>ow,getPackages:()=>BG,getReportTree:()=>wG,getSeverityInclusions:()=>CG,getTopLevelDependencies:()=>IG});Ye();var vBe=$e(zn());var ow=[\"info\",\"low\",\"moderate\",\"high\",\"critical\"];function CG(t){if(typeof t>\"u\")return new Set(ow);let e=ow.indexOf(t),r=ow.slice(e);return new Set(r)}function wG(t){let e={},r={children:e};for(let[o,a]of je.sortMap(Object.entries(t),n=>n[0]))for(let n of je.sortMap(a,u=>`${u.id}`))e[`${o}/${n.id}`]={value:de.tuple(de.Type.IDENT,W.parseIdent(o)),children:{ID:typeof n.id<\"u\"&&{label:\"ID\",value:de.tuple(de.Type.ID,n.id)},Issue:{label:\"Issue\",value:de.tuple(de.Type.NO_HINT,n.title)},URL:typeof n.url<\"u\"&&{label:\"URL\",value:de.tuple(de.Type.URL,n.url)},Severity:{label:\"Severity\",value:de.tuple(de.Type.NO_HINT,n.severity)},[\"Vulnerable Versions\"]:{label:\"Vulnerable Versions\",value:de.tuple(de.Type.RANGE,n.vulnerable_versions)},[\"Tree Versions\"]:{label:\"Tree Versions\",children:[...n.versions].sort(vBe.default.compare).map(u=>({value:de.tuple(de.Type.REFERENCE,u)}))},Dependents:{label:\"Dependents\",children:je.sortMap(n.dependents,u=>W.stringifyLocator(u)).map(u=>({value:de.tuple(de.Type.LOCATOR,u)}))}}};return r}function IG(t,e,{all:r,environment:o}){let a=[],n=r?t.workspaces:[e],u=[\"all\",\"production\"].includes(o),A=[\"all\",\"development\"].includes(o);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!A:!u)||a.push({workspace:p,dependency:h});return a}function BG(t,e,{recursive:r}){let o=new Map,a=new Set,n=[],u=(A,p)=>{let h=t.storedResolutions.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");if(!a.has(h))a.add(h);else return;let E=t.storedPackages.get(h);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");if(W.ensureDevirtualizedLocator(E).reference.startsWith(\"npm:\")&&E.version!==null){let v=W.stringifyIdent(E),b=je.getMapWithDefault(o,v);je.getArrayWithDefault(b,E.version).push(A)}if(r)for(let v of E.dependencies.values())n.push([E,v])};for(let{workspace:A,dependency:p}of e)n.push([A.anchoredLocator,p]);for(;n.length>0;){let[A,p]=n.shift();u(A,p)}return o}var _0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Audit dependencies from all workspaces\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Audit transitive dependencies as well\"});this.environment=ge.String(\"--environment\",\"all\",{description:\"Which environments to cover\",validator:Vs(Qv)});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.noDeprecations=ge.Boolean(\"--no-deprecations\",!1,{description:\"Don't warn about deprecated packages\"});this.severity=ge.String(\"--severity\",\"info\",{description:\"Minimal severity requested for packages to be displayed\",validator:Vs(Fv)});this.excludes=ge.Array(\"--exclude\",[],{description:\"Array of glob patterns of packages to exclude from audit\"});this.ignores=ge.Array(\"--ignore\",[],{description:\"Array of glob patterns of advisory ID's to ignore in the audit report\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=IG(o,a,{all:this.all,environment:this.environment}),u=BG(o,n,{recursive:this.recursive}),A=Array.from(new Set([...r.get(\"npmAuditExcludePackages\"),...this.excludes])),p=Object.create(null);for(let[L,U]of u)A.some(J=>vG.default.isMatch(L,J))||(p[L]=[...U.keys()]);let h=Zn.getAuditRegistry({configuration:r}),E,I=await AA.start({configuration:r,stdout:this.context.stdout},async()=>{let L=on.post(\"/-/npm/v1/security/advisories/bulk\",p,{authType:on.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,le])=>{let pe=await on.getPackageMetadata(W.parseIdent(te),{project:o});return je.mapAndFilter(le,Ae=>{let{deprecated:ye}=pe.versions[Ae];return ye?[te,Ae,ye]:je.mapAndFilter.skip})})),J=await L;for(let[te,le,pe]of U.flat(1))Object.hasOwn(J,te)&&J[te].some(Ae=>kr.satisfiesWithPrereleases(le,Ae.vulnerable_versions))||(J[te]??=[],J[te].push({id:`${te} (deprecation)`,title:pe.trim()||\"This package has been deprecated.\",severity:\"moderate\",vulnerable_versions:le}));E=J});if(I.hasErrors())return I.exitCode();let v=CG(this.severity),b=Array.from(new Set([...r.get(\"npmAuditIgnoreAdvisories\"),...this.ignores])),C=Object.create(null);for(let[L,U]of Object.entries(E)){let J=U.filter(te=>!vG.default.isMatch(`${te.id}`,b)&&v.has(te.severity));J.length>0&&(C[L]=J.map(te=>{let le=u.get(L);if(typeof le>\"u\")throw new Error(\"Assertion failed: Expected the registry to only return packages that were requested\");let pe=[...le.keys()].filter(ye=>kr.satisfiesWithPrereleases(ye,te.vulnerable_versions)),Ae=new Map;for(let ye of pe)for(let ae of le.get(ye))Ae.set(ae.locatorHash,ae);return{...te,versions:pe,dependents:[...Ae.values()]}}))}let T=Object.keys(C).length>0;return T?($s.emitTree(wG(C),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Nt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async L=>{L.reportInfo(1,\"No audit suggestions\")}),T?1:0)}};_0.paths=[[\"npm\",\"audit\"]],_0.usage=nt.Usage({description:\"perform a vulnerability audit against the installed packages\",details:`\n      This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths).\n\n      For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \\`-A,--all\\`. To extend this search to both direct and transitive dependencies, use \\`-R,--recursive\\`.\n\n      Applying the \\`--severity\\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${ow.map(r=>`\\`${r}\\``).join(\", \")}.\n\n      If the \\`--json\\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages.\n\n      If certain packages produce false positives for a particular environment, the \\`--exclude\\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \\`npmAuditExcludePackages\\` option.\n\n      If particular advisories are needed to be ignored, the \\`--ignore\\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \\`npmAuditIgnoreAdvisories\\` option.\n\n      To understand the dependency tree requiring vulnerable packages, check the raw report with the \\`--json\\` flag or use \\`yarn why package\\` to get more information as to who depends on them.\n    `,examples:[[\"Checks for known security issues with the installed packages. The output is a list of known issues.\",\"yarn npm audit\"],[\"Audit dependencies in all workspaces\",\"yarn npm audit --all\"],[\"Limit auditing to `dependencies` (excludes `devDependencies`)\",\"yarn npm audit --environment production\"],[\"Show audit report as valid JSON\",\"yarn npm audit --json\"],[\"Audit all direct and transitive dependencies\",\"yarn npm audit --recursive\"],[\"Output moderate (or more severe) vulnerabilities\",\"yarn npm audit --severity moderate\"],[\"Exclude certain packages\",\"yarn npm audit --exclude package1 --exclude package2\"],[\"Ignore specific advisories\",\"yarn npm audit --ignore 1234567 --ignore 7654321\"]]});Ye();Ye();Pt();qt();var DG=$e(zn()),PG=Be(\"util\"),H0=class extends ut{constructor(){super(...arguments);this.fields=ge.String(\"-f,--fields\",{description:\"A comma-separated list of manifest fields that should be displayed\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.packages=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=typeof this.fields<\"u\"?new Set([\"name\",...this.fields.split(/\\s*,\\s*/)]):null,n=[],u=!1,A=await Nt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h===\".\"){let le=o.topLevelWorkspace;if(!le.manifest.name)throw new it(`Missing ${de.pretty(r,\"name\",de.Type.CODE)} field in ${ue.fromPortablePath(K.join(le.cwd,dr.manifest))}`);E=W.makeDescriptor(le.manifest.name,\"unknown\")}else E=W.parseDescriptor(h);let I=on.getIdentUrl(E),v=SG(await on.get(I,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:on.customPackageError})),b=Object.keys(v.versions).sort(DG.default.compareLoose),T=v[\"dist-tags\"].latest||b[b.length-1],L=kr.validRange(E.range);if(L){let le=DG.default.maxSatisfying(b,L);le!==null?T=le:(p.reportWarning(0,`Unmet range ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0)}else Object.hasOwn(v[\"dist-tags\"],E.range)?T=v[\"dist-tags\"][E.range]:E.range!==\"unknown\"&&(p.reportWarning(0,`Unknown tag ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0);let U=v.versions[T],J={...v,...U,version:T,versions:b},te;if(a!==null){te={};for(let le of a){let pe=J[le];if(typeof pe<\"u\")te[le]=pe;else{p.reportWarning(1,`The ${de.pretty(r,le,de.Type.CODE)} field doesn't exist inside ${W.prettyIdent(r,E)}'s information`),u=!0;continue}}}else this.json||(delete J.dist,delete J.readme,delete J.users),te=J;p.reportJson(te),this.json||n.push(te)}});PG.inspect.styles.name=\"cyan\";for(let p of n)(p!==n[0]||u)&&this.context.stdout.write(`\n`),this.context.stdout.write(`${(0,PG.inspect)(p,{depth:1/0,colors:!0,compact:!1})}\n`);return A.exitCode()}};H0.paths=[[\"npm\",\"info\"]],H0.usage=nt.Usage({category:\"Npm-related commands\",description:\"show information about a package\",details:\"\\n      This command fetches information about a package from the npm registry and prints it in a tree format.\\n\\n      The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\\n\\n      Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\\n\\n      If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\\n\\n      By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\\n    \",examples:[[\"Show all available information about react (except the `dist`, `readme`, and `users` fields)\",\"yarn npm info react\"],[\"Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)\",\"yarn npm info react --json\"],[\"Show all available information about react@16.12.0\",\"yarn npm info react@16.12.0\"],[\"Show all available information about react@next\",\"yarn npm info react@next\"],[\"Show the description of react\",\"yarn npm info react --fields description\"],[\"Show all available versions of react\",\"yarn npm info react --fields versions\"],[\"Show the readme of react\",\"yarn npm info react --fields readme\"],[\"Show a few fields of react\",\"yarn npm info react --fields homepage,repository\"]]});function SG(t){if(Array.isArray(t)){let e=[];for(let r of t)r=SG(r),r&&e.push(r);return e}else if(typeof t==\"object\"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith(\"_\"))continue;let o=SG(t[r]);o&&(e[r]=o)}return e}else return t||null}Ye();Ye();qt();var DBe=$e(A2()),j0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Login to the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Login to the publish registry\"});this.alwaysAuth=ge.Boolean(\"--always-auth\",{description:\"Set the npmAlwaysAuth configuration\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=await tF({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Nt.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=await _vt({configuration:r,registry:o,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),A=`/-/user/org.couchdb.user:${encodeURIComponent(u.name)}`,p=await on.put(A,u,{attemptedAs:u.name,configuration:r,registry:o,jsonResponse:!0,authType:on.AuthType.NO_AUTH});return await Uvt(o,p.token,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,\"Successfully logged in\")})).exitCode()}};j0.paths=[[\"npm\",\"login\"]],j0.usage=nt.Usage({category:\"Npm-related commands\",description:\"store new login info to access the npm registry\",details:\"\\n      This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\\n\\n      Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n    \",examples:[[\"Login to the default registry\",\"yarn npm login\"],[\"Login to the registry linked to the @my-scope registry\",\"yarn npm login --scope my-scope\"],[\"Login to the publish registry for the current package\",\"yarn npm login --publish\"]]});async function tF({scope:t,publish:e,configuration:r,cwd:o}){return t&&e?Zn.getScopeRegistry(t,{configuration:r,type:Zn.RegistryType.PUBLISH_REGISTRY}):t?Zn.getScopeRegistry(t,{configuration:r}):e?Zn.getPublishRegistry((await AC(r,o)).manifest,{configuration:r}):Zn.getDefaultRegistry({configuration:r})}async function Uvt(t,e,{alwaysAuth:r,scope:o}){let a=u=>A=>{let p=je.isIndexableObject(A)?A:{},h=p[u],E=je.isIndexableObject(h)?h:{};return{...p,[u]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=o?{npmScopes:a(o)}:{npmRegistries:a(t)};return await Ve.updateHomeConfiguration(n)}async function _vt({configuration:t,registry:e,report:r,stdin:o,stdout:a}){r.reportInfo(0,`Logging in to ${de.pretty(t,e,de.Type.URL)}`);let n=!1;if(e.match(/^https:\\/\\/npm\\.pkg\\.github\\.com(\\/|$)/)&&(r.reportInfo(0,\"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions.\"),n=!0),r.reportSeparator(),t.env.YARN_IS_TEST_ENV)return{name:t.env.YARN_INJECT_NPM_USER||\"\",password:t.env.YARN_INJECT_NPM_PASSWORD||\"\"};let{username:u,password:A}=await(0,DBe.prompt)([{type:\"input\",name:\"username\",message:\"Username:\",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a},{type:\"password\",name:\"password\",message:n?\"Token:\":\"Password:\",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a}]);return r.reportSeparator(),{name:u,password:A}}Ye();Ye();qt();var aw=new Set([\"npmAuthIdent\",\"npmAuthToken\"]),q0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Logout of the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Logout of the publish registry\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Logout of all registries\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o=async()=>{let n=await tF({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),u=await Ve.find(this.context.cwd,this.context.plugins),A=W.makeIdent(this.scope??null,\"pkg\");return!Zn.getAuthConfiguration(n,{configuration:u,ident:A}).get(\"npmAuthToken\")};return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await jvt(),n.reportInfo(0,\"Successfully logged out from everything\")),this.scope){await PBe(\"npmScopes\",this.scope),await o()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,\"Scope authentication settings removed, but some other ones settings still apply to it\");return}let u=await tF({configuration:r,cwd:this.context.cwd,publish:this.publish});await PBe(\"npmRegistries\",u),await o()?n.reportInfo(0,`Successfully logged out from ${u}`):n.reportWarning(0,\"Registry authentication settings removed, but some other ones settings still apply to it\")})).exitCode()}};q0.paths=[[\"npm\",\"logout\"]],q0.usage=nt.Usage({category:\"Npm-related commands\",description:\"logout of the npm registry\",details:\"\\n      This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\\n\\n      Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n\\n      Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\\n    \",examples:[[\"Logout of the default registry\",\"yarn npm logout\"],[\"Logout of the @my-scope scope\",\"yarn npm logout --scope my-scope\"],[\"Logout of the publish registry for the current package\",\"yarn npm logout --publish\"],[\"Logout of all registries\",\"yarn npm logout --all\"]]});function Hvt(t,e){let r=t[e];if(!je.isIndexableObject(r))return!1;let o=new Set(Object.keys(r));if([...aw].every(n=>!o.has(n)))return!1;for(let n of aw)o.delete(n);if(o.size===0)return t[e]=void 0,!0;let a={...r};for(let n of aw)delete a[n];return t[e]=a,!0}async function jvt(){let t=e=>{let r=!1,o=je.isIndexableObject(e)?{...e}:{};o.npmAuthToken&&(delete o.npmAuthToken,r=!0);for(let a of Object.keys(o))Hvt(o,a)&&(r=!0);if(Object.keys(o).length!==0)return r?o:e};return await Ve.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function PBe(t,e){return await Ve.updateHomeConfiguration({[t]:r=>{let o=je.isIndexableObject(r)?r:{};if(!Object.hasOwn(o,e))return r;let a=o[e],n=je.isIndexableObject(a)?a:{},u=new Set(Object.keys(n));if([...aw].every(p=>!u.has(p)))return r;for(let p of aw)u.delete(p);if(u.size===0)return Object.keys(o).length===1?void 0:{...o,[e]:void 0};let A={};for(let p of aw)A[p]=void 0;return{...o,[e]:{...n,...A}}}})}Ye();qt();var G0=class extends ut{constructor(){super(...arguments);this.access=ge.String(\"--access\",{description:\"The access for the published package (public or restricted)\"});this.tag=ge.String(\"--tag\",\"latest\",{description:\"The tag on the registry that the package should be attached to\"});this.tolerateRepublish=ge.Boolean(\"--tolerate-republish\",!1,{description:\"Warn and exit when republishing an already existing version of a package\"});this.otp=ge.String(\"--otp\",{description:\"The OTP token to use with the command\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);if(a.manifest.private)throw new it(\"Private workspaces cannot be published\");if(a.manifest.name===null||a.manifest.version===null)throw new it(\"Workspaces must have valid names and versions to be published on an external registry\");await o.restoreInstallState();let n=a.manifest.name,u=a.manifest.version,A=Zn.getPublishRegistry(a.manifest,{configuration:r});return(await Nt.start({configuration:r,stdout:this.context.stdout},async h=>{if(this.tolerateRepublish)try{let E=await on.get(on.getIdentUrl(n),{configuration:r,registry:A,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,\"versions\"))throw new zt(15,'Registry returned invalid data for - missing \"versions\" field');if(Object.hasOwn(E.versions,u)){h.reportWarning(0,`Registry already knows about version ${u}; skipping.`);return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await un.maybeExecuteWorkspaceLifecycleScript(a,\"prepublish\",{report:h}),await CA.prepareForPack(a,{report:h},async()=>{let E=await CA.genPackList(a);for(let T of E)h.reportInfo(null,T);let I=await CA.genPackStream(a,E),v=await je.bufferStream(I),b=await sw.getGitHead(a.cwd),C=await sw.makePublishBody(a,v,{access:this.access,tag:this.tag,registry:A,gitHead:b});await on.put(on.getIdentUrl(n),C,{configuration:r,registry:A,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,\"Package archive published\")})).exitCode()}};G0.paths=[[\"npm\",\"publish\"]],G0.usage=nt.Usage({category:\"Npm-related commands\",description:\"publish the active workspace to the npm registry\",details:'\\n      This command will pack the active workspace into a fresh archive and upload it to the npm registry.\\n\\n      The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\\n\\n      Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka \"private packages\"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\\n    ',examples:[[\"Publish the active workspace\",\"yarn npm publish\"]]});Ye();qt();var SBe=$e(zn());Ye();Pt();qt();var Y0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String({required:!1})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n;if(typeof this.package<\"u\")n=W.parseIdent(this.package);else{if(!a)throw new rr(o.cwd,this.context.cwd);if(!a.manifest.name)throw new it(`Missing 'name' field in ${ue.fromPortablePath(K.join(a.cwd,dr.manifest))}`);n=a.manifest.name}let u=await Rv(n,r),p={children:je.sortMap(Object.entries(u),([h])=>h).map(([h,E])=>({value:de.tuple(de.Type.RESOLUTION,{descriptor:W.makeDescriptor(n,h),locator:W.makeLocator(n,E)})}))};return $s.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};Y0.paths=[[\"npm\",\"tag\",\"list\"]],Y0.usage=nt.Usage({category:\"Npm-related commands\",description:\"list all dist-tags of a package\",details:`\n      This command will list all tags of a package from the npm registry.\n\n      If the package is not specified, Yarn will default to the current workspace.\n    `,examples:[[\"List all tags of package `my-pkg`\",\"yarn npm tag list my-pkg\"]]});async function Rv(t,e){let r=`/-/package${on.getIdentUrl(t)}/dist-tags`;return on.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:on.customPackageError})}var W0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseDescriptor(this.package,!0),u=n.range;if(!SBe.default.valid(u))throw new it(`The range ${de.pretty(r,n.range,de.Type.RANGE)} must be a valid semver version`);let A=Zn.getPublishRegistry(a.manifest,{configuration:r}),p=de.pretty(r,n,de.Type.IDENT),h=de.pretty(r,u,de.Type.RANGE),E=de.pretty(r,this.tag,de.Type.CODE);return(await Nt.start({configuration:r,stdout:this.context.stdout},async v=>{let b=await Rv(n,r);Object.hasOwn(b,this.tag)&&b[this.tag]===u&&v.reportWarning(0,`Tag ${E} is already set to version ${h}`);let C=`/-/package${on.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await on.put(C,u,{configuration:r,registry:A,ident:n,jsonRequest:!0,jsonResponse:!0}),v.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};W0.paths=[[\"npm\",\"tag\",\"add\"]],W0.usage=nt.Usage({category:\"Npm-related commands\",description:\"add a tag for a specific version of a package\",details:`\n      This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten.\n    `,examples:[[\"Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`\",\"yarn npm tag add my-pkg@2.3.4-beta.4 beta\"]]});Ye();qt();var V0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){if(this.tag===\"latest\")throw new it(\"The 'latest' tag cannot be removed.\");let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseIdent(this.package),u=Zn.getPublishRegistry(a.manifest,{configuration:r}),A=de.pretty(r,this.tag,de.Type.CODE),p=de.pretty(r,n,de.Type.IDENT),h=await Rv(n,r);if(!Object.hasOwn(h,this.tag))throw new it(`${A} is not a tag of package ${p}`);return(await Nt.start({configuration:r,stdout:this.context.stdout},async I=>{let v=`/-/package${on.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await on.del(v,{configuration:r,registry:u,ident:n,jsonResponse:!0}),I.reportInfo(0,`Tag ${A} removed from package ${p}`)})).exitCode()}};V0.paths=[[\"npm\",\"tag\",\"remove\"]],V0.usage=nt.Usage({category:\"Npm-related commands\",description:\"remove a tag from a package\",details:`\n      This command will remove a tag from a package from the npm registry.\n    `,examples:[[\"Remove the `beta` tag from package `my-pkg`\",\"yarn npm tag remove my-pkg beta\"]]});Ye();Ye();qt();var K0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Print username for the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Print username for the publish registry\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),o;return this.scope&&this.publish?o=Zn.getScopeRegistry(this.scope,{configuration:r,type:Zn.RegistryType.PUBLISH_REGISTRY}):this.scope?o=Zn.getScopeRegistry(this.scope,{configuration:r}):this.publish?o=Zn.getPublishRegistry((await AC(r,this.context.cwd)).manifest,{configuration:r}):o=Zn.getDefaultRegistry({configuration:r}),(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let u;try{u=await on.get(\"/-/whoami\",{configuration:r,registry:o,authType:on.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?W.makeIdent(this.scope,\"\"):void 0})}catch(A){if(A.response?.statusCode===401||A.response?.statusCode===403){n.reportError(41,\"Authentication failed - your credentials may have expired\");return}else throw A}n.reportInfo(0,u.username)})).exitCode()}};K0.paths=[[\"npm\",\"whoami\"]],K0.usage=nt.Usage({category:\"Npm-related commands\",description:\"display the name of the authenticated user\",details:\"\\n      Print the username associated with the current authentication settings to the standard output.\\n\\n      When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\\n\\n      When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\\n    \",examples:[[\"Print username for the default registry\",\"yarn npm whoami\"],[\"Print username for the registry on a given scope\",\"yarn npm whoami --scope company\"]]});var qvt={configuration:{npmPublishAccess:{description:\"Default access of the published packages\",type:\"STRING\",default:null},npmAuditExcludePackages:{description:\"Array of glob patterns of packages to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:\"Array of glob patterns of advisory IDs to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0}},commands:[_0,H0,j0,q0,G0,W0,Y0,V0,K0]},Gvt=qvt;var NG={};Kt(NG,{PatchCommand:()=>X0,PatchCommitCommand:()=>z0,PatchFetcher:()=>Uv,PatchResolver:()=>_v,default:()=>lDt,patchUtils:()=>Dm});Ye();Ye();Pt();nA();var Dm={};Kt(Dm,{applyPatchFile:()=>nF,diffFolders:()=>TG,ensureUnpatchedDescriptor:()=>bG,ensureUnpatchedLocator:()=>sF,extractPackageToDisk:()=>FG,extractPatchFlags:()=>RBe,isParentRequired:()=>QG,isPatchDescriptor:()=>iF,isPatchLocator:()=>J0,loadPatchFiles:()=>Ov,makeDescriptor:()=>oF,makeLocator:()=>kG,makePatchHash:()=>RG,parseDescriptor:()=>Lv,parseLocator:()=>Mv,parsePatchFile:()=>Nv,unpatchDescriptor:()=>sDt,unpatchLocator:()=>oDt});Ye();Pt();Ye();Pt();var Yvt=/^@@ -(\\d+)(,(\\d+))? \\+(\\d+)(,(\\d+))? @@.*/;function lw(t){return K.relative(Bt.root,K.resolve(Bt.root,ue.toPortablePath(t)))}function Wvt(t){let e=t.trim().match(Yvt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var Vvt=420,Kvt=493;var xBe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),Jvt=t=>({header:Wvt(t),parts:[]}),zvt={[\"@\"]:\"header\",[\"-\"]:\"deletion\",[\"+\"]:\"insertion\",[\" \"]:\"context\",[\"\\\\\"]:\"pragma\",undefined:\"context\"};function Xvt(t){let e=[],r=xBe(),o=\"parsing header\",a=null,n=null;function u(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function A(){u(),e.push(r),r=xBe()}for(let p=0;p<t.length;p++){let h=t[p];if(o===\"parsing header\")if(h.startsWith(\"@@\"))o=\"parsing hunks\",r.hunks=[],p-=1;else if(h.startsWith(\"diff --git \")){r&&r.diffLineFromPath&&A();let E=h.match(/^diff --git a\\/(.*?) b\\/(.*?)\\s*$/);if(!E)throw new Error(`Bad diff line: ${h}`);r.diffLineFromPath=E[1],r.diffLineToPath=E[2]}else if(h.startsWith(\"old mode \"))r.oldMode=h.slice(9).trim();else if(h.startsWith(\"new mode \"))r.newMode=h.slice(9).trim();else if(h.startsWith(\"deleted file mode \"))r.deletedFileMode=h.slice(18).trim();else if(h.startsWith(\"new file mode \"))r.newFileMode=h.slice(14).trim();else if(h.startsWith(\"rename from \"))r.renameFrom=h.slice(12).trim();else if(h.startsWith(\"rename to \"))r.renameTo=h.slice(10).trim();else if(h.startsWith(\"index \")){let E=h.match(/(\\w+)\\.\\.(\\w+)/);if(!E)continue;r.beforeHash=E[1],r.afterHash=E[2]}else h.startsWith(\"semver exclusivity \")?r.semverExclusivity=h.slice(19).trim():h.startsWith(\"--- \")?r.fromPath=h.slice(6).trim():h.startsWith(\"+++ \")&&(r.toPath=h.slice(6).trim());else{let E=zvt[h[0]]||null;switch(E){case\"header\":u(),a=Jvt(h);break;case null:o=\"parsing header\",A(),p-=1;break;case\"pragma\":{if(!h.startsWith(\"\\\\ No newline at end of file\"))throw new Error(`Unrecognized pragma in patch file: ${h}`);if(!n)throw new Error(\"Bad parser state: No newline at EOF pragma encountered without context\");n.noNewlineAtEndOfFile=!0}break;case\"context\":case\"deletion\":case\"insertion\":{if(!a)throw new Error(\"Bad parser state: Hunk lines encountered before hunk header\");n&&n.type!==E&&(a.parts.push(n),n=null),n||(n={type:E,lines:[],noNewlineAtEndOfFile:!1}),n.lines.push(h.slice(1))}break;default:je.assertNever(E);break}}}A();for(let{hunks:p}of e)if(p)for(let h of p)$vt(h);return e}function Zvt(t){let e=[];for(let r of t){let{semverExclusivity:o,diffLineFromPath:a,diffLineToPath:n,oldMode:u,newMode:A,deletedFileMode:p,newFileMode:h,renameFrom:E,renameTo:I,beforeHash:v,afterHash:b,fromPath:C,toPath:T,hunks:L}=r,U=E?\"rename\":p?\"file deletion\":h?\"file creation\":L&&L.length>0?\"patch\":\"mode change\",J=null;switch(U){case\"rename\":{if(!E||!I)throw new Error(\"Bad parser state: rename from & to not given\");e.push({type:\"rename\",semverExclusivity:o,fromPath:lw(E),toPath:lw(I)}),J=I}break;case\"file deletion\":{let te=a||C;if(!te)throw new Error(\"Bad parse state: no path given for file deletion\");e.push({type:\"file deletion\",semverExclusivity:o,hunk:L&&L[0]||null,path:lw(te),mode:rF(p),hash:v})}break;case\"file creation\":{let te=n||T;if(!te)throw new Error(\"Bad parse state: no path given for file creation\");e.push({type:\"file creation\",semverExclusivity:o,hunk:L&&L[0]||null,path:lw(te),mode:rF(h),hash:b})}break;case\"patch\":case\"mode change\":J=T||n;break;default:je.assertNever(U);break}J&&u&&A&&u!==A&&e.push({type:\"mode change\",semverExclusivity:o,path:lw(J),oldMode:rF(u),newMode:rF(A)}),J&&L&&L.length&&e.push({type:\"patch\",semverExclusivity:o,path:lw(J),hunks:L,beforeHash:v,afterHash:b})}if(e.length===0)throw new Error(\"Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string\");return e}function rF(t){let e=parseInt(t,8)&511;if(e!==Vvt&&e!==Kvt)throw new Error(`Unexpected file mode string: ${t}`);return e}function Nv(t){let e=t.split(/\\n/g);return e[e.length-1]===\"\"&&e.pop(),Zvt(Xvt(e))}function $vt(t){let e=0,r=0;for(let{type:o,lines:a}of t.parts)switch(o){case\"context\":r+=a.length,e+=a.length;break;case\"deletion\":e+=a.length;break;case\"insertion\":r+=a.length;break;default:je.assertNever(o);break}if(e!==t.header.original.length||r!==t.header.patched.length){let o=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${o(t.header.original.length)} ${o(t.header.patched.length)} @@, got @@ ${o(e)} ${o(r)} @@)`)}}Ye();Pt();var cw=class extends Error{constructor(r,o){super(`Cannot apply hunk #${r+1}`);this.hunk=o}};async function uw(t,e,r){let o=await t.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await t.lutimesPromise(e,o.atime,o.mtime)}async function nF(t,{baseFs:e=new Rn,dryRun:r=!1,version:o=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&o!==null&&!kr.satisfiesWithPrereleases(o,a.semverExclusivity)))switch(a.type){case\"file deletion\":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await uw(e,K.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case\"rename\":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await uw(e,K.dirname(a.fromPath),async()=>{await uw(e,K.dirname(a.toPath),async()=>{await uw(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case\"file creation\":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(`\n`)+(a.hunk.parts[0].noNewlineAtEndOfFile?\"\":`\n`):\"\";await e.mkdirpPromise(K.dirname(a.path),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,vi.SAFE_TIME,vi.SAFE_TIME)}break;case\"patch\":await uw(e,a.path,async()=>{await rDt(a,{baseFs:e,dryRun:r})});break;case\"mode change\":{let u=(await e.statPromise(a.path)).mode;if(bBe(a.newMode)!==bBe(u))continue;await uw(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:je.assertNever(a);break}}function bBe(t){return(t&64)>0}function kBe(t){return t.replace(/\\s+$/,\"\")}function tDt(t,e){return kBe(t)===kBe(e)}async function rDt({hunks:t,path:e},{baseFs:r,dryRun:o=!1}){let a=await r.statSync(e).mode,u=(await r.readFileSync(e,\"utf8\")).split(/\\n/),A=[],p=0,h=0;for(let I of t){let v=Math.max(h,I.header.patched.start+p),b=Math.max(0,v-h),C=Math.max(0,u.length-v-I.header.original.length),T=Math.max(b,C),L=0,U=0,J=null;for(;L<=T;){if(L<=b&&(U=v-L,J=QBe(I,u,U),J!==null)){L=-L;break}if(L<=C&&(U=v+L,J=QBe(I,u,U),J!==null))break;L+=1}if(J===null)throw new cw(t.indexOf(I),I);A.push(J),p+=L,h=U+I.header.original.length}if(o)return;let E=0;for(let I of A)for(let v of I)switch(v.type){case\"splice\":{let b=v.index+E;u.splice(b,v.numToDelete,...v.linesToInsert),E+=v.linesToInsert.length-v.numToDelete}break;case\"pop\":u.pop();break;case\"push\":u.push(v.line);break;default:je.assertNever(v);break}await r.writeFilePromise(e,u.join(`\n`),{mode:a})}function QBe(t,e,r){let o=[];for(let a of t.parts)switch(a.type){case\"context\":case\"deletion\":{for(let n of a.lines){let u=e[r];if(u==null||!tDt(u,n))return null;r+=1}a.type===\"deletion\"&&(o.push({type:\"splice\",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&o.push({type:\"push\",line:\"\"}))}break;case\"insertion\":o.push({type:\"splice\",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&o.push({type:\"pop\"});break;default:je.assertNever(a.type);break}return o}var iDt=/^builtin<([^>]+)>$/;function Aw(t,e){let{protocol:r,source:o,selector:a,params:n}=W.parseRange(t);if(r!==\"patch:\")throw new Error(\"Invalid patch range\");if(o===null)throw new Error(\"Patch locators must explicitly define their source\");let u=a?a.split(/&/).map(E=>ue.toPortablePath(E)):[],A=n&&typeof n.locator==\"string\"?W.parseLocator(n.locator):null,p=n&&typeof n.version==\"string\"?n.version:null,h=e(o);return{parentLocator:A,sourceItem:h,patchPaths:u,sourceVersion:p}}function iF(t){return t.range.startsWith(\"patch:\")}function J0(t){return t.reference.startsWith(\"patch:\")}function Lv(t){let{sourceItem:e,...r}=Aw(t.range,W.parseDescriptor);return{...r,sourceDescriptor:e}}function Mv(t){let{sourceItem:e,...r}=Aw(t.reference,W.parseLocator);return{...r,sourceLocator:e}}function sDt(t){let{sourceItem:e}=Aw(t.range,W.parseDescriptor);return e}function oDt(t){let{sourceItem:e}=Aw(t.reference,W.parseLocator);return e}function bG(t){if(!iF(t))return t;let{sourceItem:e}=Aw(t.range,W.parseDescriptor);return e}function sF(t){if(!J0(t))return t;let{sourceItem:e}=Aw(t.reference,W.parseLocator);return e}function FBe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:o,patchHash:a},n){let u=t!==null?{locator:W.stringifyLocator(t)}:{},A=typeof o<\"u\"?{version:o}:{},p=typeof a<\"u\"?{hash:a}:{};return W.makeRange({protocol:\"patch:\",source:n(e),selector:r.join(\"&\"),params:{...A,...p,...u}})}function oF(t,{parentLocator:e,sourceDescriptor:r,patchPaths:o}){return W.makeDescriptor(t,FBe({parentLocator:e,sourceItem:r,patchPaths:o},W.stringifyDescriptor))}function kG(t,{parentLocator:e,sourcePackage:r,patchPaths:o,patchHash:a}){return W.makeLocator(t,FBe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:o,patchHash:a},W.stringifyLocator))}function TBe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:o},a){let n=a.lastIndexOf(\"!\");n!==-1&&(a=a.slice(n+1));let u=a.match(iDt);return u!==null?o(u[1]):a.startsWith(\"~/\")?r(a.slice(2)):K.isAbsolute(a)?t(a):e(a)}function RBe(t){let e=t.lastIndexOf(\"!\");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has(\"optional\")}}function QG(t){return TBe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function Ov(t,e,r){let o=t!==null?await r.fetcher.fetch(t,r):null,a=o&&o.localPath?{packageFs:new gn(Bt.root),prefixPath:K.relative(Bt.root,o.localPath)}:o;o&&o!==a&&o.releaseFs&&o.releaseFs();let n=await je.releaseAfterUseAsync(async()=>await Promise.all(e.map(async u=>{let A=RBe(u),p=await TBe({onAbsolute:async h=>await oe.readFilePromise(h,\"utf8\"),onRelative:async h=>{if(a===null)throw new Error(\"Assertion failed: The parent locator should have been fetched\");return await a.packageFs.readFilePromise(K.join(a.prefixPath,h),\"utf8\")},onProject:async h=>await oe.readFilePromise(K.join(r.project.cwd,h),\"utf8\"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},u);return{...A,source:p}})));for(let u of n)typeof u.source==\"string\"&&(u.source=u.source.replace(/\\r\\n?/g,`\n`));return n}async function FG(t,{cache:e,project:r}){let o=r.storedPackages.get(t.locatorHash);if(typeof o>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let a=sF(t),n=r.storedChecksums,u=new Qi,A=await oe.mktempPromise(),p=K.join(A,\"source\"),h=K.join(A,\"user\"),E=K.join(A,\".yarn-patch.json\"),I=r.configuration.makeFetcher(),v=[];try{let b,C;if(t.locatorHash===a.locatorHash){let T=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u});v.push(()=>T.releaseFs?.()),b=T,C=T}else b=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>b.releaseFs?.()),C=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>C.releaseFs?.());await Promise.all([oe.copyPromise(p,b.prefixPath,{baseFs:b.packageFs}),oe.copyPromise(h,C.prefixPath,{baseFs:C.packageFs}),oe.writeJsonPromise(E,{locator:W.stringifyLocator(t),version:o.version})])}finally{for(let b of v)b()}return oe.detachTemp(A),h}async function TG(t,e){let r=ue.fromPortablePath(t).replace(/\\\\/g,\"/\"),o=ue.fromPortablePath(e).replace(/\\\\/g,\"/\"),{stdout:a,stderr:n}=await Ur.execvp(\"git\",[\"-c\",\"core.safecrlf=false\",\"diff\",\"--src-prefix=a/\",\"--dst-prefix=b/\",\"--ignore-cr-at-eol\",\"--full-index\",\"--no-index\",\"--no-renames\",\"--text\",r,o],{cwd:ue.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:\"1\",HOME:\"\",XDG_CONFIG_HOME:\"\",USERPROFILE:\"\"}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH.\nThe following error was reported by 'git':\n${n}`);let u=r.startsWith(\"/\")?A=>A.slice(1):A=>A;return a.replace(new RegExp(`(a|b)(${je.escapeRegExp(`/${u(r)}/`)})`,\"g\"),\"$1/\").replace(new RegExp(`(a|b)${je.escapeRegExp(`/${u(o)}/`)}`,\"g\"),\"$1/\").replace(new RegExp(je.escapeRegExp(`${r}/`),\"g\"),\"\").replace(new RegExp(je.escapeRegExp(`${o}/`),\"g\"),\"\")}function RG(t,e){let r=[];for(let{source:o}of t){if(o===null)continue;let a=Nv(o);for(let n of a){let{semverExclusivity:u,...A}=n;u!==null&&e!==null&&!kr.satisfiesWithPrereleases(e,u)||r.push(JSON.stringify(A))}}return wn.makeHash(`${3}`,...r).slice(0,6)}Ye();function NBe(t,{configuration:e,report:r}){for(let o of t.parts)for(let a of o.lines)switch(o.type){case\"context\":r.reportInfo(null,`  ${de.pretty(e,a,\"grey\")}`);break;case\"deletion\":r.reportError(28,`- ${de.pretty(e,a,de.Type.REMOVED)}`);break;case\"insertion\":r.reportError(28,`+ ${de.pretty(e,a,de.Type.ADDED)}`);break;default:je.assertNever(o.type)}}var Uv=class{supports(e,r){return!!J0(e)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async patchPackage(e,r){let{parentLocator:o,sourceLocator:a,sourceVersion:n,patchPaths:u}=Mv(e),A=await Ov(o,u,r),p=await oe.mktempPromise(),h=K.join(p,\"current.zip\"),E=await r.fetcher.fetch(a,r),I=W.getIdentVendorPath(e),v=new zi(h,{create:!0,level:r.project.configuration.get(\"compressionLevel\")});await je.releaseAfterUseAsync(async()=>{await v.copyPromise(I,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),v.saveAndClose();for(let{source:b,optional:C}of A){if(b===null)continue;let T=new zi(h,{level:r.project.configuration.get(\"compressionLevel\")}),L=new gn(K.resolve(Bt.root,I),{baseFs:T});try{await nF(Nv(b),{baseFs:L,version:n})}catch(U){if(!(U instanceof cw))throw U;let J=r.project.configuration.get(\"enableInlineHunks\"),te=!J&&!C?\" (set enableInlineHunks for details)\":\"\",le=`${W.prettyLocator(r.project.configuration,e)}: ${U.message}${te}`,pe=Ae=>{!J||NBe(U.hunk,{configuration:r.project.configuration,report:Ae})};if(T.discardAndClose(),C){r.report.reportWarningOnce(66,le,{reportExtra:pe});continue}else throw new zt(66,le,pe)}T.saveAndClose()}return new zi(h,{level:r.project.configuration.get(\"compressionLevel\")})}};Ye();var _v=class{supportsDescriptor(e,r){return!!iF(e)}supportsLocator(e,r){return!!J0(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){let{patchPaths:a}=Lv(e);return a.every(n=>!QG(n))?e:W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:o}=Lv(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(o)}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{parentLocator:a,patchPaths:n}=Lv(e),u=await Ov(a,n,o.fetchOptions),A=r.sourceDescriptor;if(typeof A>\"u\")throw new Error(\"Assertion failed: The dependency should have been resolved\");let p=RG(u,A.version);return[kG(e,{parentLocator:a,sourcePackage:A,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:o}=Mv(e);return{...await r.resolver.resolve(o,r),...e}}};Ye();Pt();qt();var z0=class extends ut{constructor(){super(...arguments);this.save=ge.Boolean(\"-s,--save\",!1,{description:\"Add the patch to your resolution entries\"});this.patchFolder=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=K.resolve(this.context.cwd,ue.toPortablePath(this.patchFolder)),u=K.join(n,\"../source\"),A=K.join(n,\"../.yarn-patch.json\");if(!oe.existsSync(u))throw new it(\"The argument folder didn't get created by 'yarn patch'\");let p=await TG(u,n),h=await oe.readJsonPromise(A),E=W.parseLocator(h.locator,!0);if(!o.storedPackages.has(E.locatorHash))throw new it(\"No package found in the project for the given locator\");if(!this.save){this.context.stdout.write(p);return}let I=r.get(\"patchFolder\"),v=K.join(I,`${W.slugifyLocator(E)}.patch`);await oe.mkdirPromise(I,{recursive:!0}),await oe.writeFilePromise(v,p);let b=[],C=new Map;for(let T of o.storedPackages.values()){if(W.isVirtualLocator(T))continue;let L=T.dependencies.get(E.identHash);if(!L)continue;let U=W.ensureDevirtualizedDescriptor(L),J=bG(U),te=o.storedResolutions.get(J.descriptorHash);if(!te)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");if(!o.storedPackages.get(te))throw new Error(\"Assertion failed: Expected the package to have been registered\");let pe=o.tryWorkspaceByLocator(T);if(pe)b.push(pe);else{let Ae=o.originalPackages.get(T.locatorHash);if(!Ae)throw new Error(\"Assertion failed: Expected the original package to have been registered\");let ye=Ae.dependencies.get(L.identHash);if(!ye)throw new Error(\"Assertion failed: Expected the original dependency to have been registered\");C.set(ye.descriptorHash,ye)}}for(let T of b)for(let L of Mt.hardDependencies){let U=T.manifest[L].get(E.identHash);if(!U)continue;let J=oF(U,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[K.join(dr.home,K.relative(o.cwd,v))]});T.manifest[L].set(U.identHash,J)}for(let T of C.values()){let L=oF(T,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[K.join(dr.home,K.relative(o.cwd,v))]});o.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:W.stringifyIdent(L),description:T.range}},reference:L.range})}await o.persist()}};z0.paths=[[\"patch-commit\"]],z0.usage=nt.Usage({description:\"generate a patch out of a directory\",details:\"\\n      By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\\n\\n      With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\\n\\n      Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\\n    \"});Ye();Pt();qt();var X0=class extends ut{constructor(){super(...arguments);this.update=ge.Boolean(\"-u,--update\",!1,{description:\"Reapply local patches that already apply to this packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=W.parseLocator(this.package);if(u.reference===\"unknown\"){let A=je.mapAndFilter([...o.storedPackages.values()],p=>p.identHash!==u.identHash?je.mapAndFilter.skip:W.isVirtualLocator(p)?je.mapAndFilter.skip:J0(p)!==this.update?je.mapAndFilter.skip:p);if(A.length===0)throw new it(\"No package found in the project for the given locator\");if(A.length>1)throw new it(`Multiple candidate packages found; explicitly choose one of them (use \\`yarn why <package>\\` to get more information as to who depends on them):\n${A.map(p=>`\n- ${W.prettyLocator(r,p)}`).join(\"\")}`);u=A[0]}if(!o.storedPackages.has(u.locatorHash))throw new it(\"No package found in the project for the given locator\");await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=sF(u),h=await FG(u,{cache:n,project:o});A.reportJson({locator:W.stringifyLocator(p),path:ue.fromPortablePath(h)});let E=this.update?\" along with its current modifications\":\"\";A.reportInfo(0,`Package ${W.prettyLocator(r,p)} got extracted with success${E}!`),A.reportInfo(0,`You can now edit the following folder: ${de.pretty(r,ue.fromPortablePath(h),\"magenta\")}`),A.reportInfo(0,`Once you are done run ${de.pretty(r,`yarn patch-commit -s ${process.platform===\"win32\"?'\"':\"\"}${ue.fromPortablePath(h)}${process.platform===\"win32\"?'\"':\"\"}`,\"cyan\")} and Yarn will store a patchfile based on your changes.`)})}};X0.paths=[[\"patch\"]],X0.usage=nt.Usage({description:\"prepare a package for patching\",details:\"\\n      This command will cause a package to be extracted in a temporary directory intended to be editable at will.\\n\\n      Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\\n\\n      Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\\n    \"});var aDt={configuration:{enableInlineHunks:{description:\"If true, the installs will print unmatched patch hunks\",type:\"BOOLEAN\",default:!1},patchFolder:{description:\"Folder where the patch files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/patches\"}},commands:[z0,X0],fetchers:[Uv],resolvers:[_v]},lDt=aDt;var OG={};Kt(OG,{PnpmLinker:()=>Hv,default:()=>pDt});Ye();Pt();qt();var Hv=class{getCustomDataKey(){return JSON.stringify({name:\"PnpmLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the pnpm linker to be enabled\");let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>\"u\")throw new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\\/node_modules\\/(@[^/]*\\/)?[^/]+)(\\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let u=e,A=e;do{A=u,u=K.dirname(A);let p=a.locatorByPath.get(A);if(p)return p}while(u!==A);return null}makeInstaller(e){return new LG(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"pnpm\"}},LG=class{constructor(e){this.opts=e;this.asyncActions=new je.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=PD(oe,{indexPath:K.join(e.project.configuration.get(\"globalFolder\"),\"index\")})}attachCustomData(e){}async installPackage(e,r,o){switch(e.linkType){case\"SOFT\":return this.installPackageSoft(e,r,o);case\"HARD\":return this.installPackageHard(e,r,o)}throw new Error(\"Assertion failed: Unsupported package link type\")}async installPackageSoft(e,r,o){let a=K.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?K.join(a,dr.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,o){let a=cDt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,W.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await oe.mkdirPromise(n,{recursive:!0}),await oe.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:\"HardlinkFromIndex\",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let A=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e,p={manifest:await Mt.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Mt,misc:{hasBindingGyp:mA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(A,e.version),E=mA.extractBuildRequest(e,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\"||!LBe(e,{project:this.opts.project}))return;let o=this.customData.pathsByLocator.get(e.locatorHash);if(typeof o>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(e)})`);let{dependenciesLocation:a}=o;!a||this.asyncActions.reduce(e.locatorHash,async n=>{await oe.mkdirPromise(a,{recursive:!0});let u=await uDt(a),A=new Map(u),p=[n],h=(I,v)=>{let b=v;LBe(v,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,\"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies\"),b=W.devirtualizeLocator(v));let C=this.customData.pathsByLocator.get(b.locatorHash);if(typeof C>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(v)})`);let T=W.stringifyIdent(I),L=K.join(a,T),U=K.relative(K.dirname(L),C.packageLocation),J=A.get(T);A.delete(T),p.push(Promise.resolve().then(async()=>{if(J){if(J.isSymbolicLink()&&await oe.readlinkPromise(L)===U)return;await oe.removePromise(L)}await oe.mkdirpPromise(K.dirname(L)),process.platform==\"win32\"&&this.opts.project.configuration.get(\"winLinkType\")===\"junctions\"?await oe.symlinkPromise(C.packageLocation,L,\"junction\"):await oe.symlinkPromise(U,L)}))},E=!1;for(let[I,v]of r)I.identHash===e.identHash&&(E=!0),h(I,v);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(W.convertLocatorToDescriptor(e),e),p.push(ADt(a,A)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the pnpm linker\")}async finalizeInstall(){let e=OBe(this.opts.project);if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\")await oe.removePromise(e);else{let r;try{r=new Set(await oe.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:o}of this.customData.pathsByLocator.values()){if(!o)continue;let a=K.contains(e,o);if(a===null)continue;let[n]=a.split(K.sep);r.delete(n)}await Promise.all([...r].map(async o=>{await oe.removePromise(K.join(e,o))}))}return await this.asyncActions.wait(),await MG(e),this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\"&&await MG(MBe(this.opts.project)),{customData:this.customData}}};function MBe(t){return K.join(t.cwd,dr.nodeModules)}function OBe(t){return K.join(MBe(t),\".store\")}function cDt(t,{project:e}){let r=W.slugifyLocator(t),o=OBe(e),a=K.join(o,r,\"package\"),n=K.join(o,r,dr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function LBe(t,{project:e}){return!W.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function uDt(t){let e=new Map,r=[];try{r=await oe.readdirPromise(t,{withFileTypes:!0})}catch(o){if(o.code!==\"ENOENT\")throw o}try{for(let o of r)if(!o.name.startsWith(\".\"))if(o.name.startsWith(\"@\")){let a=await oe.readdirPromise(K.join(t,o.name),{withFileTypes:!0});if(a.length===0)e.set(o.name,o);else for(let n of a)e.set(`${o.name}/${n.name}`,n)}else e.set(o.name,o)}catch(o){if(o.code!==\"ENOENT\")throw o}return e}async function ADt(t,e){let r=[],o=new Set;for(let a of e.keys()){r.push(oe.removePromise(K.join(t,a)));let n=W.tryParseIdent(a)?.scope;n&&o.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...o].map(a=>MG(K.join(t,a)))))}async function MG(t){try{await oe.rmdirPromise(t)}catch(e){if(e.code!==\"ENOENT\"&&e.code!==\"ENOTEMPTY\")throw e}}var fDt={linkers:[Hv]},pDt=fDt;var YG={};Kt(YG,{StageCommand:()=>Z0,default:()=>vDt,stageUtils:()=>lF});Ye();Pt();qt();Ye();Pt();var lF={};Kt(lF,{ActionType:()=>UG,checkConsensus:()=>aF,expandDirectory:()=>jG,findConsensus:()=>qG,findVcsRoot:()=>_G,genCommitMessage:()=>GG,getCommitPrefix:()=>UBe,isYarnFile:()=>HG});Pt();var UG=(n=>(n[n.CREATE=0]=\"CREATE\",n[n.DELETE=1]=\"DELETE\",n[n.ADD=2]=\"ADD\",n[n.REMOVE=3]=\"REMOVE\",n[n.MODIFY=4]=\"MODIFY\",n))(UG||{});async function _G(t,{marker:e}){do if(!oe.existsSync(K.join(t,e)))t=K.dirname(t);else return t;while(t!==\"/\");return null}function HG(t,{roots:e,names:r}){if(r.has(K.basename(t)))return!0;do if(!e.has(t))t=K.dirname(t);else return!0;while(t!==\"/\");return!1}function jG(t){let e=[],r=[t];for(;r.length>0;){let o=r.pop(),a=oe.readdirSync(o);for(let n of a){let u=K.resolve(o,n);oe.lstatSync(u).isDirectory()?r.push(u):e.push(u)}}return e}function aF(t,e){let r=0,o=0;for(let a of t)a!==\"wip\"&&(e.test(a)?r+=1:o+=1);return r>=o}function qG(t){let e=aF(t,/^(\\w\\(\\w+\\):\\s*)?\\w+s/),r=aF(t,/^(\\w\\(\\w+\\):\\s*)?[A-Z]/),o=aF(t,/^\\w\\(\\w+\\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:o}}function UBe(t){return t.useComponent?\"chore(yarn): \":\"\"}var hDt=new Map([[0,\"create\"],[1,\"delete\"],[2,\"add\"],[3,\"remove\"],[4,\"update\"]]);function GG(t,e){let r=UBe(t),o=[],a=e.slice().sort((n,u)=>n[0]-u[0]);for(;a.length>0;){let[n,u]=a.shift(),A=hDt.get(n);t.useUpperCase&&o.length===0&&(A=`${A[0].toUpperCase()}${A.slice(1)}`),t.useThirdPerson&&(A+=\"s\");let p=[u];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=\" (and one other)\":p.length>1&&(h+=` (and ${p.length} others)`),o.push(`${A} ${h}`)}return`${r}${o.join(\", \")}`}var gDt=\"Commit generated via `yarn stage`\",dDt=11;async function _Be(t){let{code:e,stdout:r}=await Ur.execvp(\"git\",[\"log\",\"-1\",\"--pretty=format:%H\"],{cwd:t});return e===0?r.trim():null}async function mDt(t,e){let r=[],o=e.filter(h=>K.basename(h.path)===\"package.json\");for(let{action:h,path:E}of o){let I=K.relative(t,E);if(h===4){let v=await _Be(t),{stdout:b}=await Ur.execvp(\"git\",[\"show\",`${v}:${I}`],{cwd:t,strict:!0}),C=await Mt.fromText(b),T=await Mt.fromFile(E),L=new Map([...T.dependencies,...T.devDependencies]),U=new Map([...C.dependencies,...C.devDependencies]);for(let[J,te]of U){let le=W.stringifyIdent(te),pe=L.get(J);pe?pe.range!==te.range&&r.push([4,`${le} to ${pe.range}`]):r.push([3,le])}for(let[J,te]of L)U.has(J)||r.push([2,W.stringifyIdent(te)])}else if(h===0){let v=await Mt.fromFile(E);v.name?r.push([0,W.stringifyIdent(v.name)]):r.push([0,\"a package\"])}else if(h===1){let v=await _Be(t),{stdout:b}=await Ur.execvp(\"git\",[\"show\",`${v}:${I}`],{cwd:t,strict:!0}),C=await Mt.fromText(b);C.name?r.push([1,W.stringifyIdent(C.name)]):r.push([1,\"a package\"])}else throw new Error(\"Assertion failed: Unsupported action type\")}let{code:a,stdout:n}=await Ur.execvp(\"git\",[\"log\",`-${dDt}`,\"--pretty=format:%s\"],{cwd:t}),u=a===0?n.split(/\\n/g).filter(h=>h!==\"\"):[],A=qG(u);return GG(A,r)}var yDt={[0]:[\" A \",\"?? \"],[4]:[\" M \"],[1]:[\" D \"]},EDt={[0]:[\"A  \"],[4]:[\"M  \"],[1]:[\"D  \"]},HBe={async findRoot(t){return await _G(t,{marker:\".git\"})},async filterChanges(t,e,r,o){let{stdout:a}=await Ur.execvp(\"git\",[\"status\",\"-s\"],{cwd:t,strict:!0}),n=a.toString().split(/\\n/g),u=o?.staged?EDt:yDt;return[].concat(...n.map(p=>{if(p===\"\")return[];let h=p.slice(0,3),E=K.resolve(t,p.slice(3));if(!o?.staged&&h===\"?? \"&&p.endsWith(\"/\"))return jG(E).map(I=>({action:0,path:I}));{let v=[0,4,1].find(b=>u[b].includes(h));return v!==void 0?[{action:v,path:E}]:[]}})).filter(p=>HG(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await mDt(t,e)},async makeStage(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp(\"git\",[\"add\",\"--\",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let o=e.map(a=>ue.fromPortablePath(a.path));await Ur.execvp(\"git\",[\"add\",\"-N\",\"--\",...o],{cwd:t,strict:!0}),await Ur.execvp(\"git\",[\"commit\",\"-m\",`${r}\n\n${gDt}\n`,\"--\",...o],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp(\"git\",[\"reset\",\"HEAD\",\"--\",...r],{cwd:t,strict:!0})}};var CDt=[HBe],Z0=class extends ut{constructor(){super(...arguments);this.commit=ge.Boolean(\"-c,--commit\",!1,{description:\"Commit the staged files\"});this.reset=ge.Boolean(\"-r,--reset\",!1,{description:\"Remove all files from the staging area\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the commit message and the list of modified files without staging / committing\"});this.update=ge.Boolean(\"-u,--update\",!1,{hidden:!0})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),{driver:a,root:n}=await wDt(o.cwd),u=[r.get(\"cacheFolder\"),r.get(\"globalFolder\"),r.get(\"virtualFolder\"),r.get(\"yarnPath\")];await r.triggerHook(I=>I.populateYarnPaths,o,I=>{u.push(I)});let A=new Set;for(let I of u)for(let v of IDt(n,I))A.add(v);let p=new Set([r.get(\"rcFilename\"),dr.lockfile,dr.manifest]),h=await a.filterChanges(n,A,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E}\n`);else for(let I of h)this.context.stdout.write(`${ue.fromPortablePath(I.path)}\n`);else if(this.reset){let I=await a.filterChanges(n,A,p,{staged:!0});I.length===0?this.context.stdout.write(\"No staged changes found!\"):await a.makeReset(n,I)}else h.length===0?this.context.stdout.write(\"No changes found!\"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};Z0.paths=[[\"stage\"]],Z0.usage=nt.Usage({description:\"add all yarn files to your vcs\",details:\"\\n      This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\\n\\n      Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\\n\\n      Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\\n    \",examples:[[\"Adds all modified project files to the staging area\",\"yarn stage\"],[\"Creates a new commit containing all modified project files\",\"yarn stage --commit\"]]});async function wDt(t){let e=null,r=null;for(let o of CDt)if((r=await o.findRoot(t))!==null){e=o;break}if(e===null||r===null)throw new it(\"No stage driver has been found for your current project\");return{driver:e,root:r}}function IDt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let o;try{o=oe.statSync(e)}catch{break}if(o.isSymbolicLink())e=K.resolve(K.dirname(e),oe.readlinkSync(e));else break}return r}var BDt={commands:[Z0]},vDt=BDt;var WG={};Kt(WG,{default:()=>FDt});Ye();Ye();Pt();var GBe=$e(zn());Ye();var jBe=$e(ZH()),DDt=\"e8e1bd300d860104bb8c58453ffa1eb4\",PDt=\"OFCNCOG2CU\",qBe=async(t,e)=>{let r=W.stringifyIdent(t),a=SDt(e).initIndex(\"npm-search\");try{return(await a.getObject(r,{attributesToRetrieve:[\"types\"]})).types?.ts===\"definitely-typed\"}catch{return!1}},SDt=t=>(0,jBe.default)(PDt,DDt,{requester:{async send(r){try{let o=await rn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:o.body,isTimedOut:!1,status:o.statusCode}}catch(o){return{content:o.response.body,isTimedOut:!1,status:o.response.statusCode}}}}});var YBe=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,xDt=async(t,e,r,o)=>{if(r.scope===\"types\")return;let{project:a}=t,{configuration:n}=a;if(!(n.get(\"tsEnableAutoTypes\")??oe.existsSync(K.join(a.cwd,\"tsconfig.json\"))))return;let A=n.makeResolver(),p={project:a,resolver:A,report:new Qi};if(!await qBe(r,n))return;let E=YBe(r),I=W.parseRange(r.range).selector;if(!kr.validRange(I)){let L=n.normalizeDependency(r),U=await A.getCandidates(L,{},p);I=W.parseRange(U[0].reference).selector}let v=GBe.default.coerce(I);if(v===null)return;let b=`${zc.Modifier.CARET}${v.major}`,C=W.makeDescriptor(W.makeIdent(\"types\",E),b),T=je.mapAndFind(a.workspaces,L=>{let U=L.manifest.dependencies.get(r.identHash)?.descriptorHash,J=L.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&J!==r.descriptorHash)return je.mapAndFind.skip;let te=[];for(let le of Mt.allDependencies){let pe=L.manifest[le].get(C.identHash);typeof pe>\"u\"||te.push([le,pe])}return te.length===0?je.mapAndFind.skip:te});if(typeof T<\"u\")for(let[L,U]of T)t.manifest[L].set(U.identHash,U);else{try{let L=n.normalizeDependency(C);if((await A.getCandidates(L,{},p)).length===0)return}catch{return}t.manifest[zc.Target.DEVELOPMENT].set(C.identHash,C)}},bDt=async(t,e,r)=>{if(r.scope===\"types\")return;let{project:o}=t,{configuration:a}=o;if(!(a.get(\"tsEnableAutoTypes\")??oe.existsSync(K.join(o.cwd,\"tsconfig.json\"))))return;let u=YBe(r),A=W.makeIdent(\"types\",u);for(let p of Mt.allDependencies)typeof t.manifest[p].get(A.identHash)>\"u\"||t.manifest[p].delete(A.identHash)},kDt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},QDt={configuration:{tsEnableAutoTypes:{description:\"Whether Yarn should auto-install @types/ dependencies on 'yarn add'\",type:\"BOOLEAN\",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:xDt,afterWorkspaceDependencyRemoval:bDt,beforeWorkspacePacking:kDt}},FDt=QDt;var XG={};Kt(XG,{VersionApplyCommand:()=>$0,VersionCheckCommand:()=>eg,VersionCommand:()=>tg,default:()=>XDt,versionUtils:()=>gw});Ye();Ye();qt();var gw={};Kt(gw,{Decision:()=>pw,applyPrerelease:()=>XBe,applyReleases:()=>zG,applyStrategy:()=>uF,clearVersionFiles:()=>VG,getUndecidedDependentWorkspaces:()=>qv,getUndecidedWorkspaces:()=>cF,openVersionFile:()=>hw,requireMoreDecisions:()=>KDt,resolveVersionFiles:()=>jv,suggestStrategy:()=>JG,updateVersionFiles:()=>KG,validateReleaseDecision:()=>fw});Ye();Pt();Nl();qt();var zBe=$e(JBe()),BA=$e(zn()),VDt=/^(>=|[~^]|)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?$/,pw=(u=>(u.UNDECIDED=\"undecided\",u.DECLINE=\"decline\",u.MAJOR=\"major\",u.MINOR=\"minor\",u.PATCH=\"patch\",u.PRERELEASE=\"prerelease\",u))(pw||{});function fw(t){let e=BA.default.valid(t);return e||je.validateEnum((0,zBe.default)(pw,\"UNDECIDED\"),t)}async function jv(t,{prerelease:e=null}={}){let r=new Map,o=t.configuration.get(\"deferredVersionFolder\");if(!oe.existsSync(o))return r;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(\".yml\"))continue;let u=K.join(o,n),A=await oe.readFilePromise(u,\"utf8\"),p=Vi(A);for(let[h,E]of Object.entries(p.releases||{})){if(E===\"decline\")continue;let I=W.parseIdent(h),v=t.tryWorkspaceByIdent(I);if(v===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${K.basename(u)} references ${h})`);if(v.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${W.prettyLocator(t.configuration,v.anchoredLocator)})`);let b=v.manifest.raw.stableVersion??v.manifest.version,C=r.get(v),T=uF(b,fw(E));if(T===null)throw new Error(`Assertion failed: Expected ${b} to support being bumped via strategy ${E}`);let L=typeof C<\"u\"?BA.default.gt(T,C)?T:C:T;r.set(v,L)}}return e&&(r=new Map([...r].map(([n,u])=>[n,XBe(u,{current:n.manifest.version,prerelease:e})]))),r}async function VG(t){let e=t.configuration.get(\"deferredVersionFolder\");!oe.existsSync(e)||await oe.removePromise(e)}async function KG(t,e){let r=new Set(e),o=t.configuration.get(\"deferredVersionFolder\");if(!oe.existsSync(o))return;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(\".yml\"))continue;let u=K.join(o,n),A=await oe.readFilePromise(u,\"utf8\"),p=Vi(A),h=p?.releases;if(!!h){for(let E of Object.keys(h)){let I=W.parseIdent(E),v=t.tryWorkspaceByIdent(I);(v===null||r.has(v))&&delete p.releases[E]}Object.keys(p.releases).length>0?await oe.changeFilePromise(u,Ba(new Ba.PreserveOrdering(p))):await oe.unlinkPromise(u)}}}async function hw(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new it(\"This command can only be run from within a Yarn project\");let o=await ra.fetchRoot(r.projectCwd),a=o!==null?await ra.fetchBase(o,{baseRefs:r.get(\"changesetBaseRefs\")}):null,n=o!==null?await ra.fetchChangedFiles(o,{base:a.hash,project:t}):[],u=r.get(\"deferredVersionFolder\"),A=n.filter(b=>K.contains(u,b)!==null);if(A.length>1)throw new it(`Your current branch contains multiple versioning files; this isn't supported:\n- ${A.map(b=>ue.fromPortablePath(b)).join(`\n- `)}`);let p=new Set(je.mapAndFilter(n,b=>{let C=t.tryWorkspaceByFilePath(b);return C===null?je.mapAndFilter.skip:C}));if(A.length===0&&p.size===0&&!e)return null;let h=A.length===1?A[0]:K.join(u,`${wn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=oe.existsSync(h)?await oe.readFilePromise(h,\"utf8\"):\"{}\",I=Vi(E),v=new Map;for(let b of I.declined||[]){let C=W.parseIdent(b),T=t.getWorkspaceByIdent(C);v.set(T,\"decline\")}for(let[b,C]of Object.entries(I.releases||{})){let T=W.parseIdent(b),L=t.getWorkspaceByIdent(T);v.set(L,fw(C))}return{project:t,root:o,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(b=>b.manifest.version!==null)),releases:v,async saveAll(){let b={},C=[],T=[];for(let L of t.workspaces){if(L.manifest.version===null)continue;let U=W.stringifyIdent(L.anchoredLocator),J=v.get(L);J===\"decline\"?C.push(U):typeof J<\"u\"?b[U]=fw(J):p.has(L)&&T.push(U)}await oe.mkdirPromise(K.dirname(h),{recursive:!0}),await oe.changeFilePromise(h,Ba(new Ba.PreserveOrdering({releases:Object.keys(b).length>0?b:void 0,declined:C.length>0?C:void 0,undecided:T.length>0?T:void 0})))}}}function KDt(t){return cF(t).size>0||qv(t).length>0}function cF(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function qv(t,{include:e=new Set}={}){let r=[],o=new Map(je.mapAndFilter([...t.releases],([n,u])=>u===\"decline\"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(je.mapAndFilter([...t.releases],([n,u])=>u!==\"decline\"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||o.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let u of Mt.hardDependencies)for(let A of n.manifest.getForScope(u).values()){let p=t.project.tryWorkspaceByDescriptor(A);p!==null&&o.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function JG(t,e){let r=BA.default.clean(e);for(let o of Object.values(pw))if(o!==\"undecided\"&&o!==\"decline\"&&BA.default.inc(t,o)===r)return o;return null}function uF(t,e){if(BA.default.valid(e))return e;if(t===null)throw new it(`Cannot apply the release strategy \"${e}\" unless the workspace already has a valid version`);if(!BA.default.valid(t))throw new it(`Cannot apply the release strategy \"${e}\" on a non-semver version (${t})`);let r=BA.default.inc(t,e);if(r===null)throw new it(`Cannot apply the release strategy \"${e}\" on the specified version (${t})`);return r}function zG(t,e,{report:r}){let o=new Map;for(let a of t.workspaces)for(let n of Mt.allDependencies)for(let u of a.manifest[n].values()){let A=t.tryWorkspaceByDescriptor(u);if(A===null||!e.has(A))continue;je.getArrayWithDefault(o,A).push([a,n,u.identHash])}for(let[a,n]of e){let u=a.manifest.version;a.manifest.version=n,BA.default.prerelease(n)===null?delete a.manifest.raw.stableVersion:a.manifest.raw.stableVersion||(a.manifest.raw.stableVersion=u);let A=a.manifest.name!==null?W.stringifyIdent(a.manifest.name):null;r.reportInfo(0,`${W.prettyLocator(t.configuration,a.anchoredLocator)}: Bumped to ${n}`),r.reportJson({cwd:ue.fromPortablePath(a.cwd),ident:A,oldVersion:u,newVersion:n});let p=o.get(a);if(!(typeof p>\"u\"))for(let[h,E,I]of p){let v=h.manifest[E].get(I);if(typeof v>\"u\")throw new Error(\"Assertion failed: The dependency should have existed\");let b=v.range,C=!1;if(b.startsWith(Xn.protocol)&&(b=b.slice(Xn.protocol.length),C=!0,b===a.relativeCwd))continue;let T=b.match(VDt);if(!T){r.reportWarning(0,`Couldn't auto-upgrade range ${b} (in ${W.prettyLocator(t.configuration,h.anchoredLocator)})`);continue}let L=`${T[1]}${n}`;C&&(L=`${Xn.protocol}${L}`);let U=W.makeDescriptor(v,L);h.manifest[E].set(I,U)}}}var JDt=new Map([[\"%n\",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function XBe(t,{current:e,prerelease:r}){let o=new BA.default.SemVer(e),a=o.prerelease.slice(),n=[];o.prerelease=[],o.format()!==t&&(a.length=0);let u=!0,A=r.split(/\\./g);for(let p of A){let h=JDt.get(p);if(typeof h>\"u\")n.push(p),a[0]===p?a.shift():u=!1;else{let E=u?h.extract(a):null;E!==null&&typeof E[0]==\"number\"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),u=!1)}}return o.prerelease&&(o.prerelease=[]),`${t}-${n.join(\".\")}`}var $0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"--all\",!1,{description:\"Apply the deferred version changes on all workspaces\"});this.dryRun=ge.Boolean(\"--dry-run\",!1,{description:\"Print the versions without actually generating the package archive\"});this.prerelease=ge.String(\"--prerelease\",{description:\"Add a prerelease identifier to new versions\",tolerateBoolean:!0});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Release the transitive workspaces as well\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=this.prerelease?typeof this.prerelease!=\"boolean\"?this.prerelease:\"rc.%n\":null,h=await jv(o,{prerelease:p}),E=new Map;if(this.all)E=h;else{let I=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let v of I){let b=h.get(v);typeof b<\"u\"&&E.set(v,b)}}if(E.size===0){let I=h.size>0?\" Did you want to add --all?\":\"\";A.reportWarning(0,`The current workspace doesn't seem to require a version bump.${I}`);return}zG(o,E,{report:A}),this.dryRun||(p||(this.all?await VG(o):await KG(o,[...E.keys()])),A.reportSeparator())});return u.hasErrors()?u.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};$0.paths=[[\"version\",\"apply\"]],$0.usage=nt.Usage({category:\"Release-related commands\",description:\"apply all the deferred version bumps at once\",details:`\n      This command will apply the deferred version changes and remove their definitions from the repository.\n\n      Note that if \\`--prerelease\\` is set, the given prerelease identifier (by default \\`rc.%d\\`) will be used on all new versions and the version definitions will be kept as-is.\n\n      By default only the current workspace will be bumped, but you can configure this behavior by using one of:\n\n      - \\`--recursive\\` to also apply the version bump on its dependencies\n      - \\`--all\\` to apply the version bump on all packages in the repository\n\n      Note that this command will also update the \\`workspace:\\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump.\n    `,examples:[[\"Apply the version change to the local workspace\",\"yarn version apply\"],[\"Apply the version change to all the workspaces in the local workspace\",\"yarn version apply --all\"]]});Ye();Pt();qt();var AF=$e(zn());var eg=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Open an interactive interface used to set version bumps\"})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){SC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(AQ(),Dj)),{ScrollableItems:o}=await Promise.resolve().then(()=>(gQ(),hQ)),{FocusRequest:a}=await Promise.resolve().then(()=>(Sj(),Xwe)),{useListInput:n}=await Promise.resolve().then(()=>(pQ(),Zwe)),{renderForm:u}=await Promise.resolve().then(()=>(EQ(),yQ)),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useCallback:E,useState:I}=await Promise.resolve().then(()=>$e(sn())),v=await Ve.find(this.context.cwd,this.context.plugins),{project:b,workspace:C}=await St.find(v,this.context.cwd);if(!C)throw new rr(b.cwd,this.context.cwd);await b.restoreInstallState();let T=await hw(b);if(T===null||T.releaseRoots.size===0)return 0;if(T.root===null)throw new it(\"This command can only be run on Git repositories\");let L=()=>h.createElement(A,{flexDirection:\"row\",paddingBottom:1},h.createElement(A,{flexDirection:\"column\",width:60},h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select workspaces.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select release strategies.\"))),h.createElement(A,{flexDirection:\"column\"},h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to save.\")),h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),U=({workspace:ye,active:ae,decision:we,setDecision:Pe})=>{let g=ye.manifest.raw.stableVersion??ye.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${W.prettyLocator(v,ye.anchoredLocator)})`);if(AF.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let Ee=[\"undecided\",\"decline\",\"patch\",\"minor\",\"major\"];n(we,Ee,{active:ae,minus:\"left\",plus:\"right\",set:Pe});let De=we===\"undecided\"?h.createElement(p,{color:\"yellow\"},g):we===\"decline\"?h.createElement(p,{color:\"green\"},g):h.createElement(p,null,h.createElement(p,{color:\"magenta\"},g),\" \\u2192 \",h.createElement(p,{color:\"green\"},AF.default.valid(we)?we:AF.default.inc(g,we)));return h.createElement(A,{flexDirection:\"column\"},h.createElement(A,null,h.createElement(p,null,W.prettyLocator(v,ye.anchoredLocator),\" - \",De)),h.createElement(A,null,Ee.map(ce=>h.createElement(A,{key:ce,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:ce===we}),\" \",ce)))))},J=ye=>{let ae=new Set(T.releaseRoots),we=new Map([...ye].filter(([Pe])=>ae.has(Pe)));for(;;){let Pe=qv({project:T.project,releases:we}),g=!1;if(Pe.length>0){for(let[Ee]of Pe)if(!ae.has(Ee)){ae.add(Ee),g=!0;let De=ye.get(Ee);typeof De<\"u\"&&we.set(Ee,De)}}if(!g)break}return{relevantWorkspaces:ae,relevantReleases:we}},te=()=>{let[ye,ae]=I(()=>new Map(T.releases)),we=E((Pe,g)=>{let Ee=new Map(ye);g!==\"undecided\"?Ee.set(Pe,g):Ee.delete(Pe);let{relevantReleases:De}=J(Ee);ae(De)},[ye,ae]);return[ye,we]},le=({workspaces:ye,releases:ae})=>{let we=[];we.push(`${ye.size} total`);let Pe=0,g=0;for(let Ee of ye){let De=ae.get(Ee);typeof De>\"u\"?g+=1:De!==\"decline\"&&(Pe+=1)}return we.push(`${Pe} release${Pe===1?\"\":\"s\"}`),we.push(`${g} remaining`),h.createElement(p,{color:\"yellow\"},we.join(\", \"))},Ae=await u(({useSubmit:ye})=>{let[ae,we]=te();ye(ae);let{relevantWorkspaces:Pe}=J(ae),g=new Set([...Pe].filter(ne=>!T.releaseRoots.has(ne))),[Ee,De]=I(0),ce=E(ne=>{switch(ne){case a.BEFORE:De(Ee-1);break;case a.AFTER:De(Ee+1);break}},[Ee,De]);return h.createElement(A,{flexDirection:\"column\"},h.createElement(L,null),h.createElement(A,null,h.createElement(p,{wrap:\"wrap\"},\"The following files have been modified in your local checkout.\")),h.createElement(A,{flexDirection:\"column\",marginTop:1,paddingLeft:2},[...T.changedFiles].map(ne=>h.createElement(A,{key:ne},h.createElement(p,null,h.createElement(p,{color:\"grey\"},ue.fromPortablePath(T.root)),ue.sep,ue.relative(ue.fromPortablePath(T.root),ue.fromPortablePath(ne)))))),T.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):\")),g.size>3?h.createElement(A,{marginTop:1},h.createElement(le,{workspaces:T.releaseRoots,releases:ae})):null,h.createElement(A,{marginTop:1,flexDirection:\"column\"},h.createElement(o,{active:Ee%2===0,radius:1,size:2,onFocusRequest:ce},[...T.releaseRoots].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:ae.get(ne)||\"undecided\",setDecision:ee=>we(ne,ee)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:\")),h.createElement(A,null,h.createElement(p,null,\"(Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<tab>\"),\" to move the focus between the workspace groups.)\")),g.size>5?h.createElement(A,{marginTop:1},h.createElement(le,{workspaces:g,releases:ae})):null,h.createElement(A,{marginTop:1,flexDirection:\"column\"},h.createElement(o,{active:Ee%2===1,radius:2,size:2,onFocusRequest:ce},[...g].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:ae.get(ne)||\"undecided\",setDecision:ee=>we(ne,ee)}))))):null)},{versionFile:T},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Ae>\"u\")return 1;T.releases.clear();for(let[ye,ae]of Ae)T.releases.set(ye,ae);await T.saveAll()}async executeStandard(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return await o.restoreInstallState(),(await Nt.start({configuration:r,stdout:this.context.stdout},async u=>{let A=await hw(o);if(A===null||A.releaseRoots.size===0)return;if(A.root===null)throw new it(\"This command can only be run on Git repositories\");if(u.reportInfo(0,`Your PR was started right after ${de.pretty(r,A.baseHash.slice(0,7),\"yellow\")} ${de.pretty(r,A.baseTitle,\"magenta\")}`),A.changedFiles.size>0){u.reportInfo(0,\"You have changed the following files since then:\"),u.reportSeparator();for(let v of A.changedFiles)u.reportInfo(null,`${de.pretty(r,ue.fromPortablePath(A.root),\"gray\")}${ue.sep}${ue.relative(ue.fromPortablePath(A.root),ue.fromPortablePath(v))}`)}let p=!1,h=!1,E=cF(A);if(E.size>0){p||u.reportSeparator();for(let v of E)u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let I=qv(A);for(let[v,b]of I)h||u.reportSeparator(),u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} doesn't have a release strategy attached, but depends on ${W.prettyWorkspace(r,b)} which is planned for release.`),h=!0;(p||h)&&(u.reportSeparator(),u.reportInfo(0,\"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed).\"),u.reportInfo(0,\"To correct these errors, run `yarn version check --interactive` then follow the instructions.\"))})).exitCode()}};eg.paths=[[\"version\",\"check\"]],eg.usage=nt.Usage({category:\"Release-related commands\",description:\"check that all the relevant packages have been bumped\",details:\"\\n      **Warning:** This command currently requires Git.\\n\\n      This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\\n\\n      In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\\n\\n      In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\\n    \",examples:[[\"Check whether the modified packages need a bump\",\"yarn version check\"]]});Ye();qt();var fF=$e(zn());var tg=class extends ut{constructor(){super(...arguments);this.deferred=ge.Boolean(\"-d,--deferred\",{description:\"Prepare the version to be bumped during the next release cycle\"});this.immediate=ge.Boolean(\"-i,--immediate\",{description:\"Bump the version immediately\"});this.strategy=ge.String()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=r.get(\"preferDeferredVersions\");this.deferred&&(n=!0),this.immediate&&(n=!1);let u=fF.default.valid(this.strategy),A=this.strategy===\"decline\",p;if(u)if(a.manifest.version!==null){let E=JG(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!A){if(E===null)throw new it(\"Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.\");if(typeof E!=\"string\"||!fF.default.valid(E))throw new it(`Can't bump the version (${E}) if it's not valid semver`)}p=fw(this.strategy)}if(!n){let I=(await jv(o)).get(a);if(typeof I<\"u\"&&p!==\"decline\"){let v=uF(a.manifest.version,p);if(fF.default.lt(v,I))throw new it(`Can't bump the version to one that would be lower than the current deferred one (${I})`)}}let h=await hw(o,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run([\"version\",\"apply\"])}};tg.paths=[[\"version\"]],tg.usage=nt.Usage({category:\"Release-related commands\",description:\"apply a new version to the current package\",details:\"\\n      This command will bump the version number for the given package, following the specified strategy:\\n\\n      - If `major`, the first number from the semver range will be increased (`X.0.0`).\\n      - If `minor`, the second number from the semver range will be increased (`0.X.0`).\\n      - If `patch`, the third number from the semver range will be increased (`0.0.X`).\\n      - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\\n      - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\\n      - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\\n      - If a valid semver range, it will be used as new version.\\n      - If unspecified, Yarn will ask you for guidance.\\n\\n      For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\\n    \",examples:[[\"Immediately bump the version to the next major\",\"yarn version major\"],[\"Prepare the version to be bumped to the next major\",\"yarn version major --deferred\"]]});var zDt={configuration:{deferredVersionFolder:{description:\"Folder where are stored the versioning files\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/versions\"},preferDeferredVersions:{description:\"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set\",type:\"BOOLEAN\",default:!1}},commands:[$0,eg,tg]},XDt=zDt;var ZG={};Kt(ZG,{WorkspacesFocusCommand:()=>rg,WorkspacesForeachCommand:()=>op,default:()=>ePt});Ye();Ye();qt();var rg=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.production=ge.Boolean(\"--production\",!1,{description:\"Only install regular dependencies by omitting dev dependencies\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Install the entire project\"});this.workspaces=ge.Rest()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Lr.find(r);await o.restoreInstallState({restoreResolutions:!1});let u;if(this.all)u=new Set(o.workspaces);else if(this.workspaces.length===0){if(!a)throw new rr(o.cwd,this.context.cwd);u=new Set([a])}else u=new Set(this.workspaces.map(A=>o.getWorkspaceByIdent(W.parseIdent(A))));for(let A of u)for(let p of this.production?[\"dependencies\"]:Mt.hardDependencies)for(let h of A.manifest.getForScope(p).values()){let E=o.tryWorkspaceByDescriptor(h);E!==null&&u.add(E)}for(let A of o.workspaces)u.has(A)?this.production&&A.manifest.devDependencies.clear():(A.manifest.installConfig=A.manifest.installConfig||{},A.manifest.installConfig.selfReferences=!1,A.manifest.dependencies.clear(),A.manifest.devDependencies.clear(),A.manifest.peerDependencies.clear(),A.manifest.scripts.clear());return await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};rg.paths=[[\"workspaces\",\"focus\"]],rg.usage=nt.Usage({category:\"Workspace-related commands\",description:\"install a single workspace and its dependencies\",details:\"\\n      This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\\n\\n      Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\\n\\n      If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\\n    \"});Ye();Ye();Ye();qt();var dw=$e(Zo()),$Be=$e(nd());Za();var op=class extends ut{constructor(){super(...arguments);this.from=ge.Array(\"--from\",{description:\"An array of glob pattern idents or paths from which to base any recursion\"});this.all=ge.Boolean(\"-A,--all\",{description:\"Run the command on all workspaces of a project\"});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Run the command on the current workspace and all of its recursive dependencies\"});this.worktree=ge.Boolean(\"-W,--worktree\",{description:\"Run the command on all workspaces of the current worktree\"});this.verbose=ge.Boolean(\"-v,--verbose\",{description:\"Prefix each output line with the name of the originating workspace\"});this.parallel=ge.Boolean(\"-p,--parallel\",!1,{description:\"Run the commands in parallel\"});this.interlaced=ge.Boolean(\"-i,--interlaced\",!1,{description:\"Print the output of commands in real-time instead of buffering it\"});this.jobs=ge.String(\"-j,--jobs\",{description:\"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`\",validator:LR([Vs([\"unlimited\"]),oI(NR(),[OR(),MR(1)])])});this.topological=ge.Boolean(\"-t,--topological\",!1,{description:\"Run the command after all workspaces it depends on (regular) have finished\"});this.topologicalDev=ge.Boolean(\"--topological-dev\",!1,{description:\"Run the command after all workspaces it depends on (regular + dev) have finished\"});this.include=ge.Array(\"--include\",[],{description:\"An array of glob pattern idents or paths; only matching workspaces will be traversed\"});this.exclude=ge.Array(\"--exclude\",[],{description:\"An array of glob pattern idents or paths; matching workspaces won't be traversed\"});this.publicOnly=ge.Boolean(\"--no-private\",{description:\"Avoid running the command on private workspaces\"});this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.dryRun=ge.Boolean(\"-n,--dry-run\",{description:\"Print the commands that would be run, without actually running them\"});this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ve.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!this.all&&!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),u=n.path.length===1&&n.path[0]===\"run\"&&typeof n.scriptName<\"u\"?n.scriptName:null;if(n.path.length===0)throw new it(\"Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script\");let A=ae=>{!this.dryRun||this.context.stdout.write(`${ae}\n`)},p=()=>{let ae=this.from.map(we=>dw.default.matcher(we));return o.workspaces.filter(we=>{let Pe=W.stringifyIdent(we.anchoredLocator),g=we.relativeCwd;return ae.some(Ee=>Ee(Pe)||Ee(g))})},h=[];if(this.since?(A(\"Option --since is set; selecting the changed workspaces as root for workspace selection\"),h=Array.from(await ra.fetchChangedWorkspaces({ref:this.since,project:o}))):this.from?(A(\"Option --from is set; selecting the specified workspaces\"),h=[...p()]):this.worktree?(A(\"Option --worktree is set; selecting the current workspace\"),h=[a]):this.recursive?(A(\"Option --recursive is set; selecting the current workspace\"),h=[a]):this.all&&(A(\"Option --all is set; selecting all workspaces\"),h=[...o.workspaces]),this.dryRun&&!this.all){for(let ae of h)A(`\n- ${ae.relativeCwd}\n  ${W.prettyLocator(r,ae.anchoredLocator)}`);h.length>0&&A(\"\")}let E;if(this.recursive?this.since?(A(\"Option --recursive --since is set; recursively selecting all dependent workspaces\"),E=new Set(h.map(ae=>[...ae.getRecursiveWorkspaceDependents()]).flat())):(A(\"Option --recursive is set; recursively selecting all transitive dependencies\"),E=new Set(h.map(ae=>[...ae.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(A(\"Option --worktree is set; recursively selecting all nested workspaces\"),E=new Set(h.map(ae=>[...ae.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let ae of E)A(`\n- ${ae.relativeCwd}\n  ${W.prettyLocator(r,ae.anchoredLocator)}`);let I=[],v=!1;if(u?.includes(\":\")){for(let ae of o.workspaces)if(ae.manifest.scripts.has(u)&&(v=!v,v===!1))break}for(let ae of h){if(u&&!ae.manifest.scripts.has(u)&&!v&&!(await un.getWorkspaceAccessibleBinaries(ae)).has(u)){A(`Excluding ${ae.relativeCwd} because it doesn't have a \"${u}\" script`);continue}if(!(u===r.env.npm_lifecycle_event&&ae.cwd===a.cwd)){if(this.include.length>0&&!dw.default.isMatch(W.stringifyIdent(ae.anchoredLocator),this.include)&&!dw.default.isMatch(ae.relativeCwd,this.include)){A(`Excluding ${ae.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(dw.default.isMatch(W.stringifyIdent(ae.anchoredLocator),this.exclude)||dw.default.isMatch(ae.relativeCwd,this.exclude))){A(`Excluding ${ae.relativeCwd} because it matches the --include filter`);continue}if(this.publicOnly&&ae.manifest.private===!0){A(`Excluding ${ae.relativeCwd} because it's a private workspace and --no-private was set`);continue}I.push(ae)}}if(this.dryRun)return 0;let b=this.verbose??this.context.stdout.isTTY,C=this.parallel?this.jobs===\"unlimited\"?1/0:Number(this.jobs)||Math.ceil(Ji.availableParallelism()/2):1,T=C===1?!1:this.parallel,L=T?this.interlaced:!0,U=(0,$Be.default)(C),J=new Map,te=new Set,le=0,pe=null,Ae=!1,ye=await Nt.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async ae=>{let we=async(Pe,{commandIndex:g})=>{if(Ae)return-1;!T&&b&&g>1&&ae.reportSeparator();let Ee=ZDt(Pe,{configuration:r,verbose:b,commandIndex:g}),[De,ce]=ZBe(ae,{prefix:Ee,interlaced:L}),[ne,ee]=ZBe(ae,{prefix:Ee,interlaced:L});try{b&&ae.reportInfo(null,`${Ee} Process started`);let Ie=Date.now(),ke=await this.cli.run([this.commandName,...this.args],{cwd:Pe.cwd,stdout:De,stderr:ne})||0;De.end(),ne.end(),await ce,await ee;let ht=Date.now();if(b){let H=r.get(\"enableTimers\")?`, completed in ${de.pretty(r,ht-Ie,de.Type.DURATION)}`:\"\";ae.reportInfo(null,`${Ee} Process exited (exit code ${ke})${H}`)}return ke===130&&(Ae=!0,pe=ke),ke}catch(Ie){throw De.end(),ne.end(),await ce,await ee,Ie}};for(let Pe of I)J.set(Pe.anchoredLocator.locatorHash,Pe);for(;J.size>0&&!ae.hasErrors();){let Pe=[];for(let[De,ce]of J){if(te.has(ce.anchoredDescriptor.descriptorHash))continue;let ne=!0;if(this.topological||this.topologicalDev){let ee=this.topologicalDev?new Map([...ce.manifest.dependencies,...ce.manifest.devDependencies]):ce.manifest.dependencies;for(let Ie of ee.values()){let ke=o.tryWorkspaceByDescriptor(Ie);if(ne=ke===null||!J.has(ke.anchoredLocator.locatorHash),!ne)break}}if(!!ne&&(te.add(ce.anchoredDescriptor.descriptorHash),Pe.push(U(async()=>{let ee=await we(ce,{commandIndex:++le});return J.delete(De),te.delete(ce.anchoredDescriptor.descriptorHash),ee})),!T))break}if(Pe.length===0){let De=Array.from(J.values()).map(ce=>W.prettyLocator(r,ce.anchoredLocator)).join(\", \");ae.reportError(3,`Dependency cycle detected (${De})`);return}let Ee=(await Promise.all(Pe)).find(De=>De!==0);pe===null&&(pe=typeof Ee<\"u\"?1:pe),(this.topological||this.topologicalDev)&&typeof Ee<\"u\"&&ae.reportError(0,\"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph\")}});return pe!==null?pe:ye.exitCode()}};op.paths=[[\"workspaces\",\"foreach\"]],op.usage=nt.Usage({category:\"Workspace-related commands\",description:\"run a command on all workspaces\",details:\"\\n      This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\\n\\n      - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\\n\\n      - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\\n\\n      - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\\n\\n      - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\\n\\n      - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\\n\\n      - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\\n\\n      - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      Adding the `-v,--verbose` flag (automatically enabled in interactive terminal environments) will cause Yarn to print more information; in particular the name of the workspace that generated the output will be printed at the front of each line.\\n\\n      If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\\n    \",examples:[[\"Publish all packages\",\"yarn workspaces foreach -A npm publish --tolerate-republish\"],[\"Run the build script on all descendant packages\",\"yarn workspaces foreach -A run build\"],[\"Run the build script on current and all descendant packages in parallel, building package dependencies first\",\"yarn workspaces foreach -Apt run build\"],[\"Run the build script on several packages and all their dependencies, building dependencies first\",\"yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build\"]]}),op.schema=[lI(\"all\",Gu.Forbids,[\"from\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"}),UR([\"all\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"})];function ZBe(t,{prefix:e,interlaced:r}){let o=t.createStreamReporter(e),a=new je.DefaultStream;a.pipe(o,{end:!1}),a.on(\"finish\",()=>{o.end()});let n=new Promise(A=>{o.on(\"finish\",()=>{A(a.active)})});if(r)return[a,n];let u=new je.BufferStream;return u.pipe(a,{end:!1}),u.on(\"finish\",()=>{a.end()}),[u,n]}function ZDt(t,{configuration:e,commandIndex:r,verbose:o}){if(!o)return null;let n=`[${W.stringifyIdent(t.anchoredLocator)}]:`,u=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],A=u[r%u.length];return de.pretty(e,n,A)}var $Dt={commands:[rg,op]},ePt=$Dt;var fC=()=>({modules:new Map([[\"@yarnpkg/cli\",o2],[\"@yarnpkg/core\",s2],[\"@yarnpkg/fslib\",Vw],[\"@yarnpkg/libzip\",x1],[\"@yarnpkg/parsers\",tI],[\"@yarnpkg/shell\",T1],[\"clipanion\",pI],[\"semver\",tPt],[\"typanion\",Ko],[\"@yarnpkg/plugin-essentials\",tH],[\"@yarnpkg/plugin-compat\",oH],[\"@yarnpkg/plugin-constraints\",BH],[\"@yarnpkg/plugin-dlx\",vH],[\"@yarnpkg/plugin-exec\",SH],[\"@yarnpkg/plugin-file\",bH],[\"@yarnpkg/plugin-git\",eH],[\"@yarnpkg/plugin-github\",FH],[\"@yarnpkg/plugin-http\",TH],[\"@yarnpkg/plugin-init\",RH],[\"@yarnpkg/plugin-interactive-tools\",Lj],[\"@yarnpkg/plugin-link\",Mj],[\"@yarnpkg/plugin-nm\",Cq],[\"@yarnpkg/plugin-npm\",EG],[\"@yarnpkg/plugin-npm-cli\",xG],[\"@yarnpkg/plugin-pack\",hG],[\"@yarnpkg/plugin-patch\",NG],[\"@yarnpkg/plugin-pnp\",lq],[\"@yarnpkg/plugin-pnpm\",OG],[\"@yarnpkg/plugin-stage\",YG],[\"@yarnpkg/plugin-typescript\",WG],[\"@yarnpkg/plugin-version\",XG],[\"@yarnpkg/plugin-workspace-tools\",ZG]]),plugins:new Set([\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"])});function rve({cwd:t,pluginConfiguration:e}){let r=new as({binaryLabel:\"Yarn Package Manager\",binaryName:\"yarn\",binaryVersion:tn??\"<unknown>\"});return Object.assign(r,{defaultContext:{...as.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function rPt(t){if(je.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,o=\">=18.12.0\";if(kr.satisfiesWithPrereleases(r,o))return!0;let a=new it(`This tool requires a Node version compatible with ${o} (got ${r}). Upgrade Node, or set \\`YARN_IGNORE_NODE=1\\` in your environment.`);return as.defaultContext.stdout.write(t.error(a)),!1}async function nve({selfPath:t,pluginConfiguration:e}){return await Ve.find(ue.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function nPt(t,e,{yarnPath:r}){if(!oe.existsSync(r))return t.error(new Error(`The \"yarn-path\" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on(\"SIGINT\",()=>{});let o={stdio:\"inherit\",env:{...process.env,YARN_IGNORE_PATH:\"1\"}};try{(0,eve.execFileSync)(process.execPath,[ue.fromPortablePath(r),...e],o)}catch(a){return a.status??1}return 0}function iPt(t,e){let r=null,o=e;return e.length>=2&&e[0]===\"--cwd\"?(r=ue.toPortablePath(e[1]),o=e.slice(2)):e.length>=1&&e[0].startsWith(\"--cwd=\")?(r=ue.toPortablePath(e[0].slice(6)),o=e.slice(1)):e[0]===\"add\"&&e[e.length-2]===\"--cwd\"&&(r=ue.toPortablePath(e[e.length-1]),o=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?K.resolve(r):K.cwd(),o}function sPt(t,{configuration:e}){if(!e.get(\"enableTelemetry\")||tve.isCI||!process.stdout.isTTY)return;Ve.telemetry=new cC(e,\"puba9cdc10ec5790a2cf4969dd413a47270\");let o=/^@yarnpkg\\/plugin-(.*)$/;for(let a of e.plugins.keys())uC.has(a.match(o)?.[1]??\"\")&&Ve.telemetry?.reportPluginName(a);t.binaryVersion&&Ve.telemetry.reportVersion(t.binaryVersion)}function ive(t,{configuration:e}){for(let r of e.plugins.values())for(let o of r.commands||[])t.register(o)}async function oPt(t,e,{selfPath:r,pluginConfiguration:o}){if(!rPt(t))return 1;let a=await nve({selfPath:r,pluginConfiguration:o}),n=a.get(\"yarnPath\"),u=a.get(\"ignorePath\");if(n&&!u)return nPt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let A=iPt(t,e);sPt(t,{configuration:a}),ive(t,{configuration:a});let p=t.process(A,t.defaultContext);return p.help||Ve.telemetry?.reportCommandName(p.path.join(\" \")),await t.run(p,t.defaultContext)}async function the({cwd:t=K.cwd(),pluginConfiguration:e=fC()}={}){let r=rve({cwd:t,pluginConfiguration:e}),o=await nve({pluginConfiguration:e,selfPath:null});return ive(r,{configuration:o}),r}async function sk(t,{cwd:e=K.cwd(),selfPath:r,pluginConfiguration:o}){let a=rve({cwd:e,pluginConfiguration:o});try{process.exitCode=await oPt(a,t,{selfPath:r,pluginConfiguration:o})}catch(n){as.defaultContext.stdout.write(a.error(n)),process.exitCode=1}finally{await oe.rmtempPromise()}}sk(process.argv.slice(2),{cwd:K.cwd(),selfPath:ue.toPortablePath(ue.resolve(process.argv[1])),pluginConfiguration:fC()});})();\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/*!\n * buildToken\n * Builds OAuth token prefix (helper function)\n *\n * @name buildToken\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @return {String} token prefix\n */\n/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * is-windows <https://github.com/jonschlinkert/is-windows>\n *\n * Copyright © 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n/**\n  @license\n  Copyright (c) 2015, Rebecca Turner\n\n  Permission to use, copy, modify, and/or distribute this software for any\n  purpose with or without fee is hereby granted, provided that the above\n  copyright notice and this permission notice appear in all copies.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n  PERFORMANCE OF THIS SOFTWARE.\n */\n/**\n  @license\n  Copyright Joyent, Inc. and other Node contributors.\n\n  Permission is hereby granted, free of charge, to any person obtaining a\n  copy of this software and associated documentation files (the\n  \"Software\"), to deal in the Software without restriction, including\n  without limitation the rights to use, copy, modify, merge, publish,\n  distribute, sublicense, and/or sell copies of the Software, and to permit\n  persons to whom the Software is furnished to do so, subject to the\n  following conditions:\n\n  The above copyright notice and this permission notice shall be included\n  in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/**\n  @license\n  Copyright Node.js contributors. All rights reserved.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to\n  deal in the Software without restriction, including without limitation the\n  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n  sell copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n  IN THE SOFTWARE.\n*/\n/**\n  @license\n  The MIT License (MIT)\n\n  Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n*/\n/** @license React v0.18.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/** @license React v0.24.0\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/** @license React v16.13.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n"
  },
  {
    "path": ".yarnrc.yml",
    "content": "compressionLevel: mixed\n\npackageExtensions:\n  eslint-module-utils@*:\n    dependencies:\n      eslint-import-resolver-node: '*'\n  next@*:\n    dependencies:\n      eslint-import-resolver-node: '*'\n  react-error-boundary@*:\n    dependencies:\n      prop-types: '*'\n\nyarnPath: .yarn/releases/yarn-4.0.2.cjs\n"
  },
  {
    "path": "License.md",
    "content": "The MIT License\n\nCopyright &copy; 2016–2023, [Ian Storm Taylor](https://ianstormtaylor.com)\n\nPermission 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:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE 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.\n"
  },
  {
    "path": "Readme.md",
    "content": "<p align=\"center\">\n  <a href=\"#\"><img src=\"./docs/images/banner.png\" /></a>\n</p>\n\n<p align=\"center\">\n  A <em>completely</em> customizable framework <br/>\n  for building rich text editors.\n</p>\n<br/>\n\n<p align=\"center\">\n  <a href=\"#why\"><strong>Why?</strong></a> ·\n  <a href=\"#principles\"><strong>Principles</strong></a> ·\n  <a href=\"http://slatejs.org\"><strong>Demo</strong></a> ·\n  <a href=\"#examples\"><strong>Examples</strong></a> ·\n  <a href=\"http://docs.slatejs.org\"><strong>Documentation</strong></a> ·\n  <a href=\"#contributing\"><strong>Contributing!</strong></a>\n</p>\n<br/>\n\n<p align=\"center\">\n  <a href=\"http://slatejs.org\"><img src=\"./docs/images/preview.png\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://unpkg.com/slate/dist/slate.min.js\">\n    <img src=\"http://img.badgesize.io/https://unpkg.com/slate/dist/slate.min.js?compression=gzip&amp;label=size\">\n  </a>\n  <a href=\"https://join.slack.com/t/slate-js/shared_invite/zt-f8t986ip-7dA1DyiqPpzootz1snKXkw\">\n    <img src=\"https://img.shields.io/badge/slack-slate--js-brightgreen.svg?logo=slack\">\n  </a>\n  <a href=\"./packages/slate/package.json\">\n    <img src=\"https://img.shields.io/npm/v/slate.svg?maxAge=3600&label=version&colorB=007ec6\">\n  </a>\n</p>\n<br/>\n\nSlate lets you build rich, intuitive editors like those in [Medium](https://medium.com/), [Dropbox Paper](https://www.dropbox.com/paper) or [Google Docs](https://www.google.com/docs/about/)—which are becoming table stakes for applications on the web—without your codebase getting mired in complexity.\n\nIt can do this because all of its logic is implemented with a series of plugins, so you aren't ever constrained by what _is_ or _isn't_ in \"core\". You can think of it like a pluggable implementation of `contenteditable` built on top of [React](https://facebook.github.io/react/). It was inspired by libraries like [Draft.js](https://facebook.github.io/draft-js/), [Prosemirror](http://prosemirror.net/) and [Quill](http://quilljs.com/).\n\n> 🤖 **Slate is currently in beta.** Its core API is useable right now, but you might need to pull request improvements for advanced use cases, or fixes for some bugs. Some of its APIs are not \"finalized\" and will have breaking changes over time as we discover better solutions. There isn't currently a `1.0` release schedule, we're still getting the architecture right.\n\n> 🤖 **Slate is also contributor-driven.** It is not backed by any huge company, which means that all contributions are voluntary and done by the people who need them. If you need something improved, added, or fixed, please contribute it yourself or no one will. And if you want to become a more active maintainer, let us know in the Slack channel.\n\n<br/>\n\n### Why?\n\nWhy create Slate? Well... _(Beware: this section has a few of [my](https://github.com/ianstormtaylor) opinions!)_\n\nBefore creating Slate, I tried a lot of the other rich text libraries out there—[**Draft.js**](https://facebook.github.io/draft-js/), [**Prosemirror**](http://prosemirror.net/), [**Quill**](http://quilljs.com/), etc. What I found was that while getting simple examples to work was easy enough, once you started trying to build something like [Medium](https://medium.com/), [Dropbox Paper](https://www.dropbox.com/paper) or [Google Docs](https://www.google.com/docs/about/), you ran into deeper issues...\n\n- **The editor's \"schema\" was hardcoded and hard to customize.** Things like bold and italic were supported out of the box, but what about comments, or embeds, or even more domain-specific needs?\n\n- **Transforming the documents programmatically was very convoluted.** Writing as a user may have worked, but making programmatic changes, which is critical for building advanced behaviors, was needlessly complex.\n\n- **Serializing to HTML, Markdown, etc. seemed like an afterthought.** Simple things like transforming a document to HTML or Markdown involved writing lots of boilerplate code, for what seemed like very common use cases.\n\n- **Re-inventing the view layer seemed inefficient and limiting.** Most editors rolled their own views, instead of using existing technologies like React, so you have to learn a whole new system with new \"gotchas\".\n\n- **Collaborative editing wasn't designed for in advance.** Often the editor's internal representation of data made it impossible to use to for a realtime, collaborative editing use case without basically rewriting the editor.\n\n- **The repositories were monolithic, not small and reusable.** The code bases for many of the editors often didn't expose the internal tooling that could have been re-used by developers, leading to having to reinvent the wheel.\n\n- **Building complex, nested documents was impossible.** Many editors were designed around simplistic \"flat\" documents, making things like tables, embeds and captions difficult to reason about and sometimes impossible.\n\nOf course not every editor exhibits all of these issues, but if you've tried using another editor you might have run into similar problems. To get around the limitations of their API's and achieve the user experience you're after, you have to resort to very hacky things. And some experiences are just plain impossible to achieve.\n\nIf that sounds familiar, you might like Slate.\n\nWhich brings me to how Slate solves all of that...\n\n<br/>\n\n### Principles\n\nSlate tries to solve the question of \"[Why?](#why)\" with a few principles:\n\n1. **First-class plugins.** The most important part of Slate is that plugins are first-class entities. That means you can _completely_ customize the editing experience, to build complex editors like Medium's or Dropbox's, without having to fight against the library's assumptions.\n\n2. **Schema-less core.** Slate's core logic assumes very little about the schema of the data you'll be editing, which means that there are no assumptions baked into the library that'll trip you up when you need to go beyond the most basic use cases.\n\n3. **Nested document model.** The document model used for Slate is a nested, recursive tree, just like the DOM itself. This means that creating complex components like tables or nested block quotes are possible for advanced use cases. But it's also easy to keep it simple by only using a single level of hierarchy.\n\n4. **Parallel to the DOM.** Slate's data model is based on the DOM—the document is a nested tree, it uses selections and ranges, and it exposes all the standard event handlers. This means that advanced behaviors like tables or nested block quotes are possible. Pretty much anything you can do in the DOM, you can do in Slate.\n\n5. **Intuitive commands.** Slate documents are edited using \"commands\", that are designed to be high-level and extremely intuitive to write and read, so that custom functionality is as expressive as possible. This greatly increases your ability to reason about your code.\n\n6. **Collaboration-ready data model.** The data model Slate uses—specifically how operations are applied to the document—has been designed to allow for collaborative editing to be layered on top, so you won't need to rethink everything if you decide to make your editor collaborative.\n\n7. **Clear \"core\" boundaries.** With a plugin-first architecture, and a schema-less core, it becomes a lot clearer where the boundary is between \"core\" and \"custom\", which means that the core experience doesn't get bogged down in edge cases.\n\n<br/>\n\n### Demo\n\nCheck out the [**live demo**](http://slatejs.org) of all of the examples!\n\n<br/>\n\n### Examples\n\nTo get a sense for how you might use Slate, check out a few of the examples:\n\n- [**Plain text**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/plaintext.tsx) — showing the most basic case: a glorified `<textarea>`.\n- [**Rich text**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/richtext.tsx) — showing the features you'd expect from a basic editor.\n- [**Markdown preview**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/markdown-preview.tsx) — showing how to add key handlers for Markdown-like shortcuts.\n- [**Inlines**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/inlines.tsx) — showing how wrap text in inline nodes with associated data.\n- [**Images**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/images.tsx) — showing how to use void (text-less) nodes to add images.\n- [**Hovering toolbar**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/hovering-toolbar.tsx) — showing how a hovering toolbar can be implemented.\n- [**Tables**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/tables.tsx) — showing how to nest blocks to render more advanced components.\n- [**Paste HTML**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/paste-html.tsx) — showing how to use an HTML serializer to handle pasted HTML.\n- [**Mentions**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/ts/mentions.tsx) — showing how to use inline void nodes for simple @-mentions.\n- [**See all the examples...**](https://github.com/ianstormtaylor/slate/tree/main/site/examples/)\n\nIf you have an idea for an example that shows a common use case, pull request it!\n\n<br/>\n\n### Documentation\n\nIf you're using Slate for the first time, check out the [Getting Started](https://docs.slatejs.org/walkthroughs/01-installing-slate) walkthroughs and the [Concepts](http://docs.slatejs.org/concepts) to familiarize yourself with Slate's architecture and mental models.\n\n- [**Walkthroughs**](https://docs.slatejs.org/walkthroughs/01-installing-slate)\n- [**Concepts**](https://docs.slatejs.org/concepts)\n- [**FAQ**](https://docs.slatejs.org/general/faq)\n- [**Resources**](https://docs.slatejs.org/general/resources)\n\nIf even that's not enough, you can always [read the source itself](./packages/slate), which is heavily commented.\n\nThere are also translations of the documentation into other languages:\n\n- [中文](https://doodlewind.github.io/slate-doc-cn/) (`v0.47`)\n- [中文](https://github.com/loveloki/slate-docs-cn) (`v0.57`)\n- [中文](https://rain120.github.io/athena/zh/slate/Introduction.html) (`v0.59`)\n\nIf you're maintaining a translation, feel free to pull request it here!\n\n<br/>\n\n### Packages\n\nSlate's codebase is monorepo managed with [Lerna](https://lerna.js.org/). It consists of a handful of packages—although you won't always use all of them. They are:\n\n| **Package**                                         |                                                                                                                           **Version** |                                                                                                                                                                                       **Size** | **Description**                                  |\n| :-------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------- |\n| [`slate`](./packages/slate)                         |                         [![](https://img.shields.io/npm/v/slate.svg?maxAge=3600&label=&colorB=007ec6)](./packages/slate/package.json) |                                                 [![](http://img.badgesize.io/https://unpkg.com/slate/dist/slate.min.js?compression=gzip&label=%20)](https://unpkg.com/slate/dist/slate.min.js) | Slate's core data model logic.                   |\n| [`slate-history`](./packages/slate-history)         |         [![](https://img.shields.io/npm/v/slate-history.svg?maxAge=3600&label=&colorB=007ec6)](./packages/slate-history/package.json) |                 [![](http://img.badgesize.io/https://unpkg.com/slate-history/dist/slate-history.min.js?compression=gzip&label=%20)](https://unpkg.com/slate-history/dist/slate-history.min.js) | A plugin that adds undo/redo history to Slate.   |\n| [`slate-hyperscript`](./packages/slate-hyperscript) | [![](https://img.shields.io/npm/v/slate-hyperscript.svg?maxAge=3600&label=&colorB=007ec6)](./packages/slate-hyperscript/package.json) | [![](http://img.badgesize.io/https://unpkg.com/slate-hyperscript/dist/slate-hyperscript.min.js?compression=gzip&label=%20)](https://unpkg.com/slate-hyperscript/dist/slate-hyperscript.min.js) | A hyperscript tool to write JSX Slate documents! |\n| [`slate-react`](./packages/slate-react)             |             [![](https://img.shields.io/npm/v/slate-react.svg?maxAge=3600&label=&colorB=007ec6)](./packages/slate-react/package.json) |                         [![](http://img.badgesize.io/https://unpkg.com/slate-react/dist/slate-react.min.js?compression=gzip&label=%20)](https://unpkg.com/slate-react/dist/slate-react.min.js) | React components for rendering Slate editors.    |\n\n<br />\n\n### Contributing!\n\nAll contributions are super welcome! Check out the [Contributing instructions](https://docs.slatejs.org/general/contributing) for more info!\n\nSlate is [MIT-licensed](./License.md).\n"
  },
  {
    "path": "babel.config.js",
    "content": "// Needed for jest.\nmodule.exports = {\n  inputSourceMap: true,\n  presets: [\n    '@babel/preset-typescript',\n    ['@babel/preset-env', { targets: { node: 'current' } }],\n    '@babel/preset-react',\n  ],\n}\n"
  },
  {
    "path": "config/babel/register.cjs",
    "content": "require('@babel/register')({\n  extensions: ['.js', '.jsx', '.ts', '.tsx'],\n  inputSourceMap: true,\n  presets: [\n    '@babel/preset-typescript',\n    ['@babel/preset-env', { targets: { node: 'current' } }],\n    '@babel/preset-react',\n  ],\n})\n"
  },
  {
    "path": "config/rollup/rollup.config.js",
    "content": "import babel from 'rollup-plugin-babel'\nimport builtins from 'rollup-plugin-node-builtins'\nimport commonjs from 'rollup-plugin-commonjs'\nimport globals from 'rollup-plugin-node-globals'\nimport json from 'rollup-plugin-json'\nimport replace from 'rollup-plugin-replace'\nimport resolve from 'rollup-plugin-node-resolve'\nimport typescript from 'rollup-plugin-typescript2'\nimport { terser } from 'rollup-plugin-terser'\nimport { startCase } from 'lodash'\n\nimport Core from '../../packages/slate/package.json'\nimport History from '../../packages/slate-history/package.json'\nimport Hyperscript from '../../packages/slate-hyperscript/package.json'\nimport DOM from '../../packages/slate-dom/package.json'\nimport React from '../../packages/slate-react/package.json'\n\n/**\n * Return a Rollup configuration for a `pkg` with `env` and `target`.\n */\n\nfunction configure(pkg, env, target) {\n  const isProd = env === 'production'\n  const isUmd = target === 'umd'\n  const isModule = target === 'module'\n  const isCommonJs = target === 'cjs'\n  const input = `packages/${pkg.name}/src/index.ts`\n  const deps = []\n    .concat(pkg.dependencies ? Object.keys(pkg.dependencies) : [])\n    .concat(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : [])\n\n  // Stop Rollup from warning about circular dependencies.\n  const onwarn = warning => {\n    if (warning.code !== 'CIRCULAR_DEPENDENCY') {\n      console.warn(`(!) ${warning.message}`) // eslint-disable-line no-console\n    }\n  }\n\n  const plugins = [\n    // Allow Rollup to resolve modules from `node_modules`, since it only\n    // resolves local modules by default.\n    resolve({\n      browser: true,\n    }),\n\n    typescript({\n      abortOnError: false,\n      tsconfig: `./packages/${pkg.name}/tsconfig.json`,\n      // COMPAT: Without this flag sometimes the declarations are not updated.\n      // clean: isProd ? true : false,\n      clean: true,\n    }),\n\n    // Allow Rollup to resolve CommonJS modules, since it only resolves ES2015\n    // modules by default.\n    commonjs({\n      exclude: [`packages/${pkg.name}/src/**`],\n      // HACK: Sometimes the CommonJS plugin can't identify named exports, so\n      // we have to manually specify named exports here for them to work.\n      // https://github.com/rollup/rollup-plugin-commonjs#custom-named-exports\n      namedExports: {\n        'react-dom': ['findDOMNode'],\n        'react-dom/server': ['renderToStaticMarkup'],\n      },\n    }),\n\n    // Convert JSON imports to ES6 modules.\n    json(),\n\n    // Replace `process.env.NODE_ENV` with its value, which enables some modules\n    // like React and Slate to use their production variant.\n    replace({\n      'process.env.NODE_ENV': JSON.stringify(env),\n    }),\n\n    // Register Node.js builtins for browserify compatibility.\n    builtins(),\n\n    // Use Babel to transpile the result, limiting it to the source code.\n    babel({\n      runtimeHelpers: true,\n      include: [`packages/${pkg.name}/src/**`],\n      extensions: ['.js', '.ts', '.tsx'],\n      presets: [\n        '@babel/preset-typescript',\n        [\n          '@babel/preset-env',\n          isUmd\n            ? { modules: false }\n            : {\n                exclude: [\n                  '@babel/plugin-transform-regenerator',\n                  '@babel/transform-async-to-generator',\n                ],\n                modules: false,\n                targets: {\n                  esmodules: isModule,\n                },\n              },\n        ],\n        '@babel/preset-react',\n      ],\n      plugins: [\n        [\n          '@babel/plugin-transform-runtime',\n          isUmd\n            ? {}\n            : {\n                regenerator: false,\n                useESModules: isModule,\n              },\n        ],\n        '@babel/plugin-proposal-class-properties',\n      ],\n    }),\n\n    // Register Node.js globals for browserify compatibility.\n    globals(),\n\n    // Only minify the output in production, since it is very slow. And only\n    // for UMD builds, since modules will be bundled by the consumer.\n    isUmd && isProd && terser(),\n  ].filter(Boolean)\n\n  if (isUmd) {\n    return {\n      plugins,\n      input,\n      onwarn,\n      output: {\n        format: 'umd',\n        file: `packages/${pkg.name}/${isProd ? pkg.umdMin : pkg.umd}`,\n        exports: 'named',\n        name: startCase(pkg.name).replace(/ /g, ''),\n        globals: pkg.umdGlobals,\n      },\n      external: Object.keys(pkg.umdGlobals || {}),\n    }\n  }\n\n  if (isCommonJs) {\n    return {\n      plugins,\n      input,\n      onwarn,\n      output: [\n        {\n          file: `packages/${pkg.name}/${pkg.main}`,\n          format: 'cjs',\n          exports: 'named',\n          sourcemap: true,\n        },\n      ],\n      // We need to explicitly state which modules are external, meaning that\n      // they are present at runtime. In the case of non-UMD configs, this means\n      // all non-Slate packages.\n      external: id => {\n        return !!deps.find(dep => dep === id || id.startsWith(`${dep}/`))\n      },\n    }\n  }\n\n  if (isModule) {\n    return {\n      plugins,\n      input,\n      onwarn,\n      output: [\n        {\n          file: `packages/${pkg.name}/${pkg.module}`,\n          format: 'es',\n          sourcemap: true,\n        },\n      ],\n      // We need to explicitly state which modules are external, meaning that\n      // they are present at runtime. In the case of non-UMD configs, this means\n      // all non-Slate packages.\n      external: id => {\n        return !!deps.find(dep => dep === id || id.startsWith(`${dep}/`))\n      },\n    }\n  }\n}\n\n/**\n * Return a Rollup configuration for a `pkg`.\n */\n\nfunction factory(pkg, options = {}) {\n  const isProd = process.env.NODE_ENV === 'production'\n  return [\n    configure(pkg, 'development', 'cjs', options),\n    configure(pkg, 'development', 'module', options),\n    isProd && configure(pkg, 'development', 'umd', options),\n    isProd && configure(pkg, 'production', 'umd', options),\n  ].filter(Boolean)\n}\n\n/**\n * Config.\n */\n\nexport default [\n  ...factory(Core),\n  ...factory(History),\n  ...factory(Hyperscript),\n  ...factory(DOM),\n  ...factory(React),\n]\n"
  },
  {
    "path": "config/typescript/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowSyntheticDefaultImports\": true,\n    \"composite\": true,\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"jsx\": \"react\",\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"sourceMap\": true,\n    \"strict\": true,\n    \"target\": \"esnext\"\n  }\n}\n"
  },
  {
    "path": "docs/Introduction.md",
    "content": "# Introduction\n\n[Slate](http://slatejs.org) is a _completely_ customizable framework for building rich text editors.\n\nSlate lets you build rich, intuitive editors like those in [Medium](https://medium.com/), [Dropbox Paper](https://www.dropbox.com/paper) or [Google Docs](https://www.google.com/docs/about/)—which are becoming table stakes for applications on the web—without your codebase getting mired in complexity.\n\nIt can do this because all of its logic is implemented with a series of plugins, so you aren't ever constrained by what _is_ or _isn't_ in \"core\". You can think of it like a pluggable implementation of `contenteditable` built on top of [React](https://facebook.github.io/react/). It was inspired by libraries like [Draft.js](https://facebook.github.io/draft-js/), [Prosemirror](http://prosemirror.net/) and [Quill](http://quilljs.com/).\n\n> 🤖 **Slate is currently in beta**. Its core API is usable now, but you might need to pull request fixes for advanced use cases. Some of its APIs are not \"finalized\" and will \\(breaking\\) change over time as we find better solutions.\n\n## Why?\n\nWhy create Slate? Well... _\\(Beware: this section has a few of_ [_my_](https://github.com/ianstormtaylor) _opinions!\\)_\n\nBefore creating Slate, I tried a lot of the other rich text libraries out there—[**Draft.js**](https://facebook.github.io/draft-js/), [**Prosemirror**](http://prosemirror.net/), [**Quill**](http://quilljs.com/), etc. What I found was that while getting simple examples to work was easy enough, once you started trying to build something like [Medium](https://medium.com/), [Dropbox Paper](https://www.dropbox.com/paper) or [Google Docs](https://www.google.com/docs/about/), you ran into deeper issues...\n\n- **The editor's \"schema\" was hardcoded and hard to customize.** Things like bold and italic were supported out of the box, but what about comments, or embeds, or even more domain-specific needs?\n- **Transforming the documents programmatically was very convoluted.** Writing as a user may have worked, but making programmatic changes, which is critical for building advanced behaviors, was needlessly complex.\n- **Serializing to HTML, Markdown, etc. seemed like an afterthought.** Simple things like transforming a document to HTML or Markdown involved writing lots of boilerplate code, for what seemed like very common use cases.\n- **Re-inventing the view layer seemed inefficient and limiting.** Most editors rolled their own views, instead of using existing technologies like React, so you had to learn a whole new system with new \"gotchas\".\n- **Collaborative editing wasn't designed for in advance.** Often the editor's internal representation of data made it impossible to use for a realtime, collaborative editing use case without basically rewriting the editor.\n- **The repositories were monolithic, not small and reusable.** The code bases for many of the editors often didn't expose the internal tooling that could have been re-used by developers, leading to having to reinvent the wheel.\n- **Building complex, nested documents was impossible.** Many editors were designed around simplistic \"flat\" documents, making things like tables, embeds and captions difficult to reason about and sometimes impossible.\n\nOf course not every editor exhibits all of these issues, but if you've tried using another editor you might have run into similar problems. To get around the limitations of their APIs and achieve the user experience you're after, you have to resort to very hacky things. And some experiences are just plain impossible to achieve.\n\nIf that sounds familiar, you might like Slate.\n\nWhich brings me to how Slate solves all of that...\n\n## Principles\n\nSlate tries to solve the question of \"[Why?](Introduction.md#why)\" with a few principles:\n\n1. **First-class plugins.** The most important part of Slate is that plugins are first-class entities. That means you can _completely_ customize the editing experience, to build complex editors like Medium's or Dropbox's, without having to fight against the library's assumptions.\n2. **Schema-less core.** Slate's core logic assumes very little about the schema of the data you'll be editing, which means that there are no assumptions baked into the library that'll trip you up when you need to go beyond the most basic use cases.\n3. **Nested document model.** The document model used for Slate is a nested, recursive tree, just like the DOM itself. This means that creating complex components like tables or nested block quotes are possible for advanced use cases. But it's also easy to keep it simple by only using a single level of hierarchy.\n4. **Parallel to the DOM.** Slate's data model is based on the DOM—the document is a nested tree, it uses selections and ranges, and it exposes all the standard event handlers. This means that advanced behaviors like tables or nested block quotes are possible. Pretty much anything you can do in the DOM, you can do in Slate.\n5. **Intuitive commands.** Slate documents are edited using \"commands\", that are designed to be high-level and extremely intuitive to write and read, so that custom functionality is as expressive as possible. This greatly increases your ability to reason about your code.\n6. **Collaboration-ready data model.** The data model Slate uses—specifically how operations are applied to the document—has been designed to allow for collaborative editing to be layered on top, so you won't need to rethink everything if you decide to make your editor collaborative.\n7. **Clear \"core\" boundaries.** With a plugin-first architecture, and a schema-less core, it becomes a lot clearer where the boundary is between \"core\" and \"custom\", which means that the core experience doesn't get bogged down in edge cases.\n\n## Demo\n\nCheck out the [**live demo**](http://slatejs.org) of all of the examples!\n\n## Examples\n\nTo get a sense for how you might use Slate, check out a few of the examples:\n\n- [**Plain text**](https://www.slatejs.org/examples/plaintext) — showing the most basic case: a glorified `<textarea>`.\n- [**Rich text**](https://www.slatejs.org/examples/richtext) — showing the features you'd expect from a basic editor.\n- [**Markdown preview**](https://www.slatejs.org/examples/markdown-preview) — showing how to add key handlers for Markdown-like shortcuts.\n- [**Inlines**](https://www.slatejs.org/examples/inlines) — showing how to wrap text in inline nodes with associated data.\n- [**Images**](https://www.slatejs.org/examples/images) — showing how to use void \\(text-less\\) nodes to add images.\n- [**Hovering toolbar**](https://www.slatejs.org/examples/hovering-toolbar) — showing how a contextual hovering menu can be implemented.\n- [**Tables**](https://www.slatejs.org/examples/tables) — showing how to nest blocks to render more advanced components.\n- [**Paste HTML**](https://www.slatejs.org/examples/paste-html) — showing how to use an HTML serializer to handle pasted HTML.\n- [**Mentions**](https://www.slatejs.org/examples/mentions) — showing how to use inline void nodes for simple @-mentions.\n\nEach example includes a **View Source** link to the code that implements it. And we have [other examples](https://github.com/ianstormtaylor/slate/tree/master/site/examples) too.\n\nIf you have an idea for an example that shows a common use case, pull request it!\n\n## Documentation\n\nIf you're using Slate for the first time, check out the [Getting Started](http://docs.slatejs.org/walkthroughs/01-installing-slate) walkthroughs and the [Concepts](http://docs.slatejs.org/concepts) to familiarize yourself with Slate's architecture and mental models.\n\n- [**Walkthroughs**](http://docs.slatejs.org/walkthroughs)\n- [**Concepts**](http://docs.slatejs.org/concepts)\n- [**FAQ**](http://docs.slatejs.org/general/faq)\n- [**Resources**](http://docs.slatejs.org/general/resources)\n\nIf even that's not enough, you can always [read the source itself](https://github.com/ianstormtaylor/slate/tree/master/packages), which is heavily commented.\n\nThere are also translations of the documentation into other languages:\n\n- [中文](https://doodlewind.github.io/slate-doc-cn/)\n\nIf you're maintaining a translation, feel free to pull request it here!\n\n## Contributing!\n\nAll contributions are super welcome! Check out the [Contributing instructions](general/contributing.md) for more info!\n\nSlate is [MIT-licensed](https://github.com/ianstormtaylor/slate/tree/f6bfe034d707693488c38da77537fd36cb8856cf/License.md).\n"
  },
  {
    "path": "docs/Summary.md",
    "content": "# Table of contents\n\n- [Introduction](Introduction.md)\n\n## Walkthroughs\n\n- [Installing Slate](walkthroughs/01-installing-slate.md)\n- [Adding Event Handlers](walkthroughs/02-adding-event-handlers.md)\n- [Defining Custom Elements](walkthroughs/03-defining-custom-elements.md)\n- [Applying Custom Formatting](walkthroughs/04-applying-custom-formatting.md)\n- [Executing Commands](walkthroughs/05-executing-commands.md)\n- [Saving to a Database](walkthroughs/06-saving-to-a-database.md)\n- [Enabling Collaborative Editing](walkthroughs/07-enabling-collaborative-editing.md)\n- [Using the Bundled Source](walkthroughs/08-using-the-bundled-source.md)\n- [Improving Performance](walkthroughs/09-performance.md)\n\n## Concepts\n\n- [Interfaces](concepts/01-interfaces.md)\n- [Nodes](concepts/02-nodes.md)\n- [Locations](concepts/03-locations.md)\n- [Transforms](concepts/04-transforms.md)\n- [Operations](concepts/05-operations.md)\n- [Commands](concepts/06-commands.md)\n- [Editor](concepts/07-editor.md)\n- [Plugins](concepts/08-plugins.md)\n- [Rendering](concepts/09-rendering.md)\n- [Serializing](concepts/10-serializing.md)\n- [Normalizing](concepts/11-normalizing.md)\n- [TypeScript](concepts/12-typescript.md)\n- [Migrating](concepts/xx-migrating.md)\n\n## API\n\n- [Transforms](api/transforms.md)\n- [Node Types](api/nodes/README.md)\n  - [Editor](api/nodes/editor.md)\n  - [Element](api/nodes/element.md)\n  - [Node](api/nodes/node.md)\n  - [NodeEntry](api/nodes/node-entry.md)\n  - [Text](api/nodes/text.md)\n- [Location Types](api/locations/README.md)\n  - [Location](api/locations/location.md)\n  - [Path](api/locations/path.md)\n  - [PathRef](api/locations/path-ref.md)\n  - [Point](api/locations/point.md)\n  - [PointEntry](api/locations/point-entry.md)\n  - [PointRef](api/locations/point-ref.md)\n  - [Range](api/locations/range.md)\n  - [RangeRef](api/locations/range-ref.md)\n  - [Span](api/locations/span.md)\n- [Operation Types](api/operations/README.md)\n  - [Operation](api/operations/operation.md)\n- [Scrubber](api/scrubber.md)\n\n## Libraries\n\n- [Slate React](libraries/slate-react/README.md)\n  - [withReact](libraries/slate-react/with-react.md)\n  - [ReactEditor](libraries/slate-react/react-editor.md)\n  - [Hooks](libraries/slate-react/hooks.md)\n  - [Slate Component](libraries/slate-react/slate.md)\n  - [Editable Component](libraries/slate-react/editable.md)\n  - [Event Handling](libraries/slate-react/event-handling.md)\n- [Slate History](libraries/slate-history/README.md)\n  - [withHistory](libraries/slate-history/with-history.md)\n  - [HistoryEditor](libraries/slate-history/history-editor.md)\n  - [History](libraries/slate-history/history.md)\n- [Slate Hyperscript](libraries/slate-hyperscript.md)\n\n## General\n\n- [Resources](general/resources.md)\n- [Contributing](general/contributing.md)\n- [Changelog](general/changelog.md)\n- [FAQ](general/faq.md)\n"
  },
  {
    "path": "docs/api/locations/README.md",
    "content": "# Location Types APIs\n\nThe `Location` interface is a union of the ways to refer to a specific location in a Slate document: paths, points or ranges. Methods will often accept a `Location` instead of requiring only a `Path`, `Point` or `Range`.\n\n```typescript\ntype Location = Path | Point | Range\n```\n\n- [Location](./location.md)\n- [Path](./path.md)\n- [PathRef](./path-ref.md)\n- [Point](./point.md)\n- [PointEntry](./point-entry.md)\n- [PointRef](./point-ref.md)\n- [Range](./range.md)\n- [RangeRef](./range-ref.md)\n- [Span](./span.md)\n"
  },
  {
    "path": "docs/api/locations/location.md",
    "content": "# Location API\n\nThe Location interface is a union of the ways to refer to a specific location in a Slate document: paths, points or ranges. Methods will often accept a Location instead of requiring only a Path, Point or Range.\n\n```typescript\ntype Location = Path | Point | Range\n```\n\n- [Static methods](location.md#static-methods)\n  - [Check methods](location.md#check-methods)\n\n## Static methods\n\n### Check methods\n\n#### `Location.isLocation(value: any) => value is Location`\n\nCheck if a value implements the `Location` interface.\n"
  },
  {
    "path": "docs/api/locations/path-ref.md",
    "content": "# PathRef API\n\n`PathRef` objects keep a specific path in a document synced over time as new operations are applied to the editor. It is created using the `Editor.pathRef` method. You can access their property `current` at any time for the up-to-date `Path` value. When you no longer need to track this location, call `unref()` to free the resources. The `affinity` refers to the direction the `PathRef` will go when a user inserts content at the current position of the `Path`.\n\n```typescript\ninterface PathRef {\n  current: Path | null\n  affinity: 'forward' | 'backward' | null\n  unref(): Path | null\n}\n```\n\n- [Instance methods](path-ref.md#instance-methods)\n- [Static methods](path-ref.md#static-methods)\n  - [Transform methods](path-ref.md#trasnform-methods)\n\n## Instance methods\n\n#### `unref() => Path | null`\n\nFree the resources used by the PathRef. This should be called when you no longer need to track the path. Returns the final path value before being unrefed, or null if the path was already invalid.\n\n## Static methods\n\n### Transform methods\n\n#### `PathRef.transform(ref: PathRef, op: Operation)`\n\nTransform the path refs current value by an `op`.\nThe editor calls this as needed, so normally you won't need to.\n"
  },
  {
    "path": "docs/api/locations/path.md",
    "content": "# Path API\n\n`Path` arrays are a list of indexes that describe a node's exact position in a Slate node tree. Although they are usually relative to the root `Editor` object, they can be relative to any `Node` object.\n\n```typescript\ntype Path = number[]\n```\n\n- [Static methods](path.md#static-methods)\n  - [Retrieval methods](path.md#retrieval-methods)\n  - [Check methods](path.md#check-methods)\n  - [Transform method](path.md#transform-method)\n\n## Static methods\n\n### Retrieval methods\n\n#### `Path.ancestors(path: Path, options: { reverse?: boolean } = {}) => Path[]`\n\nGet a list of ancestor paths for a given path.\n\nThe paths are sorted from shallowest to deepest ancestor. However, if the `reverse: true` option is passed, they are reversed.\n\n#### `Path.common(path: Path, another: Path) => Path`\n\nGet the common ancestor path of two paths.\n\n#### `Path.compare(path: Path, another: Path) => -1 | 0 | 1`\n\nCompare a path to another, returning an integer indicating whether the path was before, at, or after the other.\n\nNote: Two paths of unequal length can still receive a `0` result if one is directly above or below the other. If you want exact matching, use \\[\\[Path.equals\\]\\] instead.\n\n#### `Path.levels(path: Path, options?) => Path[]`\n\nGet a list of paths at every level down to a path. Note: this is the same as `Path.ancestors`, but includes the path itself.\n\nThe paths are sorted from shallowest to deepest. However, if the `reverse: true` option is passed, they are reversed.\n\nOptions: `{reverse?: boolean}`\n\n#### `Path.next(path: Path) => Path`\n\nGiven a path, gets the path to the next sibling node. The method does not ensure that the returned `Path` is valid in the document.\n\n#### `Path.parent(path: Path) => Path`\n\nGiven a path, return a new path referring to the parent node above it. If the `path` argument is equal to `[]`, throws an error.\n\n#### `Path.previous(path: Path) => Path`\n\nGiven a path, get the path to the previous sibling node. The method will throw an error if there are no previous siblings (e.g. if the Path is currently `[1, 0]`, the previous path would be `[1, -1]` which is illegal and will throw an error).\n\n#### `Path.relative(path: Path, ancestor: Path) => Path`\n\nGiven two paths, one that is an ancestor to the other, returns the relative path from the `ancestor` argument to the `path` argument. If the `ancestor` path is not actually an ancestor or equal to the `path` argument, throws an error.\n\n### Check methods\n\nCheck some attribute of a path. Always returns a boolean.\n\n#### `Path.endsAfter(path: Path, another: Path) => boolean`\n\nCheck if a path ends after one of the indexes in another.\n\n#### `Path.endsAt(path: Path, another: Path) => boolean`\n\nCheck if a path ends at one of the indexes in another.\n\n#### `Path.endsBefore(path: Path, another: Path) => boolean`\n\nCheck if a path ends before one of the indexes in another.\n\n#### `Path.equals(path: Path, another: Path) => boolean`\n\nCheck if a path is exactly equal to another.\n\n#### `Path.hasPrevious(path: Path) => boolean`\n\nCheck if the path of previous sibling node exists\n\n#### `Path.isAfter(path: Path, another: Path) => boolean`\n\nCheck if a path is after another.\n\n#### `Path.isAncestor(path: Path, another: Path) => boolean`\n\nCheck if a path is an ancestor of another.\n\n#### `Path.isBefore(path: Path, another: Path) => boolean`\n\nCheck if a path is before another.\n\n#### `Path.isChild(path: Path, another: Path) => boolean`\n\nCheck if a path is a child of another.\n\n#### `Path.isCommon(path: Path, another: Path) => boolean`\n\nCheck if a path is equal to or an ancestor of another.\n\n#### `Path.isDescendant(path: Path, another: Path) => boolean`\n\nCheck if a path is a descendant of another.\n\n#### `Path.isParent(path: Path, another: Path) => boolean`\n\nCheck if a path is the parent of another.\n\n#### `Path.isPath(value: any) => value is Path`\n\nCheck is a value implements the `Path` interface.\n\n#### `Path.isSibling(path: Path, another: Path) => boolean`\n\nCheck if a path is a sibling of another.\n\n#### `Path.operationCanTransformPath(operation: Operation) => operation is InsertNodeOperation | RemoveNodeOperation | MergeNodeOperation | SplitNodeOperation | MoveNodeOperation`\n\nReturns whether this operation can affect paths or not.\n\n### Transform method\n\n#### `Path.transform(path: Path, operation: Operation, options?) => Path | null`\n\nTransform a path by an operation.\n\nOptions: `{ affinity?: 'forward' | 'backward' | null }`\n"
  },
  {
    "path": "docs/api/locations/point-entry.md",
    "content": "# PointEntry API\n\n`PointEntry` objects are returned when iterating over `Point` objects that belong to a range.\n\n```typescript\ntype PointEntry = [Point, 'anchor' | 'focus']\n```\n"
  },
  {
    "path": "docs/api/locations/point-ref.md",
    "content": "# PointRef API\n\n`PointRef` objects keep a specific point in a document synced over time as new operations are applied to the editor. It is created using the `Editor.pointRef` method. You can access their property `current` at any time for the up-to-date `Point` value. When you no longer need to track this location, call `unref()` to free the resources. The `affinity` refers to the direction the `PointRef` will go when a user inserts content at the current position of the `Point`.\n\n```typescript\ninterface PointRef {\n  current: Point | null\n  affinity: 'forward' | 'backward' | null\n  unref(): Point | null\n}\n```\n\n- [Instance methods](point-ref.md#instance-methods)\n- [Static methods](point-ref.md#static-methods)\n  - [Transform methods](point-ref.md#trasnform-methods)\n\n## Instance methods\n\n#### `unref() => Point | null`\n\nCall this when you no longer need to sync this point.\nIt also returns the current value.\n\n## Static methods\n\n### Transform methods\n\n#### `PointRef.transform(ref: PointRef, op: Operation)`\n\nTransform the point refs current value by an `op`.\nThe editor calls this as needed, so normally you won't need to.\n"
  },
  {
    "path": "docs/api/locations/point.md",
    "content": "# Point API\n\n`Point` objects refer to a specific location in a text node in a Slate document. Its `path` refers to the location of the node in the tree, and its `offset` refers to distance into the node's string of text. Points may only refer to `Text` nodes.\n\n```typescript\ninterface Point {\n  path: Path\n  offset: number\n}\n```\n\n- [Static methods](point.md#static-methods)\n  - [Retrieval methods](point.md#retrieval-methods)\n  - [Check methods](point.md#check-methods)\n  - [Transform methods](point.md#transform-methods)\n\n## Static methods\n\n### Retrieval methods\n\n#### `Point.compare(point: Point, another: Point) => -1 | 0 | 1`\n\nCompare a `point` to `another`, returning an integer indicating whether the point was before, at or after the other.\n\n### Check methods\n\n#### `Point.isAfter(point: Point, another: Point) => boolean`\n\nCheck if a `point` is after `another`.\n\n#### `Point.isBefore(point: Point, another: Point) => boolean`\n\nCheck if a `point` is before `another`.\n\n#### `Point.equals(point: Point, another: Point) => boolean`\n\nCheck if a `point` is exactly equal to `another`.\n\n#### `Point.isPoint(value: any) => value is Point`\n\nCheck if a `value` implements the `Point` interface.\n\n### Transform methods\n\n#### `Point.transform(point: Point, op: Operation, options?) => Point | null`\n\nTransform a `point` by an `op`.\n\nOptions: `{affinity?: 'forward' | 'backward' | null}`\n"
  },
  {
    "path": "docs/api/locations/range-ref.md",
    "content": "# RangeRef API\n\n`RangeRef` objects keep a specific range in a document synced over time as new operations are applied to the editor. It is created using the `Editor.rangeRef` method. You can access their property `current` at any time for the up-to-date `Range` value. When you no longer need to track this location, call `unref()` to free the resources. The `affinity` refers to the direction the `RangeRef` will go when a user inserts content at the edges of the `Range`. `inward` means that the `Range` tends to stay the same size when content is inserted at its edges, and `outward` means that the `Range` tends to grow when content is inserted at its edges.\n\n```typescript\ninterface RangeRef {\n  current: Range | null\n  affinity: 'forward' | 'backward' | 'outward' | 'inward' | null\n  unref(): Range | null\n}\n```\n\nFor example:\n\n```typescript\nconst selectionRef = Editor.rangeRef(editor, editor.selection, {\n  affinity: 'inward',\n})\n// Allow the user to do stuff which might change the selection\nTransforms.unwrapNodes(editor)\nTransforms.select(editor, selectionRef.unref())\n```\n\n- [Instance methods](range-ref.md#instance-methods)\n- [Static methods](range-ref.md#static-methods)\n  - [Transform methods](range-ref.md#transform-methods)\n\n## Instance methods\n\n#### `unref() => Range | null`\n\nCall this when you no longer need to sync this range.\nIt also returns the current value.\n\n## Static methods\n\n### Transform methods\n\n#### `RangeRef.transform(ref: RangeRef, op: Operation)`\n\nTransform the range refs current value by an `op`.\nThe editor calls this as needed, so normally you won't need to.\n"
  },
  {
    "path": "docs/api/locations/range.md",
    "content": "# Range API\n\n`Range` objects are a set of points that refer to a specific span of a Slate document. They can define a span inside a single node or they can span across multiple nodes. The editor's `selection` is stored as a range.\n\n```typescript\ninterface Range {\n  anchor: Point\n  focus: Point\n}\n```\n\n- [Static methods](range.md#static-methods)\n  - [Retrieval methods](range.md#retrieval-methods)\n  - [Check methods](range.md#check-methods)\n  - [Transform methods](range.md#transform-methods)\n\n## Static methods\n\n### Retrieval methods\n\n#### `Range.edges(range: Range, options?) => [Point, Point]`\n\nGet the start and end points of a `range`, in the order in which they appear in the document.\n\nOptions: `{reverse?: boolean}`\n\n#### `Range.end(range: Range) => Point`\n\nGet the end point of a `range` according to the order in which it appears in the document.\n\n#### `Range.intersection(range: Range, another: Range) => Range | null`\n\nGet the intersection of one `range` with `another`. If the two ranges do not overlap, return `null`.\n\n#### `Range.points(range: Range) => Generator<PointEntry>`\n\nIterate through the two point entries in a `Range`. First it will yield a `PointEntry` representing the `anchor`, then it will yield a `PointEntry` representing the `focus`.\n\n#### `Range.start(range: Range) => Point`\n\nGet the start point of a `range` according to the order in which it appears in the document.\n\n### Check methods\n\nCheck some attribute of a Range. Always returns a boolean.\n\n#### `Range.equals(range: Range, another: Range) => boolean`\n\nCheck if a `range` is exactly equal to `another`.\n\n#### `Range.includes(range: Range, target: Path | Point | Range) => boolean`\n\nCheck if a `range` includes a path, a point, or part of another range.\n\nFor clarity the definition of `includes` can mean partially includes. Another way to describe this is if one Range intersects the other Range.\n\n#### `Range.surrounds(range: Range, target: Range) => boolean`\n\nCheck if a `range` includes another range.\n\n#### `Range.isBackward(range: Range) => boolean`\n\nCheck if a `range` is backward, meaning that its anchor point appears _after_ its focus point in the document.\n\n#### `Range.isCollapsed(range: Range) => boolean`\n\nCheck if a `range` is collapsed, meaning that both its anchor and focus points refer to the exact same position in the document.\n\n#### `Range.isExpanded(range: Range) => boolean`\n\nCheck if a `range` is expanded. This is the opposite of `Range.isCollapsed` and is provided for legibility.\n\n#### `Range.isForward(range: Range) => boolean`\n\nCheck if a `range` is forward. This is the opposite of `Range.isBackward` and is provided for legibility.\n\n#### `Range.isRange(value: any) => value is Range`\n\nCheck if a `value` implements the `Range` interface.\n\n### Transform methods\n\n#### `Range.transform(range: Range, op: Operation, options) => Range | null`\n\nTransform a `range` by an `op`.\n\nOptions: `{affinity: 'forward' | 'backward' | 'outward' | 'inward' | null}`\n"
  },
  {
    "path": "docs/api/locations/span.md",
    "content": "# Span API\n\nA `Span` is a low-level way to refer to a `Range` using `Element` as the end points instead of a `Point` which requires the use of leaf text nodes.\n\n```typescript\ntype Span = [Path, Path]\n```\n\n- [Static methods](span.md#static-methods)\n  - [Check methods](span.md#check-methods)\n\n## Static Methods\n\n### Check Methods\n\n#### `Span.isSpan(value: any) => value is Span`\n\nCheck if a `value` implements the `Span` interface.\n"
  },
  {
    "path": "docs/api/nodes/README.md",
    "content": "# Node Types APIs\n\nThe `Node` union type represents all of the different types of nodes that occur in a Slate document tree.\n\n```typescript\ntype Node = Editor | Element | Text\n\ntype Descendant = Element | Text\ntype Ancestor = Editor | Element\n```\n\n- [Node](./node.md)\n- [NodeEntry](./node-entry.md)\n- [Editor](./editor.md)\n- [Element](./element.md)\n- [Text](./text.md)\n"
  },
  {
    "path": "docs/api/nodes/editor.md",
    "content": "# Editor API\n\nThe `Editor` object stores all the state of a Slate editor. It can be extended by [plugins](../../concepts/08-plugins.md) to add helpers and implement new behaviors. It's a type of `Node` and its path is `[]`.\n\n```typescript\ninterface Editor {\n  children: Node[]\n  selection: Range | null\n  operations: Operation[]\n  marks: Omit<Text, 'text'> | null\n\n  // Schema-specific node behaviors.\n  isInline: (element: Element) => boolean\n  isVoid: (element: Element) => boolean\n  markableVoid: (element: Element) => boolean\n  normalizeNode: (entry: NodeEntry) => void\n  onChange: (options?: { operation?: Operation }) => void\n\n  // Overrideable core actions.\n  addMark: (key: string, value: any) => void\n  apply: (operation: Operation) => void\n  deleteBackward: (unit: 'character' | 'word' | 'line' | 'block') => void\n  deleteForward: (unit: 'character' | 'word' | 'line' | 'block') => void\n  deleteFragment: () => void\n  insertBreak: () => void\n  insertFragment: (fragment: Node[]) => void\n  insertNode: (node: Node) => void\n  insertText: (text: string) => void\n  removeMark: (key: string) => void\n}\n```\n\n- [Instantiation methods](editor.md#instantiation-methods)\n- [Static methods](editor.md#static-methods)\n  - [Retrieval methods](editor.md#retrieval-methods)\n  - [Manipulation methods](editor.md#manipulation-methods)\n  - [Check methods](editor.md#check-methods)\n  - [Normalization methods](editor.md#normalization-methods)\n  - [Ref methods](editor.md#ref-methods)\n- [Instance methods](editor.md#instance-methods)\n  - [Schema-specific methods to override](editor.md#schema-specific-instance-methods-to-override)\n  - [Element Type Methods](editor.md/#element-type-methods)\n  - [Normalize Methods](editor.md/#normalize-methods)\n  - [Callback Method](editor.md/#callback-method)\n  - [Mark Methods](editor.md/#mark-methods)\n  - [getFragment Method](editor.md/#getfragment-method)\n  - [Delete Methods](editor.md/#delete-methods)\n  - [Insert Methods](editor.md/#insert-methods)\n  - [Operation Handling Method](editor.md/#operation-handling-method)\n\n## Instantiation methods\n\n#### `createEditor() => Editor`\n\nNote: This method is imported directly from Slate and is not part of the Editor object.\n\nCreates a new, empty `Editor` object.\n\n## Static methods\n\n### Retrieval methods\n\n#### `Editor.above<T extends Ancestor>(editor: Editor, options?) => NodeEntry<T> | undefined`\n\nGet the matching ancestor above a location in the document.\n\nOptions:\n\n- `at?: Location = editor.selection`: Where to start at which is `editor.selection` by default.\n- `match?: NodeMatch = () => true`: Narrow the match\n- `mode?: 'highest' | 'lowest' = 'lowest'`: If `lowest` (default), returns the lowest matching ancestor. If `highest`, returns the highest matching ancestor.\n- `voids?: boolean = false`: When `false` ignore void objects.\n\n#### `Editor.after(editor: Editor, at: Location, options?) => Point | undefined`\n\nGet the point after a location.\n\nIf there is no point after the location (e.g. we are at the bottom of the document) returns `undefined`.\n\nOptions: `{distance?: number, unit?: 'offset' | 'character' | 'word' | 'line' | 'block', voids?: boolean}`\n\n#### `Editor.before(editor: Editor, at: Location, options?) => Point | undefined`\n\nGet the point before a location.\n\nIf there is no point before the location (e.g. we are at the top of the document) returns `undefined`.\n\nOptions: `{distance?: number, unit?: 'offset' | 'character' | 'word' | 'line' | 'block', voids?: boolean}`\n\n#### `Editor.edges(editor: Editor, at: Location) => [Point, Point]`\n\nGet the start and end points of a location.\n\n#### `Editor.end(editor: Editor, at: Location) => Point`\n\nGet the end point of a location.\n\n#### `Editor.first(editor: Editor, at: Location) => NodeEntry`\n\nGet the first node at a location.\n\n#### `Editor.fragment(editor: Editor, at: Location) => Descendant[]`\n\nGet the fragment at a location.\n\n#### `Editor.last(editor: Editor, at: Location) => NodeEntry`\n\nGet the last node at a location.\n\n#### `Editor.leaf(editor: Editor, at: Location, options?) => NodeEntry`\n\nGet the leaf text node at a location.\n\nOptions: `{depth?: number, edge?: 'start' | 'end'}`\n\n#### `Editor.levels<T extends Node>(editor: Editor, options?) => Generator<NodeEntry<T>, void, undefined>`\n\nIterate through all of the levels at a location.\n\nOptions: `{at?: Location, match?: NodeMatch, reverse?: boolean, voids?: boolean}`\n\n#### `Editor.marks(editor: Editor) => Omit<Text, 'text'> | null`\n\nGet the marks that would be added to text at the current selection.\n\n#### `Editor.next<T extends Descendant>(editor: Editor, options?) => NodeEntry<T> | undefined`\n\nGet the matching node in the branch of the document after a location.\n\nNote: To find the next Point, and not the next Node, use the `Editor.after` method\n\nOptions: `{at?: Location, match?: NodeMatch, mode?: 'all' | 'highest' | 'lowest', voids?: boolean}`\n\n#### `Editor.node(editor: Editor, at: Location, options?) => NodeEntry`\n\nGet the node at a location.\n\nOptions: `depth?: number, edge?: 'start' | 'end'`\n\n#### `Editor.nodes<T extends Node>(editor: Editor, options?) => Generator<NodeEntry<T>, void, undefined>`\n\nAt any given `Location` or `Span` in the editor provided by `at` (default is the current selection), the method returns a Generator of `NodeEntry` objects that represent the nodes that include `at`. At the top of the hierarchy is the `Editor` object itself.\n\nOptions: `{at?: Location | Span, match?: NodeMatch, mode?: 'all' | 'highest' | 'lowest', universal?: boolean, reverse?: boolean, voids?: boolean, pass?: (node: NodeEntry => boolean)}`\n\n`options.match`: Provide a value to the `match?` option to limit the `NodeEntry` objects that are returned.\n\n`options.mode`:\n\n- `'all'` (default): Return all matching nodes\n- `'highest'`: in a hierarchy of nodes, only return the highest level matching nodes\n- `'lowest'`: in a hierarchy of nodes, only return the lowest level matching nodes\n\n`options.pass`: Skip the descendants of certain nodes (but not the nodes themselves).\n\n#### `Editor.parent(editor: Editor, at: Location, options?) => NodeEntry<Ancestor>`\n\nGet the parent node of a location.\n\nOptions: `{depth?: number, edge?: 'start' | 'end'}`\n\n#### `Editor.path(editor: Editor, at: Location, options?) => Path`\n\nGet the path of a location.\n\nOptions: `{depth?: number, edge?: 'start' | 'end'}`\n\n#### `Editor.point(editor: Editor, at: Location, options?) => Point`\n\nGet the `start` or `end` (default is `start`) point of a location.\n\nOptions: `{edge?: 'start' | 'end'}`\n\n#### `Editor.positions(editor: Editor, options?) => Generator<Point, void, undefined>`\n\nIterate through all of the positions in the document where a `Point` can be placed. The first `Point` returns is always the starting point followed by the next `Point` as determined by the `unit` option.\n\nRead `options.unit` to see how this method iterates through positions.\n\nNote: By default void nodes are treated as a single point and iteration will not happen inside their content unless the voids option is set, then iteration will occur.\n\nOptions:\n\n- `at?: Location = editor.selection`: The `Location` in which to iterate the positions of.\n- `unit?: 'offset' | 'character' | 'word' | 'line' | 'block' = 'offset'`:\n  - `offset`: Moves to the next offset `Point`. It will include the `Point` at the end of a `Text` object and then move onto the first `Point` (at the 0th offset) of the next `Text` object. This may be counter-intuitive because the end of a `Text` and the beginning of the next `Text` might be thought of as the same position.\n  - `character`: Moves to the next `character` but is not always the next `index` in the string. This is because Unicode encodings may require multiple bytes to create one character. Unlike `offset`, `character` will not count the end of a `Text` and the beginning of the next `Text` as separate positions to return. Warning: The character offsets for Unicode characters does not appear to be reliable in some cases like a Smiley Emoji will be identified as 2 characters.\n  - `word`: Moves to the position immediately after the next `word`. In `reverse` mode, moves to the position immediately before the previous `word`.\n  - `line` | `block`: Starts at the beginning position and then the position at the end of the block. Then starts at the beginning of the next block and then the end of the next block.\n- `reverse?: boolean = false`: When `true` returns the positions in reverse order. In the case of the `unit` being `word`, the actual returned positions are different (i.e. we will get the start of a word in reverse instead of the end).\n- `voids?: boolean = false`: When `true` include void Nodes.\n\n#### `Editor.previous<T extends Node>(editor: Editor, options?) => NodeEntry<T> | undefined`\n\nGet the matching node in the branch of the document before a location.\n\nNote: To find the previous Point, and not the previous Node, use the `Editor.before` method\n\nOptions: `{at?: Location, match?: NodeMatch, mode?: 'all' | 'highest' | 'lowest', voids?: boolean}`\n\n#### `Editor.range(editor: Editor, at: Location, to?: Location) => Range`\n\nGet a range of a location.\n\n#### `Editor.start(editor: Editor, at: Location) => Point`\n\nGet the start point of a location.\n\n#### `Editor.string(editor: Editor, at: Location, options?) => string`\n\nGet the text string content of a location.\n\nNote: by default the text of void nodes is considered to be an empty string, regardless of content, unless the voids option is set.\n\nOptions: : `{voids?: boolean}`\n\n#### `Editor.void(editor: Editor, options?) => NodeEntry<Element> | undefined`\n\nMatch a void node in the current branch of the editor.\n\nOptions: `{at?: Location, mode?: 'highest' | 'lowest', voids?: boolean}`\n\n### Manipulation methods\n\n#### `Editor.addMark(editor: Editor, key: string, value: any) => void`\n\nAdd a custom property to the leaf text nodes and any nodes that `editor.markableVoid()` allows in the current selection.\n\nIf the selection is currently collapsed, the marks will be added to the `editor.marks` property instead, and applied when text is inserted next.\n\n#### `Editor.deleteBackward(editor: Editor, options?) => void`\n\nDelete content in the editor backward from the current selection.\n\nOptions: `{unit?: 'character' | 'word' | 'line' | 'block'}`\n\n#### `Editor.deleteForward(editor: Editor, options?) => void`\n\nDelete content in the editor forward from the current selection.\n\nOptions: `{unit?: 'character' | 'word' | 'line' | 'block'}`\n\n#### `Editor.deleteFragment(editor: Editor) => void`\n\nDelete the content in the current selection.\n\n#### `Editor.insertBreak(editor: Editor) => void`\n\nInsert a block break at the current selection.\n\n#### `Editor.insertSoftBreak(editor: Editor) => void`\n\nInsert a soft break at the current selection.\n\n#### `Editor.insertFragment(editor: Editor, fragment: Node[], options?) => void`\n\nInserts a fragment at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n\nOptions: `{at?: Location, hanging?: boolean, voids?: boolean}`\n\n#### `Editor.insertNode(editor: Editor, node: Node, options?) => void`\n\nAtomically insert `node` at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n\nOptions supported: `NodeOptions & {hanging?: boolean, select?: boolean}`.\n\n#### `Editor.insertText(editor: Editor, text: string, options?) => void`\n\nInsert a string of text at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n\nOptions: `{at?: Location, voids?: boolean}`\n\n#### `Editor.removeMark(editor: Editor, key: string) => void`\n\nRemove a custom property from all of the leaf text nodes within non-void nodes or void nodes that `editor.markableVoid()` allows in the current selection.\n\nIf the selection is currently collapsed, the removal will be stored on `editor.marks` and applied to the text inserted next.\n\n#### `Editor.unhangRange(editor: Editor, range: Range, options?) => Range`\n\nConvert a range into a non-hanging one.\n\nA \"hanging\" range is one created by the browser's \"triple-click\" selection behavior. When triple-clicking a block, the browser selects from the start of that block to the start of the _next_ block. The range thus \"hangs over\" into the next block. If `unhangRange` is given such a range, it moves the end backwards until it's in a non-empty text node that precedes the hanging block.\n\nNote that `unhangRange` is designed for the specific purpose of fixing triple-clicked blocks, and therefore currently has a number of caveats:\n\n- It does not modify the start of the range; only the end. For example, it does not \"unhang\" a selection that starts at the end of a previous block.\n- It only does anything if the start block is fully selected. For example, it does not handle ranges created by double-clicking the end of a paragraph (which browsers treat by selecting from the end of that paragraph to the start of the next).\n\nOptions:\n\n- `voids?: boolean = false`: Allow placing the end of the selection in a void node.\n\n### Check methods\n\n#### `Editor.hasBlocks(editor: Editor, element: Element) => boolean`\n\nCheck if a node has block children.\n\n#### `Editor.hasInlines(editor: Editor, element: Element) => boolean`\n\nCheck if a node has inline and text children.\n\n#### `Editor.hasTexts(editor: Editor, element: Element) => boolean`\n\nCheck if a node has text children.\n\n#### `Editor.isBlock(editor: Editor, value: any) => value is Element`\n\nCheck if a value is a block `Element` object.\n\n#### `Editor.isEditor(value: any) => value is Editor`\n\nCheck if a value is an `Editor` object.\n\n#### `Editor.isEnd(editor: Editor, point: Point, at: Location) => boolean`\n\nCheck if a point is the end point of a location.\n\n#### `Editor.isEdge(editor: Editor, point: Point, at: Location) => boolean`\n\nCheck if a point is an edge of a location.\n\n#### `Editor.isEmpty(editor: Editor, element: Element) => boolean`\n\nCheck if an element is empty, accounting for void nodes.\n\n#### `Editor.isInline(editor: Editor, value: any) => value is Element`\n\nCheck if a value is an inline `Element` object.\n\n#### `Editor.isNormalizing(editor: Editor) => boolean`\n\nCheck if the editor is currently normalizing after each operation.\n\n#### `Editor.isStart(editor: Editor, point: Point, at: Location) => boolean`\n\nCheck if a point is the start point of a location.\n\n#### `Editor.isVoid(editor: Editor, value: any) => value is Element`\n\nCheck if a value is a void `Element` object.\n\n### Normalization methods\n\n#### `Editor.normalize(editor: Editor, options?) => void`\n\nNormalize any dirty objects in the editor.\n\nOptions: `{force?: boolean; operation?: Operation}`\n\n#### `Editor.withoutNormalizing(editor: Editor, fn: () => void) => void`\n\nCall a function, deferring normalization until after it completes.\nSee [Normalization - Implications for Other Code](../../concepts/11-normalizing.md#implications-for-other-code);\n\n### Ref Methods\n\n#### `Editor.pathRef(editor: Editor, path: Path, options?) => PathRef`\n\nCreate a mutable ref for a `Path` object, which will stay in sync as new operations are applied to the editor.\n\nOptions: `{affinity?: 'backward' | 'forward' | null}`\n\n#### `Editor.pathRefs(editor: Editor) => Set<PathRef>`\n\nGet the set of currently tracked path refs of the editor.\n\n#### `Editor.pointRef(editor: Editor, point: Point, options?) => PointRef`\n\nCreate a mutable ref for a `Point` object, which will stay in sync as new operations are applied to the editor.\n\nOptions: `{affinity?: 'backward' | 'forward' | null}`\n\n#### `Editor.pointRefs(editor: Editor) => Set<PointRef>`\n\nGet the set of currently tracked point refs of the editor.\n\n#### `Editor.rangeRef(editor: Editor, range: Range, options?) => RangeRef`\n\nCreate a mutable ref for a `Range` object, which will stay in sync as new operations are applied to the editor.\n\nOptions: `{affinity?: 'backward' | 'forward' | 'outward' | 'inward' | null}`\n\n#### `Editor.rangeRefs(editor: Editor) => Set<RangeRef>`\n\nGet the set of currently tracked range refs of the editor.\n\n## Instance Methods\n\n### Schema-specific instance methods to override\n\nReplace these methods to modify the original behavior of the editor when building [Plugins](../../concepts/08-plugins.md). When modifying behavior, call the original method when appropriate. For example, a plugin that marks image nodes as \"void\":\n\n```javascript\nconst withImages = editor => {\n  const { isVoid } = editor\n\n  editor.isVoid = element => {\n    return element.type === 'image' ? true : isVoid(element)\n  }\n\n  return editor\n}\n```\n\n### Element type methods\n\nUse these methods so that Slate can identify certain elements as [inlines](../../concepts/02-nodes.md#blocks-vs-inlines) or [voids](../../concepts/02-nodes.md#voids).\n\n#### `isInline(element: Element) => boolean`\n\nCheck if a value is an inline `Element` object.\n\n#### `isVoid(element: Element) => boolean`\n\nCheck if a value is a void `Element` object.\n\n### Normalize methods\n\n#### `normalizeNode(entry: NodeEntry, { operation, fallbackElement }) => void`\n\n[Normalize](../../concepts/11-normalizing.md) a Node according to the schema.\n\n#### `shouldNormalize: (options) => boolean`\n\nOverride this method to prevent normalizing the editor.\n\nOptions: `{ dirtyPaths: Path[]; initialDirtyPathsLength: number; iteration: number; operation?: Operation }`\n\n### Callback method\n\n#### `onChange(options?: { operation?: Operation }) => void`\n\nCalled when there is a change in the editor.\n\n### Mark methods\n\n#### `markableVoid: (element: Element) => boolean`\n\nTells which void nodes accept Marks. Slate's default implementation returns `false`, but if some void elements support formatting, override this function to include them.\n\n#### `addMark(key: string, value: any) => void`\n\nAdd a custom property to the leaf text nodes within non-void nodes or void nodes that `editor.markableVoid()` allows in the current selection. If the selection is currently collapsed, the marks will be added to the `editor.marks` property instead, and applied when text is inserted next.\n\n#### `removeMark(key: string) => void`\n\nRemove a custom property from the leaf text nodes within non-void nodes or void nodes that `editor.markableVoid()` allows in the current selection.\n\n### getFragment method\n\n#### `getFragment() => Descendant[]`\n\nReturns the fragment at the current selection. Used when cutting or copying, as an example, to get the fragment at the current selection.\n\n### Delete methods\n\nWhen a user presses backspace or delete, it invokes the method based on the selection. For example, if the selection is expanded over some text and the user presses the backspace key, `deleteFragment` will be called, but if the selection is collapsed, `deleteBackward` will be called.\n\n#### `deleteBackward(options?: {unit?: 'character' | 'word' | 'line' | 'block'}) => void`\n\nDelete content in the editor backward from the current selection.\n\n#### `deleteForward(options?: {unit?: 'character' | 'word' | 'line' | 'block'}) => void`\n\nDelete content in the editor forward from the current selection.\n\n#### `deleteFragment() => void`\n\nDelete the content of the current selection.\n\n### Insert methods\n\n#### `insertFragment(fragment: Node[]) => void`\n\nInsert a fragment at the current selection. If the selection is currently expanded, delete it first.\n\n#### `insertBreak() => void`\n\nInsert a block break at the current selection. If the selection is currently expanded, delete it first.\n\n#### `insertSoftBreak() => void`\n\nInsert a soft break at the current selection. If the selection is currently expanded, delete it first.\n\n#### `insertNode(node: Node) => void`\n\nInsert a node at the current selection. If the selection is currently expanded, delete it first.\n\n#### `insertText(text: string) => void`\n\nInsert text at the current selection. If the selection is currently expanded, delete it first.\n\n### Operation handling method\n\n#### `apply(operation: Operation) => void`\n\nApply an operation in the editor.\n"
  },
  {
    "path": "docs/api/nodes/element.md",
    "content": "# Element API\n\n`Element` objects are a type of `Node` in a Slate document that contain other `Element` nodes or `Text` nodes.\n\n```typescript\ninterface Element {\n  children: Node[]\n}\n```\n\n- [Behavior Types](element.md#element-behavior-types)\n  - [Block vs. Inline](element.md#block-vs-inline)\n  - [Void vs Not Void](element.md#void-vs-not-void)\n    - [Rendering Void Elements](element.md#rendering-void-elements)\n- [Static methods](element.md#static-methods)\n  - [Retrieval methods](element.md#retrieval-methods)\n  - [Check methods](element.md#check-methods)\n\n## Element Behavior Types\n\nElement nodes behave differently depending on the [Slate editor's configuration](./editor.md#schema-specific-instance-methods-to-override). An element can be:\n\n- \"block\" or \"inline\" as defined by `editor.isInline`\n- either \"void\" or \"not void\" as defined by `editor.isVoid`\n\n### Block vs. Inline\n\nA \"block\" element can only be siblings with other \"block\" elements. An \"inline\" node can be siblings with `Text` nodes or other \"inline\" elements.\n\n### Void vs Not Void\n\nIn a not \"void\" element, Slate handles the rendering of its `children` (e.g. in a paragraph where the `Text` and `Inline` children are rendered by Slate). In a \"void\" element, the `children` are rendered by the `Element`'s render code.\n\n#### Voids That Support Marks\n\nSome void elements are effectively stand-ins for text, such as with the [Mentions](https://www.slatejs.org/examples/mentions) example, where the mention element renders the character's name. Users might want to format Void elements like this with bold, or set their font and size, so `editor.markableVoid` tells Slate whether or not to apply Marks to the text children of void elements.\n\n#### Rendering Void Elements\n\nVoid Elements must\n\n- always have one empty child text node (for selection)\n- render using `attributes` and `children` (so, their outermost HTML element **can't** be an HTML void element)\n- set `contentEditable={false}` (for Firefox)\n\nTypical rendering code will resemble this `thematic-break` (horizontal rule) element:\n\n```javascript\nreturn (\n  <div {...attributes} contentEditable={false}>\n    {children}\n    <hr />\n  </div>\n)\n```\n\nFor a \"markable\" void such as a `mention` element, marks on the empty child element can be used to determine how the void element is rendered (Slate Marks are applied only to Text leaves):\n\n```javascript\nconst Mention = ({ attributes, children, element }) => {\n  const selected = useSelected()\n  const focused = useFocused()\n  const style: React.CSSProperties = {\n    padding: '3px 3px 2px',\n    margin: '0 1px',\n    verticalAlign: 'baseline',\n    display: 'inline-block',\n    borderRadius: '4px',\n    backgroundColor: '#eee',\n    fontSize: '0.9em',\n    boxShadow: selected && focused ? '0 0 0 2px #B4D5FF' : 'none',\n  }\n  // See if our empty text child has any styling marks applied and apply those\n  if (element.children[0].bold) {\n    style.fontWeight = 'bold'\n  }\n  if (element.children[0].italic) {\n    style.fontStyle = 'italic'\n  }\n  return (\n    <span\n      {...attributes}\n      contentEditable={false}\n      data-cy={`mention-${element.character.replace(' ', '-')}`}\n      style={style}\n    >\n      {children}@{element.character}\n    </span>\n  )\n}\n```\n\n## Static methods\n\n### Retrieval methods\n\n#### `Element.matches(element: Element, props: Partial<Element>) => boolean`\n\nCheck if an element matches a set of `props`. Note: This checks custom properties, but it does not ensure that any children are equivalent.\n\n### Check methods\n\n#### `Element.isAncestor(value: any) => value is Ancestor`\n\nCheck if a value implements the 'Ancestor' interface.\n\n#### `Element.isElement(value: any) => value is Element`\n\nCheck if a `value` implements the `Element` interface.\n\n#### `Element.isElementList(value: any) => value is Element[]`\n\nCheck if a `value` is an array of `Element` objects.\n\n#### `Element.isElementType<T Extends Element>(value: any, elementVal: string, ElementKey: string = 'type'): value is T`\n\nCheck if a value implements the `Element` interface and has elementKey with selected value.\nDefault it check to `type` key value\n"
  },
  {
    "path": "docs/api/nodes/node-entry.md",
    "content": "# NodeEntry API\n\n`NodeEntry` objects are returned when iterating over the nodes in a Slate document tree. They consist of an array with two elements: the `Node` and its `Path` relative to the root node in the document.\n\nThey are generics meaning that sometimes they will return a subset of `Node` types like an `Element` or `Text`.\n\n```typescript\ntype NodeEntry<T extends Node = Node> = [T, Path]\n```\n"
  },
  {
    "path": "docs/api/nodes/node.md",
    "content": "# Node API\n\n- [Static methods](node.md#static-methods)\n  - [Retrieval methods](node.md#retrieval-methods)\n  - [Text methods](node.md#text-methods)\n  - [Check methods](node.md#check-methods)\n\n## Static methods\n\n### Retrieval methods\n\n#### `Node.ancestor(root: Node, path: Path) => Ancestor`\n\nGet the node at a specific `path`, asserting that it is an ancestor node. If the specified node is not an ancestor node, throw an error.\n\n#### `Node.ancestors(root: Node, path: Path, options?) => Generator<NodeEntry<Ancestor>>`\n\nReturn a generator of all the ancestor nodes above a specific path. By default, the order is top-down, from highest to lowest ancestor in the tree, but you can pass the `reverse: true` option to go bottom-up.\n\nOptions: `{reverse?: boolean}`\n\n#### `Node.child(root: Node, index: number) => Descendant`\n\nGet the child of a node at the specified `index`.\n\n#### `Node.children(root: Node, path: Path, options?) => Generator<NodeEntry<Descendant>>`\n\nIterate over the children of a node at a specific path.\n\nOptions: `{reverse?: boolean}`\n\n#### `Node.common(root: Node, path: Path, another: Path) => NodeEntry`\n\nGet an entry for the common ancestor node of two paths. It might be a Text node, an Element, or the Editor itself.\n\nFor the common block ancestor, see [Editor Selection](https://docs.slatejs.org/concepts/03-locations#selection)\n\n#### `Node.descendant(root: Node, path: Path) => Descendant`\n\nGet the node at a specific path, asserting that it's a descendant node.\n\n#### `Node.descendants(root: Node, options?) => Generator<NodeEntry<Descendant>>`\n\nReturn a generator of all the descendant node entries inside a root node. Each iteration will return a `NodeEntry` tuple consisting of `[Node, Path]`.\n\nOptions: `{from?: Path, to?: Path, reverse?: boolean, pass?: (node: NodeEntry => boolean)}`\n\n#### `Node.elements(root: Node, options?) => Generator<ElementEntry>`\n\nReturn a generator of all the element nodes inside a root node. Each iteration will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the root node is an element, it will be included in the iteration as well.\n\nOptions: `{from?: Path, to?: Path, reverse?: boolean, pass?: (node: NodeEntry => boolean)}`\n\n#### `Node.extractProps(node: Node) => NodeProps`\n\nExtract all properties from a Node except for its content-related fields (`children` for Element nodes and `text` for Text nodes).\n\n```typescript\n// For an Element node\nconst element = {\n  type: 'paragraph',\n  align: 'center',\n  children: [{ text: 'Try it out for yourself!' }],\n}\nconst props = Node.extractProps(element)\n// Returns: { type: 'paragraph', align: \"center\" }\n\n// For a Text node\nconst text = { text: 'Hello', bold: true }\nconst props = Node.extractProps(text)\n// Returns: { bold: true }\n```\n\n#### `Node.first(root: Node, path: Path) => NodeEntry`\n\nGet the first node entry in a root node from a `path`.\n\n#### `Node.fragment(root: Node, range: Range) => Descendant[]`\n\nGet the sliced fragment represented by the `range`.\n\n#### `Node.get(root: Node, path: Path) => Node`\n\nGet the descendant node referred to by a specific `path`. If the path is an empty array, get the root node itself.\n\n#### `Node.getIf(root: Node, path: Path) => Node | undefined`\n\nGet a descendant node at a specific path, returning `undefined` if the node does not exist. This is a safer alternative to `Node.get()` as it won't throw an error if the path is invalid.\n\n```typescript\nconst node = Node.getIf(root, [0, 1])\nif (node) {\n  // node exists at path [0, 1]\n} else {\n  // no node exists at path [0, 1]\n}\n```\n\n#### `Node.last(root: Node, path: Path) => NodeEntry`\n\nGet the last node entry in a root node at a specific `path`.\n\n#### `Node.leaf(root: Node, path: Path) => Text`\n\nGet the node at a specific `path`, ensuring it's a leaf text node. If the node is not a leaf text node, throw an error.\n\n#### `Node.levels(root: Node, path: Path, options?) => Generator<NodeEntry>`\n\nReturn a generator of the nodes in a branch of the tree, from a specific `path`. By default, the order is top-down, from the highest to the lowest node in the tree, but you can pass the `reverse: true` option to go bottom-up.\n\nOptions: `{reverse?: boolean}`\n\n#### `Node.nodes(root: Node, options?) => Generator<NodeEntry>`\n\nReturn a generator of all the node entries of a root node. Each entry is returned as a `[Node, Path]` tuple, with the path referring to the node's position inside the root node.\n\nOptions: `{from?: Path, to?: Path, reverse?: boolean, pass?: (node: NodeEntry => boolean)}`\n\n#### `Node.parent(root: Node, path: Path) => Ancestor`\n\nGet the parent of a node at a specific `path`.\n\n### Text methods\n\nMethods related to Text.\n\n#### `Node.string(root: Node) => string`\n\nGet the concatenated text string of a node's content. Note that this will not include spaces or line breaks between block nodes. This is not intended as a user-facing string, but as a string for performing offset-related computations for a node.\n\n#### `Node.texts(root: Node, options?) => Generator<NodeEntry<Text>>`\n\nReturn a generator of all leaf text nodes in a root node.\n\nOptions: `{from?: Path, to?: Path, reverse?: boolean, pass?: (node: NodeEntry => boolean)}`\n\n### Check methods\n\nMethods used to check some attribute of a Node.\n\n#### `Node.has(root: Node, path: Path) => boolean`\n\nCheck if a descendant node exists at a specific `path`.\n\n#### `Node.isNode(value: any) => value is Node`\n\nCheck if a `value` implements the `Node` interface.\n\n#### `Node.isNodeList(value: any) => value is Node[]`\n\nCheck if a `value` is a list of `Node` objects.\n\n#### `Node.matches(root: Node, props: Partial<Node>) => boolean`\n\nCheck if a node matches a set of `props`.\n"
  },
  {
    "path": "docs/api/nodes/text.md",
    "content": "# Text API\n\n`Text` objects represent the nodes that contain the actual text content of a Slate document along with any formatting properties. They are always leaf nodes in the document tree as they cannot contain any children.\n\n```typescript\ninterface Text {\n  text: string\n}\n```\n\n- [Static methods](text.md#static-methods)\n  - [Retrieval methods](text.md#retrieval-methods)\n  - [Check methods](text.md#check-methods)\n\n## Static methods\n\n### Retrieval methods\n\n#### `Text.matches(text: Text, props: Partial<Text>) => boolean`\n\nCheck if `text` matches a set of `props`.\n\nThe way the check works is that it makes sure that (a) all the `props` exist in the `text`, and (b) if it exists, that it exactly matches the properties in the `text`.\n\nIf a `props.text` property is passed in, it will be ignored.\n\nIf there are properties in `text` that are not in `props`, those will be ignored when it comes to testing for a match.\n\n#### `Text.decorations(node: Text, decorations: DecoratedRange[]) => { leaf: Text; position?: LeafPosition }[]`\n\nGet the leaves and positions for a text node, given `decorations`.\n\n### Check methods\n\n#### `Text.equals(text: Text, another: Text, options?) => boolean`\n\nCheck if two text nodes are equal.\n\nOptions: `{loose?: boolean}`\n\n- `loose?`: When `true`, it checks if the properties of the `Text` object are equal except for the `text` property (i.e. the `String` value of the `Text`). When `false` (default), checks all properties including `text`.\n\n#### `Text.isText(value: any) => value is Text`\n\nCheck if a `value` implements the `Text` interface.\n\n#### `Text.isTextList(value: any): value is Text[]`\n\nCheck if `value` is an `Array` of only `Text` objects.\n"
  },
  {
    "path": "docs/api/operations/README.md",
    "content": "# Operation Types\n\n`Operation` objects define the low-level instructions that Slate editors use to apply changes to their internal state. Representing all changes as operations is what allows Slate editors to easily implement history, collaboration, and other features.\n\n- Operation object\n  - [Operation](./operation.md)\n- Operation subtypes\n  - [Node Operations](README.md#node-operations)\n  - [Text Operations](README.md#text-operations)\n  - [Selection Operation](README.md#selection-operation)\n  - [Base Operation](README.md#base-operation)\n\n### Node Operations\n\nNode operations operate on `Node` objects.\n\n```typescript\n// insert a new `Node`\ntype InsertNodeOperation = {\n  type: 'insert_node'\n  path: Path\n  node: Node\n}\n\n// merge two `Node` objects\ntype MergeNodeOperation = {\n  type: 'merge_node'\n  path: Path\n  position: number\n  properties: Partial<Node>\n}\n\n// move `Node` from one path to another\ntype MoveNodeOperation = {\n  type: 'move_node'\n  path: Path\n  newPath: Path\n}\n\n// Remove a `Node`\ntype RemoveNodeOperation = {\n  type: 'remove_node'\n  path: Path\n  node: Node\n}\n\n// Set properties of a `Node`\ntype SetNodeOperation = {\n  type: 'set_node'\n  path: Path\n  properties: Partial<Node>\n  newProperties: Partial<Node>\n}\n\n// Split a node into two separate `Node` objects\ntype SplitNodeOperation = {\n  type: 'split_node'\n  path: Path\n  position: number\n  properties: Partial<Node>\n}\n\nexport type NodeOperation =\n  | InsertNodeOperation\n  | MergeNodeOperation\n  | MoveNodeOperation\n  | RemoveNodeOperation\n  | SetNodeOperation\n  | SplitNodeOperation\n```\n\n### Text Operations\n\nText operations operate on `Text` objects only.\n\nNote: `Text` objects are `Node` objects so you can use `Node` operations on `Text` objects.\n\n```typescript\n// insert text into an existing `Text` node\ntype InsertTextOperation = {\n  type: 'insert_text'\n  path: Path\n  offset: number\n  text: string\n}\n\n// remove text from an existing `Text` node\ntype RemoveTextOperation = {\n  type: 'remove_text'\n  path: Path\n  offset: number\n  text: string\n}\n\nexport type TextOperation = InsertTextOperation | RemoveTextOperation\n```\n\n### Selection Operation\n\nOperation to set or unset a selection `Range`.\n\n```typescript\ntype SetSelectionOperation =\n  | {\n      type: 'set_selection'\n      properties: null\n      newProperties: Range\n    }\n  | {\n      type: 'set_selection'\n      properties: Partial<Range>\n      newProperties: Partial<Range>\n    }\n  | {\n      type: 'set_selection'\n      properties: Range\n      newProperties: null\n    }\n\nexport type SelectionOperation = SetSelectionOperation\n```\n\n### Base Operation\n\nThe combination of all operation types.\n\n```typescript\nexport type BaseOperation = NodeOperation | SelectionOperation | TextOperation\n```\n"
  },
  {
    "path": "docs/api/operations/operation.md",
    "content": "# Operation API\n\n`Operation` objects define the low-level instructions that Slate editors use to apply changes to their internal state. Representing all changes as operations is what allows Slate editors to easily implement history, collaboration, and other features.\n\n- [Static methods](operation.md#static-methods)\n  - [Manipulation methods](operation.md#manipulation-methods)\n  - [Check methods](operation.md#check-methods)\n\n## Static methods\n\n### Manipulation methods\n\n#### `Operation.inverse(op: Operation) => Operation`\n\nInvert an operation, returning a new operation that will exactly undo the original when applied.\n\n### Check methods\n\n#### `Operation.isNodeOperation(value: any) => boolean`\n\nCheck if a value is a `NodeOperation` object. Returns the value as a `NodeOperation` if it is one.\n\n#### `Operation.isOperation(value: any) => boolean`\n\nCheck if a value is an `Operation` object. Returns the value as an `Operation` if it is one.\n\n#### `Operation.isOperationList(value: any) => boolean`\n\nCheck if a value is a list of `Operation` objects. Returns the value as an `Operation[]` if it is one.\n\n#### `Operation.isSelectionOperation(value: any) => boolean`\n\nCheck if a value is a `SelectionOperation` object. Returns the value as a `SelectionOperation` if it is one.\n\n#### `Operation.isTextOperation(value: any) => boolean`\n\nCheck if a value is a `TextOperation` object. Returns the value as a `TextOperation` if it is one.\n"
  },
  {
    "path": "docs/api/scrubber.md",
    "content": "# Scrubber API\n\nWhen Slate throws an exception, it includes a stringified representation of the\nrelevant data. For example, if your application makes an API call to access the\nchild of a text Node (an impossible operation), Slate will throw an exception\nlike this:\n\n```\nCannot get the child of a text node: {\"text\": \"This is my text node.\"}\n```\n\nIf your rich text editor can include sensitive customer data, you may want to\nscrub or obfuscate that text. To help with that, you can use the Scrubber API.\nHere's an example of recursively scrubbing the `'text'` fields of any entity\nthat gets logged.\n\n```typescript\nimport { Scrubber } from 'slate'\n\nScrubber.setScrubber((key, value) => {\n  if (key === 'text') return '... scrubbed ...'\n  return value\n})\n```\n\nBy setting the scrubber in this way, the error example given above will be\nprinted as:\n\n```\nCannot get the child of a text node: {\"text\": \"... scrubbed ...\"}\n```\n\n## Text Randomizer Example\n\nHere's an example \"textRandomizer\" scrubber, which randomizes particular fields\nof Nodes, preserving their length, but replacing their contents with randomly\nchosen alphanumeric characters.\n\n```typescript\nimport { Scrubber } from 'slate'\n\nconst textRandomizer = (fieldNames: string[]) => (key, value) => {\n  if (fieldNames.includes(key)) {\n    if (typeof value === 'string') {\n      return value.split('').map(generateRandomCharacter).join('')\n    } else {\n      return '... scrubbed ...'\n    }\n  }\n\n  return value\n}\n\nconst generateRandomCharacter = (): string => {\n  const chars =\n    'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890'\n  return chars.charAt(Math.floor(Math.random() * chars.length))\n}\n\n// randomize the 'text' and 'src' fields of any Node that is included in an\n// exception thrown by Slate\nScrubber.setScrubber(Scrubber.textRandomizer(['text', 'src']))\n```\n\nIn this example, a Node that looked like:\n\n```json\n{ \"text\": \"My test input string\", \"count\": 5 }\n```\n\nwill be logged by Slate in an exception as (the random string will differ):\n\n```json\n{ \"text\": \"rSIvEzKe39l6rqQSCfyv\", \"count\": 5 }\n```\n"
  },
  {
    "path": "docs/api/transforms.md",
    "content": "# Transforms API\n\nTransforms are helper functions operating on the document. They can be used in defining your own commands.\n\n- [Node options](transforms.md#node-options)\n- [Static methods](transforms.md#static-methods)\n  - [Node transforms](transforms.md#node-transforms)\n  - [Selection transforms](transforms.md#selection-transforms)\n  - [Text transforms](transforms.md#text-transforms)\n  - [Editor transforms](transforms.md#editor-transforms)\n\n## Node options\n\nAll transforms support a parameter `options`. This includes options specific to the transform and general `NodeOptions` to specify which Nodes in the document the transform is applied to.\n\n```typescript\ninterface NodeOptions {\n  at?: Location\n  match?: (node: Node, path: Location) => boolean\n  mode?: 'highest' | 'lowest'\n  voids?: boolean\n}\n```\n\n- The `at` option selects a [Location](../concepts/03-locations.md) in the editor. It defaults to the user's current selection. [Learn more about the `at` option](../concepts/04-transforms.md#the-at-option)\n\n- The `match` option filters the set of Nodes with a custom function. [Learn more about the `match` option](../concepts/04-transforms.md#the-match-option)\n\n- The `mode` option also filters the set of nodes.\n\n- When `voids` is false, [void Elements](./nodes/editor.md#schema-specific-instance-methods-to-override) are filtered out.\n\n## Static methods\n\n### Node transforms\n\nThese transforms operate on nodes.\n\n#### `Transforms.insertFragment(editor: Editor, fragment: Node[], options?)`\n\nInsert a fragment of nodes at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n\nOptions: `{at?: Location, hanging?: boolean, voids?: boolean}`\n\n#### `Transforms.insertNodes(editor: Editor, nodes: Node | Node[], options?)`\n\nAtomically inserts `nodes` at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n\nOptions supported: `NodeOptions & {hanging?: boolean, select?: boolean}`.\n\nFor example, to insert at the very end, without replacing the current selection and regardless of block nesting, use\n\n```javascript\nTransforms.insertNodes(\n  editor,\n  { type: targetType, children: [{ text: '' }] },\n  { at: [editor.children.length] }\n)\n```\n\n#### `Transforms.removeNodes(editor: Editor, options?)`\n\nRemove nodes at the specified location in the document. If no location is specified, remove the nodes in the selection.\n\nOptions supported: `NodeOptions & {hanging?: boolean}`\n\n#### `Transforms.mergeNodes(editor: Editor, options?)`\n\nMerge a node at the specified location with the previous node at the same depth. If no location is specified, use the selection. Resulting empty container nodes are removed.\n\nOptions supported: `NodeOptions & {hanging?: boolean}`\n\n#### `Transforms.splitNodes(editor: Editor, options?)`\n\nSplit nodes at the specified location. If no location is specified, split the selection.\n\nOptions supported: `NodeOptions & {height?: number, always?: boolean}`\n\n#### `Transforms.wrapNodes(editor: Editor, element: Element, options?)`\n\nWrap nodes at the specified location in the `element` container. If no location is specified, wrap the selection.\n\nOptions supported: `NodeOptions & {split?: boolean}`.\n\n- `options.mode`: `'all'` is also supported.\n- `options.split` indicates that it's okay to split a node in order to wrap the location. For example, if `ipsum` was selected in a `Text` node with `lorem ipsum dolar`, `split: true` would wrap the word `ipsum` only, resulting in splitting the `Text` node. If `split: false`, the entire `Text` node `lorem ipsum dolar` would be wrapped.\n\n#### `Transforms.unwrapNodes(editor: Editor, options?)`\n\nUnwrap nodes at the specified location. If necessary, the parent node is split. If no location is specified, use the selection.\n\nOptions supported: `NodeOptions & {split?: boolean}`. For `options.mode`, `'all'` is also supported.\n\n#### `Transforms.setNodes(editor: Editor, props: Partial<Node>, options?)`\n\nSet properties of nodes at the specified location. If no location is specified, use the selection.\n\nIf `props` contains `undefined` values, the node's corresponding property will also be set to `undefined` as opposed to ignored.\n\nOptions supported: `NodeOptions & {hanging?: boolean, split?: boolean}`. For `options.mode`, `'all'` is also supported.\n\n#### `Transforms.unsetNodes(editor: Editor, props: string | string[], options?)`\n\nUnset properties of nodes at the specified location. If no location is specified, use the selection.\n\nOptions supported: `NodeOptions & {hanging?: boolean, split?: boolean}`. For `options.mode`, `'all'` is also supported.\n\n#### `Transforms.liftNodes(editor: Editor, options?)`\n\nLift nodes at the specified location upwards in the document tree. If necessary, the parent node is split. If no location is specified, use the selection.\n\nOptions supported: `NodeOptions`. For `options.mode`, `'all'` is also supported.\n\n#### `Transforms.moveNodes(editor: Editor, options)`\n\nMove the nodes from an origin to a destination. A destination must be specified in the `options`. If no origin is specified, move the selection.\n\nOptions supported: `NodeOptions & {to: Path}`. For `options.mode`, `'all'` is also supported.\n\n### Selection transforms\n\nTransforms that operate on the document's selection.\n\n#### `Transforms.collapse(editor: Editor, options?)`\n\nCollapse the selection to a single point.\n\nOptions: `{edge?: 'anchor' | 'focus' | 'start' | 'end'}`\n\n#### `Transforms.select(editor: Editor, target: Location)`\n\nSet the selection to a new value specified by `target`. When a selection already exists, this method is just a proxy for `setSelection` and will update the existing value.\n\nFor example, to set the selection to the entire contents of the editor:\n\n```javascript\nTransforms.select(editor, {\n  anchor: Editor.start(editor, []),\n  focus: Editor.end(editor, []),\n})\n```\n\n#### `Transforms.deselect(editor: Editor)`\n\nUnset the selection.\n\n#### `Transforms.move(editor: Editor, options?)`\n\nMove the selection's point forward or backward.\n\nOptions: `{distance?: number, unit?: 'offset' | 'character' | 'word' | 'line', reverse?: boolean, edge?: 'anchor' | 'focus' | 'start' | 'end'}`\n\n#### `Transforms.setPoint(editor: Editor, props: Partial<Point>, options?)`\n\nSet new properties on one of the selection's points.\n\nOptions: `{edge?: 'anchor' | 'focus' | 'start' | 'end'}`\n\n#### `Transforms.setSelection(editor: Editor, props: Partial<Range>)`\n\nSet new properties on an active selection. Since the value is a `Partial<Range>`, this method can only handle updates to an existing selection. If there is no active selection the operation will be void. Use `select` if you'd like to create a selection when there is none.\n\n### Text transforms\n\nTransforms that operate on text.\n\n#### `Transforms.delete(editor: Editor, options?)`\n\nDelete text in the document.\n\nOptions: `{at?: Location, distance?: number, unit?: 'character' | 'word' | 'line' | 'block', reverse?: boolean, hanging?: boolean, voids?: boolean}`\n\n#### `Transforms.insertText(editor: Editor, text: string, options?)`\n\nInsert a string of text at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n\nOptions: `{at?: Location, voids?: boolean}`\n\n### Editor transforms\n\n#### `Transforms.transform(editor: Editor, transform: Transform)`\n\nTransform the `editor` by an `operation`.\n"
  },
  {
    "path": "docs/concepts/01-interfaces.md",
    "content": "# Interfaces\n\nSlate works with pure JSON objects. All it requires is that those JSON objects conform to certain interfaces. For example, a text node in Slate must obey the `Text` interface:\n\n```typescript\ninterface Text {\n  text: string\n}\n```\n\nWhich means it must have a `text` property with a string of content.\n\nBut **any** other custom properties are also allowed, and completely up to you. This lets you tailor your data to your specific domain and use case, adding whatever formatting logic you'd like, without Slate getting in the way.\n\nThis interface-based approach separates Slate from most other rich text editors which require you to work with their hand-rolled \"model\" classes and makes it much easier to reason about. It also means that it avoids startup time penalties related to \"initializing\" the data model.\n\n## Custom Properties\n\nTo take another example, the `Element` node interface in Slate is:\n\n```typescript\ninterface Element {\n  children: Node[]\n}\n```\n\nThis is a very permissive interface. All it requires is that the `children` property gets defined containing the element's child nodes.\n\nBut you can extend elements \\(or any other interface\\) with your custom properties that are specific to your domain. For example, you might have \"paragraph\" and \"link\" elements:\n\n```javascript\nconst paragraph = {\n  type: 'paragraph',\n  children: [...],\n}\n\nconst link = {\n  type: 'link',\n  url: 'https://example.com',\n  children: [...]\n}\n```\n\nThe `type` and `url` properties are your custom API. Slate sees that they exist, but doesn't use them. However, when Slate renders a link element, you'll receive an object with the custom properties attached so that you can render it as:\n\n```jsx\n<a href={element.url}>{element.children}</a>\n```\n\nWhen getting started with Slate, it's important to understand all of the interfaces it defines. There are a handful of interfaces that are discussed in each of the guides.\n\n## Helper Functions\n\nIn addition to the typing information, each interface in Slate also exposes a series of helper functions that make them easier to work with.\n\nFor example, when working with nodes:\n\n```javascript\nimport { Node } from 'slate'\n\n// Get the string content of an element node.\nconst string = Node.string(element)\n\n// Get the node at a specific path inside a root node.\nconst descendant = Node.get(value, path)\n```\n\nOr, when working with ranges:\n\n```javascript\nimport { Range } from 'slate'\n\n// Get the start and end points of a range in order.\nconst [start, end] = Range.edges(range)\n\n// Check if a range is collapsed to a single point.\nif (Range.isCollapsed(range)) {\n  // ...\n}\n```\n\nThere are many helper functions available for all common use cases when working with different interfaces. When getting started it helps to read through all of them so you can often simplify complex logic into just a handful of lines of code.\n\n## Custom Helpers\n\nIn addition to the built-in helper functions, you might want to define your custom helper functions and expose them on your custom namespaces.\n\nFor example, if your editor supports images, you might want a helper that determines if an element is an image element:\n\n```javascript\nconst isImageElement = element => {\n  return element.type === 'image' && typeof element.url === 'string'\n}\n```\n\nYou can define these as one-off functions easily. But you might also bundle them up into namespaces, just like the core interfaces do, and use them instead.\n\nFor example:\n\n```javascript\nimport { Element } from 'slate'\n\n// You can use `MyElement` everywhere to have access to your extensions.\nexport const MyElement = {\n  ...Element,\n  isImageElement,\n  isParagraphElement,\n  isQuoteElement,\n}\n```\n\nThis makes it easy to reuse domain-specific logic alongside the built-in Slate helpers.\n"
  },
  {
    "path": "docs/concepts/02-nodes.md",
    "content": "# Nodes\n\nThe most important types are the `Node` objects:\n\n- A root-level `Editor` node that contains the entire document's content.\n- Container `Element` nodes that have semantic meaning in your domain.\n- And leaf-level `Text` nodes which contain the document's text.\n\nThese three interfaces are combined to form a tree—just like the DOM. For example, here's a simple plaintext value:\n\n```javascript\nconst editor = {\n  children: [\n    {\n      type: 'paragraph',\n      children: [\n        {\n          text: 'A line of text!',\n        },\n      ],\n    },\n  ],\n  // ...the editor has other properties too.\n}\n```\n\nMirroring the DOM as much as possible is one of Slate's principles. People use the DOM to represent documents with rich text-like structures all the time. Mirroring the DOM helps make the library familiar for new users, and it lets us reuse battle-tested patterns without having to reinvent them ourselves.\n\n> 🤖 The following content on Mozilla's Developer Network may help you learn more about the corresponding DOM concepts:\n>\n> - [Document](https://developer.mozilla.org/en-US/docs/Web/API/Document)\n> - [Block Elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements)\n> - [Inline elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements)\n> - [Text elements](https://developer.mozilla.org/en-US/docs/Web/API/Text)\n\nA Slate document is a nested and recursive structure. In a document, elements can have children nodes—all of which may have children nodes without limit. The nested and recursive structure enables you to model simple behaviors such as user mentions and hashtags or complex behaviors such as tables and figures with captions.\n\n## `Editor`\n\nThe top-level node in a Slate document is the `Editor` itself. It encapsulates all of the rich text \"content\" of the document. Its interface is:\n\n```typescript\ninterface Editor {\n  children: Node[]\n  ...\n}\n```\n\nWe'll cover its functionality later, but the important part as far as nodes are concerned is its `children` property which contains a tree of `Node` objects.\n\n## `Element`\n\nElements make up the middle layers of a rich text document. They are the nodes that are custom to your domain. Their interface is:\n\n```typescript\ninterface Element {\n  children: Node[]\n}\n```\n\nYou can define custom elements for any type of content you want. For example, you might have paragraphs and quotes in your data model which are differentiated by a `type` property:\n\n```javascript\nconst paragraph = {\n  type: 'paragraph',\n  children: [...],\n}\n\nconst quote = {\n  type: 'quote',\n  children: [...],\n}\n```\n\nIt's important to note that you can use _any_ custom properties you want. The `type` property in that example isn't something Slate knows or cares about. If you were defining your own \"link\" nodes, you might have a `url` property:\n\n```javascript\nconst link = {\n  type: 'link',\n  url: 'https://example.com',\n  children: [...],\n}\n```\n\nOr maybe you want to give all of your nodes an ID property:\n\n```javascript\nconst paragraph = {\n  id: 1,\n  type: 'paragraph',\n  children: [...],\n}\n```\n\nAll that matters is that elements always have a `children` property.\n\n## Blocks vs. Inlines\n\nDepending on your use case, you might want to define another behavior for `Element` nodes which determines their editing \"flow\".\n\nAll elements default to being \"block\" elements. They each appear separated by vertical space, and they never run into each other.\n\nBut in certain cases, like for links, you might want to make them \"inline\" flowing elements instead. That way they live at the same level as text nodes, and flow.\n\n> 🤖 This is a concept borrowed from the DOM's behavior, see [Block Elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements) and [Inline Elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements).\n\nYou can define which nodes are treated as inline nodes by overriding the `editor.isInline` function. \\(By default it always returns `false`.\\) Note that inline nodes cannot be the first or last child of a parent block, nor can they be next to another inline node in the `children` array. Slate will automatically space these with `{ text: '' }` children by default with [`normalizeNode`](11-normalizing.md#built-in-constraints).\n\nElements can either contain block elements or inline elements intermingled with text nodes as children. But elements **cannot** contain some children that are blocks and some that are inlined.\n\n## Voids\n\nSimilar to blocks and inlines, there is another element-specific behavior you can define depending on your use case: their \"void\"-ness.\n\nElements default to being non-void, meaning that their children are fully editable as text. But in some cases, like for images, you want to ensure that Slate doesn't treat their content as editable text, but instead as a black box.\n\n> 🤖 This is a concept borrowed from the HTML spec, see [Void Elements](https://www.w3.org/TR/2011/WD-html-markup-20110405/syntax.html#void-element).\n\nYou can define which elements are treated as void by overriding the `editor.isVoid` function. \\(By default it always returns `false`.\\) See [Rendering Void Elements](../api/nodes/element.md#rendering-void-elements) for implementation details.\n\n## `Text`\n\nText nodes are the lowest-level nodes in the tree, containing the text content of the document, along with any formatting. Their interface is:\n\n```typescript\ninterface Text {\n  text: string\n}\n```\n\nFor example, a string of bold text:\n\n```javascript\nconst text = {\n  text: 'A string of bold text',\n  bold: true,\n}\n```\n\nText nodes too can contain any custom properties you want, and that's how you implement custom formatting like **bold**, _italic_, `code`, etc.\nThese custom properties are sometimes called [marks](../api/nodes/editor.md#mark-methods).\n"
  },
  {
    "path": "docs/concepts/03-locations.md",
    "content": "# Locations\n\nLocations are how you refer to specific places in the document when inserting, deleting, or doing anything else with a Slate editor. There are a few different kinds of location interfaces, each for different use cases.\n\n## `Path`\n\nPaths are the lowest-level way to refer to a location. Each path is a simple array of numbers that refers to a node in the document tree by its indexes in each of its ancestor nodes down the tree:\n\n```typescript\ntype Path = number[]\n```\n\nFor example, in this document:\n\n```javascript\nconst editor = {\n  children: [\n    {\n      type: 'paragraph',\n      children: [\n        {\n          text: 'A line of text!',\n        },\n      ],\n    },\n  ],\n}\n```\n\nThe leaf text node would have a path of: `[0, 0]`.\n\nThe Editor itself has a path of `[]`. For example, to select the whole contents of the editor, call\n`Transforms.select(editor, [])`\n\n## `Point`\n\nPoints are slightly more specific than paths, and contain an `offset` into a specific text node. Their interface is:\n\n```typescript\ninterface Point {\n  path: Path\n  offset: number\n}\n```\n\nFor example, with that same document, if you wanted to refer to the very first place you could put your cursor it would be:\n\n```javascript\nconst start = {\n  path: [0, 0],\n  offset: 0,\n}\n```\n\nOr, if you wanted to refer to the end of the sentence:\n\n```javascript\nconst end = {\n  path: [0, 0],\n  offset: 15,\n}\n```\n\nIt can be helpful to think of points as being \"cursors\" \\(or \"carets\"\\) of a selection.\n\n> 🤖 Points _always_ refer to text nodes! Since they are the only ones with strings that can have cursors.\n\n## `Range`\n\nRanges are a way to refer not just to a single point in the document, but to a wider span of content between two points. \\(An example of a range is when you make a selection.\\) Their interface is:\n\n```typescript\ninterface Range {\n  anchor: Point\n  focus: Point\n}\n```\n\n> 🤖 The terms \"anchor\" and \"focus\" are borrowed from the DOM, see [Anchor](https://developer.mozilla.org/en-US/docs/Web/API/Selection/anchorNode) and [Focus](https://developer.mozilla.org/en-US/docs/Web/API/Selection/focusNode).\n\nAn anchor and focus are established by a user interaction. The anchor point isn't always _before_ the focus point in the document. Just like in the DOM, the ordering of an anchor and selection point depend on whether the range is backwards or forwards.\n\nHere's how Mozilla Developer Network explains it:\n\n> A user may make a selection from left to right \\(in document order\\) or right to left \\(reverse of document order\\). The anchor is where the user began the selection and the focus is where the user ends the selection. If you make a selection with a desktop mouse, the anchor is placed where you pressed the mouse button and the focus is placed where you released the mouse button. Anchor and focus should not be confused with the start and end positions of a selection, since anchor can be placed before the focus or vice versa, depending on the direction you made your selection. — [`Selection`, MDN](https://developer.mozilla.org/en-US/docs/Web/API/Selection)\n\nOne important distinction is that the anchor and focus points of ranges **always reference the leaf-level text nodes** in a document and never reference elements. This behavior is different than the DOM, but it simplifies working with ranges as there are fewer edge cases for you to handle.\n\n> 🤖 For more info, check out the [Range API reference](../api/locations/range.md).\n\n## Selection\n\nRanges are used in many places in Slate's API when you need to refer to a span of content between two points. One of the most common, though, is the user's current \"selection\".\n\nThe selection is a special range that is a property of the top-level `Editor`. For example, say someone has the whole sentence currently selected:\n\n```javascript\nconst editor = {\n  selection: {\n    anchor: { path: [0, 0], offset: 0 },\n    focus: { path: [0, 0], offset: 15 },\n  },\n  children: [\n    {\n      type: 'paragraph',\n      children: [\n        {\n          text: 'A line of text!',\n        },\n      ],\n    },\n  ],\n}\n```\n\n> 🤖 The selection concept is also borrowed from the DOM, see [`Selection`, MDN](https://developer.mozilla.org/en-US/docs/Web/API/Selection), although in a greatly-simplified form because Slate doesn't allow for multiple ranges inside a single selection, which makes things a lot easier to work with.\n\nThere isn't a special `Selection` interface. It's just an object that happens to respect the more general-purpose `Range` interface instead.\n\nFor example, to find the lowest block that contains all of the current selection:\n\n```javascript\nfunction getCommonBlock(editor) {\n  const range = Editor.unhangRange(editor, editor.selection, { voids: true })\n\n  let [common, path] = SlateNode.common(\n    editor,\n    range.anchor.path,\n    range.focus.path\n  )\n\n  if (Editor.isBlock(editor, common) || Editor.isEditor(common)) {\n    return [common, path]\n  } else {\n    return Editor.above(editor, {\n      at: path,\n      match: n => Editor.isBlock(editor, n) || Editor.isEditor(n),\n    })\n  }\n}\n```\n"
  },
  {
    "path": "docs/concepts/04-transforms.md",
    "content": "# Transforms\n\nSlate's data structure is immutable, so you can't modify or delete nodes directly. Instead, Slate comes with a collection of \"transform\" functions that let you change your editor's value.\n\nSlate's transform functions are designed to be very flexible, to make it possible to represent all kinds of changes you might need to make to your editor. However, that flexibility can be hard to understand at first.\n\nTypically, you'll apply a single operation to zero or more Nodes. For example, here's how you flatten the syntax tree,\nby applying `unwrapNodes` to every parent of block Elements:\n\n```javascript\nTransforms.unwrapNodes(editor, {\n  at: [], // Path of Editor\n  match: node =>\n    !Editor.isEditor(node) &&\n    node.children?.every(child => Editor.isBlock(editor, child)),\n  mode: 'all', // also the Editor's children\n})\n```\n\nNon-standard operations (or debugging/tracing which Nodes will be affected by a set of NodeOptions) may require using\n`Editor.nodes` to create a JavaScript Iterator of NodeEntries and a for..of loop to act.\nFor example, to replace all image elements with their alt text:\n\n```javascript\nconst imageElements = Editor.nodes(editor, {\n  at: [], // Path of Editor\n  match: (node, path) => 'image' === node.type,\n  // mode defaults to \"all\", so this also searches the Editor's children\n})\nfor (const nodeEntry of imageElements) {\n  const altText =\n    nodeEntry[0].alt ||\n    nodeEntry[0].title ||\n    /\\/([^/]+)$/.exec(nodeEntry[0].url)?.[1] ||\n    '☹︎'\n  Transforms.select(editor, nodeEntry[1])\n  Editor.insertFragment(editor, [{ text: altText }])\n}\n```\n\n> 🤖 Check out the [Transforms](../api/transforms.md) reference for a full list of Slate's transforms.\n\n## Selection Transforms\n\nSelection-related transforms are some of the simpler ones. For example, here's how you set the selection to a new range:\n\n```javascript\nTransforms.select(editor, {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [1, 0], offset: 2 },\n})\n```\n\nBut they can be more complex too.\n\nFor example, it's common to need to move a cursor forwards or backwards by varying distances—by character, by word, by line. Here's how you'd move the cursor backwards by three words:\n\n```javascript\nTransforms.move(editor, {\n  distance: 3,\n  unit: 'word',\n  reverse: true,\n})\n```\n\n> 🤖 For more info, check out the [Selection Transforms API Reference](../api/transforms.md#selection-transforms)\n\n## Text Transforms\n\nText transforms act on the text content of the editor. For example, here's how you'd insert a string of text as a specific point:\n\n```javascript\nTransforms.insertText(editor, 'some words', {\n  at: { path: [0, 0], offset: 3 },\n})\n```\n\nOr you could delete all of the content in an entire range from the editor:\n\n```javascript\nTransforms.delete(editor, {\n  at: {\n    anchor: { path: [0, 0], offset: 0 },\n    focus: { path: [1, 0], offset: 2 },\n  },\n})\n```\n\n> 🤖 For more info, check out the [Text Transforms API Reference](../api/transforms.md#text-transforms)\n\n## Node Transforms\n\nNode transforms act on the individual element and text nodes that make up the editor's value. For example you could insert a new text node at a specific path:\n\n```javascript\nTransforms.insertNodes(\n  editor,\n  {\n    text: 'A new string of text.',\n  },\n  {\n    at: [0, 1],\n  }\n)\n```\n\nOr you could move nodes from one path to another:\n\n```javascript\nTransforms.moveNodes(editor, {\n  at: [0, 0],\n  to: [0, 1],\n})\n```\n\n> 🤖 For more info, check out the [Node Transforms API Reference](../api/transforms.md#node-transforms)\n\n## The `at` Option\n\nMany transforms act on a specific location in the document. By default, they will use the user's current selection. But this can be overridden with the `at` option.\n\nFor example when inserting text, this would insert the string at the user's current cursor:\n\n```javascript\nTransforms.insertText(editor, 'some words')\n```\n\nWhereas this would insert it at a specific point:\n\n```javascript\nTransforms.insertText(editor, 'some words', {\n  at: { path: [0, 0], offset: 3 },\n})\n```\n\nThe `at` option is very versatile, and can be used to implement more complex transforms very easily. Since it is a `Location` it can always be either a `Path`, `Point`, or `Range`. And each of those types of locations will result in slightly different transformations.\n\nFor example, in the case of inserting text, if you specify a `Range` location, the range will first be deleted, collapsing to a single point where your text is then inserted.\n\nSo to replace a range of text with a new string you can do:\n\n```javascript\nTransforms.insertText(editor, 'some words', {\n  at: {\n    anchor: { path: [0, 0], offset: 0 },\n    focus: { path: [0, 0], offset: 3 },\n  },\n})\n```\n\nOr, if you specify a `Path` location, it will expand to a range that covers the entire node at that path. Then, using the range-based behavior it will delete all of the content of the node, and replace it with your text.\n\nSo to replace the text of an entire node with a new string you can do:\n\n```javascript\nTransforms.insertText(editor, 'some words', {\n  at: [0, 0],\n})\n```\n\nThese location-based behaviors work for all the transforms that take an `at` option. It can be hard to wrap your head around at first, but it makes the API very powerful and capable of expressing many subtly different transforms.\n\n## The `match` Option\n\nMany of the node-based transforms take a `match` function option, which restricts the transform to only apply to nodes for which the function returns `true`. When combined with `at`, `match` can also be very powerful.\n\nFor example, consider a basic transform that moves a node from one path to another:\n\n```javascript\nTransforms.moveNodes(editor, {\n  at: [2],\n  to: [5],\n})\n```\n\nAlthough it looks like it simply takes a path and moves it to another place. Under the hood two things are happening…\n\nFirst, the `at` option is expanded to be a range representing all of the content inside the node at `[2]`. Which might look something like:\n\n```javascript\nat: {\n  anchor: { path: [2, 0], offset: 0 },\n  focus: { path: [2, 2], offset: 19 }\n}\n```\n\nSecond, the `match` option is defaulted to a function that only matches the specific path, in this case `[2]`:\n\n```javascript\nmatch: (node, path) => Path.equals(path, [2])\n```\n\nThen Slate iterates over the range and moves any nodes that pass the matcher function to the new location. In this case, since `match` is defaulted to only match the exact `[2]` path, that node is moved.\n\nBut what if you wanted to move the children of the node at `[2]` instead?\n\nYou might consider looping over the node's children and moving them one at a time, but this gets very complex to manage because as you move the nodes the paths you're referring to become outdated.\n\nInstead, you can take advantage of the `at` and `match` options to match all of the children:\n\n```javascript\nTransforms.moveNodes(editor, {\n  // This will again be expanded to a range of the entire node at `[2]`.\n  at: [2],\n  // Matches nodes with a longer path, which are the children.\n  match: (node, path) => path.length === 2,\n  to: [5],\n})\n```\n\nHere we're using the same `at` path (which is expanded to a range), but instead of letting it match just that path by default, we're supplying our own `match` function which happens to match only the children of the node.\n\nUsing `match` can make representing complex logic a lot simpler.\n\nFor example, consider wanting to add a bold mark to any text nodes that aren't already italic:\n\n```javascript\nTransforms.setNodes(\n  editor,\n  { bold: true },\n  {\n    // This path references the editor, and is expanded to a range that\n    // will encompass all the content of the editor.\n    at: [],\n    // This only matches text nodes that are not already italic.\n    match: (node, path) => Text.isText(node) && node.italic !== true,\n  }\n)\n```\n\nWhen performing transforms, if you're ever looping over nodes and transforming them one at a time, consider seeing if `match` can solve your use case, and offload the complexity of managing loops to Slate instead.\nThe `match` function can examine the children of a node, in `node.children`, or use `Node.parent` to examine its parent.\n\n## Transforms and Normalization\n\nSequences of Transforms may need to be wrapped in [`Editor.withoutNormalizing`](../api/nodes/editor.md#editorwithoutnormalizingeditor-editor-fn---void--void) if the node tree should _not_ be normalized between Transforms.\nSee [Normalization - Implications for Other Code](./11-normalizing.md#implications-for-other-code);\n"
  },
  {
    "path": "docs/concepts/05-operations.md",
    "content": "# Operations\n\nOperations are the granular, low-level actions that occur while invoking transforms. A single transform could result in many low-level operations being applied to the editor.\n\nSlate's core defines all of the possible operations that can occur on a richtext document. For example:\n\n```javascript\neditor.apply({\n  type: 'insert_text',\n  path: [0, 0],\n  offset: 15,\n  text: 'A new string of text to be inserted.',\n})\n\neditor.apply({\n  type: 'remove_node',\n  path: [0, 0],\n  node: {\n    text: 'A line of text!',\n  },\n})\n\neditor.apply({\n  type: 'set_selection',\n  properties: {\n    anchor: { path: [0, 0], offset: 0 },\n  },\n  newProperties: {\n    anchor: { path: [0, 0], offset: 15 },\n  },\n})\n```\n\nUnder the covers Slate converts complex transforms into the low-level operations and applies them to the editor automatically. So you rarely have to think about operations unless you're implementing collaborative editing.\n\n> 🤖 Slate's editing behaviors being defined as operations is what makes things like collaborative editing possible, because each change is easily define-able, apply-able, compose-able and even undo-able!\n"
  },
  {
    "path": "docs/concepts/06-commands.md",
    "content": "# Commands\n\nWhile editing richtext content, your users will be doing things like inserting text, deleting text, splitting paragraphs, adding formatting, etc. Under the cover these edits are expressed using transforms and operations. But at a high level we talk about them as \"commands\".\n\nCommands are the high-level actions that represent a specific intent of the user. They are represented as helper functions on the `Editor` interface. A handful of helpers are included in core for common richtext behaviors, but you are encouraged to write your own that model your specific domain.\n\nFor example, here are some of the built-in commands:\n\n```javascript\nEditor.insertText(editor, 'A new string of text to be inserted.')\n\nEditor.deleteBackward(editor, { unit: 'word' })\n\nEditor.insertBreak(editor)\n```\n\nBut you can \\(and will!\\) also define your own custom commands that model your domain. For example, you might want to define a `formatQuote` command, or an `insertImage` command, or a `toggleBold` command depending on what types of content you allow.\n\nCommands always describe an action to be taken as if the **user** was performing the action. For that reason, they never need to define a location to perform the command, because they always act on the user's current selection.\n\n> 🤖 The concept of commands is loosely based on the DOM's built-in [`execCommand`](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) APIs. However Slate defines its own simpler \\(and extendable!\\) version of the API, because the DOM's version is too opinionated and inconsistent.\n\nUnder the covers, Slate takes care of converting each command into a set of low-level \"operations\" that are applied to produce a new value. This is what makes collaborative editing implementations possible. But you don't have to worry about that, because it happens automatically.\n\n## Custom Commands\n\nWhen defining custom commands, you can create your own namespace:\n\n```javascript\nconst MyEditor = {\n  ...Editor,\n\n  insertParagraph(editor) {\n    // ...\n  },\n}\n```\n\nWhen writing your own commands, you'll often make use of the `Transforms` helpers that ship with Slate.\n\n## Transforms\n\nTransforms are a specific set of helpers that allow you to perform a wide variety of specific changes to the document, for example:\n\n```javascript\n// Set a \"bold\" format on all of the text nodes in a range.\n// Normally you would apply a style like bold using the Editor.addMark() command.\n// The addMark() command performs a similar setNodes transform, but it uses a more\n// complicated match function in order to apply marks within markableVoid elements.\nTransforms.setNodes(\n  editor,\n  { bold: true },\n  {\n    at: range,\n    match: node => Text.isText(node),\n    split: true,\n  }\n)\n\n// Wrap the lowest block at a point in the document in a quote block.\nTransforms.wrapNodes(\n  editor,\n  { type: 'quote', children: [] },\n  {\n    at: point,\n    match: node => Editor.isBlock(editor, node),\n    mode: 'lowest',\n  }\n)\n\n// Insert new text to replace the text in a node at a specific path.\nTransforms.insertText(editor, 'A new string of text.', { at: path })\n\n// ...there are many more transforms!\n```\n\nThe transform helpers are designed to be composed together. So you might use a handful of them for each command.\n"
  },
  {
    "path": "docs/concepts/07-editor.md",
    "content": "# Editor\n\nAll of the behaviors, content and state of a Slate editor is rolled up into a single, top-level `Editor` object. It has an interface of:\n\n```typescript\ninterface Editor {\n  // Current editor state\n  children: Node[]\n  selection: Range | null\n  operations: Operation[]\n  marks: Omit<Text, 'text'> | null\n  // Schema-specific node behaviors.\n  isInline: (element: Element) => boolean\n  isVoid: (element: Element) => boolean\n  markableVoid: (element: Element) => boolean\n  normalizeNode: (entry: NodeEntry) => void\n  onChange: (options?: { operation?: Operation }) => void\n  // Overrideable core actions.\n  addMark: (key: string, value: any) => void\n  apply: (operation: Operation) => void\n  deleteBackward: (unit: 'character' | 'word' | 'line' | 'block') => void\n  deleteForward: (unit: 'character' | 'word' | 'line' | 'block') => void\n  deleteFragment: () => void\n  insertBreak: () => void\n  insertSoftBreak: () => void\n  insertFragment: (fragment: Node[]) => void\n  insertNode: (node: Node) => void\n  insertText: (text: string) => void\n  removeMark: (key: string) => void\n}\n```\n\nIt is slightly more complex than the others, because it contains all of the top-level functions that define your custom, domain-specific behaviors.\n\nThe `children` property contains the document tree of nodes that make up the editor's content.\n\nThe `selection` property contains the user's current selection, if any.\nDon't set it directly; use [Transforms.select](04-transforms.md#selection-transforms)\n\nThe `operations` property contains all of the operations that have been applied since the last \"change\" was flushed. \\(Since Slate batches operations up into ticks of the event loop.\\)\n\nThe `marks` property stores formatting to be applied when the editor inserts text. If `marks` is `null`, the formatting will be taken from the current selection.\nDon't set it directly; use `Editor.addMark` and `Editor.removeMark`.\n\n## Overriding Behaviors\n\nIn previous guides we've already hinted at this, but you can override any of the behaviors of an editor by overriding its function properties.\n\nFor example, if you want to define link elements that are inline nodes:\n\n```javascript\nconst { isInline } = editor\n\neditor.isInline = element => {\n  return element.type === 'link' ? true : isInline(element)\n}\n```\n\nOr maybe you want to override the `insertText` behavior to \"linkify\" URLs:\n\n```javascript\nconst { insertText } = editor\n\neditor.insertText = text => {\n  if (isUrl(text)) {\n    // ...\n    return\n  }\n\n  insertText(text)\n}\n```\n\nIf you have void \"mention\" elements that can accept marks like bold or italic:\n\n```javascript\nconst { isVoid, markableVoid } = editor\n\neditor.isVoid = element => {\n  return element.type === 'mention' ? true : isVoid(element)\n}\n\neditor.markableVoid = element => {\n  return element.type === 'mention' || markableVoid(element)\n}\n```\n\nOr you can even define custom \"normalizations\" that take place to ensure that links obey certain constraints:\n\n```javascript\nconst { normalizeNode } = editor\n\neditor.normalizeNode = (entry, options) => {\n  const [node, path] = entry\n\n  if (Element.isElement(node) && node.type === 'link') {\n    // ...\n    return\n  }\n\n  normalizeNode(entry, options)\n}\n```\n\nWhenever you override behaviors, be sure to call the existing functions as a fallback mechanism for the default behavior. Unless you really do want to completely remove the default behaviors \\(which is rarely a good idea\\).\n\n> 🤖 For more info, check out the [Editor Instance Methods to Override API Reference](../api/nodes/editor.md#schema-specific-instance-methods-to-override)\n\n## Helper Functions\n\nThe `Editor` interface, like all Slate interfaces, exposes helper functions that are useful when implementing certain behaviors. There are many, many editor-related helpers. For example:\n\n```javascript\n// Get the start point of a specific node at path.\nconst point = Editor.start(editor, [0, 0])\n\n// Get the fragment (a slice of the document) at a range.\nconst fragment = Editor.fragment(editor, range)\n```\n\nThere are also many iterator-based helpers, for example:\n\n```javascript\n// Iterate over every node in a range.\nfor (const [node, path] of Editor.nodes(editor, { at: range })) {\n  // ...\n}\n\n// Iterate over every point in every text node in the current selection.\nfor (const point of Editor.positions(editor)) {\n  // ...\n}\n```\n\n> 🤖 For more info, check out the [Editor Static Methods API Reference](../api/nodes/editor.md#static-methods)\n"
  },
  {
    "path": "docs/concepts/08-plugins.md",
    "content": "# Plugins\n\nYou've already seen how the behaviors of Slate editors can be overridden. These overrides can also be packaged up into \"plugins\" to be reused, tested and shared. This is one of the most powerful aspects of Slate's architecture.\n\nA plugin is simply a function that takes an `Editor` object and returns it after it has augmented it in some way.\n\nFor example, a plugin that marks image nodes as \"void\":\n\n```javascript\nconst withImages = editor => {\n  const { isVoid } = editor\n\n  editor.isVoid = element => {\n    return element.type === 'image' ? true : isVoid(element)\n  }\n\n  return editor\n}\n```\n\nAnd then to use the plugin, simply:\n\n```javascript\nimport { createEditor } from 'slate'\n\nconst editor = withImages(createEditor())\n```\n\nThis plugin composition model makes Slate extremely easy to extend!\n\n## Helper Functions\n\nIn addition to the plugin functions, you might want to expose helper functions that are used alongside your plugins. For example:\n\n```javascript\nimport { Editor, Element } from 'slate'\n\nconst MyEditor = {\n  ...Editor,\n  insertImage(editor, url) {\n    const element = { type: 'image', url, children: [{ text: '' }] }\n    Transforms.insertNodes(editor, element)\n  },\n}\n\nconst MyElement = {\n  ...Element,\n  isImageElement(value) {\n    return Element.isElement(element) && element.type === 'image'\n  },\n}\n```\n\nThen you can use `MyEditor` and `MyElement` everywhere and have access to all your helpers in one place.\n"
  },
  {
    "path": "docs/concepts/09-rendering.md",
    "content": "# Rendering\n\nOne of the best parts of Slate is that it's built with React, so it fits right into your existing application. It doesn't re-invent its own view layer that you have to learn. It tries to keep everything as React-y as possible.\n\nTo that end, Slate gives you control over the rendering behavior of your custom nodes and properties in your richtext domain.\n\nYou can define these behaviors by passing \"render props\" to the top-level `<Editable>` component.\n\nFor example if you wanted to render custom element components, you'd pass in the `renderElement` prop:\n\n```jsx\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\n\nconst MyEditor = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n  const renderElement = useCallback(({ attributes, children, element }) => {\n    switch (element.type) {\n      case 'quote':\n        return <blockquote {...attributes}>{children}</blockquote>\n      case 'link':\n        return (\n          <a {...attributes} href={element.url}>\n            {children}\n          </a>\n        )\n      default:\n        return <p {...attributes}>{children}</p>\n    }\n  }, [])\n\n  return (\n    <Slate editor={editor}>\n      <Editable renderElement={renderElement} />\n    </Slate>\n  )\n}\n```\n\n> 🤖 Be sure to mix in `props.attributes` and render `props.children` in your custom components! The attributes must be added to the top-level DOM element inside the component, as they are required for Slate's DOM helper functions to work. And the children are the \"leaves\" holding text content and inline elements.\n\nYou don't have to use simple HTML elements, you can use your own custom React components too:\n\n```javascript\nconst renderElement = useCallback(props => {\n  switch (props.element.type) {\n    case 'quote':\n      return <QuoteElement {...props} />\n    case 'link':\n      return <LinkElement {...props} />\n    default:\n      return <DefaultElement {...props} />\n  }\n}, [])\n```\n\n## Leaves\n\nWhen text-level formatting is rendered, the characters are grouped into \"leaves\" of text that each contain the same formatting (marks) applied to them.\n\nTo customize the rendering of each leaf, you use a custom `renderLeaf` prop:\n\n```jsx\nconst renderLeaf = useCallback(({ attributes, children, leaf }) => {\n  return (\n    <span\n      {...attributes}\n      style={{\n        fontWeight: leaf.bold ? 'bold' : 'normal',\n        fontStyle: leaf.italic ? 'italic' : 'normal',\n      }}\n    >\n      {children}\n    </span>\n  )\n}, [])\n```\n\nNotice though how we've handled it slightly differently than `renderElement`. Since text formatting tends to be fairly simple, we've opted to ditch the `switch` statement and just toggle on/off a few styles instead. \\(But there's nothing preventing you from using custom components if you'd like!\\)\n\n> 🤖 As with the Element renderer, be sure to mix in `props.attributes` and render `props.children` in your leaf renderer! The attributes must be added to the top-level DOM element inside the component, as they are required for Slate's DOM helper functions to work. And the children are the actual text content of your document which Slate manages for you automatically.\n\nWhen decorations split a single text node, the `renderLeaf` function will receive an additional `leafPosition` property. This object contains the `start` and `end` offsets of the leaf within the original text node, along with optional `isFirst` and `isLast` booleans. This `leafPosition` property is only added when a text node is actually split by decorations.\n\nOne disadvantage of text-level formatting is that you cannot guarantee that any given format is \"contiguous\"—meaning that it stays as a single leaf. This limitation with respect to leaves is similar to the DOM, where this is invalid:\n\n```markup\n<em>t<strong>e</em>x</strong>t\n```\n\nBecause the elements in the above example do not properly close themselves they are invalid. Instead, you would write the above HTML as follows:\n\n```markup\n<em>t</em><strong><em>e</em>x</strong>t\n```\n\nIf you happened to add another overlapping section of `<strike>` to that text, you might have to rearrange the closing tags yet again. Rendering leaves in Slate is similar—you can't guarantee that even though a word has one type of formatting applied to it that that leaf will be contiguous, because it depends on how it overlaps with other formatting.\n\nOf course, this leaf stuff sounds pretty complex. But, you do not have to think about it much, as long as you use text-level formatting and element-level formatting for their intended purposes:\n\n- Text properties are for **non-contiguous**, character-level formatting.\n- Element properties are for **contiguous**, semantic elements in the document.\n\n## Texts\n\nWhile `renderLeaf` allows you to customize the rendering of individual leaves based on their formatting (marks and decorations), sometimes you need to customize the rendering for an entire text node, regardless of how decorations might split it into multiple leaves.\n\nThis is where the `renderText` prop comes in. It allows you to render a component that wraps all the leaves generated for a single `Text` node.\n\n```jsx\nconst renderText = useCallback(({ attributes, children, text }) => {\n  return (\n    <span {...attributes} className=\"custom-text\">\n      {children}\n      {/* Render anything you want here */}\n    </span>\n  )\n}, [])\n\n// In your editor component:\n<Editable\n  renderText={renderText}\n  renderLeaf={renderLeaf}\n/>\n```\n\n**When to use `renderLeaf` vs `renderText`:**\n\n- **`renderLeaf`**: Use this when you need to apply styles or rendering logic based on the specific properties of each individual leaf (e.g., applying bold style if `leaf.bold` is true, or highlighting based on a decoration). This function might be called multiple times for a single text node if decorations split it. You can use the optional `leafPosition` prop (available when a text node is split) to conditionally render something based on the position of the leaf within the text node.\n\n- **`renderText`**: Use this when you need to render something exactly once for a given text node, regardless of how many leaves it's split into. It's ideal for wrapping the entire text node's content or adding elements associated with the text node as a whole without worrying about duplication caused by decorations.\n\nYou can use both `renderText` and `renderLeaf` together. `renderLeaf` renders the individual marks and decorations within a text node (leaves), and `renderText` renders the container of those leaves.\n\n## Decorations\n\nDecorations are another type of text-level formatting. They are similar to regular old custom properties, except each one applies to a `Range` of the document instead of being associated with a given text node.\n\nHowever, decorations are computed at **render-time** based on the content itself. This is helpful for dynamic formatting like syntax highlighting or search keywords, where changes to the content \\(or some external data\\) has the potential to change the formatting.\n\nDecorations are different from Marks in that they are not stored on editor state.\n\n## Toolbars, Menus, Overlays, and more!\n\nIn addition to controlling the rendering of nodes inside Slate, you can also retrieve the current editor context from inside other components using the `useSlate` hook.\n\nThat way other components can execute commands, query the editor state, or anything else.\n\nA common use case for this is rendering a toolbar with formatting buttons that are highlighted based on the current selection:\n\n```jsx\nconst MyEditor = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n  return (\n    <Slate editor={editor}>\n      <Toolbar />\n      <Editable />\n    </Slate>\n  )\n}\n\nconst Toolbar = () => {\n  const editor = useSlate()\n  return (\n    <div>\n      <Button active={isBoldActive(editor)}>B</Button>\n      <Button active={isItalicActive(editor)}>I</Button>\n    </div>\n  )\n}\n```\n\nBecause the `<Toolbar>` uses the `useSlate` hook to retrieve the context, it will re-render whenever the editor changes, so that the active state of the buttons stays in sync.\n\n## Editor Styling\n\nCustom styles can be applied to the editor itself by using the `style` prop on the `<Editable>` component.\n\n```jsx\nconst MyEditor = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n  return (\n    <Slate editor={editor}>\n      <Editable style={{ minHeight: '200px', backgroundColor: 'lime' }} />\n    </Slate>\n  )\n}\n```\n\nIt is also possible to apply custom styles with a stylesheet and `className`. However, Slate uses inline styles to provide some default styles for the editor. Because inline styles take precedence over stylesheets, styles you provide using stylesheets will not override the default styles. If you are trying to use a stylesheet and your rules are not taking effect, do one of the following:\n\n- Provide your styles using the `style` prop instead of a stylesheet, which overrides the default inline styles.\n- Pass the `disableDefaultStyles` prop to the `<Editable>` component.\n- Use `!important` in your stylesheet declarations to make them override the inline styles.\n\n## Performance\n\nSee [Improving Performance](../walkthroughs/09-performance.md) for ways to improve the rendering performance of the editor.\n"
  },
  {
    "path": "docs/concepts/10-serializing.md",
    "content": "# Serializing\n\nSlate's data model has been built with serialization in mind. Specifically, its text nodes are defined in a way that makes them easier to read at a glance, but also easy to serialize to common formats like HTML and Markdown.\n\nAnd, because Slate uses plain JSON for its data, you can write serialization logic very easily.\n\n## Plaintext\n\nFor example, taking the value of an editor and returning plaintext:\n\n```javascript\nimport { Node } from 'slate'\n\nconst serialize = nodes => {\n  return nodes.map(n => Node.string(n)).join('\\n')\n}\n```\n\nHere we're taking the children nodes of an `Editor` as a `nodes` argument, and returning a plaintext representation where each top-level node is separated by a single `\\n` new line character.\n\nFor an input of:\n\n```javascript\nconst nodes = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'An opening paragraph...' }],\n  },\n  {\n    type: 'quote',\n    children: [{ text: 'A wise quote.' }],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: 'A closing paragraph!' }],\n  },\n]\n```\n\nYou'd end up with:\n\n```text\nAn opening paragraph...\nA wise quote.\nA closing paragraph!\n```\n\nNotice how the quote block isn't distinguishable in any way, that's because we're talking about plaintext. But you can serialize the data to anything you want—it's just JSON after all.\n\n## HTML\n\nFor example, here's a similar `serialize` function for HTML:\n\n```javascript\nimport escapeHtml from 'escape-html'\nimport { Text } from 'slate'\n\nconst serialize = node => {\n  if (Text.isText(node)) {\n    let string = escapeHtml(node.text)\n    if (node.bold) {\n      string = `<strong>${string}</strong>`\n    }\n    return string\n  }\n\n  const children = node.children.map(n => serialize(n)).join('')\n\n  switch (node.type) {\n    case 'quote':\n      return `<blockquote><p>${children}</p></blockquote>`\n    case 'paragraph':\n      return `<p>${children}</p>`\n    case 'link':\n      return `<a href=\"${escapeHtml(node.url)}\">${children}</a>`\n    default:\n      return children\n  }\n}\n```\n\nThis one is a bit more aware than the plaintext serializer above. It's actually _recursive_ so that it can keep iterating deeper through a node's children until it gets to the leaf text nodes. And for each node it receives, it converts it to an HTML string.\n\nIt also takes a single node as input instead of an array, so if you passed in an editor like:\n\n```javascript\nconst editor = {\n  children: [\n    {\n      type: 'paragraph',\n      children: [\n        { text: 'An opening paragraph with a ' },\n        {\n          type: 'link',\n          url: 'https://example.com',\n          children: [{ text: 'link' }],\n        },\n        { text: ' in it.' },\n      ],\n    },\n    {\n      type: 'quote',\n      children: [{ text: 'A wise quote.' }],\n    },\n    {\n      type: 'paragraph',\n      children: [{ text: 'A closing paragraph!' }],\n    },\n  ],\n  // `Editor` objects also have other properties that are omitted here...\n}\n```\n\nYou'd receive back \\(line breaks added for legibility\\):\n\n```markup\n<p>An opening paragraph with a <a href=\"https://example.com\">link</a> in it.</p>\n<blockquote><p>A wise quote.</p></blockquote>\n<p>A closing paragraph!</p>\n```\n\nIt's really that easy!\n\n## Deserializing\n\nAnother common use case in Slate is doing the reverse—deserializing. This is when you have some arbitrary input and want to convert it into a Slate-compatible JSON structure. For example, when someone pastes HTML into your editor and you want to ensure it gets parsed with the proper formatting for your editor.\n\nSlate has a built-in helper for this: the `slate-hyperscript` package.\n\nThe most common way to use `slate-hyperscript` is for writing JSX documents, for example when writing tests. You might use it like so:\n\n```jsx\n/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nconst input = (\n  <fragment>\n    <element type=\"paragraph\">A line of text.</element>\n  </fragment>\n)\n```\n\nAnd the JSX feature of your compiler \\(Babel, TypeScript, etc.\\) would turn that `input` variable into:\n\n```javascript\nconst input = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text.' }],\n  },\n]\n```\n\nThis is great for test cases, or places where you want to be able to write a lot of Slate objects in a very readable form.\n\nHowever! This doesn't help with deserialization.\n\nBut `slate-hyperscript` isn't only for JSX. It's just a way to build _trees of Slate content_. Which happens to be exactly what you want to do when you're deserializing something like HTML.\n\nFor example, here's a `deserialize` function for HTML:\n\n```javascript\nimport { jsx } from 'slate-hyperscript'\n\nconst deserialize = (el, markAttributes = {}) => {\n  if (el.nodeType === Node.TEXT_NODE) {\n    return jsx('text', markAttributes, el.textContent)\n  } else if (el.nodeType !== Node.ELEMENT_NODE) {\n    return null\n  }\n\n  const nodeAttributes = { ...markAttributes }\n\n  // define attributes for text nodes\n  switch (el.nodeName) {\n    case 'STRONG':\n      nodeAttributes.bold = true\n  }\n\n  const children = Array.from(el.childNodes)\n    .map(node => deserialize(node, nodeAttributes))\n    .flat()\n\n  if (children.length === 0) {\n    children.push(jsx('text', nodeAttributes, ''))\n  }\n\n  switch (el.nodeName) {\n    case 'BODY':\n      return jsx('fragment', {}, children)\n    case 'BR':\n      return '\\n'\n    case 'BLOCKQUOTE':\n      return jsx('element', { type: 'quote' }, children)\n    case 'P':\n      return jsx('element', { type: 'paragraph' }, children)\n    case 'A':\n      return jsx(\n        'element',\n        { type: 'link', url: el.getAttribute('href') },\n        children\n      )\n    default:\n      return children\n  }\n}\n```\n\nIt takes in an `el` HTML element object and returns a Slate fragment. So if you have an HTML string, you can parse and deserialize it like so:\n\n```javascript\nconst html = '...'\nconst document = new DOMParser().parseFromString(html, 'text/html')\ndeserialize(document.body)\n```\n\nWith this input:\n\n```markup\n<p>An opening paragraph with a <a href=\"https://example.com\">link</a> in it.</p>\n<blockquote><p>A wise quote.</p></blockquote>\n<p>A closing paragraph!</p>\n```\n\nYou'd end up with this output:\n\n```javascript\nconst fragment = [\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'An opening paragraph with a ' },\n      {\n        type: 'link',\n        url: 'https://example.com',\n        children: [{ text: 'link' }],\n      },\n      { text: ' in it.' },\n    ],\n  },\n  {\n    type: 'quote',\n    children: [\n      {\n        type: 'paragraph',\n        children: [{ text: 'A wise quote.' }],\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: 'A closing paragraph!' }],\n  },\n]\n```\n\nAnd just like the serializing function, you can extend it to fit your exact domain model's needs.\n"
  },
  {
    "path": "docs/concepts/11-normalizing.md",
    "content": "# Normalizing\n\nSlate editors can edit complex, nested data structures. And for the most part this is great. But in certain cases inconsistencies in the data structure can be introduced—most often when allowing a user to paste arbitrary richtext content.\n\n\"Normalizing\" is how you can ensure that your editor's content is always of a certain shape. It's similar to \"validating\", except instead of just determining whether the content is valid or invalid, its job is to fix the content to make it valid again.\n\n## Built-in Constraints\n\nSlate editors come with a few built-in constraints out of the box. These constraints are there to make working with content _much_ more predictable than standard `contenteditable`. All of the built-in logic in Slate depends on these constraints, so unfortunately you cannot omit them. They are...\n\n1. **All `Element` nodes must contain at least one `Text` descendant** &mdash; even [Void Elements](./02-nodes.md#voids). If an element node does not contain any children, an empty text node will be added as its only child. This constraint exists to ensure that the selection's anchor and focus points \\(which rely on referencing text nodes\\) can always be placed inside any node. Without this, empty elements \\(or void elements\\) wouldn't be selectable.\n2. **Two adjacent texts with the same custom properties will be merged.** If two adjacent text nodes have the same formatting, they're merged into a single text node with a combined text string of the two. This exists to prevent the text nodes from only ever expanding in count in the document, since both adding and removing formatting results in splitting text nodes.\n3. **Block nodes can only contain other blocks, or inline and text nodes.** For example, a `paragraph` block cannot have another `paragraph` block element _and_ a `link` inline element as children at the same time. The type of children allowed is determined by the first child. Any other non-conforming children are tried to be converted (if possible) or removed. This ensures that common richtext behaviors like \"splitting a block in two\" function consistently. Conversion of block nodes is done by unwrapping the block node; conversion of inline/text nodes is performed by wrapping such nodes into a `fallbackElement` if specified in the `normalizeNode` options. The `fallbackElement` can be specified by editors overriding the `normalizeNode` function.\n4. **Inline nodes cannot be the first or last child of a parent block, nor can it be next to another inline node in the children array.** If this is the case, an empty text node will be added to correct this to be in compliance with the constraint.\n5. **The top-level editor node can only contain block nodes.** If any of the top-level children are inline or text nodes they will be removed. This ensures that there are always block nodes in the editor so that behaviors like \"splitting a block in two\" work as expected.\n6. **Nodes must be JSON-serializable.** For example, avoid using `undefined` in your data model. This ensures that [operations](./05-operations.md) are also JSON-serializable, a property which is assumed by collaboration libraries.\n7. **Property values must not be `null`.** Instead, you should use an optional property, e.g. `foo?: string` instead of `foo: string | null`. This limitation is due to `null` being used in [operations](./05-operations.md) to represent the absence of a property.\n\nThese default constraints are all mandated because they make working with Slate documents _much_ more predictable.\n\n> 🤖 Although these constraints are the best we've come up with now, we're always looking for ways to have Slate's built-in constraints be less constraining if possible—as long as it keeps standard behaviors easy to reason about. If you come up with a way to reduce or remove a built-in constraint with a different approach, we're all ears!\n\n## Adding Constraints\n\nThe built-in constraints are fairly generic. But you can also add your own constraints on top of the built-in ones that are specific to your domain.\n\nTo do this, you extend the `normalizeNode` function on the editor. The `normalizeNode` function gets called every time an operation is applied that inserts or updates a node \\(or its descendants\\), giving you the opportunity to ensure that the changes didn't leave it in an invalid state, and correcting the node if so.\n\nFor example here's a plugin that ensures `paragraph` blocks only have text or inline elements as children:\n\n```javascript\nimport { Transforms, Element, Node } from 'slate'\n\nconst withParagraphs = editor => {\n  const { normalizeNode } = editor\n\n  editor.normalizeNode = (entry, options) => {\n    const [node, path] = entry\n\n    // If the element is a paragraph, ensure its children are valid.\n    if (Element.isElement(node) && node.type === 'paragraph') {\n      for (const [child, childPath] of Node.children(editor, path)) {\n        if (Element.isElement(child) && !editor.isInline(child)) {\n          Transforms.unwrapNodes(editor, { at: childPath })\n          return\n        }\n      }\n    }\n\n    // Fall back to the original `normalizeNode` to enforce other constraints.\n    normalizeNode(entry, options)\n  }\n\n  return editor\n}\n```\n\nThis example is fairly simple. Whenever `normalizeNode` gets called on a paragraph element, it loops through each of its children ensuring that none of them are block elements. And if one is a block element, it gets unwrapped, so that the block is removed and its children take its place. The node is \"fixed\".\n\nBut what if the child has nested blocks?\n\n## Multi-pass Normalizing\n\nOne thing to understand about `normalizeNode` constraints is that they are **multi-pass**.\n\nIf you check the example above again, you'll notice the `return` statement:\n\n```javascript\nif (Element.isElement(child) && !editor.isInline(child)) {\n  Transforms.unwrapNodes(editor, { at: childPath })\n  return\n}\n```\n\nYou might at first think this is odd, because with the `return` there, the original `normalizeNodes` will never be called, and the built-in constraints won't get a chance to run their own normalizations.\n\nBut, there's a slight \"trick\" to normalizing.\n\nWhen you do call `Transforms.unwrapNodes`, you're actually changing the content of the node that is currently being normalized. So even though you're ending the current normalization pass, by making a change to the node you're kicking off a _new_ normalization pass. This results in a sort of _recursive_ normalizing.\n\nThis multi-pass characteristic makes it _much_ easier to write normalizations, because you only ever have to worry about fixing a single issue at once, and not fixing _every_ possible issue that could be putting a node in an invalid state.\n\nTo see how this works in practice, let's start with this invalid document:\n\n```jsx\n<editor>\n  <paragraph a>\n    <paragraph b>\n      <paragraph c>word</paragraph>\n    </paragraph>\n  </paragraph>\n</editor>\n```\n\nThe editor starts by running `normalizeNode` on `<paragraph c>`. And it is valid, because it contains only text nodes as children.\n\nBut then, it moves up the tree, and runs `normalizeNode` on `<paragraph b>`. This paragraph is invalid, since it contains a block element \\(`<paragraph c>`\\). So that child block gets unwrapped, resulting in a new document of:\n\n```jsx\n<editor>\n  <paragraph a>\n    <paragraph b>word</paragraph>\n  </paragraph>\n</editor>\n```\n\nAnd in performing that fix, the top-level `<paragraph a>` changed. It gets normalized, and it is invalid, so `<paragraph b>` gets unwrapped, resulting in:\n\n```jsx\n<editor>\n  <paragraph a>word</paragraph>\n</editor>\n```\n\nAnd now when `normalizeNode` runs, no changes are made, so the document is valid!\n\n> 🤖 For the most part you don't need to think about these internals. You can just know that anytime `normalizeNode` is called and you spot an invalid state, you can fix that single invalid state and trust that `normalizeNode` will be called again until the node becomes valid.\n\n## Empty Children Early Constraint Execution\n\nOne special normalization executes before all other normalizations and this can be important to keep in mind when writing your normalizers.\n\nBefore any of the other normalizations can execute, Slate iterates through all `Element` nodes and makes sure they have at least one child. If it does not, an empty `Text` descendant is created.\n\nThis can trip you up when you have custom handling when an `Element` has no children. For example, if a table element has no rows, you may wish to remove the table; however, this will never happen because a `Text` node would automatically be created before that normalization could run.\n\n## Incorrect Fixes\n\nOne pitfall to avoid is creating an infinite normalization loop. This can happen if you check for a specific invalid structure, but then **don't** actually fix that structure with the change you make to the node. This results in an infinite loop because the node continues to be flagged as invalid, but it is never fixed properly.\n\nFor example, consider a normalization that ensured `link` elements have a valid `url` property:\n\n```javascript\n// WARNING: this is an example of incorrect behavior!\nconst withLinks = editor => {\n  const { normalizeNode } = editor\n\n  editor.normalizeNode = (entry, options) => {\n    const [node, path] = entry\n\n    if (\n      Element.isElement(node) &&\n      node.type === 'link' &&\n      typeof node.url !== 'string'\n    ) {\n      // ERROR: null is not a valid value for a url\n      Transforms.setNodes(editor, { url: null }, { at: path })\n      return\n    }\n\n    normalizeNode(entry, options)\n  }\n\n  return editor\n}\n```\n\nThis fix is incorrectly written. It wants to ensure that all `link` elements have a `url` property string. But to fix invalid links it sets the `url` to `null`, which is still not a string!\n\nIn this case you'd either want to unwrap the link, removing it entirely. _Or_ expand your validation to accept an \"empty\" `url == null` as well.\n\n## Implications for Other Code\n\nSequences of Transforms may need to be wrapped in [`Editor.withoutNormalizing`](../api/nodes/editor.md#editorwithoutnormalizingeditor-editor-fn---void--void) if the node tree should _not_ be normalized between Transforms.\nThis is frequently the case when you `unwrapNodes` followed by `wrapNodes`.\nFor example, you might write a function to change the type of a block as follows:\n\n```javascript\nconst LIST_TYPES = ['numbered-list', 'bulleted-list']\n\nfunction changeBlockType(editor, type) {\n  Editor.withoutNormalizing(editor, () => {\n    const isActive = isBlockActive(editor, type)\n    const isList = LIST_TYPES.includes(type)\n\n    Transforms.unwrapNodes(editor, {\n      match: n =>\n        LIST_TYPES.includes(\n          !Editor.isEditor(n) && SlateElement.isElement(n) && n.type\n        ),\n      split: true,\n    })\n    const newProperties = {\n      type: isActive ? 'paragraph' : isList ? 'list-item' : type,\n    }\n    Transforms.setNodes(editor, newProperties)\n\n    if (!isActive && isList) {\n      const block = { type: type, children: [] }\n      Transforms.wrapNodes(editor, block)\n    }\n  })\n}\n```\n"
  },
  {
    "path": "docs/concepts/12-typescript.md",
    "content": "# Using TypeScript\n\nSlate supports typing of one Slate document model \\(ie. one set of custom `Editor`, `Element` and `Text` types\\). If you need to support more than one document model, see the section Multiple Document Models.\n\n**Warning:** You must define `CustomTypes`, annotate `useState`, and annotate the editor's initial state when using TypeScript or Slate will display typing errors.\n\n## Migrating from 0.47.x\n\nWhen migrating from 0.47.x, read the guide below first. Also keep in mind these common migration issues:\n\n- When referring to `node.type`, you may see the error `Property 'type' does not exist on type 'Node'`. To fix this, you need to add code like `Element.isElement(node) && node.type === 'paragraph'`. This is necessary because a `Node` can be an `Element` or `Text` and `Text` does not have a `type` property.\n- Be careful when you define the CustomType for `Editor`. Make sure to define the CustomType for `Editor` as `BaseEditor & ...`. It should not be `Editor & ...`\n\n## Defining `Editor`, `Element` and `Text` Types\n\nTo define a custom `Element` or `Text` type, extend the `CustomTypes` interface in the `slate` module like this.\n\n```typescript\n// This example is for an Editor with `ReactEditor` and `HistoryEditor`\nimport { BaseEditor } from 'slate'\nimport { ReactEditor } from 'slate-react'\nimport { HistoryEditor } from 'slate-history'\n\ntype CustomElement = { type: 'paragraph'; children: CustomText[] }\ntype CustomText = { text: string; bold?: true }\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: BaseEditor & ReactEditor & HistoryEditor\n    Element: CustomElement\n    Text: CustomText\n  }\n}\n```\n\n## Annotations in the Editor\n\nAnnotate the editor's initial value w/ `Descendant[]`.\n\n```tsx\nimport React, { useState } from 'react'\nimport { createEditor, Descendant } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}\n```\n\n## Best Practices for `Element` and `Text` Types\n\nWhile you can define types directly in the `CustomTypes` interface, best practice is to define and export each type separately so that you can reference individual types like a `ParagraphElement`.\n\nUsing best practices, the custom types might look something like:\n\n```typescript\n// This example is for an Editor with `ReactEditor` and `HistoryEditor`\nimport { BaseEditor } from 'slate'\nimport { ReactEditor } from 'slate-react'\nimport { HistoryEditor } from 'slate-history'\n\nexport type CustomEditor = BaseEditor & ReactEditor & HistoryEditor\n\nexport type ParagraphElement = {\n  type: 'paragraph'\n  children: CustomText[]\n}\n\nexport type HeadingElement = {\n  type: 'heading'\n  level: number\n  children: CustomText[]\n}\n\nexport type CustomElement = ParagraphElement | HeadingElement\n\nexport type FormattedText = { text: string; bold?: true }\n\nexport type CustomText = FormattedText\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: CustomEditor\n    Element: CustomElement\n    Text: CustomText\n  }\n}\n```\n\nIn this example, `CustomText` is equal to `FormattedText` but in a real editor, there can be more types of text like text in a code block which may not allow formatting for example.\n\n## Why Is The Type Definition Unusual\n\nBecause it gets asked often, this section explains why Slate's type definition is atypical.\n\nSlate needs to support a feature called type discrimination which is available when using union types \\(e.g. `ParagraphElement | HeadingElement`\\). This allows a user to narrow a type. If presented with code like `if (node.type === 'paragraph') { ... }` the inside of the block, will narrow the type of node to `ParagraphElement`.\n\nSlate also needs a way to allow developers to get their custom types into Slate. This is done through declaration merging which is a feature of an `interface`.\n\nSlate combines a union type and an interface in order to use both features.\n\nFor more information see [Proposal: Add Custom TypeScript Types to Slate](https://github.com/ianstormtaylor/slate/issues/3725)\n\n## Multiple Document Models\n\nAt the moment, Slate supports types for a single document model at a time. For example, it cannot support two different Rich Text Editor with different document schemas.\n\nSlate's TypeScript support was designed this way because typing for one document schema was better than none. The goal is to eventually support typing for multiple editor definitions and there is currently an in progress PR built by the creator of Slate.\n\nOne workaround for supporting multiple document models is to create each editor in a separate package and then import them. This hasn't been tested but should work.\n\n## Extending Other Types\n\nCurrently there is also support for extending other types but these haven't been tested as thoroughly as the ones documented above:\n\n- `Selection`\n- `Range`\n- `Point`\n\nFeel free to extend these types but extending these types should be considered experimental. Please report bugs on GitHub issues.\n\n## TypeScript Examples\n\nFor some examples of how to use types, see `packages/slate-react/src/custom-types.ts` in the slate repository.\n"
  },
  {
    "path": "docs/concepts/xx-migrating.md",
    "content": "# Migrating\n\nMigrating from earlier versions of Slate to the `0.50.x` versions is not a simple task. The entire framework was re-considered from the ground up. This has resulted in a **much** better set of abstractions, which will result in you writing less code. But the migration process is not simple.\n\nIt's highly recommended that after reading this guide you read through the original [Walkthroughs](../walkthroughs/01-installing-slate.md) and the other [Concepts](01-interfaces.md) to see how all of the new concepts get applied.\n\n## Major Differences\n\nHere's an overview of the _major_ differences in the `0.50.x` version of Slate from an architectural point of view.\n\n### JSON!\n\nThe data model is now comprised of simple JSON objects. Previously, it used [Immutable.js](https://immutable-js.github.io/immutable-js/) data structures. This is a huge change, and one that unlocks many other things. Hopefully it will also increase the average performance when using Slate. It also makes it much easier to get started for newcomers. This will be a large change to migrate from, but it will be worth it.\n\n### Interfaces\n\nThe data model is interface-based. Previously each model was an instance of a class. Now, not only is the data plain objects, but Slate only expects that the objects implement an interface. So custom properties that used to live in `node.data` can now live at the top-level of the nodes.\n\n### Namespaces\n\nA lot of helper functions are exposed as a collection of helper functions on a namespace. For example, `Node.get(root, path)` or `Range.isCollapsed(range)`. This ends up making code much clearer because you can always quickly see what interface you're working with.\n\n### TypeScript\n\nThe codebase now uses TypeScript. Working with pure JSON as a data model, and using an interface-based API are two things that have been made easier by migrating to TypeScript. You don't need to use it yourself, but if you do you'll get a lot more security when using the APIs. \\(And if you use VS Code you'll get nice autocompletion regardless!\\)\n\n### Fewer Concepts\n\nThe number of interfaces and commands has been reduced. Previously `Selection`, `Annotation`, and `Decoration` used to all be separate classes. Now they are simply objects that implement the `Range` interface. Previously `Block` and `Inline` were separate; now they are objects that implement the `Element` interface. Previously there was a `Document` and `Value`, but now the top-level `Editor` contains the children nodes of the document itself.\n\nThe number of commands has been reduced too. Previously we had commands for every type of input, like `insertText`, `insertTextAtRange`, `insertTextAtPath`. These have been merged into a smaller set of more customizable commands, eg. `insertText` which can take `at: Path | Range | Point`.\n\n### Fewer Packages\n\nIn an attempt to decrease the maintenance burden, and because the new abstraction and APIs in Slate's core packages make things much easier, the total number of packages has been reduced. Things like `slate-plain-serializer`, `slate-base64-serializer`, etc. have been removed and can be implemented in userland easily if needed. Even the `slate-html-deserializer` can now be implemented in userland \\(in ~10 LOC leveraging `slate-hyperscript`\\). And internal packages like `slate-dev-environment`, `slate-dev-test-utils`, etc. are no longer exposed because they are implementation details.\n\n### Commands\n\nA new \"command\" concept has been introduced. \\(The old \"commands\" are now called \"transforms\".\\) This new concept expresses the semantic intent of a user editing the document. And they allow for the right abstraction to tap into user behaviors—for example to change what happens when a user presses enter, or backspace, etc. Instead of using `keydown` events you should likely override command behaviors instead.\n\nCommands are triggered by calling the `editor.*` core functions. And they travel through a middleware-like stack, but built from composed functions. Any plugin can override the behaviors to augment an editor.\n\n### Plugins\n\nPlugins are now plain functions that augment the `Editor` object they receive and return it again. For example, they can augment the command execution by composing the `editor.exec` function or listen to operations by composing `editor.apply`. Previously they relied on a custom middleware stack, and they were just bags of handlers that got merged onto an editor. Now we're using plain old function composition \\(aka wrapping\\) instead.\n\n### Elements\n\nBlock-ness and inline-ness is now a runtime choice. Previously it was baked into the data model with the `object: 'block'` or `object: 'inline'` attributes. Now, it checks whether an \"element\" is inline or not at runtime. For example, you might check to see that `element.type === 'link'` and treat it as inline.\n\n### More React-ish\n\nRendering and event-handling are no longer a plugin's concern. Previously plugins had full control over the rendering and event-handling logic in the editor. This creates a bad incentive to start putting **all** rendering logic in plugins, which puts Slate in a position of being a wrapper around all of React, which is very hard to do well. Instead, the new architecture has plugins focused purely on the richtext aspects, and leaves the rendering and event handling aspects to React.\n\n### Context\n\nPreviously the `<Editor>` component was doing double duty as a sort of \"controller\" object and also the `contenteditable` DOM element. This led to a lot of awkwardness in how other components worked with Slate. In the new version, there is a new `<Slate>` context provider and a simpler `<Editable>` `contenteditable`-like component. By putting the `<Slate>` provider higher up in your component tree, you can share the editor directly with toolbars, buttons, etc. using the `useSlate` hook.\n\n### Hooks\n\nIn addition to the `useSlate` hook, there are a handful of other hooks. For example the `useSelected` and `useFocused` hooks help with knowing when to render selected states \\(often for void nodes\\). And since they use React's Context API they will automatically re-render when their state changes.\n\n### `beforeinput`\n\nWe now use the `beforeinput` event almost exclusively. Instead of relying on a series of shims and the quirks of React synthetic events, we're now using the standardized `beforeinput` event as our baseline. It is fully supported in Safari and Chrome, will soon be supported in the new Chromium-based Edge, and is currently being worked on in Firefox. In the meantime there are a few patches to make Firefox work. Internet Explorer is no longer supported in core out of the box.\n\n### History-less\n\nThe core history logic has now finally been extracted into a standalone plugin. This makes it much easier for people to implement their own custom history behaviors. And it ensures that plugins have enough control to augment the editor in complex ways, because the history requires it.\n\n### Mark-less\n\nMarks have been removed from the Slate data model. Now that we have the ability to define custom properties right on the nodes themselves, you can model marks as custom properties of text nodes. For example bold can be modelled simply as a `bold: true` property.\n\n### Annotation-less\n\nSimilarly, annotations have been removed from Slate's core. They can be fully implemented now in userland by defining custom operations and rendering annotated ranges using decorations. But most cases should be using custom text node properties or decorations anyways. There were not that many use cases that benefited from annotations.\n\n## Reductions\n\nOne of the goals was to dramatically simplify a lot of the logic in Slate to make it easier to maintain and iterate on. This was done by refactoring to better base abstractions that can be built on, by leveraging modern DOM APIs, and by migrating to simpler React patterns.\n\nTo give you a sense for the change in total lines of code:\n\n```text\nslate                       8,436  ->  3,958  (47%)\nslate-react                 3,905  ->  1,954  (50%)\n\nslate-base64-serializer        38  ->      0\nslate-dev-benchmark           340  ->      0\nslate-dev-environment         102  ->      0\nslate-dev-test-utils           44  ->      0\nslate-history                   0  ->    211\nslate-hotkeys                  62  ->      0\nslate-html-serializer         253  ->      0\nslate-hyperscript             447  ->    345\nslate-plain-serializer         56  ->      0\nslate-prop-types               62  ->      0\nslate-react-placeholder        62  ->      0\n\ntotal                      13,807  ->  6,468  (47%)\n```\n\nIt's quite a big difference! And that doesn't even include the dependencies that were shed in the process too.\n"
  },
  {
    "path": "docs/general/changelog.md",
    "content": "# Changelog\n\nThis is a list of changes to Slate with each new release. Until `1.0` is released, breaking changes will be added as minor version bumps, and smaller, patch-level changes won't be noted since the library is moving quickly while in beta.\n\n> ⚠️ Until [https://github.com/atlassian/changesets/issues/264](https://github.com/atlassian/changesets/issues/264) is solved, each package will maintain its own individual changelog, which you can find here:\n>\n> - [slate](https://github.com/ianstormtaylor/slate/blob/main/packages/slate/CHANGELOG.md)\n> - [slate-history](https://github.com/ianstormtaylor/slate/blob/main/packages/slate-history/CHANGELOG.md)\n> - [slate-hyperscript](https://github.com/ianstormtaylor/slate/blob/main/packages/slate-hyperscript/CHANGELOG.md)\n> - [slate-react](https://github.com/ianstormtaylor/slate/blob/main/packages/slate-react/CHANGELOG.md)\n\n## `0.61` — March 29, 2021\n\n### BREAKING\n\n**New CustomTypes for Editor, Element, Text and other implementation specific objects.** Improved typing with TypeScript lets you add CustomTypes for the Slate Editor. This change requires you to set up your types at the start. It's a new concept so please read the new TypeScript documentation here: [https://docs.slatejs.org/concepts/11-typescript](https://docs.slatejs.org/concepts/11-typescript)\n\n## `0.60` — November 24, 2020\n\n### BREAKING\n\n**Introduced new customizable TypeScript typings.** You can override the built-in types to extend them for your own editor's domain model. However the changes to make this possible likely resulted in some changes to the existing type contracts.\n\n**The `useEditor` hook was renamed to `useSlateStatic`.** This was done to better differentiate between the `useSlate` hook and to make it clear that the static version will not re-render when changes occur.\n\n## `0.59` — September 24, 2020\n\n_There were no breaking changes or new additions in this release._\n\n## `0.58` — May 5th, 2020\n\n### BREAKING\n\n**User properties on Elements and Texts now have an unknown type instead of any.** Previously, the arbitrary user defined keys on the `Text` and `Element` interface had a type of `any` which effectively removed any potential type checking on those properties. Now these have a type of `unknown` so that type checking can be done by consumers of the API when they are applying their own custom properties to the `Text`s and `Element`s.\n\n## `0.57` — December 18, 2019\n\n### BREAKING\n\n**Overridable commands now live directly on the editor object.** Previously the `Command` concept was implemented as an interface that was passed into the `editor.exec` function, allowing the \"core\" commands to be overridden in one place. But this introduced a lot of Redux-like indirection when implementing custom commands that wasn't necessary because they are never overridden. Instead, now the core actions that can be overridden are implemented as individual functions on the editor \\(eg. `editor.insertText`\\) and they can be overridden just like any other function \\(eg. `isVoid`\\).\n\nPreviously to override a command you'd do:\n\n```javascript\nconst withPlugin = editor => {\n  const { exec } = editor\n\n  editor.exec = command => {\n    if (command.type === 'insert_text') {\n      const { text } = command\n\n      if (myCustomLogic) {\n        // ...\n        return\n      }\n    }\n\n    exec(command)\n  }\n\n  return editor\n}\n```\n\nNow, you'd override the specific function directly:\n\n```javascript\nconst withPlugin = editor => {\n  const { insertText } = editor\n\n  editor.insertText = text => {\n    if (myCustomLogic) {\n      // ...\n      return\n    }\n\n    insertText(text)\n  }\n\n  return editor\n}\n```\n\nYou shouldn't ever need to call these functions directly! They are there for plugins to tap into, but there are higher level helpers for you to call whenever you actually need to invoke them. Read on…\n\n**Transforms now live in a separate namespace of helpers.** Previously the document and selection transformation helpers were available directly on the `Editor` interface as `Editor.*`. But these helpers are fairly low level, and not something that you'd use in your own codebase all over the place, usually only inside specific custom helpers of your own. To make room for custom userland commands, these helpers have been moved to a new `Transforms` namespace.\n\nPreviously you'd write:\n\n```javascript\nEditor.unwrapNodes(editor, ...)\n```\n\nNow you'd write:\n\n```javascript\nTransforms.unwrapNodes(editor, ...)\n```\n\n**The `Command` interfaces were removed.** As part of those changes, the existing `Command`, `CoreCommand`, `HistoryCommand`, and `ReactCommand` interfaces were all removed. You no longer need to define these \"command objects\", because you can just call the functions directly. Plugins can still define their own overridable commands by extending the `Editor` interface with new functions. The `slate-react` plugin does this with `insertData` and the `slate-history` plugin does this with `undo` and `redo`.\n\n### NEW\n\n**User action helpers now live directly on the `Editor.*` interface.** These are taking the place of the existing `Transforms.*` helpers that were moved. These helpers are equivalent to user actions, and they always operate on the existing selection. There are some defined by core, but you are likely to define your own custom helpers that are specific to your domain as well.\n\nFor example, here are some of the built-in actions:\n\n```javascript\nEditor.insertText(editor, 'a string of text')\nEditor.deleteForward(editor)\nEditor.deleteBackward(editor, { unit: 'word' })\nEditor.addMark(editor, 'bold', true)\nEditor.insertBreak(editor)\n...\n```\n\nEvery one of the old \"core commands\" has an equivalent `Editor.*` helper exposed now. However, you can easily define your own custom helpers and place them in a namespace as well:\n\n```javascript\nconst MyEditor = {\n  ...Editor,\n  insertParagraph(editor) { ... },\n  toggleBoldMark(editor) { ... },\n  formatLink(editor, url) { ... },\n  ...\n}\n```\n\nWhatever makes sense for your specific use case!\n\n## `0.56` — December 17, 2019\n\n### BREAKING\n\n**The `format_text` command is split into `add_mark` and `remove_mark`.** Although the goal is to keep the number of commands in core to a minimum, having this as a combined command made it very hard to write logic that wanted to guarantee to only ever add or remove a mark from a text node. Now you can be guaranteed that the `add_mark` command will only ever add custom properties to text nodes, and the `remove_mark` command will only ever remove them.\n\nPreviously you would write:\n\n```javascript\neditor.exec({\n  type: 'format_text',\n  properties: { bold: true },\n})\n```\n\nNow you would write:\n\n```javascript\nif (isActive) {\n  editor.exec({ type: 'remove_mark', key: 'bold' })\n} else {\n  editor.exec({ type: 'add_mark', key: 'bold', value: true })\n}\n```\n\n> 🤖 Note that the \"mark\" term does not mean what it meant in `0.47` and earlier. It simply means formatting that is applied at the text level—bold, italic, etc. We need a term for it because it's such a common pattern in richtext editors, and \"mark\" is often the term that is used. For example the `<mark>` tag in HTML.\n\n**The `Node.text` helper was renamed to `Node.string`.** This was simply to reduce the confusion between \"the text string\" and \"text nodes\". The helper still just returns the concatenated string content of a node.\n\n## `0.55` — December 15, 2019\n\n### BREAKING\n\n**The `match` option must now be a function.** Previously there were a few shorthands, like passing in a plain object. This behavior was removed because it made it harder to reason about exactly what was being matched, it made debugging harder, and it made it hard to type well. Now the `match` option must be a function that receives the `Node` object to match. If you're using TypeScript, and the function you pass in is a type guard, that will be taken into account in the return value!\n\nPreviously you might write:\n\n```javascript\nEditor.nodes(editor, {\n  at: range,\n  match: 'text',\n})\n\nEditor.nodes(editor, {\n  at: range,\n  match: { type: 'paragraph' },\n})\n```\n\nNow you'd write:\n\n```javascript\nEditor.nodes(editor, {\n  at: range,\n  match: Text.isText,\n})\n\nEditor.nodes(editor, {\n  at: range,\n  match: node => node.type === 'paragraph',\n})\n```\n\n**The `mode` option now defaults to `'lowest'`.** Previously the default varied depending on where in the codebase it was used. Now it defaults to `'lowest'` everywhere, and you can always pass in `'highest'` to change the behavior. The one exception is the `Editor.nodes` helper which defaults to `'all'` since that's the expected behavior most of the time.\n\n**The `Editor.match` helper was renamed to `Editor.above`.** This was just to make it clear how it searched in the tree—it looks through all of the nodes directly above a location in the document.\n\n**The `Editor.above/previous/next` helpers now take all options in a dictionary.** Previously their APIs did not exactly match the `Editor.nodes` helper which they are shorthand for, but now this is no longer the case. The `at`, `match` and `mode` options are all passed in the `options` argument.\n\nPreviously you would use:\n\n```javascript\nEditor.previous(editor, path, n => Text.isText(n), {\n  mode: 'lowest',\n})\n```\n\nNow you'd use:\n\n```javascript\nEditor.previous(editor, {\n  at: path,\n  match: n => Text.isText(n),\n  mode: 'lowest',\n  ...\n})\n```\n\n**The `Editor.elements` and `Editor.texts` helpers were removed.** These were simple convenience helpers that were rarely used. You can now achieve the same thing by using the `Editor.nodes` helper directly along with the `match` option. For example:\n\n```javascript\nEditor.nodes(editor, {\n  at: range,\n  match: Element.isElement,\n})\n```\n\n## `0.54` — December 12, 2019\n\n### BREAKING\n\n**The `<Slate>` `onChange` handler no longer receives the `selection` argument.** Previously it received `(value, selection)`, now it receives simply `(value)`. Instead, you can access any property of the editor directly \\(including the value as `editor.children`\\). The `value/onChange` convention is provided purely for form-related use cases that expect it. This is along with the change to how extra props are \"controlled\". By default they are uncontrolled, but you can pass in any of the other top-level editor properties to take control of them.\n\n**The `Command` and `CoreCommand` interfaces have been split apart.** Previously you could access `Command.isCoreCommand`, however now this helper lives directly on the core command interface as `CoreCommand.isCoreCommand`. This makes it more symmetrical with userland commands.\n\n**Command checkers have been simplified.** Previously Slate exposed command-checking helpers like `Command.isInsertTextCommand`. However these were verbose and not useful most of the time. Instead, you can now check for `CoreCommand.isCoreCommand` and then use the `command.type` property to narrow further. This keeps core more symmetrical with how userland will implement custom commands.\n\n### NEW\n\n**The `<Slate>` component is now pseudo-controlled.** It requires a `value=` prop to be passed in which is controlled. However, the `selection`, `marks`, `history`, or any other props are not required to be controlled. They default to being uncontrolled. If your use case requires controlling these extra props you can pass them in and they will start being controlled again. This change was made to make using Slate easier, while still allowing for more complex state to be controlled by core or plugins going forward—state that users don't need to concern themselves with most of time.\n\n**The `Editor` now has a `marks` property.** This property represents text-level formatting that will be applied to the next character that is inserted. This is a common richtext editor behavior, where pressing a **Bold** button with a collapsed selection turns on \"bold\" formatting mode, and then typing a character becomes bold. This state isn't stored in the document, and is instead stored as an extra property on the editor itself.\n\n## `0.53` — December 10, 2019\n\n### BREAKING\n\n**The `slate-schema` package has been removed!** This decision was made because with the new helpers on the `Editor.*` interface, and with the changes to `normalizeNode` in the latest version of Slate, adding constraints using `normalizeNode` actually leads to more maintainable code than using `slate-schema`. Previously it was required to keep things from getting too unreadable, but that always came at a large cost of indirection and learning additional APIs. Everything you could do with `slate-schema` you can do with `normalizeNode`, and more.\n\n**Node matching functions now receive just a `Node`.** Previously they received a `NodeEntry` tuple, which consisted of `[node, path]`. However now they receive only a `node` argument, which makes it easier to write one-off node-checking helpers and pass them in directly as arguments. If you need to ensure a path, lookup the node first.\n\n**A few unnecessary helpers were removed.** There were a handful of leftovers helpers that were not used anywhere in Slate's core logic, and were very unlikely to be used in userland, so they've been removed to reduce bundle size. You are always free to re-implement them if you truly need them. The list of helpers removed is:\n\n- `Editor.ancestor`\n- `Node.closest`\n- `Node.furthest`\n- `Range.exists`\n- `Range.isRangeList`\n- `Range.isRangeMap`\n\n## `0.52` — December 5, 2019\n\n### BREAKING\n\n**The `slate-schema` package now exports a factory.** Previously you imported the `withSchema` function directly from the package, and passed in your schema rules when you called it. However, now you import the `defineSchema` factory instead which takes your schema rules and returns a custom `withSchema` plugin function. This way you can still use helpers like `compose` with the plugin, while pre-defining your custom rules.\n\n**The `properties` validation in the schema is now exhaustive.** Previously a `properties` validation would check any properties you defined, and leave any unknown ones as is. This made it hard to be certain about which properties would end up on a node. Now any non-defined properties are considered invalid. And using an empty `{}` validation would ensure that there are no custom properties at all.\n\n### NEW\n\n**The `leaves` schema validation ensures text-level formatting.** You can use it from any higher up element node in the tree, to guarantee that it only contains certain types of text-level formatting on its inner text nodes. For example you could use it to ensure that a `code` block doesn't allow any of its text to be bolded or italicized.\n\n## `0.51` — December 5, 2019\n\n### BREAKING\n\n**The `Mark` interface has been removed!** Previously text-level formatting was stored in an array of unique marks. Now that same formatting is stored directly on the `Text` nodes themselves. For example instead of:\n\n```javascript\n{\n  text: 'A line of text.',\n  marks: [{ type: 'bold' }],\n}\n```\n\nYou now have:\n\n```javascript\n{\n  text: 'A line of text.',\n  bold: true,\n}\n```\n\nAnd the marks are added and removed from the text nodes using the same `Editor.setNodes` transform that you use for toggling formatting on block and inline nodes. This greatly simplifies things and makes Slate's core even smaller.\n\n**The `<Slate>` component is now a \"controlled\" component.** This makes things a bit more React-ish, and makes it easier to update the editor's value when new data is received after the initial render. To arrive at the previous \"uncontrolled\" behavior you'll need to implement it in userland using React's built-in hooks.\n\nWhereas previously you would do:\n\n```jsx\n<Slate defaultValue={initialValue}>...</Slate>\n```\n\nNow you must manage the value and selection yourself, like:\n\n```jsx\nconst [value, setValue] = useState(initialValue)\nconst [selection, setSelection] = useState(null)\n\n<Slate\n  initialValue={initialValue}\n  selection={selection}\n  onChange={(value, selection) => {\n    setValue(value)\n    setSelection(selection)\n  }}\n>\n  ...\n</Slate>\n```\n\n## `0.50` — November 27, 2019\n\n### BREAKING\n\n**A complete overhaul.** The Slate codebase has had a complete overhaul and many pieces of its core architecture have been reconsidered from the ground up. There are lots of changes. We recommend re-reading the [Walkthroughs](https://docs.slatejs.org/walkthroughs) and [Concepts](https://docs.slatejs.org/concepts) documentation and the [Examples](https://github.com/ianstormtaylor/slate/tree/71ff94c8d866a3ad9582ec4b84258d99d508fd70/site/examples/README.md) to get a sense for everything that has changed. As well as the [Migration](https://docs.slatejs.org/concepts/xx-migrating) writeup for what the major changes are.\n\n> ⚠ **Warning:** Changes past this point refer to the older Slate architecture, based on Immutable.js and without TypeScript. Many things are different in the older architecture and may not apply to the newer one.\n\n## `0.47` — May 8, 2019\n\n### NEW\n\n**Introducing the `Annotation` model.** This is very similar to what used to be stored in `value.decorations`, except they also contain a unique \"key\" to be identified by. They can be used for things like comments, suggestions, collaborative cursors, etc.\n\n```javascript\n{\n  object: 'annotation',\n  key: String,\n  type: String,\n  data: Map,\n  anchor: Point,\n  focus: Point,\n}\n```\n\n**There are three new `*_annotation` operations.** The set of operations now includes `add_annotation`, `remove_annotation` and `set_annotation`. They are similar to the existing `*_mark` operations.\n\n**Introducing \"iterable\" model methods.** This introduces several iteratable-producing methods on the `Element` interface, which `Document`, `Block` and `Inline` all implement. There are iterables for traversing the entire tree:\n\n```javascript\nelement.blocks(options)\nelement.descendants(options)\nelement.inlines(options)\nelement.texts(options)\n\nelement.ancestors(path, options)\nelement.siblings(path, options)\n```\n\nYou can use them just like the native JavaScript iterables. For example, you can loop through the text nodes after a specific node:\n\n```javascript\nfor (const next of document.texts({ path: start.path })) {\n  const [node, path] = next\n  // do something with the text node or its path\n}\n```\n\nOr you can traverse all of the \"leaf\" blocks:\n\n```javascript\nfor (const [block] of document.blocks({ onlyLeaves: true })) {\n  // ...\n}\n```\n\nAnd because these iterations use native `for/of` loops, you can easily `break` or `return` out of the loops directly—a much nicer DX than remembering to `return false`.\n\n### BREAKING\n\n**The `value.decorations` property is now `value.annotations`.** Following with the split of decorations into annotations, this property was also renamed. They must now contain unique `key` properties, as they are stored as a `Map` instead of a `List`. This allows for much more performant updates.\n\n**The `Decoration` model no longer has a nested `mark` property.** Previously a real `Mark` object was used as a property on decorations, but now the `type` and `data` properties are first class properties instead.\n\n```javascript\n{\n  object: 'decoration',\n  type: String,\n  data: Map,\n  anchor: Point,\n  focus: Point,\n}\n```\n\n## `0.46` — May 1, 2019\n\n### BREAKING\n\n**Mark operations no longer have `offset` or `length` properties.** Since text nodes now contain a unique set of marks, it wouldn't make sense for a single mark-related operation to result in a splitting of nodes. Instead, when a mark is added to only part of a text node, it will result in a `split_node` operation as well as an `add_mark` operation.\n\n**Text operations no longer have a `marks` property.** Previously it was used to add text with a specific set of marks. However this is no longer necessary, and when text is added with marks it will result in an `insert_text` operation as well as an `add_mark` operation.\n\n**Using `Text.create` or `Text.createList` with a `leaves` property will error.** Now that text nodes no longer have leaves, you will need to pass in the `text` string and `marks` directly when creating a new text node. \\(However, you can still create entire values using `Value.create` in a backwards compatible way for convenience while migrating.\\)\n\n```javascript\n// This works, although deprecated, which is the common case...\nValue.create(oldValueJson)\n\n// ...but this will error!\nText.create(oldTextJson)\n```\n\n**`Value.toJSON` returns the new data model format, without leaves.** Although `Value.fromJSON` and `Value.create` allow the old format in deprecated mode, calling `Value.toJSON` will return the new data format. If you still need the old one you'll need to iterate the document tree converting text nodes yourself.\n\n**The low-level `Value.*` and `Node.*` mutation methods have changed.** These changes follow the operation signature changes, since the methods take the same arguments as the operations themselves. For example:\n\n```javascript\n// Previously...\nvalue.addMark(path, offset, length, mark)\n\n// ...is now:\nvalue.addMark(path, mark)\n```\n\nThese are low-level methods, so this change shouldn't affect the majority of use cases.\n\n### DEPRECATED\n\n**Initializing editors with `Text` nodes with a `leaves` property is deprecated.** In this new version of Slate, creating a new value with `Value.create` with the old leaf data model is still allowed for convenience in migration, but it will be removed in a coming version. \\(However, using the low-level `Text.create` will throw an error!\\)\n\n```javascript\n// This works, although deprecated, which is the common case...\nValue.create(oldValueJson)\n\n// ...but this will error!\nText.create(oldTextJson)\n```\n\n## `0.45` — April 2, 2019\n\n### BREAKING\n\n**A few properties of `Operation` objects have changed.** In an effort to standardize and streamline operations, their properties have changed. This **won't** affect 90% of use cases, since operations are usually low-level concerns. However, if you are using operational transform or some other low-level parts of Slate, this may affect you. The `value`, `selection`, `node`, and `mark` properties—which contained references to Immutable.js objects—have all been removed. In their place, we have standardized a `properties` and `newProperties` pair. This will greatly reduce the size of operations stored in memory, and makes dealing with them easier when serialized as well.\n\n## `0.44` — November 8, 2018\n\n### NEW\n\n**Introducing the `child_min_invalid` and `child_max_invalid` schema errors.** These new schema errors map directly to the `mix` and `max` schema rule definitions, and make it easier to determine exactly what your normalization logic needs to do to fix the document.\n\n**Added new node retrieval methods.** There are three new methdos for node retrieval. The first is `getNodesAtRange` which will retrieve _all_ of the nodes in the tree in a given range. And the second two are `getRootBlocksAtRange` and `getRootInlinesAtRange` for retrieving the top-most blocks or inlines in a given range. These should be helpful in defining your own command logic.\n\n### BREAKING\n\n**Schema errors for `min` and `max` rules have changed.** Previously they would result in errors of `child_required`, `child_object_invalid`, `child_type_invalid` and `child_unknown`. Now that we have the new `child_min_invalid` and `child_max_invalid` errors, these schema rules will return them instead, making it much easier to determine exactly which rule is causing a schema error.\n\n### DEPRECATED\n\n**The `getBlocksAtRange` and `getInlinesAtRange` methods have been renamed.** To clear up confusion about which blocks and inlines are retrieve in the case of nesting, these two methods have been renamed to `getLeafBlocksAtRange` and `getLeafInlinesAtRange` to clarify that they retrieve the bottom-most nodes. And now there are two additional methods called `getRootBlocksAtRange` and `getRootInlinesAtRange` for cases where you want the top-most nodes instead.\n\n## `0.43` — October 27, 2018\n\n### NEW\n\n**The `editor.command` and `editor.query` methods can take functions.** Previously they only accepted a `type` string and would look up the command or query by type. Now, they also accept a custom function. This is helpful for plugin authors, who want to accept a \"command option\", since it gives users more flexibility to write one-off commands or queries. For example a plugin could be passed either:\n\n```javascript\nHotkey({\n  hotkey: 'cmd+b',\n  command: 'addBoldMark',\n})\n```\n\nOr a custom command function:\n\n```javascript\nHotkey({\n  hotkey: 'cmd+b',\n  command: editor => editor.addBoldMark().moveToEnd(),\n})\n```\n\n### BREAKING\n\n**The `Change` object has been removed.** The `Change` object as we know it previously has been removed, and all of its behaviors have been folded into the `Editor` controller. This includes the top-level commands and queries methods, as well as methods like `applyOperation` and `normalize`. _All places that used to receive `change` now receive `editor`, which is API equivalent._\n\n**Changes are now flushed to `onChange` asynchronously.** Previously this was done synchronously, which resulted in some strange race conditions in React environments. Now they will always be flushed asynchronously, just like `setState`.\n\n**The `normalize*` and `validate*` middleware signatures have changed!** Previously the `normalize*` and `validate*` middleware was passed `(node, next)`. However now, for consistency with the other middleware they are all passed `(node, editor, next)`. This way, all middleware always receive `editor` and `next` as their final two arguments.\n\n**The `editor.event` method has been removed.** Previously this is what you'd use when writing tests to simulate events being fired—which were slightly different to other running other middleware. With the simplification to the editor and to the newly-consistent middleware signatures, you can now use `editor.run` directly to simulate events:\n\n```javascript\neditor.run('onKeyDown', { key: 'Tab', ... })\n```\n\n### DEPRECATED\n\n**The `editor.change` method is deprecated.** With the removal of the `Change` object, there's no need anymore to create the small closures with `editor.change()`. Instead you can directly invoke commands on the editor in series, and all of the changes will be emitted asynchronously on the next tick.\n\n```javascript\neditor.insertText('word').moveFocusForward(10).addMark('bold')\n```\n\n**The `applyOperations` method is deprecated.** Instead you can loop a set of operations and apply each one using `applyOperation`. This is to reduce the number of methods exposed on the `Editor` to keep it simpler.\n\n**The `change.call` method is deprecated.** Previously this was used to call a one-off function as a change method. Now this behavior is equivalent to calling `editor.command(fn)` instead.\n\n## `0.42` — October 9, 2018\n\n### NEW\n\n**Introducing the `Editor` controller.** Previously there was a vague `editor` concept, that was the React component itself. This was helpful, but because it was tightly coupled to React and the browser, it didn't lend itself to non-browser use cases well. This meant that the line between \"model\" and \"controller/view\" was blurred, and some concepts lived in both places at once, in inconsistent ways.\n\nA new `Editor` controller now makes this relationship clear. It borrows many of its behaviors from the React `<Editor>` component. And the component actually just instantiates its own plain JavaScript `Editor` under the covers to delegate the work to.\n\nThis new concept powers a lot of the thinking in this new version, unlocking a lot of changes that bring a clearer separation of responsibilities to Slate. It allows us to create editors in any environment, which makes server-side use cases easier, brings parity to testing, and even opens us up to supporting other view layers like React Native or Vue.js in the future.\n\nIt has a familiar API, based on the existing `editor` concept:\n\n```javascript\nconst editor = new Editor({ plugins, value, onChange })\n\neditor.change(change => {\n  ...\n})\n```\n\nHowever it also introduces imperative methods to make testing easier:\n\n```javascript\neditor.run('renderNode', props)\n\neditor.event('onKeyDown', event)\n\neditor.command('addMark', 'bold')\n\neditor.query('isVoid', node)\n```\n\nI'm very excited about it, so I hope you like it!\n\n**Introducing the \"commands\" concept.** Previously, \"change methods\" were treated in a first-class way, but plugins had no easy way to add their own change methods that were reusable elsewhere. And they had no way to override the built-in logic for certain commands, for example `splitBlock` or `insertText`. However, now this is all customizable by plugins, with the core Slate plugin providing all of the previous default commands.\n\n```javascript\nconst plugin = {\n  commands: {\n    wrapQuote(change) {\n      change.wrapBlock('quote')\n    },\n  },\n}\n```\n\nThose commands are then available directly on the `change` objects, which are now editor-specific:\n\n```javascript\nchange.wrapQuote()\n```\n\nThis allows you to define all of your commands in a single, easily-testable place. And then \"behavioral\" plugins can simply take command names as options, so that you have full control over the logic they trigger.\n\n**Introducing the \"queries\" concept.** Similarly to the commands, queries allow plugins to define specific behaviors that the editor can be queried for in a reusable way, to be used when rendering buttons, or deciding on command behaviors, etc.\n\nFor example, you might define an `getActiveList` query:\n\n```javascript\nconst plugin = {\n  queries: {\n    getActiveList(editor) {},\n  },\n}\n```\n\nAnd then be able to re-use that logic easily in different places in your codebase, or pass in the query name to a plugin that can use your custom logic itself:\n\n```javascript\nconst list = change.getActiveList()\n\nif (list) {\n  ...\n} else {\n  ...\n}\n```\n\nTaken together, commands and queries offer a better way for plugins to manage their inter-dependencies. They can take in command or query names as options to change their behaviors, or they can export new commands and queries that you can reuse in your codebase.\n\n**The middleware stack is now deferrable.** With the introduction of the `Editor` controller, the middleware stack in Slate has also been upgraded. Each middleware now receives a `next` function \\(similar to Express or Koa\\) that allows you to choose whether to iterating the stack or not.\n\n```javascript\n// Previously, you'd return `undefined` to continue.\nfunction onKeyDown(event, editor, next) {\n  if (event.key !== 'Enter') return\n  ...\n}\n\n// Now, you call `next()` to continue...\nfunction onKeyDown(event, editor, next) {\n  if (event.key !== 'Enter') return next()\n  ...\n}\n```\n\nWhile that may seem inconvenient, it opens up an entire new behavior, which is deferring to the plugins later in the stack to see if they \"handle\" a specific case, and if not, handling it yourself:\n\n```javascript\nfunction onKeyDown(event, editor, next) {\n  if (event.key === 'Enter') {\n    const handled = next()\n    if (handled) return handled\n\n    // Otherwise, handle `Enter` yourself...\n  }\n}\n```\n\nThis is how all of the core logic in `slate-react` is now implemented, eliminating the need for a \"before\" and an \"after\" plugin that duplicate logic.\n\nUnder the covers, the `schema`, `commands` and `queries` concept are all implemented as plugins that attach varying middleware as well. For example, commands are processed using the `onCommand` middleware under the covers:\n\n```javascript\nconst plugin = {\n  onCommand(command, editor, next) {\n    ...\n  }\n}\n```\n\nThis allows you to actually listen in to all commands, and override individual behaviors if you choose to do so, without having to override the command itself. This is a very advanced feature, which most people won't need, but it shows the flexibility provided by migrating all of the previously custom internal logic to be based on the new middleware stack.\n\n**Plugins can now be defined in nested arrays.** This is a small addition, but it means that you no longer need to differentiate between individual plugins and multiple plugins in an array. This allows plugins to be more easily composed up from multiple other plugins themselves, without the end user having to change how they use them. Small, but encourages reuse just a little bit more.\n\n### DEPRECATED\n\n**The `slate-simulator` is deprecated.** Previously this was used as a pseudo-controller for testing purposes. However, now with the new `Editor` controller as a first-class concept, everything the simulator could do can now be done directly in the library. This should make testing in non-browser environments much easier to do.\n\n### BREAKING\n\n**The `Value` object is no longer tied to changes.** Previously, you could create a new `Change` by calling `value.change()` and retrieve a new value. With the re-architecture to properly decouple the schema, commands, queries and plugins from the core Slate data models, this is no longer possible. Instead, changes are always created via an `Editor` instance, where those concepts live.\n\n```javascript\n// Instead of...\nconst { value } = this.state\nconst change = value.change()\n...\nthis.onChange(change)\n\n// You now would do...\nthis.editor.change(change => {\n  const { value } = change\n  ...\n})\n```\n\nSometimes this means you will need to store the React `ref` of the `editor` to be able to access its `editor.change` method in your React components.\n\n**Remove the `Stack` \"model\", in favor of the new `Editor`.** Previously there was a pseudo-model called the `Stack` that was very low level, and not really a model. This concept has now been rolled into the new `Editor` controller, which can be used in any environment because it's just plain JavaScript. There was almost no need to directly use a `Stack` instance previously, so this change shouldn't affect almost anyone.\n\n**Remove the `Schema` \"model\", in favor of the new `Editor`.** Previously there was another pseudo-model called the `Schema`, that was used to contain validation logic. All of the same validation features are still available, but the old `Schema` model is now rolled into the `Editor` controller as well, in the form of an internal `SchemaPlugin` that isn't exposed.\n\n**Remove the `schema.isVoid` and `schema.isAtomic` in favor of queries.** Previously these two methods were used to query the schema about the behavior of a specific `node` or `decoration`. Now these same queries as possible using the \"queries\" concept, and are available directly on the `change` object:\n\n```javascript\nif (change.isVoid(node)) {\n  ...\n}\n```\n\n**The middleware stack must now be explicitly continued, using `next`.** Previously returning `undefined` from a middleware would \\(usually\\) continue the stack onto the next middleware. Now, with middleware taking a `next` function argument you must explicitly decide to continue the stack by call `next()` yourself.\n\n**Remove the `History` model, in favor of commands.** Previously there was a `History` model that stored the undo/redo stacks, and managing saving new operations to those stacks. All of this logic has been folded into the new \"commands\" concept, and the undo/redo stacks now live in `value.data`. This has the benefit of allowing the history behavior to be completely overridable by userland plugins, which was not an easy feat to manage before.\n\n**Values can no longer be normalized on creation.** With the decoupling of the data model and the plugin layer, the schema rules are no longer available inside the `Value` model. This means that you can no longer receive a \"normalized\" value without having access to the `Editor` and its plugins.\n\n```javascript\n// While previously you could attach a `schema` to a value...\nconst normalized = Value.create({ ..., schema })\n\n// Now you'd need to do that with the `editor`...\nconst value = Value.create({ ... })\nconst editor = new Editor({ value, plugins: [{ schema }] })\nconst normalized = editor.value\n```\n\nWhile this seems inconvenient, it makes the boundaries in the API much more clear, and keeps the immutable and mutable concepts separated. This specific code sample gets longer, but the complexities elsewhere in the library are removed.\n\n**The `Change` class is no longer exported.** Changes are now editor-specific, so exporting the `Change` class no longer makes sense. Instead, you can use the `editor.change()` API to receive a new change object with the commands and queries specific to your editor's plugins.\n\n**The `getClosestVoid`, `getDecorations` and `hasVoidParent` method now take an `editor`.** Previously these `Node` methods took a `schema` argument, but this has been replaced with the new `editor` controller instead now that the `Schema` model has been removed.\n\n## `0.41` — September 21, 2018\n\n### DEPRECATED\n\n**The `withoutNormalization` helper has been renamed to `withoutNormalizing`.** This is to stay consistent with the new helpers for `withoutSaving` and `withoutMerging`.\n\n### BREAKING\n\n**The the \"operation flags\" concept was removed.** This was a confusing concept that was implemented in multiple different ways and led to the logic around normalizing, saving, and merging operations being more complex than it needed to be. These flags have been replaced with three simpler helper functions: `withoutNormalizing`, `withoutSaving` and `withoutMerging`.\n\n```javascript\nchange.withoutNormalizing(() => {\n  nodes.forEach(node => change.removeNodeByKey(node.key))\n})\n```\n\n```javascript\nchange.withoutSaving(() => {\n  change.setValue({ decorations })\n})\n```\n\nThis means that you no longer use the `{ normalize: false }` or `{ save: false }` options as arguments to individual change methods, and instead use these new helper methods to apply these behaviors to groups of changes at once.\n\n**The \"normalize\" change methods have been removed.** Previously there were a handful of different normalization change methods like `normalizeNodeByPath`, `normalizeParentByKey`, etc. These were confusing because it put the onus on the implemented to know exact which nodes needed to be normalized. They have been removed, and implementers no longer ever need to worry about which specific nodes to normalize, as Slate will handle that for them.\n\n**The internal `refindNode` and `refindPath` methods were removed.** These should never have been exposed in the first place, and are now no longer present on the `Element` interface. These were only used internally during the normalization process.\n\n## `0.40` — August 22, 2018\n\n### BREAKING\n\n**Remove all previously deprecated code paths.** This helps to reduce some of the complexity in Slate by not having to handle these code paths anymore. And it helps to reduce file size. When upgrading, it's _highly_ recommended that you upgrade to the previous version first and ensure there are no deprecation warnings being logged, then upgrade to this version.\n\n## `0.39` — August 22, 2018\n\n### NEW\n\n**Introducing the `Range` model** _**and**_ **interface.** Previously the \"range\" concept was used in multiple different places, for the selection, for decorations, and for acting on ranges of the document. This worked okay, but it was hiding the underlying system which is that `Range` is really an interface that other models can choose to implement. Now, we still use the `Range` model for referencing parts of the document, but it can also be implemented by other models that need to attach more semantic meaning...\n\n**Introducing the `Decoration` and `Selection` models.** These two new models both implement the new `Range` interface. Where previously they had to mis-use the `Range` model itself with added semantics. This just cleans up some of the confusion around overlapping properties, and allows us to add even more domain-specific methods and properties in the future without trouble.\n\n### BREAKING\n\n**Decorations have changed!** Previously, decorations piggybacked on the `Range` model, using the existing `marks` property, and introducing their own `isAtomic` property. However, they have now been split out into their own `Decoration` model with a single `mark` and with the `isAtomic` property controlled by the schema. What previously would have looked like:\n\n```javascript\nRange.create({\n  anchor: { ... },\n  focus: { ... },\n  marks: [{ type: 'highlight' }],\n  isAtomic: true,\n})\n```\n\nIs now:\n\n```javascript\nDecoration.create({\n  anchor: { ... },\n  focus: { ... },\n  mark: { type: 'highlight' },\n})\n```\n\nEach decoration maps to a single `mark` object. And the atomicity of the mark controlled in the schema instead, for example:\n\n```javascript\nconst schema = {\n  marks: {\n    highlight: {\n      isAtomic: true,\n    },\n  },\n}\n```\n\n**The `Range` model has reduced semantics.** Previously, since all decorations and selections were ranges, you could create ranges with an `isFocused`, `isAtomic` or `marks` properties. Now `Range` objects are much simpler, offering only an `anchor` and a `focus`, and can be extended by other models implementing the range interface. However, this means that using `Range.create` or `document.createRange` might not be what you want anymore. For example, for creating a new selection, you used to use:\n\n```javascript\nconst selection = document.createRange({\n  isFocused: true,\n  anchor: { ... },\n  focus: { ... },\n})\n```\n\nBut now, you'll need to use `document.createSelection` instead:\n\n```javascript\nconst selection = document.createSelection({\n  isFocused: true,\n  anchor: { ... },\n  focus: { ... },\n})\n```\n\n**The `value.decorations` property is no longer nullable.** Previously when no decorations were applied to the value, the `decorations` property would be set to `null`. Now it will be an empty `List` object, so that the interface is more consistent.\n\n### DEPRECATED\n\n**The `Node.createChildren` static method is deprecated.** This was just an alias for `Node.createList` and wasn't necessary. You can use `Node.createList` going forward for the same effect.\n\n**The `renderPortal` property of plugins is deprecated.** This allows `slate-react` to be slightly slimmer, since this behavior can be handled in React 16 with the new `<React.Fragment>` using the `renderEditor` property instead, in a way that offers more control over the portal behavior.\n\n**The `data` property of plugins is deprecated.** This property wasn't well designed and circumvented the core tenet that all changes to the `value` object will flow through operations inside `Change` objects. It was mostly used for view-layer state which should be handled with React-specific conventions for state management instead.\n\n## `0.38` — August 21, 2018\n\n### DEPRECATED\n\n**`Node.isVoid` access is deprecated.** Previously the \"voidness\" of a node was hardcoded in the data model. Soon it will be determined at runtime based on your editor's schema. This deprecation just ensures that you aren't using the `node.isVoid` property which will not work in future verisons. What previously would have been:\n\n```javascript\nif (node.isVoid) {\n  ...\n}\n```\n\nNow becomes:\n\n```javascript\nif (schema.isVoid(node)) {\n  ...\n}\n```\n\nThis requires you to have a reference to the `schema` object, which can be access as `value.schema`.\n\n**`Value.isFocused/isBlurred` and `Value.hasUndos/hasRedos` are deprecated.** These properties are easily available via `value.selection` and `value.history` instead, and are now deprecated to reduce the complexity and number of different ways of doing things.\n\n## `0.37` — August 3, 2018\n\n### NEW\n\n**Introducing the `Point` model.** Ranges are now built up of two `Point` models—an `anchor` and a `focus`—instead of having the properties set directly on the range itself. This makes the \"point\" concept first-class in Slate and better API's can be built around point objects.\n\n```javascript\nPoint.create({\n  key: 'a',\n  path: [0, 0],\n  offset: 31,\n})\n```\n\nThese points are exposed on `Range` objects via the `anchor`, `focus`, `start` and `end` properties:\n\n```javascript\nconst { anchor, focus } = range\nchange.removeNodeByKey(anchor.key)\n```\n\nThese replace the earlier `anchorKey`, `anchorOffset`, etc. properties.\n\n**`Document.createRange` creates a relative range.** Previously you'd have to use `Range.create` and make sure that you passed valid arguments, and ensure that you \"normalized\" the range to sync its keys and paths. This is no longer the case, since the `createRange` method will do it for you.\n\n```javascript\nconst range = document.createRange({\n  anchor: {\n    key: 'a',\n    offset: 1,\n  },\n  focus: {\n    key: 'a',\n    offset: 4,\n  },\n})\n```\n\nThis will automatically ensure that the range references leaf text nodes, and that its `anchor` and `focus` paths are set.\n\n**`Document.createPoint` creates a relative point.** Just like the `createRange` method, `createPoint` will create a point that is guaranteed to be relative to the document itself. This is often a lot easier than using `Point.create` directly.\n\n```javascript\nconst anchor = document.createPoint({\n  key: 'a',\n  offset: 1,\n})\n```\n\n### BREAKING\n\n**The `Range.focus` method was removed. \\(Not `Change.focus`!\\)** This was necessary to make way for the new `range.focus` point property. Usually this would have been done in a migration-friendly way like the rest of the method changes in this release, but this was an exception. However the `change.focus()` method is still available and works as expected.\n\n**`Range.set` and `Range.merge` are dangerous.** If you were previously using the super low-level Immutable.js methods `range.set` or `range.merge` with any of the now-removed properties of ranges, these invocations will fail. Instead, you should use the `range.set*` helpers going forward which can be migrated with deprecations warnings instead of failing outright.\n\n**The `offset` property of points defaults to `null`.** Previously it would default to `0` but that could be confusing because it made no distinction from a \"set\" or \"unset\" offset. Now they default to `null` instead. This shouldn't really affect any real-world usage of Slate.\n\n**The `Range.toJSON()` structure has changed.** With the introduction of points, the range now returns its `anchor` and `focus` properties as nested point JSON objects instead of directly as properties. For example:\n\n```javascript\n{\n  \"object\": \"range\",\n  \"anchor\": {\n    \"object\": \"point\",\n    \"key\": \"a\",\n    \"offset\": 1,\n    \"path\": [0, 0]\n  },\n  \"focus\": {\n    \"object\": \"point\",\n    \"key\": \"a\",\n    \"offset\": 3,\n    \"path\": [0, 0]\n  },\n  \"isAtomic\": false,\n  \"isFocused\": false,\n  \"marks\": []\n}\n```\n\n### DEPRECATED\n\n**The selection-based shorts on `Value` were deprecated.** Previously you could access things like `anchorKey`, `startOffset` and `isCollapsed` directly on `Value` objects. This results in extra duplication that is hard to maintain over time, and hard for newcomers to understand, without much benefit. All of these properties are deprecated and should be accessed on the `value.selection` object directly instead.\n\n**The `Range` methods were standardized, with many deprecated.** The methods on `Range` objects had grown drastically in size. Many of them weren't consistently named, or overlapped in unnecessary ways. With the introduction of `Point` objects a lot of these methods could be cleaned up and their logic delegated to the points directly. All of these methods remain available but will raise deprecation warnings, making it easier to upgrade.\n\n_There's a very good chance you're only using a handful of them in your codebase. Either way, all of them will log warnings. For an example of migrating see_ [_this commit_](https://github.com/ianstormtaylor/slate/pull/2035/commits/1bc560ab6242bc015c9f6d3bd20086f18849f8b7)_._\n\nHere's a full list of the newly deprecated methods and properties, and their new alternative if one exists:\n\n```text\nanchorKey -> anchor.key\nanchorOffset -> anchor.offset\nanchorPath -> anchor.path\nblur -> setIsFocused\ncollapseTo -> moveTo\ncollapseToAnchor -> moveToAnchor\ncollapseToEnd -> moveToEnd\ncollapseToEndOf -> moveToEndOfNode\ncollapseToFocus -> moveToFocus\ncollapseToStart -> moveToStart\ncollapseToStartOf -> moveToStartOfNode\ndeselect -> Range.create\nendKey -> end.key\nendOffset -> end.offset\nendPath -> end.path\nextend -> moveFocus\nextendTo -> moveFocusTo\nextendToEndOf -> moveFocusToEndOfNode\nextendToStartOf -> moveFocusToStartOfNode\nfocusKey -> focus.key\nfocusOffset -> focus.offset\nfocusPath -> focus.path\nhasAnchorAtEndOf -> anchor.isAtEndOfNode\nhasAnchorAtStartOf -> anchor.isAtStartOfNode\nhasAnchorBetween ->\nhasAnchorIn -> anchor.isInNode\nhasEdgeAtEndOf -> anchor.isAtEndOfNode || focus.isAtEndOfNode\nhasEdgeAtStartOf -> anchor.isAtStartOfNode || focus.isAtStartOfNode\nhasEdgeBetween ->\nhasEdgeIn -> anchor.isInNode || focus.isInNode\nhasEndAtEndOf -> end.isAtEndOfNode\nhasEndAtStartOf -> end.isAtEndOfNode\nhasEndBetween ->\nhasEndIn -> end.isInNode\nhasFocusAtEndOf -> focus.isAtEndOfNode\nhasFocusAtStartOf -> focus.isAtStartOfNode\nhasFocusBetween ->\nhasFocusIn -> focus.isInNode\nhasStartAtEndOf -> start.isAtEndOfNode\nhasStartAtStartOf -> start.isAtStartOfNode\nhasStartBetween ->\nhasStartIn -> start.isInNode\nisAtEndOf -> isCollapsed && anchor.isAtEndOfNode\nisAtStartOf -> isCollapsed && anchor.isAtStartOfNode\nmove -> moveForward/Backward\nmoveAnchor -> moveAnchorForward/Backward\nmoveAnchorOffsetTo -> moveAnchorTo\nmoveAnchorOffsetTo -> moveAnchorTo\nmoveAnchorToEndOf -> moveAnchorToEndOfNode\nmoveAnchorToStartOf -> moveAnchorToStartOfNode\nmoveEnd -> moveEndForward/Backward\nmoveEndOffsetTo -> moveEndTo\nmoveFocus -> moveFocusForward/Backward\nmoveFocusOffsetTo -> moveFocusTo\nmoveFocusOffsetTo -> moveFocusTo\nmoveFocusToEndOf -> moveFocusToEndOfNode\nmoveFocusToStartOf -> moveFocusToStartOfNode\nmoveOffsetsTo -> moveAnchorTo && moveFocusTo\nmoveStart -> moveStartForward/Backward\nmoveStartOffsetTo -> moveStartTo\nmoveToEndOf -> moveToEndOfNode\nmoveToRangeOf -> moveToRangeOfNode\nmoveToStartOf -> moveToStartOfNode\nstartKey -> start.key\nstartOffset -> start.offset\nstartPath -> start.path\n```\n\n**The selection-based changes were standardized, with many deprecated.** Similarly to the `Range` method deprecations, the same confusion and poor naming choices existed in the `Change` methods that dealt with selections. Many of them have been renamed for consistency, or deprecated when alternatives existed. All of these methods remain available but will raise deprecation warnings, making it easier to upgrade.\n\n_There's a very good chance you're only using a handful of these change methods in your codebase. Either way, all of them will log warnings. For an example of migrating see_ [_this commit_](https://github.com/ianstormtaylor/slate/pull/2035/commits/1bc560ab6242bc015c9f6d3bd20086f18849f8b7)_._\n\nHere's a full list of the newly deprecated changed methods, and their new alternative if one exists:\n\n```text\ncollapseCharBackward -> moveBackward\ncollapseCharForward -> moveForward\ncollapseLineBackward -> moveToStartOfBlock\ncollapseLineForward -> moveToEndOfBlock\ncollapseTo -> moveTo\ncollapseToAnchor -> moveToAnchor\ncollapseToEnd -> moveToEnd\ncollapseToEndOf -> moveToEndOfNode\ncollapseToEndOfBlock -> moveToEndOfBlock\ncollapseToEndOfNextBlock -> moveToEndOfNextBlock\ncollapseToEndOfNextText -> moveToEndOfNextText\ncollapseToEndOfPreviousBlock -> moveToEndOfPreviousBlock\ncollapseToEndOfPreviousText -> moveToEndOfPreviousText\ncollapseToFocus -> moveToFocus\ncollapseToStart -> moveToStart\ncollapseToStartOf -> moveToStartOfNode\ncollapseToStartOfBlock -> moveToStartOfBlock\ncollapseToStartOfNextBlock -> moveToStartOfNextBlock\ncollapseToStartOfNextText -> moveToStartOfNextText\ncollapseToStartOfPreviousBlock -> moveToStartOfPreviousBlock\ncollapseToStartOfPreviousText -> moveToStartOfPreviousText\nextend -> moveFocusForward/Backward\nextendCharBackward -> moveFocusBackward\nextendCharForward -> moveFocusForward\nextendLineBackward -> moveFocusToStartOfBlock\nextendLineForward -> moveFocusToEndOfBlock\nextendTo -> moveFocusTo\nextendToEndOf -> moveFocusToEndOfNode\nextendToEndOfBlock -> moveFocusToEndOfBlock\nextendToEndOfNextBlock -> moveFocusToEndOfNextBlock\nextendToEndOfNextInline -> moveFocusToEndOfNextInline\nextendToEndOfNextText -> moveFocusToEndOfNextText\nextendToEndOfPreviousBlock -> moveFocusToEndOfPreviousBlock\nextendToEndOfPreviousInline -> moveFocusToEndOfPreviousInline\nextendToEndOfPreviousText -> moveFocusToEndOfPreviousText\nextendToStartOf -> moveFocusToStartOfNode\nextendToStartOfBlock -> moveFocusToStartOfBlock\nextendToStartOfNextBlock -> moveFocusToStartOfNextBlock\nextendToStartOfNextInline -> moveFocusToStartOfNextInline\nextendToStartOfNextText -> moveFocusToStartOfNextText\nextendToStartOfPreviousBlock -> moveFocusToStartOfPreviousBlock\nextendToStartOfPreviousInline -> moveFocusToStartOfPreviousInline\nextendToStartOfPreviousText -> moveFocusToStartOfPreviousText\nmove -> moveForward/Backward\nmoveAnchor -> moveAnchorForward/Backward\nmoveAnchorCharBackward -> moveAnchorBackward\nmoveAnchorCharForward -> moveAnchorForward\nmoveAnchorOffsetTo -> moveAnchorTo\nmoveAnchorToEndOf -> moveAnchorToEndOfNode\nmoveAnchorToStartOf -> moveAnchorToEndOfNode\nmoveCharBackward -> moveBackward\nmoveCharForward -> moveForward\nmoveEnd -> moveEndForward/Backward\nmoveEndCharBackward -> moveEndBackward\nmoveEndCharForward -> moveEndForward\nmoveEndOffsetTo -> moveEndTo\nmoveFocus -> moveFocusForward/Backward\nmoveFocusCharBackward -> moveFocusBackward\nmoveFocusCharForward -> moveFocusForward\nmoveFocusOffsetTo -> moveFocusTo\nmoveFocusToEndOf -> moveFocusToEndOfNode\nmoveFocusToStartOf -> moveFocusToEndOfNode\nmoveOffsetsTo -> moveAnchorTo/moveFocusTo\nmoveStart -> moveStartForward/Backward\nmoveStartCharBackward -> moveStartBackward\nmoveStartCharForward -> moveStartForward\nmoveStartOffsetTo -> moveStartTo\nmoveToEndOf -> moveToEndOfNode\nmoveToRangeOf -> moveToRangeOfNode\nmoveToStartOf -> moveToStartOfNode\nselectAll -> moveToRangeOfDocument\n```\n\n## `0.36` — July 27, 2018\n\n### BREAKING\n\n**Schema rules have changed!** To make them able to be used in more cases \\(so you don't have to dip down to the slower `validateNode/normalizeNode` function\\), the matching syntax for schema rules has changed. Previously multiples types/objects would be expressed as:\n\n```javascript\n{\n  parent: { types: ['ordered_list', 'unordered_list'] },\n}\n```\n\nNow there is a new `match` object concept, which looks like:\n\n```javascript\n{\n  parent: { object: 'block', type: 'list' },\n}\n```\n\nMatch objects can be objects, or an array of objects which acts as `OR`:\n\n```javascript\n{\n  parent: [{ type: 'ordered_list' }, { type: 'unordered_list' }],\n}\n```\n\nAdditionally, schema rules can now be defined using a `schema.rules` array of objects with top-level match properties. This allows for matching nodes in ways that were previously impossible. For example:\n\n```javascript\n{\n  schema: {\n    rules: [{\n      // Match all blocks, regardless of type!\n      match: { object: 'block' },\n      text: /.../g,\n      normalize: () => { ... },\n    }]\n  }\n}\n```\n\nAll of the shorthands like `schema.blocks` and `schema.inlines` are still available, and are simply rewritten to the more flexible `rules` syntax under the covers. These changes are just a small way of making Slate more flexible for advanced use cases when you run into them.\n\n**Schema rule `normalize` functions now receive `SlateError` objects.** Previously they would be called with a signature of `(change, violation, context)`. They are now called with `(change, error)`. This new error is a `SlateError` object with an `error.code` and all of the same context properties.\n\nA normalizer that previously looked like:\n\n```javascript\n{\n  normalize: (change, violation, context) {\n    if (violation === 'child_type_invalid') {\n      const type = index === 0 ? 'title' : 'paragraph'\n      return change.setNodeByKey(context.child.key, type)\n    }\n  }\n}\n```\n\nWould now look like:\n\n```javascript\n{\n  normalize: (change, error) {\n    if (error.code === 'child_type_invalid') {\n      const type = index === 0 ? 'title' : 'paragraph'\n      return change.setNodeByKey(error.child.key, type)\n    }\n  }\n}\n```\n\nThis is just an attempt to make dealing with normalization errors slightly more idiomatic with how errors are represented in most libraries, in order to not reinvent the wheel unnecessarily.\n\n## `0.35` — July 27, 2018\n\n### NEW\n\n**`Range` objects now keep track of paths, in addition to keys.** Previously ranges only stored their points as keys. Now both paths and keys are used, which allows you to choose which one is the most convenient or most performant for your use case. They are kept in sync my Slate under the covers.\n\n**A new set of `*ByPath` change methods have been added.** All of the changes you could previously do with a `*ByKey` change are now also supported with a `*ByPath` change of the same name. The path-based changes are often more performant than the key-based ones.\n\n**Paths are now of type** [**`List`**](https://facebook.github.io/immutable-js/docs/#/List) **instead of array.** See the documentation of [`List`](https://facebook.github.io/immutable-js/docs/#/List) for its differences to array \\(`get` method instead of array indexing, `size` instead of `length`, etc\\).\n\n### BREAKING\n\n**Internal-yet-public `Node` methods have been changed.** There were a handful of internal methods that shouldn't be used in 99% of Slate implementations that updated or removed. This was done in the process of streamlining many of the `Node` methods to make them more consistent and easier to use. For a list of those affected:\n\n- `Node.assertPath` was changed. It was previously confusingly named because the equivalent `Node.getPath` did something completely different. You should now use `Node.assertNode(path)` if you need this behavior.\n- `Node.removeDescendant` was removed. There's no reason you should have been using this, since it was an undocumented and unused method that was left over from a previous version.\n- `Node.updateNode`, `Node.insertNode`, `Node.removeNode`, `Node.splitNode` and `Node.mergeNode` mutating methods were changed. All of your changes should be done with operations, so you likely weren't using these internal methods. They have been changed internally to use paths.\n\n### DEPRECATED\n\n**The `setKeyGenerator` and `resetKeyGenerator` helpers are deprecated.** These were previously used to change the default key generation logic. Now you can use the equivalent `KeyUtils.setGenerator` and `KeyUtils.resetGenerator` helpers instead. This follows the new pattern of grouping related utilities into single namespaces, as is the case with the new `PathUtils` and `TextUtils`.\n\n**Internal-yet-public `Node` methods have been deprecated.** There were a handful of internal methods that shouldn't be used in 99% of Slate implementations that were deprecated. For a list of those affected:\n\n- `Node.getKeys` and `Node.getKeysAsArray` were deprecated. If you really need to check the presence of a key, use the new `Node.getKeysToPathsObject` instead.\n- `Node.areDescendantsSorted` and `Node.isInRange` were deprecated. These were used to check whether a node was in a range, but this can be done more performantly and more easily with paths now.\n- `Node.getNodeAtPath` and `Node.getDescendantAtPath` were deprecated. These were probably not in use by anyone, but if you were using them you can use the existing `Node.getNode` and `Node.getDescendant` methods instead which now take either paths or keys.\n\n## `0.34` — June 14, 2018\n\n### NEW\n\n**Decorations can now be \"atomic\".** If you set a decoration as atomic, it will be removed when changed, preventing it from entering a \"partial\" state, which can be useful for some use cases.\n\n### BREAKING\n\n**Text nodes now represent their content as \"leaves\".** Previously their immutable representation used individual `Character` instance for each character. Now they have changed to group characters into `Leaf` models, which more closely resembles how they are used, and results in a _lot_ fewer immutable object instances floating around. _For most people this shouldn't cause any issues, since this is a low-level aspect of Slate._\n\n### DEPRECATED\n\n**The `Character` model is deprecated.** Although the character concept is still in the repository for now, it is deprecated and will be removed in a future release. Everything it solves can be solved with leaves instead.\n\n## `0.33` — February 21, 2018\n\n### BREAKING\n\n**Void nodes no longer prescribe their text content.** Previously void nodes would automatically normalize their text content to be a single text node containing `' '` an empty string of content. This restriction was removed, so that void nodes can have arbitrary content. You can use this to store information in void nodes in a way that is more consistent with non-void nodes.\n\n### DEPRECATED\n\n**The `setBlock` method has been renamed to `setBlocks`.** This is to make it more clear that it operates on any of the current blocks in the selection, not just a single blocks.\n\n**The `setInline` method has been renamed to `setInlines`.** For the same reason as `setBlocks`, to be clear and stay consistent.\n\n## `0.32` — January 4, 2018\n\n### BREAKING\n\n**The `kind` property of Slate objects has been renamed to `object`.** This is to reduce the confusion over the difference between \"kind\" and \"type\" which are practically synonyms. The \"object\" name was chosen to match the Stripe API, since it seems like a sensible choice and reads much more nicely when looking through JSON.\n\n**All normalization reasons containing `kind` have been renamed too.** Previously there were normalization reason strings like `child_kind_invalid`. These types of strings have been renamed to `child_object_invalid` to stay consistent.\n\n## `0.31` — November 16, 2017\n\n### NEW\n\n**Added a new `Operation` model.** This model is used to store operations for the history stack, and \\(de\\)serializes them in a consistent way for collaborative editing use cases.\n\n### BREAKING\n\n**Operation objects in Slate are now immutable records.** Previously they were native, mutable JavaScript objects. Now, there's a new immutable `Operation` model in Slate, ensuring that all of the data inside `Value` objects are immutable. And it allows for easy serialization of operations using `operation.toJSON()` for when sending them between editors. This should not affect most users, unless you are relying on changing the values of the low-level Slate operations \\(simply reading them is fine\\).\n\n**Operation lists in Slate are now immutable lists.** Previously they were native, mutable JavaScript arrays. Now, to keep consistent with other immutable uses, they are immutable lists. This should not affect most users.\n\n## `0.30` — October 27, 2017\n\n### BREAKING\n\n**Remove all previously deprecated code paths.** This helps to reduce some of the complexity in Slate by not having to handle these code paths anymore. And it helps to reduce file size. When upgrading, it's _highly_ recommended that you upgrade to the previous version first and ensure there are no deprecation warnings being logged, then upgrade to this version.\n\n## `0.29` — October 27, 2017\n\n### NEW\n\n**Added the new `Value` model to replace `State`.** The new model is exactly the same, but with a new name. There is also a shimmed `State` model exported that warns when used, to ease migration.\n\n### BREAKING\n\n**The `set_state` operation has been renamed `set_value`**. This shouldn't affect almost anyone, but in the event that you were relying on the low-level operation types you'll need to update this.\n\n### DEPRECATED\n\n**The \"state\" has been renamed to \"value\" everywhere.** All of the current references are maintained as deprecations, so you should be able to upgrade and see warnings logged instead of being greeted with a broken editor. This is to reduce the confusion between React's \"state\" and Slate's editor value, and in an effort to further mimic the native DOM APIs.\n\n## `0.28` — October 25, 2017\n\n### NEW\n\n**`State` objects now have an embedded `state.schema` property.** This new schema property is used to automatically normalize the state as it changes, according to the editor's current schema. This makes normalization much easier.\n\n### BREAKING\n\n**The `Schema` objects in Slate have changed!** Previously, they used to be where you could define normalization rules, define rendering rules, and define decoration rules. This was overloaded, and made other improvements hard. Now, rendering and decorating is done via the newly added plugin functions \\(`renderNode`, `renderMark`, `decorateNode`\\). And validation is done either via the lower-level `validateNode` plugin function, or via the new `schema` objects.\n\n**The `normalize*` change methods no longer take a `schema` argument.** Previously you had to maintain a reference to your schema, and pass it into the normalize methods when you called them. Since `State` objects now have an embedded `state.schema` property, this is no longer needed.\n\n## `0.27` — October 14, 2017\n\n### BREAKING\n\n**The `Range` model is now called `Leaf`.** This is to disambiguate with the concept of \"ranges\" that is used throughout the codebase to be synonymous to selections. For example in methods like `getBlocksAtRange(selection)`.\n\n**The `text.ranges` property in the JSON representation is now `text.leaves`.** When passing in JSON with `text.ranges` you'll now receive a deprecation warning in the console in development.\n\n### DEPRECATED\n\n**The `Selection` model is now called `Range`.** This is to make it more clear what a \"selection\" really is, to make many of the other methods that act on \"ranges\" make sense, and to more closely parallel the native DOM API for selections and ranges. A mock `Selection` object is still exported with deprecated `static` methods, to make the transition to the new API easier.\n\n**The `Text.getRanges()` method is now `Text.getLeaves()`.** It will still work, and it will return a list of leaves, but you will see a deprecation warning in the console in development.\n\n## `0.26` — October 13, 2017\n\n### BREAKING\n\n**The `decorate` function of schema rules has changed.** Previously, in `decorate` you would receive a text node and the matched node, and you'd need to manually add any marks you wanted to the text node's characters. Now, \"decorations\" have changed to just be `Selection` objects with marks in the `selection.marks` property. Instead of applying the marks yourself, you simply return selection ranges with the marks to be applied, and Slate will apply them internally. This makes it possible to write much more complex decoration behaviors. Check out the revamped [`code-highlighting`](https://github.com/ianstormtaylor/slate/blob/master/examples/code-highlighting/index.js) example and the new [`search-highlighting`](https://github.com/ianstormtaylor/slate/blob/master/examples/search-highlighting/index.js) example to see this in action.\n\n**The `set_data` operation type has been replaced by `set_state`.** With the new `state.decorations` property, it doesn't make sense to have a new operation type for every property of `State` objects. Instead, the new `set_state` operation more closely mimics the existing `set_mark` and `set_node` operations.\n\n### DEPRECATED\n\n### NEW\n\n**You can now set decorations based on external information.** Previously, the \"decoration\" logic in Slate was always based off of the text of a node, and would only re-render when that text changed. Now, there is a new `state.decorations` property that you can set via `change.setState({ decorations })`. You can use this to add presentation-only marks to arbitrary ranges of text in the document. Check out the new [`search-highlighting`](https://github.com/ianstormtaylor/slate/blob/master/examples/search-highlighting/index.js) example to see this in action.\n\n**The `setData` change method has been replaced by `setState`.** Previously you would call `change.setData(data)`. But as new `State` properties are introduced it doesn't make sense to need to add new change methods each time. Instead, the new `change.setState(properties)` more closesely mimics the existing `setMarkByKey` and `setNodeByKey`. To achieve the old behavior, you can do `change.setState({ data })`.\n\n**The `preserveStateData` option of `state.toJSON` has changed.** The same behavior is now called `preserveData` instead. This makes it consistent with all of the existing options, and the new `preserveDecorations` option as well.\n\n## `0.25` — September 21, 2017\n\n### BREAKING\n\n**The `insertBlock` change method no longer replaces empty blocks.** Previously if you used `insertBlock` and the selection was in an empty block, it would replace it. Now you'll need to perform that check yourself and use the new `replaceNodeByKey` method instead.\n\n**The `Block.create` and `Inline.create` methods no longer normalize.** Previously if you used one of them to create a block or inline with zero nodes in it, they would automatically add a single empty text node as the only child. This was unexpected in certain situations, and if you were relying on this you'll need to handle it manually instead now.\n\n## `0.24` — September 11, 2017\n\n### NEW\n\n**Slate is now a \"monorepo\".** Instead of a single package, Slate has been divided up into individual packages so that you can only require what you need, cutting down on file size. In the process, some helpful modules that used to be internal-only are now exposed.\n\n**There's a new `slate-hyperscript` helper.** This was possible thanks to the work on [`slate-sugar`](https://github.com/GitbookIO/slate-sugar), which paved the way.\n\n**The `slate-prop-types` package is now exposed.** Previously this was an internal module, but now you can use it for adding prop types to any components or plugins you create.\n\n**The `slate-simulator` package is now exposed.** Previously this was an internal testing utility, but now you can use it in your own tests as well. It's currently pretty bare bones, but we can add to it over time.\n\n### BREAKING\n\n**`immutable` is now a** _**peer**_ **dependency of Slate.** Previously it was a regular dependency, but this prevented you from bringing your own version, or you'd have duplication. You'll need to ensure you install it!\n\n**The `Html`, `Plain` and `Raw` serializers are broken into new packages.** Previously you'd import them from `slate`. But now you'll import them from `slate-html-serializer` and `slate-plain-serializer`. And the `Raw` serializer that was deprecated is now removed.\n\n**The `Editor` and `Placeholder` components are broken into a new React-specific package.** Previously you'd import them from `slate`. But now you `import { Editor } from 'slate-react'` instead.\n\n## `0.23` — September 10, 2017\n\n### NEW\n\n**Slate models now have `Model.fromJSON(object)` and `model.toJSON()` methods.** These methods operate with the canonical JSON form \\(which used to be called \"raw\"\\). This way you don't need to `import` a serializer to retrieve JSON, if you have the model you can serialize/deserialize.\n\n**Models also have `toJS` and `fromJS` aliases.** This is just to match Immutable.js objects, which have both methods. For Slate though, the methods are equivalent.\n\n### BREAKING\n\n**The `isNative` property of `State` has been removed.** Previously this was used for performance reasons to avoid re-rendering, but it is no longer needed. This shouldn't really affect most people because it's rare that you'd be relying on this property to exist.\n\n### DEPRECATED\n\n**The `Raw` serializer is now deprecated.** The entire \"raw\" concept is being removed, in favor of allowing all models to be able to serialize and deserialize to JSON themselves. Instead of using the `Raw` serializer, you can now use the `fromJSON` and `toJSON` on the models directly.\n\n**The `toRaw` options for the `Plain` and `Html` serializers are now called `toJSON`.** This is to stay symmetrical with the removal of the \"raw\" concept everywhere.\n\n**The `terse` option for JSON serialization has been deprecated!** This option causes lots of abstraction leakiness because it means there is no one canonical JSON representation of objects. You had to work with either terse or not terse data.\n\n**The `Html` serializer no longer uses the `terse` representation.** This shouldn't actually be an issue for anyone because the main manifestation of this has a deprecation notice with a patch in place for now.\n\n**The `defaultBlockType` of the `Html` serializer is now called `defaultBlock`.** This is just to make it more clear that it supports not only setting the default `type` but also `data` and `isVoid`.\n\n## `0.22` — September 5, 2017\n\n### NEW\n\n**The `state.activeMarks` returns the intersection of marks in the selection.** Previously there was only `state.marks` which returns marks that appeared on _any_ character in the selection. But `state.activeMarks` returns marks that appear on _every_ character in the selection, which is often more useful for implementing standard richtext editor behaviors.\n\n### BREAKING\n\n**The `Plain` serializer now adds line breaks between blocks.** Previously between blocks the text would be joined without any space whatsoever, but this wasn't really that useful or what you'd expect.\n\n**The `toggleMark` transform now checks the intersection of marks.** Previously, toggling would remove the mark from the range if any of the characters in a range didn't have it. However, this wasn't what all other richtext editors did, so the behavior has changed to mimic the standard behavior. Now, if any characters in the selection have the mark applied, it will first be added when toggling.\n\n**The `.length` property of nodes has been removed.** This property caused issues with code like in Lodash that checked for \"array-likeness\" by simply looking for a `.length` property that was a number.\n\n**`onChange` now receives a `Change` object \\(previously named `Transform`\\) instead of a `State`.** This is needed because it enforces that all changes are represented by a single set of operations. Otherwise right now it's possible to do things like `state.transform()....apply({ save: false }).transform()....apply()` and result in losing the operation information in the history. With OT, we need all transforms that may happen to be exposed and emitted by the editor. The new syntax looks like:\n\n```javascript\nonChange(change) {\n  this.setState({ state: change.state })\n}\n\nonChange({ state }) {\n  this.setState({ state })\n}\n```\n\n**Similarly, handlers now receive `e, data, change` instead of `e, data, state`.** Instead of doing `return state.transform()....apply()` the plugins can now act on the change object directly. Plugins can still `return change...` if they want to break the stack from continuing on to other plugins. \\(Any `!= null` value will break out.\\) But they can also now not return anything, and the stack will apply their changes and continue onwards. This was previously impossible. The new syntax looks like:\n\n```javascript\nfunction onKeyDown(e, data, change) {\n  if (data.key == 'enter') {\n    return change.splitBlock()\n  }\n}\n```\n\n**The `onChange` and `on[Before]Change` handlers now receive `Change` objects.** Previously they would also receive a `state` object, but now they receive `change` objects like the rest of the plugin API.\n\n**The `.apply({ save })` option is now `state.change({ save })` instead.** This is the easiest way to use it, but requires that you know whether to save or not up front. If you want to use it inline after already saving some changes, you can use the `change.setOperationFlag('save', true)` flag instead. This shouldn't be necessary for 99% of use cases though.\n\n**The `.undo()` and `.redo()` transforms don't save by default.** Previously you had to specifically tell these transforms not to save into the history, which was awkward. Now they won't save the operations they're undoing/redoing by default.\n\n**`onBeforeChange` is no longer called from `componentWillReceiveProps`,** when a new `state` is passed in as props to the `<Editor>` component. This caused lots of state-management issues and was weird in the first place because passing in props would result in changes firing. **It is now the parent component's responsibility to not pass in improperly formatted `State` objects**.\n\n**The `splitNodeByKey` change method has changed to be shallow.** Previously, it would deeply split to an offset. But now it is shallow and another `splitDescendantsByKey` change method has been added \\(with a different signature\\) for the deep splitting behavior. This is needed because splitting and joining operations have been changed to all be shallow, which is required so that operational transforms can be written against them.\n\n**Blocks cannot have mixed \"inline\" and \"block\" children anymore.** Blocks were implicitly expected to either contain \"text\" and \"inline\" nodes only, or to contain \"block\" nodes only. Invalid case are now normalized by the core schema.\n\n**The shape of many operations has changed.** This was needed to make operations completely invertible without any extra context. The operations were never really exposed in a consumable way, so I won't detail all of the changes here, but feel free to look at the source to see the details.\n\n**All references to \"joining\" nodes is now called \"merging\".** This is to be slightly clearer, since merging can only happen with adjacent nodes already, and to have a nicer parallel with \"splitting\", as in cells. The operation is now called `merge_node`, and the transforms are now `merge*`.\n\n### DEPRECATED\n\n**The `transform.apply()` method is deprecated.** Previously this is where the saving into the history would happen, but it created an awkward convention that wasn't necessary. Now operations are saved into the history as they are created with change methods, instead of waiting until the end. You can access the new `State` of a change at any time via `change.state`.\n\n## `0.21` — July 20, 2017\n\n### BREAKING\n\n**The `Html` serializer now uses `DOMParser` instead of `cheerio`.** Previously, the `Html` serializer used the `cheerio` library for representing elements in the serialization rule logic, but cheerio was a very large dependency. It has been removed, and the native browser `DOMParser` is now used instead. All HTML serialization rules will need to be updated. If you are working with Slate on the server, you can now pass in a custom serializer to the `Html` constructor, using the `parse5` library.\n\n## `0.20` — May 17, 2017\n\n### BREAKING\n\n**Returning `null` from the `Html` serializer skips the element.** Previously, `null` and `undefined` had the same behavior of skipping the rule and trying the rest of the rules. Now if you explicitly return `null` it will skip the element itself.\n\n## `0.19` — March 3, 2017\n\n### BREAKING\n\n**The `filterDescendants` and `findDescendants` methods are now depth-first.** This shouldn't affect almost anyone, since they are usually not the best things to be using for performance reasons. If you happen to have a very specific use case that needs breadth-first, \\(or even likely something better\\), you'll need to implement it yourself.\n\n### DEPRECATED\n\n**Some `Node` methods have been deprecated!** There were a few methods that had been added over time that were either poorly named that have been deprecated and renamed, and a handful of methods that are no longer useful for the core library that have been deprecated. Here's a full list:\n\n- `areDescendantSorted` -&gt; `areDescendantsSorted`\n- `getHighestChild` -&gt; `getFurthestAncestor`\n- `getHighestOnlyChildParent` -&gt; `getFurthestOnlyChildAncestor`\n- `concatChildren`\n- `decorateTexts`\n- `filterDescendantsDeep`\n- `findDescendantDeep`\n- `getChildrenBetween`\n- `getChildrenBetweenIncluding`\n- `isInlineSplitAtRange`\n\n## `0.18` — March 2, 2017\n\n### BREAKING\n\n**The `plugin.render` property is now called `plugin.renderPortal`.** This is to make way for the new `plugin.render` property that offers HOC-like behavior, so that plugins can augment the editor however they choose.\n\n## `0.17` — February 27, 2017\n\n### DEPRECATED\n\n**Some `Selection` methods have been deprecated!** Previously there were many inconsistencies in the naming and handling of selection changes. This has all been cleaned up, but in the process some methods have been deprecated. Here is a full list of the deprecated methods and their new alternatives:\n\n- `moveToOffsets` -&gt; `moveOffsetsTo`\n- `moveForward` -&gt; `move`\n- `moveBackward` -&gt; `move`\n- `moveAnchorOffset` -&gt; `moveAnchor`\n- `moveFocusOffset` -&gt; `moveFocus`\n- `moveStartOffset` -&gt; `moveStart`\n- `moveEndOffset` -&gt; `moveEnd`\n- `extendForward` -&gt; `extend`\n- `extendBackward` -&gt; `extend`\n- `unset` -&gt; `deselect`\n\n**Some selection transforms have been deprecated!** Along with the methods, the selection-based transforms have also been refactored, resulting in deprecations. Here is a full list of the deprecated transforms and their new alternatives:\n\n- `moveTo` -&gt; `select`\n- `moveToOffsets` -&gt; `moveOffsetsTo`\n- `moveForward` -&gt; `move`\n- `moveBackward` -&gt; `move`\n- `moveStartOffset` -&gt; `moveStart`\n- `moveEndOffset` -&gt; `moveEnd`\n- `extendForward` -&gt; `extend`\n- `extendBackward` -&gt; `extend`\n- `flipSelection` -&gt; `flip`\n- `unsetSelection` -&gt; `deselect`\n- `unsetMarks`\n\n## `0.16` — December 2, 2016\n\n### BREAKING\n\n**Inline nodes are now always surrounded by text nodes.** Previously this behavior only occured for inline nodes with `isVoid: true`. Now, all inline nodes will always be surrounded by text nodes. If text nodes don't exist, empty ones will be created. This allows for more consistent behavior across Slate, and parity with other editing experiences.\n\n## `0.15` — November 17, 2016\n\n### BREAKING\n\n**The unique `key` generated values have changed.** Previously, Slate generated unique keys that looked like `'9dk3'`. But they were not very conflict-resistant. Now the keys are simple string of auto-incrementing numbers, like `'0'`, `'1'`, `'2'`. This makes more clear that keys are simply a convenient way to uniquely reference nodes in the **short-term** lifespan of a single in-memory instance of Slate. They are not designed to be used for long-term uniqueness. A new `setKeyGenerator` function has been exported that allows you to pass in your own key generating mechanism if you want to ensure uniqueness.\n\n**The `Raw` serializer doesn't preserve keys by default.** Previously, the `Raw` serializer would omit keys when passed the `terse: true` option, but preserve them without it. Now it will always omit keys, unless you pass the new `preserveKeys: true` option. This better reflects that keys are temporary, in-memory IDs.\n\n**Operations on the document now update the selection when needed.** This won't affect you unless you were doing some very specific things with transforms and updating selections. Overall, this makes it much easier to write transforms, since in most cases, the underlying operations will update the selection as you would expect without you doing anything.\n\n### DEPRECATED\n\n**Node accessor methods no longer accept being passed another node!** Previously, node accessor methods like `node.getParent` could be passed either a `key` string or a `node` object. For performance reasons, passing in a `node` object is being deprecated. So if you have any calls that look like: `node.getParent(descendant)`, they will now need to be written as `node.getParent(descendant.key)`. They will throw a warning for now, and will throw an error in a later version of Slate.\n\n## `0.14` — September 10, 2016\n\n### BREAKING\n\n**The `undo` and `redo` transforms need to be applied!** Previously, `undo` and `redo` were special cased such that they did not require an `.apply()` call, and instead would return a new `State` directly. Now this is no longer the case, and they are just like every other transform.\n\n**Transforms are no longer exposed on `State` or `Node`.** The transforms API has been completely refactored to be built up of \"operations\" for collaborative editing support. As part of this refactor, the transforms are now only available via the `state.transform()` API, and aren't exposed on the `State` or `Node` objects as they were before.\n\n**`Transform` objects are now mutable.** Previously `Transform` was an Immutable.js `Record`, but now it is a simple constructor. This is because transforms are inherently mutating their representation of a state, but this decision is [up for discussion](https://github.com/ianstormtaylor/slate/issues/328).\n\n**The selection can now be \"unset\".** Previously, a selection could never be in an \"unset\" state where the `anchorKey` or `focusKey` was null. This is no longer technically true, although this shouldn't really affect anyone in practice.\n\n## `0.13` — August 15, 2016\n\n### BREAKING\n\n**The `renderNode` and `renderMark` properties are gone!** Previously, rendering nodes and marks happened via these two properties of the `<Editor>`, but this has been replaced by the new `schema` property. Check out the updated examples to see how to define a schema! There's a good chance this eliminates extra code for most use cases! :smile:\n\n**The `renderDecorations` property is gone!** Decoration rendering has also been replaced by the new `schema` property of the `<Editor>`.\n\n## `0.12` — August 9, 2016\n\n### BREAKING\n\n**The `data.files` property is now an `Array`.** Previously it was a native `FileList` object, but needed to be changed to add full support for pasting an dropping files in all browsers. This shouldn't affect you unless you were specifically depending on it being array-like instead of a true `Array`.\n\n## `0.11` — August 4, 2016\n\n### BREAKING\n\n**Void nodes are renderered implicitly again!** Previously Slate had required that you wrap void node renderers yourself with the exposed `<Void>` wrapping component. This was to allow for selection styling, but a change was made to make selection styling able to handled in JavaScript. Now the `<Void>` wrapper will be implicitly rendered by Slate, so you do not need to worry about it, and \"voidness\" only needs to toggled in one place, the `isVoid: true` property of a node.\n\n## `0.10` — July 29, 2016\n\n### BREAKING\n\n**Marks are now renderable as components.** Previously the only supported way to render marks was by returning a `style` object. Now you can return a style object, a class name string, or a full React component. Because of this, the DOM will be renderered slightly differently than before, resulting in an extra `<span>` when rendering non-component marks. This won't affect you unless you were depending on the DOM output by Slate for some reason.\n\n## `0.9` — July 28, 2016\n\n### BREAKING\n\n**The `wrap` and `unwrap` method signatures have changed!** Previously, you would pass `type` and `data` as separate parameters, for example: `wrapBlock('code', { src: true })`. This was inconsistent with other transforms, and has been updated such that a single argument of `properties` is passed instead. So that example could now be: `wrapBlock({ type: 'code', { data: { src: true }})`. You can still pass a `type` string as shorthand, which will be the most frequent use case, for example: `wrapBlock('code')`.\n\n## `0.8` — July 27, 2016\n\n### BREAKING\n\n**The `onKeyDown` and `onBeforeInput` handlers signatures have changed!** Previously, some Slate handlers had a signature of `(e, state, editor)` and others had a signature of `(e, data, state, editor)`. Now all handlers will be passed a `data` object—which contains Slate-specific data related to the event—even if it is empty. This is helpful for future compatibility where we might need to add data to a handler that previously didn't have any, and is nicer for consistency. The `onKeyDown` handler's new `data` object contains the `key` name, `code` and a series of `is*` properties to make working with hotkeys easier. The `onBeforeInput` handler's new `data` object is empty.\n\n**The `Utils` export has been removed.** Previously, a `Key` utility and the `findDOMNode` utility were exposed under the `Utils` object. The `Key` has been removed in favor of the `data` object passed to `onKeyDown`. And then `findDOMNode` utility has been upgraded to a top-level named export, so you'll now need to access it via `import { findDOMNode } from 'slate'`.\n\n**Void nodes now permanently have `\" \"` as content.** Previously, they contained an empty string, but this isn't technically correct, since they have content and shouldn't be considered \"empty\". Now they will have a single space of content. This shouldn't really affect anyone, unless you happened to be accessing that string for serialization.\n\n**Empty inline nodes are now impossible.** This is to stay consistent with native `contenteditable` behavior, where although technically the elements can exist, they have odd behavior and can never be selected.\n\n## `0.7` — July 24, 2016\n\n### BREAKING\n\n**The `Raw` serializer is no longer terse by default!** Previously, the `Raw` serializer would return a \"terse\" representation of the document, omitting information that wasn't _strictly_ necessary to deserialize later, like the `key` of nodes. By default this no longer happens. You have to opt-in to the behavior by passing `{ terse: true }` as the second `options` argument of the `deserialize` and `serialize` methods.\n\n## `0.6` — July 22, 2016\n\n### BREAKING\n\n**Void components are no longer rendered implicity!** Previously, Slate would automatically wrap any node with `isVoid: true` in a `<Void>` component. But doing this prevented you from customizing the wrapper, like adding a `className` or `style` property. So you **must now render the wrapper yourself**, and it has been exported as `Slate.Void`. This, combined with a small change to the `<Void>` component's structure allows the \"selected\" state of void nodes to be rendered purely with CSS based on the `:focus` property of a `<Void>` element, which previously [had to be handled in JavaScript](https://github.com/ianstormtaylor/slate/commit/31782cb11a272466b6b9f1e4d6cc0c698504d97f). This allows us to streamline selection-handling logic, improving performance and reducing complexity.\n\n**`data-offset-key` is now `<key>-<index>` instead of `<key>:<start>-<end>`.** This shouldn't actually affect anyone, unless you were specifically relying on that attribute in the DOM. This change greatly reduces the number of re-renders needed, since previously any additional characters would cause a cascading change in the `<start>` and `<end>` offsets of latter text ranges.\n\n## `0.5` — July 20, 2016\n\n### BREAKING\n\n**`node.getTextNodes()` is now `node.getTexts()`.** This is just for consistency with the other existing `Node` methods like `getBlocks()`, `getInlines()`, etc. And it's nicely shorter. :wink:\n\n**`Node` methods now `throw` earlier during unexpected states.** This shouldn't break anything for most folks, unless a strange edge-case was going undetected previously.\n\n## `0.4` — July 20, 2016\n\n### BREAKING\n\n**`renderMark(mark, state, editor)` is now `renderMark(mark, marks, state, editor)`.** This change allows you to render marks based on multiple `marks` presence at once on a given range of text, for example using a custom `BoldItalic.otf` font when text has both `bold` and `italic` marks.\n\n## `0.3` — July 20, 2016\n\n### BREAKING\n\n**`transform.unwrapBlock()` now unwraps selectively.** Previously, calling `unwrapBlock` with a range representing a middle sibling would unwrap _all_ of the siblings, removing the wrapping block entirely. Now, calling it with those same arguments will only move the middle sibling up a layer in the hierarchy, preserving the nesting on any of its siblings. This changes makes it much simpler to implement functionality like unwrapping a single list item, which previously would unwrap the entire list.\n\n## `0.2` — July 18, 2016\n\n### BREAKING\n\n**`transform.mark()` is now `transform.addMark()` and `transform.unmark()` is now `transform.removeMark()`.** The new names make it clearer that the transforms are actions being performed, and it paves the way for adding a `toggleMark` convenience as well.\n\n## `0.1` — July 13, 2016\n\n:tada:\n"
  },
  {
    "path": "docs/general/contributing.md",
    "content": "# Contributing\n\nWant to contribute to Slate? That would be awesome!\n\n- [Contributing](contributing.md#contributing)\n  - [Reporting Bugs](contributing.md#reporting-bugs)\n  - [Asking Questions](contributing.md#asking-questions)\n  - [Submitting Pull Requests](contributing.md#submitting-pull-requests)\n  - [Repository Setup](contributing.md#repository-setup)\n  - [Running Examples](contributing.md#running-examples)\n  - [Running Tests](contributing.md#running-tests)\n  - [Testing Input Methods](contributing.md#testing-input-methods)\n  - [Publishing Releases](contributing.md#publishing-releases)\n    - [Publishing Normal `@latest` Release](contributing.md#publishing-normal-latest-release)\n    - [Publishing `@next` Release](contributing.md#publishing-next-release)\n    - [Publishing `@experimental` Release](contributing.md#publishing-experimental-release)\n    - [Running Prerelease Script](contributing.md#running-prerelease-script)\n\n## Reporting Bugs\n\nIf you run into any weird behavior while using Slate, feel free to open a new issue in this repository! Please run a **search before opening** a new issue, to make sure that someone else hasn't already reported or solved the bug you've found.\n\nAny issue you open must include:\n\n- A [JSFiddle](https://jsfiddle.net/01pLxfzu/) that reproduces the bug with a minimal setup.\n- A GIF showing the issue in action. \\(Using something like [RecordIt](http://recordit.co/).\\)\n- A clear explanation of what the issue is.\n\nHere's a [JSFiddle template for Slate](https://jsfiddle.net/01pLxfzu/) to get you started:\n\n[![](../.gitbook/assets/jsfiddle.png)](https://jsfiddle.net/01pLxfzu/)\n\n## Asking Questions\n\n**ℹ️ If you're looking for help with the [Slate CRM platform](https://slate.org/), that's an unrelated project to us.**\n\nWe've also got a [Slate Slack team](https://join.slack.com/t/slate-js/shared_invite/zt-f8t986ip-7dA1DyiqPpzootz1snKXkw) where you can ask questions and get answers from other people using Slate:\n\n[![](../.gitbook/assets/slack.png)](https://join.slack.com/t/slate-js/shared_invite/zt-f8t986ip-7dA1DyiqPpzootz1snKXkw)\n\nPlease use the Slack instead of asking questions in issues, since we want to reserve issues for keeping track of bugs and features. We close questions in issues so that maintaining the project isn't overwhelming.\n\n## Submitting Pull Requests\n\nAll pull requests are super welcomed and greatly appreciated! Issues in need of a solution are marked with a [`♥ help`](https://github.com/ianstormtaylor/slate/issues?q=is%3Aissue+is%3Aopen+label%3A%22%E2%99%A5+help%22) label if you're looking for somewhere to start.\n\nPlease include tests and docs with every pull request!\n\n## Repository Setup\n\nThe Slate repository is a monorepo that is managed with [lerna](https://github.com/lerna/lerna). Unlike more traditional repositories, this means that the repository must be built in order for tests, linting, or other common development activities to function as expected.\n\nTo run the build, you need to have the Slate repository cloned to your computer. After that, you need to `cd` into the directory where you cloned it, and install the dependencies with `yarn` and build the monorepo:\n\n```text\nyarn install\nyarn build\n```\n\n## Running Examples\n\nTo run the examples, start by building the monorepo as described in the [Repository Setup](contributing.md#repository-setup) section.\n\nThen you can start the examples server with:\n\n```text\nyarn start\n```\n\n## Running Tests\n\nTo run the tests, start by building the monorepo as described in the [Repository Setup](contributing.md#repository-setup) section.\n\nThen you can rerun the tests with:\n\n```text\nyarn test\n```\n\nIf you need to debug something, you can add a `debugger` line to the source, and then run `yarn test:inspect`.\n\nIf you only want to run a specific test or tests, you can run `yarn run test:mocha --fgrep=\"slate-react rendering\"` flag which will filter the tests being run by grepping for the string in each test. \\(This is a Mocha flag that gets passed through.\\)\n\nIn addition to tests you should also run the linter:\n\n```text\nyarn lint\n```\n\nThis will catch TypeScript, Prettier, and Eslint errors.\n\n```text\nyarn fix\n```\n\nThis will fix Prettier and Eslint errors.\n\n## Running integration tests\n\nTo run integrations with [Playwright](https://playwright.dev/), first run `yarn start` to run the examples website, then run `yarn playwright` in a separate session to open the Playwright test suite. Or alternatively, run just `yarn test:integration-local`.\n\n### Running integration tests in Docker\n\nIf tests fail on CI but pass locally (often due to OS differences), you can run tests in a Docker container that replicates the same environment as CI.\n\n**Prerequisites:** The project must be built first (same as running tests locally).\n\n```text\nyarn test:integration-docker\n```\n\nThe script will automatically:\n\n1. Start the development server (if not already running)\n2. Run tests inside a Docker container\n3. Stop the server when tests complete\n\nYou can also pass additional arguments to the test runner. For example, to run a specific test file:\n\n```text\nyarn test:integration-docker playwright/integration/slate-react/selection.test.ts\n```\n\nOr run a specific browser project:\n\n```text\nyarn test:integration-docker --project=chromium\n```\n\nYou can combine arguments as well:\n\n```text\nyarn test:integration-docker playwright/integration/examples/check-lists.test.ts --project chromium\n```\n\n## Testing Input Methods\n\n[Here's a helpful page](https://github.com/Microsoft/vscode/wiki/IME-Test) detailing how to test various input scenarios on Windows, Mac and Linux.\n\n## Android tests\n\nWhen making changes that might affect Android compatibility, you can perform the manual Android tests at [/examples/android-tests](https://slatejs.org/examples/android-tests).\n\n## Publishing Releases\n\n**Important**: When creating releases using Lerna with the instructions below, you will be given choices around how to increase version numbers. You should always use a `major`, `minor` or `patch` release and must never use a `prerelease`. If a prerelease is used, the root package will not link to the packages in the `packages` directory creating hard to diagnose issues.\n\n### Publishing Normal `@latest` Release\n\nSince we use [Lerna](https://lerna.js.org) to manage the Slate packages this is fairly easy, just run:\n\n```text\nyarn release:latest\n```\n\nAnd follow the prompts Lerna gives you.\n\nNote that this will automatically run the prelease script first that will build, test and lint before attempting to publish.\n\n### Publishing `@next` Release\n\nIf we are unsure as to the stability of a release because there are significant changes and/or particularly complex changes, release with the `@next` tag.\n\n```text\nyarn release:next\n```\n\nAnd follow the prompts Lerna gives you.\n\n### Publishing `@experimental` Release\n\nIf you need to create an experimental release to see how a published package will behave during an actual publish, release with the `@experimental` tag. End users should have no expectation that an `@experimental` release will be usable.\n\n```text\nyarn release:experimental\n```\n\n### Running Prerelease Script\n\nIf we want to make sure that Slate code follows the preparations for a release but without actually publishing, run:\n\n```text\nyarn prerelease\n```\n\nWhich will build, test and lint Slate code.\n"
  },
  {
    "path": "docs/general/faq.md",
    "content": "# FAQ\n\nA series of common questions people have about Slate:\n\n- [Why is content pasted as plain text?](faq.md#why-is-content-is-pasted-as-plaintext)\n- [What browsers and devices does Slate support?](faq.md#what-browsers-and-devices-does-slate-support)\n\n## Why is content pasted as plain text?\n\nOne of Slate's core principles is that, unlike most other editors, it does **not** prescribe a specific \"schema\" to the content you are editing. This means that Slate's core has no concept of \"block quotes\" or \"bold formatting\".\n\nFor the most part, this leads to increased flexibility without many downsides, but there are certain cases where you have to do a bit more work. Pasting is one of those cases.\n\nSince Slate knows nothing about your domain, it can't know how to parse pasted HTML content \\(or other content\\). So, by default whenever a user pastes content into a Slate editor, it will parse it as plain text. If you want it to be smarter about pasted content, you need to override the `insert_data` command and deserialize the `DataTransfer` object's `text/html` data as you wish.\n\n## What browsers and devices does Slate support?\n\nSlate's goal is to support all the modern browsers on both desktop and mobile devices.\n\nSlate is in beta and is community-driven and so its support is not as robust as it could be.\n\nOn the desktop, it's currently tested against the latest few versions of Chrome, Edge, Firefox and Safari on desktops. And it does not work in Internet Explorer.\n\nOn mobile, iOS devices are supported but not regularly tested. Chrome on Android was until recently unsupported except for in older versions of Slate (0.47) but has recently been added. For clarity, due to the differences in Android's support of the `beforeInput` event, Android input uses compositions and mutations which is different from other browsers. This means that Android support progresses separately from other browsers and due to it being new, may have more bugs.\n\nIf you want to add or improve browser or device support, we'd love for you to submit a pull request! Or in the case of incompatible browsers, build a plugin.\n\nFor older browsers, such as IE11, a lot of the now standard native APIs aren't available. Slate's position on this is that it is up to the user to bring polyfills \\(like [https://polyfill-fastly.io/](https://polyfill-fastly.io/)\\) when needed for things like `el.closest`, etc. Otherwise we'd have to bundle and maintain lots of polyfills that others may not even need in the first place. For clarity, Slate makes no guarantees that it will work with older browsers, even with polyfills and at present, there are still unresolved issues with IE11.\n"
  },
  {
    "path": "docs/general/resources.md",
    "content": "# Resources\n\nA few resources that are helpful for building with Slate.\n\n## Libraries\n\nThese libraries are helpful when developing with Slate:\n\n- [`is-hotkey`](https://github.com/ianstormtaylor/is-hotkey) is a simple way to check whether an `onKeyDown` handler\n  should fire for a given hotkey, handling cross-platform concerns like cmd vs. ctrl keys for you automatically.\n\n## Extensions and Plugins\n\nThese extensions and plugins add additional features and capabilities to Slate:\n\n- [@liveblocks/yjs](https://liveblocks.io/docs/api-reference/liveblocks-yjs) A fully-hosted WebSocket infrastructure and\n  persisted data store for Yjs documents\n- [Plate](https://github.com/udecode/plate) Rich text editor plugin system for Slate & React\n- [`slate-angular`](https://github.com/worktile/slate-angular) Angular-based view layer, which is a useful supplement to\n  Slate for building a rich text editor using Angular.\n- [`slate-yjs`](https://github.com/BitPhinix/slate-yjs/) Collaborative editing utilities for Slate leveraging Yjs\n- [`slate-collaborative`](https://github.com/cudr/slate-collaborative) Collaborative editing utilities for Slate\n  leveraging Automerge\n- [`slate-vue3`](https://github.com/Guan-Erjia/slate-vue3) Which is a useful supplement to Slate for building a rich text editor using Vue3, integrated all functions in an npm package\n\n## Products\n\nThese products use Slate, and can give you an idea of what's possible:\n\n- [Aline](https://www.aline.co/): Digital contracting for the modern enterprise\n- [Archbee](https://archbee.io/): Build better product docs with your team\n- [Campfire](https://www.campfirewriting.com/): The most versatile writing software [for fiction]\n- [Chatterbug](https://chatterbug.com/): Learn languages from real people\n- [CoCalc](https://cocalc.com/): Collaborative calculation and data science\n- [Coda](https://coda.io/): Coda brings all your words, data, and teamwork into one powerful doc\n- [Decap CMS](https://decapcms.org/): Open source content management for your Git workflow\n- [Dropdeck](https://www.dropdeck.com/): Magically create beautiful slides — faster than ever\n- [Easy Email Pro](https://www.easyemail.pro/): A powerful, highly customizable email editor\n- [Eraser](https://www.tryeraser.com/): The Whiteboard for Engineering Teams\n- [GitBook](https://www.gitbook.com/): Plan, centralize and share knowledge\n- [Discord](https://discord.com/): Text & voice channels to collaborate & share\n- [Grafana](https://grafana.com/): Operational dashboards for your data\n- [Guilded](https://www.guilded.gg/): Better chat, happier communities\n- [Guru](https://www.getguru.com/): Organize company information. Access it anywhere. [wiki]\n- [Hygraph](https://hygraph.com/): The federated content platform\n- [Hot Page](https://hot.page/): A graphical website builder for writing HTML and CSS from scratch\n- [Kitemaker](https://kitemaker.co/): Product development tool built to manage the work, not the workers\n- [Living Spec](https://livingspec.com/): A modern way for product teams to work\n- [Notestamp](https://notestamp.com): A note-taking web app that synchronizes your notes to audio, video and pdfs.\n- [Notes Together](https://notestogether.hominidsoftware.com/): Get mundane details out of your head\n- [Prezly](https://www.prezly.com/): Turn your audience into fans\n- [Quill Forms](https://demo.quillforms.com/): Open Source Typeform Alternative WordPress Plugin\n- [Sana](https://www.sanalabs.com): Reimagining learning with AI [LMS]\n- [Sanity.io](https://www.sanity.io/): Platform for structured content [data driven content]\n- [Slite](https://slite.com/): Where remote teams make decisions and share knowledge\n- [Static CMS](https://www.staticcms.org/): Git-based CMS for Static Site Generators\n- [Taskade](https://www.taskade.com/): Get work done in one unified workspace\n- [TRPG Engine](https://trpg.moonrailgun.com/)\n- [Thoughts](https://thoughts.teambition.com/)\n\n## Editors\n\nThese pre-packaged editors are built on top of Slate, and can be helpful to see how you might structure your code:\n\n- [Accord Project Markdown Editor](https://github.com/accordproject/web-components) is a WYSIWYG editor\n  for [CommonMark](https://commonmark.org/).\n- [Canner Editor](https://github.com/Canner/canner-slate-editor) is a rich text editor.\n- [Chatterslate](https://github.com/chatterbugapp/chatterslate) helps teach language grammar and more\n  at [Chatterbug](https://chatterbug.com).\n- [CoCalc](https://github.com/sagemathinc/cocalc/) Collaborative Calculation editor in the Cloud\n- [French Press Editor](https://github.com/roast-cms/french-press-editor) is a customizeable editor with offline\n  support.\n- [Nossas Editor](http://slate-editor.bonde.org/) is a drop-in WYSIWYG editor.\n- [Notestamp](https://github.com/fortyoneplustwo/notestamp-editor-react): Synchronize your text entries to media using this rich text editor that inserts clickable stamps alongside text.\n- [React Force Slate Editor](https://github.com/nareshbhatia/react-force/tree/master/packages/slate-editor) is a\n  light-weight medium-style editor with no editor chrome.\n- [React Page](https://github.com/react-page/react-page) is a self-contained, customizable inline WYSIWYG editor\n  library.\n- [Plate (Plugins for Slate)](https://github.com/udecode/plate) provides an editor with configurable and\n  extendable plugins.\n- [Tripdocs](https://github.com/ctripcorp/tripdocs): It's a modern, production-ready rich text editor.\n\n\\(Or, if you have their exact use case, can be a drop-in editor for you.\\)\n"
  },
  {
    "path": "docs/libraries/slate-history/README.md",
    "content": "# Slate History\n\nThis sub-library tracks changes to the Slate value state over time, and enables undo and redo functionality.\n\n- [withHistory](./with-history.md)\n- [HistoryEditor](./history-editor.md)\n- [History](./history.md)\n"
  },
  {
    "path": "docs/libraries/slate-history/history-editor.md",
    "content": "# History Editor\n\nThe `HistoryEditor` interface is added to the `Editor` when it is instantiated using the `withHistory` method.\n\n```typescript\nconst [editor] = useState(() => withReact(withHistory(createEditor())))\n```\n\nThis adds properties to `editor` that enables undo and redo in Slate.\n\nThere are also static methods for working with the Editor's undo/redo history.\n\n```typescript\nexport interface HistoryEditor extends BaseEditor {\n  history: History\n  undo: () => void\n  redo: () => void\n  writeHistory: (stack: 'undos' | 'redos', batch: any) => void\n}\n```\n\n- [Static methods](history-editor.md#static-methods)\n  - [Undo and Redo](history-editor.md#undo-and-redo)\n  - [Merging and Saving](history-editor.md#merging-and-saving)\n  - [Check methods](history-editor.md#check-methods)\n- [Instance methods](history-editor.md#instance-methods)\n\n## Static methods\n\n### Undo and Redo\n\n#### `HistoryEditor.redo(editor: HistoryEditor): void`\n\nRedo to the next saved state.\n\n#### `HistoryEditor.undo(editor: HistoryEditor): void`\n\nUndo to the previous saved state.\n\n### Merging and Saving\n\n#### `HistoryEditor.withMerging(editor: HistoryEditor, fn: () => void): void`\n\nApply a series of changes inside a synchronous `fn`, These operations will\nbe merged into the previous history.\n\n#### `HistoryEditor.withNewBatch(editor: HistoryEditor, fn: () => void): void`\n\nApply a series of changes inside a synchronous `fn`, ensuring that the first\noperation starts a new batch in the history. Subsequent operations will be\nmerged as usual.\n\n#### `HistoryEditor.withoutMerging(editor: HistoryEditor, fn: () => void): void`\n\nApply a series of changes inside a synchronous `fn`, without merging any of\nthe new operations into previous save point in the history.\n\n#### `HistoryEditor.withoutSaving(editor: HistoryEditor, fn: () => void): void`\n\nApply a series of changes inside a synchronous `fn`, without saving any of\ntheir operations into the history.\n\n### Check methods\n\n#### `HistoryEditor.isHistoryEditor(value: any): value is HistoryEditor`\n\nCheck if a value is a `HistoryEditor` (i.e. it has the `HistoryEditor` interface).\n\n#### `HistoryEditor.isMerging(editor: HistoryEditor): boolean | undefined`\n\nGet the merge flag's current value.\n\n#### `HistoryEditor.isSaving(editor: HistoryEditor): boolean | undefined`\n\nGet the saving flag's current value.\n\n## Instance methods\n\n#### `undo(): void`\n\nUndo the last batch of operations\n\n#### `redo(): void`\n\nRedo the last undone batch of operations\n\n#### `writeHistory(stack: 'undos'| 'redos', batch: any) => void`\n\nPush a batch of operations as either `undos` or `redos` onto `editor.undos` or `editor.redos`\n"
  },
  {
    "path": "docs/libraries/slate-history/history.md",
    "content": "# History\n\nThe `History` object contains the undo and redo history for the editor.\n\nIt can be accessed from an `Editor` instance as the property `history`.\n\nThis property is only available on the `Editor` if the editor was instantiated using the `withHistory` method which adds undo/redo functionality to the Slate editor.\n\n```typescript\nexport interface History {\n  redos: Batch[]\n  undos: Batch[]\n}\n\ninterface Batch {\n  operations: Operation[]\n  selectionBefore: Range | null\n}\n```\n\n- [Static Methods](history.md#static-methods)\n\n## Static Methods\n\n#### `History.isHistory(value: any): value is History`\n\nReturns `true` if the passed in `value` is a `History` object and also acts as a type guard for `History`.\n"
  },
  {
    "path": "docs/libraries/slate-history/with-history.md",
    "content": "# withHistory\n\nThe `withHistory` plugin adds the `HistoryEditor` to an `Editor` instance and keeps track of the operation history of a Slate editor as operations are applied to it, using undo and redo stacks.\n\n#### `withHistory<T extends Editor>(editor: T): T & HistoryEditor`\n\nAdd `HistoryEditor` interface to an instance of any `Editor`.\n\nWhen used with `withReact`, `withHistory` should be applied inside. For example:\n\n```javascript\nconst [editor] = useState(() => withReact(withHistory(createEditor())))\n```\n"
  },
  {
    "path": "docs/libraries/slate-hyperscript.md",
    "content": "# Slate Hyperscript\n\nThis package contains a hyperscript helper for creating Slate documents with JSX!\n"
  },
  {
    "path": "docs/libraries/slate-react/README.md",
    "content": "# Slate React\n\nThis sub-library contains the React-specific logic for Slate.\n\n- [withReact](./with-react.md)\n- [ReactEditor](./react-editor.md)\n- [Hooks](./hooks.md)\n- [Slate Component](./slate.md)\n- [Editable Component](./editable.md)\n- [Event Handling](./event-handling.md)\n"
  },
  {
    "path": "docs/libraries/slate-react/editable.md",
    "content": "# Editable component\n\n## `Editable(props: EditableProps): React.JSX.Element`\n\nThe `Editable` component is the main editing component. Note that it must be inside a `Slate` component.\n\n### Props\n\nIt takes as its props, any props accepted by a Textarea element plus the following props.\n\n```typescript\ntype EditableProps = {\n  decorate?: (entry: NodeEntry) => Range[]\n  onDOMBeforeInput?: (event: InputEvent) => void\n  placeholder?: string\n  readOnly?: boolean\n  role?: string\n  style?: React.CSSProperties\n  renderElement?: (props: RenderElementProps) => React.JSX.Element\n  renderLeaf?: (props: RenderLeafProps) => React.JSX.Element\n  renderPlaceholder?: (props: RenderPlaceholderProps) => React.JSX.Element\n  scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void\n  as?: React.ElementType\n  disableDefaultStyles?: boolean\n} & React.TextareaHTMLAttributes<HTMLDivElement>\n```\n\n_NOTE: Detailed breakdown of Props not completed. Refer to the [source code](https://github.com/ianstormtaylor/slate/blob/main/packages/slate-react/src/components/editable.tsx) at the moment. Under construction._\n\n#### `placeholder?: string = \"\"`\n\nThe text to display as a placeholder when the Editor is empty. A typical value for `placeholder` would be \"Enter text here...\" or \"Start typing...\". The placeholder text will not be treated as an actual value and will disappear when the user starts typing in the Editor.\n\n#### `readOnly?: boolean = false`\n\nWhen set to true, renders the editor in a \"read-only\" state. In this state, user input and interactions will not modify the editor's content.\n\nIf this prop is omitted or set to false, the editor remains in the default \"editable\" state, allowing users to interact with and modify the content.\n\nThis prop is particularly useful when you want to display text or rich media content without allowing users to edit it, such as when displaying published content or a preview of the user's input.\n\n#### `renderElement?: (props: RenderElementProps) => React.JSX.Element`\n\nThe `renderElement` prop is a function used to render a custom component for a specific type of Element node in the Slate.js document model.\n\nHere is the type of the `RenderElementProps` passed into the function.\n\n```typescript\nexport interface RenderElementProps {\n  children: any\n  element: Element\n  attributes: {\n    'data-slate-node': 'element'\n    'data-slate-inline'?: true\n    'data-slate-void'?: true\n    dir?: 'rtl'\n    ref: any\n  }\n}\n```\n\nThe `attributes` must be added to the props of the top level HTML element returned from the function and the `children` must be rendered somewhere inside the returned JSX.\n\nHere is a typical usage of `renderElement` with two types of elements.\n\n```javascript\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  // Define a rendering function based on the element passed to `props`. We use\n  // `useCallback` here to memoize the function for subsequent renders.\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        // Pass in the `renderElement` function.\n        renderElement={renderElement}\n      />\n    </Slate>\n  )\n}\n\nconst CodeElement = props => {\n  return (\n    <pre {...props.attributes}>\n      <code>{props.children}</code>\n    </pre>\n  )\n}\n\nconst DefaultElement = props => {\n  return <p {...props.attributes}>{props.children}</p>\n}\n```\n\n#### `renderLeaf?: (props: RenderLeafProps) => React.JSX.Element`\n\nThe `renderLeaf` prop allows you to customize the rendering of leaf nodes in the document tree of your Slate editor. A \"leaf\" in Slate is the smallest chunk of text and its associated formatting attributes.\n\nThe `renderLeaf` function receives an object of type `RenderLeafProps` as its argument:\n\n```typescript\nexport interface RenderLeafProps {\n  children: any\n  leaf: Text\n  text: Text\n  attributes: {\n    'data-slate-leaf': true\n  }\n  /**\n   * The position of the leaf within the Text node, only present when the text node is split by decorations.\n   */\n  leafPosition?: {\n    start: number\n    end: number\n    isFirst?: true\n    isLast?: true\n  }\n}\n```\n\nExample usage:\n\n```jsx\n<Editor\n  renderLeaf={({ attributes, children, leaf }) => {\n    return (\n      <span\n        {...attributes}\n        style={{ fontWeight: leaf.bold ? 'bold' : 'normal' }}\n      >\n        {children}\n      </span>\n    )\n  }}\n/>\n```\n\n#### `renderText?: (props: RenderTextProps) => React.JSX.Element`\n\nThe `renderText` prop allows you to customize the rendering of the container element for a Text node in the Slate editor. This is useful when you need to wrap the entire text node content or add elements associated with the text node as a whole, regardless of how decorations might split the text into multiple leaves.\n\nThe `renderText` function receives an object of type `RenderTextProps` as its argument:\n\n```typescript\nexport interface RenderTextProps {\n  text: Text\n  children: any\n  attributes: {\n    'data-slate-node': 'text'\n    ref: any\n  }\n}\n```\n\nExample usage:\n\n```jsx\n<Editable\n  renderText={({ attributes, children, text }) => {\n    return (\n      <span {...attributes} className=\"custom-text\">\n        {children}\n        {text.tooltipContent && <Tooltip content={text.tooltipContent} />}\n      </span>\n    )\n  }}\n/>\n```\n\n#### `renderPlaceholder?: (props: RenderPlaceholderProps) => React.JSX.Element`\n\nThe `renderPlaceholder` prop allows you to customize how the placeholder of the Slate.js `Editable` component is rendered when the editor is empty. The placeholder will only be shown when the editor's content is empty.\n\nThe `RenderPlaceholderProps` interface looks like this:\n\n```typescript\nexport type RenderPlaceholderProps = {\n  children: any\n  attributes: {\n    'data-slate-placeholder': boolean\n    dir?: 'rtl'\n    contentEditable: boolean\n    ref: React.RefCallback<any>\n    style: React.CSSProperties\n  }\n}\n```\n\nAn example usage might look like:\n\n```jsx\n<Editable\n  placeholder=\"Enter text here...\"\n  renderPlaceholder={({ attributes, children }) => {\n    const styledAttributes = {\n      ...attributes,\n      style: {\n        ...attributes.style,\n        color: 'gray',\n      },\n    }\n    return <div {...styledAttributes}>{children}</div>\n  }}\n/>\n```\n\nNote that the `attributes` prop that comes in will contain a `style` object already. This object contains important styling properties which will make the placeholder behave like a placeholder. As such, it is advisable to extend styles and to focus on things like changing colors, opacity etc. Changing positioning, for example, could cause undesirable behavior.\n\n#### `scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void`\n\nSlate has its own default method to scroll a DOM selection into view that works for most cases; however, if the default behavior isn't working for you, possible due to some complex styling, you may need to override the default behavior by providing a different function here.\n\n#### `as?: React.ElementType = \"div\"`\n\nThe as prop specifies the type of element that will be used to render the Editable component in your React application. By default, this is a `div`.\n\n#### `disableDefaultStyles?: boolean = false`\n\nThe `disableDefaultStyles` prop determines whether the default styles of the Slate.js `Editable` component are applied or not.\n\nPlease note that with this prop set to `true`, you will need to ensure that your styles cater to all the functionalities of the editor that rely on specific styles to work properly.\n\nHere are the default styles:\n\n```typescript\nconst defaultStyles = {\n  // Allow positioning relative to the editable element.\n  position: 'relative',\n  // Preserve adjacent whitespace and new lines.\n  whiteSpace: 'pre-wrap',\n  // Allow words to break if they are too long.\n  wordWrap: 'break-word',\n  // Make the minimum height that of the placeholder.\n  ...(placeholderHeight ? { minHeight: placeholderHeight } : {}),\n}\n```\n"
  },
  {
    "path": "docs/libraries/slate-react/event-handling.md",
    "content": "# Slate React Event Handling\n\nBy default, the `Editable` component comes with a set of event handlers that handle typical rich-text editing behaviors (for example, it implements its own `onCopy`, `onPaste`, `onDrop`, and `onKeyDown` handlers).\n\nIn some cases you may want to extend or override Slate's default behavior, which can be done by passing your own event handler(s) to the `Editable` component.\n\nYour custom event handler can control whether or not Slate should execute its own event handling for a given event after your handler runs depending on the return value of your event handler as described below.\n\n```jsx\nimport {Editable} from 'slate-react';\n\nfunction MyEditor() {\n  const onClick = event => {\n    // Implement custom event logic...\n\n    // When no value is returned, Slate will execute its own event handler when\n    // neither isDefaultPrevented nor isPropagationStopped was set on the event\n  };\n\n  const onDrop = event => {\n    // Implement custom event logic...\n\n    // No matter the state of the event, treat it as being handled by returning\n    // true here, Slate will skip its own event handler\n    return true;\n  };\n\n  const onDragStart = event => {\n    // Implement custom event logic...\n\n    // No matter the status of the event, treat event as *not* being handled by\n    // returning false, Slate will execute its own event handler afterward\n    return false;\n  };\n\n  return (\n    <Editable\n      onClick={onClick}\n      onDrop={onDrop}\n      onDragStart={onDragStart}\n      {/*...*/}\n    />\n  )\n}\n```\n"
  },
  {
    "path": "docs/libraries/slate-react/hooks.md",
    "content": "# Slate React Hooks\n\n#### `useComposing(): boolean`\n\nGet the current `composing` state of the editor. It deals with `compositionstart`, `compositionupdate`, `compositionend` events.\n\nComposition events are triggered by typing (composing) with a language that uses a composition character (e.g. Chinese, Japanese, Korean, etc.) [example](https://en.wikipedia.org/wiki/Input_method#/media/File:Typing_%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4_in_Dubeolsik_keyboard_layout.gif).\n\n#### `useElement(): Element`\n\nGet the current element object. Re-renders whenever the element or any of its descendants changes.\n\n#### `useElementIf(): Element | null`\n\nThe same as `useElement()` but returns `null` instead of throwing an error when not inside an element.\n\n#### `useFocused(): boolean`\n\nGet the current `focused` state of the editor.\n\n#### `useReadOnly(): boolean`\n\nGet the current `readOnly` state of the editor.\n\n#### `useSelected(): boolean`\n\nGet the current `selected` state of an element. An element is selected if `editor.selection` exists and overlaps any part of the element.\n\n#### `useSlate(): Editor`\n\nGet the current editor object. Re-renders whenever changes occur in the editor.\n\n#### `useSlateStatic(): Editor`\n\nGet the current editor object from the React context. A version of useSlate that does not re-render the context. Previously called `useEditor`.\n\n#### `useSlateSelection(): (BaseRange & { placeholder?: string | undefined; onPlaceholderResize?: ((node: HTMLElement | null) => void) | undefined }) | null`\n\nGet the current editor selection. Only re-renders when the selection changes.\n\n#### `useSlateSelector<T>(selector: (editor: Editor) => T, equalityFn?: (a: T, b: T) => boolean): T`\n\nUse redux style selectors to prevent re-rendering on every keystroke.\n\nBear in mind re-rendering can only prevented if the returned value is a value type or for reference types (e.g. objects and arrays) add a custom equality function.\n\nIf `selector` is memoized using `useCallback`, then it will only be called when it or the editor state changes. Otherwise, `selector` will be called every time the component renders.\n\nExample:\n\n```typescript\nconst isSelectionActive = useSlateSelector(editor => Boolean(editor.selection))\n```\n"
  },
  {
    "path": "docs/libraries/slate-react/react-editor.md",
    "content": "# ReactEditor\n\n`ReactEditor` is added to `Editor` when it is instantiated using the `withReact` method.\n\n```typescript\nconst [editor] = useState(() => withReact(withHistory(createEditor())))\n```\n\n- [Static methods](react-editor.md#static-methods)\n  - [Check methods](react-editor.md#check-methods)\n  - [Focus and selection methods](react-editor.md#focus-and-selection-methods)\n  - [DOM translation methods](react-editor.md#dom-translation-methods)\n  - [DataTransfer methods](react-editor.md#datatransfer-methods)\n\n## Static methods\n\n### Check methods\n\n#### `ReactEditor.isComposing(editor: ReactEditor): boolean`\n\nCheck if the user is currently composing inside the editor.\n\n#### `ReactEditor.isFocused(editor: ReactEditor): boolean`\n\nCheck if the editor is focused.\n\n#### `ReactEditor.isReadOnly(editor: ReactEditor): boolean`\n\nCheck if the editor is in read-only mode.\n\n### Focus and selection methods\n\n#### `ReactEditor.blur(editor: ReactEditor): void`\n\nBlur the editor.\n\n#### `ReactEditor.focus(editor: ReactEditor): void`\n\nFocus the editor.\n\n#### `ReactEditor.deselect(editor: ReactEditor): void`\n\nDeselect the editor.\n\n### DOM translation methods\n\n#### `ReactEditor.findKey(editor: ReactEditor, node: Node): Key`\n\nFind a key for a Slate node.\n\nReturns an instance of `Key` which looks like `{ id: string }`\n\n#### `ReactEditor.findPath(editor: ReactEditor, node: Node): Path`\n\nFind the path of Slate node.\n\n#### `ReactEditor.hasDOMNode(editor: ReactEditor, target: DOMNode, options: { editable?: boolean } = {}): boolean`\n\nCheck if a DOM node is within the editor.\n\n#### `ReactEditor.toDOMNode(editor: ReactEditor, node: Node): HTMLElement`\n\nFind the native DOM element from a Slate node.\n\n#### `ReactEditor.toDOMPoint(editor: ReactEditor, point: Point): DOMPoint`\n\nFind a native DOM selection point from a Slate point.\n\n#### `ReactEditor.toDOMRange(editor: ReactEditor, range: Range): DOMRange`\n\nFind a native DOM range from a Slate `range`.\n\n#### `ReactEditor.toSlateNode(editor: ReactEditor, domNode: DOMNode): Node`\n\nFind a Slate node from a native DOM `element`.\n\n#### `ReactEditor.findEventRange(editor: ReactEditor, event: any): Range`\n\nGet the target range from a DOM `event`.\n\n#### `ReactEditor.toSlatePoint(editor: ReactEditor, domPoint: DOMPoint): Point | null`\n\nFind a Slate point from a DOM selection's `domNode` and `domOffset`.\n\n#### `ReactEditor.toSlateRange(editor: ReactEditor, domRange: DOMRange | DOMStaticRange | DOMSelection, options?: { exactMatch?: boolean } = {}): Range | null`\n\nFind a Slate range from a DOM range or selection.\n\n### DataTransfer methods\n\n#### `ReactEditor.insertData(editor: ReactEditor, data: DataTransfer): void`\n\nInsert data from a `DataTransfer` into the editor. This is a proxy method to call in this order `insertFragmentData(editor: ReactEditor, data: DataTransfer)` and then `insertTextData(editor: ReactEditor, data: DataTransfer)`.\n\n#### `ReactEditor.insertFragmentData(editor: ReactEditor, data: DataTransfer): true`\n\nInsert fragment data from a `DataTransfer` into the editor. Returns true if some content has been effectively inserted.\n\n#### `ReactEditor.insertTextData(editor: ReactEditor, data: DataTransfer): true`\n\nInsert text data from a `DataTransfer` into the editor. Returns true if some content has been effectively inserted.\n\n#### `ReactEditor.setFragmentData(editor: ReactEditor, data: DataTransfer, originEvent?: 'drag' | 'copy' | 'cut'): void`\n\nSets data from the currently selected fragment on a `DataTransfer`.\n"
  },
  {
    "path": "docs/libraries/slate-react/slate.md",
    "content": "# Slate Component\n\n## `Slate(props: SlateProps): React.JSX.Element`\n\nThe `Slate` component must include somewhere in its `children` the `Editable` component.\n\n### Props\n\n```typescript\ntype SlateProps = {\n  editor: ReactEditor\n  value: Descendant[]\n  children: React.ReactNode\n  onChange?: (value: Descendant[]) => void\n  onSelectionChange?: (selection: Selection) => void\n  onValueChange?: (value: Descendant[]) => void\n}\n```\n\n#### `props.editor: ReactEditor`\n\nAn instance of `ReactEditor`\n\n#### `props.value: Descendant[]`\n\nThe initial value of the Editor.\n\nThis prop is deceptively named.\n\nSlate once was a controlled component (i.e. it's contents were strictly controlled by the `value` prop) but due to features like its edit history which would be corrupted by direct editing of the `value` it is no longer a controlled component.\n\n#### `props.children: React.ReactNode`\n\nThe `children` which must contain an `Editable` component.\n\n#### `props.onChange: (value: Descendant[]) => void`\n\nAn optional callback function which you can use to be notified of changes in the editor's value.\n\n#### `props.onValueChange?: (value: Descendant[]) => void`\n\n`props.onChange` alias.\n\n#### `props.onSelectionChange?: (selection: Selection) => void`\n\nAn optional callback function which you can use to be notified of changes of the editor's selection.\n"
  },
  {
    "path": "docs/libraries/slate-react/with-react.md",
    "content": "# withReact\n\nAdds React and DOM specific behaviors to the editor.\n\n### `withReact<T extends Editor>(editor: T, clipboardFormatKey = 'x-slate-fragment'): T & ReactEditor`\n\nWhen used with withHistory, withReact should be applied outside. For example:\n\n```typescript\nconst [editor] = useState(() => withReact(withHistory(createEditor())))\n```\n\n##### `clipboardFormatKey` option\n\nThe `clipboardFormatKey` option allows you to customize the `DataTransfer` type when Slate data is copied to the clipboard. By default, it is `application/x-slate-fragment` but it can be customized using this option.\n\nThis can be useful when a user copies from one Slate editor to a differently configured Slate editor. This could cause nodes to be inserted which are not correctly typed for the receiving editor, corrupting the document. By customizing the `clipboardFormatKey` one can ensure that the raw JSON data isn't copied between editors with different schemas.\n"
  },
  {
    "path": "docs/walkthroughs/01-installing-slate.md",
    "content": "# Installing Slate\n\nSlate is a monorepo divided up into multiple npm packages, so to install it you do:\n\n```text\nyarn add slate slate-react\n```\n\nYou'll also need to be sure to install Slate's peer dependencies:\n\n```text\nyarn add react react-dom\n```\n\n_Note, if you'd rather use a pre-bundled version of Slate, you can `yarn add slate` and retrieve the bundled `dist/slate.js` file! Check out the_ [_Using the Bundled Source_](xx-using-the-bundled-source.md) _guide for more information._\n\nOnce you've installed Slate, you'll need to import it.\n\n```jsx\n// Import React dependencies.\nimport React, { useState } from 'react'\n// Import the Slate editor factory.\nimport { createEditor } from 'slate'\n\n// Import the Slate components and React plugin.\nimport { Slate, Editable, withReact } from 'slate-react'\n```\n\nBefore we use those imports, let's start with an empty `<App>` component:\n\n```jsx\n// Define our app...\nconst App = () => {\n  return null\n}\n```\n\nThe next step is to create a new `Editor` object. We want the editor to be stable across renders, so we use the `useState` hook [without a setter](https://github.com/ianstormtaylor/slate/pull/3925#issuecomment-781179930):\n\n```jsx\nconst App = () => {\n  // Create a Slate editor object that won't change across renders.\n  const [editor] = useState(() => withReact(createEditor()))\n  return null\n}\n```\n\nOf course we haven't rendered anything, so you won't see any changes.\n\n> If you are using TypeScript, you will also need to extend the `Editor` with `ReactEditor` and add annotations as per the documentation on [TypeScript](../concepts/12-typescript.md). The example below also includes the custom types required for the rest of this example.\n\n```typescript\n// TypeScript users only add this code\nimport { BaseEditor, Descendant } from 'slate'\nimport { ReactEditor } from 'slate-react'\n\ntype CustomElement = { type: 'paragraph'; children: CustomText[] }\ntype CustomText = { text: string }\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: BaseEditor & ReactEditor\n    Element: CustomElement\n    Text: CustomText\n  }\n}\n```\n\nNext up is to render a `<Slate>` context provider.\n\nThe provider component keeps track of your Slate editor, its plugins, its value, its selection, and any changes that occur. It **must** be rendered above any `<Editable>` components. But it can also provide the editor state to other components like toolbars, menus, etc. using the `useSlate` hook.\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n  // Render the Slate context.\n  return <Slate editor={editor} initialValue={initialValue} />\n}\n```\n\nYou can think of the `<Slate>` component as providing a context to every component underneath it.\n\n> Slate Provider's \"value\" prop is only used as initial state for editor.children. If your code relies on replacing editor.children you should do so by replacing it directly instead of relying on the \"value\" prop to do this for you. See [Slate PR 4540](https://github.com/ianstormtaylor/slate/pull/4540) for a more in-depth discussion.\n\nThis is a slightly different mental model than things like `<input>` or `<textarea>`, because richtext documents are more complex. You'll often want to include toolbars, or live previews, or other complex components next to your editable content.\n\nBy having a shared context, those other components can execute commands, query the editor's state, etc.\n\nThe next step is to render the `<Editable>` component itself. The component acts like `contenteditable`; anywhere you render it will render an editable richtext document for the nearest editor context.\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n  return (\n    // Add the editable component inside the context.\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nThere you have it!\n\nThat's the most basic example of Slate. If you render that onto the page, you should see a paragraph with the text `A line of text in a paragraph.` And when you type, you should see the text change!\n"
  },
  {
    "path": "docs/walkthroughs/02-adding-event-handlers.md",
    "content": "# Adding Event Handlers\n\nOkay, so you've got Slate installed and rendered on the page, and when you type in it, you can see the changes reflected. But you want to do more than just type a plaintext string.\n\nWhat makes Slate great is how easy it is to customize. Just like other React components you're used to, Slate allows you to pass in handlers that are triggered on certain events.\n\nLet's use the `onKeyDown` handler to change the editor's content when we press a key.\n\nHere's our app from earlier:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nNow we add an `onKeyDown` handler:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        // Define a new handler which prints the key that was pressed.\n        onKeyDown={event => {\n          console.log(event.key)\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nCool, now when a key is pressed in the editor, its corresponding keycode is logged in the console.\n\nNow we want to make it actually change the content. For the purposes of our example, let's implement turning all ampersand, `&`, keystrokes into the word `and` upon being typed.\n\nOur `onKeyDown` handler might look like this:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        onKeyDown={event => {\n          if (event.key === '&') {\n            // Prevent the ampersand character from being inserted.\n            event.preventDefault()\n            // Execute the `insertText` method when the event occurs.\n            editor.insertText('and')\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nWith that added, try typing `&`, and you should see it suddenly become `and` instead!\n\nThis offers a sense of what can be done with Slate's event handlers. Each one will be called with the `event` object, and you can use your `editor` to perform commands in response. Simple!\n"
  },
  {
    "path": "docs/walkthroughs/03-defining-custom-elements.md",
    "content": "# Defining Custom Elements\n\nIn our previous example, we started with a paragraph, but we never actually told Slate anything about the `paragraph` block type. We just let it use its internal default renderer, which uses a plain old `<div>`.\n\nBut that's not all you can do. Slate lets you define any type of custom blocks you want, like block quotes, code blocks, list items, etc.\n\nWe'll show you how. Let's start with our app from earlier:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        onKeyDown={event => {\n          if (event.key === '&') {\n            event.preventDefault()\n            editor.insertText('and')\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nNow let's add \"code blocks\" to our editor.\n\nThe problem is, code blocks won't just be rendered as a plain paragraph, they'll need to be rendered differently. To make that happen, we need to define a \"renderer\" for `code` element nodes.\n\nElement renderers are just simple React components, like so:\n\n```jsx\n// Define a React component renderer for our code blocks.\nconst CodeElement = props => {\n  return (\n    <pre {...props.attributes}>\n      <code>{props.children}</code>\n    </pre>\n  )\n}\n```\n\nEasy enough.\n\nSee the `props.attributes` reference? Slate passes attributes that should be rendered on the top-most element of your blocks, so that you don't have to build them up yourself. You **must** mix the attributes into your component.\n\nAnd see that `props.children` reference? Slate will automatically render all of the children of a block for you, and then pass them to you just like any other React component would, via `props.children`. That way you don't have to muck around with rendering the proper text nodes or anything like that. You **must** render the children as the lowest leaf in your component.\n\nAnd here's a component for the \"default\" elements:\n\n```jsx\nconst DefaultElement = props => {\n  return <p {...props.attributes}>{props.children}</p>\n}\n```\n\nNow, let's add that renderer to our `Editor`:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  // Define a rendering function based on the element passed to `props`. We use\n  // `useCallback` here to memoize the function for subsequent renders.\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        // Pass in the `renderElement` function.\n        renderElement={renderElement}\n        onKeyDown={event => {\n          if (event.key === '&') {\n            event.preventDefault()\n            editor.insertText('and')\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n\nconst CodeElement = props => {\n  return (\n    <pre {...props.attributes}>\n      <code>{props.children}</code>\n    </pre>\n  )\n}\n\nconst DefaultElement = props => {\n  return <p {...props.attributes}>{props.children}</p>\n}\n```\n\nOkay, but now we'll need a way for the user to actually turn a block into a code block. So let's change our `onKeyDown` function to add a `` Ctrl-` `` shortcut that does just that:\n\n```jsx\n// Import the `Editor` and `Transforms` helpers from Slate.\nimport { Editor, Transforms, Element } from 'slate'\n\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        onKeyDown={event => {\n          if (event.key === '`' && event.ctrlKey) {\n            // Prevent the \"`\" from being inserted by default.\n            event.preventDefault()\n            // Otherwise, set the currently selected blocks type to \"code\".\n            Transforms.setNodes(\n              editor,\n              { type: 'code' },\n              { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n            )\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n\nconst CodeElement = props => {\n  return (\n    <pre {...props.attributes}>\n      <code>{props.children}</code>\n    </pre>\n  )\n}\n\nconst DefaultElement = props => {\n  return <p {...props.attributes}>{props.children}</p>\n}\n```\n\nNow, if you press `` Ctrl-` `` the block your cursor is in should turn into a code block! Magic!\n\nBut we forgot one thing. When you hit `` Ctrl-` `` again, it should change the code block back into a paragraph. To do that, we'll need to add a bit of logic to change the type we set based on whether any of the currently selected blocks are already a code block:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        onKeyDown={event => {\n          if (event.key === '`' && event.ctrlKey) {\n            event.preventDefault()\n            // Determine whether any of the currently selected blocks are code blocks.\n            const [match] = Editor.nodes(editor, {\n              match: n => n.type === 'code',\n            })\n            // Toggle the block type depending on whether there's already a match.\n            Transforms.setNodes(\n              editor,\n              { type: match ? 'paragraph' : 'code' },\n              { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n            )\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nAnd there you have it! If you press `` Ctrl-` `` while inside a code block, it should turn back into a paragraph!\n"
  },
  {
    "path": "docs/walkthroughs/04-applying-custom-formatting.md",
    "content": "# Applying Custom Formatting\n\nIn the previous guide we learned how to create custom block types that render chunks of text inside different containers. But Slate allows for more than just \"blocks\".\n\nIn this guide, we'll show you how to add custom formatting options, like **bold**, _italic_, `code` or ~~strikethrough~~.\n\nSo we start with our app from earlier:\n\n```jsx\nconst renderElement = props => {\n  switch (props.element.type) {\n    case 'code':\n      return <CodeElement {...props} />\n    default:\n      return <DefaultElement {...props} />\n  }\n}\n\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        onKeyDown={event => {\n          if (event.key === '`' && event.ctrlKey) {\n            event.preventDefault()\n            const [match] = Editor.nodes(editor, {\n              match: n => n.type === 'code',\n            })\n            Transforms.setNodes(\n              editor,\n              { type: match ? 'paragraph' : 'code' },\n              { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n            )\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nAnd now, we'll edit the `onKeyDown` handler to make it so that when you press `control-B`, it will add a `bold` format to the currently selected text:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        onKeyDown={event => {\n          if (!event.ctrlKey) {\n            return\n          }\n\n          switch (event.key) {\n            // When \"`\" is pressed, keep our existing code block logic.\n            case '`': {\n              event.preventDefault()\n              const [match] = Editor.nodes(editor, {\n                match: n => n.type === 'code',\n              })\n              Transforms.setNodes(\n                editor,\n                { type: match ? 'paragraph' : 'code' },\n                {\n                  match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n                }\n              )\n              break\n            }\n\n            // When \"B\" is pressed, bold the text in the selection.\n            case 'b': {\n              event.preventDefault()\n              Editor.addMark(editor, 'bold', true)\n              break\n            }\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nUnlike the code format from the previous step, which is a block-level format, bold is a character-level format. Slate manages text contained within blocks (or any other element) using \"leaves\". Slate's character-level formats/styles are called \"marks\". Adjacent text with the same marks (styles) applied will be grouped within the same \"leaf\". When we use `addMark` to add our bold mark to the selected text, Slate will automatically break up the \"leaves\" using the selection boundaries and produce a new \"leaf\" with the bold mark added.\n\nOkay, so we've got the hotkey handler setup... but! If you happen to now try selecting text and hitting `Ctrl-B`, you won't notice any change. That's because we haven't told Slate how to render a \"bold\" mark.\n\nFor every format you add, you need to tell Slate how to render it, just like for elements. So let's define a `Leaf` component:\n\n```jsx\n// Define a React component to render leaves with bold text.\nconst Leaf = props => {\n  return (\n    <span\n      {...props.attributes}\n      style={{ fontWeight: props.leaf.bold ? 'bold' : 'normal' }}\n    >\n      {props.children}\n    </span>\n  )\n}\n```\n\nPretty familiar, right? Note that it is described with a `span` - This is because all leaves must be an [inline element](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements). You can learn more about leaves in the [Rendering section](../concepts/09-rendering.md#leaves).\n\nAnd now, let's tell Slate about that leaf. To do that, we'll pass in the `renderLeaf` prop to our editor.\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  // Define a leaf rendering function that is memoized with `useCallback`.\n  const renderLeaf = useCallback(props => {\n    return <Leaf {...props} />\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        // Pass in the `renderLeaf` function.\n        renderLeaf={renderLeaf}\n        onKeyDown={event => {\n          if (!event.ctrlKey) {\n            return\n          }\n\n          switch (event.key) {\n            case '`': {\n              event.preventDefault()\n              const [match] = Editor.nodes(editor, {\n                match: n => n.type === 'code',\n              })\n              Transforms.setNodes(\n                editor,\n                { type: match ? null : 'code' },\n                {\n                  match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n                }\n              )\n              break\n            }\n\n            case 'b': {\n              event.preventDefault()\n              Editor.addMark(editor, 'bold', true)\n              break\n            }\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n\nconst Leaf = props => {\n  return (\n    <span\n      {...props.attributes}\n      style={{ fontWeight: props.leaf.bold ? 'bold' : 'normal' }}\n    >\n      {props.children}\n    </span>\n  )\n}\n```\n\nNow, if you try selecting a piece of text and hitting `Ctrl-B` you should see it turn bold! Magic!\n"
  },
  {
    "path": "docs/walkthroughs/05-executing-commands.md",
    "content": "# Executing Commands\n\nUp until now, everything we've learned has been about how to write one-off logic for your specific Slate editor. But one of the most powerful things about Slate is that it lets you model your specific rich text \"domain\" however you'd like, and write less one-off code.\n\nIn the previous guides we've written some useful code to handle formatting code blocks and bold marks. And we've hooked up the `onKeyDown` handler to invoke that code. But we've always done it using the built-in `Editor` helpers directly, instead of using \"commands\".\n\nSlate lets you augment the built-in `editor` object to handle your own custom rich text commands. And you can even use pre-packaged \"plugins\" which add a given set of functionality.\n\nLet's see how this works.\n\nWe'll start with our app from earlier:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  const renderLeaf = useCallback(props => {\n    return <Leaf {...props} />\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        onKeyDown={event => {\n          if (!event.ctrlKey) {\n            return\n          }\n\n          switch (event.key) {\n            case '`': {\n              event.preventDefault()\n              const [match] = Editor.nodes(editor, {\n                match: n => n.type === 'code',\n              })\n              Transforms.setNodes(\n                editor,\n                { type: match ? null : 'code' },\n                {\n                  match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n                }\n              )\n              break\n            }\n\n            case 'b': {\n              event.preventDefault()\n              Editor.addMark(editor, 'bold', true)\n              break\n            }\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nIt has the concept of \"code blocks\" and \"bold formatting\". But these things are all defined in one-off cases inside the `onKeyDown` handler. If you wanted to reuse that logic elsewhere you'd need to extract it.\n\nWe can instead implement these domain-specific concepts by creating custom helper functions:\n\n```jsx\n// Define our own custom set of helpers.\nconst CustomEditor = {\n  isBoldMarkActive(editor) {\n    const marks = Editor.marks(editor)\n    return marks ? marks.bold === true : false\n  },\n\n  isCodeBlockActive(editor) {\n    const [match] = Editor.nodes(editor, {\n      match: n => n.type === 'code',\n    })\n\n    return !!match\n  },\n\n  toggleBoldMark(editor) {\n    const isActive = CustomEditor.isBoldMarkActive(editor)\n    if (isActive) {\n      Editor.removeMark(editor, 'bold')\n    } else {\n      Editor.addMark(editor, 'bold', true)\n    }\n  },\n\n  toggleCodeBlock(editor) {\n    const isActive = CustomEditor.isCodeBlockActive(editor)\n    Transforms.setNodes(\n      editor,\n      { type: isActive ? null : 'code' },\n      { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n    )\n  },\n}\n\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  const renderLeaf = useCallback(props => {\n    return <Leaf {...props} />\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        onKeyDown={event => {\n          if (!event.ctrlKey) {\n            return\n          }\n\n          // Replace the `onKeyDown` logic with our new commands.\n          switch (event.key) {\n            case '`': {\n              event.preventDefault()\n              CustomEditor.toggleCodeBlock(editor)\n              break\n            }\n\n            case 'b': {\n              event.preventDefault()\n              CustomEditor.toggleBoldMark(editor)\n              break\n            }\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nNow our commands are clearly defined and you can invoke them from anywhere we have access to our `editor` object. For example, from hypothetical toolbar buttons:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  const renderElement = useCallback(props => {\n    switch (props.element.type) {\n      case 'code':\n        return <CodeElement {...props} />\n      default:\n        return <DefaultElement {...props} />\n    }\n  }, [])\n\n  const renderLeaf = useCallback(props => {\n    return <Leaf {...props} />\n  }, [])\n\n  return (\n    // Add a toolbar with buttons that call the same methods.\n    <Slate editor={editor} initialValue={initialValue}>\n      <div>\n        <button\n          onMouseDown={event => {\n            event.preventDefault()\n            CustomEditor.toggleBoldMark(editor)\n          }}\n        >\n          Bold\n        </button>\n        <button\n          onMouseDown={event => {\n            event.preventDefault()\n            CustomEditor.toggleCodeBlock(editor)\n          }}\n        >\n          Code Block\n        </button>\n      </div>\n      <Editable\n        editor={editor}\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        onKeyDown={event => {\n          if (!event.ctrlKey) {\n            return\n          }\n\n          switch (event.key) {\n            case '`': {\n              event.preventDefault()\n              CustomEditor.toggleCodeBlock(editor)\n              break\n            }\n\n            case 'b': {\n              event.preventDefault()\n              CustomEditor.toggleBoldMark(editor)\n              break\n            }\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n```\n\nThat's the benefit of extracting the logic.\n\nAnd there you have it! We just added a ton of functionality to the editor with very little work. And we can keep all of our command logic tested and isolated in a single place, making the code easier to maintain.\n"
  },
  {
    "path": "docs/walkthroughs/06-saving-to-a-database.md",
    "content": "# Saving to a Database\n\nNow that you've learned the basics of how to add functionality to the Slate editor, you might be wondering how you'd go about saving the content you've been editing, such that you can come back to your app later and have it load.\n\nIn this guide, we'll show you how to add logic to save your Slate content to a database for storage and retrieval later.\n\nLet's start with a basic editor:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nThat will render a basic Slate editor on your page, and when you type things will change. But if you refresh the page, everything will be reverted back to its original value—nothing saves!\n\nWhat we need to do is save the changes you make somewhere. For this example, we'll just be using [Local Storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), but it will give you an idea for where you'd need to add your own database hooks.\n\nSo, in our `onChange` handler, we need to save the `value` if anything besides the selection was changed:\n\n```jsx\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }],\n  },\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate\n      editor={editor}\n      initialValue={initialValue}\n      onChange={value => {\n        const isAstChange = editor.operations.some(\n          op => 'set_selection' !== op.type\n        )\n        if (isAstChange) {\n          // Save the value to Local Storage.\n          const content = JSON.stringify(value)\n          localStorage.setItem('content', content)\n        }\n      }}\n    >\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nNow whenever you edit the page, if you look in Local Storage, you should see the `content` value changing.\n\nBut... if you refresh the page, everything is still reset. That's because we need to make sure the initial value is pulled from that same Local Storage location, like so:\n\n```jsx\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n  // Update the initial content to be pulled from Local Storage if it exists.\n  const initialValue = useMemo(\n    () =>\n      JSON.parse(localStorage.getItem('content')) || [\n        {\n          type: 'paragraph',\n          children: [{ text: 'A line of text in a paragraph.' }],\n        },\n      ],\n    []\n  )\n\n  return (\n    <Slate\n      editor={editor}\n      initialValue={initialValue}\n      onChange={value => {\n        const isAstChange = editor.operations.some(\n          op => 'set_selection' !== op.type\n        )\n        if (isAstChange) {\n          // Save the value to Local Storage.\n          const content = JSON.stringify(value)\n          localStorage.setItem('content', content)\n        }\n      }}\n    >\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nNow you should be able to save changes across refreshes!\n\nSuccess—you've got JSON in your database.\n\nBut what if you want something other than JSON? Well, you'd need to serialize your value differently. For example, if you want to save your content as plain text instead of JSON, we can write some logic to serialize and deserialize plain text values:\n\n```jsx\n// Import the `Node` helper interface from Slate.\nimport { Node } from 'slate'\n\n// Define a serializing function that takes a value and returns a string.\nconst serialize = value => {\n  return (\n    value\n      // Return the string content of each paragraph in the value's children.\n      .map(n => Node.string(n))\n      // Join them all with line breaks denoting paragraphs.\n      .join('\\n')\n  )\n}\n\n// Define a deserializing function that takes a string and returns a value.\nconst deserialize = string => {\n  // Return a value array of children derived by splitting the string.\n  return string.split('\\n').map(line => {\n    return {\n      children: [{ text: line }],\n    }\n  })\n}\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n  // Use our deserializing function to read the data from Local Storage.\n  const initialValue = useMemo(\n    deserialize(localStorage.getItem('content')) || '',\n    []\n  )\n\n  return (\n    <Slate\n      editor={editor}\n      initialValue={initialValue}\n      onChange={value => {\n        const isAstChange = editor.operations.some(\n          op => 'set_selection' !== op.type\n        )\n        if (isAstChange) {\n          // Serialize the value and save the string value to Local Storage.\n          localStorage.setItem('content', serialize(value))\n        }\n      }}\n    >\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nThat works! Now you're working with plain text.\n\nYou can emulate this strategy for any format you like. You can serialize to HTML, to Markdown, or even to your own custom JSON format that is tailored to your use case.\n\n> 🤖 Note that even though you _can_ serialize your content however you like, there are tradeoffs. The serialization process has a cost itself, and certain formats may be harder to work with than others. In general we recommend writing your own format only if your use case has a specific need for it. Otherwise, you're often better leaving the data in the format Slate uses.\n\nIf you want to update the editor's content in response to events from outside of Slate, you need to change the children property directly. The simplest way is to replace the value of editor.children `editor.children = newValue` and trigger a re-rendering (e.g. by calling `editor.onChange()` in the example above). Alternatively, you can use Slate's internal operations to transform the value, for example:\n\n```javascript\n  /**\n  * resetNodes resets the value of the editor.\n  * It should be noted that passing the `at` parameter may cause a \"Cannot resolve a DOM point from Slate point\" error.\n  */\n  resetNodes<T extends Node>(\n    editor: Editor,\n    options: {\n      nodes?: Node | Node[],\n      at?: Location\n    } = {}\n  ): void {\n    const children = [...editor.children]\n\n    children.forEach((node) => editor.apply({ type: 'remove_node', path: [0], node }))\n\n    if (options.nodes) {\n      const nodes = Node.isNode(options.nodes) ? [options.nodes] : options.nodes\n\n      nodes.forEach((node, i) => editor.apply({ type: 'insert_node', path: [i], node: node }))\n    }\n\n    const point = options.at && Point.isPoint(options.at)\n      ? options.at\n      : Editor.end(editor, [])\n\n    if (point) {\n      Transforms.select(editor, point)\n    }\n  }\n```\n"
  },
  {
    "path": "docs/walkthroughs/07-enabling-collaborative-editing.md",
    "content": "# Enabling Collaborative Editing\n\nA common use case for text editors is collaborative editing, and the Slate editor was designed with this in\nmind. You can enable multiplayer editing with [Yjs](https://github.com/yjs/yjs), a network-agnostic CRDT implementation\nthat allows you to share data among connected users. Because Yjs is network-agnostic, each project requires\na [communication provider](https://github.com/yjs/yjs#providers) set up on the back end to link users together.\n\nIn this guide, we'll show you how to set up a collaborative Slate editor using a Yjs provider. We'll also be\nadding [slate-yjs](https://github.com/BitPhinix/slate-yjs) which allows you to add multiplayer features to Slate, such\nas live cursors.\n\nLet's start with a basic editor:\n\n```jsx\nimport { Slate } from 'slate-react'\n\nconst initialValue = {\n  children: [{ text: '' }],\n}\n\nexport const CollaborativeEditor = () => {\n  return <SlateEditor />\n}\n\nconst SlateEditor = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nYjs is network-agnostic, which means each Yjs provider is set up in a slightly different way. For\nexample [@liveblocks/yjs](https://liveblocks.io/docs/api-reference/liveblocks-yjs) is\nfully-hosted, whereas others such as [y-websocket](https://github.com/yjs/y-websocket) require you to host your own\nWebSocket server. Because of this, we'll use code snippets that work for each provider, without going into too much\ndetail about setting up the provider itself.\n\nThis is how to connect to a collaborative Yjs document, ready to be used in your Slate editor.\n\n```jsx\nimport { useEffect, useMemo, useState } from 'react'\nimport { createEditor, Editor, Transforms } from 'slate'\nimport { Editable, Slate, withReact } from 'slate-react'\nimport * as Y from 'yjs'\n\nconst initialValue = {\n  children: [{ text: '' }],\n}\n\nexport const CollaborativeEditor = () => {\n  const [connected, setConnected] = useState(false)\n  const [sharedType, setSharedType] = useState()\n  const [provider, setProvider] = useState()\n\n  // Set up your Yjs provider and document\n  useEffect(() => {\n    const yDoc = new Y.Doc()\n    const sharedDoc = yDoc.get('slate', Y.XmlText)\n\n    // Set up your Yjs provider. This line of code is different for each provider.\n    const yProvider = new YjsProvider(/* ... */)\n\n    yProvider.on('sync', setConnected)\n    setSharedType(sharedDoc)\n    setProvider(yProvider)\n\n    return () => {\n      yDoc?.destroy()\n      yProvider?.off('sync', setConnected)\n      yProvider?.destroy()\n    }\n  }, [])\n\n  if (!connected || !sharedType || !provider) {\n    return <div>Loading…</div>\n  }\n\n  return <SlateEditor />\n}\n\nconst SlateEditor = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nAfter setting up your Yjs document like this, you can then link it your editor by passing down `sharedType`, which\ncontains the multiplayer text, and by using functions from `slate-yjs`. We're also passing down `provider` which will be\nhelpful later.\n\n```jsx\nimport { useEffect, useMemo, useState } from 'react'\nimport { createEditor, Editor, Transforms } from 'slate'\nimport { Editable, Slate, withReact } from 'slate-react'\nimport { withYjs, YjsEditor } from '@slate-yjs/core'\nimport * as Y from 'yjs'\n\nconst initialValue = {\n  children: [{ text: '' }],\n}\n\nexport const CollaborativeEditor = () => {\n  const [connected, setConnected] = useState(false)\n  const [sharedType, setSharedType] = useState()\n  const [provider, setProvider] = useState()\n\n  // Connect to your Yjs provider and document\n  useEffect(() => {\n    const yDoc = new Y.Doc()\n    const sharedDoc = yDoc.get('slate', Y.XmlText)\n\n    // Set up your Yjs provider. This line of code is different for each provider.\n    const yProvider = new YjsProvider(/* ... */)\n\n    yProvider.on('sync', setConnected)\n    setSharedType(sharedDoc)\n    setProvider(yProvider)\n\n    return () => {\n      yDoc?.destroy()\n      yProvider?.off('sync', setConnected)\n      yProvider?.destroy()\n    }\n  }, [])\n\n  if (!connected || !sharedType || !provider) {\n    return <div>Loading…</div>\n  }\n\n  return <SlateEditor sharedType={sharedType} provider={provider} />\n}\n\nconst SlateEditor = ({ sharedType, provider }) => {\n  const editor = useMemo(() => {\n    const e = withReact(withYjs(createEditor(), sharedType))\n\n    // Ensure editor always has at least 1 valid child\n    const { normalizeNode } = e\n    e.normalizeNode = (entry, options) => {\n      const [node] = entry\n\n      if (!Editor.isEditor(node) || node.children.length > 0) {\n        return normalizeNode(entry, options)\n      }\n\n      Transforms.insertNodes(editor, initialValue, { at: [0] })\n    }\n\n    return e\n  }, [])\n\n  useEffect(() => {\n    YjsEditor.connect(editor)\n    return () => YjsEditor.disconnect(editor)\n  }, [editor])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}\n```\n\nThat's all you need to attach Yjs to Slate!\n\nLet's look at a real-world example of setting up Yjs—here's a code snippet for setting up\na [Liveblocks provider](https://liveblocks.io/docs/get-started/yjs-slate-react). Liveblocks uses the concept of rooms,\nspaces where users can\ncollaborative. To use a Liveblocks provider, you join a multiplayer room with `RoomProvider`, then pass the room\nto `new LiveblocksProvider`, along with the Yjs document.\n\n```jsx\nimport LiveblocksProvider from '@liveblocks/yjs'\nimport { RoomProvider, useRoom } from '../liveblocks.config'\n\n// Join a Liveblocks room and show the editor after connecting\nexport const App = () => {\n  return (\n    <RoomProvider id=\"my-room-name\" initialPresence={{}}>\n      <ClientSideSuspense fallback={<div>Loading…</div>}>\n        {() => <CollaborativeEditor />}\n      </ClientSideSuspense>\n    </RoomProvider>\n  )\n}\n\nexport const CollaborativeEditor = () => {\n  const room = useRoom()\n  const [connected, setConnected] = useState(false)\n  const [sharedType, setSharedType] = useState()\n  const [provider, setProvider] = useState()\n\n  // Connect to your Yjs provider and document\n  useEffect(() => {\n    const yDoc = new Y.Doc()\n    const sharedDoc = yDoc.get('slate', Y.XmlText)\n\n    // Set up your Liveblocks provider with the current room and document\n    const yProvider = new LiveblocksProvider(room, yDoc)\n\n    yProvider.on('sync', setConnected)\n    setSharedType(sharedDoc)\n    setProvider(yProvider)\n\n    return () => {\n      yDoc?.destroy()\n      yProvider?.off('sync', setConnected)\n      yProvider?.destroy()\n    }\n  }, [room])\n\n  if (!connected || !sharedType || !provider) {\n    return <div>Loading…</div>\n  }\n\n  return <SlateEditor sharedType={sharedType} provider={provider} />\n}\n\nconst SlateEditor = ({ sharedType, provider }) => {\n  // ...\n}\n```\n\nUnlike other providers, Liveblocks hosts your Yjs back end for you, which means you don't need to run your own server\nto get this working. For more information on setting up Liveblocks providers, make sure to read\ntheir [Slate getting started](https://liveblocks.io/docs/get-started/yjs-slate-react) guide.\n\n> Note that Liveblocks is independent of the Slate project, and isn't required for collaboration, but it may be\n> convenient depending on your needs. [Other providers](https://github.com/yjs/yjs#providers) are available\n> should you wish to set up and host a Yjs back end yourself.\n\nAfter setting up Yjs, it's possible to add multiplayer cursors to your app. You can do this with hooks supplied by\n[slate-yjs](), which allow you to find the cursor positions of other users. Here's an example of setting up a cursor\ncomponent.\n\n```jsx\nimport {\n  CursorOverlayData,\n  useRemoteCursorOverlayPositions,\n} from '@slate-yjs/react'\nimport { useRef } from 'react'\n\nexport function Cursors({ children }) {\n  const containerRef = useRef(null)\n  const [cursors] = useRemoteCursorOverlayPositions({ containerRef })\n\n  return (\n    <div className=\"cursors\" ref={containerRef}>\n      {children}\n      {cursors.map(cursor => (\n        <Selection key={cursor.clientId} {...cursor} />\n      ))}\n    </div>\n  )\n}\n\nfunction Selection({ data, selectionRects, caretPosition }) {\n  if (!data) {\n    return null\n  }\n\n  const selectionStyle = {\n    backgroundColor: data.color,\n  }\n\n  return (\n    <>\n      {selectionRects.map((position, i) => (\n        <div\n          style={{ ...selectionStyle, ...position }}\n          className=\"selection\"\n          key={i}\n        />\n      ))}\n      {caretPosition && <Caret caretPosition={caretPosition} data={data} />}\n    </>\n  )\n}\n\nfunction Caret({ caretPosition, data }) {\n  const caretStyle = {\n    ...caretPosition,\n    background: data?.color,\n  }\n\n  const labelStyle = {\n    transform: 'translateY(-100%)',\n    background: data?.color,\n  }\n\n  return (\n    <div style={caretStyle} className=\"caretMarker\">\n      <div className=\"caret\" style={labelStyle}>\n        {data?.name}\n      </div>\n    </div>\n  )\n}\n```\n\nWith some matching styles to set up the positioning:\n\n```css\n.cursors {\n  position: relative;\n}\n\n.caretMarker {\n  position: absolute;\n  width: 2px;\n}\n\n.caret {\n  position: absolute;\n  font-size: 14px;\n  color: #fff;\n  white-space: nowrap;\n  top: 0;\n  border-radius: 6px;\n  border-bottom-left-radius: 0;\n  padding: 2px 6px;\n  pointer-events: none;\n}\n\n.selection {\n  position: absolute;\n  pointer-events: none;\n  opacity: 0.2;\n}\n```\n\nYou can then import this into your `SlateEditor` component. Notice that we're using `withCursors` from `slate-yjs`,\nadding `provider.awareness` and the current user's name to it. We're then wrapping `<Editable>` in the new `<Cursors>`\ncomponent we've just created.\n\n```jsx\nimport { useEffect, useMemo, useState } from 'react'\nimport { createEditor, Editor, Transforms } from 'slate'\nimport { Editable, Slate, withReact } from 'slate-react'\nimport { withCursors, withYjs, YjsEditor } from '@slate-yjs/core'\nimport { Cursors } from './Cursors'\nimport * as Y from 'yjs'\n\nexport const CollaborativeEditor = () => {\n  // ...\n}\n\nconst SlateEditor = ({ sharedType, provider }) => {\n  const editor = useMemo(() => {\n    const e = withReact(\n      withCursors(withYjs(createEditor(), sharedType), provider.awareness, {\n        // The current user's name and color\n        data: {\n          name: 'Chris',\n          color: '#00ff00',\n        },\n      })\n    )\n\n    // Ensure editor always has at least 1 valid child\n    const { normalizeNode } = e\n    e.normalizeNode = (entry, options) => {\n      const [node] = entry\n\n      if (!Editor.isEditor(node) || node.children.length > 0) {\n        return normalizeNode(entry, options)\n      }\n\n      Transforms.insertNodes(editor, initialValue, { at: [0] })\n    }\n\n    return e\n  }, [])\n\n  useEffect(() => {\n    YjsEditor.connect(editor)\n    return () => YjsEditor.disconnect(editor)\n  }, [editor])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Cursors>\n        <Editable />\n      </Cursors>\n    </Slate>\n  )\n}\n```\n\nYou should now be seeing multiplayer cursors! To learn more, make sure to read\nthe [slate-yjs documentation](https://docs.slate-yjs.dev/).\n"
  },
  {
    "path": "docs/walkthroughs/08-using-the-bundled-source.md",
    "content": "# Using the Bundled Source\n\nFor most folks, you'll want to install Slate via `npm`, in which case you can follow the regular [Installing Slate](01-installing-slate.md) guide.\n\nBut, if you'd rather install Slate by simply adding a `<script>` tag to your application, this guide will help you. To make the \"bundled\" use case simpler, each version of Slate ships with a bundled source file called `slate.js`.\n\nTo get a copy of `slate.js`, download the version of Slate you want from npm:\n\n```text\nnpm install slate@latest\n```\n\nAnd then look in the `node_modules` folder for the bundled `slate.js` file:\n\n```text\nnode_modules/\n  slate/\n    dist/\n      slate.js\n      slate.min.js\n```\n\nA minified version called `slate.min.js` is also included for convenience.\n\nBefore you can add `slate.js` to your page, you need to bring your own copy of `react`, `react-dom` and `react-dom-server`, like so:\n\n```markup\n<script src=\"./vendor/react.js\"></script>\n<script src=\"./vendor/react-dom.js\"></script>\n<script src=\"./vendor/react-dom-server.js\"></script>\n```\n\nThis ensures that Slate isn't bundling its own copy of React, which would greatly increase the file size of your application.\n\nThen you can add `slate.js` after those includes:\n\n```markup\n<script src=\"./vendor/slate.js\"></script>\n```\n\nTo make things easier, for quick prototyping, you can also use the [`unpkg.com`](https://unpkg.com/#/) delivery network that makes working with bundled npm modules easier. In that case, your includes would look like:\n\n```markup\n<script src=\"https://unpkg.com/react/umd/react.production.min.js\"></script>\n<script src=\"https://unpkg.com/react-dom/umd/react-dom.production.min.js\"></script>\n<script src=\"https://unpkg.com/react-dom/umd/react-dom-server.browser.production.min.js\"></script>\n<script src=\"https://unpkg.com/slate/dist/slate.js\"></script>\n<script src=\"https://unpkg.com/slate-react/dist/slate-react.js\"></script>\n```\n\nThat's it, you're ready to go!\n"
  },
  {
    "path": "docs/walkthroughs/09-performance.md",
    "content": "# Improving Performance\n\nWhen building a text editor, it's important for user interactions to take place without any noticeable delay. For small and moderately sized documents (less than 1000 blocks), you probably don't need to worry about performance. If your editor needs to support very large documents (10,000+ or 100,000+ blocks), follow this guide to ensure the editor stays responsive.\n\nThe [Huge Document](https://slatejs.org/examples/huge-document) example contains an interactive playground where you can explore the effect of various factors on the performance of a very simple Slate editor.\n\nThe type of performance this guide is mostly concerned with is the **Interaction to Next Paint** (INP) while typing. If the INP is below roughly 100ms, typing should feel very responsive. The editor will still be usable when the INP duration is longer, but it will feel increasingly sluggish and unpleasant to use.\n\nOther performance metrics to be aware of (but which are not currently covered in this guide) are **time to first paint** and the INP when performing non-typing operations (such as selecting all content or pasting).\n\nINP is easiest to measure in Chrome using the [Performance panel](https://developer.chrome.com/docs/devtools/performance) in DevTools, but there are ways to determine it in Firefox and Safari too. For example, in Firefox, you can use the [Firefox Profiler](https://profiler.firefox.com/) to see a timeline of events.\n\n![Screenshot of the Stack Chart tab of the Firefox Profiler, annotated to show a breakdown of time spent in core Slate, React, and painting the DOM.](../images/performance/firefox-inp.png)\n\nThere are three main areas that can be optimized:\n\n- [Slate core](#optimizing-slate-core)\n- [React](#optimizing-react)\n- [DOM painting](#optimizing-dom-painting)\n\nBefore you start optimizing, make sure you know which of these areas is most responsible for any slowness you're seeing. The best way of doing this is to use your browser's profiler (see the example for Firefox above), but you can also use these heuristics to guess which area is most at fault:\n\n1. If performance is much better in Firefox than in Chrome or Safari, DOM painting is usually the problem (tested May 2025).\n2. If disabling any custom normalization logic improves performance, the normalization logic is the problem.\n3. Otherwise, it's likely to be React.\n\n## Optimizing Slate Core\n\nUsually, if the core Slate logic is causing a noticeable delay, it's because of [normalizing](../concepts/11-normalizing.md). If custom normalization logic is causing slowness in your app, consider whether the logic can be made more efficient.\n\nUnderstand that `normalizeNode` is called once for every modified node and every ancestor of a modified node. As a result, `normalizeNode` is called for the editor node whenever anything changes in the editor, but for other nodes it is called much less frequently.\n\nMake sure you only normalize the node passed into `normalizeNode` and (occasionally) its direct children, not its children's descendants. Normalization logic should only be applied directly to the editor node when absolutely necessary, such when enforcing that the last block in the document is a paragraph.\n\n## Optimizing React\n\n### Reduce Renders\n\nThe `renderElement` prop and any React component it returns will re-render every time the element or any of its descendants changes. This is unavoidable. However, sometimes custom logic can cause React components to re-render more often than this, which can have a detrimental effect on performance.\n\nEnsure that function props such as `renderElement`, `renderLeaf`, `renderChunk` and `decorate` do not change on every render. Either they should be defined at the top level of the file (not inside a component or hook), or they should be wrapped inside a `useCallback` and all dependencies should be properly memoized.\n\nIf unmodified elements are being re-rendered, check to see if they are subscribing to any contexts or hooks that are causing unnecessary re-renders. You can also apply these techniques to any toolbars or other non-element React components that may be re-rendering in response to changes in the editor.\n\nThe `useSlate`, `useSlateSelection`, `useSlateSelector`, `useSelected` and `useFocused` hooks cause React components to re-render in various circumstances. If you're using `useSlate`, consider if you can use `useSlateStatic` (which does not cause re-renders) instead. If you're using `useSlateSelection`, consider using `editor.selection`. If you only care about some value derived from the editor (such as whether a given mark is active), use `useSlateSelector` to only re-render when this value changes.\n\nIf your components depend on custom React contexts containing non-primitive values (such as objects or arrays), ensure that these values are properly memoized so that components only re-render when these values change. In some circumstances, you may instead want to consider passing a ref object or an unchanging getter function to retrieve the latest value.\n\n```tsx\n// Provider\nconst myDataRef = useRef(myData)\nmyDataRef.current = myData\nreturn <MyContext.Provider value={myDataRef}>{children}</MyContext.Provider>\n\n// Consumer\n// Does not re-render when `myData` changes\nconst myDataRef = useContext(MyContext)\n\nconst onClick = () => {\n  console.log(myDataRef.current)\n}\n```\n\n### Enable Chunking (experimental)\n\nChunking is an internal optimization used by `slate-react`, and must be explicitly enabled. It works by splitting a node's children into nested \"chunks\", each of which is a separately memoized React component. This reduces the amount of work React needs to do when processing changes to the JSX, resulting in a 10x speed-up in ideal circumstances.\n\nTo enable chunking, you need to implement `editor.getChunkSize(node: Ancestor) => number | null`, which controls the number of nodes per lowest-level chunk for a given parent node. In most circumstances, setting the chunk size to 1000 for the editor and `null` for all other ancestors works well.\n\n```typescript\neditor.getChunkSize = node => (Editor.isEditor(node) ? 1000 : null)\n```\n\nNote that chunking can only be enabled for nodes whose children are all block elements. Attempting to enable chunking for leaf blocks (blocks containing inline nodes) will have no effect.\n\nBy default, chunking has no effect on the DOM. You can override this by passing a `renderChunk` prop to `Editable`.\n\n## Optimizing DOM Painting\n\nIn Chrome and Safari, painting large numbers of DOM nodes can be extremely slow, over 100x slower than the core Slate logic and React rendering combined in some cases. In Firefox, the impact of painting on performance is much less significant.\n\nThe best way of speeding up painting large documents is to use the [`content-visibility`](https://developer.mozilla.org/en-US/docs/Web/CSS/content-visibility) CSS property. When set to `auto`, this property instructs browsers not to paint content that is off-screen. However, it also comes with a performance overhead proportional to the number of DOM nodes it is applied to, which is especially bad in Safari. When rendering large documents in Safari, applying `content-visibility: auto` to each Slate element individually is often slower than not using it at all.\n\nThe recommended solution is to enable [chunking](#enable-chunking-experimental) and apply `content-visibility: auto` on each lowest-level chunk by passing a `renderChunk` prop to `Editable`.\n\n```tsx\nconst renderChunk = ({ attributes, lowest, children }: RenderChunkProps) => (\n  <div\n    {...attributes}\n    style={lowest ? { contentVisibility: 'auto' } : undefined}\n  >\n    {children}\n  </div>\n)\n```\n\nNote that this will modify the DOM structure of your editor, which may have adverse effects on its appearance. During development, it is recommended to set the chunk size to a small number such as 3 so that styling issues caused by nested chunks are easier to detect.\n\nIf you previously had a CSS rule such as this to apply spacing between top-level blocks:\n\n```css\n[data-slate-editor] > * + * {\n  margin-top: 1em;\n}\n```\n\nIt should be changed to this:\n\n```css\n[data-slate-editor] > * + *,\n[data-slate-chunk] > * + * {\n  margin-top: 1em;\n}\n```\n\nAlso bear in mind this warning about `content-visibility: auto` from MDN:\n\n> Since styles for off-screen content are not rendered, elements intentionally hidden with `display: none` or `visibility: hidden` _will still appear in the accessibility tree_. If you don't want an element to appear in the accessibility tree, use `aria-hidden=\"true\"`.\n"
  },
  {
    "path": "jest.config.js",
    "content": "const config = {\n  testMatch: ['<rootDir>/packages/slate-react/test/**/*.{js,ts,tsx,jsx}'],\n  preset: 'ts-jest',\n  transform: {\n    '^.+\\\\.(ts|tsx)$': [\n      'ts-jest',\n      {\n        tsconfig: '<rootDir>/packages/slate-react/tsconfig.json',\n      },\n    ],\n  },\n  testEnvironment: 'jsdom',\n  collectCoverage: true,\n  collectCoverageFrom: ['./packages/slate-react/src/chunking/*'],\n  coverageThreshold: {\n    './packages/slate-react/src/chunking/*': {\n      branches: 100,\n      functions: 100,\n      lines: 100,\n      statements: 100,\n    },\n  },\n}\n\nmodule.exports = config\n"
  },
  {
    "path": "lerna.json",
    "content": "{\n  \"version\": \"0.61.4\",\n  \"npmClient\": \"yarn\",\n  \"$schema\": \"node_modules/lerna/schemas/lerna-schema.json\"\n}\n"
  },
  {
    "path": "now.json",
    "content": "{\n  \"routes\": [\n    {\n      \"src\": \"/(.*)\",\n      \"dest\": \"./site/out/$1\",\n      \"continue\": true\n    }\n  ]\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"private\": true,\n  \"name\": \"slate-packages\",\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"scripts\": {\n    \"build\": \"yarn build:rollup && yarn build:next\",\n    \"build:next\": \"cd ./site && next build\",\n    \"build:rollup\": \"rollup --config ./config/rollup/rollup.config.js --bundleConfigAsCjs\",\n    \"changesetversion\": \"yarn changeset version && yarn install && git add .\",\n    \"clean\": \"rimraf './packages/*/{dist,lib,node_modules}' './site/{.next,out}' --glob\",\n    \"fix\": \"yarn tsc:examples && yarn fix:prettier && yarn fix:eslint\",\n    \"fix:eslint\": \"yarn lint:eslint --fix\",\n    \"fix:prettier\": \"yarn lint:prettier --write\",\n    \"lint\": \"yarn lint:typescript && yarn lint:eslint && yarn lint:prettier\",\n    \"lint:eslint\": \"eslint \\\"./{packages,site}/**/*.{js,jsx,ts,tsx}\\\"\",\n    \"lint:prettier\": \"prettier --check \\\"**/*.{css,md,js,jsx,json,ts,tsx}\\\"\",\n    \"lint:typescript\": \"tsc --build ./ --force\",\n    \"open\": \"open http://localhost:3000\",\n    \"prerelease\": \"NODE_ENV=production yarn build:rollup && yarn test && yarn lint\",\n    \"release:publish:latext\": \"lerna publish --force-publish\",\n    \"release:publish:next\": \"lerna publish --dist-tag next --force-publish\",\n    \"release:publish:experimental\": \"lerna publish --dist-tag experimental\",\n    \"release:latest\": \"yarn prerelease && lerna publish --force-publish\",\n    \"release:next\": \"yarn prerelease && lerna publish --dist-tag next --force-publish\",\n    \"release:experimental\": \"yarn prerelease && lerna publish --dist-tag experimental\",\n    \"internal:release:next\": \"yarn prerelease && yarn changeset publish --tag next\",\n    \"serve\": \"cd ./site && next\",\n    \"start\": \"npm-run-all --parallel --print-label watch serve\",\n    \"test\": \"yarn run test:mocha && yarn run test:jest\",\n    \"test:custom\": \"mocha --require ./config/babel/register.cjs ./packages/slate/test/index.js\",\n    \"test:inspect\": \"yarn test --inspect-brk\",\n    \"test:integration\": \"playwright install --with-deps && run-p -r serve playwright\",\n    \"test:integration-local\": \"playwright install && run-p -r serve playwright\",\n    \"test:integration-docker\": \"./playwright/docker/run-tests.sh\",\n    \"test:mocha\": \"mocha --require ./config/babel/register.cjs ./packages/{slate,slate-history,slate-hyperscript}/test/**/*.{js,ts}\",\n    \"test:jest\": \"jest --config jest.config.js\",\n    \"tsc:examples\": \"tsc --project ./site/tsconfig.example.json\",\n    \"watch\": \"yarn build:rollup --watch\",\n    \"playwright\": \"playwright test\"\n  },\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.23.0\",\n    \"@babel/core\": \"^7.23.2\",\n    \"@babel/helper-call-delegate\": \"^7.12.13\",\n    \"@babel/plugin-external-helpers\": \"^7.22.5\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/plugin-transform-modules-commonjs\": \"^7.23.0\",\n    \"@babel/plugin-transform-runtime\": \"^7.23.2\",\n    \"@babel/polyfill\": \"^7.12.1\",\n    \"@babel/preset-env\": \"^7.23.2\",\n    \"@babel/preset-react\": \"^7.22.15\",\n    \"@babel/preset-typescript\": \"^7.23.2\",\n    \"@babel/register\": \"^7.22.15\",\n    \"@babel/runtime\": \"^7.23.2\",\n    \"@changesets/changelog-github\": \"^0.4.8\",\n    \"@changesets/cli\": \"^2.26.2\",\n    \"@emotion/css\": \"^11.11.2\",\n    \"@faker-js/faker\": \"^10.0.0\",\n    \"@playwright/test\": \"^1.52.0\",\n    \"@types/is-hotkey\": \"^0.1.10\",\n    \"@types/is-url\": \"^1.2.32\",\n    \"@types/jest\": \"29.5.6\",\n    \"@types/lodash\": \"^4.14.200\",\n    \"@types/mocha\": \"^10.0.3\",\n    \"@types/node\": \"^20.8.7\",\n    \"@types/prismjs\": \"^1.26.1\",\n    \"@types/react\": \"^18.2.41\",\n    \"@types/react-dom\": \"^18.2.13\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.8.0\",\n    \"@typescript-eslint/parser\": \"^6.8.0\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"babel-jest\": \"29.7.0\",\n    \"babel-plugin-dev-expression\": \"^0.2.3\",\n    \"babel-plugin-module-resolver\": \"^5.0.0\",\n    \"eslint\": \"^8.51.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-plugin-import\": \"^2.28.1\",\n    \"eslint-plugin-prettier\": \"^5.0.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"image-extensions\": \"^1.1.0\",\n    \"is-hotkey\": \"^0.2.0\",\n    \"is-url\": \"^1.2.4\",\n    \"jest\": \"29.7.0\",\n    \"jest-environment-jsdom\": \"29.7.0\",\n    \"lerna\": \"^7.4.1\",\n    \"lint-staged\": \"^15.0.1\",\n    \"lodash\": \"^4.17.21\",\n    \"mocha\": \"^10.2.0\",\n    \"next\": \"^14.2.32\",\n    \"npm-run-all\": \"^4.1.5\",\n    \"nx\": \"^16.10.0\",\n    \"prettier\": \"^3.0.3\",\n    \"prismjs\": \"^1.29.0\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"react-error-boundary\": \"^4.0.11\",\n    \"react-router-dom\": \"^6.17.0\",\n    \"react-values\": \"^0.3.3\",\n    \"rimraf\": \"^5.0.5\",\n    \"rollup\": \"^4.1.4\",\n    \"rollup-plugin-babel\": \"^4.4.0\",\n    \"rollup-plugin-commonjs\": \"^10.1.0\",\n    \"rollup-plugin-json\": \"^4.0.0\",\n    \"rollup-plugin-node-builtins\": \"^2.1.2\",\n    \"rollup-plugin-node-globals\": \"^1.4.0\",\n    \"rollup-plugin-node-resolve\": \"^5.2.0\",\n    \"rollup-plugin-replace\": \"^2.2.0\",\n    \"rollup-plugin-terser\": \"^7.0.2\",\n    \"rollup-plugin-typescript2\": \"^0.36.0\",\n    \"shell-quote\": \"^1.8.1\",\n    \"simple-git-hooks\": \"^2.9.0\",\n    \"slate\": \"workspace:*\",\n    \"slate-dom\": \"workspace:*\",\n    \"slate-history\": \"workspace:*\",\n    \"slate-hyperscript\": \"workspace:*\",\n    \"slate-react\": \"workspace:*\",\n    \"source-map-loader\": \"^4.0.1\",\n    \"ts-jest\": \"^29.1.1\",\n    \"typescript\": \"5.2.2\"\n  },\n  \"simple-git-hooks\": {\n    \"pre-commit\": \"yarn lint-staged\"\n  },\n  \"lint-staged\": {\n    \"*.{css,md,js,jsx,json,ts,tsx}\": [\n      \"prettier --write\",\n      \"eslint --fix\"\n    ]\n  },\n  \"packageManager\": \"yarn@4.0.2\"\n}\n"
  },
  {
    "path": "packages/slate/CHANGELOG.md",
    "content": "# slate\n\n## 0.123.0\n\n### Minor Changes\n\n- [#6000](https://github.com/ianstormtaylor/slate/pull/6000) [`8d9bf305`](https://github.com/ianstormtaylor/slate/commit/8d9bf30595a6fad62ff15e302ab489ff46a2515a) Thanks [@nabbydude](https://github.com/nabbydude)! - Added `Location.isPath`, `Location.isPoint`, `Location.isRange`, and `Location.isSpan` functions, as efficient type discriminators.\n  Use these instead of `Path.isPath`, `Point.isPoint`, `Range.isRange`, and `Span.isSpan` whenever possible.\n\n## 0.122.0\n\n### Minor Changes\n\n- [#5970](https://github.com/ianstormtaylor/slate/pull/5970) [`893cac3e`](https://github.com/ianstormtaylor/slate/commit/893cac3e4ec9233e8499ad93b2b063dddb22371f) Thanks [@nabbydude](https://github.com/nabbydude)! - Optimized normalizeNode implementation, should work the same, but may behave slightly differently if you give it something really malformed\n\n## 0.121.0\n\n### Minor Changes\n\n- [#5982](https://github.com/ianstormtaylor/slate/pull/5982) [`dd4a77b3`](https://github.com/ianstormtaylor/slate/commit/dd4a77b3c5bb5d2d3cd6a62f49d6f318d30d6727) Thanks [@nabbydude](https://github.com/nabbydude)! - Add `Node.isEditor`, `Node.isElement`, and `Node.isText` as alternative type guards for when we already know the object is a node.\n  Use these new functions instead of `Editor.isEditor`, `Element.isElement`, and `Text.isText` whenever possible, the classic functions are only necessary for typechecking an entirely unknown object.\n  ===\n\n## 0.120.0\n\n### Patch Changes\n\n- [#5971](https://github.com/ianstormtaylor/slate/pull/5971) [`addf0c51`](https://github.com/ianstormtaylor/slate/commit/addf0c5128bd48693f86a2c97cea133b66dd87e6) Thanks [@nabbydude](https://github.com/nabbydude)! - Removed the last traces of immer and eliminated it as a dependency\n\n## 0.118.1\n\n### Patch Changes\n\n- [#5929](https://github.com/ianstormtaylor/slate/pull/5929) [`fdaa9c80`](https://github.com/ianstormtaylor/slate/commit/fdaa9c8088e81bde2618784b42027be44598d11c) Thanks [@12joan](https://github.com/12joan)! - - Fix error when a non-selectable node has no next or previous node\n\n  - Do not return points from `Editor.positions` that are inside non-selectable nodes\n    - Previously, `editor.isSelectable` was handled incorrectly inside `Editor.positions`. When encountering a non-selectable node, it would immediately return the point before or after it (depending on `reverse`), but it would not skip returning points inside the non-selectable node if more than one point was consumed from `Editor.positions`.\n\n- [#5943](https://github.com/ianstormtaylor/slate/pull/5943) [`aaad6717`](https://github.com/ianstormtaylor/slate/commit/aaad6717d2f3a74c2295b59c40bcc86cbb5a9b54) Thanks [@12joan](https://github.com/12joan)! - Fix: The `split: true` option on `Transforms.wrapNodes` does not work correctly when one or more points is at the start or end of a text node.\n\n- [#5926](https://github.com/ianstormtaylor/slate/pull/5926) [`cf10119a`](https://github.com/ianstormtaylor/slate/commit/cf10119ad858b79d624d1e35814f534c20a9d362) Thanks [@12joan](https://github.com/12joan)! - Use generics for the return type of `Node.fragment`\n\n## 0.118.0\n\n### Minor Changes\n\n- [#5923](https://github.com/ianstormtaylor/slate/pull/5923) [`ba33735a`](https://github.com/ianstormtaylor/slate/commit/ba33735a8ca7ca7437e891365451d25a6646a4c7) Thanks [@12joan](https://github.com/12joan)! - - When removing a text node containing the cursor, always perfer placing the cursor in a sibling text node if one exists.\n  - Previously, the selection would enter a sibling inline in some circumstances, even when a sibling text node was available.\n  - The most noticeable effect of this change occurs when pressing backspace at the start of line N when the last non-empty node in line N-1 is an inline.\n    - Before, the cursor would be placed inside the inline.\n    - Now, the cursor is placed outside the inline.\n\n## 0.117.2\n\n### Patch Changes\n\n- [#5899](https://github.com/ianstormtaylor/slate/pull/5899) [`94fb04a4`](https://github.com/ianstormtaylor/slate/commit/94fb04a42c0d071c0778dd1369afb360c1ce5f11) Thanks [@12joan](https://github.com/12joan)! - Fix: `editor.selection` is sometimes replaced with a new object even if the selection did not change\n\n## 0.117.0\n\n### Minor Changes\n\n- [#5885](https://github.com/ianstormtaylor/slate/pull/5885) [`c56a98fd`](https://github.com/ianstormtaylor/slate/commit/c56a98fd65183ddd9e0e711e615687bf2437e677) Thanks [@felixfeng33](https://github.com/felixfeng33)! - - Remove `ignoreNonSelectable` option from positions,before,after,nodes.\n  - Fix move behavior when encounter non-selectable inline voids.\n\n### Patch Changes\n\n- [#5890](https://github.com/ianstormtaylor/slate/pull/5890) [`9862ae71`](https://github.com/ianstormtaylor/slate/commit/9862ae71bff60d99f423b44937ec9cf662698622) Thanks [@joblolin95](https://github.com/joblolin95)! - Handle backspace correctly for grapheme clusters in Burmese, Hindi, Khmer, Malayalam, Oriya, Punjabi, Tamil, and Telugu.\n\n## 0.116.0\n\n### Patch Changes\n\n- [#5871](https://github.com/ianstormtaylor/slate/pull/5871) [`fb87646e`](https://github.com/ianstormtaylor/slate/commit/fb87646e8643e1d0547134cea9d1f57912f06a92) Thanks [@12joan](https://github.com/12joan)! - - PERF: Use pure JS instead of Immer for applying operations and transforming points and ranges. Immer is now used only for producing fragments.\n\n## 0.115.1\n\n### Patch Changes\n\n- [#5887](https://github.com/ianstormtaylor/slate/pull/5887) [`293aca9c`](https://github.com/ianstormtaylor/slate/commit/293aca9c7aa20ec5b99bbe1130237fa6b7ee758d) Thanks [@12joan](https://github.com/12joan)! - Handle backspace correctly for grapheme clusters in Bengali\n\n## 0.115.0\n\n### Minor Changes\n\n- [#5878](https://github.com/ianstormtaylor/slate/pull/5878) [`11b957a4`](https://github.com/ianstormtaylor/slate/commit/11b957a44171634d032d79ad8feaf548b78e58b0) Thanks [@ahoisl](https://github.com/ahoisl)! - Allow to prevent data-loss in normalizeNode\n\n### Patch Changes\n\n- [#5880](https://github.com/ianstormtaylor/slate/pull/5880) [`de260565`](https://github.com/ianstormtaylor/slate/commit/de260565c70c1a39acd02961f76ede6ff094b881) Thanks [@nabbydude](https://github.com/nabbydude)! - Optimize editor#above and allow passing a location that doesnt exist as long as its parent exists\n\n- [#5875](https://github.com/ianstormtaylor/slate/pull/5875) [`896bc9c7`](https://github.com/ianstormtaylor/slate/commit/896bc9c7c75e929e861e341fc4d7cc7395e8e82a) Thanks [@12joan](https://github.com/12joan)! - Fix: Inserting a fragment containing exactly two blocks merges those blocks together.\n\n- [#5859](https://github.com/ianstormtaylor/slate/pull/5859) [`72532fd2`](https://github.com/ianstormtaylor/slate/commit/72532fd2d7be594251ea26fefb5c1ce8337b76ed) Thanks [@12joan](https://github.com/12joan)! - Optimize `isElement`, `isText`, `isNodeList` and `isEditor` by removing dependency on `is-plain-object` and by performing shallow checks by default. To perform a full check, including all descendants, pass the `{ deep: true }` option to `isElement`, `isNodeList` or `isEditor`.\n\n## 0.114.0\n\n### Minor Changes\n\n- [#5850](https://github.com/ianstormtaylor/slate/pull/5850) [`22a3dda3`](https://github.com/ianstormtaylor/slate/commit/22a3dda36d4362d5dfdb9a75836297dae8cd7f9e) Thanks [@zbeyens](https://github.com/zbeyens)! - - Update `Text.decorations` to return the positions in addition to the leaf nodes: `{ leaf: Text, position?: { start: number, end: number, isFirst: boolean, isLast: boolean } }[]`.\n\n## 0.113.0\n\n### Minor Changes\n\n- [#5843](https://github.com/ianstormtaylor/slate/pull/5843) [`63c0db5b`](https://github.com/ianstormtaylor/slate/commit/63c0db5b862137490baf2883d4378efd0b6311de) Thanks [@12joan](https://github.com/12joan)! - Add `pass` option to `Editor.nodes`, which is passed through to `Node.nodes`.\n\n### Patch Changes\n\n- [#5842](https://github.com/ianstormtaylor/slate/pull/5842) [`463ef3a6`](https://github.com/ianstormtaylor/slate/commit/463ef3a6504020a869fa06e4dd722f72de32677a) Thanks [@wkq](https://github.com/wkq)! - fix: correct dirty path update for Text nodes\n\n## 0.112.0\n\n### Minor Changes\n\n- [#5776](https://github.com/ianstormtaylor/slate/pull/5776) [`5a1c728c`](https://github.com/ianstormtaylor/slate/commit/5a1c728c62bcc6bafe60b9598946bb3adde21cdf) Thanks [@yf-yang](https://github.com/yf-yang)! - Add `merge` optional function to decorations and change related type signatures to `DecoratedRange`. Now developers can specify how two decoration object with the same key but different value are merged together if they overlap\"\n\n### Patch Changes\n\n- [#5768](https://github.com/ianstormtaylor/slate/pull/5768) [`4bc552f7`](https://github.com/ianstormtaylor/slate/commit/4bc552f71ff75c4b7ad18386a65dabdd8b4e1bba) Thanks [@ahoisl](https://github.com/ahoisl)! - Keep data in normalization when blocks are not allowed\n\n## 0.110.2\n\n### Patch Changes\n\n- [#5723](https://github.com/ianstormtaylor/slate/pull/5723) [`ee2c4540`](https://github.com/ianstormtaylor/slate/commit/ee2c45408cba9ca827df3bab0696ba5cb5ace886) Thanks [@RavenColEvol](https://github.com/RavenColEvol)! - feat: add Node.getIf method\n\n- [#5725](https://github.com/ianstormtaylor/slate/pull/5725) [`f31167cf`](https://github.com/ianstormtaylor/slate/commit/f31167cf5fa0b4f0385cd4db9123ebe403141e11) Thanks [@WindRunnerMax](https://github.com/WindRunnerMax)! - fix marks at the start of the selection\n\n- [#5729](https://github.com/ianstormtaylor/slate/pull/5729) [`b1a10216`](https://github.com/ianstormtaylor/slate/commit/b1a1021612b504bbc75488d650dc4d3eb926f20c) Thanks [@electroluxcode](https://github.com/electroluxcode)! - feat: add prop surrounds with range\n\n## 0.103.0\n\n### Minor Changes\n\n- [#5621](https://github.com/ianstormtaylor/slate/pull/5621) [`d271c4be`](https://github.com/ianstormtaylor/slate/commit/d271c4be543027be2197f353d7ea61b51e9c48c6) Thanks [@felixfeng33](https://github.com/felixfeng33)! - Add a `shouldMergeNodesRemovePrevNode` editor method to control when `Transforms.mergeNodes` should remove the previous node rather than carrying out a merge operation.\n\n### Patch Changes\n\n- [#5620](https://github.com/ianstormtaylor/slate/pull/5620) [`4470f370`](https://github.com/ianstormtaylor/slate/commit/4470f370570ed1f2dce8b4b58d6117d3a87fa6c0) Thanks [@JohnCosta27](https://github.com/JohnCosta27)! - Making `normalizeNode` capable of normalizing erronous nodes, making slate more resilient.\n\n## 0.102.0\n\n### Minor Changes\n\n- [#5543](https://github.com/ianstormtaylor/slate/pull/5543) [`3aaf3b51`](https://github.com/ianstormtaylor/slate/commit/3aaf3b517c2020c198bffe0f3aa8156746914408) Thanks [@mainhanu](https://github.com/mainhanu)! - Transform.insertNodes & Transform.insertFragment performance optimize\n\n## 0.101.5\n\n### Patch Changes\n\n- [#5316](https://github.com/ianstormtaylor/slate/pull/5316) [`8ba3a9c0`](https://github.com/ianstormtaylor/slate/commit/8ba3a9c0348f73324b7c9ec32a4bbd348564d4f0) Thanks [@GeneralChauhan](https://github.com/GeneralChauhan)! - Punctuation Mark \"+\" Support Added\n\n## 0.101.4\n\n### Patch Changes\n\n- [#5580](https://github.com/ianstormtaylor/slate/pull/5580) [`a374895b`](https://github.com/ianstormtaylor/slate/commit/a374895b3265ad60dbfe563eaa1a9415a440620e) Thanks [@Kaporos](https://github.com/Kaporos)! - Fix firefox double-click marks issue\n\n## 0.101.1\n\n### Patch Changes\n\n- [#5562](https://github.com/ianstormtaylor/slate/pull/5562) [`91400a8e`](https://github.com/ianstormtaylor/slate/commit/91400a8e341b20194ce2fca078d8ba4b7a0476ea) Thanks [@YaoKaiLun](https://github.com/YaoKaiLun)! - Fix the 'select' parameter of the insertNodes function has been overridden\n\n## 0.100.0\n\n### Minor Changes\n\n- [#5528](https://github.com/ianstormtaylor/slate/pull/5528) [`c4c14882`](https://github.com/ianstormtaylor/slate/commit/c4c14882edf13828f6583a88e50754ce63583bd7) Thanks [@dylans](https://github.com/dylans)! - Update dependencies to React 18, Node 20, TS 5.2, etc.\n\n## 0.94.1\n\n### Patch Changes\n\n- [#5415](https://github.com/ianstormtaylor/slate/pull/5415) [`01f0210b`](https://github.com/ianstormtaylor/slate/commit/01f0210bccfe2c3a81c252f527bad9ded36a68ff) Thanks [@zbeyens](https://github.com/zbeyens)! - `Editor.insertFragment`, `Editor.insertNode`, `Editor.insertText` now accept `options`.\n  For all insert methods, the default location is now the editor selection if `at` is not defined, or the end of document if `editor.selection` is not defined.\n\n## 0.94.0\n\n### Minor Changes\n\n- [#5307](https://github.com/ianstormtaylor/slate/pull/5307) [`3243c7e3`](https://github.com/ianstormtaylor/slate/commit/3243c7e34ac2602618c67c88b1b7df07fde1c2ec) Thanks [@zbeyens](https://github.com/zbeyens)! - New Features:\n\n  - All **`Editor`** and **`Transforms`** methods now call **`editor`** methods. For example: **`Transforms.insertBreak`** now calls **`editor.insertBreak`**.\n  - **`editor.setNodes`** now calls **`setNodes`**, an exported function that implements the default editor behavior.\n  - You can now override **`editor.setNodes`** with your own implementation.\n  - You can use either **`Editor.setNodes`** or **`editor.setNodes`** in your code, and both will use your overridden behavior.\n\n  The **`editor`** object now has many more methods:\n\n  ```tsx\n  export interface BaseEditor {\n    // Core state.\n\n    children: Descendant[]\n    selection: Selection\n    operations: Operation[]\n    marks: EditorMarks | null\n\n    // Overrideable core methods.\n\n    apply: (operation: Operation) => void\n    getDirtyPaths: (operation: Operation) => Path[]\n    getFragment: () => Descendant[]\n    isElementReadOnly: (element: Element) => boolean\n    isSelectable: (element: Element) => boolean\n    markableVoid: (element: Element) => boolean\n    normalizeNode: (\n      entry: NodeEntry,\n      options?: { operation?: Operation }\n    ) => void\n    onChange: (options?: { operation?: Operation }) => void\n    shouldNormalize: ({\n      iteration,\n      dirtyPaths,\n      operation,\n    }: {\n      iteration: number\n      initialDirtyPathsLength: number\n      dirtyPaths: Path[]\n      operation?: Operation\n    }) => boolean\n\n    // Overrideable core transforms.\n\n    addMark: OmitFirstArg<typeof Editor.addMark>\n    collapse: OmitFirstArg<typeof Transforms.collapse>\n    delete: OmitFirstArg<typeof Transforms.delete>\n    deleteBackward: (unit: TextUnit) => void\n    deleteForward: (unit: TextUnit) => void\n    deleteFragment: OmitFirstArg<typeof Editor.deleteFragment>\n    deselect: OmitFirstArg<typeof Transforms.deselect>\n    insertBreak: OmitFirstArg<typeof Editor.insertBreak>\n    insertFragment: OmitFirstArg<typeof Transforms.insertFragment>\n    insertNode: OmitFirstArg<typeof Editor.insertNode>\n    insertNodes: OmitFirstArg<typeof Transforms.insertNodes>\n    insertSoftBreak: OmitFirstArg<typeof Editor.insertSoftBreak>\n    insertText: OmitFirstArg<typeof Transforms.insertText>\n    liftNodes: OmitFirstArg<typeof Transforms.liftNodes>\n    mergeNodes: OmitFirstArg<typeof Transforms.mergeNodes>\n    move: OmitFirstArg<typeof Transforms.move>\n    moveNodes: OmitFirstArg<typeof Transforms.moveNodes>\n    normalize: OmitFirstArg<typeof Editor.normalize>\n    removeMark: OmitFirstArg<typeof Editor.removeMark>\n    removeNodes: OmitFirstArg<typeof Transforms.removeNodes>\n    select: OmitFirstArg<typeof Transforms.select>\n    setNodes: <T extends Node>(\n      props: Partial<T>,\n      options?: {\n        at?: Location\n        match?: NodeMatch<T>\n        mode?: MaximizeMode\n        hanging?: boolean\n        split?: boolean\n        voids?: boolean\n        compare?: PropsCompare\n        merge?: PropsMerge\n      }\n    ) => void\n    setNormalizing: OmitFirstArg<typeof Editor.setNormalizing>\n    setPoint: OmitFirstArg<typeof Transforms.setPoint>\n    setSelection: OmitFirstArg<typeof Transforms.setSelection>\n    splitNodes: OmitFirstArg<typeof Transforms.splitNodes>\n    unsetNodes: OmitFirstArg<typeof Transforms.unsetNodes>\n    unwrapNodes: OmitFirstArg<typeof Transforms.unwrapNodes>\n    withoutNormalizing: OmitFirstArg<typeof Editor.withoutNormalizing>\n    wrapNodes: OmitFirstArg<typeof Transforms.wrapNodes>\n\n    // Overrideable core queries.\n\n    above: <T extends Ancestor>(\n      options?: EditorAboveOptions<T>\n    ) => NodeEntry<T> | undefined\n    after: OmitFirstArg<typeof Editor.after>\n    before: OmitFirstArg<typeof Editor.before>\n    edges: OmitFirstArg<typeof Editor.edges>\n    elementReadOnly: OmitFirstArg<typeof Editor.elementReadOnly>\n    end: OmitFirstArg<typeof Editor.end>\n    first: OmitFirstArg<typeof Editor.first>\n    fragment: OmitFirstArg<typeof Editor.fragment>\n    getMarks: OmitFirstArg<typeof Editor.marks>\n    hasBlocks: OmitFirstArg<typeof Editor.hasBlocks>\n    hasInlines: OmitFirstArg<typeof Editor.hasInlines>\n    hasPath: OmitFirstArg<typeof Editor.hasPath>\n    hasTexts: OmitFirstArg<typeof Editor.hasTexts>\n    isBlock: OmitFirstArg<typeof Editor.isBlock>\n    isEdge: OmitFirstArg<typeof Editor.isEdge>\n    isEmpty: OmitFirstArg<typeof Editor.isEmpty>\n    isEnd: OmitFirstArg<typeof Editor.isEnd>\n    isInline: OmitFirstArg<typeof Editor.isInline>\n    isNormalizing: OmitFirstArg<typeof Editor.isNormalizing>\n    isStart: OmitFirstArg<typeof Editor.isStart>\n    isVoid: OmitFirstArg<typeof Editor.isVoid>\n    last: OmitFirstArg<typeof Editor.last>\n    leaf: OmitFirstArg<typeof Editor.leaf>\n    levels: <T extends Node>(\n      options?: EditorLevelsOptions<T>\n    ) => Generator<NodeEntry<T>, void, undefined>\n    next: <T extends Descendant>(\n      options?: EditorNextOptions<T>\n    ) => NodeEntry<T> | undefined\n    node: OmitFirstArg<typeof Editor.node>\n    nodes: <T extends Node>(\n      options?: EditorNodesOptions<T>\n    ) => Generator<NodeEntry<T>, void, undefined>\n    parent: OmitFirstArg<typeof Editor.parent>\n    path: OmitFirstArg<typeof Editor.path>\n    pathRef: OmitFirstArg<typeof Editor.pathRef>\n    pathRefs: OmitFirstArg<typeof Editor.pathRefs>\n    point: OmitFirstArg<typeof Editor.point>\n    pointRef: OmitFirstArg<typeof Editor.pointRef>\n    pointRefs: OmitFirstArg<typeof Editor.pointRefs>\n    positions: OmitFirstArg<typeof Editor.positions>\n    previous: <T extends Node>(\n      options?: EditorPreviousOptions<T>\n    ) => NodeEntry<T> | undefined\n    range: OmitFirstArg<typeof Editor.range>\n    rangeRef: OmitFirstArg<typeof Editor.rangeRef>\n    rangeRefs: OmitFirstArg<typeof Editor.rangeRefs>\n    start: OmitFirstArg<typeof Editor.start>\n    string: OmitFirstArg<typeof Editor.string>\n    unhangRange: OmitFirstArg<typeof Editor.unhangRange>\n    void: OmitFirstArg<typeof Editor.void>\n  }\n  ```\n\n  Note:\n\n  - None of these method implementations have changed.\n  - **`getMarks`** is an exception, as there is already **`editor.marks`** that stores the current marks.\n  - **`Transforms.insertText`** has not been moved to **`editor`** yet: there is already an **`editor.insertText`** method with extended behavior. This may change in a future release, but this release is trying to avoid any breaking changes.\n  - **`editor.insertText`** has a new argument (third): **`options?: TextInsertTextOptions`** to match **`Transforms.insertText`**.\n\n  Bug Fixes:\n\n  - Moving JSDoc's to the interface type to allow IDEs access to the interface methods.\n\n### Patch Changes\n\n- [#5396](https://github.com/ianstormtaylor/slate/pull/5396) [`bc945eb1`](https://github.com/ianstormtaylor/slate/commit/bc945eb12c612ef2688869d256416c8e37e32c07) Thanks [@Moerphy](https://github.com/Moerphy)! - Correct core normalization that could cause wrong nodes to be removed\n\n## 0.93.0\n\n### Minor Changes\n\n- [#5374](https://github.com/ianstormtaylor/slate/pull/5374) [`b52e08b0`](https://github.com/ianstormtaylor/slate/commit/b52e08b0eafdcf1c77439e282c9dc89a4c72fbf1) Thanks [@12joan](https://github.com/12joan)! - - Add `isSelectable` to `editor` (default true). A non-selectable element is skipped over when navigating using arrow keys.\n  - Add `ignoreNonSelectable` to `Editor.nodes`, `Editor.positions`, `Editor.after` and `Editor.before` (default false)\n  - `Transforms.move` ignores non-selectable elements\n\n* [#5374](https://github.com/ianstormtaylor/slate/pull/5374) [`b52e08b0`](https://github.com/ianstormtaylor/slate/commit/b52e08b0eafdcf1c77439e282c9dc89a4c72fbf1) Thanks [@12joan](https://github.com/12joan)! - - Add `isElementReadOnly` to `editor`. A read-only element behaves much like a void with regard to selection and deletion, but renders its `children` the same as any other non-void node.\n\n## 0.91.4\n\n### Patch Changes\n\n- [#5311](https://github.com/ianstormtaylor/slate/pull/5311) [`0ac72a62`](https://github.com/ianstormtaylor/slate/commit/0ac72a626c41a9e259dc945b408d09367eca4b3f) Thanks [@zbeyens](https://github.com/zbeyens)! - Fix #5295 regression. `editor.shouldNormalize` new option: `initialDirtyPathsLength: number`\n\n## 0.91.3\n\n### Patch Changes\n\n- [#5295](https://github.com/ianstormtaylor/slate/pull/5295) [`84f811a7`](https://github.com/ianstormtaylor/slate/commit/84f811a79c9b76050cb3dbe424efca3192cc44c6) Thanks [@zbeyens](https://github.com/zbeyens)! - New `editor` method that can be overridden to control when the normalization should stop. Default behavior (unchanged) is to throw an error when it iterates over 42 times the dirty paths length.\n\n  ```ts\n  shouldNormalize: ({\n    iteration,\n    dirtyPaths,\n    operation,\n  }: {\n    iteration: number\n    dirtyPaths: Path[]\n    operation?: Operation\n  }) => boolean\n  ```\n\n  - `editor.onChange` signature change: `(options?: { operation?: Operation }) => void` where `operation` is triggering the function.\n  - `editor.normalizeNode` signature change: `(entry: NodeEntry, options?: { operation?: Operation }) => void` where `operation` is triggering the function.\n  - `EditorNormalizeOptions` new option `operation?: Operation` where `operation` is triggering the function.\n\n## 0.91.1\n\n### Patch Changes\n\n- [#5251](https://github.com/ianstormtaylor/slate/pull/5251) [`6fa4b954`](https://github.com/ianstormtaylor/slate/commit/6fa4b954a5e4c67cff87d00b1253b2a838c0db94) Thanks [@YaoKaiLun](https://github.com/YaoKaiLun)! - Fix the cursor jump to an unexpected position after deleting in android\n\n## 0.90.0\n\n### Patch Changes\n\n- [#5278](https://github.com/ianstormtaylor/slate/pull/5278) [`9c4097a2`](https://github.com/ianstormtaylor/slate/commit/9c4097a26fa92718e6f4fc1f984a70fb5af42ca2) Thanks [@kylemclean](https://github.com/kylemclean)! - Revert to using inline styles for default editor styles\n\n## 0.88.1\n\n### Patch Changes\n\n- [#5235](https://github.com/ianstormtaylor/slate/pull/5235) [`36203b3f`](https://github.com/ianstormtaylor/slate/commit/36203b3f10fc1ee154923c7c75ce7912fec1e6f7) Thanks [@ppiotrowicz](https://github.com/ppiotrowicz)! - Fixed Editor.above method that always returned undefined with Point location\n\n## 0.87.0\n\n### Minor Changes\n\n- [#5206](https://github.com/ianstormtaylor/slate/pull/5206) [`96b7fcdb`](https://github.com/ianstormtaylor/slate/commit/96b7fcdbf98a7c8908f5d9613d9898cb24a8ae47) Thanks [@kylemclean](https://github.com/kylemclean)! - Use stylesheet for default styles on Editable components\n\n## 0.86.0\n\n### Patch Changes\n\n- [#5189](https://github.com/ianstormtaylor/slate/pull/5189) [`fbc9838f`](https://github.com/ianstormtaylor/slate/commit/fbc9838fd72e78bfa9af49013981939773dcca11) Thanks [@SmilinBrian](https://github.com/SmilinBrian)! - Add hanging option to unsetNodes so it matches setNodes\n\n* [#5193](https://github.com/ianstormtaylor/slate/pull/5193) [`6909a8f7`](https://github.com/ianstormtaylor/slate/commit/6909a8f7da0f70b1ef3b5c3a665e8d0d09e6fa99) Thanks [@SmilinBrian](https://github.com/SmilinBrian)! - Stops Editor.unhangRange() from adjusting the range in some cases when it was not actually hanging\n\n- [#5186](https://github.com/ianstormtaylor/slate/pull/5186) [`e416d00b`](https://github.com/ianstormtaylor/slate/commit/e416d00b6c95d05a1e10f738bfbbddd6cb940ab6) Thanks [@SmilinBrian](https://github.com/SmilinBrian)! - Report marks applied to a markableVoid if selection is collapsed\n\n## 0.85.0\n\n### Patch Changes\n\n- [#5135](https://github.com/ianstormtaylor/slate/pull/5135) [`346f6572`](https://github.com/ianstormtaylor/slate/commit/346f6572fc8fdb6504bb18d8676f5bdeef7014eb) Thanks [@SmilinBrian](https://github.com/SmilinBrian)! - Allow void elements to receive marks via markableVoid()\n\n* [#5168](https://github.com/ianstormtaylor/slate/pull/5168) [`3c49ff28`](https://github.com/ianstormtaylor/slate/commit/3c49ff28b3d188f69d8361bd682b7e8d0a1c13b6) Thanks [@i-artist](https://github.com/i-artist)! - Fixed above method that failed to get parentEntry when selection was range\n\n## 0.84.0\n\n### Minor Changes\n\n- [#5137](https://github.com/ianstormtaylor/slate/pull/5137) [`a2184d86`](https://github.com/ianstormtaylor/slate/commit/a2184d86571cfd0d89beb67863c444a988174937) Thanks [@mainhanu](https://github.com/mainhanu)! - transform.delete and transform.insertFragment performance optimize\n\n## 0.82.1\n\n### Patch Changes\n\n- [#5069](https://github.com/ianstormtaylor/slate/pull/5069) [`46d113fe`](https://github.com/ianstormtaylor/slate/commit/46d113fe1e102c87772681fdd90a086e37a3200d) Thanks [@krenzke](https://github.com/krenzke)! - Expose getDirtyPaths method on Editor object to allow for customization\n\n## 0.82.0\n\n### Patch Changes\n\n- [#4988](https://github.com/ianstormtaylor/slate/pull/4988) [`fbab6331`](https://github.com/ianstormtaylor/slate/commit/fbab6331a5ecebd9e98c6c8c87d6f4b3b7c43bd0) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Android input handling rewrite, replace composition insert prefixes with decoration based mark placeholders\n\n## 0.81.3\n\n### Patch Changes\n\n- [#5042](https://github.com/ianstormtaylor/slate/pull/5042) [`11a93e65`](https://github.com/ianstormtaylor/slate/commit/11a93e65de4b197a43777e575caf13d7a05d5dc9) Thanks [@bryanph](https://github.com/bryanph)! - Upgrade next.js and source-map-loader packages\n\n* [#5018](https://github.com/ianstormtaylor/slate/pull/5018) [`f13cd6b9`](https://github.com/ianstormtaylor/slate/commit/f13cd6b9180e18201b2a001b6f5d109218071319) Thanks [@ulion](https://github.com/ulion)! - Fix for insertFragment text/inline + block mixed fragments.\n\n## 0.81.2\n\n### Patch Changes\n\n- [#5029](https://github.com/ianstormtaylor/slate/pull/5029) [`736662f8`](https://github.com/ianstormtaylor/slate/commit/736662f80838902f8560554fae704c13c5d8e227) Thanks [@hanagejet](https://github.com/hanagejet)! - fix: `Path.previous()` dose not working when path is `null`\n\n## 0.81.1\n\n### Patch Changes\n\n- [#5015](https://github.com/ianstormtaylor/slate/pull/5015) [`9ae37287`](https://github.com/ianstormtaylor/slate/commit/9ae372875df1ee3ef6041f5d6bd2f57ee8291ea0) Thanks [@tithanayut](https://github.com/tithanayut)! - Fix deleteBackward behavior for Thai script where deleting N character(s) backward should delete\n  N code point(s) instead of an entire grapheme cluster\n\n## 0.81.0\n\n### Minor Changes\n\n- [#4999](https://github.com/ianstormtaylor/slate/pull/4999) [`fe13a8f9`](https://github.com/ianstormtaylor/slate/commit/fe13a8f9e750569342ee004951e34233ab6614bf) Thanks [@alexandercampbell](https://github.com/alexandercampbell)! - Add new Slate.Scrubber interface to allow scrubbing end user data from exception\n  text. The default behavior remains unchanged.\n\n## 0.80.0\n\n### Minor Changes\n\n- [#4892](https://github.com/ianstormtaylor/slate/pull/4892) [`d2fc25c3`](https://github.com/ianstormtaylor/slate/commit/d2fc25c3c31453597f59cd2ac6ba087a1beb1fe3) Thanks [@suilang](https://github.com/suilang)! - update insertText logic when selection is not collapsed\n\n### Patch Changes\n\n- [#5008](https://github.com/ianstormtaylor/slate/pull/5008) [`e9ea2815`](https://github.com/ianstormtaylor/slate/commit/e9ea2815950fc6b78fb0a2ba0e5d95c8553ac023) Thanks [@steve-codaio](https://github.com/steve-codaio)! - Revert to previous position behavior around inline voids\n\n## 0.78.0\n\n### Minor Changes\n\n- [#4974](https://github.com/ianstormtaylor/slate/pull/4974) [`3b7a1bf7`](https://github.com/ianstormtaylor/slate/commit/3b7a1bf72d0c3951416c771f7f149bfbda411111) Thanks [@dylans](https://github.com/dylans)! - Added types for options and common string literals, thanks @JoshuaKGoldberg\n\n## 0.77.2\n\n### Patch Changes\n\n- [#4952](https://github.com/ianstormtaylor/slate/pull/4952) [`9ce0a08c`](https://github.com/ianstormtaylor/slate/commit/9ce0a08c2a8b2b72df14141a06ca08825a66d472) Thanks [@steve-codaio](https://github.com/steve-codaio)! - Fix positions iteration when starting inside an inline void node\n\n## 0.77.0\n\n### Patch Changes\n\n- [#4939](https://github.com/ianstormtaylor/slate/pull/4939) [`c39c8082`](https://github.com/ianstormtaylor/slate/commit/c39c8082a97dec8fc9ba64568d817ba87e348b48) Thanks [@ahoisl](https://github.com/ahoisl)! - Fix pointRef leaks caused by not unref'ing\n\n## 0.76.1\n\n### Patch Changes\n\n- [#4914](https://github.com/ianstormtaylor/slate/pull/4914) [`aff67312`](https://github.com/ianstormtaylor/slate/commit/aff67312cbfa7e45df5cf6abcaec9f4f7d5f1a89) Thanks [@sennpang](https://github.com/sennpang)! - Fixed Triple click selection and copy&paste in read-only mode\n\n## 0.76.0\n\n### Minor Changes\n\n- [#4873](https://github.com/ianstormtaylor/slate/pull/4873) [`20acca4b`](https://github.com/ianstormtaylor/slate/commit/20acca4bc8f31bd1aa6fbca2c49aaae5f31cadfe) Thanks [@bryanph](https://github.com/bryanph)! - A different behavior for inserting a soft break with shift+enter is quite common in rich text editors. Right now you have to do this in onKeyDown which is not so nice. This adds a separate insertSoftBreak method on the editor instance that gets called when a soft break is inserted. This maintains the current default behavior for backwards compatibility (it just splits the block). But at least you can easily overwrite it now.\n\n  If you rely on overwriting editor.insertBreak for extra behavior for soft breaks this might be a breaking change for you and you should overwrite editor.insertSoftBreak instead.\n\n### Patch Changes\n\n- [#4912](https://github.com/ianstormtaylor/slate/pull/4912) [`43ca2b56`](https://github.com/ianstormtaylor/slate/commit/43ca2b56c8bd8bcc30dd38808dd191f804d53ae4) Thanks [@zhugexinxin](https://github.com/zhugexinxin)! - feat: add merge to setNodes and test\n\n## 0.75.0\n\n### Patch Changes\n\n- [#4889](https://github.com/ianstormtaylor/slate/pull/4889) [`970523f`](https://github.com/ianstormtaylor/slate/commit/970523f881bf1918f91cb9de87c961dfb965e8a1)(https://github.com/ianstormtaylor/slate/commit/970523f881bf1918f91cb9de87c961dfb965e8a1) Thanks [@zhugexinxin](https://github.com/zhugexinxin)! - feat: add custom compare node props\n\n## 0.73.1\n\n### Patch Changes\n\n- [#4858](https://github.com/ianstormtaylor/slate/pull/4858) [`33be22f3`](https://github.com/ianstormtaylor/slate/commit/33be22f3e3a0321ded199b13c0d97ae577c6b941) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Reverted #4804 as it triggered an exception when inserting text with multi-block selection\n\n## 0.73.0\n\n### Minor Changes\n\n- [#4848](https://github.com/ianstormtaylor/slate/pull/4848) [`482b090e`](https://github.com/ianstormtaylor/slate/commit/482b090e6f6f4c5fbc85e6dd2ea65387156ae8b5) Thanks [@rockettomatooo](https://github.com/rockettomatooo)! - fix point transform for insert_text operations to account for affinity\n\n## 0.72.8\n\n### Patch Changes\n\n- [#4804](https://github.com/ianstormtaylor/slate/pull/4804) [`03861afc`](https://github.com/ianstormtaylor/slate/commit/03861afc62c3b27339d20151ca8a3e52f51ff973) Thanks [@suilang](https://github.com/suilang)! - update insertText logic when selection is not collapsed\n\n## 0.72.3\n\n### Patch Changes\n\n- [#4703](https://github.com/ianstormtaylor/slate/pull/4703) [`205d4b7e`](https://github.com/ianstormtaylor/slate/commit/205d4b7e66b30ec911e8968a736593aaf2be1567) Thanks [@e1himself](https://github.com/e1himself)! - Add tests for Editor.unhangRange() behavior\n\n## 0.72.2\n\n### Patch Changes\n\n- [#4729](https://github.com/ianstormtaylor/slate/pull/4729) [`ab62da20`](https://github.com/ianstormtaylor/slate/commit/ab62da2064921f534ce158f20cd853d2d904f6f6) Thanks [@ahoisl](https://github.com/ahoisl)! - chore: add vscode launch.json debug config\n\n* [#4735](https://github.com/ianstormtaylor/slate/pull/4735) [`e5427ddd`](https://github.com/ianstormtaylor/slate/commit/e5427dddfc57b4362b7545e9971cdfb9b05d5c3d) Thanks [@steve-codaio](https://github.com/steve-codaio)! - Optimize path transforms during normalization\n\n## 0.72.0\n\n### Patch Changes\n\n- [#4708](https://github.com/ianstormtaylor/slate/pull/4708) [`2fc7ad92`](https://github.com/ianstormtaylor/slate/commit/2fc7ad924cfbb75de59f685eeabb0375769201b9) Thanks [@bryanph](https://github.com/bryanph)! - Allow `Operation` type to be extended\n\n  For example:\n\n  ```\n  import type { BaseOperation } from 'slate'\n\n  type CustomOperation =\n   | BaseOperation\n   | YourCustomOperation\n   | AnotherCustomOperation\n\n  declare module 'slate' {\n    interface CustomTypes {\n      Operation: CustomOperation;\n    }\n  }\n  ```\n\n## 0.71.0\n\n### Minor Changes\n\n- [#4672](https://github.com/ianstormtaylor/slate/pull/4672) [`2523dc4f`](https://github.com/ianstormtaylor/slate/commit/2523dc4f6e7fee81baf77a67da4c3adaab921f15) Thanks [@VictorBaron](https://github.com/VictorBaron)! - Fix - deep-equals was always returning true when array props were equals.\n\n### Patch Changes\n\n- [#4671](https://github.com/ianstormtaylor/slate/pull/4671) [`e3afda94`](https://github.com/ianstormtaylor/slate/commit/e3afda946685795237f748e76c7bb051c09cb7fa) Thanks [@unageek](https://github.com/unageek)! - Fixed the issue where the cursor jumps more than one character unexpectedly\n\n## 0.70.0\n\n### Minor Changes\n\n- [#4565](https://github.com/ianstormtaylor/slate/pull/4565) [`5818aca5`](https://github.com/ianstormtaylor/slate/commit/5818aca5038f38465a5769fe944f184be0255341) Thanks [@oliger](https://github.com/oliger)! - Fix issue with unicode 1.1 smileys followed by a variation selector.\n\n### Patch Changes\n\n- [#4638](https://github.com/ianstormtaylor/slate/pull/4638) [`e0f41514`](https://github.com/ianstormtaylor/slate/commit/e0f41514a1e0e866297904be16eff82702e8afd8) Thanks [@e1himself](https://github.com/e1himself)! - Improve typescript type of `props` argument of `Transforms.setNodes()`\n\n## 0.67.1\n\n### Patch Changes\n\n- [#4578](https://github.com/ianstormtaylor/slate/pull/4578) [`67badb7d`](https://github.com/ianstormtaylor/slate/commit/67badb7dd03c6d36d31b90689247553c0386d771) Thanks [@jameshfisher](https://github.com/jameshfisher)! - Allow typing at the end of inline elements\n\n## 0.66.5\n\n### Patch Changes\n\n- [#4552](https://github.com/ianstormtaylor/slate/pull/4552) [`37d60c58`](https://github.com/ianstormtaylor/slate/commit/37d60c58b8d4fb844f31888b518be6c2a01fb110) Thanks [@clauderic](https://github.com/clauderic)! - Only apply Firefox `toSlatePoint()` offset fix when the cloned contents end in `\\n\\n` instead of just `\\n`.\n\n## 0.66.2\n\n### Patch Changes\n\n- [#4523](https://github.com/ianstormtaylor/slate/pull/4523) [`0da12c17`](https://github.com/ianstormtaylor/slate/commit/0da12c17dc0484f065af2a270d352593a65c1577) Thanks [@steve-codaio](https://github.com/steve-codaio)! - Fix setNodes when called with 'split' and a collapsed range\n\n## 0.66.1\n\n### Patch Changes\n\n- [#4518](https://github.com/ianstormtaylor/slate/pull/4518) [`6ec399d4`](https://github.com/ianstormtaylor/slate/commit/6ec399d4db60f1a8d59268c333b43a26dc518b79) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Fixed flaw in deep-equal algorithm when dealing with nested mark objects\n\n* [#4511](https://github.com/ianstormtaylor/slate/pull/4511) [`2af6868d`](https://github.com/ianstormtaylor/slate/commit/2af6868d41b8d797eebdcba5edb18638fe62fd45) Thanks [@dylans](https://github.com/dylans)! - update release process for yarn 3\n\n- [#4516](https://github.com/ianstormtaylor/slate/pull/4516) [`59ca7a8f`](https://github.com/ianstormtaylor/slate/commit/59ca7a8f518c7735c89148ff1d9a8ae9dcf4297f) Thanks [@dylans](https://github.com/dylans)! - another attempt to get the automated changeset workflow working again\n\n## 0.66.0\n\n### Minor Changes\n\n- [#4489](https://github.com/ianstormtaylor/slate/pull/4489) [`1b560de3`](https://github.com/ianstormtaylor/slate/commit/1b560de3e13d08cdc95d7f659a497ff0f07d296a) Thanks [@nemanja-tosic](https://github.com/nemanja-tosic)! - Fix paste to empty node losing structure of first block\n\n* [#4326](https://github.com/ianstormtaylor/slate/pull/4326) [`00259003`](https://github.com/ianstormtaylor/slate/commit/0025900349b2c2ff92c044b97389969fa32a9200) Thanks [@oliger](https://github.com/oliger)! - Add support for [flag](https://emojipedia.org/emoji-flag-sequence/), [keycap](https://emojipedia.org/emoji-keycap-sequence/) and [tag](https://emojipedia.org/emoji-tag-sequence/) unicode sequences.\n\n- [#4276](https://github.com/ianstormtaylor/slate/pull/4276) [`6f47cbbe`](https://github.com/ianstormtaylor/slate/commit/6f47cbbe0d8f320be8baf02a6e26d756d226cfca) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Switched from `fast-deep-equal` to a custom deep equality check. This restores the ability for text nodes with mark values set to `undefined` to merge with text nodes missing those keys.\n\n* [#4431](https://github.com/ianstormtaylor/slate/pull/4431) [`55ff8f00`](https://github.com/ianstormtaylor/slate/commit/55ff8f00e46e5fd0f2aef41da321c02b6d3a0f70) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Fixed regression in #4208 where normalization on empty block nodes could not be overridden\n\n- [#3820](https://github.com/ianstormtaylor/slate/pull/3820) [`c6203a2d`](https://github.com/ianstormtaylor/slate/commit/c6203a2d682325e550d4f4b9fc3ee3ca3429e466) Thanks [@githoniel](https://github.com/githoniel)! - unwrapNode call liftNode in reverse order to keep nested block\n\n* [#4428](https://github.com/ianstormtaylor/slate/pull/4428) [`b47d3fd1`](https://github.com/ianstormtaylor/slate/commit/b47d3fd191c6b76585898ec9b8c490f15dcff2da) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Don't set `null` in `set_node`'s `newProperties` object when using `Transforms.unsetNodes()`\n\n### Patch Changes\n\n- [#4132](https://github.com/ianstormtaylor/slate/pull/4132) [`48b71294`](https://github.com/ianstormtaylor/slate/commit/48b7129447347c9cf7a0535026287896ef59779b) Thanks [@ulion](https://github.com/ulion)! - Make onDomSelectionChange trigger after onClick.\n\n* [#4500](https://github.com/ianstormtaylor/slate/pull/4500) [`50bb3d7e`](https://github.com/ianstormtaylor/slate/commit/50bb3d7e32d640957018831526235ca656963f1d) Thanks [@tubbo](https://github.com/tubbo)! - Upgrade `is-plain-object` to v5.0.0\n\n- [#4482](https://github.com/ianstormtaylor/slate/pull/4482) [`dd752df1`](https://github.com/ianstormtaylor/slate/commit/dd752df11dc90da6bd6add88d1cfa6f00f03912b) Thanks [@Jokcy](https://github.com/Jokcy)! - Fix cursor not correct issue after insert multiple nodes with `Transform.insertNodes`\n\n* [#4296](https://github.com/ianstormtaylor/slate/pull/4296) [`479a7591`](https://github.com/ianstormtaylor/slate/commit/479a759108bc0f903715e08d542307566b077227) Thanks [@kellyjosephprice](https://github.com/kellyjosephprice)! - Fix mergeNodes moving node into parent sibling\n\n- [#4458](https://github.com/ianstormtaylor/slate/pull/4458) [`95c759a1`](https://github.com/ianstormtaylor/slate/commit/95c759a19c1e057bbc99148867298a73b014831d) Thanks [@taj-codaio](https://github.com/taj-codaio)! - Normalization now removes empty text nodes after nonempty nodes with differing styles, but before inline nodes.\n\n* [#4505](https://github.com/ianstormtaylor/slate/pull/4505) [`269e59c9`](https://github.com/ianstormtaylor/slate/commit/269e59c93aea31cdb438e9cc07d34cec0e482798) Thanks [@dylans](https://github.com/dylans)! - Immer 9 security update, refactor to support immer 9 API changes\n\n## 0.65.3\n\n### Patch Changes\n\n- [#4253](https://github.com/ianstormtaylor/slate/pull/4253) [`0214b630`](https://github.com/ianstormtaylor/slate/commit/0214b630778e7fa3b6ebcdf6cd9a8e4cf7351bd3) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Fix `Transforms.wrapNodes` crashing when the `match` function matched only the editor\n\n* [#4049](https://github.com/ianstormtaylor/slate/pull/4049) [`6c844227`](https://github.com/ianstormtaylor/slate/commit/6c8442272105ec78b88d38efecb7aab9bb4e41de) Thanks [@ulion](https://github.com/ulion)! - Fix ios chrome ime double input issue.\n\n- [#4421](https://github.com/ianstormtaylor/slate/pull/4421) [`237edc6e`](https://github.com/ianstormtaylor/slate/commit/237edc6ea616c9171611e632e146872a245bdb0e) Thanks [@jaked](https://github.com/jaked)! - fix decorate bug (#4277) without adding extra layers of render tree\n\n* [#4349](https://github.com/ianstormtaylor/slate/pull/4349) [`236754c4`](https://github.com/ianstormtaylor/slate/commit/236754c4d2811d50f8e116cfd5de8d7619553cd9) Thanks [@imdbsd](https://github.com/imdbsd)! - Add isElementType utility to Element interface\n\n## 0.63.0\n\n### Minor Changes\n\n- [#4230](https://github.com/ianstormtaylor/slate/pull/4230) [`796389c7`](https://github.com/ianstormtaylor/slate/commit/796389c7d3d9cead1493abcba6c678cb9dfa979f) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Applying invalid `insert_node` operations will now throw an exception for all invalid paths, not just invalid parent paths.\n\n### Patch Changes\n\n- [#4245](https://github.com/ianstormtaylor/slate/pull/4245) [`b33a531b`](https://github.com/ianstormtaylor/slate/commit/b33a531bd0395ecb23bd9fd1ac1cd1c3b31f92ca) Thanks [@JonasKruckenberg](https://github.com/JonasKruckenberg)! - Removed lodash dependecy to reduce bundled footprint\n\n* [#4208](https://github.com/ianstormtaylor/slate/pull/4208) [`feb293aa`](https://github.com/ianstormtaylor/slate/commit/feb293aaa2c02fe3ad319bd021e66908ee770a6e) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Fix `Error: Cannot get the start point in the node at path [...] because it has no start text node` caused by normalizing a document where some elements have no children\n\n- [#4230](https://github.com/ianstormtaylor/slate/pull/4230) [`796389c7`](https://github.com/ianstormtaylor/slate/commit/796389c7d3d9cead1493abcba6c678cb9dfa979f) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Exceptions in `editor.apply()` and `Editor.withoutNormalizing()` will no longer leave the editor in an invalid state\n\n* [#4227](https://github.com/ianstormtaylor/slate/pull/4227) [`e6413d46`](https://github.com/ianstormtaylor/slate/commit/e6413d46256f6fc60549974242d3ff6ba61e2968) Thanks [@ulion](https://github.com/ulion)! - Fixed a bug that would allow multiple changes to be scheduled at the same time.\n\n## 0.62.1\n\n### Patch Changes\n\n- [#4193](https://github.com/ianstormtaylor/slate/pull/4193) [`fd70dc0b`](https://github.com/ianstormtaylor/slate/commit/fd70dc0b2c0d06edb9490874fb831161b9759cba) Thanks [@beorn](https://github.com/beorn)! - Fixed insert and remove text operations to no-op without any text.\n\n* [#4078](https://github.com/ianstormtaylor/slate/pull/4078) [`2dad21d1`](https://github.com/ianstormtaylor/slate/commit/2dad21d1d75750e7148b10bdea3ce921a79cbf33) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Fixed inversion of `set_node` operations that delete properties on nodes.\n\n- [#4168](https://github.com/ianstormtaylor/slate/pull/4168) [`95f402c5`](https://github.com/ianstormtaylor/slate/commit/95f402c59414331b2eeca9a19bd2c73c0ab6cd6c) Thanks [@ridhambhat](https://github.com/ridhambhat)! - Fixed a bug in splitting and applying overlapping marks to text nodes.\n\n## 0.62.0\n\n### Minor Changes\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - **Updated `Text.equals` to deeply compare text node properties.** Previously it only did a shallow comparison, but this made it harder to keep track of more complex data structures at the text level.\n\n* [#4154](https://github.com/ianstormtaylor/slate/pull/4154) [`7283c51f`](https://github.com/ianstormtaylor/slate/commit/7283c51feb83cb8522bc16efce09bb01c29400b9) Thanks [@ianstormtaylor](https://github.com/ianstormtaylor)! - **Start using [🦋 Changesets](https://github.com/atlassian/changesets) to manage releases.** Going forward, whenever a pull request is made that fixes or adds functionality to Slate, it will need to be accompanied by a changset Markdown file describing the change. These files will be automatically used in the release process when bump the versions of Slate and compiling the changelog.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - **Added support for custom selection properties.** Previously you could set custom properties on the selection objects but it was not a fully supported feature because there was no way to delete them later. Now custom properties are officially supported and deleting them once set is possible.\n\n### Patch Changes\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed `move_node` operations to normalize the node in question.\n\n* [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Added memoization logic to `Node.isNodeList` and `Editor.isEditor` to speed up common code paths.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed a bug when merging deeply nested multi-child nodes.\n\n* [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed a bug when deleting a hanging range with a trailing void block node.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed a bug in `Editor.positions` which caused it to sometimes skip positions in text nodes that were segmented across inlines or marks.\n"
  },
  {
    "path": "packages/slate/Readme.md",
    "content": "This package contains the core logic of Slate. Feel free to poke around to learn more!\n\nNote: A number of source files contain extracted types for `Interfaces` or `Transforms`. This is done currently to enable custom type extensions as found in `packages/src/interfaces/custom-types.ts`.\n"
  },
  {
    "path": "packages/slate/package.json",
    "content": "{\n  \"name\": \"slate\",\n  \"description\": \"A completely customizable framework for building rich text editors.\",\n  \"version\": \"0.123.0\",\n  \"license\": \"MIT\",\n  \"repository\": \"git://github.com/ianstormtaylor/slate.git\",\n  \"main\": \"dist/index.js\",\n  \"module\": \"dist/index.es.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"umd\": \"dist/slate.js\",\n  \"umdMin\": \"dist/slate.min.js\",\n  \"sideEffects\": false,\n  \"files\": [\n    \"dist/\"\n  ],\n  \"devDependencies\": {\n    \"@babel/runtime\": \"^7.23.2\",\n    \"lodash\": \"^4.17.21\",\n    \"slate-hyperscript\": \"^0.115.0\",\n    \"source-map-loader\": \"^4.0.1\"\n  },\n  \"keywords\": [\n    \"canvas\",\n    \"contenteditable\",\n    \"custom\",\n    \"document\",\n    \"edit\",\n    \"editor\",\n    \"html\",\n    \"immutable\",\n    \"markdown\",\n    \"medium\",\n    \"paper\",\n    \"react\",\n    \"rich\",\n    \"richtext\",\n    \"richtext\",\n    \"slate\",\n    \"text\",\n    \"wysiwyg\",\n    \"wysiwym\"\n  ]\n}\n"
  },
  {
    "path": "packages/slate/src/core/apply.ts",
    "content": "import { PathRef } from '../interfaces/path-ref'\nimport { PointRef } from '../interfaces/point-ref'\nimport { RangeRef } from '../interfaces/range-ref'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Transforms } from '../interfaces/transforms'\nimport { WithEditorFirstArg } from '../utils/types'\nimport { Editor } from '../interfaces/editor'\nimport { isBatchingDirtyPaths } from './batch-dirty-paths'\nimport { updateDirtyPaths } from './update-dirty-paths'\n\nexport const apply: WithEditorFirstArg<Editor['apply']> = (editor, op) => {\n  for (const ref of Editor.pathRefs(editor)) {\n    PathRef.transform(ref, op)\n  }\n\n  for (const ref of Editor.pointRefs(editor)) {\n    PointRef.transform(ref, op)\n  }\n\n  for (const ref of Editor.rangeRefs(editor)) {\n    RangeRef.transform(ref, op)\n  }\n\n  // update dirty paths\n  if (!isBatchingDirtyPaths(editor)) {\n    const transform = Path.operationCanTransformPath(op)\n      ? (p: Path) => Path.transform(p, op)\n      : undefined\n    updateDirtyPaths(editor, editor.getDirtyPaths(op), transform)\n  }\n\n  Transforms.transform(editor, op)\n  editor.operations.push(op)\n  Editor.normalize(editor, {\n    operation: op,\n  })\n\n  // Clear any formats applied to the cursor if the selection changes.\n  if (op.type === 'set_selection') {\n    editor.marks = null\n  }\n\n  if (!FLUSHING.get(editor)) {\n    FLUSHING.set(editor, true)\n\n    Promise.resolve().then(() => {\n      FLUSHING.set(editor, false)\n      editor.onChange({ operation: op })\n      editor.operations = []\n    })\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/core/batch-dirty-paths.ts",
    "content": "// perf\n\nimport { Editor } from '../interfaces/editor'\n\nconst BATCHING_DIRTY_PATHS: WeakMap<Editor, boolean> = new WeakMap()\n\nexport const isBatchingDirtyPaths = (editor: Editor) => {\n  return BATCHING_DIRTY_PATHS.get(editor) || false\n}\n\nexport const batchDirtyPaths = (\n  editor: Editor,\n  fn: () => void,\n  update: () => void\n) => {\n  const value = BATCHING_DIRTY_PATHS.get(editor) || false\n  BATCHING_DIRTY_PATHS.set(editor, true)\n  try {\n    fn()\n    update()\n  } finally {\n    BATCHING_DIRTY_PATHS.set(editor, value)\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/core/get-dirty-paths.ts",
    "content": "import { WithEditorFirstArg } from '../utils/types'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\nimport { Editor } from '../interfaces/editor'\n\n/**\n * Get the \"dirty\" paths generated from an operation.\n */\nexport const getDirtyPaths: WithEditorFirstArg<Editor['getDirtyPaths']> = (\n  editor,\n  op\n) => {\n  switch (op.type) {\n    case 'insert_text':\n    case 'remove_text':\n    case 'set_node': {\n      const { path } = op\n      return Path.levels(path)\n    }\n\n    case 'insert_node': {\n      const { node, path } = op\n      const levels = Path.levels(path)\n      const descendants = Node.isText(node)\n        ? []\n        : Array.from(Node.nodes(node), ([, p]) => path.concat(p))\n\n      return [...levels, ...descendants]\n    }\n\n    case 'merge_node': {\n      const { path } = op\n      const ancestors = Path.ancestors(path)\n      const previousPath = Path.previous(path)\n      return [...ancestors, previousPath]\n    }\n\n    case 'move_node': {\n      const { path, newPath } = op\n\n      if (Path.equals(path, newPath)) {\n        return []\n      }\n\n      const oldAncestors: Path[] = []\n      const newAncestors: Path[] = []\n\n      for (const ancestor of Path.ancestors(path)) {\n        const p = Path.transform(ancestor, op)\n        oldAncestors.push(p!)\n      }\n\n      for (const ancestor of Path.ancestors(newPath)) {\n        const p = Path.transform(ancestor, op)\n        newAncestors.push(p!)\n      }\n\n      const newParent = newAncestors[newAncestors.length - 1]\n      const newIndex = newPath[newPath.length - 1]\n      const resultPath = newParent.concat(newIndex)\n\n      return [...oldAncestors, ...newAncestors, resultPath]\n    }\n\n    case 'remove_node': {\n      const { path } = op\n      const ancestors = Path.ancestors(path)\n      return [...ancestors]\n    }\n\n    case 'split_node': {\n      const { path } = op\n      const levels = Path.levels(path)\n      const nextPath = Path.next(path)\n      return [...levels, nextPath]\n    }\n\n    default: {\n      return []\n    }\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/core/get-fragment.ts",
    "content": "import { Editor, Node } from '../interfaces'\nimport { WithEditorFirstArg } from '../utils'\n\nexport const getFragment: WithEditorFirstArg<\n  Editor['getFragment']\n> = editor => {\n  const { selection } = editor\n\n  if (selection) {\n    return Node.fragment(editor, selection)\n  }\n  return []\n}\n"
  },
  {
    "path": "packages/slate/src/core/index.ts",
    "content": "export * from './apply'\nexport * from './get-dirty-paths'\nexport * from './get-fragment'\nexport * from './normalize-node'\nexport * from './should-normalize'\n"
  },
  {
    "path": "packages/slate/src/core/normalize-node.ts",
    "content": "import { WithEditorFirstArg } from '../utils/types'\nimport {\n  Editor,\n  Element,\n  Descendant,\n  Text,\n  Transforms,\n  Node,\n  Path,\n  Ancestor,\n} from '../interfaces'\n\nexport const normalizeNode: WithEditorFirstArg<Editor['normalizeNode']> = (\n  editor,\n  entry,\n  options\n) => {\n  const [node, path] = entry as [{}, Path] // node is not yet normalized, treat as hostile\n\n  // There are no core normalizations for text nodes.\n  if (Node.isText(node as Node)) {\n    return\n  }\n\n  if (!('children' in node)) {\n    // If the node is not a text node, and doesn't have a `children` field,\n    // then we have an invalid node that will upset slate.\n    //\n    // eg: `{ type: 'some_node' }`.\n    //\n    // To prevent slate from breaking, we can add the `children` field,\n    // and now that it is valid, we can to many more operations easily,\n    // such as extend normalizers to fix erronous structure.\n    ;(node as Element).children = []\n  }\n  let element = node as Ancestor // we will have to refetch the element any time we modify its children since it clones to a new immutable reference when we do\n\n  // Ensure that elements have at least one child.\n  if (element !== editor && element.children.length === 0) {\n    const child = { text: '' }\n    Transforms.insertNodes(editor, child, { at: path.concat(0), voids: true })\n    element = Node.get(editor, path) as Element\n  }\n\n  // Determine whether the node should have only block or only inline children.\n  // - The editor should have only block children.\n  // - Inline elements should have only inline children.\n  // - Elements that begin with a text child or an inline element child should have only inline children.\n  // - All other elements should have only block children.\n  const shouldHaveInlines =\n    !(element === editor) &&\n    (editor.isInline(element) ||\n      Node.isText(element.children[0]) ||\n      editor.isInline(element.children[0]))\n\n  if (shouldHaveInlines) {\n    // Since we'll be applying operations while iterating, we also modify `n` when adding/removing nodes.\n    for (let n = 0; n < element.children.length; n++) {\n      const child = element.children[n]\n      const prev = element.children[n - 1] as Descendant | undefined\n\n      if (Node.isText(child)) {\n        if (prev != null && Node.isText(prev)) {\n          // Merge adjacent text nodes that are empty or match.\n          if (child.text === '') {\n            Transforms.removeNodes(editor, {\n              at: path.concat(n),\n              voids: true,\n            })\n            element = Node.get(editor, path) as Element\n            n--\n          } else if (prev.text === '') {\n            Transforms.removeNodes(editor, {\n              at: path.concat(n - 1),\n              voids: true,\n            })\n            element = Node.get(editor, path) as Element\n            n--\n          } else if (Text.equals(child, prev, { loose: true })) {\n            Transforms.mergeNodes(editor, { at: path.concat(n), voids: true })\n            element = Node.get(editor, path) as Element\n            n--\n          }\n        }\n      } else {\n        if (editor.isInline(child)) {\n          // Ensure that inline nodes are surrounded by text nodes.\n          if (prev == null || !Node.isText(prev)) {\n            const newChild = { text: '' }\n            Transforms.insertNodes(editor, newChild, {\n              at: path.concat(n),\n              voids: true,\n            })\n            element = Node.get(editor, path) as Element\n            n++\n          }\n          if (n === element.children.length - 1) {\n            const newChild = { text: '' }\n            Transforms.insertNodes(editor, newChild, {\n              at: path.concat(n + 1),\n              voids: true,\n            })\n            element = Node.get(editor, path) as Element\n            n++\n          }\n        } else {\n          // Allow only inline nodes to be in other inline nodes, or in parent blocks that only\n          // contain inlines and text.\n          Transforms.unwrapNodes(editor, { at: path.concat(n), voids: true })\n          element = Node.get(editor, path) as Element\n          n--\n        }\n      }\n    }\n  } else {\n    // Since we'll be applying operations while iterating, we also modify `n` when adding/removing nodes\n    for (let n = 0; n < element.children.length; n++) {\n      const child = element.children[n]\n\n      // Allow only block nodes in the top-level children and parent blocks that only contain block nodes\n      if (Node.isText(child) || editor.isInline(child)) {\n        if (options?.fallbackElement) {\n          Transforms.wrapNodes(editor, options.fallbackElement(), {\n            at: path.concat(n),\n            voids: true,\n          })\n        } else {\n          Transforms.removeNodes(editor, { at: path.concat(n), voids: true })\n        }\n        element = Node.get(editor, path) as Ancestor\n        n--\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/core/should-normalize.ts",
    "content": "import { WithEditorFirstArg } from '../utils/types'\nimport { Editor } from '../interfaces/editor'\n\nexport const shouldNormalize: WithEditorFirstArg<Editor['shouldNormalize']> = (\n  editor,\n  { iteration, initialDirtyPathsLength }\n) => {\n  const maxIterations = initialDirtyPathsLength * 42 // HACK: better way?\n\n  if (iteration > maxIterations) {\n    throw new Error(\n      `Could not completely normalize the editor after ${maxIterations} iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.`\n    )\n  }\n\n  return true\n}\n"
  },
  {
    "path": "packages/slate/src/core/update-dirty-paths.ts",
    "content": "import { DIRTY_PATH_KEYS, DIRTY_PATHS } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Editor } from '../interfaces/editor'\n\n/**\n * update editor dirty paths\n *\n * @param newDirtyPaths: Path[]; new dirty paths\n * @param transform: (p: Path) => Path | null; how to transform existing dirty paths\n */\nexport function updateDirtyPaths(\n  editor: Editor,\n  newDirtyPaths: Path[],\n  transform?: (p: Path) => Path | null\n) {\n  const oldDirtyPaths = DIRTY_PATHS.get(editor) || []\n  const oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || new Set()\n  let dirtyPaths: Path[]\n  let dirtyPathKeys: Set<string>\n\n  const add = (path: Path | null) => {\n    if (path) {\n      const key = path.join(',')\n\n      if (!dirtyPathKeys.has(key)) {\n        dirtyPathKeys.add(key)\n        dirtyPaths.push(path)\n      }\n    }\n  }\n\n  if (transform) {\n    dirtyPaths = []\n    dirtyPathKeys = new Set()\n    for (const path of oldDirtyPaths) {\n      const newPath = transform(path)\n      add(newPath)\n    }\n  } else {\n    dirtyPaths = oldDirtyPaths\n    dirtyPathKeys = oldDirtyPathKeys\n  }\n\n  for (const path of newDirtyPaths) {\n    add(path)\n  }\n\n  DIRTY_PATHS.set(editor, dirtyPaths)\n  DIRTY_PATH_KEYS.set(editor, dirtyPathKeys)\n}\n"
  },
  {
    "path": "packages/slate/src/create-editor.ts",
    "content": "import {\n  addMark,\n  deleteFragment,\n  Editor,\n  getDirtyPaths,\n  getFragment,\n  insertBreak,\n  insertFragment,\n  insertNode,\n  insertSoftBreak,\n  insertText,\n  normalizeNode,\n  removeMark,\n  shouldNormalize,\n} from './'\nimport { apply } from './core'\nimport {\n  above,\n  after,\n  before,\n  deleteBackward,\n  deleteForward,\n  edges,\n  elementReadOnly,\n  end,\n  first,\n  fragment,\n  getVoid,\n  hasBlocks,\n  hasInlines,\n  hasPath,\n  hasTexts,\n  isBlock,\n  isEdge,\n  isEmpty,\n  isEnd,\n  isNormalizing,\n  isStart,\n  last,\n  leaf,\n  levels,\n  marks,\n  next,\n  node,\n  nodes,\n  normalize,\n  parent,\n  path,\n  pathRef,\n  pathRefs,\n  point,\n  pointRef,\n  pointRefs,\n  positions,\n  previous,\n  range,\n  rangeRef,\n  rangeRefs,\n  setNormalizing,\n  shouldMergeNodesRemovePrevNode,\n  start,\n  string,\n  unhangRange,\n  withoutNormalizing,\n} from './editor'\nimport { deleteText } from './transforms-text'\nimport {\n  collapse,\n  deselect,\n  move,\n  select,\n  setPoint,\n  setSelection,\n} from './transforms-selection'\nimport {\n  insertNodes,\n  liftNodes,\n  mergeNodes,\n  moveNodes,\n  removeNodes,\n  setNodes,\n  splitNodes,\n  unsetNodes,\n  unwrapNodes,\n  wrapNodes,\n} from './transforms-node'\n\n/**\n * Create a new Slate `Editor` object.\n */\nexport const createEditor = (): Editor => {\n  const editor: Editor = {\n    children: [],\n    operations: [],\n    selection: null,\n    marks: null,\n    isElementReadOnly: () => false,\n    isInline: () => false,\n    isSelectable: () => true,\n    isVoid: () => false,\n    markableVoid: () => false,\n    onChange: () => {},\n\n    // Core\n    apply: (...args) => apply(editor, ...args),\n\n    // Editor\n    addMark: (...args) => addMark(editor, ...args),\n    deleteBackward: (...args) => deleteBackward(editor, ...args),\n    deleteForward: (...args) => deleteForward(editor, ...args),\n    deleteFragment: (...args) => deleteFragment(editor, ...args),\n    getFragment: (...args) => getFragment(editor, ...args),\n    insertBreak: (...args) => insertBreak(editor, ...args),\n    insertSoftBreak: (...args) => insertSoftBreak(editor, ...args),\n    insertFragment: (...args) => insertFragment(editor, ...args),\n    insertNode: (...args) => insertNode(editor, ...args),\n    insertText: (...args) => insertText(editor, ...args),\n    normalizeNode: (...args) => normalizeNode(editor, ...args),\n    removeMark: (...args) => removeMark(editor, ...args),\n    getDirtyPaths: (...args) => getDirtyPaths(editor, ...args),\n    shouldNormalize: (...args) => shouldNormalize(editor, ...args),\n\n    // Editor interface\n    above: (...args) => above(editor, ...args),\n    after: (...args) => after(editor, ...args),\n    before: (...args) => before(editor, ...args),\n    collapse: (...args) => collapse(editor, ...args),\n    delete: (...args) => deleteText(editor, ...args),\n    deselect: (...args) => deselect(editor, ...args),\n    edges: (...args) => edges(editor, ...args),\n    elementReadOnly: (...args) => elementReadOnly(editor, ...args),\n    end: (...args) => end(editor, ...args),\n    first: (...args) => first(editor, ...args),\n    fragment: (...args) => fragment(editor, ...args),\n    getMarks: (...args) => marks(editor, ...args),\n    hasBlocks: (...args) => hasBlocks(editor, ...args),\n    hasInlines: (...args) => hasInlines(editor, ...args),\n    hasPath: (...args) => hasPath(editor, ...args),\n    hasTexts: (...args) => hasTexts(editor, ...args),\n    insertNodes: (...args) => insertNodes(editor, ...args),\n    isBlock: (...args) => isBlock(editor, ...args),\n    isEdge: (...args) => isEdge(editor, ...args),\n    isEmpty: (...args) => isEmpty(editor, ...args),\n    isEnd: (...args) => isEnd(editor, ...args),\n    isNormalizing: (...args) => isNormalizing(editor, ...args),\n    isStart: (...args) => isStart(editor, ...args),\n    last: (...args) => last(editor, ...args),\n    leaf: (...args) => leaf(editor, ...args),\n    levels: (...args) => levels(editor, ...args),\n    liftNodes: (...args) => liftNodes(editor, ...args),\n    mergeNodes: (...args) => mergeNodes(editor, ...args),\n    move: (...args) => move(editor, ...args),\n    moveNodes: (...args) => moveNodes(editor, ...args),\n    next: (...args) => next(editor, ...args),\n    node: (...args) => node(editor, ...args),\n    nodes: (...args) => nodes(editor, ...args),\n    normalize: (...args) => normalize(editor, ...args),\n    parent: (...args) => parent(editor, ...args),\n    path: (...args) => path(editor, ...args),\n    pathRef: (...args) => pathRef(editor, ...args),\n    pathRefs: (...args) => pathRefs(editor, ...args),\n    point: (...args) => point(editor, ...args),\n    pointRef: (...args) => pointRef(editor, ...args),\n    pointRefs: (...args) => pointRefs(editor, ...args),\n    positions: (...args) => positions(editor, ...args),\n    previous: (...args) => previous(editor, ...args),\n    range: (...args) => range(editor, ...args),\n    rangeRef: (...args) => rangeRef(editor, ...args),\n    rangeRefs: (...args) => rangeRefs(editor, ...args),\n    removeNodes: (...args) => removeNodes(editor, ...args),\n    select: (...args) => select(editor, ...args),\n    setNodes: (...args) => setNodes(editor, ...args),\n    setNormalizing: (...args) => setNormalizing(editor, ...args),\n    setPoint: (...args) => setPoint(editor, ...args),\n    setSelection: (...args) => setSelection(editor, ...args),\n    splitNodes: (...args) => splitNodes(editor, ...args),\n    start: (...args) => start(editor, ...args),\n    string: (...args) => string(editor, ...args),\n    unhangRange: (...args) => unhangRange(editor, ...args),\n    unsetNodes: (...args) => unsetNodes(editor, ...args),\n    unwrapNodes: (...args) => unwrapNodes(editor, ...args),\n    void: (...args) => getVoid(editor, ...args),\n    withoutNormalizing: (...args) => withoutNormalizing(editor, ...args),\n    wrapNodes: (...args) => wrapNodes(editor, ...args),\n    shouldMergeNodesRemovePrevNode: (...args) =>\n      shouldMergeNodesRemovePrevNode(editor, ...args),\n  }\n\n  return editor\n}\n"
  },
  {
    "path": "packages/slate/src/editor/above.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Location } from '../interfaces'\nimport { Path } from '../interfaces/path'\n\nexport const above: EditorInterface['above'] = (editor, options = {}) => {\n  const {\n    voids = false,\n    mode = 'lowest',\n    at = editor.selection,\n    match,\n  } = options\n\n  if (!at) {\n    return\n  }\n\n  let path = Editor.path(editor, at)\n\n  // If `at` is a Range that spans mulitple nodes, `path` will be their common ancestor.\n  // Otherwise `path` will be a text node and/or the same as `at`, in which cases we want to start with its parent.\n  if (!Location.isRange(at) || Path.equals(at.focus.path, at.anchor.path)) {\n    if (path.length === 0) return\n    path = Path.parent(path)\n  }\n\n  const reverse = mode === 'lowest'\n\n  const [firstMatch] = Editor.levels(editor, {\n    at: path,\n    voids,\n    match,\n    reverse,\n  })\n  return firstMatch // if nothing matches this returns undefined\n}\n"
  },
  {
    "path": "packages/slate/src/editor/add-mark.ts",
    "content": "import { Node } from '../interfaces/node'\nimport { Path } from '../interfaces/path'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const addMark: EditorInterface['addMark'] = (editor, key, value) => {\n  const { selection } = editor\n\n  if (selection) {\n    const match = (node: Node, path: Path) => {\n      if (!Node.isText(node)) {\n        return false // marks can only be applied to text\n      }\n      const [parentNode, parentPath] = Editor.parent(editor, path)\n      return !editor.isVoid(parentNode) || editor.markableVoid(parentNode)\n    }\n    const expandedSelection = Range.isExpanded(selection)\n    let markAcceptingVoidSelected = false\n    if (!expandedSelection) {\n      const [selectedNode, selectedPath] = Editor.node(editor, selection)\n      if (selectedNode && match(selectedNode, selectedPath)) {\n        const [parentNode] = Editor.parent(editor, selectedPath)\n        markAcceptingVoidSelected =\n          parentNode && editor.markableVoid(parentNode)\n      }\n    }\n    if (expandedSelection || markAcceptingVoidSelected) {\n      Transforms.setNodes(\n        editor,\n        { [key]: value },\n        {\n          match,\n          split: true,\n          voids: true,\n        }\n      )\n    } else {\n      const marks = {\n        ...(Editor.marks(editor) || {}),\n        [key]: value,\n      }\n\n      editor.marks = marks\n      if (!FLUSHING.get(editor)) {\n        editor.onChange()\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/after.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const after: EditorInterface['after'] = (editor, at, options = {}) => {\n  const anchor = Editor.point(editor, at, { edge: 'end' })\n  const focus = Editor.end(editor, [])\n  const range = { anchor, focus }\n  const { distance = 1 } = options\n  let d = 0\n  let target\n\n  for (const p of Editor.positions(editor, {\n    ...options,\n    at: range,\n  })) {\n    if (d > distance) {\n      break\n    }\n\n    if (d !== 0) {\n      target = p\n    }\n\n    d++\n  }\n\n  return target\n}\n"
  },
  {
    "path": "packages/slate/src/editor/before.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const before: EditorInterface['before'] = (editor, at, options = {}) => {\n  const anchor = Editor.start(editor, [])\n  const focus = Editor.point(editor, at, { edge: 'start' })\n  const range = { anchor, focus }\n  const { distance = 1 } = options\n  let d = 0\n  let target\n\n  for (const p of Editor.positions(editor, {\n    ...options,\n    at: range,\n    reverse: true,\n  })) {\n    if (d > distance) {\n      break\n    }\n\n    if (d !== 0) {\n      target = p\n    }\n\n    d++\n  }\n\n  return target\n}\n"
  },
  {
    "path": "packages/slate/src/editor/delete-backward.ts",
    "content": "import { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { WithEditorFirstArg } from '../utils/types'\n\nexport const deleteBackward: WithEditorFirstArg<Editor['deleteBackward']> = (\n  editor,\n  unit\n) => {\n  const { selection } = editor\n\n  if (selection && Range.isCollapsed(selection)) {\n    Transforms.delete(editor, { unit, reverse: true })\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/delete-forward.ts",
    "content": "import { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\nimport { WithEditorFirstArg } from '../utils/types'\n\nexport const deleteForward: WithEditorFirstArg<Editor['deleteForward']> = (\n  editor,\n  unit\n) => {\n  const { selection } = editor\n\n  if (selection && Range.isCollapsed(selection)) {\n    Transforms.delete(editor, { unit })\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/delete-fragment.ts",
    "content": "import { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const deleteFragment: EditorInterface['deleteFragment'] = (\n  editor,\n  { direction = 'forward' } = {}\n) => {\n  const { selection } = editor\n\n  if (selection && Range.isExpanded(selection)) {\n    Transforms.delete(editor, { reverse: direction === 'backward' })\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/edges.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const edges: EditorInterface['edges'] = (editor, at) => {\n  return [Editor.start(editor, at), Editor.end(editor, at)]\n}\n"
  },
  {
    "path": "packages/slate/src/editor/element-read-only.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const elementReadOnly: EditorInterface['elementReadOnly'] = (\n  editor,\n  options = {}\n) => {\n  return Editor.above(editor, {\n    ...options,\n    match: n => Node.isElement(n) && Editor.isElementReadOnly(editor, n),\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/editor/end.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const end: EditorInterface['end'] = (editor, at) => {\n  return Editor.point(editor, at, { edge: 'end' })\n}\n"
  },
  {
    "path": "packages/slate/src/editor/first.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const first: EditorInterface['first'] = (editor, at) => {\n  const path = Editor.path(editor, at, { edge: 'start' })\n  return Editor.node(editor, path)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/fragment.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const fragment: EditorInterface['fragment'] = (editor, at) => {\n  const range = Editor.range(editor, at)\n  return Node.fragment(editor, range)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/get-void.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const getVoid: EditorInterface['void'] = (editor, options = {}) => {\n  return Editor.above(editor, {\n    ...options,\n    match: n => Node.isElement(n) && Editor.isVoid(editor, n),\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/editor/has-blocks.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const hasBlocks: EditorInterface['hasBlocks'] = (editor, element) => {\n  return element.children.some(\n    n => Node.isElement(n) && Editor.isBlock(editor, n)\n  )\n}\n"
  },
  {
    "path": "packages/slate/src/editor/has-inlines.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const hasInlines: EditorInterface['hasInlines'] = (editor, element) => {\n  return element.children.some(\n    n => Node.isText(n) || Editor.isInline(editor, n)\n  )\n}\n"
  },
  {
    "path": "packages/slate/src/editor/has-path.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const hasPath: EditorInterface['hasPath'] = (editor, path) => {\n  return Node.has(editor, path)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/has-texts.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const hasTexts: EditorInterface['hasTexts'] = (editor, element) => {\n  return element.children.every(n => Node.isText(n))\n}\n"
  },
  {
    "path": "packages/slate/src/editor/index.ts",
    "content": "export * from './above'\nexport * from './add-mark'\nexport * from './after'\nexport * from './before'\nexport * from './delete-backward'\nexport * from './delete-forward'\nexport * from './delete-fragment'\nexport * from './edges'\nexport * from './element-read-only'\nexport * from './end'\nexport * from './first'\nexport * from './fragment'\nexport * from './get-void'\nexport * from './has-blocks'\nexport * from './has-inlines'\nexport * from './has-path'\nexport * from './has-texts'\nexport * from './insert-break'\nexport * from './insert-node'\nexport * from './insert-soft-break'\nexport * from './insert-text'\nexport * from './is-block'\nexport * from './is-edge'\nexport * from './is-editor'\nexport * from './is-empty'\nexport * from './is-end'\nexport * from './is-normalizing'\nexport * from './is-start'\nexport * from './last'\nexport * from './leaf'\nexport * from './levels'\nexport * from './marks'\nexport * from './next'\nexport * from './node'\nexport * from './nodes'\nexport * from './normalize'\nexport * from './parent'\nexport * from './path-ref'\nexport * from './path-refs'\nexport * from './path'\nexport * from './point-ref'\nexport * from './point-refs'\nexport * from './point'\nexport * from './positions'\nexport * from './previous'\nexport * from './range-ref'\nexport * from './range-refs'\nexport * from './range'\nexport * from './remove-mark'\nexport * from './set-normalizing'\nexport * from './start'\nexport * from './string'\nexport * from './unhang-range'\nexport * from './without-normalizing'\nexport * from './should-merge-nodes-remove-prev-node'\n"
  },
  {
    "path": "packages/slate/src/editor/insert-break.ts",
    "content": "import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertBreak: EditorInterface['insertBreak'] = editor => {\n  Transforms.splitNodes(editor, { always: true })\n}\n"
  },
  {
    "path": "packages/slate/src/editor/insert-node.ts",
    "content": "import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertNode: EditorInterface['insertNode'] = (\n  editor,\n  node,\n  options\n) => {\n  Transforms.insertNodes(editor, node, options)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/insert-soft-break.ts",
    "content": "import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertSoftBreak: EditorInterface['insertSoftBreak'] = editor => {\n  Transforms.splitNodes(editor, { always: true })\n}\n"
  },
  {
    "path": "packages/slate/src/editor/insert-text.ts",
    "content": "import { Transforms } from '../interfaces/transforms'\nimport { EditorInterface } from '../interfaces/editor'\n\nexport const insertText: EditorInterface['insertText'] = (\n  editor,\n  text,\n  options = {}\n) => {\n  const { selection, marks } = editor\n\n  if (selection) {\n    if (marks) {\n      const node = { text, ...marks }\n      Transforms.insertNodes(editor, node, {\n        at: options.at,\n        voids: options.voids,\n      })\n    } else {\n      Transforms.insertText(editor, text, options)\n    }\n\n    editor.marks = null\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/is-block.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\n\nexport const isBlock: EditorInterface['isBlock'] = (editor, value) => {\n  return !editor.isInline(value)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/is-edge.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const isEdge: EditorInterface['isEdge'] = (editor, point, at) => {\n  return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/is-editor.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Node } from '../interfaces/node'\nimport { Operation } from '../interfaces/operation'\nimport { isObject } from '../utils'\n\nexport const isEditor: EditorInterface['isEditor'] = (\n  value: any,\n  { deep = false } = {}\n): value is Editor => {\n  if (!isObject(value)) {\n    return false\n  }\n\n  const isEditor =\n    typeof value.above === 'function' &&\n    typeof value.addMark === 'function' &&\n    typeof value.after === 'function' &&\n    typeof value.apply === 'function' &&\n    typeof value.before === 'function' &&\n    typeof value.collapse === 'function' &&\n    typeof value.delete === 'function' &&\n    typeof value.deleteBackward === 'function' &&\n    typeof value.deleteForward === 'function' &&\n    typeof value.deleteFragment === 'function' &&\n    typeof value.deselect === 'function' &&\n    typeof value.edges === 'function' &&\n    typeof value.elementReadOnly === 'function' &&\n    typeof value.end === 'function' &&\n    typeof value.first === 'function' &&\n    typeof value.fragment === 'function' &&\n    typeof value.getDirtyPaths === 'function' &&\n    typeof value.getFragment === 'function' &&\n    typeof value.getMarks === 'function' &&\n    typeof value.hasBlocks === 'function' &&\n    typeof value.hasInlines === 'function' &&\n    typeof value.hasPath === 'function' &&\n    typeof value.hasTexts === 'function' &&\n    typeof value.insertBreak === 'function' &&\n    typeof value.insertFragment === 'function' &&\n    typeof value.insertNode === 'function' &&\n    typeof value.insertNodes === 'function' &&\n    typeof value.insertSoftBreak === 'function' &&\n    typeof value.insertText === 'function' &&\n    typeof value.isBlock === 'function' &&\n    typeof value.isEdge === 'function' &&\n    typeof value.isElementReadOnly === 'function' &&\n    typeof value.isEmpty === 'function' &&\n    typeof value.isEnd === 'function' &&\n    typeof value.isInline === 'function' &&\n    typeof value.isNormalizing === 'function' &&\n    typeof value.isSelectable === 'function' &&\n    typeof value.isStart === 'function' &&\n    typeof value.isVoid === 'function' &&\n    typeof value.last === 'function' &&\n    typeof value.leaf === 'function' &&\n    typeof value.levels === 'function' &&\n    typeof value.liftNodes === 'function' &&\n    typeof value.markableVoid === 'function' &&\n    typeof value.mergeNodes === 'function' &&\n    typeof value.move === 'function' &&\n    typeof value.moveNodes === 'function' &&\n    typeof value.next === 'function' &&\n    typeof value.node === 'function' &&\n    typeof value.nodes === 'function' &&\n    typeof value.normalize === 'function' &&\n    typeof value.normalizeNode === 'function' &&\n    typeof value.onChange === 'function' &&\n    typeof value.parent === 'function' &&\n    typeof value.path === 'function' &&\n    typeof value.pathRef === 'function' &&\n    typeof value.pathRefs === 'function' &&\n    typeof value.point === 'function' &&\n    typeof value.pointRef === 'function' &&\n    typeof value.pointRefs === 'function' &&\n    typeof value.positions === 'function' &&\n    typeof value.previous === 'function' &&\n    typeof value.range === 'function' &&\n    typeof value.rangeRef === 'function' &&\n    typeof value.rangeRefs === 'function' &&\n    typeof value.removeMark === 'function' &&\n    typeof value.removeNodes === 'function' &&\n    typeof value.select === 'function' &&\n    typeof value.setNodes === 'function' &&\n    typeof value.setNormalizing === 'function' &&\n    typeof value.setPoint === 'function' &&\n    typeof value.setSelection === 'function' &&\n    typeof value.shouldMergeNodesRemovePrevNode === 'function' &&\n    typeof value.shouldNormalize === 'function' &&\n    typeof value.splitNodes === 'function' &&\n    typeof value.start === 'function' &&\n    typeof value.string === 'function' &&\n    typeof value.unhangRange === 'function' &&\n    typeof value.unsetNodes === 'function' &&\n    typeof value.unwrapNodes === 'function' &&\n    typeof value.void === 'function' &&\n    typeof value.withoutNormalizing === 'function' &&\n    typeof value.wrapNodes === 'function' &&\n    (value.marks === null || isObject(value.marks)) &&\n    (value.selection === null || Range.isRange(value.selection)) &&\n    (deep\n      ? Node.isNodeList(value.children) &&\n        Operation.isOperationList(value.operations)\n      : Array.isArray(value.children) && Array.isArray(value.operations))\n\n  return isEditor\n}\n"
  },
  {
    "path": "packages/slate/src/editor/is-empty.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const isEmpty: EditorInterface['isEmpty'] = (editor, element) => {\n  const { children } = element\n  const [first] = children\n  return (\n    children.length === 0 ||\n    (children.length === 1 &&\n      Node.isText(first) &&\n      first.text === '' &&\n      !editor.isVoid(element))\n  )\n}\n"
  },
  {
    "path": "packages/slate/src/editor/is-end.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\n\nexport const isEnd: EditorInterface['isEnd'] = (editor, point, at) => {\n  const end = Editor.end(editor, at)\n  return Point.equals(point, end)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/is-normalizing.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { NORMALIZING } from '../utils/weak-maps'\n\nexport const isNormalizing: EditorInterface['isNormalizing'] = editor => {\n  const isNormalizing = NORMALIZING.get(editor)\n  return isNormalizing === undefined ? true : isNormalizing\n}\n"
  },
  {
    "path": "packages/slate/src/editor/is-start.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Point } from '../interfaces/point'\n\nexport const isStart: EditorInterface['isStart'] = (editor, point, at) => {\n  // PERF: If the offset isn't `0` we know it's not the start.\n  if (point.offset !== 0) {\n    return false\n  }\n\n  const start = Editor.start(editor, at)\n  return Point.equals(point, start)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/last.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const last: EditorInterface['last'] = (editor, at) => {\n  const path = Editor.path(editor, at, { edge: 'end' })\n  return Editor.node(editor, path)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/leaf.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const leaf: EditorInterface['leaf'] = (editor, at, options = {}) => {\n  const path = Editor.path(editor, at, options)\n  const node = Node.leaf(editor, path)\n  return [node, path]\n}\n"
  },
  {
    "path": "packages/slate/src/editor/levels.ts",
    "content": "import { Node, NodeEntry } from '../interfaces/node'\nimport { Editor, EditorLevelsOptions } from '../interfaces/editor'\n\nexport function* levels<T extends Node>(\n  editor: Editor,\n  options: EditorLevelsOptions<T> = {}\n): Generator<NodeEntry<T>, void, undefined> {\n  const { at = editor.selection, reverse = false, voids = false } = options\n  let { match } = options\n\n  if (match == null) {\n    match = () => true\n  }\n\n  if (!at) {\n    return\n  }\n\n  const levels: NodeEntry<T>[] = []\n  const path = Editor.path(editor, at)\n\n  for (const [n, p] of Node.levels(editor, path)) {\n    if (!match(n, p)) {\n      continue\n    }\n\n    levels.push([n, p] as NodeEntry<T>)\n\n    if (!voids && Node.isElement(n) && Editor.isVoid(editor, n)) {\n      break\n    }\n  }\n\n  if (reverse) {\n    levels.reverse()\n  }\n\n  yield* levels\n}\n"
  },
  {
    "path": "packages/slate/src/editor/marks.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Point } from '../interfaces'\n\nexport const marks: EditorInterface['marks'] = (editor, options = {}) => {\n  const { marks, selection } = editor\n\n  if (!selection) {\n    return null\n  }\n  let { anchor, focus } = selection\n\n  if (marks) {\n    return marks\n  }\n\n  if (Range.isExpanded(selection)) {\n    const isBackward = Range.isBackward(selection)\n    if (isBackward) {\n      ;[focus, anchor] = [anchor, focus]\n    }\n    /**\n     * COMPAT: Make sure hanging ranges (caused by double clicking in Firefox)\n     * do not adversely affect the returned marks.\n     */\n    const isEnd = Editor.isEnd(editor, anchor, anchor.path)\n    if (isEnd) {\n      const after = Editor.after(editor, anchor as Point)\n      if (after) {\n        anchor = after\n      }\n    }\n\n    const [match] = Editor.nodes(editor, {\n      match: Node.isText,\n      at: {\n        anchor,\n        focus,\n      },\n    })\n\n    if (match) {\n      const [node] = match\n      const { text, ...rest } = node\n      return rest\n    } else {\n      return {}\n    }\n  }\n\n  const { path } = anchor\n\n  let [node] = Editor.leaf(editor, path)\n\n  if (anchor.offset === 0) {\n    const prev = Editor.previous(editor, { at: path, match: Node.isText })\n    const markedVoid = Editor.above(editor, {\n      match: n =>\n        Node.isElement(n) && Editor.isVoid(editor, n) && editor.markableVoid(n),\n    })\n    if (!markedVoid) {\n      const block = Editor.above(editor, {\n        match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      })\n\n      if (prev && block) {\n        const [prevNode, prevPath] = prev\n        const [, blockPath] = block\n\n        if (Path.isAncestor(blockPath, prevPath)) {\n          node = prevNode\n        }\n      }\n    }\n  }\n\n  const { text, ...rest } = node\n  return rest\n}\n"
  },
  {
    "path": "packages/slate/src/editor/next.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Location, Span } from '../interfaces/location'\n\nexport const next: EditorInterface['next'] = (editor, options = {}) => {\n  const { mode = 'lowest', voids = false } = options\n  let { match, at = editor.selection } = options\n\n  if (!at) {\n    return\n  }\n\n  const pointAfterLocation = Editor.after(editor, at, { voids })\n\n  if (!pointAfterLocation) return\n\n  const [, to] = Editor.last(editor, [])\n\n  const span: Span = [pointAfterLocation.path, to]\n\n  if (Location.isPath(at) && at.length === 0) {\n    throw new Error(`Cannot get the next node from the root node!`)\n  }\n\n  if (match == null) {\n    if (Location.isPath(at)) {\n      const [parent] = Editor.parent(editor, at)\n      match = n => parent.children.includes(n)\n    } else {\n      match = () => true\n    }\n  }\n\n  const [next] = Editor.nodes(editor, { at: span, match, mode, voids })\n  return next\n}\n"
  },
  {
    "path": "packages/slate/src/editor/node.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\n\nexport const node: EditorInterface['node'] = (editor, at, options = {}) => {\n  const path = Editor.path(editor, at, options)\n  const node = Node.get(editor, path)\n  return [node, path]\n}\n"
  },
  {
    "path": "packages/slate/src/editor/nodes.ts",
    "content": "import { Node, NodeEntry } from '../interfaces/node'\nimport { Editor, EditorNodesOptions } from '../interfaces/editor'\nimport { Location } from '../interfaces/location'\nimport { Path } from '../interfaces/path'\n\nexport function* nodes<T extends Node>(\n  editor: Editor,\n  options: EditorNodesOptions<T> = {}\n): Generator<NodeEntry<T>, void, undefined> {\n  const {\n    at = editor.selection,\n    mode = 'all',\n    universal = false,\n    reverse = false,\n    voids = false,\n    pass,\n  } = options\n  let { match } = options\n\n  if (!match) {\n    match = () => true\n  }\n\n  if (!at) {\n    return\n  }\n\n  let from\n  let to\n\n  if (Location.isSpan(at)) {\n    from = at[0]\n    to = at[1]\n  } else {\n    const first = Editor.path(editor, at, { edge: 'start' })\n    const last = Editor.path(editor, at, { edge: 'end' })\n    from = reverse ? last : first\n    to = reverse ? first : last\n  }\n\n  const nodeEntries = Node.nodes(editor, {\n    reverse,\n    from,\n    to,\n    pass: ([node, path]) => {\n      if (pass && pass([node, path])) return true\n      if (!Node.isElement(node)) return false\n      if (\n        !voids &&\n        (Editor.isVoid(editor, node) || Editor.isElementReadOnly(editor, node))\n      )\n        return true\n\n      return false\n    },\n  })\n\n  const matches: NodeEntry<T>[] = []\n  let hit: NodeEntry<T> | undefined\n\n  for (const [node, path] of nodeEntries) {\n    const isLower = hit && Path.compare(path, hit[1]) === 0\n\n    // In highest mode any node lower than the last hit is not a match.\n    if (mode === 'highest' && isLower) {\n      continue\n    }\n\n    if (!match(node, path)) {\n      // If we've arrived at a leaf text node that is not lower than the last\n      // hit, then we've found a branch that doesn't include a match, which\n      // means the match is not universal.\n      if (universal && !isLower && Node.isText(node)) {\n        return\n      } else {\n        continue\n      }\n    }\n\n    // If there's a match and it's lower than the last, update the hit.\n    if (mode === 'lowest' && isLower) {\n      hit = [node, path] as NodeEntry<T>\n      continue\n    }\n\n    // In lowest mode we emit the last hit, once it's guaranteed lowest.\n    const emit: NodeEntry<T> | undefined =\n      mode === 'lowest' ? hit : ([node, path] as NodeEntry<T>)\n\n    if (emit) {\n      if (universal) {\n        matches.push(emit)\n      } else {\n        yield emit\n      }\n    }\n\n    hit = [node, path] as NodeEntry<T>\n  }\n\n  // Since lowest is always emitting one behind, catch up at the end.\n  if (mode === 'lowest' && hit) {\n    if (universal) {\n      matches.push(hit)\n    } else {\n      yield hit\n    }\n  }\n\n  // Universal defers to ensure that the match occurs in every branch, so we\n  // yield all of the matches after iterating.\n  if (universal) {\n    yield* matches\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/normalize.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { DIRTY_PATH_KEYS, DIRTY_PATHS } from '../utils/weak-maps'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\n\nexport const normalize: EditorInterface['normalize'] = (\n  editor,\n  options = {}\n) => {\n  const { force = false, operation } = options\n  const getDirtyPaths = (editor: Editor) => {\n    return DIRTY_PATHS.get(editor) || []\n  }\n\n  const getDirtyPathKeys = (editor: Editor) => {\n    return DIRTY_PATH_KEYS.get(editor) || new Set()\n  }\n\n  const popDirtyPath = (editor: Editor): Path => {\n    const path = getDirtyPaths(editor).pop()!\n    const key = path.join(',')\n    getDirtyPathKeys(editor).delete(key)\n    return path\n  }\n\n  if (!Editor.isNormalizing(editor)) {\n    return\n  }\n\n  if (force) {\n    const allPaths = Array.from(Node.nodes(editor), ([, p]) => p)\n    const allPathKeys = new Set(allPaths.map(p => p.join(',')))\n    DIRTY_PATHS.set(editor, allPaths)\n    DIRTY_PATH_KEYS.set(editor, allPathKeys)\n  }\n\n  if (getDirtyPaths(editor).length === 0) {\n    return\n  }\n\n  Editor.withoutNormalizing(editor, () => {\n    /*\n      Fix dirty elements with no children.\n      editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\n      Running an initial pass avoids the catch-22 race condition.\n    */\n    for (const dirtyPath of getDirtyPaths(editor)) {\n      if (Node.has(editor, dirtyPath)) {\n        const entry = Editor.node(editor, dirtyPath)\n        const [node, _] = entry\n\n        /*\n          The default normalizer inserts an empty text node in this scenario, but it can be customised.\n          So there is some risk here.\n\n          As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\n          by definition adding children to an empty node can't cause other paths to change.\n        */\n        if (Node.isElement(node) && node.children.length === 0) {\n          editor.normalizeNode(entry, { operation, force })\n        }\n      }\n    }\n\n    let dirtyPaths = getDirtyPaths(editor)\n    const initialDirtyPathsLength = dirtyPaths.length\n    let iteration = 0\n\n    while (dirtyPaths.length !== 0) {\n      if (\n        !editor.shouldNormalize({\n          dirtyPaths,\n          iteration,\n          initialDirtyPathsLength,\n          operation,\n        })\n      ) {\n        return\n      }\n\n      const dirtyPath = popDirtyPath(editor)\n\n      // If the node doesn't exist in the tree, it does not need to be normalized.\n      if (Node.has(editor, dirtyPath)) {\n        const entry = Editor.node(editor, dirtyPath)\n        editor.normalizeNode(entry, { operation, force })\n      }\n      iteration++\n      dirtyPaths = getDirtyPaths(editor)\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/editor/parent.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Ancestor, NodeEntry } from '../interfaces/node'\n\nexport const parent: EditorInterface['parent'] = (editor, at, options = {}) => {\n  const path = Editor.path(editor, at, options)\n  const parentPath = Path.parent(path)\n  const entry = Editor.node(editor, parentPath)\n  return entry as NodeEntry<Ancestor>\n}\n"
  },
  {
    "path": "packages/slate/src/editor/path-ref.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { PathRef } from '../interfaces/path-ref'\n\nexport const pathRef: EditorInterface['pathRef'] = (\n  editor,\n  path,\n  options = {}\n) => {\n  const { affinity = 'forward' } = options\n  const ref: PathRef = {\n    current: path,\n    affinity,\n    unref() {\n      const { current } = ref\n      const pathRefs = Editor.pathRefs(editor)\n      pathRefs.delete(ref)\n      ref.current = null\n      return current\n    },\n  }\n\n  const refs = Editor.pathRefs(editor)\n  refs.add(ref)\n  return ref\n}\n"
  },
  {
    "path": "packages/slate/src/editor/path-refs.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { PATH_REFS } from '../utils/weak-maps'\n\nexport const pathRefs: EditorInterface['pathRefs'] = editor => {\n  let refs = PATH_REFS.get(editor)\n\n  if (!refs) {\n    refs = new Set()\n    PATH_REFS.set(editor, refs)\n  }\n\n  return refs\n}\n"
  },
  {
    "path": "packages/slate/src/editor/path.ts",
    "content": "import { EditorInterface, Location, Node, Path, Range } from '../interfaces'\n\nexport const path: EditorInterface['path'] = (editor, at, options = {}) => {\n  const { depth, edge } = options\n\n  if (Location.isPath(at)) {\n    if (edge === 'start') {\n      const [, firstPath] = Node.first(editor, at)\n      at = firstPath\n    } else if (edge === 'end') {\n      const [, lastPath] = Node.last(editor, at)\n      at = lastPath\n    }\n  }\n\n  if (Location.isRange(at)) {\n    if (edge === 'start') {\n      at = Range.start(at)\n    } else if (edge === 'end') {\n      at = Range.end(at)\n    } else {\n      at = Path.common(at.anchor.path, at.focus.path)\n    }\n  }\n\n  if (Location.isPoint(at)) {\n    at = at.path\n  }\n\n  if (depth != null) {\n    at = at.slice(0, depth)\n  }\n\n  return at\n}\n"
  },
  {
    "path": "packages/slate/src/editor/point-ref.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { PointRef } from '../interfaces/point-ref'\n\nexport const pointRef: EditorInterface['pointRef'] = (\n  editor,\n  point,\n  options = {}\n) => {\n  const { affinity = 'forward' } = options\n  const ref: PointRef = {\n    current: point,\n    affinity,\n    unref() {\n      const { current } = ref\n      const pointRefs = Editor.pointRefs(editor)\n      pointRefs.delete(ref)\n      ref.current = null\n      return current\n    },\n  }\n\n  const refs = Editor.pointRefs(editor)\n  refs.add(ref)\n  return ref\n}\n"
  },
  {
    "path": "packages/slate/src/editor/point-refs.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { POINT_REFS } from '../utils/weak-maps'\n\nexport const pointRefs: EditorInterface['pointRefs'] = editor => {\n  let refs = POINT_REFS.get(editor)\n\n  if (!refs) {\n    refs = new Set()\n    POINT_REFS.set(editor, refs)\n  }\n\n  return refs\n}\n"
  },
  {
    "path": "packages/slate/src/editor/point.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Location } from '../interfaces'\n\nexport const point: EditorInterface['point'] = (editor, at, options = {}) => {\n  const { edge = 'start' } = options\n\n  if (Location.isPath(at)) {\n    let path\n\n    if (edge === 'end') {\n      const [, lastPath] = Node.last(editor, at)\n      path = lastPath\n    } else {\n      const [, firstPath] = Node.first(editor, at)\n      path = firstPath\n    }\n\n    const node = Node.get(editor, path)\n\n    if (!Node.isText(node)) {\n      throw new Error(\n        `Cannot get the ${edge} point in the node at path [${at}] because it has no ${edge} text node.`\n      )\n    }\n\n    return { path, offset: edge === 'end' ? node.text.length : 0 }\n  }\n\n  if (Location.isRange(at)) {\n    const [start, end] = Range.edges(at)\n    return edge === 'start' ? start : end\n  }\n\n  return at\n}\n"
  },
  {
    "path": "packages/slate/src/editor/positions.ts",
    "content": "import { Editor, EditorPositionsOptions } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\nimport { Point } from '../interfaces/point'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport {\n  getCharacterDistance,\n  getWordDistance,\n  splitByCharacterDistance,\n} from '../utils/string'\n\nexport function* positions(\n  editor: Editor,\n  options: EditorPositionsOptions = {}\n): Generator<Point, void, undefined> {\n  const {\n    at = editor.selection,\n    unit = 'offset',\n    reverse = false,\n    voids = false,\n  } = options\n\n  if (!at) {\n    return\n  }\n\n  /**\n   * Algorithm notes:\n   *\n   * Each step `distance` is dynamic depending on the underlying text\n   * and the `unit` specified.  Each step, e.g., a line or word, may\n   * span multiple text nodes, so we iterate through the text both on\n   * two levels in step-sync:\n   *\n   * `leafText` stores the text on a text leaf level, and is advanced\n   * through using the counters `leafTextOffset` and `leafTextRemaining`.\n   *\n   * `blockText` stores the text on a block level, and is shortened\n   * by `distance` every time it is advanced.\n   *\n   * We only maintain a window of one blockText and one leafText because\n   * a block node always appears before all of its leaf nodes.\n   */\n\n  const range = Editor.range(editor, at)\n  const [start, end] = Range.edges(range)\n  const first = reverse ? end : start\n  let isNewBlock = false\n  let blockText = ''\n  let distance = 0 // Distance for leafText to catch up to blockText.\n  let leafTextRemaining = 0\n  let leafTextOffset = 0\n  const skippedPaths: Path[] = []\n\n  // Iterate through all nodes in range, grabbing entire textual content\n  // of block nodes in blockText, and text nodes in leafText.\n  // Exploits the fact that nodes are sequenced in such a way that we first\n  // encounter the block node, then all of its text nodes, so when iterating\n  // through the blockText and leafText we just need to remember a window of\n  // one block node and leaf node, respectively.\n  for (const [node, path] of Editor.nodes(editor, {\n    at,\n    reverse,\n    voids,\n  })) {\n    // If the node is inside a skipped ancestor, do not return any points, but\n    // still process its content so that the iteration state remains correct.\n    const hasSkippedAncestor = skippedPaths.some(p => Path.isAncestor(p, path))\n\n    function* maybeYield(point: Point) {\n      if (!hasSkippedAncestor) {\n        yield point\n      }\n    }\n\n    /*\n     * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\n     */\n    if (Node.isElement(node)) {\n      if (!editor.isSelectable(node)) {\n        /**\n         * If the node is not selectable, skip it and its descendants\n         */\n        skippedPaths.push(path)\n        if (reverse) {\n          if (Path.hasPrevious(path)) {\n            yield* maybeYield(Editor.end(editor, Path.previous(path)))\n          }\n          continue\n        } else {\n          const nextPath = Path.next(path)\n          if (Editor.hasPath(editor, nextPath)) {\n            yield* maybeYield(Editor.start(editor, nextPath))\n          }\n          continue\n        }\n      }\n\n      // Void nodes are a special case, so by default we will always\n      // yield their first point. If the `voids` option is set to true,\n      // then we will iterate over their content.\n      if (!voids && (editor.isVoid(node) || editor.isElementReadOnly(node))) {\n        yield* maybeYield(Editor.start(editor, path))\n        continue\n      }\n\n      // Inline element nodes are ignored as they don't themselves\n      // contribute to `blockText` or `leafText` - their parent and\n      // children do.\n      if (editor.isInline(node)) continue\n\n      // Block element node - set `blockText` to its text content.\n      if (Editor.hasInlines(editor, node)) {\n        // We always exhaust block nodes before encountering a new one:\n        //   console.assert(blockText === '',\n        //     `blockText='${blockText}' - `+\n        //     `not exhausted before new block node`, path)\n\n        // Ensure range considered is capped to `range`, in the\n        // start/end edge cases where block extends beyond range.\n        // Equivalent to this, but presumably more performant:\n        //   blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n        //   blockRange = Range.intersection(range, blockRange) // intersect\n        //   blockText = Editor.string(editor, blockRange, { voids })\n        const e = Path.isAncestor(path, end.path)\n          ? end\n          : Editor.end(editor, path)\n        const s = Path.isAncestor(path, start.path)\n          ? start\n          : Editor.start(editor, path)\n\n        blockText = Editor.string(editor, { anchor: s, focus: e }, { voids })\n        isNewBlock = true\n      }\n    }\n\n    /*\n     * TEXT LEAF NODE - Iterate through text content, yielding\n     * positions every `distance` offset according to `unit`.\n     */\n    if (Node.isText(node)) {\n      const isFirst = Path.equals(path, first.path)\n\n      // Proof that we always exhaust text nodes before encountering a new one:\n      //   console.assert(leafTextRemaining <= 0,\n      //     `leafTextRemaining=${leafTextRemaining} - `+\n      //     `not exhausted before new leaf text node`, path)\n\n      // Reset `leafText` counters for new text node.\n      if (isFirst) {\n        leafTextRemaining = reverse\n          ? first.offset\n          : node.text.length - first.offset\n        leafTextOffset = first.offset // Works for reverse too.\n      } else {\n        leafTextRemaining = node.text.length\n        leafTextOffset = reverse ? leafTextRemaining : 0\n      }\n\n      // Yield position at the start of node (potentially).\n      if (isFirst || isNewBlock || unit === 'offset') {\n        yield* maybeYield({ path, offset: leafTextOffset })\n        isNewBlock = false\n      }\n\n      // Yield positions every (dynamically calculated) `distance` offset.\n      while (true) {\n        // If `leafText` has caught up with `blockText` (distance=0),\n        // and if blockText is exhausted, break to get another block node,\n        // otherwise advance blockText forward by the new `distance`.\n        if (distance === 0) {\n          if (blockText === '') break\n          distance = calcDistance(blockText, unit, reverse)\n          // Split the string at the previously found distance and use the\n          // remaining string for the next iteration.\n          blockText = splitByCharacterDistance(blockText, distance, reverse)[1]\n        }\n\n        // Advance `leafText` by the current `distance`.\n        leafTextOffset = reverse\n          ? leafTextOffset - distance\n          : leafTextOffset + distance\n        leafTextRemaining = leafTextRemaining - distance\n\n        // If `leafText` is exhausted, break to get a new leaf node\n        // and set distance to the overflow amount, so we'll (maybe)\n        // catch up to blockText in the next leaf text node.\n        if (leafTextRemaining < 0) {\n          distance = -leafTextRemaining\n          break\n        }\n\n        // Successfully walked `distance` offsets through `leafText`\n        // to catch up with `blockText`, so we can reset `distance`\n        // and yield this position in this node.\n        distance = 0\n        yield* maybeYield({ path, offset: leafTextOffset })\n      }\n    }\n  }\n  // Proof that upon completion, we've exahusted both leaf and block text:\n  //   console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n  //   console.assert(blockText === '', \"blockText wasn't exhausted\")\n\n  // Helper:\n  // Return the distance in offsets for a step of size `unit` on given string.\n  function calcDistance(text: string, unit: string, reverse?: boolean) {\n    if (unit === 'character') {\n      return getCharacterDistance(text, reverse)\n    } else if (unit === 'word') {\n      return getWordDistance(text, reverse)\n    } else if (unit === 'line' || unit === 'block') {\n      return text.length\n    }\n    return 1\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/previous.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Location, Span } from '../interfaces/location'\n\nexport const previous: EditorInterface['previous'] = (editor, options = {}) => {\n  const { mode = 'lowest', voids = false } = options\n  let { match, at = editor.selection } = options\n\n  if (!at) {\n    return\n  }\n\n  const pointBeforeLocation = Editor.before(editor, at, { voids })\n\n  if (!pointBeforeLocation) {\n    return\n  }\n\n  const [, to] = Editor.first(editor, [])\n\n  // The search location is from the start of the document to the path of\n  // the point before the location passed in\n  const span: Span = [pointBeforeLocation.path, to]\n\n  if (Location.isPath(at) && at.length === 0) {\n    throw new Error(`Cannot get the previous node from the root node!`)\n  }\n\n  if (match == null) {\n    if (Location.isPath(at)) {\n      const [parent] = Editor.parent(editor, at)\n      match = n => parent.children.includes(n)\n    } else {\n      match = () => true\n    }\n  }\n\n  const [previous] = Editor.nodes(editor, {\n    reverse: true,\n    at: span,\n    match,\n    mode,\n    voids,\n  })\n\n  return previous\n}\n"
  },
  {
    "path": "packages/slate/src/editor/range-ref.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { RangeRef } from '../interfaces/range-ref'\n\nexport const rangeRef: EditorInterface['rangeRef'] = (\n  editor,\n  range,\n  options = {}\n) => {\n  const { affinity = 'forward' } = options\n  const ref: RangeRef = {\n    current: range,\n    affinity,\n    unref() {\n      const { current } = ref\n      const rangeRefs = Editor.rangeRefs(editor)\n      rangeRefs.delete(ref)\n      ref.current = null\n      return current\n    },\n  }\n\n  const refs = Editor.rangeRefs(editor)\n  refs.add(ref)\n  return ref\n}\n"
  },
  {
    "path": "packages/slate/src/editor/range-refs.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { RANGE_REFS } from '../utils/weak-maps'\n\nexport const rangeRefs: EditorInterface['rangeRefs'] = editor => {\n  let refs = RANGE_REFS.get(editor)\n\n  if (!refs) {\n    refs = new Set()\n    RANGE_REFS.set(editor, refs)\n  }\n\n  return refs\n}\n"
  },
  {
    "path": "packages/slate/src/editor/range.ts",
    "content": "import { Location } from '../interfaces'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const range: EditorInterface['range'] = (editor, at, to) => {\n  if (Location.isRange(at) && !to) {\n    return at\n  }\n\n  const start = Editor.start(editor, at)\n  const end = Editor.end(editor, to || at)\n  return { anchor: start, focus: end }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/remove-mark.ts",
    "content": "import { Node } from '../interfaces/node'\nimport { Path } from '../interfaces/path'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { FLUSHING } from '../utils/weak-maps'\nimport { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const removeMark: EditorInterface['removeMark'] = (editor, key) => {\n  const { selection } = editor\n\n  if (selection) {\n    const match = (node: Node, path: Path) => {\n      if (!Node.isText(node)) {\n        return false // marks can only be applied to text\n      }\n      const [parentNode, parentPath] = Editor.parent(editor, path)\n      return !editor.isVoid(parentNode) || editor.markableVoid(parentNode)\n    }\n    const expandedSelection = Range.isExpanded(selection)\n    let markAcceptingVoidSelected = false\n    if (!expandedSelection) {\n      const [selectedNode, selectedPath] = Editor.node(editor, selection)\n      if (selectedNode && match(selectedNode, selectedPath)) {\n        const [parentNode] = Editor.parent(editor, selectedPath)\n        markAcceptingVoidSelected =\n          parentNode && editor.markableVoid(parentNode)\n      }\n    }\n    if (expandedSelection || markAcceptingVoidSelected) {\n      Transforms.unsetNodes(editor, key, {\n        match,\n        split: true,\n        voids: true,\n      })\n    } else {\n      const marks = { ...(Editor.marks(editor) || {}) }\n      delete marks[<keyof Node>key]\n      editor.marks = marks\n      if (!FLUSHING.get(editor)) {\n        editor.onChange()\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/set-normalizing.ts",
    "content": "import { EditorInterface } from '../interfaces/editor'\nimport { NORMALIZING } from '../utils/weak-maps'\n\nexport const setNormalizing: EditorInterface['setNormalizing'] = (\n  editor,\n  isNormalizing\n) => {\n  NORMALIZING.set(editor, isNormalizing)\n}\n"
  },
  {
    "path": "packages/slate/src/editor/should-merge-nodes-remove-prev-node.ts",
    "content": "import { EditorInterface, Editor, Node } from '../interfaces'\n\nexport const shouldMergeNodesRemovePrevNode: EditorInterface['shouldMergeNodesRemovePrevNode'] =\n  (editor, [prevNode, prevPath], [curNode, curNodePath]) => {\n    // If the target node that we're merging with is empty, remove it instead\n    // of merging the two. This is a common rich text editor behavior to\n    // prevent losing formatting when deleting entire nodes when you have a\n    // hanging selection.\n    // if prevNode is first child in parent,don't remove it.\n\n    return (\n      (Node.isElement(prevNode) && Editor.isEmpty(editor, prevNode)) ||\n      (Node.isText(prevNode) &&\n        prevNode.text === '' &&\n        prevPath[prevPath.length - 1] !== 0)\n    )\n  }\n"
  },
  {
    "path": "packages/slate/src/editor/start.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const start: EditorInterface['start'] = (editor, at) => {\n  return Editor.point(editor, at, { edge: 'start' })\n}\n"
  },
  {
    "path": "packages/slate/src/editor/string.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces'\n\nexport const string: EditorInterface['string'] = (editor, at, options = {}) => {\n  const { voids = false } = options\n  const range = Editor.range(editor, at)\n  const [start, end] = Range.edges(range)\n  let text = ''\n\n  for (const [node, path] of Editor.nodes(editor, {\n    at: range,\n    match: Node.isText,\n    voids,\n  })) {\n    let t = node.text\n\n    if (Path.equals(path, end.path)) {\n      t = t.slice(0, end.offset)\n    }\n\n    if (Path.equals(path, start.path)) {\n      t = t.slice(start.offset)\n    }\n\n    text += t\n  }\n\n  return text\n}\n"
  },
  {
    "path": "packages/slate/src/editor/unhang-range.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces'\n\nexport const unhangRange: EditorInterface['unhangRange'] = (\n  editor,\n  range,\n  options = {}\n) => {\n  const { voids = false } = options\n  let [start, end] = Range.edges(range)\n\n  // PERF: exit early if we can guarantee that the range isn't hanging.\n  if (\n    start.offset !== 0 ||\n    end.offset !== 0 ||\n    Range.isCollapsed(range) ||\n    Path.hasPrevious(end.path)\n  ) {\n    return range\n  }\n\n  const endBlock = Editor.above(editor, {\n    at: end,\n    match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n    voids,\n  })\n  const blockPath = endBlock ? endBlock[1] : []\n  const first = Editor.start(editor, start)\n  const before = { anchor: first, focus: end }\n  let skip = true\n\n  for (const [node, path] of Editor.nodes(editor, {\n    at: before,\n    match: Node.isText,\n    reverse: true,\n    voids,\n  })) {\n    if (skip) {\n      skip = false\n      continue\n    }\n\n    if (node.text !== '' || Path.isBefore(path, blockPath)) {\n      end = { path, offset: node.text.length }\n      break\n    }\n  }\n\n  return { anchor: start, focus: end }\n}\n"
  },
  {
    "path": "packages/slate/src/editor/without-normalizing.ts",
    "content": "import { Editor, EditorInterface } from '../interfaces/editor'\n\nexport const withoutNormalizing: EditorInterface['withoutNormalizing'] = (\n  editor,\n  fn\n) => {\n  const value = Editor.isNormalizing(editor)\n  Editor.setNormalizing(editor, false)\n  try {\n    fn()\n  } finally {\n    Editor.setNormalizing(editor, value)\n  }\n  Editor.normalize(editor)\n}\n"
  },
  {
    "path": "packages/slate/src/index.ts",
    "content": "export * from './core'\nexport * from './create-editor'\nexport * from './editor'\nexport * from './interfaces'\nexport * from './transforms-node'\nexport * from './transforms-selection'\nexport * from './transforms-text'\nexport * from './types'\nexport * from './utils/is-object'\n"
  },
  {
    "path": "packages/slate/src/interfaces/editor.ts",
    "content": "import {\n  Ancestor,\n  Descendant,\n  Element,\n  ExtendedType,\n  Location,\n  Node,\n  NodeEntry,\n  Operation,\n  Path,\n  PathRef,\n  Point,\n  PointRef,\n  Range,\n  RangeRef,\n  Span,\n  Text,\n  Transforms,\n} from '..'\nimport {\n  LeafEdge,\n  MaximizeMode,\n  RangeDirection,\n  SelectionMode,\n  TextDirection,\n  TextUnit,\n  TextUnitAdjustment,\n} from '../types/types'\nimport { OmitFirstArg } from '../utils/types'\nimport { isEditor } from '../editor/is-editor'\nimport {\n  TextInsertFragmentOptions,\n  TextInsertTextOptions,\n} from './transforms/text'\nimport { NodeInsertNodesOptions } from './transforms/node'\n\n/**\n * The `Editor` interface stores all the state of a Slate editor. It is extended\n * by plugins that wish to add their own helpers and implement new behaviors.\n */\nexport interface BaseEditor {\n  // Core state.\n\n  children: Descendant[]\n  selection: Selection\n  operations: Operation[]\n  marks: EditorMarks | null\n\n  // Overrideable core methods.\n\n  apply: (operation: Operation) => void\n  getDirtyPaths: (operation: Operation) => Path[]\n  getFragment: () => Descendant[]\n  isElementReadOnly: (element: Element) => boolean\n  isSelectable: (element: Element) => boolean\n  markableVoid: (element: Element) => boolean\n  normalizeNode: (\n    entry: NodeEntry,\n    options?: {\n      operation?: Operation\n      fallbackElement?: () => Element\n      force?: boolean\n    }\n  ) => void\n  onChange: (options?: { operation?: Operation }) => void\n  shouldNormalize: ({\n    iteration,\n    dirtyPaths,\n    operation,\n  }: {\n    iteration: number\n    initialDirtyPathsLength: number\n    dirtyPaths: Path[]\n    operation?: Operation\n  }) => boolean\n\n  // Overrideable core transforms.\n\n  addMark: OmitFirstArg<typeof Editor.addMark>\n  collapse: OmitFirstArg<typeof Transforms.collapse>\n  delete: OmitFirstArg<typeof Transforms.delete>\n  deleteBackward: (unit: TextUnit) => void\n  deleteForward: (unit: TextUnit) => void\n  deleteFragment: OmitFirstArg<typeof Editor.deleteFragment>\n  deselect: OmitFirstArg<typeof Transforms.deselect>\n  insertBreak: OmitFirstArg<typeof Editor.insertBreak>\n  insertFragment: OmitFirstArg<typeof Transforms.insertFragment>\n  insertNode: OmitFirstArg<typeof Editor.insertNode>\n  insertNodes: OmitFirstArg<typeof Transforms.insertNodes>\n  insertSoftBreak: OmitFirstArg<typeof Editor.insertSoftBreak>\n  insertText: OmitFirstArg<typeof Transforms.insertText>\n  liftNodes: OmitFirstArg<typeof Transforms.liftNodes>\n  mergeNodes: OmitFirstArg<typeof Transforms.mergeNodes>\n  move: OmitFirstArg<typeof Transforms.move>\n  moveNodes: OmitFirstArg<typeof Transforms.moveNodes>\n  normalize: OmitFirstArg<typeof Editor.normalize>\n  removeMark: OmitFirstArg<typeof Editor.removeMark>\n  removeNodes: OmitFirstArg<typeof Transforms.removeNodes>\n  select: OmitFirstArg<typeof Transforms.select>\n  setNodes: <T extends Node>(\n    props: Partial<T>,\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: MaximizeMode\n      hanging?: boolean\n      split?: boolean\n      voids?: boolean\n      compare?: PropsCompare\n      merge?: PropsMerge\n    }\n  ) => void\n  setNormalizing: OmitFirstArg<typeof Editor.setNormalizing>\n  setPoint: OmitFirstArg<typeof Transforms.setPoint>\n  setSelection: OmitFirstArg<typeof Transforms.setSelection>\n  splitNodes: OmitFirstArg<typeof Transforms.splitNodes>\n  unsetNodes: OmitFirstArg<typeof Transforms.unsetNodes>\n  unwrapNodes: OmitFirstArg<typeof Transforms.unwrapNodes>\n  withoutNormalizing: OmitFirstArg<typeof Editor.withoutNormalizing>\n  wrapNodes: OmitFirstArg<typeof Transforms.wrapNodes>\n\n  // Overrideable core queries.\n\n  above: <T extends Ancestor>(\n    options?: EditorAboveOptions<T>\n  ) => NodeEntry<T> | undefined\n  after: OmitFirstArg<typeof Editor.after>\n  before: OmitFirstArg<typeof Editor.before>\n  edges: OmitFirstArg<typeof Editor.edges>\n  elementReadOnly: OmitFirstArg<typeof Editor.elementReadOnly>\n  end: OmitFirstArg<typeof Editor.end>\n  first: OmitFirstArg<typeof Editor.first>\n  fragment: OmitFirstArg<typeof Editor.fragment>\n  getMarks: OmitFirstArg<typeof Editor.marks>\n  hasBlocks: OmitFirstArg<typeof Editor.hasBlocks>\n  hasInlines: OmitFirstArg<typeof Editor.hasInlines>\n  hasPath: OmitFirstArg<typeof Editor.hasPath>\n  hasTexts: OmitFirstArg<typeof Editor.hasTexts>\n  isBlock: OmitFirstArg<typeof Editor.isBlock>\n  isEdge: OmitFirstArg<typeof Editor.isEdge>\n  isEmpty: OmitFirstArg<typeof Editor.isEmpty>\n  isEnd: OmitFirstArg<typeof Editor.isEnd>\n  isInline: OmitFirstArg<typeof Editor.isInline>\n  isNormalizing: OmitFirstArg<typeof Editor.isNormalizing>\n  isStart: OmitFirstArg<typeof Editor.isStart>\n  isVoid: OmitFirstArg<typeof Editor.isVoid>\n  last: OmitFirstArg<typeof Editor.last>\n  leaf: OmitFirstArg<typeof Editor.leaf>\n  levels: <T extends Node>(\n    options?: EditorLevelsOptions<T>\n  ) => Generator<NodeEntry<T>, void, undefined>\n  next: <T extends Descendant>(\n    options?: EditorNextOptions<T>\n  ) => NodeEntry<T> | undefined\n  node: OmitFirstArg<typeof Editor.node>\n  nodes: <T extends Node>(\n    options?: EditorNodesOptions<T>\n  ) => Generator<NodeEntry<T>, void, undefined>\n  parent: OmitFirstArg<typeof Editor.parent>\n  path: OmitFirstArg<typeof Editor.path>\n  pathRef: OmitFirstArg<typeof Editor.pathRef>\n  pathRefs: OmitFirstArg<typeof Editor.pathRefs>\n  point: OmitFirstArg<typeof Editor.point>\n  pointRef: OmitFirstArg<typeof Editor.pointRef>\n  pointRefs: OmitFirstArg<typeof Editor.pointRefs>\n  positions: OmitFirstArg<typeof Editor.positions>\n  previous: <T extends Node>(\n    options?: EditorPreviousOptions<T>\n  ) => NodeEntry<T> | undefined\n  range: OmitFirstArg<typeof Editor.range>\n  rangeRef: OmitFirstArg<typeof Editor.rangeRef>\n  rangeRefs: OmitFirstArg<typeof Editor.rangeRefs>\n  start: OmitFirstArg<typeof Editor.start>\n  string: OmitFirstArg<typeof Editor.string>\n  unhangRange: OmitFirstArg<typeof Editor.unhangRange>\n  void: OmitFirstArg<typeof Editor.void>\n  shouldMergeNodesRemovePrevNode: OmitFirstArg<\n    typeof Editor.shouldMergeNodesRemovePrevNode\n  >\n}\n\nexport type Editor = ExtendedType<'Editor', BaseEditor>\n\nexport type BaseSelection = Range | null\n\nexport type Selection = ExtendedType<'Selection', BaseSelection>\n\nexport type EditorMarks = Omit<Text, 'text'>\n\nexport interface EditorAboveOptions<T extends Ancestor> {\n  at?: Location\n  match?: NodeMatch<T>\n  mode?: MaximizeMode\n  voids?: boolean\n}\n\nexport interface EditorAfterOptions {\n  distance?: number\n  unit?: TextUnitAdjustment\n  voids?: boolean\n}\n\nexport interface EditorBeforeOptions {\n  distance?: number\n  unit?: TextUnitAdjustment\n  voids?: boolean\n}\n\nexport interface EditorDirectedDeletionOptions {\n  unit?: TextUnit\n}\n\nexport interface EditorElementReadOnlyOptions {\n  at?: Location\n  mode?: MaximizeMode\n  voids?: boolean\n}\n\nexport interface EditorFragmentDeletionOptions {\n  direction?: TextDirection\n}\n\nexport interface EditorIsEditorOptions {\n  deep?: boolean\n}\n\nexport interface EditorLeafOptions {\n  depth?: number\n  edge?: LeafEdge\n}\n\nexport interface EditorLevelsOptions<T extends Node> {\n  at?: Location\n  match?: NodeMatch<T>\n  reverse?: boolean\n  voids?: boolean\n}\n\nexport interface EditorNextOptions<T extends Descendant> {\n  at?: Location\n  match?: NodeMatch<T>\n  mode?: SelectionMode\n  voids?: boolean\n}\n\nexport interface EditorNodeOptions {\n  depth?: number\n  edge?: LeafEdge\n}\n\nexport interface EditorNodesOptions<T extends Node> {\n  at?: Location | Span\n  match?: NodeMatch<T>\n  mode?: SelectionMode\n  universal?: boolean\n  reverse?: boolean\n  voids?: boolean\n  pass?: (entry: NodeEntry) => boolean\n}\n\nexport interface EditorNormalizeOptions {\n  force?: boolean\n  operation?: Operation\n}\n\nexport interface EditorParentOptions {\n  depth?: number\n  edge?: LeafEdge\n}\n\nexport interface EditorPathOptions {\n  depth?: number\n  edge?: LeafEdge\n}\n\nexport interface EditorPathRefOptions {\n  affinity?: TextDirection | null\n}\n\nexport interface EditorPointOptions {\n  edge?: LeafEdge\n}\n\nexport interface EditorPointRefOptions {\n  affinity?: TextDirection | null\n}\n\nexport interface EditorPositionsOptions {\n  at?: Location\n  unit?: TextUnitAdjustment\n  reverse?: boolean\n  voids?: boolean\n}\n\nexport interface EditorPreviousOptions<T extends Node> {\n  at?: Location\n  match?: NodeMatch<T>\n  mode?: SelectionMode\n  voids?: boolean\n}\n\nexport interface EditorRangeRefOptions {\n  affinity?: RangeDirection | null\n}\n\nexport interface EditorStringOptions {\n  voids?: boolean\n}\n\nexport interface EditorUnhangRangeOptions {\n  voids?: boolean\n}\n\nexport interface EditorVoidOptions {\n  at?: Location\n  mode?: MaximizeMode\n  voids?: boolean\n}\n\nexport interface EditorInterface {\n  /**\n   * Get the ancestor above a location in the document.\n   */\n  above: <T extends Ancestor>(\n    editor: Editor,\n    options?: EditorAboveOptions<T>\n  ) => NodeEntry<T> | undefined\n\n  /**\n   * Add a custom property to the leaf text nodes in the current selection.\n   *\n   * If the selection is currently collapsed, the marks will be added to the\n   * `editor.marks` property instead, and applied when text is inserted next.\n   */\n  addMark: (editor: Editor, key: string, value: any) => void\n\n  /**\n   * Get the point after a location.\n   */\n  after: (\n    editor: Editor,\n    at: Location,\n    options?: EditorAfterOptions\n  ) => Point | undefined\n\n  /**\n   * Get the point before a location.\n   */\n  before: (\n    editor: Editor,\n    at: Location,\n    options?: EditorBeforeOptions\n  ) => Point | undefined\n\n  /**\n   * Delete content in the editor backward from the current selection.\n   */\n  deleteBackward: (\n    editor: Editor,\n    options?: EditorDirectedDeletionOptions\n  ) => void\n\n  /**\n   * Delete content in the editor forward from the current selection.\n   */\n  deleteForward: (\n    editor: Editor,\n    options?: EditorDirectedDeletionOptions\n  ) => void\n\n  /**\n   * Delete the content in the current selection.\n   */\n  deleteFragment: (\n    editor: Editor,\n    options?: EditorFragmentDeletionOptions\n  ) => void\n\n  /**\n   * Get the start and end points of a location.\n   */\n  edges: (editor: Editor, at: Location) => [Point, Point]\n\n  /**\n   * Match a read-only element in the current branch of the editor.\n   */\n  elementReadOnly: (\n    editor: Editor,\n    options?: EditorElementReadOnlyOptions\n  ) => NodeEntry<Element> | undefined\n\n  /**\n   * Get the end point of a location.\n   */\n  end: (editor: Editor, at: Location) => Point\n\n  /**\n   * Get the first node at a location.\n   */\n  first: (editor: Editor, at: Location) => NodeEntry\n\n  /**\n   * Get the fragment at a location.\n   */\n  fragment: (editor: Editor, at: Location) => Descendant[]\n\n  /**\n   * Check if a node has block children.\n   */\n  hasBlocks: (editor: Editor, element: Element) => boolean\n\n  /**\n   * Check if a node has inline and text children.\n   */\n  hasInlines: (editor: Editor, element: Element) => boolean\n\n  hasPath: (editor: Editor, path: Path) => boolean\n\n  /**\n   * Check if a node has text children.\n   */\n  hasTexts: (editor: Editor, element: Element) => boolean\n\n  /**\n   * Insert a block break at the current selection.\n   *\n   * If the selection is currently expanded, it will be deleted first.\n   */\n  insertBreak: (editor: Editor) => void\n\n  /**\n   * Inserts a fragment\n   * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n   */\n  insertFragment: (\n    editor: Editor,\n    fragment: Node[],\n    options?: TextInsertFragmentOptions\n  ) => void\n\n  /**\n   * Atomically inserts `nodes`\n   * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n   */\n  insertNode: <T extends Node>(\n    editor: Editor,\n    node: Node,\n    options?: NodeInsertNodesOptions<T>\n  ) => void\n\n  /**\n   * Insert a soft break at the current selection.\n   *\n   * If the selection is currently expanded, it will be deleted first.\n   */\n  insertSoftBreak: (editor: Editor) => void\n\n  /**\n   * Insert a string of text\n   * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n   */\n  insertText: (\n    editor: Editor,\n    text: string,\n    options?: TextInsertTextOptions\n  ) => void\n\n  /**\n   * Check if a value is a block `Element` object.\n   */\n  isBlock: (editor: Editor, value: Element) => boolean\n\n  /**\n   * Check if a point is an edge of a location.\n   */\n  isEdge: (editor: Editor, point: Point, at: Location) => boolean\n\n  /**\n   * Check if a value is an `Editor` object.\n   */\n  isEditor: (value: any, options?: EditorIsEditorOptions) => value is Editor\n\n  /**\n   * Check if a value is a read-only `Element` object.\n   */\n  isElementReadOnly: (editor: Editor, element: Element) => boolean\n\n  /**\n   * Check if an element is empty, accounting for void nodes.\n   */\n  isEmpty: (editor: Editor, element: Element) => boolean\n\n  /**\n   * Check if a point is the end point of a location.\n   */\n  isEnd: (editor: Editor, point: Point, at: Location) => boolean\n\n  /**\n   * Check if a value is an inline `Element` object.\n   */\n  isInline: (editor: Editor, value: Element) => boolean\n\n  /**\n   * Check if the editor is currently normalizing after each operation.\n   */\n  isNormalizing: (editor: Editor) => boolean\n\n  /**\n   * Check if a value is a selectable `Element` object.\n   */\n  isSelectable: (editor: Editor, element: Element) => boolean\n\n  /**\n   * Check if a point is the start point of a location.\n   */\n  isStart: (editor: Editor, point: Point, at: Location) => boolean\n\n  /**\n   * Check if a value is a void `Element` object.\n   */\n  isVoid: (editor: Editor, value: Element) => boolean\n\n  /**\n   * Get the last node at a location.\n   */\n  last: (editor: Editor, at: Location) => NodeEntry\n\n  /**\n   * Get the leaf text node at a location.\n   */\n  leaf: (\n    editor: Editor,\n    at: Location,\n    options?: EditorLeafOptions\n  ) => NodeEntry<Text>\n\n  /**\n   * Iterate through all of the levels at a location.\n   */\n  levels: <T extends Node>(\n    editor: Editor,\n    options?: EditorLevelsOptions<T>\n  ) => Generator<NodeEntry<T>, void, undefined>\n\n  /**\n   * Get the marks that would be added to text at the current selection.\n   */\n  marks: (editor: Editor) => Omit<Text, 'text'> | null\n\n  /**\n   * Get the matching node in the branch of the document after a location.\n   */\n  next: <T extends Descendant>(\n    editor: Editor,\n    options?: EditorNextOptions<T>\n  ) => NodeEntry<T> | undefined\n\n  /**\n   * Get the node at a location.\n   */\n  node: (editor: Editor, at: Location, options?: EditorNodeOptions) => NodeEntry\n\n  /**\n   * Iterate through all of the nodes in the Editor.\n   */\n  nodes: <T extends Node>(\n    editor: Editor,\n    options?: EditorNodesOptions<T>\n  ) => Generator<NodeEntry<T>, void, undefined>\n\n  /**\n   * Normalize any dirty objects in the editor.\n   */\n  normalize: (editor: Editor, options?: EditorNormalizeOptions) => void\n\n  /**\n   * Get the parent node of a location.\n   */\n  parent: (\n    editor: Editor,\n    at: Location,\n    options?: EditorParentOptions\n  ) => NodeEntry<Ancestor>\n\n  /**\n   * Get the path of a location.\n   */\n  path: (editor: Editor, at: Location, options?: EditorPathOptions) => Path\n\n  /**\n   * Create a mutable ref for a `Path` object, which will stay in sync as new\n   * operations are applied to the editor.\n   */\n  pathRef: (\n    editor: Editor,\n    path: Path,\n    options?: EditorPathRefOptions\n  ) => PathRef\n\n  /**\n   * Get the set of currently tracked path refs of the editor.\n   */\n  pathRefs: (editor: Editor) => Set<PathRef>\n\n  /**\n   * Get the start or end point of a location.\n   */\n  point: (editor: Editor, at: Location, options?: EditorPointOptions) => Point\n\n  /**\n   * Create a mutable ref for a `Point` object, which will stay in sync as new\n   * operations are applied to the editor.\n   */\n  pointRef: (\n    editor: Editor,\n    point: Point,\n    options?: EditorPointRefOptions\n  ) => PointRef\n\n  /**\n   * Get the set of currently tracked point refs of the editor.\n   */\n  pointRefs: (editor: Editor) => Set<PointRef>\n\n  /**\n   * Return all the positions in `at` range where a `Point` can be placed.\n   *\n   * By default, moves forward by individual offsets at a time, but\n   * the `unit` option can be used to to move by character, word, line, or block.\n   *\n   * The `reverse` option can be used to change iteration direction.\n   *\n   * Note: By default void nodes are treated as a single point and iteration\n   * will not happen inside their content unless you pass in true for the\n   * `voids` option, then iteration will occur.\n   */\n  positions: (\n    editor: Editor,\n    options?: EditorPositionsOptions\n  ) => Generator<Point, void, undefined>\n\n  /**\n   * Get the matching node in the branch of the document before a location.\n   */\n  previous: <T extends Node>(\n    editor: Editor,\n    options?: EditorPreviousOptions<T>\n  ) => NodeEntry<T> | undefined\n\n  /**\n   * Get a range of a location.\n   */\n  range: (editor: Editor, at: Location, to?: Location) => Range\n\n  /**\n   * Create a mutable ref for a `Range` object, which will stay in sync as new\n   * operations are applied to the editor.\n   */\n  rangeRef: (\n    editor: Editor,\n    range: Range,\n    options?: EditorRangeRefOptions\n  ) => RangeRef\n\n  /**\n   * Get the set of currently tracked range refs of the editor.\n   */\n  rangeRefs: (editor: Editor) => Set<RangeRef>\n\n  /**\n   * Remove a custom property from all of the leaf text nodes in the current\n   * selection.\n   *\n   * If the selection is currently collapsed, the removal will be stored on\n   * `editor.marks` and applied to the text inserted next.\n   */\n  removeMark: (editor: Editor, key: string) => void\n\n  /**\n   * Manually set if the editor should currently be normalizing.\n   *\n   * Note: Using this incorrectly can leave the editor in an invalid state.\n   *\n   */\n  setNormalizing: (editor: Editor, isNormalizing: boolean) => void\n\n  /**\n   * Get the start point of a location.\n   */\n  start: (editor: Editor, at: Location) => Point\n\n  /**\n   * Get the text string content of a location.\n   *\n   * Note: by default the text of void nodes is considered to be an empty\n   * string, regardless of content, unless you pass in true for the voids option\n   */\n  string: (\n    editor: Editor,\n    at: Location,\n    options?: EditorStringOptions\n  ) => string\n\n  /**\n   * Convert a range into a non-hanging one.\n   */\n  unhangRange: (\n    editor: Editor,\n    range: Range,\n    options?: EditorUnhangRangeOptions\n  ) => Range\n\n  /**\n   * Match a void node in the current branch of the editor.\n   */\n  void: (\n    editor: Editor,\n    options?: EditorVoidOptions\n  ) => NodeEntry<Element> | undefined\n\n  /**\n   * Call a function, deferring normalization until after it completes.\n   */\n  withoutNormalizing: (editor: Editor, fn: () => void) => void\n\n  /**\n   *  Call a function, Determine whether or not remove the previous node when merge.\n   */\n  shouldMergeNodesRemovePrevNode: (\n    editor: Editor,\n    prevNodeEntry: NodeEntry,\n    curNodeEntry: NodeEntry\n  ) => boolean\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Editor: EditorInterface = {\n  above(editor, options) {\n    return editor.above(options)\n  },\n\n  addMark(editor, key, value) {\n    editor.addMark(key, value)\n  },\n\n  after(editor, at, options) {\n    return editor.after(at, options)\n  },\n\n  before(editor, at, options) {\n    return editor.before(at, options)\n  },\n\n  deleteBackward(editor, options = {}) {\n    const { unit = 'character' } = options\n    editor.deleteBackward(unit)\n  },\n\n  deleteForward(editor, options = {}) {\n    const { unit = 'character' } = options\n    editor.deleteForward(unit)\n  },\n\n  deleteFragment(editor, options) {\n    editor.deleteFragment(options)\n  },\n\n  edges(editor, at) {\n    return editor.edges(at)\n  },\n\n  elementReadOnly(editor: Editor, options: EditorElementReadOnlyOptions = {}) {\n    return editor.elementReadOnly(options)\n  },\n\n  end(editor, at) {\n    return editor.end(at)\n  },\n\n  first(editor, at) {\n    return editor.first(at)\n  },\n\n  fragment(editor, at) {\n    return editor.fragment(at)\n  },\n\n  hasBlocks(editor, element) {\n    return editor.hasBlocks(element)\n  },\n\n  hasInlines(editor, element) {\n    return editor.hasInlines(element)\n  },\n\n  hasPath(editor, path) {\n    return editor.hasPath(path)\n  },\n\n  hasTexts(editor, element) {\n    return editor.hasTexts(element)\n  },\n\n  insertBreak(editor) {\n    editor.insertBreak()\n  },\n\n  insertFragment(editor, fragment, options) {\n    editor.insertFragment(fragment, options)\n  },\n\n  insertNode(editor, node) {\n    editor.insertNode(node)\n  },\n\n  insertSoftBreak(editor) {\n    editor.insertSoftBreak()\n  },\n\n  insertText(editor, text) {\n    editor.insertText(text)\n  },\n\n  isBlock(editor, value) {\n    return editor.isBlock(value)\n  },\n\n  isEdge(editor, point, at) {\n    return editor.isEdge(point, at)\n  },\n\n  isEditor,\n\n  isElementReadOnly(editor, element) {\n    return editor.isElementReadOnly(element)\n  },\n\n  isEmpty(editor, element) {\n    return editor.isEmpty(element)\n  },\n\n  isEnd(editor, point, at) {\n    return editor.isEnd(point, at)\n  },\n\n  isInline(editor, value) {\n    return editor.isInline(value)\n  },\n\n  isNormalizing(editor) {\n    return editor.isNormalizing()\n  },\n\n  isSelectable(editor: Editor, value: Element) {\n    return editor.isSelectable(value)\n  },\n\n  isStart(editor, point, at) {\n    return editor.isStart(point, at)\n  },\n\n  isVoid(editor, value) {\n    return editor.isVoid(value)\n  },\n\n  last(editor, at) {\n    return editor.last(at)\n  },\n\n  leaf(editor, at, options) {\n    return editor.leaf(at, options)\n  },\n\n  levels(editor, options) {\n    return editor.levels(options)\n  },\n\n  marks(editor) {\n    return editor.getMarks()\n  },\n\n  next<T extends Descendant>(\n    editor: Editor,\n    options?: EditorNextOptions<T>\n  ): NodeEntry<T> | undefined {\n    return editor.next(options)\n  },\n\n  node(editor, at, options) {\n    return editor.node(at, options)\n  },\n\n  nodes(editor, options) {\n    return editor.nodes(options)\n  },\n\n  normalize(editor, options) {\n    editor.normalize(options)\n  },\n\n  parent(editor, at, options) {\n    return editor.parent(at, options)\n  },\n\n  path(editor, at, options) {\n    return editor.path(at, options)\n  },\n\n  pathRef(editor, path, options) {\n    return editor.pathRef(path, options)\n  },\n\n  pathRefs(editor) {\n    return editor.pathRefs()\n  },\n\n  point(editor, at, options) {\n    return editor.point(at, options)\n  },\n\n  pointRef(editor, point, options) {\n    return editor.pointRef(point, options)\n  },\n\n  pointRefs(editor) {\n    return editor.pointRefs()\n  },\n\n  positions(editor, options) {\n    return editor.positions(options)\n  },\n\n  previous(editor, options) {\n    return editor.previous(options)\n  },\n\n  range(editor, at, to) {\n    return editor.range(at, to)\n  },\n\n  rangeRef(editor, range, options) {\n    return editor.rangeRef(range, options)\n  },\n\n  rangeRefs(editor) {\n    return editor.rangeRefs()\n  },\n\n  removeMark(editor, key) {\n    editor.removeMark(key)\n  },\n\n  setNormalizing(editor, isNormalizing) {\n    editor.setNormalizing(isNormalizing)\n  },\n\n  start(editor, at) {\n    return editor.start(at)\n  },\n\n  string(editor, at, options) {\n    return editor.string(at, options)\n  },\n\n  unhangRange(editor, range, options) {\n    return editor.unhangRange(range, options)\n  },\n\n  void(editor, options) {\n    return editor.void(options)\n  },\n\n  withoutNormalizing(editor, fn: () => void) {\n    editor.withoutNormalizing(fn)\n  },\n  shouldMergeNodesRemovePrevNode: (editor, prevNode, curNode) => {\n    return editor.shouldMergeNodesRemovePrevNode(prevNode, curNode)\n  },\n}\n\n/**\n * A helper type for narrowing matched nodes with a predicate.\n */\n\nexport type NodeMatch<T extends Node> =\n  | ((node: Node, path: Path) => node is T)\n  | ((node: Node, path: Path) => boolean)\n\nexport type PropsCompare = (prop: Partial<Node>, node: Partial<Node>) => boolean\nexport type PropsMerge = (prop: Partial<Node>, node: Partial<Node>) => object\n"
  },
  {
    "path": "packages/slate/src/interfaces/element.ts",
    "content": "import {\n  Ancestor,\n  Descendant,\n  Editor,\n  ExtendedType,\n  Node,\n  Path,\n  isObject,\n} from '..'\n\n/**\n * `Element` objects are a type of node in a Slate document that contain other\n * element nodes or text nodes. They can be either \"blocks\" or \"inlines\"\n * depending on the Slate editor's configuration.\n */\n\nexport interface BaseElement {\n  children: Descendant[]\n}\n\nexport type Element = ExtendedType<'Element', BaseElement>\n\nexport interface ElementIsElementOptions {\n  deep?: boolean\n}\n\nexport interface ElementInterface {\n  /**\n   * Check if a value implements the 'Ancestor' interface.\n   */\n  isAncestor: (\n    value: any,\n    options?: ElementIsElementOptions\n  ) => value is Ancestor\n\n  /**\n   * Check if a value implements the `Element` interface.\n   */\n  isElement: (value: any, options?: ElementIsElementOptions) => value is Element\n\n  /**\n   * Check if a value is an array of `Element` objects.\n   */\n  isElementList: (\n    value: any,\n    options?: ElementIsElementOptions\n  ) => value is Element[]\n\n  /**\n   * Check if a set of props is a partial of Element.\n   */\n  isElementProps: (props: any) => props is Partial<Element>\n\n  /**\n   * Check if a value implements the `Element` interface and has elementKey with selected value.\n   * Default it check to `type` key value\n   */\n  isElementType: <T extends Element>(\n    value: any,\n    elementVal: string,\n    elementKey?: string\n  ) => value is T\n\n  /**\n   * Check if an element matches set of properties.\n   *\n   * Note: this checks custom properties, and it does not ensure that any\n   * children are equivalent.\n   */\n  matches: (element: Element, props: Partial<Element>) => boolean\n}\n\n/**\n * Shared the function with isElementType utility\n */\nconst isElement = (\n  value: any,\n  { deep = false }: ElementIsElementOptions = {}\n): value is Element => {\n  if (!isObject(value)) return false\n\n  // PERF: No need to use the full Editor.isEditor here\n  const isEditor = typeof value.apply === 'function'\n  if (isEditor) return false\n\n  const isChildrenValid = deep\n    ? Node.isNodeList(value.children)\n    : Array.isArray(value.children)\n\n  return isChildrenValid\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Element: ElementInterface = {\n  isAncestor(\n    value: any,\n    { deep = false }: ElementIsElementOptions = {}\n  ): value is Ancestor {\n    return isObject(value) && Node.isNodeList(value.children, { deep })\n  },\n\n  isElement,\n\n  isElementList(\n    value: any,\n    { deep = false }: ElementIsElementOptions = {}\n  ): value is Element[] {\n    return (\n      Array.isArray(value) &&\n      value.every(val => Element.isElement(val, { deep }))\n    )\n  },\n\n  isElementProps(props: any): props is Partial<Element> {\n    return (props as Partial<Element>).children !== undefined\n  },\n\n  isElementType: <T extends Element>(\n    value: any,\n    elementVal: string,\n    elementKey: string = 'type'\n  ): value is T => {\n    return (\n      isElement(value) && value[<keyof Descendant>elementKey] === elementVal\n    )\n  },\n\n  matches(element: Element, props: Partial<Element>): boolean {\n    for (const key in props) {\n      if (key === 'children') {\n        continue\n      }\n\n      if (element[<keyof Descendant>key] !== props[<keyof Descendant>key]) {\n        return false\n      }\n    }\n\n    return true\n  },\n}\n\n/**\n * `ElementEntry` objects refer to an `Element` and the `Path` where it can be\n * found inside a root node.\n */\nexport type ElementEntry = [Element, Path]\n"
  },
  {
    "path": "packages/slate/src/interfaces/index.ts",
    "content": "export * from './editor'\nexport * from './element'\nexport * from './location'\nexport * from './node'\nexport * from './operation'\nexport * from './path-ref'\nexport * from './path'\nexport * from './point-ref'\nexport * from './point'\nexport * from './range-ref'\nexport * from './range'\nexport * from './scrubber'\nexport * from './text'\nexport * from './transforms/index'\n"
  },
  {
    "path": "packages/slate/src/interfaces/location.ts",
    "content": "import { Path, Point, Range } from '..'\n\n/**\n * The `Location` interface is a union of the ways to refer to a specific\n * location in a Slate document: paths, points or ranges.\n *\n * Methods will often accept a `Location` instead of requiring only a `Path`,\n * `Point` or `Range`. This eliminates the need for developers to manage\n * converting between the different interfaces in their own code base.\n */\n\nexport type Location = Path | Point | Range\n\nexport interface LocationInterface {\n  /**\n   * Check if a value implements the `Location` interface.\n   */\n  isLocation: (value: any) => value is Location\n\n  /**\n   * Check if a location is a `Path`.\n   */\n  isPath: (at: Location) => at is Path\n\n  /**\n   * Check if a location is a `Point`.\n   */\n  isPoint: (at: Location) => at is Point\n\n  /**\n   * Check if a location is a `Range`.\n   */\n  isRange: (at: Location) => at is Range\n\n  /**\n   * Differentiate between a normal `Location` and a `Span`.\n   */\n  isSpan: (at: Location | Span) => at is Span\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Location: LocationInterface = {\n  isLocation(value: any): value is Location {\n    return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value)\n  },\n\n  isPath(at: Location): at is Path {\n    return Array.isArray(at)\n  },\n\n  isPoint(at: Location): at is Point {\n    return 'offset' in at\n  },\n\n  isRange(at: Location): at is Range {\n    return 'anchor' in at\n  },\n\n  isSpan(at: Location | Span): at is Span {\n    return Array.isArray(at) && Array.isArray(at[0])\n  },\n}\n\n/**\n * The `Span` interface is a low-level way to refer to locations in nodes\n * without using `Point` which requires leaf text nodes to be present.\n */\n\nexport type Span = [Path, Path]\n\nexport interface SpanInterface {\n  /**\n   * Check if a value implements the `Span` interface.\n   */\n  isSpan: (value: any) => value is Span\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Span: SpanInterface = {\n  isSpan(value: any): value is Span {\n    return (\n      Array.isArray(value) && value.length === 2 && value.every(Path.isPath)\n    )\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/node.ts",
    "content": "import { Editor, Path, Range, Scrubber, Text } from '..'\nimport { Element, ElementEntry } from './element'\nimport { modifyChildren, modifyLeaf, removeChildren } from '../utils/modify'\n\n/**\n * The `Node` union type represents all of the different types of nodes that\n * occur in a Slate document tree.\n */\n\nexport type BaseNode = Editor | Element | Text\nexport type Node = Editor | Element | Text\n\nexport interface NodeAncestorsOptions {\n  reverse?: boolean\n}\n\nexport interface NodeChildrenOptions {\n  reverse?: boolean\n}\n\nexport interface NodeDescendantsOptions {\n  from?: Path\n  to?: Path\n  reverse?: boolean\n  pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeElementsOptions {\n  from?: Path\n  to?: Path\n  reverse?: boolean\n  pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeIsNodeOptions {\n  deep?: boolean\n}\n\nexport interface NodeLevelsOptions {\n  reverse?: boolean\n}\n\nexport interface NodeNodesOptions {\n  from?: Path\n  to?: Path\n  reverse?: boolean\n  pass?: (entry: NodeEntry) => boolean\n}\n\nexport interface NodeTextsOptions {\n  from?: Path\n  to?: Path\n  reverse?: boolean\n  pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeInterface {\n  /**\n   * Get the node at a specific path, asserting that it's an ancestor node.\n   */\n  ancestor: (root: Node, path: Path) => Ancestor\n\n  /**\n   * Return a generator of all the ancestor nodes above a specific path.\n   *\n   * By default the order is top-down, from highest to lowest ancestor in\n   * the tree, but you can pass the `reverse: true` option to go bottom-up.\n   */\n  ancestors: (\n    root: Node,\n    path: Path,\n    options?: NodeAncestorsOptions\n  ) => Generator<NodeEntry<Ancestor>, void, undefined>\n\n  /**\n   * Get the child of a node at a specific index.\n   */\n  child: (root: Node, index: number) => Descendant\n\n  /**\n   * Iterate over the children of a node at a specific path.\n   */\n  children: (\n    root: Node,\n    path: Path,\n    options?: NodeChildrenOptions\n  ) => Generator<NodeEntry<Descendant>, void, undefined>\n\n  /**\n   * Get an entry for the common ancesetor node of two paths.\n   */\n  common: (root: Node, path: Path, another: Path) => NodeEntry\n\n  /**\n   * Get the node at a specific path, asserting that it's a descendant node.\n   */\n  descendant: (root: Node, path: Path) => Descendant\n\n  /**\n   * Return a generator of all the descendant node entries inside a root node.\n   */\n  descendants: (\n    root: Node,\n    options?: NodeDescendantsOptions\n  ) => Generator<NodeEntry<Descendant>, void, undefined>\n\n  /**\n   * Return a generator of all the element nodes inside a root node. Each iteration\n   * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\n   * root node is an element it will be included in the iteration as well.\n   */\n  elements: (\n    root: Node,\n    options?: NodeElementsOptions\n  ) => Generator<ElementEntry, void, undefined>\n\n  /**\n   * Extract props from a Node.\n   */\n  extractProps: (node: Node) => NodeProps\n\n  /**\n   * Get the first leaf node entry in a root node from a path.\n   */\n  first: (root: Node, path: Path) => NodeEntry\n\n  /**\n   * Get the sliced fragment represented by a range inside a root node.\n   */\n  fragment: <T extends Ancestor = Editor>(\n    root: T,\n    range: Range\n  ) => T['children']\n\n  /**\n   * Get the descendant node referred to by a specific path. If the path is an\n   * empty array, it refers to the root node itself.\n   */\n  get: (root: Node, path: Path) => Node\n\n  /**\n   * Similar to get, but returns undefined if the node does not exist.\n   */\n  getIf: (root: Node, path: Path) => Node | undefined\n\n  /**\n   * Check if a descendant node exists at a specific path.\n   */\n  has: (root: Node, path: Path) => boolean\n\n  /**\n   * Check if a node is an `Editor` or `Element` object.\n   */\n  isAncestor: (node: Node) => node is Ancestor\n\n  /**\n   * Check if a node is an `Editor` object.\n   */\n  isEditor: (node: Node) => node is Editor\n\n  /**\n   * Check if a node is an `Element` object.\n   */\n  isElement: (node: Node) => node is Element\n\n  /**\n   * Check if a value implements the `Node` interface.\n   */\n  isNode: (value: any, options?: NodeIsNodeOptions) => value is Node\n\n  /**\n   * Check if a value is a list of `Node` objects.\n   */\n  isNodeList: (value: any, options?: NodeIsNodeOptions) => value is Node[]\n\n  /**\n   * Check if a node is an `Text` object.\n   */\n  isText: (node: Node) => node is Text\n\n  /**\n   * Get the last leaf node entry in a root node from a path.\n   */\n  last: (root: Node, path: Path) => NodeEntry\n\n  /**\n   * Get the node at a specific path, ensuring it's a leaf text node.\n   */\n  leaf: (root: Node, path: Path) => Text\n\n  /**\n   * Return a generator of the in a branch of the tree, from a specific path.\n   *\n   * By default the order is top-down, from highest to lowest node in the tree,\n   * but you can pass the `reverse: true` option to go bottom-up.\n   */\n  levels: (\n    root: Node,\n    path: Path,\n    options?: NodeLevelsOptions\n  ) => Generator<NodeEntry, void, undefined>\n\n  /**\n   * Check if a node matches a set of props.\n   */\n  matches: (node: Node, props: Partial<Node>) => boolean\n\n  /**\n   * Return a generator of all the node entries of a root node. Each entry is\n   * returned as a `[Node, Path]` tuple, with the path referring to the node's\n   * position inside the root node.\n   */\n  nodes: (\n    root: Node,\n    options?: NodeNodesOptions\n  ) => Generator<NodeEntry, void, undefined>\n\n  /**\n   * Get the parent of a node at a specific path.\n   */\n  parent: (root: Node, path: Path) => Ancestor\n\n  /**\n   * Get the concatenated text string of a node's content.\n   *\n   * Note that this will not include spaces or line breaks between block nodes.\n   * It is not a user-facing string, but a string for performing offset-related\n   * computations for a node.\n   */\n  string: (node: Node) => string\n\n  /**\n   * Return a generator of all leaf text nodes in a root node.\n   */\n  texts: (\n    root: Node,\n    options?: NodeTextsOptions\n  ) => Generator<NodeEntry<Text>, void, undefined>\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Node: NodeInterface = {\n  ancestor(root: Node, path: Path): Ancestor {\n    const node = Node.get(root, path)\n\n    if (Node.isText(node)) {\n      throw new Error(\n        `Cannot get the ancestor node at path [${path}] because it refers to a text node instead: ${Scrubber.stringify(\n          node\n        )}`\n      )\n    }\n\n    return node\n  },\n\n  *ancestors(\n    root: Node,\n    path: Path,\n    options: NodeAncestorsOptions = {}\n  ): Generator<NodeEntry<Ancestor>, void, undefined> {\n    for (const p of Path.ancestors(path, options)) {\n      const n = Node.ancestor(root, p)\n      const entry: NodeEntry<Ancestor> = [n, p]\n      yield entry\n    }\n  },\n\n  child(root: Node, index: number): Descendant {\n    if (Node.isText(root)) {\n      throw new Error(\n        `Cannot get the child of a text node: ${Scrubber.stringify(root)}`\n      )\n    }\n\n    const c = root.children[index] as Descendant\n\n    if (c == null) {\n      throw new Error(\n        `Cannot get child at index \\`${index}\\` in node: ${Scrubber.stringify(\n          root\n        )}`\n      )\n    }\n\n    return c\n  },\n\n  *children(\n    root: Node,\n    path: Path,\n    options: NodeChildrenOptions = {}\n  ): Generator<NodeEntry<Descendant>, void, undefined> {\n    const { reverse = false } = options\n    const ancestor = Node.ancestor(root, path)\n    const { children } = ancestor\n    let index = reverse ? children.length - 1 : 0\n\n    while (reverse ? index >= 0 : index < children.length) {\n      const child = Node.child(ancestor, index)\n      const childPath = path.concat(index)\n      yield [child, childPath]\n      index = reverse ? index - 1 : index + 1\n    }\n  },\n\n  common(root: Node, path: Path, another: Path): NodeEntry {\n    const p = Path.common(path, another)\n    const n = Node.get(root, p)\n    return [n, p]\n  },\n\n  descendant(root: Node, path: Path): Descendant {\n    const node = Node.get(root, path)\n\n    if (Node.isEditor(node)) {\n      throw new Error(\n        `Cannot get the descendant node at path [${path}] because it refers to the root editor node instead: ${Scrubber.stringify(\n          node\n        )}`\n      )\n    }\n\n    return node\n  },\n\n  *descendants(\n    root: Node,\n    options: NodeDescendantsOptions = {}\n  ): Generator<NodeEntry<Descendant>, void, undefined> {\n    for (const [node, path] of Node.nodes(root, options)) {\n      if (path.length !== 0) {\n        // NOTE: we have to coerce here because checking the path's length does\n        // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n        yield [node, path] as NodeEntry<Descendant>\n      }\n    }\n  },\n\n  *elements(\n    root: Node,\n    options: NodeElementsOptions = {}\n  ): Generator<ElementEntry, void, undefined> {\n    for (const [node, path] of Node.nodes(root, options)) {\n      if (Node.isElement(node)) {\n        yield [node, path]\n      }\n    }\n  },\n\n  extractProps(node: Node): NodeProps {\n    if (Node.isText(node)) {\n      const { text, ...properties } = node\n\n      return properties\n    } else {\n      const { children, ...properties } = node\n\n      return properties\n    }\n  },\n\n  first(root: Node, path: Path): NodeEntry {\n    const p = path.slice()\n    let n = Node.get(root, p)\n\n    while (n) {\n      if (Node.isText(n) || n.children.length === 0) {\n        break\n      } else {\n        n = n.children[0]\n        p.push(0)\n      }\n    }\n\n    return [n, p]\n  },\n\n  fragment<T extends Ancestor = Editor>(root: T, range: Range): T['children'] {\n    const newRoot = { children: root.children }\n\n    const [start, end] = Range.edges(range)\n    const nodeEntries = Node.nodes(newRoot, {\n      reverse: true,\n      pass: ([, path]) => !Range.includes(range, path),\n    })\n\n    for (const [, path] of nodeEntries) {\n      if (!Range.includes(range, path)) {\n        const index = path[path.length - 1]\n\n        modifyChildren(newRoot, Path.parent(path), children =>\n          removeChildren(children, index, 1)\n        )\n      }\n\n      if (Path.equals(path, end.path)) {\n        modifyLeaf(newRoot, path, node => {\n          const before = node.text.slice(0, end.offset)\n          return { ...node, text: before }\n        })\n      }\n\n      if (Path.equals(path, start.path)) {\n        modifyLeaf(newRoot, path, node => {\n          const before = node.text.slice(start.offset)\n          return { ...node, text: before }\n        })\n      }\n    }\n\n    return newRoot.children\n  },\n\n  get(root: Node, path: Path): Node {\n    const node = Node.getIf(root, path)\n    if (node === undefined) {\n      throw new Error(\n        `Cannot find a descendant at path [${path}] in node: ${Scrubber.stringify(\n          root\n        )}`\n      )\n    }\n    return node\n  },\n\n  getIf(root: Node, path: Path): Node | undefined {\n    let node = root\n\n    for (let i = 0; i < path.length; i++) {\n      const p = path[i]\n\n      if (typeof p !== 'number') {\n        throw new Error('Got non-numeric path index')\n      }\n\n      if (Node.isText(node) || !node.children[p]) {\n        return\n      }\n\n      node = node.children[p]\n    }\n\n    return node\n  },\n\n  has(root: Node, path: Path): boolean {\n    let node = root\n\n    for (let i = 0; i < path.length; i++) {\n      const p = path[i]\n\n      if (Node.isText(node) || !node.children[p]) {\n        return false\n      }\n\n      node = node.children[p]\n    }\n\n    return true\n  },\n\n  isAncestor(node: Node): node is Ancestor {\n    return !Node.isText(node)\n  },\n\n  isEditor(node: Node): node is Editor {\n    return typeof (node as Editor).apply === 'function'\n  },\n\n  isElement(node: Node): node is Element {\n    return (\n      Array.isArray((node as Element).children) &&\n      typeof (node as Editor).apply !== 'function'\n    )\n  },\n\n  isNode(value: any, { deep = false }: NodeIsNodeOptions = {}): value is Node {\n    return (\n      Text.isText(value) ||\n      Element.isElement(value, { deep }) ||\n      Editor.isEditor(value, { deep })\n    )\n  },\n\n  isNodeList(\n    value: any,\n    { deep = false }: NodeIsNodeOptions = {}\n  ): value is Node[] {\n    return (\n      Array.isArray(value) && value.every(val => Node.isNode(val, { deep }))\n    )\n  },\n\n  isText(node: Node): node is Text {\n    return typeof (node as Text).text === 'string'\n  },\n\n  last(root: Node, path: Path): NodeEntry {\n    const p = path.slice()\n    let n = Node.get(root, p)\n\n    while (n) {\n      if (Node.isText(n) || n.children.length === 0) {\n        break\n      } else {\n        const i = n.children.length - 1\n        n = n.children[i]\n        p.push(i)\n      }\n    }\n\n    return [n, p]\n  },\n\n  leaf(root: Node, path: Path): Text {\n    const node = Node.get(root, path)\n\n    if (!Node.isText(node)) {\n      throw new Error(\n        `Cannot get the leaf node at path [${path}] because it refers to a non-leaf node: ${Scrubber.stringify(\n          node\n        )}`\n      )\n    }\n\n    return node\n  },\n\n  *levels(\n    root: Node,\n    path: Path,\n    options: NodeLevelsOptions = {}\n  ): Generator<NodeEntry, void, undefined> {\n    for (const p of Path.levels(path, options)) {\n      const n = Node.get(root, p)\n      yield [n, p]\n    }\n  },\n\n  matches(node: Node, props: Partial<Node>): boolean {\n    return (\n      (Node.isElement(node) &&\n        Element.isElementProps(props) &&\n        Element.matches(node, props)) ||\n      (Node.isText(node) &&\n        Text.isTextProps(props) &&\n        Text.matches(node, props))\n    )\n  },\n\n  *nodes(\n    root: Node,\n    options: NodeNodesOptions = {}\n  ): Generator<NodeEntry, void, undefined> {\n    const { pass, reverse = false } = options\n    const { from = [], to } = options\n    const visited = new Set()\n    let p: Path = []\n    let n = root\n\n    while (true) {\n      if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n        break\n      }\n\n      if (!visited.has(n)) {\n        yield [n, p]\n      }\n\n      // If we're allowed to go downward and we haven't descended yet, do.\n      if (\n        !visited.has(n) &&\n        !Node.isText(n) &&\n        n.children.length !== 0 &&\n        (pass == null || pass([n, p]) === false)\n      ) {\n        visited.add(n)\n        let nextIndex = reverse ? n.children.length - 1 : 0\n\n        if (Path.isAncestor(p, from)) {\n          nextIndex = from[p.length]\n        }\n\n        p = p.concat(nextIndex)\n        n = Node.get(root, p)\n        continue\n      }\n\n      // If we're at the root and we can't go down, we're done.\n      if (p.length === 0) {\n        break\n      }\n\n      // If we're going forward...\n      if (!reverse) {\n        const newPath = Path.next(p)\n\n        if (Node.has(root, newPath)) {\n          p = newPath\n          n = Node.get(root, p)\n          continue\n        }\n      }\n\n      // If we're going backward...\n      if (reverse && p[p.length - 1] !== 0) {\n        const newPath = Path.previous(p)\n        p = newPath\n        n = Node.get(root, p)\n        continue\n      }\n\n      // Otherwise we're going upward...\n      p = Path.parent(p)\n      n = Node.get(root, p)\n      visited.add(n)\n    }\n  },\n\n  parent(root: Node, path: Path): Ancestor {\n    const parentPath = Path.parent(path)\n    const node = Node.get(root, parentPath)\n\n    if (Node.isText(node)) {\n      // this can happen if `path` points somewhere that doesnt exist and it's where a child of a text node would be\n      throw new Error(\n        `Cannot get the parent of path [${path}] because it does not exist in the root.`\n      )\n    }\n\n    return node\n  },\n\n  string(node: Node): string {\n    if (Node.isText(node)) {\n      return node.text\n    } else {\n      return node.children.map(Node.string).join('')\n    }\n  },\n\n  *texts(\n    root: Node,\n    options: NodeTextsOptions = {}\n  ): Generator<NodeEntry<Text>, void, undefined> {\n    for (const [node, path] of Node.nodes(root, options)) {\n      if (Node.isText(node)) {\n        yield [node, path]\n      }\n    }\n  },\n}\n\n/**\n * The `Descendant` union type represents nodes that are descendants in the\n * tree. It is returned as a convenience in certain cases to narrow a value\n * further than the more generic `Node` union.\n */\n\nexport type Descendant = Element | Text\n\n/**\n * The `Ancestor` union type represents nodes that are ancestors in the tree.\n * It is returned as a convenience in certain cases to narrow a value further\n * than the more generic `Node` union.\n */\n\nexport type Ancestor = Editor | Element\n\n/**\n * `NodeEntry` objects are returned when iterating over the nodes in a Slate\n * document tree. They consist of the node and its `Path` relative to the root\n * node in the document.\n */\n\nexport type NodeEntry<T extends Node = Node> = [T, Path]\n\n/**\n * Convenience type for returning the props of a node.\n */\nexport type NodeProps =\n  | Omit<Editor, 'children'>\n  | Omit<Element, 'children'>\n  | Omit<Text, 'text'>\n"
  },
  {
    "path": "packages/slate/src/interfaces/operation.ts",
    "content": "import { ExtendedType, Node, Path, Range, isObject } from '..'\n\nexport type BaseInsertNodeOperation = {\n  type: 'insert_node'\n  path: Path\n  node: Node\n}\n\nexport type InsertNodeOperation = ExtendedType<\n  'InsertNodeOperation',\n  BaseInsertNodeOperation\n>\n\nexport type BaseInsertTextOperation = {\n  type: 'insert_text'\n  path: Path\n  offset: number\n  text: string\n}\n\nexport type InsertTextOperation = ExtendedType<\n  'InsertTextOperation',\n  BaseInsertTextOperation\n>\n\nexport type BaseMergeNodeOperation = {\n  type: 'merge_node'\n  path: Path\n  position: number\n  properties: Partial<Node>\n}\n\nexport type MergeNodeOperation = ExtendedType<\n  'MergeNodeOperation',\n  BaseMergeNodeOperation\n>\n\nexport type BaseMoveNodeOperation = {\n  type: 'move_node'\n  path: Path\n  newPath: Path\n}\n\nexport type MoveNodeOperation = ExtendedType<\n  'MoveNodeOperation',\n  BaseMoveNodeOperation\n>\n\nexport type BaseRemoveNodeOperation = {\n  type: 'remove_node'\n  path: Path\n  node: Node\n}\n\nexport type RemoveNodeOperation = ExtendedType<\n  'RemoveNodeOperation',\n  BaseRemoveNodeOperation\n>\n\nexport type BaseRemoveTextOperation = {\n  type: 'remove_text'\n  path: Path\n  offset: number\n  text: string\n}\n\nexport type RemoveTextOperation = ExtendedType<\n  'RemoveTextOperation',\n  BaseRemoveTextOperation\n>\n\nexport type BaseSetNodeOperation = {\n  type: 'set_node'\n  path: Path\n  properties: Partial<Node>\n  newProperties: Partial<Node>\n}\n\nexport type SetNodeOperation = ExtendedType<\n  'SetNodeOperation',\n  BaseSetNodeOperation\n>\n\nexport type BaseSetSelectionOperation =\n  | {\n      type: 'set_selection'\n      properties: null\n      newProperties: Range\n    }\n  | {\n      type: 'set_selection'\n      properties: Partial<Range>\n      newProperties: Partial<Range>\n    }\n  | {\n      type: 'set_selection'\n      properties: Range\n      newProperties: null\n    }\n\nexport type SetSelectionOperation = ExtendedType<\n  'SetSelectionOperation',\n  BaseSetSelectionOperation\n>\n\nexport type BaseSplitNodeOperation = {\n  type: 'split_node'\n  path: Path\n  position: number\n  properties: Partial<Node>\n}\n\nexport type SplitNodeOperation = ExtendedType<\n  'SplitNodeOperation',\n  BaseSplitNodeOperation\n>\n\nexport type NodeOperation =\n  | InsertNodeOperation\n  | MergeNodeOperation\n  | MoveNodeOperation\n  | RemoveNodeOperation\n  | SetNodeOperation\n  | SplitNodeOperation\n\nexport type SelectionOperation = SetSelectionOperation\n\nexport type TextOperation = InsertTextOperation | RemoveTextOperation\n\n/**\n * `Operation` objects define the low-level instructions that Slate editors use\n * to apply changes to their internal state. Representing all changes as\n * operations is what allows Slate editors to easily implement history,\n * collaboration, and other features.\n */\n\nexport type BaseOperation = NodeOperation | SelectionOperation | TextOperation\nexport type Operation = ExtendedType<'Operation', BaseOperation>\n\nexport interface OperationInterface {\n  /**\n   * Check if a value is a `NodeOperation` object.\n   */\n  isNodeOperation: (value: any) => value is NodeOperation\n\n  /**\n   * Check if a value is an `Operation` object.\n   */\n  isOperation: (value: any) => value is Operation\n\n  /**\n   * Check if a value is a list of `Operation` objects.\n   */\n  isOperationList: (value: any) => value is Operation[]\n\n  /**\n   * Check if a value is a `SelectionOperation` object.\n   */\n  isSelectionOperation: (value: any) => value is SelectionOperation\n\n  /**\n   * Check if a value is a `TextOperation` object.\n   */\n  isTextOperation: (value: any) => value is TextOperation\n\n  /**\n   * Invert an operation, returning a new operation that will exactly undo the\n   * original when applied.\n   */\n  inverse: (op: Operation) => Operation\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Operation: OperationInterface = {\n  isNodeOperation(value: any): value is NodeOperation {\n    return Operation.isOperation(value) && value.type.endsWith('_node')\n  },\n\n  isOperation(value: any): value is Operation {\n    if (!isObject(value)) {\n      return false\n    }\n\n    switch (value.type) {\n      case 'insert_node':\n        return Path.isPath(value.path) && Node.isNode(value.node)\n      case 'insert_text':\n        return (\n          typeof value.offset === 'number' &&\n          typeof value.text === 'string' &&\n          Path.isPath(value.path)\n        )\n      case 'merge_node':\n        return (\n          typeof value.position === 'number' &&\n          Path.isPath(value.path) &&\n          isObject(value.properties)\n        )\n      case 'move_node':\n        return Path.isPath(value.path) && Path.isPath(value.newPath)\n      case 'remove_node':\n        return Path.isPath(value.path) && Node.isNode(value.node)\n      case 'remove_text':\n        return (\n          typeof value.offset === 'number' &&\n          typeof value.text === 'string' &&\n          Path.isPath(value.path)\n        )\n      case 'set_node':\n        return (\n          Path.isPath(value.path) &&\n          isObject(value.properties) &&\n          isObject(value.newProperties)\n        )\n      case 'set_selection':\n        return (\n          (value.properties === null && Range.isRange(value.newProperties)) ||\n          (value.newProperties === null && Range.isRange(value.properties)) ||\n          (isObject(value.properties) && isObject(value.newProperties))\n        )\n      case 'split_node':\n        return (\n          Path.isPath(value.path) &&\n          typeof value.position === 'number' &&\n          isObject(value.properties)\n        )\n      default:\n        return false\n    }\n  },\n\n  isOperationList(value: any): value is Operation[] {\n    return (\n      Array.isArray(value) && value.every(val => Operation.isOperation(val))\n    )\n  },\n\n  isSelectionOperation(value: any): value is SelectionOperation {\n    return Operation.isOperation(value) && value.type.endsWith('_selection')\n  },\n\n  isTextOperation(value: any): value is TextOperation {\n    return Operation.isOperation(value) && value.type.endsWith('_text')\n  },\n\n  inverse(op: Operation): Operation {\n    switch (op.type) {\n      case 'insert_node': {\n        return { ...op, type: 'remove_node' }\n      }\n\n      case 'insert_text': {\n        return { ...op, type: 'remove_text' }\n      }\n\n      case 'merge_node': {\n        return { ...op, type: 'split_node', path: Path.previous(op.path) }\n      }\n\n      case 'move_node': {\n        const { newPath, path } = op\n\n        // PERF: in this case the move operation is a no-op anyways.\n        if (Path.equals(newPath, path)) {\n          return op\n        }\n\n        // If the move happens completely within a single parent the path and\n        // newPath are stable with respect to each other.\n        if (Path.isSibling(path, newPath)) {\n          return { ...op, path: newPath, newPath: path }\n        }\n\n        // If the move does not happen within a single parent it is possible\n        // for the move to impact the true path to the location where the node\n        // was removed from and where it was inserted. We have to adjust for this\n        // and find the original path. We can accomplish this (only in non-sibling)\n        // moves by looking at the impact of the move operation on the node\n        // after the original move path.\n        const inversePath = Path.transform(path, op)!\n        const inverseNewPath = Path.transform(Path.next(path), op)!\n        return { ...op, path: inversePath, newPath: inverseNewPath }\n      }\n\n      case 'remove_node': {\n        return { ...op, type: 'insert_node' }\n      }\n\n      case 'remove_text': {\n        return { ...op, type: 'insert_text' }\n      }\n\n      case 'set_node': {\n        const { properties, newProperties } = op\n        return { ...op, properties: newProperties, newProperties: properties }\n      }\n\n      case 'set_selection': {\n        const { properties, newProperties } = op\n\n        if (properties == null) {\n          return {\n            ...op,\n            properties: newProperties as Range,\n            newProperties: null,\n          }\n        } else if (newProperties == null) {\n          return {\n            ...op,\n            properties: null,\n            newProperties: properties as Range,\n          }\n        } else {\n          return { ...op, properties: newProperties, newProperties: properties }\n        }\n      }\n\n      case 'split_node': {\n        return { ...op, type: 'merge_node', path: Path.next(op.path) }\n      }\n    }\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/path-ref.ts",
    "content": "import { Operation, Path } from '..'\n\n/**\n * `PathRef` objects keep a specific path in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date path value.\n */\n\nexport interface PathRef {\n  current: Path | null\n  affinity: 'forward' | 'backward' | null\n  unref(): Path | null\n}\n\nexport interface PathRefInterface {\n  /**\n   * Transform the path ref's current value by an operation.\n   */\n  transform: (ref: PathRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PathRef: PathRefInterface = {\n  transform(ref: PathRef, op: Operation): void {\n    const { current, affinity } = ref\n\n    if (current == null) {\n      return\n    }\n\n    const path = Path.transform(current, op, { affinity })\n    ref.current = path\n\n    if (path == null) {\n      ref.unref()\n    }\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/path.ts",
    "content": "import {\n  InsertNodeOperation,\n  MergeNodeOperation,\n  MoveNodeOperation,\n  Operation,\n  RemoveNodeOperation,\n  SplitNodeOperation,\n} from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `Path` arrays are a list of indexes that describe a node's exact position in\n * a Slate node tree. Although they are usually relative to the root `Editor`\n * object, they can be relative to any `Node` object.\n */\n\nexport type Path = number[]\n\nexport interface PathAncestorsOptions {\n  reverse?: boolean\n}\n\nexport interface PathLevelsOptions {\n  reverse?: boolean\n}\n\nexport interface PathTransformOptions {\n  affinity?: TextDirection | null\n}\n\nexport interface PathInterface {\n  /**\n   * Get a list of ancestor paths for a given path.\n   *\n   * The paths are sorted from shallowest to deepest ancestor. However, if the\n   * `reverse: true` option is passed, they are reversed.\n   */\n  ancestors: (path: Path, options?: PathAncestorsOptions) => Path[]\n\n  /**\n   * Get the common ancestor path of two paths.\n   */\n  common: (path: Path, another: Path) => Path\n\n  /**\n   * Compare a path to another, returning an integer indicating whether the path\n   * was before, at, or after the other.\n   *\n   * Note: Two paths of unequal length can still receive a `0` result if one is\n   * directly above or below the other. If you want exact matching, use\n   * [[Path.equals]] instead.\n   */\n  compare: (path: Path, another: Path) => -1 | 0 | 1\n\n  /**\n   * Check if a path ends after one of the indexes in another.\n   */\n  endsAfter: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path ends at one of the indexes in another.\n   */\n  endsAt: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path ends before one of the indexes in another.\n   */\n  endsBefore: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path is exactly equal to another.\n   */\n  equals: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if the path of previous sibling node exists\n   */\n  hasPrevious: (path: Path) => boolean\n\n  /**\n   * Check if a path is after another.\n   */\n  isAfter: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path is an ancestor of another.\n   */\n  isAncestor: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path is before another.\n   */\n  isBefore: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path is a child of another.\n   */\n  isChild: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path is equal to or an ancestor of another.\n   */\n  isCommon: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path is a descendant of another.\n   */\n  isDescendant: (path: Path, another: Path) => boolean\n\n  /**\n   * Check if a path is the parent of another.\n   */\n  isParent: (path: Path, another: Path) => boolean\n\n  /**\n   * Check is a value implements the `Path` interface.\n   */\n  isPath: (value: any) => value is Path\n\n  /**\n   * Check if a path is a sibling of another.\n   */\n  isSibling: (path: Path, another: Path) => boolean\n\n  /**\n   * Get a list of paths at every level down to a path. Note: this is the same\n   * as `Path.ancestors`, but including the path itself.\n   *\n   * The paths are sorted from shallowest to deepest. However, if the `reverse:\n   * true` option is passed, they are reversed.\n   */\n  levels: (path: Path, options?: PathLevelsOptions) => Path[]\n\n  /**\n   * Given a path, get the path to the next sibling node.\n   */\n  next: (path: Path) => Path\n\n  /**\n   * Returns whether this operation can affect paths or not. Used as an\n   * optimization when updating dirty paths during normalization\n   *\n   * NOTE: This *must* be kept in sync with the implementation of 'transform'\n   * below\n   */\n  operationCanTransformPath: (\n    operation: Operation\n  ) => operation is\n    | InsertNodeOperation\n    | RemoveNodeOperation\n    | MergeNodeOperation\n    | SplitNodeOperation\n    | MoveNodeOperation\n\n  /**\n   * Given a path, return a new path referring to the parent node above it.\n   */\n  parent: (path: Path) => Path\n\n  /**\n   * Given a path, get the path to the previous sibling node.\n   */\n  previous: (path: Path) => Path\n\n  /**\n   * Get a path relative to an ancestor.\n   */\n  relative: (path: Path, ancestor: Path) => Path\n\n  /**\n   * Transform a path by an operation.\n   */\n  transform: (\n    path: Path,\n    operation: Operation,\n    options?: PathTransformOptions\n  ) => Path | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Path: PathInterface = {\n  ancestors(path: Path, options: PathAncestorsOptions = {}): Path[] {\n    const { reverse = false } = options\n    let paths = Path.levels(path, options)\n\n    if (reverse) {\n      paths = paths.slice(1)\n    } else {\n      paths = paths.slice(0, -1)\n    }\n\n    return paths\n  },\n\n  common(path: Path, another: Path): Path {\n    const common: Path = []\n\n    for (let i = 0; i < path.length && i < another.length; i++) {\n      const av = path[i]\n      const bv = another[i]\n\n      if (av !== bv) {\n        break\n      }\n\n      common.push(av)\n    }\n\n    return common\n  },\n\n  compare(path: Path, another: Path): -1 | 0 | 1 {\n    const min = Math.min(path.length, another.length)\n\n    for (let i = 0; i < min; i++) {\n      if (path[i] < another[i]) return -1\n      if (path[i] > another[i]) return 1\n    }\n\n    return 0\n  },\n\n  endsAfter(path: Path, another: Path): boolean {\n    const i = path.length - 1\n    const as = path.slice(0, i)\n    const bs = another.slice(0, i)\n    const av = path[i]\n    const bv = another[i]\n    return Path.equals(as, bs) && av > bv\n  },\n\n  endsAt(path: Path, another: Path): boolean {\n    const i = path.length\n    const as = path.slice(0, i)\n    const bs = another.slice(0, i)\n    return Path.equals(as, bs)\n  },\n\n  endsBefore(path: Path, another: Path): boolean {\n    const i = path.length - 1\n    const as = path.slice(0, i)\n    const bs = another.slice(0, i)\n    const av = path[i]\n    const bv = another[i]\n    return Path.equals(as, bs) && av < bv\n  },\n\n  equals(path: Path, another: Path): boolean {\n    return (\n      path.length === another.length && path.every((n, i) => n === another[i])\n    )\n  },\n\n  hasPrevious(path: Path): boolean {\n    return path[path.length - 1] > 0\n  },\n\n  isAfter(path: Path, another: Path): boolean {\n    return Path.compare(path, another) === 1\n  },\n\n  isAncestor(path: Path, another: Path): boolean {\n    return path.length < another.length && Path.compare(path, another) === 0\n  },\n\n  isBefore(path: Path, another: Path): boolean {\n    return Path.compare(path, another) === -1\n  },\n\n  isChild(path: Path, another: Path): boolean {\n    return (\n      path.length === another.length + 1 && Path.compare(path, another) === 0\n    )\n  },\n\n  isCommon(path: Path, another: Path): boolean {\n    return path.length <= another.length && Path.compare(path, another) === 0\n  },\n\n  isDescendant(path: Path, another: Path): boolean {\n    return path.length > another.length && Path.compare(path, another) === 0\n  },\n\n  isParent(path: Path, another: Path): boolean {\n    return (\n      path.length + 1 === another.length && Path.compare(path, another) === 0\n    )\n  },\n\n  isPath(value: any): value is Path {\n    return Array.isArray(value) && value.every(n => typeof n === 'number')\n  },\n\n  isSibling(path: Path, another: Path): boolean {\n    if (path.length !== another.length) {\n      return false\n    }\n\n    const as = path.slice(0, -1)\n    const bs = another.slice(0, -1)\n    const al = path[path.length - 1]\n    const bl = another[another.length - 1]\n    return al !== bl && Path.equals(as, bs)\n  },\n\n  levels(path: Path, options: PathLevelsOptions = {}): Path[] {\n    const { reverse = false } = options\n    const list: Path[] = []\n\n    for (let i = 0; i <= path.length; i++) {\n      list.push(path.slice(0, i))\n    }\n\n    if (reverse) {\n      list.reverse()\n    }\n\n    return list\n  },\n\n  next(path: Path): Path {\n    if (path.length === 0) {\n      throw new Error(\n        `Cannot get the next path of a root path [${path}], because it has no next index.`\n      )\n    }\n\n    const last = path[path.length - 1]\n    return path.slice(0, -1).concat(last + 1)\n  },\n\n  operationCanTransformPath(\n    operation: Operation\n  ): operation is\n    | InsertNodeOperation\n    | RemoveNodeOperation\n    | MergeNodeOperation\n    | SplitNodeOperation\n    | MoveNodeOperation {\n    switch (operation.type) {\n      case 'insert_node':\n      case 'remove_node':\n      case 'merge_node':\n      case 'split_node':\n      case 'move_node':\n        return true\n      default:\n        return false\n    }\n  },\n\n  parent(path: Path): Path {\n    if (path.length === 0) {\n      throw new Error(`Cannot get the parent path of the root path [${path}].`)\n    }\n\n    return path.slice(0, -1)\n  },\n\n  previous(path: Path): Path {\n    if (path.length === 0) {\n      throw new Error(\n        `Cannot get the previous path of a root path [${path}], because it has no previous index.`\n      )\n    }\n\n    const last = path[path.length - 1]\n\n    if (last <= 0) {\n      throw new Error(\n        `Cannot get the previous path of a first child path [${path}] because it would result in a negative index.`\n      )\n    }\n\n    return path.slice(0, -1).concat(last - 1)\n  },\n\n  relative(path: Path, ancestor: Path): Path {\n    if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n      throw new Error(\n        `Cannot get the relative path of [${path}] inside ancestor [${ancestor}], because it is not above or equal to the path.`\n      )\n    }\n\n    return path.slice(ancestor.length)\n  },\n\n  transform(\n    path: Path | null,\n    operation: Operation,\n    options: PathTransformOptions = {}\n  ): Path | null {\n    if (!path) return null\n\n    // PERF: use destructing instead of immer\n    const p = [...path]\n    const { affinity = 'forward' } = options\n\n    // PERF: Exit early if the operation is guaranteed not to have an effect.\n    if (path.length === 0) {\n      return p\n    }\n\n    switch (operation.type) {\n      case 'insert_node': {\n        const { path: op } = operation\n\n        if (\n          Path.equals(op, p) ||\n          Path.endsBefore(op, p) ||\n          Path.isAncestor(op, p)\n        ) {\n          p[op.length - 1] += 1\n        }\n\n        break\n      }\n\n      case 'remove_node': {\n        const { path: op } = operation\n\n        if (Path.equals(op, p) || Path.isAncestor(op, p)) {\n          return null\n        } else if (Path.endsBefore(op, p)) {\n          p[op.length - 1] -= 1\n        }\n\n        break\n      }\n\n      case 'merge_node': {\n        const { path: op, position } = operation\n\n        if (Path.equals(op, p) || Path.endsBefore(op, p)) {\n          p[op.length - 1] -= 1\n        } else if (Path.isAncestor(op, p)) {\n          p[op.length - 1] -= 1\n          p[op.length] += position\n        }\n\n        break\n      }\n\n      case 'split_node': {\n        const { path: op, position } = operation\n\n        if (Path.equals(op, p)) {\n          if (affinity === 'forward') {\n            p[p.length - 1] += 1\n          } else if (affinity === 'backward') {\n            // Nothing, because it still refers to the right path.\n          } else {\n            return null\n          }\n        } else if (Path.endsBefore(op, p)) {\n          p[op.length - 1] += 1\n        } else if (Path.isAncestor(op, p) && path[op.length] >= position) {\n          p[op.length - 1] += 1\n          p[op.length] -= position\n        }\n\n        break\n      }\n\n      case 'move_node': {\n        const { path: op, newPath: onp } = operation\n\n        // If the old and new path are the same, it's a no-op.\n        if (Path.equals(op, onp)) {\n          return p\n        }\n\n        if (Path.isAncestor(op, p) || Path.equals(op, p)) {\n          const copy = onp.slice()\n\n          if (Path.endsBefore(op, onp) && op.length < onp.length) {\n            copy[op.length - 1] -= 1\n          }\n\n          return copy.concat(p.slice(op.length))\n        } else if (\n          Path.isSibling(op, onp) &&\n          (Path.isAncestor(onp, p) || Path.equals(onp, p))\n        ) {\n          if (Path.endsBefore(op, p)) {\n            p[op.length - 1] -= 1\n          } else {\n            p[op.length - 1] += 1\n          }\n        } else if (\n          Path.endsBefore(onp, p) ||\n          Path.equals(onp, p) ||\n          Path.isAncestor(onp, p)\n        ) {\n          if (Path.endsBefore(op, p)) {\n            p[op.length - 1] -= 1\n          }\n\n          p[onp.length - 1] += 1\n        } else if (Path.endsBefore(op, p)) {\n          if (Path.equals(onp, p)) {\n            p[onp.length - 1] += 1\n          }\n\n          p[op.length - 1] -= 1\n        }\n\n        break\n      }\n    }\n\n    return p\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/point-ref.ts",
    "content": "import { Operation, Point } from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `PointRef` objects keep a specific point in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date point value.\n */\n\nexport interface PointRef {\n  current: Point | null\n  affinity: TextDirection | null\n  unref(): Point | null\n}\n\nexport interface PointRefInterface {\n  /**\n   * Transform the point ref's current value by an operation.\n   */\n  transform: (ref: PointRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PointRef: PointRefInterface = {\n  transform(ref: PointRef, op: Operation): void {\n    const { current, affinity } = ref\n\n    if (current == null) {\n      return\n    }\n\n    const point = Point.transform(current, op, { affinity })\n    ref.current = point\n\n    if (point == null) {\n      ref.unref()\n    }\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/point.ts",
    "content": "import { ExtendedType, Operation, Path, isObject } from '..'\nimport { TextDirection } from '../types/types'\n\n/**\n * `Point` objects refer to a specific location in a text node in a Slate\n * document. Its path refers to the location of the node in the tree, and its\n * offset refers to the distance into the node's string of text. Points can\n * only refer to `Text` nodes.\n */\n\nexport interface BasePoint {\n  path: Path\n  offset: number\n}\n\nexport type Point = ExtendedType<'Point', BasePoint>\n\nexport interface PointTransformOptions {\n  affinity?: TextDirection | null\n}\n\nexport interface PointInterface {\n  /**\n   * Compare a point to another, returning an integer indicating whether the\n   * point was before, at, or after the other.\n   */\n  compare: (point: Point, another: Point) => -1 | 0 | 1\n\n  /**\n   * Check if a point is after another.\n   */\n  isAfter: (point: Point, another: Point) => boolean\n\n  /**\n   * Check if a point is before another.\n   */\n  isBefore: (point: Point, another: Point) => boolean\n\n  /**\n   * Check if a point is exactly equal to another.\n   */\n  equals: (point: Point, another: Point) => boolean\n\n  /**\n   * Check if a value implements the `Point` interface.\n   */\n  isPoint: (value: any) => value is Point\n\n  /**\n   * Transform a point by an operation.\n   */\n  transform: (\n    point: Point,\n    op: Operation,\n    options?: PointTransformOptions\n  ) => Point | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Point: PointInterface = {\n  compare(point: Point, another: Point): -1 | 0 | 1 {\n    const result = Path.compare(point.path, another.path)\n\n    if (result === 0) {\n      if (point.offset < another.offset) return -1\n      if (point.offset > another.offset) return 1\n      return 0\n    }\n\n    return result\n  },\n\n  isAfter(point: Point, another: Point): boolean {\n    return Point.compare(point, another) === 1\n  },\n\n  isBefore(point: Point, another: Point): boolean {\n    return Point.compare(point, another) === -1\n  },\n\n  equals(point: Point, another: Point): boolean {\n    // PERF: ensure the offsets are equal first since they are cheaper to check.\n    return (\n      point.offset === another.offset && Path.equals(point.path, another.path)\n    )\n  },\n\n  isPoint(value: any): value is Point {\n    return (\n      isObject(value) &&\n      typeof value.offset === 'number' &&\n      Path.isPath(value.path)\n    )\n  },\n\n  transform(\n    point: Point | null,\n    op: Operation,\n    options: PointTransformOptions = {}\n  ): Point | null {\n    if (point === null) {\n      return null\n    }\n\n    const { affinity = 'forward' } = options\n    let { path, offset } = point\n\n    switch (op.type) {\n      case 'insert_node':\n      case 'move_node': {\n        path = Path.transform(path, op, options)!\n        break\n      }\n\n      case 'insert_text': {\n        if (\n          Path.equals(op.path, path) &&\n          (op.offset < offset ||\n            (op.offset === offset && affinity === 'forward'))\n        ) {\n          offset += op.text.length\n        }\n\n        break\n      }\n\n      case 'merge_node': {\n        if (Path.equals(op.path, path)) {\n          offset += op.position\n        }\n\n        path = Path.transform(path, op, options)!\n        break\n      }\n\n      case 'remove_text': {\n        if (Path.equals(op.path, path) && op.offset <= offset) {\n          offset -= Math.min(offset - op.offset, op.text.length)\n        }\n\n        break\n      }\n\n      case 'remove_node': {\n        if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n          return null\n        }\n\n        path = Path.transform(path, op, options)!\n        break\n      }\n\n      case 'split_node': {\n        if (Path.equals(op.path, path)) {\n          if (op.position === offset && affinity == null) {\n            return null\n          } else if (\n            op.position < offset ||\n            (op.position === offset && affinity === 'forward')\n          ) {\n            offset -= op.position\n\n            path = Path.transform(path, op, {\n              ...options,\n              affinity: 'forward',\n            })!\n          }\n        } else {\n          path = Path.transform(path, op, options)!\n        }\n\n        break\n      }\n\n      default:\n        return point\n    }\n\n    return { path, offset }\n  },\n}\n\n/**\n * `PointEntry` objects are returned when iterating over `Point` objects that\n * belong to a range.\n */\n\nexport type PointEntry = [Point, 'anchor' | 'focus']\n"
  },
  {
    "path": "packages/slate/src/interfaces/range-ref.ts",
    "content": "import { Operation, Range } from '..'\n\n/**\n * `RangeRef` objects keep a specific range in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date range value.\n */\n\nexport interface RangeRef {\n  current: Range | null\n  affinity: 'forward' | 'backward' | 'outward' | 'inward' | null\n  unref(): Range | null\n}\n\nexport interface RangeRefInterface {\n  /**\n   * Transform the range ref's current value by an operation.\n   */\n  transform: (ref: RangeRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const RangeRef: RangeRefInterface = {\n  transform(ref: RangeRef, op: Operation): void {\n    const { current, affinity } = ref\n\n    if (current == null) {\n      return\n    }\n\n    const path = Range.transform(current, op, { affinity })\n    ref.current = path\n\n    if (path == null) {\n      ref.unref()\n    }\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/range.ts",
    "content": "import {\n  ExtendedType,\n  Location,\n  Operation,\n  Path,\n  Point,\n  PointEntry,\n  isObject,\n} from '..'\nimport { RangeDirection } from '../types/types'\n\n/**\n * `Range` objects are a set of points that refer to a specific span of a Slate\n * document. They can define a span inside a single node or a can span across\n * multiple nodes.\n */\n\nexport interface BaseRange {\n  anchor: Point\n  focus: Point\n}\n\nexport type Range = ExtendedType<'Range', BaseRange>\n\nexport interface RangeEdgesOptions {\n  reverse?: boolean\n}\n\nexport interface RangeTransformOptions {\n  affinity?: RangeDirection | null\n}\n\nexport interface RangeInterface {\n  /**\n   * Get the start and end points of a range, in the order in which they appear\n   * in the document.\n   */\n  edges: (range: Range, options?: RangeEdgesOptions) => [Point, Point]\n\n  /**\n   * Get the end point of a range.\n   */\n  end: (range: Range) => Point\n\n  /**\n   * Check if a range is exactly equal to another.\n   */\n  equals: (range: Range, another: Range) => boolean\n\n  /**\n   * Check if a range includes a path, a point or part of another range.\n   */\n  includes: (range: Range, target: Location) => boolean\n\n  /**\n   * Check if a range includes another range.\n   */\n  surrounds: (range: Range, target: Range) => boolean\n\n  /**\n   * Get the intersection of a range with another.\n   */\n  intersection: (range: Range, another: Range) => Range | null\n\n  /**\n   * Check if a range is backward, meaning that its anchor point appears in the\n   * document _after_ its focus point.\n   */\n  isBackward: (range: Range) => boolean\n\n  /**\n   * Check if a range is collapsed, meaning that both its anchor and focus\n   * points refer to the exact same position in the document.\n   */\n  isCollapsed: (range: Range) => boolean\n\n  /**\n   * Check if a range is expanded.\n   *\n   * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\n   */\n  isExpanded: (range: Range) => boolean\n\n  /**\n   * Check if a range is forward.\n   *\n   * This is the opposite of [[Range.isBackward]] and is provided for legibility.\n   */\n  isForward: (range: Range) => boolean\n\n  /**\n   * Check if a value implements the [[Range]] interface.\n   */\n  isRange: (value: any) => value is Range\n\n  /**\n   * Iterate through all of the point entries in a range.\n   */\n  points: (range: Range) => Generator<PointEntry, void, undefined>\n\n  /**\n   * Get the start point of a range.\n   */\n  start: (range: Range) => Point\n\n  /**\n   * Transform a range by an operation.\n   */\n  transform: (\n    range: Range,\n    op: Operation,\n    options?: RangeTransformOptions\n  ) => Range | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Range: RangeInterface = {\n  edges(range: Range, options: RangeEdgesOptions = {}): [Point, Point] {\n    const { reverse = false } = options\n    const { anchor, focus } = range\n    return Range.isBackward(range) === reverse\n      ? [anchor, focus]\n      : [focus, anchor]\n  },\n\n  end(range: Range): Point {\n    const [, end] = Range.edges(range)\n    return end\n  },\n\n  equals(range: Range, another: Range): boolean {\n    return (\n      Point.equals(range.anchor, another.anchor) &&\n      Point.equals(range.focus, another.focus)\n    )\n  },\n\n  surrounds(range: Range, target: Range): boolean {\n    const intersectionRange = Range.intersection(range, target)\n    if (!intersectionRange) {\n      return false\n    }\n    return Range.equals(intersectionRange, target)\n  },\n\n  includes(range: Range, target: Location): boolean {\n    if (Location.isRange(target)) {\n      if (\n        Range.includes(range, target.anchor) ||\n        Range.includes(range, target.focus)\n      ) {\n        return true\n      }\n\n      const [rs, re] = Range.edges(range)\n      const [ts, te] = Range.edges(target)\n      return Point.isBefore(rs, ts) && Point.isAfter(re, te)\n    }\n\n    const [start, end] = Range.edges(range)\n    let isAfterStart = false\n    let isBeforeEnd = false\n\n    if (Location.isPoint(target)) {\n      isAfterStart = Point.compare(target, start) >= 0\n      isBeforeEnd = Point.compare(target, end) <= 0\n    } else {\n      isAfterStart = Path.compare(target, start.path) >= 0\n      isBeforeEnd = Path.compare(target, end.path) <= 0\n    }\n\n    return isAfterStart && isBeforeEnd\n  },\n\n  intersection(range: Range, another: Range): Range | null {\n    const { anchor, focus, ...rest } = range\n    const [s1, e1] = Range.edges(range)\n    const [s2, e2] = Range.edges(another)\n    const start = Point.isBefore(s1, s2) ? s2 : s1\n    const end = Point.isBefore(e1, e2) ? e1 : e2\n\n    if (Point.isBefore(end, start)) {\n      return null\n    } else {\n      return { anchor: start, focus: end, ...rest }\n    }\n  },\n\n  isBackward(range: Range): boolean {\n    const { anchor, focus } = range\n    return Point.isAfter(anchor, focus)\n  },\n\n  isCollapsed(range: Range): boolean {\n    const { anchor, focus } = range\n    return Point.equals(anchor, focus)\n  },\n\n  isExpanded(range: Range): boolean {\n    return !Range.isCollapsed(range)\n  },\n\n  isForward(range: Range): boolean {\n    return !Range.isBackward(range)\n  },\n\n  isRange(value: any): value is Range {\n    return (\n      isObject(value) &&\n      Point.isPoint(value.anchor) &&\n      Point.isPoint(value.focus)\n    )\n  },\n\n  *points(range: Range): Generator<PointEntry, void, undefined> {\n    yield [range.anchor, 'anchor']\n    yield [range.focus, 'focus']\n  },\n\n  start(range: Range): Point {\n    const [start] = Range.edges(range)\n    return start\n  },\n\n  transform(\n    range: Range | null,\n    op: Operation,\n    options: RangeTransformOptions = {}\n  ): Range | null {\n    if (range === null) {\n      return null\n    }\n\n    const { affinity = 'inward' } = options\n    let affinityAnchor: 'forward' | 'backward' | null\n    let affinityFocus: 'forward' | 'backward' | null\n\n    if (affinity === 'inward') {\n      // If the range is collapsed, make sure to use the same affinity to\n      // avoid the two points passing each other and expanding in the opposite\n      // direction\n      const isCollapsed = Range.isCollapsed(range)\n      if (Range.isForward(range)) {\n        affinityAnchor = 'forward'\n        affinityFocus = isCollapsed ? affinityAnchor : 'backward'\n      } else {\n        affinityAnchor = 'backward'\n        affinityFocus = isCollapsed ? affinityAnchor : 'forward'\n      }\n    } else if (affinity === 'outward') {\n      if (Range.isForward(range)) {\n        affinityAnchor = 'backward'\n        affinityFocus = 'forward'\n      } else {\n        affinityAnchor = 'forward'\n        affinityFocus = 'backward'\n      }\n    } else {\n      affinityAnchor = affinity\n      affinityFocus = affinity\n    }\n    const anchor = Point.transform(range.anchor, op, {\n      affinity: affinityAnchor,\n    })\n    const focus = Point.transform(range.focus, op, { affinity: affinityFocus })\n\n    if (!anchor || !focus) {\n      return null\n    }\n\n    return { anchor, focus }\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/scrubber.ts",
    "content": "export type Scrubber = (key: string, value: unknown) => unknown\n\nexport interface ScrubberInterface {\n  setScrubber(scrubber: Scrubber | undefined): void\n  stringify(value: any): string\n}\n\nlet _scrubber: Scrubber | undefined = undefined\n\n/**\n * This interface implements a stringify() function, which is used by Slate\n * internally when generating exceptions containing end user data. Developers\n * using Slate may call Scrubber.setScrubber() to alter the behavior of this\n * stringify() function.\n *\n * For example, to prevent the cleartext logging of 'text' fields within Nodes:\n *\n *    import { Scrubber } from 'slate';\n *    Scrubber.setScrubber((key, val) => {\n *      if (key === 'text') return '...scrubbed...'\n *      return val\n *    });\n *\n */\n// eslint-disable-next-line no-redeclare\nexport const Scrubber: ScrubberInterface = {\n  setScrubber(scrubber: Scrubber | undefined): void {\n    _scrubber = scrubber\n  },\n\n  stringify(value: any): string {\n    return JSON.stringify(value, _scrubber)\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/text.ts",
    "content": "import { Range, isObject, Node } from '..'\nimport { ExtendedType } from '../types/custom-types'\nimport { isDeepEqual } from '../utils/deep-equal'\n\n/**\n * `Text` objects represent the nodes that contain the actual text content of a\n * Slate document along with any formatting properties. They are always leaf\n * nodes in the document tree as they cannot contain any children.\n */\n\nexport interface BaseText {\n  text: string\n}\n\nexport type Text = ExtendedType<'Text', BaseText>\n\nexport interface LeafPosition {\n  start: number\n  end: number\n  isFirst?: true\n  isLast?: true\n}\n\nexport interface TextEqualsOptions {\n  loose?: boolean\n}\n\nexport type DecoratedRange = Range & {\n  /**\n   * Customize how another decoration is merged into a text node. If not specified, `Object.assign` would be used.\n   * It is useful for overlapping decorations with the same key but different values.\n   */\n  merge?: (leaf: Text, decoration: object) => void\n}\n\nexport interface TextInterface {\n  /**\n   * Check if two text nodes are equal.\n   *\n   * When loose is set, the text is not compared. This is\n   * used to check whether sibling text nodes can be merged.\n   */\n  equals: (text: Text, another: Text, options?: TextEqualsOptions) => boolean\n\n  /**\n   * Check if a value implements the `Text` interface.\n   */\n  isText: (value: any) => value is Text\n\n  /**\n   * Check if a value is a list of `Text` objects.\n   */\n  isTextList: (value: any) => value is Text[]\n\n  /**\n   * Check if some props are a partial of Text.\n   */\n  isTextProps: (props: any) => props is Partial<Text>\n\n  /**\n   * Check if an text matches set of properties.\n   *\n   * Note: this is for matching custom properties, and it does not ensure that\n   * the `text` property are two nodes equal.\n   */\n  matches: (text: Text, props: Partial<Text>) => boolean\n\n  /**\n   * Get the leaves for a text node given decorations.\n   */\n  decorations: (\n    node: Text,\n    decorations: DecoratedRange[]\n  ) => { leaf: Text; position?: LeafPosition }[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Text: TextInterface = {\n  equals(text: Text, another: Text, options: TextEqualsOptions = {}): boolean {\n    const { loose = false } = options\n\n    function omitText(obj: Record<any, any>) {\n      const { text, ...rest } = obj\n\n      return rest\n    }\n\n    return isDeepEqual(\n      loose ? omitText(text) : text,\n      loose ? omitText(another) : another\n    )\n  },\n\n  isText(value: any): value is Text {\n    return isObject(value) && typeof value.text === 'string'\n  },\n\n  isTextList(value: any): value is Text[] {\n    return Array.isArray(value) && value.every(val => Text.isText(val))\n  },\n\n  isTextProps(props: any): props is Partial<Text> {\n    return (props as Partial<Text>).text !== undefined\n  },\n\n  matches(text: Text, props: Partial<Text>): boolean {\n    for (const key in props) {\n      if (key === 'text') {\n        continue\n      }\n\n      if (\n        !text.hasOwnProperty(key) ||\n        text[<keyof Text>key] !== props[<keyof Text>key]\n      ) {\n        return false\n      }\n    }\n\n    return true\n  },\n\n  decorations(\n    node: Text,\n    decorations: DecoratedRange[]\n  ): { leaf: Text; position?: LeafPosition }[] {\n    let leaves: { leaf: Text; position?: LeafPosition }[] = [\n      { leaf: { ...node } },\n    ]\n\n    for (const dec of decorations) {\n      const { anchor, focus, merge: mergeDecoration, ...rest } = dec\n      const [start, end] = Range.edges(dec)\n      const next = []\n      let leafEnd = 0\n      const decorationStart = start.offset\n      const decorationEnd = end.offset\n      const merge = mergeDecoration ?? Object.assign\n\n      for (const { leaf } of leaves) {\n        const { length } = leaf.text\n        const leafStart = leafEnd\n        leafEnd += length\n\n        // If the range encompasses the entire leaf, add the range.\n        if (decorationStart <= leafStart && leafEnd <= decorationEnd) {\n          merge(leaf, rest)\n          next.push({ leaf })\n          continue\n        }\n\n        // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n        if (\n          (decorationStart !== decorationEnd &&\n            (decorationStart === leafEnd || decorationEnd === leafStart)) ||\n          decorationStart > leafEnd ||\n          decorationEnd < leafStart ||\n          (decorationEnd === leafStart && leafStart !== 0)\n        ) {\n          next.push({ leaf })\n          continue\n        }\n\n        // Otherwise we need to split the leaf, at the start, end, or both,\n        // and add the range to the middle intersecting section. Do the end\n        // split first since we don't need to update the offset that way.\n        let middle = leaf\n        let before\n        let after\n\n        if (decorationEnd < leafEnd) {\n          const off = decorationEnd - leafStart\n          after = { leaf: { ...middle, text: middle.text.slice(off) } }\n          middle = { ...middle, text: middle.text.slice(0, off) }\n        }\n\n        if (decorationStart > leafStart) {\n          const off = decorationStart - leafStart\n          before = { leaf: { ...middle, text: middle.text.slice(0, off) } }\n          middle = { ...middle, text: middle.text.slice(off) }\n        }\n\n        merge(middle, rest)\n\n        if (before) {\n          next.push(before)\n        }\n\n        next.push({ leaf: middle })\n\n        if (after) {\n          next.push(after)\n        }\n      }\n\n      leaves = next\n    }\n\n    if (leaves.length > 1) {\n      let currentOffset = 0\n      for (const [index, item] of leaves.entries()) {\n        const start = currentOffset\n        const end = start + item.leaf.text.length\n        const position: LeafPosition = { start, end }\n\n        if (index === 0) position.isFirst = true\n        if (index === leaves.length - 1) position.isLast = true\n\n        item.position = position\n        currentOffset = end\n      }\n    }\n\n    return leaves\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/transforms/general.ts",
    "content": "import {\n  Descendant,\n  Editor,\n  Element,\n  Node,\n  NodeEntry,\n  Operation,\n  Path,\n  Point,\n  Range,\n  Scrubber,\n  Selection,\n  Text,\n} from '../../index'\nimport {\n  insertChildren,\n  modifyChildren,\n  modifyDescendant,\n  modifyLeaf,\n  removeChildren,\n  replaceChildren,\n} from '../../utils/modify'\n\nexport interface GeneralTransforms {\n  /**\n   * Transform the editor by an operation.\n   */\n  transform: (editor: Editor, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const GeneralTransforms: GeneralTransforms = {\n  transform(editor: Editor, op: Operation): void {\n    let transformSelection = false\n\n    switch (op.type) {\n      case 'insert_node': {\n        const { path, node } = op\n\n        modifyChildren(editor, Path.parent(path), children => {\n          const index = path[path.length - 1]\n\n          if (index > children.length) {\n            throw new Error(\n              `Cannot apply an \"insert_node\" operation at path [${path}] because the destination is past the end of the node.`\n            )\n          }\n\n          return insertChildren(children, index, node)\n        })\n\n        transformSelection = true\n        break\n      }\n\n      case 'insert_text': {\n        const { path, offset, text } = op\n        if (text.length === 0) break\n\n        modifyLeaf(editor, path, node => {\n          const before = node.text.slice(0, offset)\n          const after = node.text.slice(offset)\n\n          return {\n            ...node,\n            text: before + text + after,\n          }\n        })\n\n        transformSelection = true\n        break\n      }\n\n      case 'merge_node': {\n        const { path } = op\n        const index = path[path.length - 1]\n        const prevPath = Path.previous(path)\n        const prevIndex = prevPath[prevPath.length - 1]\n\n        modifyChildren(editor, Path.parent(path), children => {\n          const node = children[index]\n          const prev = children[prevIndex]\n          let newNode: Descendant\n\n          if (Node.isText(node) && Node.isText(prev)) {\n            newNode = { ...prev, text: prev.text + node.text }\n          } else if (Node.isElement(node) && Node.isElement(prev)) {\n            newNode = { ...prev, children: prev.children.concat(node.children) }\n          } else {\n            throw new Error(\n              `Cannot apply a \"merge_node\" operation at path [${path}] to nodes of different interfaces: ${Scrubber.stringify(\n                node\n              )} ${Scrubber.stringify(prev)}`\n            )\n          }\n\n          return replaceChildren(children, prevIndex, 2, newNode)\n        })\n\n        transformSelection = true\n        break\n      }\n\n      case 'move_node': {\n        const { path, newPath } = op\n        const index = path[path.length - 1]\n\n        if (Path.isAncestor(path, newPath)) {\n          throw new Error(\n            `Cannot move a path [${path}] to new path [${newPath}] because the destination is inside itself.`\n          )\n        }\n\n        const node = Node.get(editor, path)\n\n        modifyChildren(editor, Path.parent(path), children =>\n          removeChildren(children, index, 1)\n        )\n\n        // This is tricky, but since the `path` and `newPath` both refer to\n        // the same snapshot in time, there's a mismatch. After either\n        // removing the original position, the second step's path can be out\n        // of date. So instead of using the `op.newPath` directly, we\n        // transform `op.path` to ascertain what the `newPath` would be after\n        // the operation was applied.\n        const truePath = Path.transform(path, op)!\n        const newIndex = truePath[truePath.length - 1]\n\n        modifyChildren(editor, Path.parent(truePath), children =>\n          insertChildren(children, newIndex, node)\n        )\n\n        transformSelection = true\n        break\n      }\n\n      case 'remove_node': {\n        const { path } = op\n        const index = path[path.length - 1]\n\n        modifyChildren(editor, Path.parent(path), children =>\n          removeChildren(children, index, 1)\n        )\n\n        // Transform all the points in the value, but if the point was in the\n        // node that was removed we need to update the range or remove it.\n        if (editor.selection) {\n          let selection: Selection = { ...editor.selection }\n\n          for (const [point, key] of Range.points(selection)) {\n            const result = Point.transform(point, op)\n\n            if (selection != null && result != null) {\n              selection[key] = result\n            } else {\n              let prev: NodeEntry<Text> | undefined\n              let next: NodeEntry<Text> | undefined\n\n              for (const [n, p] of Node.texts(editor)) {\n                if (Path.compare(p, path) === -1) {\n                  prev = [n, p]\n                } else {\n                  next = [n, p]\n                  break\n                }\n              }\n\n              let preferNext = false\n              if (prev && next) {\n                if (Path.isSibling(prev[1], path)) {\n                  preferNext = false\n                } else if (Path.equals(next[1], path)) {\n                  preferNext = true\n                } else {\n                  preferNext =\n                    Path.common(prev[1], path).length <\n                    Path.common(next[1], path).length\n                }\n              }\n\n              if (prev && !preferNext) {\n                selection![key] = { path: prev[1], offset: prev[0].text.length }\n              } else if (next) {\n                selection![key] = { path: next[1], offset: 0 }\n              } else {\n                selection = null\n              }\n            }\n          }\n\n          if (!selection || !Range.equals(selection, editor.selection)) {\n            editor.selection = selection\n          }\n        }\n\n        break\n      }\n\n      case 'remove_text': {\n        const { path, offset, text } = op\n        if (text.length === 0) break\n\n        modifyLeaf(editor, path, node => {\n          const before = node.text.slice(0, offset)\n          const after = node.text.slice(offset + text.length)\n\n          return {\n            ...node,\n            text: before + after,\n          }\n        })\n\n        transformSelection = true\n        break\n      }\n\n      case 'set_node': {\n        const { path, properties, newProperties } = op\n\n        if (path.length === 0) {\n          throw new Error(`Cannot set properties on the root node!`)\n        }\n\n        modifyDescendant(editor, path, node => {\n          const newNode = { ...node }\n\n          for (const key in newProperties) {\n            if (key === 'children' || key === 'text') {\n              throw new Error(`Cannot set the \"${key}\" property of nodes!`)\n            }\n\n            const value = newProperties[<keyof Node>key]\n\n            if (value == null) {\n              delete newNode[<keyof Node>key]\n            } else {\n              newNode[<keyof Node>key] = value\n            }\n          }\n\n          // properties that were previously defined, but are now missing, must be deleted\n          for (const key in properties) {\n            if (!newProperties.hasOwnProperty(key)) {\n              delete newNode[<keyof Node>key]\n            }\n          }\n\n          return newNode\n        })\n\n        break\n      }\n\n      case 'set_selection': {\n        const { newProperties } = op\n\n        if (newProperties == null) {\n          editor.selection = null\n          break\n        }\n\n        if (editor.selection == null) {\n          if (!(newProperties.anchor && newProperties.focus)) {\n            throw new Error(\n              `Cannot apply an incomplete \"set_selection\" operation properties ${Scrubber.stringify(\n                newProperties\n              )} when there is no current selection.`\n            )\n          }\n\n          editor.selection = { ...(newProperties as Range) }\n          break\n        }\n\n        const selection = { ...editor.selection }\n\n        for (const key in newProperties) {\n          const value = newProperties[<keyof Range>key]\n\n          if (value == null) {\n            if (key === 'anchor' || key === 'focus') {\n              throw new Error(`Cannot remove the \"${key}\" selection property`)\n            }\n\n            delete selection[<keyof Range>key]\n          } else {\n            selection[<keyof Range>key] = value\n          }\n        }\n\n        editor.selection = selection\n\n        break\n      }\n\n      case 'split_node': {\n        const { path, position, properties } = op\n        const index = path[path.length - 1]\n\n        if (path.length === 0) {\n          throw new Error(\n            `Cannot apply a \"split_node\" operation at path [${path}] because the root node cannot be split.`\n          )\n        }\n\n        modifyChildren(editor, Path.parent(path), children => {\n          const node = children[index]\n          let newNode: Descendant\n          let nextNode: Descendant\n\n          if (Node.isText(node)) {\n            const before = node.text.slice(0, position)\n            const after = node.text.slice(position)\n            newNode = {\n              ...node,\n              text: before,\n            }\n            nextNode = {\n              ...(properties as Partial<Text>),\n              text: after,\n            }\n          } else {\n            const before = node.children.slice(0, position)\n            const after = node.children.slice(position)\n            newNode = {\n              ...node,\n              children: before,\n            }\n            nextNode = {\n              ...(properties as Partial<Element>),\n              children: after,\n            }\n          }\n\n          return replaceChildren(children, index, 1, newNode, nextNode)\n        })\n\n        transformSelection = true\n        break\n      }\n    }\n\n    if (transformSelection && editor.selection) {\n      const selection = { ...editor.selection }\n\n      for (const [point, key] of Range.points(selection)) {\n        selection[key] = Point.transform(point, op)!\n      }\n\n      if (!Range.equals(selection, editor.selection)) {\n        editor.selection = selection\n      }\n    }\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/transforms/index.ts",
    "content": "import { GeneralTransforms } from './general'\nimport { NodeTransforms } from './node'\nimport { SelectionTransforms } from './selection'\nimport { TextTransforms } from './text'\n\nexport const Transforms: GeneralTransforms &\n  NodeTransforms &\n  SelectionTransforms &\n  TextTransforms = {\n  ...GeneralTransforms,\n  ...NodeTransforms,\n  ...SelectionTransforms,\n  ...TextTransforms,\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/transforms/node.ts",
    "content": "import { Editor, Element, Location, Node, Path } from '../../index'\nimport { NodeMatch, PropsCompare, PropsMerge } from '../editor'\nimport { MaximizeMode, RangeMode } from '../../types/types'\n\nexport interface NodeInsertNodesOptions<T extends Node> {\n  at?: Location\n  match?: NodeMatch<T>\n  mode?: RangeMode\n  hanging?: boolean\n  select?: boolean\n  voids?: boolean\n  batchDirty?: boolean\n}\n\nexport interface NodeTransforms {\n  /**\n   * Insert nodes in the editor\n   * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n   */\n  insertNodes: <T extends Node>(\n    editor: Editor,\n    nodes: Node | Node[],\n    options?: NodeInsertNodesOptions<T>\n  ) => void\n\n  /**\n   * Lift nodes at a specific location upwards in the document tree, splitting\n   * their parent in two if necessary.\n   */\n  liftNodes: <T extends Node>(\n    editor: Editor,\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: MaximizeMode\n      voids?: boolean\n    }\n  ) => void\n\n  /**\n   * Merge a node at a location with the previous node of the same depth,\n   * removing any empty containing nodes after the merge if necessary.\n   */\n  mergeNodes: <T extends Node>(\n    editor: Editor,\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: RangeMode\n      hanging?: boolean\n      voids?: boolean\n    }\n  ) => void\n\n  /**\n   * Move the nodes at a location to a new location.\n   */\n  moveNodes: <T extends Node>(\n    editor: Editor,\n    options: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: MaximizeMode\n      to: Path\n      voids?: boolean\n    }\n  ) => void\n\n  /**\n   * Remove the nodes at a specific location in the document.\n   */\n  removeNodes: <T extends Node>(\n    editor: Editor,\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: RangeMode\n      hanging?: boolean\n      voids?: boolean\n    }\n  ) => void\n\n  /**\n   * Set new properties on the nodes at a location.\n   */\n  setNodes: <T extends Node>(\n    editor: Editor,\n    props: Partial<T>,\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: MaximizeMode\n      hanging?: boolean\n      split?: boolean\n      voids?: boolean\n      compare?: PropsCompare\n      merge?: PropsMerge\n    }\n  ) => void\n\n  /**\n   * Split the nodes at a specific location.\n   */\n  splitNodes: <T extends Node>(\n    editor: Editor,\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: RangeMode\n      always?: boolean\n      height?: number\n      voids?: boolean\n    }\n  ) => void\n\n  /**\n   * Unset properties on the nodes at a location.\n   */\n  unsetNodes: <T extends Node>(\n    editor: Editor,\n    props: string | string[],\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: MaximizeMode\n      hanging?: boolean\n      split?: boolean\n      voids?: boolean\n    }\n  ) => void\n\n  /**\n   * Unwrap the nodes at a location from a parent node, splitting the parent if\n   * necessary to ensure that only the content in the range is unwrapped.\n   */\n  unwrapNodes: <T extends Node>(\n    editor: Editor,\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: MaximizeMode\n      split?: boolean\n      voids?: boolean\n    }\n  ) => void\n\n  /**\n   * Wrap the nodes at a location in a new container node, splitting the edges\n   * of the range first to ensure that only the content in the range is wrapped.\n   */\n  wrapNodes: <T extends Node>(\n    editor: Editor,\n    element: Element,\n    options?: {\n      at?: Location\n      match?: NodeMatch<T>\n      mode?: MaximizeMode\n      split?: boolean\n      voids?: boolean\n    }\n  ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const NodeTransforms: NodeTransforms = {\n  insertNodes(editor, nodes, options) {\n    editor.insertNodes(nodes, options)\n  },\n  liftNodes(editor, options) {\n    editor.liftNodes(options)\n  },\n  mergeNodes(editor, options) {\n    editor.mergeNodes(options)\n  },\n  moveNodes(editor, options) {\n    editor.moveNodes(options)\n  },\n  removeNodes(editor, options) {\n    editor.removeNodes(options)\n  },\n  setNodes(editor, props, options) {\n    editor.setNodes(props, options)\n  },\n  splitNodes(editor, options) {\n    editor.splitNodes(options)\n  },\n  unsetNodes(editor, props, options) {\n    editor.unsetNodes(props, options)\n  },\n  unwrapNodes(editor, options) {\n    editor.unwrapNodes(options)\n  },\n  wrapNodes(editor, element, options) {\n    editor.wrapNodes(element, options)\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/transforms/selection.ts",
    "content": "import { Editor, Location, Point, Range } from '../../index'\nimport { MoveUnit, SelectionEdge } from '../../types/types'\n\nexport interface SelectionCollapseOptions {\n  edge?: SelectionEdge\n}\n\nexport interface SelectionMoveOptions {\n  distance?: number\n  unit?: MoveUnit\n  reverse?: boolean\n  edge?: SelectionEdge\n}\n\nexport interface SelectionSetPointOptions {\n  edge?: SelectionEdge\n}\n\nexport interface SelectionTransforms {\n  /**\n   * Collapse the selection.\n   */\n  collapse: (editor: Editor, options?: SelectionCollapseOptions) => void\n\n  /**\n   * Unset the selection.\n   */\n  deselect: (editor: Editor) => void\n\n  /**\n   * Move the selection's point forward or backward.\n   */\n  move: (editor: Editor, options?: SelectionMoveOptions) => void\n\n  /**\n   * Set the selection to a new value.\n   */\n  select: (editor: Editor, target: Location) => void\n\n  /**\n   * Set new properties on one of the selection's points.\n   */\n  setPoint: (\n    editor: Editor,\n    props: Partial<Point>,\n    options?: SelectionSetPointOptions\n  ) => void\n\n  /**\n   * Set new properties on the selection.\n   */\n  setSelection: (editor: Editor, props: Partial<Range>) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const SelectionTransforms: SelectionTransforms = {\n  collapse(editor, options) {\n    editor.collapse(options)\n  },\n  deselect(editor) {\n    editor.deselect()\n  },\n  move(editor, options) {\n    editor.move(options)\n  },\n  select(editor, target) {\n    editor.select(target)\n  },\n  setPoint(editor, props, options) {\n    editor.setPoint(props, options)\n  },\n  setSelection(editor, props) {\n    editor.setSelection(props)\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/interfaces/transforms/text.ts",
    "content": "import { Editor, Location, Node, Range, Transforms } from '../../index'\nimport { TextUnit } from '../../types/types'\nimport { getDefaultInsertLocation } from '../../utils'\n\nexport interface TextDeleteOptions {\n  at?: Location\n  distance?: number\n  unit?: TextUnit\n  reverse?: boolean\n  hanging?: boolean\n  voids?: boolean\n}\n\nexport interface TextInsertFragmentOptions {\n  at?: Location\n  hanging?: boolean\n  voids?: boolean\n  batchDirty?: boolean\n}\n\nexport interface TextInsertTextOptions {\n  at?: Location\n  voids?: boolean\n}\n\nexport interface TextTransforms {\n  /**\n   * Delete content in the editor.\n   */\n  delete: (editor: Editor, options?: TextDeleteOptions) => void\n\n  /**\n   * Insert a fragment in the editor\n   * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n   */\n  insertFragment: (\n    editor: Editor,\n    fragment: Node[],\n    options?: TextInsertFragmentOptions\n  ) => void\n\n  /**\n   * Insert a string of text in the editor\n   * at the specified location or (if not defined) the current selection or (if not defined) the end of the document.\n   */\n  insertText: (\n    editor: Editor,\n    text: string,\n    options?: TextInsertTextOptions\n  ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const TextTransforms: TextTransforms = {\n  delete(editor, options) {\n    editor.delete(options)\n  },\n  insertFragment(editor, fragment, options) {\n    editor.insertFragment(fragment, options)\n  },\n  insertText(\n    editor: Editor,\n    text: string,\n    options: TextInsertTextOptions = {}\n  ): void {\n    Editor.withoutNormalizing(editor, () => {\n      const { voids = false } = options\n      let { at = getDefaultInsertLocation(editor) } = options\n\n      if (Location.isPath(at)) {\n        at = Editor.range(editor, at)\n      }\n\n      if (Location.isRange(at)) {\n        if (Range.isCollapsed(at)) {\n          at = at.anchor\n        } else {\n          const end = Range.end(at)\n          if (!voids && Editor.void(editor, { at: end })) {\n            return\n          }\n          const start = Range.start(at)\n          const startRef = Editor.pointRef(editor, start)\n          const endRef = Editor.pointRef(editor, end)\n          Transforms.delete(editor, { at, voids })\n          const startPoint = startRef.unref()\n          const endPoint = endRef.unref()\n\n          at = startPoint || endPoint!\n          Transforms.setSelection(editor, { anchor: at, focus: at })\n        }\n      }\n\n      if (\n        (!voids && Editor.void(editor, { at })) ||\n        Editor.elementReadOnly(editor, { at })\n      ) {\n        return\n      }\n\n      const { path, offset } = at\n      if (text.length > 0)\n        editor.apply({ type: 'insert_text', path, offset, text })\n    })\n  },\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/index.ts",
    "content": "export * from './insert-nodes'\nexport * from './lift-nodes'\nexport * from './merge-nodes'\nexport * from './move-nodes'\nexport * from './remove-nodes'\nexport * from './set-nodes'\nexport * from './split-nodes'\nexport * from './unset-nodes'\nexport * from './unwrap-nodes'\nexport * from './wrap-nodes'\n"
  },
  {
    "path": "packages/slate/src/transforms-node/insert-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Node } from '../interfaces/node'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Path } from '../interfaces/path'\nimport { getDefaultInsertLocation } from '../utils'\nimport { batchDirtyPaths } from '../core/batch-dirty-paths'\nimport { BaseInsertNodeOperation, Location } from '../interfaces'\nimport { updateDirtyPaths } from '../core/update-dirty-paths'\n\nexport const insertNodes: NodeTransforms['insertNodes'] = (\n  editor,\n  nodes,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    const {\n      hanging = false,\n      voids = false,\n      mode = 'lowest',\n      batchDirty = true,\n    } = options\n    let { at, match, select } = options\n\n    if (Node.isNode(nodes)) {\n      nodes = [nodes]\n    }\n\n    if (nodes.length === 0) {\n      return\n    }\n\n    const [node] = nodes\n\n    if (!at) {\n      at = getDefaultInsertLocation(editor)\n      if (select !== false) {\n        select = true\n      }\n    }\n\n    if (select == null) {\n      select = false\n    }\n\n    if (Location.isRange(at)) {\n      if (!hanging) {\n        at = Editor.unhangRange(editor, at, { voids })\n      }\n\n      if (Range.isCollapsed(at)) {\n        at = at.anchor\n      } else {\n        const [, end] = Range.edges(at)\n        const pointRef = Editor.pointRef(editor, end)\n        Transforms.delete(editor, { at })\n        at = pointRef.unref()!\n      }\n    }\n\n    if (Location.isPoint(at)) {\n      if (match == null) {\n        if (Node.isText(node)) {\n          match = n => Node.isText(n)\n        } else if (editor.isInline(node)) {\n          match = n => Node.isText(n) || Editor.isInline(editor, n)\n        } else {\n          match = n => Node.isElement(n) && Editor.isBlock(editor, n)\n        }\n      }\n\n      const [entry] = Editor.nodes(editor, {\n        at: at.path,\n        match,\n        mode,\n        voids,\n      })\n\n      if (entry) {\n        const [, matchPath] = entry\n        const pathRef = Editor.pathRef(editor, matchPath)\n        const isAtEnd = Editor.isEnd(editor, at, matchPath)\n        Transforms.splitNodes(editor, { at, match, mode, voids })\n        const path = pathRef.unref()!\n        at = isAtEnd ? Path.next(path) : path\n      } else {\n        return\n      }\n    }\n\n    const parentPath = Path.parent(at)\n    let index = at[at.length - 1]\n\n    if (!voids && Editor.void(editor, { at: parentPath })) {\n      return\n    }\n\n    if (batchDirty) {\n      // PERF: batch update dirty paths\n      // batched ops used to transform existing dirty paths\n      const batchedOps: BaseInsertNodeOperation[] = []\n      const newDirtyPaths: Path[] = Path.levels(parentPath)\n      batchDirtyPaths(\n        editor,\n        () => {\n          for (const node of nodes as Node[]) {\n            const path = parentPath.concat(index)\n            index++\n\n            const op: BaseInsertNodeOperation = {\n              type: 'insert_node',\n              path,\n              node,\n            }\n            editor.apply(op)\n            at = Path.next(at as Path)\n\n            batchedOps.push(op)\n            if (Node.isText(node)) {\n              newDirtyPaths.push(path)\n            } else {\n              newDirtyPaths.push(\n                ...Array.from(Node.nodes(node), ([, p]) => path.concat(p))\n              )\n            }\n          }\n        },\n        () => {\n          updateDirtyPaths(editor, newDirtyPaths, p => {\n            let newPath: Path | null = p\n            for (const op of batchedOps) {\n              if (Path.operationCanTransformPath(op)) {\n                newPath = Path.transform(newPath, op)\n                if (!newPath) {\n                  return null\n                }\n              }\n            }\n            return newPath\n          })\n        }\n      )\n    } else {\n      for (const node of nodes as Node[]) {\n        const path = parentPath.concat(index)\n        index++\n\n        editor.apply({ type: 'insert_node', path, node })\n        at = Path.next(at as Path)\n      }\n    }\n\n    at = Path.previous(at)\n\n    if (select) {\n      const point = Editor.end(editor, at)\n\n      if (point) {\n        Transforms.select(editor, point)\n      }\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/lift-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Ancestor, Node, NodeEntry } from '../interfaces/node'\nimport { Transforms } from '../interfaces/transforms'\nimport { Location } from '../interfaces'\n\nexport const liftNodes: NodeTransforms['liftNodes'] = (\n  editor,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    const { at = editor.selection, mode = 'lowest', voids = false } = options\n    let { match } = options\n\n    if (!at) {\n      return\n    }\n\n    if (match == null) {\n      match = Location.isPath(at)\n        ? matchPath(editor, at)\n        : n => Node.isElement(n) && Editor.isBlock(editor, n)\n    }\n\n    const matches = Editor.nodes(editor, { at, match, mode, voids })\n    const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n\n    for (const pathRef of pathRefs) {\n      const path = pathRef.unref()!\n\n      if (path.length < 2) {\n        throw new Error(\n          `Cannot lift node at a path [${path}] because it has a depth of less than \\`2\\`.`\n        )\n      }\n\n      const parentNodeEntry = Editor.node(editor, Path.parent(path))\n      const [parent, parentPath] = parentNodeEntry as NodeEntry<Ancestor>\n      const index = path[path.length - 1]\n      const { length } = parent.children\n\n      if (length === 1) {\n        const toPath = Path.next(parentPath)\n        Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n        Transforms.removeNodes(editor, { at: parentPath, voids })\n      } else if (index === 0) {\n        Transforms.moveNodes(editor, { at: path, to: parentPath, voids })\n      } else if (index === length - 1) {\n        const toPath = Path.next(parentPath)\n        Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n      } else {\n        const splitPath = Path.next(path)\n        const toPath = Path.next(parentPath)\n        Transforms.splitNodes(editor, { at: splitPath, voids })\n        Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n      }\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/merge-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Text } from '../interfaces/text'\nimport { Scrubber } from '../interfaces/scrubber'\nimport { Node } from '../interfaces/node'\nimport { Location } from '../interfaces'\n\nconst hasSingleChildNest = (editor: Editor, node: Node): boolean => {\n  return (\n    node !== editor &&\n    (Node.isText(node) ||\n      Editor.isVoid(editor, node) ||\n      (node.children.length === 1 &&\n        hasSingleChildNest(editor, node.children[0])))\n  )\n}\n\nexport const mergeNodes: NodeTransforms['mergeNodes'] = (\n  editor,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    let { match, at = editor.selection } = options\n    const { hanging = false, voids = false, mode = 'lowest' } = options\n\n    if (!at) {\n      return\n    }\n\n    if (match == null) {\n      if (Location.isPath(at)) {\n        const [parent] = Editor.parent(editor, at)\n        match = n => parent.children.includes(n)\n      } else {\n        match = n => Node.isElement(n) && Editor.isBlock(editor, n)\n      }\n    }\n\n    if (!hanging && Location.isRange(at)) {\n      at = Editor.unhangRange(editor, at, { voids })\n    }\n\n    if (Location.isRange(at)) {\n      if (Range.isCollapsed(at)) {\n        at = at.anchor\n      } else {\n        const [, end] = Range.edges(at)\n        const pointRef = Editor.pointRef(editor, end)\n        Transforms.delete(editor, { at })\n        at = pointRef.unref()!\n\n        if (options.at == null) {\n          Transforms.select(editor, at)\n        }\n      }\n    }\n\n    const [current] = Editor.nodes(editor, { at, match, voids, mode })\n    const prev = Editor.previous(editor, { at, match, voids, mode })\n\n    if (!current || !prev) {\n      return\n    }\n\n    const [node, path] = current\n    const [prevNode, prevPath] = prev\n\n    if (path.length === 0 || prevPath.length === 0) {\n      return\n    }\n\n    const newPath = Path.next(prevPath)\n    const commonPath = Path.common(path, prevPath)\n    const isPreviousSibling = Path.isSibling(path, prevPath)\n    const levels = Array.from(Editor.levels(editor, { at: path }), ([n]) => n)\n      .slice(commonPath.length)\n      .slice(0, -1)\n\n    // Determine if the merge will leave an ancestor of the path empty as a\n    // result, in which case we'll want to remove it after merging.\n    const emptyAncestor = Editor.above(editor, {\n      at: path,\n      mode: 'highest',\n      match: n => levels.includes(n) && hasSingleChildNest(editor, n),\n    })\n\n    const emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1])\n    let properties\n    let position\n\n    // Ensure that the nodes are equivalent, and figure out what the position\n    // and extra properties of the merge will be.\n    if (Node.isText(node) && Node.isText(prevNode)) {\n      const { text, ...rest } = node\n      position = prevNode.text.length\n      properties = rest as Partial<Text>\n    } else if (Node.isElement(node) && Node.isElement(prevNode)) {\n      const { children, ...rest } = node\n      position = prevNode.children.length\n      properties = rest as Partial<Element>\n    } else {\n      throw new Error(\n        `Cannot merge the node at path [${path}] with the previous sibling because it is not the same kind: ${Scrubber.stringify(\n          node\n        )} ${Scrubber.stringify(prevNode)}`\n      )\n    }\n\n    // If the node isn't already the next sibling of the previous node, move\n    // it so that it is before merging.\n    if (!isPreviousSibling) {\n      Transforms.moveNodes(editor, { at: path, to: newPath, voids })\n    }\n\n    // If there was going to be an empty ancestor of the node that was merged,\n    // we remove it from the tree.\n    if (emptyRef) {\n      Transforms.removeNodes(editor, { at: emptyRef.current!, voids })\n    }\n\n    if (Editor.shouldMergeNodesRemovePrevNode(editor, prev, current)) {\n      Transforms.removeNodes(editor, { at: prevPath, voids })\n    } else {\n      editor.apply({\n        type: 'merge_node',\n        path: newPath,\n        position,\n        properties,\n      })\n    }\n\n    if (emptyRef) {\n      emptyRef.unref()\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/move-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Location, Node } from '../interfaces'\n\nexport const moveNodes: NodeTransforms['moveNodes'] = (editor, options) => {\n  Editor.withoutNormalizing(editor, () => {\n    const {\n      to,\n      at = editor.selection,\n      mode = 'lowest',\n      voids = false,\n    } = options\n    let { match } = options\n\n    if (!at) {\n      return\n    }\n\n    if (match == null) {\n      match = Location.isPath(at)\n        ? matchPath(editor, at)\n        : n => Node.isElement(n) && Editor.isBlock(editor, n)\n    }\n\n    const toRef = Editor.pathRef(editor, to)\n    const targets = Editor.nodes(editor, { at, match, mode, voids })\n    const pathRefs = Array.from(targets, ([, p]) => Editor.pathRef(editor, p))\n\n    for (const pathRef of pathRefs) {\n      const path = pathRef.unref()!\n      const newPath = toRef.current!\n\n      if (path.length !== 0) {\n        editor.apply({ type: 'move_node', path, newPath })\n      }\n\n      if (\n        toRef.current &&\n        Path.isSibling(newPath, path) &&\n        Path.isAfter(newPath, path)\n      ) {\n        // When performing a sibling move to a later index, the path at the destination is shifted\n        // to before the insertion point instead of after. To ensure our group of nodes are inserted\n        // in the correct order we increment toRef to account for that\n        toRef.current = Path.next(toRef.current)\n      }\n    }\n\n    toRef.unref()\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/remove-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { matchPath } from '../utils/match-path'\nimport { Location, Node } from '../interfaces'\n\nexport const removeNodes: NodeTransforms['removeNodes'] = (\n  editor,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    const { hanging = false, voids = false, mode = 'lowest' } = options\n    let { at = editor.selection, match } = options\n\n    if (!at) {\n      return\n    }\n\n    if (match == null) {\n      match = Location.isPath(at)\n        ? matchPath(editor, at)\n        : n => Node.isElement(n) && Editor.isBlock(editor, n)\n    }\n\n    if (!hanging && Location.isRange(at)) {\n      at = Editor.unhangRange(editor, at, { voids })\n    }\n\n    const depths = Editor.nodes(editor, { at, match, mode, voids })\n    const pathRefs = Array.from(depths, ([, p]) => Editor.pathRef(editor, p))\n\n    for (const pathRef of pathRefs) {\n      const path = pathRef.unref()!\n\n      if (path) {\n        const [node] = Editor.node(editor, path)\n        editor.apply({ type: 'remove_node', path, node })\n      }\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/set-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { matchPath } from '../utils/match-path'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node } from '../interfaces/node'\nimport { Location } from '../interfaces'\n\nexport const setNodes: NodeTransforms['setNodes'] = (\n  editor,\n  props: Partial<Node>,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    let { match, at = editor.selection, compare, merge } = options\n    const {\n      hanging = false,\n      mode = 'lowest',\n      split = false,\n      voids = false,\n    } = options\n\n    if (!at) {\n      return\n    }\n\n    if (match == null) {\n      match = Location.isPath(at)\n        ? matchPath(editor, at)\n        : n => Node.isElement(n) && Editor.isBlock(editor, n)\n    }\n\n    if (!hanging && Location.isRange(at)) {\n      at = Editor.unhangRange(editor, at, { voids })\n    }\n\n    if (split && Location.isRange(at)) {\n      if (\n        Range.isCollapsed(at) &&\n        Editor.leaf(editor, at.anchor)[0].text.length > 0\n      ) {\n        // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n        // set that won't get normalized away\n        return\n      }\n      const rangeRef = Editor.rangeRef(editor, at, { affinity: 'inward' })\n      const [start, end] = Range.edges(at)\n      const splitMode = mode === 'lowest' ? 'lowest' : 'highest'\n      const endAtEndOfNode = Editor.isEnd(editor, end, end.path)\n      Transforms.splitNodes(editor, {\n        at: end,\n        match,\n        mode: splitMode,\n        voids,\n        always: !endAtEndOfNode,\n      })\n      const startAtStartOfNode = Editor.isStart(editor, start, start.path)\n      Transforms.splitNodes(editor, {\n        at: start,\n        match,\n        mode: splitMode,\n        voids,\n        always: !startAtStartOfNode,\n      })\n      at = rangeRef.unref()!\n\n      if (options.at == null) {\n        Transforms.select(editor, at)\n      }\n    }\n\n    if (!compare) {\n      compare = (prop, nodeProp) => prop !== nodeProp\n    }\n\n    for (const [node, path] of Editor.nodes(editor, {\n      at,\n      match,\n      mode,\n      voids,\n    })) {\n      const properties: Partial<Node> = {}\n      // FIXME: is this correct?\n      const newProperties: Partial<Node> & { [key: string]: unknown } = {}\n\n      // You can't set properties on the editor node.\n      if (path.length === 0) {\n        continue\n      }\n\n      let hasChanges = false\n\n      for (const k in props) {\n        if (k === 'children' || k === 'text') {\n          continue\n        }\n\n        if (compare(props[<keyof Node>k], node[<keyof Node>k])) {\n          hasChanges = true\n          // Omit new properties from the old properties list\n          if (node.hasOwnProperty(k))\n            properties[<keyof Node>k] = node[<keyof Node>k]\n          // Omit properties that have been removed from the new properties list\n          if (merge) {\n            if (props[<keyof Node>k] != null)\n              newProperties[<keyof Node>k] = merge(\n                node[<keyof Node>k],\n                props[<keyof Node>k]\n              )\n          } else {\n            if (props[<keyof Node>k] != null)\n              newProperties[<keyof Node>k] = props[<keyof Node>k]\n          }\n        }\n      }\n\n      if (hasChanges) {\n        editor.apply({\n          type: 'set_node',\n          path,\n          properties,\n          newProperties,\n        })\n      }\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/split-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { PointRef } from '../interfaces/point-ref'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node } from '../interfaces/node'\nimport { Point } from '../interfaces/point'\nimport { Location } from '../interfaces'\n\n/**\n * Convert a range into a point by deleting it's content.\n */\nconst deleteRange = (editor: Editor, range: Range): Point | null => {\n  if (Range.isCollapsed(range)) {\n    return range.anchor\n  } else {\n    const [, end] = Range.edges(range)\n    const pointRef = Editor.pointRef(editor, end)\n    Transforms.delete(editor, { at: range })\n    return pointRef.unref()\n  }\n}\n\nexport const splitNodes: NodeTransforms['splitNodes'] = (\n  editor,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    const { mode = 'lowest', voids = false } = options\n    let { match, at = editor.selection, height = 0, always = false } = options\n\n    if (!at) return\n\n    if (match == null) {\n      match = n => Node.isElement(n) && Editor.isBlock(editor, n)\n    }\n\n    if (Location.isRange(at)) {\n      at = deleteRange(editor, at)\n      if (!at) return\n    }\n\n    // If the target is a path, the default height-skipping and position\n    // counters need to account for us potentially splitting at a non-leaf.\n    if (Location.isPath(at)) {\n      const path = at\n      const point = Editor.point(editor, path)\n      const [parent] = Editor.parent(editor, path)\n      match = n => n === parent\n      height = point.path.length - path.length + 1\n      at = point\n      always = true\n    }\n\n    const beforeRef = Editor.pointRef(editor, at, {\n      affinity: 'backward',\n    })\n    let afterRef: PointRef | undefined\n    try {\n      const [highest] = Editor.nodes(editor, { at, match, mode, voids })\n\n      if (!highest) {\n        return\n      }\n\n      const voidMatch = Editor.void(editor, { at, mode: 'highest' })\n      const nudge = 0\n\n      if (!voids && voidMatch) {\n        const [voidNode, voidPath] = voidMatch\n\n        if (editor.isInline(voidNode)) {\n          let after = Editor.after(editor, voidPath)\n\n          if (!after) {\n            const text = { text: '' }\n            const afterPath = Path.next(voidPath)\n            Transforms.insertNodes(editor, text, { at: afterPath, voids })\n            after = Editor.point(editor, afterPath)!\n          }\n\n          at = after\n          always = true\n        }\n\n        const siblingHeight = at.path.length - voidPath.length\n        height = siblingHeight + 1\n        always = true\n      }\n\n      afterRef = Editor.pointRef(editor, at)\n      const depth = at.path.length - height\n      const [, highestPath] = highest\n      const lowestPath = at.path.slice(0, depth)\n      let position = height === 0 ? at.offset : at.path[depth] + nudge\n\n      for (const [node, path] of Editor.levels(editor, {\n        at: lowestPath,\n        reverse: true,\n        voids,\n      })) {\n        let split = false\n\n        if (\n          path.length < highestPath.length ||\n          path.length === 0 ||\n          (!voids && Node.isElement(node) && Editor.isVoid(editor, node))\n        ) {\n          break\n        }\n\n        const point = beforeRef.current!\n        const isEnd = Editor.isEnd(editor, point, path)\n\n        if (always || !beforeRef || !Editor.isEdge(editor, point, path)) {\n          split = true\n          const properties = Node.extractProps(node)\n          editor.apply({\n            type: 'split_node',\n            path,\n            position,\n            properties,\n          })\n        }\n\n        position = path[path.length - 1] + (split || isEnd ? 1 : 0)\n      }\n\n      if (options.at == null) {\n        const point = afterRef.current || Editor.end(editor, [])\n        Transforms.select(editor, point)\n      }\n    } finally {\n      beforeRef.unref()\n      afterRef?.unref()\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/unset-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const unsetNodes: NodeTransforms['unsetNodes'] = (\n  editor,\n  props,\n  options = {}\n) => {\n  if (!Array.isArray(props)) {\n    props = [props]\n  }\n\n  const obj: any = {}\n\n  for (const key of props) {\n    obj[key] = null\n  }\n\n  Transforms.setNodes(editor, obj, options)\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/unwrap-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { matchPath } from '../utils/match-path'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Location, Node } from '../interfaces'\n\nexport const unwrapNodes: NodeTransforms['unwrapNodes'] = (\n  editor,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    const { mode = 'lowest', split = false, voids = false } = options\n    let { at = editor.selection, match } = options\n\n    if (!at) {\n      return\n    }\n\n    if (match == null) {\n      match = Location.isPath(at)\n        ? matchPath(editor, at)\n        : n => Node.isElement(n) && Editor.isBlock(editor, n)\n    }\n\n    if (Location.isPath(at)) {\n      at = Editor.range(editor, at)\n    }\n\n    const rangeRef = Location.isRange(at) ? Editor.rangeRef(editor, at) : null\n    const matches = Editor.nodes(editor, { at, match, mode, voids })\n    const pathRefs = Array.from(\n      matches,\n      ([, p]) => Editor.pathRef(editor, p)\n      // unwrapNode will call liftNode which does not support splitting the node when nested.\n      // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n      // that wrap target node. So we reverse the order.\n    ).reverse()\n\n    for (const pathRef of pathRefs) {\n      const path = pathRef.unref()!\n      const [node] = Editor.node(editor, path)\n      let range = Editor.range(editor, path)\n\n      if (split && rangeRef) {\n        range = Range.intersection(rangeRef.current!, range)!\n      }\n\n      Transforms.liftNodes(editor, {\n        at: range,\n        match: n => !Node.isText(node) && node.children.includes(n),\n        voids,\n      })\n    }\n\n    if (rangeRef) {\n      rangeRef.unref()\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-node/wrap-nodes.ts",
    "content": "import { NodeTransforms } from '../interfaces/transforms/node'\nimport { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { matchPath } from '../utils/match-path'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\nimport { Location, Node, Point } from '../interfaces'\n\nexport const wrapNodes: NodeTransforms['wrapNodes'] = (\n  editor,\n  element,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    const { mode = 'lowest', split = false, voids = false } = options\n    let { match, at = editor.selection } = options\n\n    if (!at) {\n      return\n    }\n\n    if (match == null) {\n      if (Location.isPath(at)) {\n        match = matchPath(editor, at)\n      } else if (editor.isInline(element)) {\n        match = n =>\n          (Node.isElement(n) && Editor.isInline(editor, n)) || Node.isText(n)\n      } else {\n        match = n => Node.isElement(n) && Editor.isBlock(editor, n)\n      }\n    }\n\n    if (split && Location.isRange(at)) {\n      const [start, end] = Range.edges(at)\n\n      const rangeRef = Editor.rangeRef(editor, at, {\n        affinity: 'inward',\n      })\n\n      // Always split if we're in the middle of a block, to ensure that text\n      // node boundaries are handled correctly.\n      const isAtBlockEdge = (point: Point) => {\n        const blockAbove = Editor.above(editor, {\n          at: point,\n          match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n        })\n        return blockAbove && Editor.isEdge(editor, point, blockAbove[1])\n      }\n\n      Transforms.splitNodes(editor, {\n        at: end,\n        match,\n        voids,\n        always: !isAtBlockEdge(end),\n      })\n\n      Transforms.splitNodes(editor, {\n        at: start,\n        match,\n        voids,\n        always: !isAtBlockEdge(start),\n      })\n\n      at = rangeRef.unref()!\n\n      if (options.at == null) {\n        Transforms.select(editor, at)\n      }\n    }\n\n    const roots = Array.from(\n      Editor.nodes(editor, {\n        at,\n        match: editor.isInline(element)\n          ? n => Node.isElement(n) && Editor.isBlock(editor, n)\n          : n => Node.isEditor(n),\n        mode: 'lowest',\n        voids,\n      })\n    )\n\n    for (const [, rootPath] of roots) {\n      const a = Location.isRange(at)\n        ? Range.intersection(at, Editor.range(editor, rootPath))\n        : at\n\n      if (!a) {\n        continue\n      }\n\n      const matches = Array.from(\n        Editor.nodes(editor, { at: a, match, mode, voids })\n      )\n\n      if (matches.length > 0) {\n        const [first] = matches\n        const last = matches[matches.length - 1]\n        const [, firstPath] = first\n        const [, lastPath] = last\n\n        if (firstPath.length === 0 && lastPath.length === 0) {\n          // if there's no matching parent - usually means the node is an editor - don't do anything\n          continue\n        }\n\n        const commonPath = Path.equals(firstPath, lastPath)\n          ? Path.parent(firstPath)\n          : Path.common(firstPath, lastPath)\n\n        const range = Editor.range(editor, firstPath, lastPath)\n        const commonNodeEntry = Editor.node(editor, commonPath)\n        const [commonNode] = commonNodeEntry\n        const depth = commonPath.length + 1\n        const wrapperPath = Path.next(lastPath.slice(0, depth))\n        const wrapper = { ...element, children: [] }\n        Transforms.insertNodes(editor, wrapper, { at: wrapperPath, voids })\n\n        Transforms.moveNodes(editor, {\n          at: range,\n          match: n =>\n            !Node.isText(commonNode) && commonNode.children.includes(n),\n          to: wrapperPath.concat(0),\n          voids,\n        })\n      }\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-selection/collapse.ts",
    "content": "import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Transforms } from '../interfaces/transforms'\nimport { Range } from '../interfaces/range'\n\nexport const collapse: SelectionTransforms['collapse'] = (\n  editor,\n  options = {}\n) => {\n  const { edge = 'anchor' } = options\n  const { selection } = editor\n\n  if (!selection) {\n    return\n  } else if (edge === 'anchor') {\n    Transforms.select(editor, selection.anchor)\n  } else if (edge === 'focus') {\n    Transforms.select(editor, selection.focus)\n  } else if (edge === 'start') {\n    const [start] = Range.edges(selection)\n    Transforms.select(editor, start)\n  } else if (edge === 'end') {\n    const [, end] = Range.edges(selection)\n    Transforms.select(editor, end)\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-selection/deselect.ts",
    "content": "import { SelectionTransforms } from '../interfaces/transforms/selection'\n\nexport const deselect: SelectionTransforms['deselect'] = editor => {\n  const { selection } = editor\n\n  if (selection) {\n    editor.apply({\n      type: 'set_selection',\n      properties: selection,\n      newProperties: null,\n    })\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-selection/index.ts",
    "content": "export * from './collapse'\nexport * from './deselect'\nexport * from './move'\nexport * from './select'\nexport * from './set-point'\nexport * from './set-selection'\n"
  },
  {
    "path": "packages/slate/src/transforms-selection/move.ts",
    "content": "import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const move: SelectionTransforms['move'] = (editor, options = {}) => {\n  const { selection } = editor\n  const { distance = 1, unit = 'character', reverse = false } = options\n  let { edge = null } = options\n\n  if (!selection) {\n    return\n  }\n\n  if (edge === 'start') {\n    edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n  }\n\n  if (edge === 'end') {\n    edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n  }\n\n  const { anchor, focus } = selection\n  const opts = { distance, unit }\n  const props: Partial<Range> = {}\n\n  if (edge == null || edge === 'anchor') {\n    const point = reverse\n      ? Editor.before(editor, anchor, opts)\n      : Editor.after(editor, anchor, opts)\n\n    if (point) {\n      props.anchor = point\n    }\n  }\n\n  if (edge == null || edge === 'focus') {\n    const point = reverse\n      ? Editor.before(editor, focus, opts)\n      : Editor.after(editor, focus, opts)\n\n    if (point) {\n      props.focus = point\n    }\n  }\n\n  Transforms.setSelection(editor, props)\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-selection/select.ts",
    "content": "import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Editor } from '../interfaces/editor'\nimport { Transforms } from '../interfaces/transforms'\nimport { Scrubber } from '../interfaces/scrubber'\nimport { Location } from '../interfaces'\n\nexport const select: SelectionTransforms['select'] = (editor, target) => {\n  const { selection } = editor\n  target = Editor.range(editor, target)\n\n  if (selection) {\n    Transforms.setSelection(editor, target)\n    return\n  }\n\n  if (!Location.isRange(target)) {\n    throw new Error(\n      `When setting the selection and the current selection is \\`null\\` you must provide at least an \\`anchor\\` and \\`focus\\`, but you passed: ${Scrubber.stringify(\n        target\n      )}`\n    )\n  }\n\n  editor.apply({\n    type: 'set_selection',\n    properties: selection,\n    newProperties: target,\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-selection/set-point.ts",
    "content": "import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Transforms } from '../interfaces/transforms'\n\nexport const setPoint: SelectionTransforms['setPoint'] = (\n  editor,\n  props,\n  options = {}\n) => {\n  const { selection } = editor\n  let { edge = 'both' } = options\n\n  if (!selection) {\n    return\n  }\n\n  if (edge === 'start') {\n    edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n  }\n\n  if (edge === 'end') {\n    edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n  }\n\n  const { anchor, focus } = selection\n  const point = edge === 'anchor' ? anchor : focus\n\n  Transforms.setSelection(editor, {\n    [edge === 'anchor' ? 'anchor' : 'focus']: { ...point, ...props },\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-selection/set-selection.ts",
    "content": "import { SelectionTransforms } from '../interfaces/transforms/selection'\nimport { Range } from '../interfaces/range'\nimport { Point } from '../interfaces/point'\n\nexport const setSelection: SelectionTransforms['setSelection'] = (\n  editor,\n  props\n) => {\n  const { selection } = editor\n  const oldProps: Partial<Range> | null = {}\n  const newProps: Partial<Range> = {}\n\n  if (!selection) {\n    return\n  }\n\n  for (const k in props) {\n    if (\n      (k === 'anchor' &&\n        props.anchor != null &&\n        !Point.equals(props.anchor, selection.anchor)) ||\n      (k === 'focus' &&\n        props.focus != null &&\n        !Point.equals(props.focus, selection.focus)) ||\n      (k !== 'anchor' &&\n        k !== 'focus' &&\n        props[<keyof Range>k] !== selection[<keyof Range>k])\n    ) {\n      oldProps[<keyof Range>k] = selection[<keyof Range>k]\n      newProps[<keyof Range>k] = props[<keyof Range>k]\n    }\n  }\n\n  if (Object.keys(oldProps).length > 0) {\n    editor.apply({\n      type: 'set_selection',\n      properties: oldProps,\n      newProperties: newProps,\n    })\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-text/delete-text.ts",
    "content": "import { TextTransforms } from '../interfaces/transforms/text'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Point } from '../interfaces/point'\nimport { Path } from '../interfaces/path'\nimport { Transforms } from '../interfaces/transforms'\nimport { Node, NodeEntry } from '../interfaces/node'\nimport { Location } from '../interfaces'\n\nexport const deleteText: TextTransforms['delete'] = (editor, options = {}) => {\n  Editor.withoutNormalizing(editor, () => {\n    const {\n      reverse = false,\n      unit = 'character',\n      distance = 1,\n      voids = false,\n    } = options\n    let { at = editor.selection, hanging = false } = options\n\n    if (!at) {\n      return\n    }\n\n    let isCollapsed = false\n    if (Location.isRange(at) && Range.isCollapsed(at)) {\n      isCollapsed = true\n      at = at.anchor\n    }\n\n    if (Location.isPoint(at)) {\n      const furthestVoid = Editor.void(editor, { at, mode: 'highest' })\n\n      if (!voids && furthestVoid) {\n        const [, voidPath] = furthestVoid\n        at = voidPath\n      } else {\n        const opts = { unit, distance }\n        const target = reverse\n          ? Editor.before(editor, at, opts) || Editor.start(editor, [])\n          : Editor.after(editor, at, opts) || Editor.end(editor, [])\n        at = { anchor: at, focus: target }\n        hanging = true\n      }\n    }\n\n    if (Location.isPath(at)) {\n      Transforms.removeNodes(editor, { at, voids })\n      return\n    }\n\n    if (Range.isCollapsed(at)) {\n      return\n    }\n\n    if (!hanging) {\n      const [, end] = Range.edges(at)\n      const endOfDoc = Editor.end(editor, [])\n\n      if (!Point.equals(end, endOfDoc)) {\n        at = Editor.unhangRange(editor, at, { voids })\n      }\n    }\n\n    let [start, end] = Range.edges(at)\n    const startBlock = Editor.above(editor, {\n      match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      at: start,\n      voids,\n    })\n    const endBlock = Editor.above(editor, {\n      match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      at: end,\n      voids,\n    })\n    const isAcrossBlocks =\n      startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1])\n    const isSingleText = Path.equals(start.path, end.path)\n    const startNonEditable = voids\n      ? null\n      : Editor.void(editor, { at: start, mode: 'highest' }) ??\n        Editor.elementReadOnly(editor, { at: start, mode: 'highest' })\n    const endNonEditable = voids\n      ? null\n      : Editor.void(editor, { at: end, mode: 'highest' }) ??\n        Editor.elementReadOnly(editor, { at: end, mode: 'highest' })\n\n    // If the start or end points are inside an inline void, nudge them out.\n    if (startNonEditable) {\n      const before = Editor.before(editor, start)\n\n      if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n        start = before\n      }\n    }\n\n    if (endNonEditable) {\n      const after = Editor.after(editor, end)\n\n      if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n        end = after\n      }\n    }\n\n    // Get the highest nodes that are completely inside the range, as well as\n    // the start and end nodes.\n    const matches: NodeEntry[] = []\n    let lastPath: Path | undefined\n\n    for (const entry of Editor.nodes(editor, { at, voids })) {\n      const [node, path] = entry\n\n      if (lastPath && Path.compare(path, lastPath) === 0) {\n        continue\n      }\n\n      if (\n        (!voids &&\n          Node.isElement(node) &&\n          (Editor.isVoid(editor, node) ||\n            Editor.isElementReadOnly(editor, node))) ||\n        (!Path.isCommon(path, start.path) && !Path.isCommon(path, end.path))\n      ) {\n        matches.push(entry)\n        lastPath = path\n      }\n    }\n\n    const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n    const startRef = Editor.pointRef(editor, start)\n    const endRef = Editor.pointRef(editor, end)\n\n    let removedText = ''\n\n    if (!isSingleText && !startNonEditable) {\n      const point = startRef.current!\n      const [node] = Editor.leaf(editor, point)\n      const { path } = point\n      const { offset } = start\n      const text = node.text.slice(offset)\n      if (text.length > 0) {\n        editor.apply({ type: 'remove_text', path, offset, text })\n        removedText = text\n      }\n    }\n\n    pathRefs\n      .reverse()\n      .map(r => r.unref())\n      .filter((r): r is Path => r !== null)\n      .forEach(p => Transforms.removeNodes(editor, { at: p, voids }))\n\n    if (!endNonEditable) {\n      const point = endRef.current!\n      const [node] = Editor.leaf(editor, point)\n      const { path } = point\n      const offset = isSingleText ? start.offset : 0\n      const text = node.text.slice(offset, end.offset)\n      if (text.length > 0) {\n        editor.apply({ type: 'remove_text', path, offset, text })\n        removedText = text\n      }\n    }\n\n    if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n      Transforms.mergeNodes(editor, {\n        at: endRef.current,\n        hanging: true,\n        voids,\n      })\n    }\n\n    // For certain scripts, deleting N character(s) backward should delete\n    // N code point(s) instead of an entire grapheme cluster.\n    // Therefore, the remaining code points should be inserted back.\n    // Bengali: \\u0980-\\u09FF\n    // Thai: \\u0E00-\\u0E7F\n    // Burmese (Myanmar): \\u1000-\\u109F\n    // Hindi (Devanagari): \\u0900-\\u097F\n    // Khmer: \\u1780-\\u17FF\n    // Malayalam: \\u0D00-\\u0D7F\n    // Oriya: \\u0B00-\\u0B7F\n    // Punjabi (Gurmukhi): \\u0A00-\\u0A7F\n    // Tamil: \\u0B80-\\u0BFF\n    // Telugu: \\u0C00-\\u0C7F\n    if (\n      isCollapsed &&\n      reverse &&\n      unit === 'character' &&\n      removedText.length > 1 &&\n      removedText.match(\n        /[\\u0980-\\u09FF\\u0E00-\\u0E7F\\u1000-\\u109F\\u0900-\\u097F\\u1780-\\u17FF\\u0D00-\\u0D7F\\u0B00-\\u0B7F\\u0A00-\\u0A7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F]+/\n      )\n    ) {\n      Transforms.insertText(\n        editor,\n        removedText.slice(0, removedText.length - distance)\n      )\n    }\n\n    const startUnref = startRef.unref()\n    const endUnref = endRef.unref()\n    const point = reverse ? startUnref || endUnref : endUnref || startUnref\n\n    if (options.at == null && point) {\n      Transforms.select(editor, point)\n    }\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/transforms-text/index.ts",
    "content": "export * from './delete-text'\nexport * from './insert-fragment'\n"
  },
  {
    "path": "packages/slate/src/transforms-text/insert-fragment.ts",
    "content": "import { Transforms } from '../interfaces/transforms'\nimport { Editor } from '../interfaces/editor'\nimport { Range } from '../interfaces/range'\nimport { Path } from '../interfaces/path'\nimport { Element } from '../interfaces/element'\nimport { Descendant, Node, NodeEntry } from '../interfaces/node'\nimport { TextTransforms } from '../interfaces/transforms/text'\nimport { getDefaultInsertLocation } from '../utils'\nimport { Location } from '../interfaces'\n\nexport const insertFragment: TextTransforms['insertFragment'] = (\n  editor,\n  fragment,\n  options = {}\n) => {\n  Editor.withoutNormalizing(editor, () => {\n    const { hanging = false, voids = false } = options\n    let { at = getDefaultInsertLocation(editor), batchDirty = true } = options\n\n    if (!fragment.length) {\n      return\n    }\n\n    if (Location.isRange(at)) {\n      if (!hanging) {\n        at = Editor.unhangRange(editor, at, { voids })\n      }\n\n      if (Range.isCollapsed(at)) {\n        at = at.anchor\n      } else {\n        const [, end] = Range.edges(at)\n\n        if (!voids && Editor.void(editor, { at: end })) {\n          return\n        }\n\n        const pointRef = Editor.pointRef(editor, end)\n        Transforms.delete(editor, { at })\n        at = pointRef.unref()!\n      }\n    } else if (Location.isPath(at)) {\n      at = Editor.start(editor, at)\n    }\n\n    if (!voids && Editor.void(editor, { at })) {\n      return\n    }\n\n    // If the insert point is at the edge of an inline node, move it outside\n    // instead since it will need to be split otherwise.\n    const inlineElementMatch = Editor.above(editor, {\n      at,\n      match: n => Node.isElement(n) && Editor.isInline(editor, n),\n      mode: 'highest',\n      voids,\n    })\n\n    if (inlineElementMatch) {\n      const [, inlinePath] = inlineElementMatch\n\n      if (Editor.isEnd(editor, at, inlinePath)) {\n        const after = Editor.after(editor, inlinePath)!\n        at = after\n      } else if (Editor.isStart(editor, at, inlinePath)) {\n        const before = Editor.before(editor, inlinePath)!\n        at = before\n      }\n    }\n\n    const blockMatch = Editor.above(editor, {\n      match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      at,\n      voids,\n    })!\n    const [, blockPath] = blockMatch\n    const isBlockStart = Editor.isStart(editor, at, blockPath)\n    const isBlockEnd = Editor.isEnd(editor, at, blockPath)\n    const isBlockEmpty = isBlockStart && isBlockEnd\n    const [, firstLeafPath] = Node.first({ children: fragment }, [])\n    const [, lastLeafPath] = Node.last({ children: fragment }, [])\n\n    // For each node in the fragment, determine what level of wrapping should\n    // be kept. At minimum, all text nodes will be inserted, but if\n    // `shouldInsert` returns true for some ancestor of a particular text node,\n    // then the entire ancestor will be inserted rather than inserting the text\n    // nodes individually.\n    const shouldInsert = ([n, p]: NodeEntry) => {\n      const isRoot = p.length === 0\n      if (isRoot) {\n        return false\n      }\n\n      // If the destination block is empty, insert all top-level blocks of the\n      // fragment.\n      if (isBlockEmpty) {\n        return true\n      }\n\n      // Unless we're at the start of the destination block, unwrap any\n      // non-void blocks that contain the first leaf node in the fragment.\n      if (\n        !isBlockStart &&\n        Path.isAncestor(p, firstLeafPath) &&\n        Node.isElement(n) &&\n        !editor.isVoid(n) &&\n        !editor.isInline(n)\n      ) {\n        return false\n      }\n\n      // Unless we're at the end of the destination block, unwrap any non-void\n      // blocks that contain the last leaf node in the fragment.\n      if (\n        !isBlockEnd &&\n        Path.isAncestor(p, lastLeafPath) &&\n        Node.isElement(n) &&\n        !editor.isVoid(n) &&\n        !editor.isInline(n)\n      ) {\n        return false\n      }\n\n      // Always insert void nodes, inline elements and text nodes.\n      return true\n    }\n\n    // Whether the current node is in the first block of the fragment.\n    let starting = true\n\n    // Inline nodes in the first block of the fragment, to be merged with the\n    // destination block.\n    const starts: Descendant[] = []\n\n    // Blocks in the middle of the fragment.\n    const middles: Element[] = []\n\n    // Inline nodes in the last block of the fragment, to be merged with the\n    // destination block. If the fragment contains only one block, this will be\n    // empty.\n    const ends: Descendant[] = []\n\n    for (const entry of Node.nodes(\n      { children: fragment },\n      { pass: shouldInsert }\n    )) {\n      const [node, path] = entry\n\n      // If we encounter a block that does not contain the first leaf, we're no\n      // longer in the first block of the fragment.\n      if (\n        starting &&\n        Node.isElement(node) &&\n        !editor.isInline(node) &&\n        !Path.isAncestor(path, firstLeafPath)\n      ) {\n        starting = false\n      }\n\n      if (shouldInsert(entry)) {\n        if (Node.isElement(node) && !editor.isInline(node)) {\n          starting = false\n          middles.push(node)\n        } else if (starting) {\n          starts.push(node)\n        } else {\n          ends.push(node)\n        }\n      }\n    }\n\n    const [inlineMatch] = Editor.nodes(editor, {\n      at,\n      match: n => Node.isText(n) || Editor.isInline(editor, n),\n      mode: 'highest',\n      voids,\n    })!\n\n    const [, inlinePath] = inlineMatch\n    const isInlineStart = Editor.isStart(editor, at, inlinePath)\n    const isInlineEnd = Editor.isEnd(editor, at, inlinePath)\n\n    const middleRef = Editor.pathRef(\n      editor,\n      isBlockEnd && !ends.length ? Path.next(blockPath) : blockPath\n    )\n\n    const endRef = Editor.pathRef(\n      editor,\n      isInlineEnd ? Path.next(inlinePath) : inlinePath\n    )\n\n    // If the fragment contains inlines in multiple distinct blocks, split the\n    // destination block.\n    const splitBlock = ends.length > 0\n\n    Transforms.splitNodes(editor, {\n      at,\n      match: n =>\n        splitBlock\n          ? Node.isElement(n) && Editor.isBlock(editor, n)\n          : Node.isText(n) || Editor.isInline(editor, n),\n      mode: splitBlock ? 'lowest' : 'highest',\n      always:\n        splitBlock &&\n        (!isBlockStart || starts.length > 0) &&\n        (!isBlockEnd || ends.length > 0),\n      voids,\n    })\n\n    const startRef = Editor.pathRef(\n      editor,\n      !isInlineStart || (isInlineStart && isInlineEnd)\n        ? Path.next(inlinePath)\n        : inlinePath\n    )\n\n    Transforms.insertNodes(editor, starts, {\n      at: startRef.current!,\n      match: n => Node.isText(n) || Editor.isInline(editor, n),\n      mode: 'highest',\n      voids,\n      batchDirty,\n    })\n\n    if (isBlockEmpty && !starts.length && middles.length && !ends.length) {\n      Transforms.delete(editor, { at: blockPath, voids })\n    }\n\n    Transforms.insertNodes(editor, middles, {\n      at: middleRef.current!,\n      match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      mode: 'lowest',\n      voids,\n      batchDirty,\n    })\n\n    Transforms.insertNodes(editor, ends, {\n      at: endRef.current!,\n      match: n => Node.isText(n) || Editor.isInline(editor, n),\n      mode: 'highest',\n      voids,\n      batchDirty,\n    })\n\n    if (!options.at) {\n      let path\n\n      if (ends.length > 0 && endRef.current) {\n        path = Path.previous(endRef.current)\n      } else if (middles.length > 0 && middleRef.current) {\n        path = Path.previous(middleRef.current)\n      } else if (startRef.current) {\n        path = Path.previous(startRef.current)\n      }\n\n      if (path) {\n        const end = Editor.end(editor, path)\n        Transforms.select(editor, end)\n      }\n    }\n\n    startRef.unref()\n    middleRef.unref()\n    endRef.unref()\n  })\n}\n"
  },
  {
    "path": "packages/slate/src/types/custom-types.ts",
    "content": "/**\n * Extendable Custom Types Interface\n */\n\ntype ExtendableTypes =\n  | 'Editor'\n  | 'Element'\n  | 'Text'\n  | 'Selection'\n  | 'Range'\n  | 'Point'\n  | 'Operation'\n  | 'InsertNodeOperation'\n  | 'InsertTextOperation'\n  | 'MergeNodeOperation'\n  | 'MoveNodeOperation'\n  | 'RemoveNodeOperation'\n  | 'RemoveTextOperation'\n  | 'SetNodeOperation'\n  | 'SetSelectionOperation'\n  | 'SplitNodeOperation'\n\nexport interface CustomTypes {\n  [key: string]: unknown\n}\n\nexport type ExtendedType<\n  K extends ExtendableTypes,\n  B,\n> = unknown extends CustomTypes[K] ? B : CustomTypes[K]\n"
  },
  {
    "path": "packages/slate/src/types/index.ts",
    "content": "export * from './custom-types'\nexport * from './types'\n"
  },
  {
    "path": "packages/slate/src/types/types.ts",
    "content": "export type LeafEdge = 'start' | 'end'\n\nexport type MaximizeMode = RangeMode | 'all'\n\nexport type MoveUnit = 'offset' | 'character' | 'word' | 'line'\n\nexport type RangeDirection = TextDirection | 'outward' | 'inward'\n\nexport type RangeMode = 'highest' | 'lowest'\n\nexport type SelectionEdge = 'anchor' | 'focus' | 'start' | 'end'\n\nexport type SelectionMode = 'all' | 'highest' | 'lowest'\n\nexport type TextDirection = 'forward' | 'backward'\n\nexport type TextUnit = 'character' | 'word' | 'line' | 'block'\n\nexport type TextUnitAdjustment = TextUnit | 'offset'\n"
  },
  {
    "path": "packages/slate/src/utils/deep-equal.ts",
    "content": "import { isObject } from './is-object'\n\n/*\n  Custom deep equal comparison for Slate nodes.\n\n  We don't need general purpose deep equality;\n  Slate only supports plain values, Arrays, and nested objects.\n  Complex values nested inside Arrays are not supported.\n\n  Slate objects are designed to be serialised, so\n  missing keys are deliberately normalised to undefined.\n */\nexport const isDeepEqual = (\n  node: Record<string, any>,\n  another: Record<string, any>\n): boolean => {\n  for (const key in node) {\n    const a = node[key]\n    const b = another[key]\n    if (Array.isArray(a) && Array.isArray(b)) {\n      if (a.length !== b.length) return false\n      for (let i = 0; i < a.length; i++) {\n        if (a[i] !== b[i]) return false\n      }\n    } else if (isObject(a) && isObject(b)) {\n      if (!isDeepEqual(a, b)) return false\n    } else if (a !== b) {\n      return false\n    }\n  }\n\n  /*\n    Deep object equality is only necessary in one direction; in the reverse direction\n    we are only looking for keys that are missing.\n    As above, undefined keys are normalised to missing.\n  */\n\n  for (const key in another) {\n    if (node[key] === undefined && another[key] !== undefined) {\n      return false\n    }\n  }\n\n  return true\n}\n"
  },
  {
    "path": "packages/slate/src/utils/get-default-insert-location.ts",
    "content": "import { Editor, Location } from '../interfaces'\n\n/**\n * Get the default location to insert content into the editor.\n * By default, use the selection as the target location. But if there is\n * no selection, insert at the end of the document since that is such a\n * common use case when inserting from a non-selected state.\n */\nexport const getDefaultInsertLocation = (editor: Editor): Location => {\n  if (editor.selection) {\n    return editor.selection\n  } else if (editor.children.length > 0) {\n    return Editor.end(editor, [])\n  } else {\n    return [0]\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/utils/index.ts",
    "content": "export * from './deep-equal'\nexport * from './get-default-insert-location'\nexport * from './is-object'\nexport * from './match-path'\nexport * from './string'\nexport * from './types'\nexport * from './weak-maps'\n"
  },
  {
    "path": "packages/slate/src/utils/is-object.ts",
    "content": "export const isObject = (value: any) =>\n  typeof value === 'object' && value !== null\n"
  },
  {
    "path": "packages/slate/src/utils/match-path.ts",
    "content": "import { Editor } from '../interfaces/editor'\nimport { Path } from '../interfaces/path'\nimport { Node } from '../interfaces/node'\n\nexport const matchPath = (\n  editor: Editor,\n  path: Path\n): ((node: Node) => boolean) => {\n  const [node] = Editor.node(editor, path)\n  return n => n === node\n}\n"
  },
  {
    "path": "packages/slate/src/utils/modify.ts",
    "content": "import {\n  Ancestor,\n  Descendant,\n  Element,\n  Node,\n  Path,\n  Scrubber,\n  Text,\n} from '../interfaces'\n\nexport const insertChildren = <T>(\n  xs: T[],\n  index: number,\n  ...newValues: T[]\n) => [...xs.slice(0, index), ...newValues, ...xs.slice(index)]\n\nexport const replaceChildren = <T>(\n  xs: T[],\n  index: number,\n  removeCount: number,\n  ...newValues: T[]\n) => [...xs.slice(0, index), ...newValues, ...xs.slice(index + removeCount)]\n\nexport const removeChildren = replaceChildren\n\n/**\n * Replace a descendant with a new node, replacing all ancestors\n */\nexport const modifyDescendant = <N extends Descendant>(\n  root: Ancestor,\n  path: Path,\n  f: (node: N) => N\n) => {\n  if (path.length === 0) {\n    throw new Error('Cannot modify the editor')\n  }\n\n  const node = Node.get(root, path) as N\n  const slicedPath = path.slice()\n  let modifiedNode: Node = f(node)\n\n  while (slicedPath.length > 1) {\n    const index = slicedPath.pop()!\n    const ancestorNode = Node.get(root, slicedPath) as Ancestor\n\n    modifiedNode = {\n      ...ancestorNode,\n      children: replaceChildren(ancestorNode.children, index, 1, modifiedNode),\n    }\n  }\n\n  const index = slicedPath.pop()!\n  root.children = replaceChildren(root.children, index, 1, modifiedNode)\n}\n\n/**\n * Replace the children of a node, replacing all ancestors\n */\nexport const modifyChildren = (\n  root: Ancestor,\n  path: Path,\n  f: (children: Descendant[]) => Descendant[]\n) => {\n  if (path.length === 0) {\n    root.children = f(root.children)\n  } else {\n    modifyDescendant<Element>(root, path, node => {\n      if (Node.isText(node)) {\n        throw new Error(\n          `Cannot get the element at path [${path}] because it refers to a leaf node: ${Scrubber.stringify(\n            node\n          )}`\n        )\n      }\n\n      return { ...node, children: f(node.children) }\n    })\n  }\n}\n\n/**\n * Replace a leaf, replacing all ancestors\n */\nexport const modifyLeaf = (\n  root: Ancestor,\n  path: Path,\n  f: (leaf: Text) => Text\n) =>\n  modifyDescendant(root, path, node => {\n    if (!Node.isText(node)) {\n      throw new Error(\n        `Cannot get the leaf node at path [${path}] because it refers to a non-leaf node: ${Scrubber.stringify(\n          node\n        )}`\n      )\n    }\n\n    return f(node)\n  })\n"
  },
  {
    "path": "packages/slate/src/utils/string.ts",
    "content": "// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n\n/**\n * Get the distance to the end of the first character in a string of text.\n */\n\nexport const getCharacterDistance = (str: string, isRTL = false): number => {\n  const isLTR = !isRTL\n  const codepoints = isRTL ? codepointsIteratorRTL(str) : str\n\n  let left: CodepointType = CodepointType.None\n  let right: CodepointType = CodepointType.None\n  let distance = 0\n  // Evaluation of these conditions are deferred.\n  let gb11: boolean | null = null // Is GB11 applicable?\n  let gb12Or13: boolean | null = null // Is GB12 or GB13 applicable?\n\n  for (const char of codepoints) {\n    const code = char.codePointAt(0)\n    if (!code) break\n\n    const type = getCodepointType(char, code)\n    ;[left, right] = isLTR ? [right, type] : [type, left]\n\n    if (\n      intersects(left, CodepointType.ZWJ) &&\n      intersects(right, CodepointType.ExtPict)\n    ) {\n      if (isLTR) {\n        gb11 = endsWithEmojiZWJ(str.substring(0, distance))\n      } else {\n        gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance))\n      }\n      if (!gb11) break\n    }\n\n    if (\n      intersects(left, CodepointType.RI) &&\n      intersects(right, CodepointType.RI)\n    ) {\n      if (gb12Or13 !== null) {\n        gb12Or13 = !gb12Or13\n      } else {\n        if (isLTR) {\n          gb12Or13 = true\n        } else {\n          gb12Or13 = endsWithOddNumberOfRIs(\n            str.substring(0, str.length - distance)\n          )\n        }\n      }\n      if (!gb12Or13) break\n    }\n\n    if (\n      left !== CodepointType.None &&\n      right !== CodepointType.None &&\n      isBoundaryPair(left, right)\n    ) {\n      break\n    }\n\n    distance += char.length\n  }\n\n  return distance || 1\n}\n\nconst SPACE = /\\s/\nconst PUNCTUATION =\n  /[\\u002B\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\nconst CHAMELEON = /['\\u2018\\u2019]/\n\n/**\n * Get the distance to the end of the first word in a string of text.\n */\n\nexport const getWordDistance = (text: string, isRTL = false): number => {\n  let dist = 0\n  let started = false\n\n  while (text.length > 0) {\n    const charDist = getCharacterDistance(text, isRTL)\n    const [char, remaining] = splitByCharacterDistance(text, charDist, isRTL)\n\n    if (isWordCharacter(char, remaining, isRTL)) {\n      started = true\n      dist += charDist\n    } else if (!started) {\n      dist += charDist\n    } else {\n      break\n    }\n\n    text = remaining\n  }\n\n  return dist\n}\n\n/**\n * Split a string in two parts at a given distance starting from the end when\n * `isRTL` is set to `true`.\n */\n\nexport const splitByCharacterDistance = (\n  str: string,\n  dist: number,\n  isRTL?: boolean\n): [string, string] => {\n  if (isRTL) {\n    const at = str.length - dist\n    return [str.slice(at, str.length), str.slice(0, at)]\n  }\n\n  return [str.slice(0, dist), str.slice(dist)]\n}\n\n/**\n * Check if a character is a word character. The `remaining` argument is used\n * because sometimes you must read subsequent characters to truly determine it.\n */\n\nconst isWordCharacter = (\n  char: string,\n  remaining: string,\n  isRTL = false\n): boolean => {\n  if (SPACE.test(char)) {\n    return false\n  }\n\n  // Chameleons count as word characters as long as they're in a word, so\n  // recurse to see if the next one is a word character or not.\n  if (CHAMELEON.test(char)) {\n    const charDist = getCharacterDistance(remaining, isRTL)\n    const [nextChar, nextRemaining] = splitByCharacterDistance(\n      remaining,\n      charDist,\n      isRTL\n    )\n\n    if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n      return true\n    }\n  }\n\n  if (PUNCTUATION.test(char)) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Iterate on codepoints from right to left.\n */\n\nexport const codepointsIteratorRTL = function* (str: string) {\n  const end = str.length - 1\n\n  for (let i = 0; i < str.length; i++) {\n    const char1 = str.charAt(end - i)\n\n    if (isLowSurrogate(char1.charCodeAt(0))) {\n      const char2 = str.charAt(end - i - 1)\n      if (isHighSurrogate(char2.charCodeAt(0))) {\n        yield char2 + char1\n\n        i++\n        continue\n      }\n    }\n\n    yield char1\n  }\n}\n\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isHighSurrogate = (charCode: number) => {\n  return charCode >= 0xd800 && charCode <= 0xdbff\n}\n\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isLowSurrogate = (charCode: number) => {\n  return charCode >= 0xdc00 && charCode <= 0xdfff\n}\n\nenum CodepointType {\n  None = 0,\n  Extend = 1 << 0,\n  ZWJ = 1 << 1,\n  RI = 1 << 2,\n  Prepend = 1 << 3,\n  SpacingMark = 1 << 4,\n  L = 1 << 5,\n  V = 1 << 6,\n  T = 1 << 7,\n  LV = 1 << 8,\n  LVT = 1 << 9,\n  ExtPict = 1 << 10,\n  Any = 1 << 11,\n}\n\nconst reExtend = /^[\\p{Gr_Ext}\\p{EMod}]$/u\nconst rePrepend =\n  /^[\\u0600-\\u0605\\u06DD\\u070F\\u0890-\\u0891\\u08E2\\u0D4E\\u{110BD}\\u{110CD}\\u{111C2}-\\u{111C3}\\u{1193F}\\u{11941}\\u{11A3A}\\u{11A84}-\\u{11A89}\\u{11D46}]$/u\nconst reSpacingMark =\n  /^[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0982-\\u0983\\u09BF-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0B02-\\u0B03\\u0B40\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82-\\u0C83\\u0CBE\\u0CC0-\\u0CC1\\u0CC3-\\u0CC4\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0D02-\\u0D03\\u0D3F-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82-\\u0D83\\u0DD0-\\u0DD1\\u0DD8-\\u0DDE\\u0DF2-\\u0DF3\\u0E33\\u0EB3\\u0F3E-\\u0F3F\\u0F7F\\u1031\\u103B-\\u103C\\u1056-\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\\u1933-\\u1938\\u1A19-\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B82\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1C24-\\u1C2B\\u1C34-\\u1C35\\u1CE1\\u1CF7\\uA823-\\uA824\\uA827\\uA880-\\uA881\\uA8B4-\\uA8C3\\uA952-\\uA953\\uA983\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BE-\\uA9C0\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA4D\\uAAEB\\uAAEE-\\uAAEF\\uAAF5\\uABE3-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEC\\u{11000}\\u{11002}\\u{11082}\\u{110B0}-\\u{110B2}\\u{110B7}-\\u{110B8}\\u{1112C}\\u{11145}-\\u{11146}\\u{11182}\\u{111B3}-\\u{111B5}\\u{111BF}-\\u{111C0}\\u{111CE}\\u{1122C}-\\u{1122E}\\u{11232}-\\u{11233}\\u{11235}\\u{112E0}-\\u{112E2}\\u{11302}-\\u{11303}\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}-\\u{11348}\\u{1134B}-\\u{1134D}\\u{11362}-\\u{11363}\\u{11435}-\\u{11437}\\u{11440}-\\u{11441}\\u{11445}\\u{114B1}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BC}\\u{114BE}\\u{114C1}\\u{115B0}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{11630}-\\u{11632}\\u{1163B}-\\u{1163C}\\u{1163E}\\u{116AC}\\u{116AE}-\\u{116AF}\\u{116B6}\\u{11726}\\u{1182C}-\\u{1182E}\\u{11838}\\u{11931}-\\u{11935}\\u{11937}-\\u{11938}\\u{1193D}\\u{11940}\\u{11942}\\u{119D1}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E4}\\u{11A39}\\u{11A57}-\\u{11A58}\\u{11A97}\\u{11C2F}\\u{11C3E}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D8A}-\\u{11D8E}\\u{11D93}-\\u{11D94}\\u{11D96}\\u{11EF5}-\\u{11EF6}\\u{16F51}-\\u{16F87}\\u{16FF0}-\\u{16FF1}\\u{1D166}\\u{1D16D}]$/u\nconst reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/u\nconst reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/u\nconst reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/u\nconst reLV =\n  /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/u\nconst reLVT =\n  /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/u\nconst reExtPict = /^\\p{ExtPict}$/u\n\nconst getCodepointType = (char: string, code: number): CodepointType => {\n  let type = CodepointType.Any\n  if (char.search(reExtend) !== -1) {\n    type |= CodepointType.Extend\n  }\n  if (code === 0x200d) {\n    type |= CodepointType.ZWJ\n  }\n  if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n    type |= CodepointType.RI\n  }\n  if (char.search(rePrepend) !== -1) {\n    type |= CodepointType.Prepend\n  }\n  if (char.search(reSpacingMark) !== -1) {\n    type |= CodepointType.SpacingMark\n  }\n  if (char.search(reL) !== -1) {\n    type |= CodepointType.L\n  }\n  if (char.search(reV) !== -1) {\n    type |= CodepointType.V\n  }\n  if (char.search(reT) !== -1) {\n    type |= CodepointType.T\n  }\n  if (char.search(reLV) !== -1) {\n    type |= CodepointType.LV\n  }\n  if (char.search(reLVT) !== -1) {\n    type |= CodepointType.LVT\n  }\n  if (char.search(reExtPict) !== -1) {\n    type |= CodepointType.ExtPict\n  }\n\n  return type\n}\n\nfunction intersects(x: CodepointType, y: CodepointType) {\n  return (x & y) !== 0\n}\n\nconst NonBoundaryPairs: [CodepointType, CodepointType][] = [\n  // GB6\n  [\n    CodepointType.L,\n    CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT,\n  ],\n  // GB7\n  [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n  // GB8\n  [CodepointType.LVT | CodepointType.T, CodepointType.T],\n  // GB9\n  [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n  // GB9a\n  [CodepointType.Any, CodepointType.SpacingMark],\n  // GB9b\n  [CodepointType.Prepend, CodepointType.Any],\n  // GB11\n  [CodepointType.ZWJ, CodepointType.ExtPict],\n  // GB12 and GB13\n  [CodepointType.RI, CodepointType.RI],\n]\n\nfunction isBoundaryPair(left: CodepointType, right: CodepointType) {\n  return (\n    NonBoundaryPairs.findIndex(\n      r => intersects(left, r[0]) && intersects(right, r[1])\n    ) === -1\n  )\n}\n\nconst endingEmojiZWJ = /\\p{ExtPict}[\\p{Gr_Ext}\\p{EMod}]*\\u200D$/u\nconst endsWithEmojiZWJ = (str: string): boolean => {\n  return str.search(endingEmojiZWJ) !== -1\n}\n\nconst endingRIs = /\\p{RI}+$/gu\nconst endsWithOddNumberOfRIs = (str: string): boolean => {\n  const match = str.match(endingRIs)\n  if (match === null) {\n    return false\n  } else {\n    // A RI is represented by a surrogate pair.\n    const numRIs = match[0].length / 2\n    return numRIs % 2 === 1\n  }\n}\n"
  },
  {
    "path": "packages/slate/src/utils/types.ts",
    "content": "import { Editor } from '../interfaces/editor'\n\nexport type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R\n  ? (...args: P) => R\n  : never\n\nexport type OmitFirstArgWithSpecificGeneric<F, TSpecific> = F extends (\n  x: any,\n  ...args: infer P\n) => infer R\n  ? (...args: P) => R\n  : never\n\nexport type WithEditorFirstArg<T extends (...args: any) => any> = (\n  editor: Editor,\n  ...args: Parameters<T>\n) => ReturnType<T>\n"
  },
  {
    "path": "packages/slate/src/utils/weak-maps.ts",
    "content": "import { Editor, Path, PathRef, PointRef, RangeRef } from '..'\n\nexport const DIRTY_PATHS: WeakMap<Editor, Path[]> = new WeakMap()\nexport const DIRTY_PATH_KEYS: WeakMap<Editor, Set<string>> = new WeakMap()\nexport const FLUSHING: WeakMap<Editor, boolean> = new WeakMap()\nexport const NORMALIZING: WeakMap<Editor, boolean> = new WeakMap()\nexport const PATH_REFS: WeakMap<Editor, Set<PathRef>> = new WeakMap()\nexport const POINT_REFS: WeakMap<Editor, Set<PointRef>> = new WeakMap()\nexport const RANGE_REFS: WeakMap<Editor, Set<RangeRef>> = new WeakMap()\n"
  },
  {
    "path": "packages/slate/test/index.js",
    "content": "import assert from 'assert'\nimport { cloneDeep } from 'lodash'\nimport { fixtures } from '../../../support/fixtures'\nimport { Editor, createEditor } from 'slate'\nimport { createHyperscript } from 'slate-hyperscript'\n\ndescribe('slate', () => {\n  fixtures(__dirname, 'interfaces', ({ module }) => {\n    let { input, test, output } = module\n    if (Editor.isEditor(input)) {\n      input = withTest(input)\n    }\n    const result = test(input)\n    assert.deepEqual(result, output)\n  })\n  fixtures(__dirname, 'operations', ({ module }) => {\n    const { input, operations, output } = module\n    const editor = withTest(input)\n    Editor.withoutNormalizing(editor, () => {\n      for (const op of operations) {\n        editor.apply(op)\n      }\n    })\n    assert.deepEqual(editor.children, output.children)\n    assert.deepEqual(editor.selection, output.selection)\n  })\n  fixtures(__dirname, 'normalization', ({ module }) => {\n    const { input, output, withFallbackElement } = module\n    const editor = withTest(input)\n    if (withFallbackElement) {\n      const { normalizeNode } = editor\n      editor.normalizeNode = (entry, options) => {\n        normalizeNode(entry, { ...options, fallbackElement: () => ({}) })\n      }\n    }\n    Editor.normalize(editor, { force: true })\n    assert.deepEqual(editor.children, output.children)\n    assert.deepEqual(editor.selection, output.selection)\n  })\n  fixtures(__dirname, 'transforms', ({ module }) => {\n    const { input, run, output } = module\n    const editor = withTest(input)\n    run(editor)\n    assert.deepEqual(editor.children, output.children)\n    assert.deepEqual(editor.selection, output.selection)\n  })\n  fixtures(__dirname, 'utils/deep-equal', ({ module }) => {\n    let { input, test, output } = module\n    if (Editor.isEditor(input)) {\n      input = withTest(input)\n    }\n    const result = test(input)\n    assert.deepEqual(result, output)\n  })\n  // make sure with or without batchDirty, the normalize result is the same\n  const testBatchDirty = ({ module }) => {\n    const { input, run } = module\n\n    const input2 = createEditor()\n    input2.children = cloneDeep(input.children)\n    input2.selection = cloneDeep(input.selection)\n\n    const dirties1 = []\n    const dirties2 = []\n\n    const editor1 = withBatchTest(withTest(input), dirties1)\n    const editor2 = withBatchTest(withTest(input2), dirties2)\n\n    run(editor1, { batchDirty: true })\n    run(editor2, { batchDirty: false })\n\n    assert.equal(dirties1.join(' '), dirties2.join(' '))\n  }\n  fixtures(__dirname, 'transforms/insertNodes', ({ module }) => {\n    testBatchDirty({ module })\n  })\n  fixtures(__dirname, 'transforms/insertFragment', ({ module }) => {\n    testBatchDirty({ module })\n  })\n})\nconst withTest = editor => {\n  const { isInline, isVoid, isElementReadOnly, isSelectable } = editor\n  editor.isInline = element => {\n    return element.inline === true ? true : isInline(element)\n  }\n  editor.isVoid = element => {\n    return element.void === true ? true : isVoid(element)\n  }\n  editor.isElementReadOnly = element => {\n    return element.readOnly === true ? true : isElementReadOnly(element)\n  }\n  editor.isSelectable = element => {\n    return element.nonSelectable === true ? false : isSelectable(element)\n  }\n  return editor\n}\nconst withBatchTest = (editor, dirties) => {\n  const { normalizeNode } = editor\n  editor.normalizeNode = ([node, path]) => {\n    dirties.push(JSON.stringify(path))\n    normalizeNode([node, path])\n  }\n  return editor\n}\nexport const jsx = createHyperscript({\n  elements: {\n    block: {},\n    inline: { inline: true },\n  },\n})\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/boldText-false.tsx",
    "content": "import { Text } from 'slate'\nimport { isBoldText } from './type-guards'\n\nexport const input: Text = {\n  placeholder: 'heading',\n  bold: false,\n  italic: false,\n  text: 'mytext',\n}\n\nexport const test = isBoldText\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/boldText-true.tsx",
    "content": "// show that regular methods that are imported work as expected\nimport { Text } from 'slate'\nimport { isBoldText } from './type-guards'\n\nexport const input: Text = {\n  bold: true,\n  text: 'mytext',\n}\n\nexport const test = isBoldText\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/custom-types.ts",
    "content": "import {\n  BaseEditor,\n  BaseSelection,\n  BasePoint,\n  BaseRange,\n  Descendant,\n  Operation,\n} from 'slate'\n\nexport type HeadingElement = {\n  type: 'heading'\n  level: number\n  children: Descendant[]\n}\n\nexport type ListItemElement = {\n  type: 'list-item'\n  depth: number\n  children: Descendant[]\n}\n\nexport type CustomText = {\n  placeholder?: string\n  bold?: boolean\n  italic?: boolean\n  text: string\n}\n\nexport type CustomOperation = {\n  type: 'custom_op'\n  value: string\n}\n\nexport type ExtendedOperation = Operation | CustomOperation\n\nexport type CustomElement = HeadingElement | ListItemElement\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: BaseEditor\n    Element: CustomElement\n    Text: CustomText\n    Node: CustomElement | CustomText\n    Point: BasePoint\n    Range: BaseRange\n    Selection: BaseSelection\n    Operation: ExtendedOperation\n  }\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/customOperation-false.tsx",
    "content": "import { Operation } from 'slate'\nimport { isCustomOperation } from './type-guards'\n\nexport const input: Operation = {\n  type: 'insert_text',\n  path: [0, 0],\n  offset: 0,\n  text: 'text',\n}\n\nexport const test = isCustomOperation\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/customOperation-true.tsx",
    "content": "import { Operation } from 'slate'\nimport { isCustomOperation } from './type-guards'\n\nexport const input: Operation = {\n  type: 'custom_op',\n  value: 'some value',\n}\n\nexport const test = isCustomOperation\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/customText-false.tsx",
    "content": "import { Text } from 'slate'\nimport { isCustomText } from './type-guards'\n\nexport const input: Text = {\n  bold: true,\n  text: 'mytext',\n}\n\nexport const test = isCustomText\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/customText-true.tsx",
    "content": "import { Text } from 'slate'\nimport { isCustomText } from './type-guards'\n\nexport const input: Text = {\n  placeholder: 'mystring',\n  text: 'mytext',\n}\n\nexport const test = isCustomText\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/headingElement-false.tsx",
    "content": "import { Element } from 'slate'\nimport { isHeadingElement } from './type-guards'\n\nexport const input: Element = {\n  type: 'list-item',\n  depth: 5,\n  children: [],\n}\n\nexport const test = isHeadingElement\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/headingElement-true.tsx",
    "content": "import { Element } from 'slate'\nimport { isHeadingElement } from './type-guards'\n\nexport const input: Element = {\n  type: 'heading',\n  level: 5,\n  children: [],\n}\n\nexport const test = isHeadingElement\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/CustomTypes/type-guards.ts",
    "content": "import { Element, Text, Operation } from 'slate'\nimport { CustomText, CustomOperation, HeadingElement } from './custom-types'\n\nexport const isBoldText = (text: Text): text is CustomText =>\n  !!(text as CustomText).bold\n\nexport const isCustomText = (text: Text): text is CustomText =>\n  !!(text as CustomText).placeholder\n\nexport const isCustomOperation = (\n  op: Operation\n): Operation is CustomOperation => (op as CustomOperation).type === 'custom_op'\n\nexport const isHeadingElement = (element: Element): element is HeadingElement =>\n  element.type === 'heading'\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/above/block-highest.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.above(editor, {\n    at: [0, 0, 0],\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    mode: 'highest',\n  })\n}\nexport const output = [\n  <block>\n    <block>one</block>\n  </block>,\n  [0],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/above/block-lowest.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one </block>\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.above(editor, {\n    at: [0, 0, 0],\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    mode: 'lowest',\n  })\n}\n\nexport const output = [<block>one </block>, [0, 0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/above/inline.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.above(editor, {\n    at: [0, 1, 0],\n    match: n => Element.isElement(n) && Editor.isInline(editor, n),\n  })\n}\n\nexport const output = [<inline>two</inline>, [0, 1]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/above/point.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.above(editor, { at: { path: [0, 0, 0], offset: 1 } })\n}\n\nexport const output = [<block>one</block>, [0, 0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/above/potential-parent.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\n// `above` can never return the location passed into it, and shouldnt care if it exists, only if its parent exists.\n\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <block>one</block>\n        {/* path points here */}\n      </block>\n      <block>two</block>\n    </block>\n  </editor>\n)\n\nconst path = [0, 0, 1]\n\nexport const test = editor => {\n  return Editor.above(editor, {\n    at: path,\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n  })\n}\n\nexport const output = [\n  <block>\n    <block>one</block>\n  </block>,\n  [0, 0],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/above/range.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <block>one</block>\n      </block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nconst range = {\n  anchor: { offset: 0, path: [0, 0, 0, 0] },\n  focus: { offset: 0, path: [0, 1, 0] },\n}\nexport const test = editor => {\n  return Editor.above(editor, {\n    at: range,\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n  })\n}\nexport const output = [\n  <block>\n    <block>\n      <block>one</block>\n    </block>\n    <block>two</block>\n  </block>,\n  [0],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/end.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, [1, 0])\n}\n\nexport const output = undefined\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/non-selectable-block-last.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block nonSelectable>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, { path: [0, 0], offset: 3 })\n}\n\nexport const output = undefined\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/non-selectable-block.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block nonSelectable>two</block>\n    <block>three</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, { path: [0, 0], offset: 3 })\n}\n\nexport const output = { path: [2, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/non-selectable-inline-last.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\n// This is invalid due to the lack of a text node after the inline, but this\n// case can arise prior to normalization so it needs to be handled anyway.\nexport const input = (\n  <editor>\n    <block>\n      one<inline nonSelectable>two</inline>\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, { path: [0, 0], offset: 3 })\n}\n\nexport const output = undefined\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/non-selectable-inline-void.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline void nonSelectable>\n        <text />\n      </inline>\n      three\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, { path: [0, 0], offset: 3 })\n}\n\nexport const output = { path: [0, 2], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/non-selectable-inline.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline nonSelectable>two</inline>three\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, { path: [0, 0], offset: 3 })\n}\n\nexport const output = { path: [0, 2], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/path-void.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <text>one</text>\n      <text>two</text>\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, [0, 0], { voids: true })\n}\n\nexport const output = { path: [0, 1], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/path.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, [0, 0])\n}\n\nexport const output = { path: [1, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/point-void.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, { path: [0, 0], offset: 1 }, { voids: true })\n}\n\nexport const output = { path: [0, 0], offset: 2 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/point.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, { path: [0, 0], offset: 1 })\n}\n\nexport const output = { path: [0, 0], offset: 2 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/range-void.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n    <block void>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [1, 0], offset: 2 },\n    },\n    { voids: true }\n  )\n}\n\nexport const output = { path: [1, 0], offset: 3 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/after/range.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.after(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [1, 0], offset: 2 },\n  })\n}\n\nexport const output = { path: [1, 0], offset: 3 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/non-selectable-block-first.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block nonSelectable>two</block>\n    <block>three</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, { path: [1, 0], offset: 0 })\n}\n\nexport const output = undefined\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/non-selectable-block.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block nonSelectable>two</block>\n    <block>three</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, { path: [2, 0], offset: 0 })\n}\n\nexport const output = { path: [0, 0], offset: 3 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/non-selectable-inline-first.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\n// This is invalid due to the lack of a text node before the inline, but this\n// case can arise prior to normalization so it needs to be handled anyway.\nexport const input = (\n  <editor>\n    <block>\n      <inline nonSelectable>two</inline>three\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, { path: [0, 1], offset: 0 })\n}\n\nexport const output = undefined\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/non-selectable-inline.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline nonSelectable>two</inline>three\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, { path: [0, 2], offset: 0 })\n}\n\nexport const output = { path: [0, 0], offset: 3 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/path-void.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n    <block void>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, [1, 0], { voids: true })\n}\n\nexport const output = { path: [0, 0], offset: 3 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/path.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, [1, 0])\n}\n\nexport const output = { path: [0, 0], offset: 3 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/point-void.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, { path: [0, 0], offset: 1 }, { voids: true })\n}\n\nexport const output = { path: [0, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/point.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, { path: [0, 0], offset: 1 })\n}\n\nexport const output = { path: [0, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/range-void.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n    <block void>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [0, 1], offset: 2 },\n    },\n    { voids: true }\n  )\n}\n\nexport const output = { path: [0, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/range.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [0, 1], offset: 2 },\n  })\n}\n\nexport const output = { path: [0, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/before/start.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.before(editor, [0, 0])\n}\n\nexport const output = undefined\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/edges/path.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.edges(editor, [0])\n}\n\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/edges/point.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.edges(editor, { path: [0, 0], offset: 1 })\n}\n\nexport const output = [\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 1 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/edges/range.tsx",
    "content": "/** @jsx jsx */\n\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.edges(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [0, 0], offset: 3 },\n  })\n}\n\nexport const output = [\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/end/path.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.end(editor, [0])\n}\nexport const output = { path: [0, 0], offset: 3 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/end/point.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.end(editor, { path: [0, 0], offset: 1 })\n}\nexport const output = { path: [0, 0], offset: 1 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/end/range.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.end(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [0, 0], offset: 2 },\n  })\n}\nexport const output = { path: [0, 0], offset: 2 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasBlocks/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.hasBlocks(editor, block)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasBlocks/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.hasBlocks(editor, block)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasBlocks/inline-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two<inline>three</inline>four\n      </inline>\n      five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.hasBlocks(editor, inline)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasBlocks/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.hasBlocks(editor, block)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasInlines/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.hasInlines(editor, block)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasInlines/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.hasInlines(editor, block)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasInlines/inline-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two<inline>three</inline>four\n      </inline>\n      five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.hasInlines(editor, inline)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasInlines/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.hasInlines(editor, block)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasTexts/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.hasTexts(editor, block)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasTexts/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.hasTexts(editor, block)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasTexts/inline-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two<inline>three</inline>four\n      </inline>\n      five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.hasTexts(editor, inline)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/hasTexts/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.hasTexts(editor, inline)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isBlock/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Element.isElement(block) && Editor.isBlock(editor, block)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isBlock/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Element.isElement(inline) && Editor.isBlock(editor, inline)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEdge/path-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isEdge(editor, anchor, [0])\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEdge/path-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      on\n      <cursor />e\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isEdge(editor, anchor, [0])\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEdge/path-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isEdge(editor, anchor, [0])\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEmpty/block-blank.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.isEmpty(editor, block)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEmpty/block-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block />\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.isEmpty(editor, block)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEmpty/block-full.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.isEmpty(editor, block)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEmpty/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <text />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.isEmpty(editor, block)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEmpty/inline-blank.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        <text />\n      </inline>\n      three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.isEmpty(editor, inline)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEmpty/inline-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline />\n      three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.isEmpty(editor, inline)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEmpty/inline-full.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.isEmpty(editor, inline)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEmpty/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline void>\n        <text />\n      </inline>\n      three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.isEmpty(editor, inline)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEnd/path-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isEnd(editor, anchor, [0])\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEnd/path-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      on\n      <cursor />e\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isEnd(editor, anchor, [0])\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isEnd/path-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isEnd(editor, anchor, [0])\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isInline/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.isInline(editor, block)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isInline/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.isInline(editor, inline)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isStart/path-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isStart(editor, anchor, [0])\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isStart/path-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      on\n      <cursor />e\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isStart(editor, anchor, [0])\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isStart/path-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const { anchor } = editor.selection\n  return Editor.isStart(editor, anchor, [0])\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isVoid/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.isVoid(editor, block)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isVoid/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  const block = editor.children[0]\n  return Editor.isVoid(editor, block)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isVoid/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline void>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.isVoid(editor, inline)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/isVoid/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  const inline = editor.children[0].children[1]\n  return Editor.isVoid(editor, inline)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/levels/match.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element a>\n      <text a />\n    </element>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.levels(editor, {\n      at: [0, 0],\n      match: n => n.a,\n    })\n  )\n}\nexport const output = [\n  [\n    <element a>\n      <text a />\n    </element>,\n    [0],\n  ],\n  [<text a />, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/levels/reverse.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.levels(editor, {\n      at: [0, 0],\n      reverse: true,\n    })\n  )\n}\nexport const output = [\n  [<text />, [0, 0]],\n  [\n    <element>\n      <text />\n    </element>,\n    [0],\n  ],\n  [input, []],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/levels/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.levels(editor, { at: [0, 0] }))\n}\nexport const output = [\n  [input, []],\n  [\n    <element>\n      <text />\n    </element>,\n    [0],\n  ],\n  [<text />, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/levels/voids-false.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element void>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.levels(editor, { at: [0, 0] }))\n}\nexport const output = [\n  [input, []],\n  [\n    <element void>\n      <text />\n    </element>,\n    [0],\n  ],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/levels/voids-true.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element void>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.levels(editor, {\n      at: [0, 0],\n      voids: true,\n    })\n  )\n}\nexport const output = [\n  [input, []],\n  [\n    <element void>\n      <text />\n    </element>,\n    [0],\n  ],\n  [<text />, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/marks/firefox-double-click.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\n/**\n * This test verifies that when double clicking a marked word in Firefox,\n * Editor.marks for the resulting selection includes the marked word. Double\n * clicking a marked word in Firefox results in a selection that starts at the\n * end of the previous text node and ends at the end of the marked text node.\n */\n\nexport const input = (\n  <editor>\n    <block>\n      plain <anchor />\n      <text bold>\n        bold\n        <focus />\n      </text>\n      <text> plain</text>\n    </block>\n    <block>block two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.marks(editor)\n}\nexport const output = { bold: true }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/marks/focus-block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\n/**\n * Similar to firefox-double-click.tsx, when the selection is at the end of\n * the previous node's path, using Editor.marks retrieves the marks of that node.\n * However, when addMark is triggered, that node is not within the range for\n * adding marks,  thus failing to transfer the state correctly.\n */\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        block one\n        <focus />\n      </text>\n    </block>\n    <block>\n      <text bold>block two</text>\n    </block>\n    <block>\n      <text bold>\n        block three\n        <anchor />\n      </text>\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.marks(editor)\n}\n\nexport const output = { bold: true }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/marks/markable-void-collapsed.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>word</text>\n      <inline void markable>\n        <text bold />\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  editor.markableVoid = node => node.markable\n  return Editor.marks(editor)\n}\nexport const output = { bold: true }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/marks/markable-voids-mixed.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>word</text>\n      <inline void markable>\n        <anchor />\n        <text bold />\n      </inline>\n      <text bold>\n        <anchor />\n        bold\n      </text>\n      <inline void markable>\n        <text bold italic />\n      </inline>\n      <text bold italic>\n        bold italic\n        <focus />\n      </text>\n      <text />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  editor.markableVoid = node => node.markable\n  return Editor.marks(editor)\n}\nexport const output = { bold: true }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/marks/mixed-text.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      plain\n      <text bold>\n        <anchor />\n        bold\n      </text>\n      <text bold italic>\n        bold italic\n        <focus />\n      </text>\n    </block>\n    <block>block two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.marks(editor)\n}\nexport const output = { bold: true }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/marks/text-collapsed.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      plain\n      <text bold>\n        text that is\n        <cursor />\n        bold\n      </text>\n      <text bold italic>\n        bold italic\n      </text>\n    </block>\n    <block>block two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.marks(editor)\n}\nexport const output = { bold: true }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/next/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.next(editor, {\n    at: [0],\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n  })\n}\nexport const output = [<block>two</block>, [1]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/next/default.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.next(editor, { at: [0] })\n}\nexport const output = [<block>two</block>, [1]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/next/text.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.next(editor, { at: [0], match: Text.isText })\n}\nexport const output = [<text>two</text>, [1, 0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/node/path.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.node(editor, [0])\n}\nexport const output = [<block>one</block>, [0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/node/point.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.node(editor, { path: [0, 0], offset: 1 })\n}\nexport const output = [<text>one</text>, [0, 0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/node/range-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.node(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [1, 0], offset: 2 },\n    },\n    { edge: 'end' }\n  )\n}\nexport const output = [<text>two</text>, [1, 0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/node/range-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.node(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [1, 0], offset: 2 },\n    },\n    { edge: 'start' }\n  )\n}\nexport const output = [<text>one</text>, [0, 0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/node/range.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.node(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [1, 0], offset: 2 },\n  })\n}\nexport const output = [input, []]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/match-function/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    })\n  )\n}\nexport const output = [[<block>one</block>, [0]]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/match-function/editor.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>three</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: () => true,\n      mode: 'highest',\n    })\n  )\n}\nexport const output = [[input, []]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/match-function/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => Element.isElement(n) && Editor.isInline(editor, n),\n    })\n  )\n}\nexport const output = [[<inline>two</inline>, [0, 1]]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-all/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>\n      <block a>one</block>\n    </block>\n    <block a>\n      <block a>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, { at: [], match: n => n.a, mode: 'all' })\n  )\n}\nexport const output = [\n  [\n    <block a>\n      <block a>one</block>\n    </block>,\n    [0],\n  ],\n  [<block a>one</block>, [0, 0]],\n  [\n    <block a>\n      <block a>two</block>\n    </block>,\n    [1],\n  ],\n  [<block a>two</block>, [1, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-highest/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>\n      <block a>one</block>\n    </block>\n    <block a>\n      <block a>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, { at: [], match: n => n.a, mode: 'highest' })\n  )\n}\nexport const output = [\n  [\n    <block a>\n      <block a>one</block>\n    </block>,\n    [0],\n  ],\n  [\n    <block a>\n      <block a>two</block>\n    </block>,\n    [1],\n  ],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-lowest/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>\n      <block a>one</block>\n    </block>\n    <block a>\n      <block a>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, { at: [], match: n => n.a, mode: 'lowest' })\n  )\n}\nexport const output = [\n  [<block a>one</block>, [0, 0]],\n  [<block a>two</block>, [1, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-universal/all-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>\n      <block a>one</block>\n    </block>\n    <block a>\n      <block a>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => n.a === true,\n      mode: 'lowest',\n      universal: true,\n    })\n  )\n}\nexport const output = [\n  [<block a>one</block>, [0, 0]],\n  [<block a>two</block>, [1, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-universal/all.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>one</block>\n    <block a>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => n.a === true,\n      mode: 'lowest',\n      universal: true,\n    })\n  )\n}\nexport const output = [\n  [<block a>one</block>, [0]],\n  [<block a>two</block>, [1]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-universal/branch-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>\n      <block b>one</block>\n    </block>\n    <block b>\n      <block a>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => n.a === true,\n      mode: 'lowest',\n      universal: true,\n    })\n  )\n}\nexport const output = [\n  [\n    <block a>\n      <block b>one</block>\n    </block>,\n    [0],\n  ],\n  [<block a>two</block>, [1, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-universal/none-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>\n      <block a>one</block>\n    </block>\n    <block a>\n      <block a>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => n.b === true,\n      mode: 'lowest',\n      universal: true,\n    })\n  )\n}\nexport const output = []\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-universal/none.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>one</block>\n    <block a>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => n.b === true,\n      mode: 'lowest',\n      universal: true,\n    })\n  )\n}\nexport const output = []\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-universal/some-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>\n      <block a>one</block>\n    </block>\n    <block b>\n      <block b>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => n.a,\n      mode: 'lowest',\n      universal: true,\n    })\n  )\n}\nexport const output = []\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/mode-universal/some.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block a>one</block>\n    <block b>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => n.a,\n      mode: 'lowest',\n      universal: true,\n    })\n  )\n}\nexport const output = []\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/block-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [] }))\n}\nexport const output = [\n  [input, []],\n  [<block>one</block>, [0]],\n  [<text>one</text>, [0, 0]],\n  [<block>two</block>, [1]],\n  [<text>two</text>, [1, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [] }))\n}\nexport const output = [\n  [input, []],\n  [\n    <block>\n      <block>one</block>\n    </block>,\n    [0],\n  ],\n  [<block>one</block>, [0, 0]],\n  [<text>one</text>, [0, 0, 0]],\n  [\n    <block>\n      <block>two</block>\n    </block>,\n    [1],\n  ],\n  [<block>two</block>, [1, 0]],\n  [<text>two</text>, [1, 0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/block-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [], reverse: true }))\n}\nexport const output = [\n  [input, []],\n  [<block>two</block>, [1]],\n  [<text>two</text>, [1, 0]],\n  [<block>one</block>, [0]],\n  [<text>one</text>, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [] }))\n}\nexport const output = [\n  [input, []],\n  [<block void>one</block>, [0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [] }))\n}\nexport const output = [\n  [input, []],\n  [<block>one</block>, [0]],\n  [<text>one</text>, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/inline-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three<inline>four</inline>five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [] }))\n}\nexport const output = [\n  [input, []],\n  [\n    <block>\n      one<inline>two</inline>three<inline>four</inline>five\n    </block>,\n    [0],\n  ],\n  [<text>one</text>, [0, 0]],\n  [<inline>two</inline>, [0, 1]],\n  [<text>two</text>, [0, 1, 0]],\n  [<text>three</text>, [0, 2]],\n  [<inline>four</inline>, [0, 3]],\n  [<text>four</text>, [0, 3, 0]],\n  [<text>five</text>, [0, 4]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/inline-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two<inline>three</inline>four\n      </inline>\n      five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [] }))\n}\nexport const output = [\n  [input, []],\n  [\n    <block>\n      one\n      <inline>\n        two<inline>three</inline>four\n      </inline>\n      five\n    </block>,\n    [0],\n  ],\n  [<text>one</text>, [0, 0]],\n  [\n    <inline>\n      two<inline>three</inline>four\n    </inline>,\n    [0, 1],\n  ],\n  [<text>two</text>, [0, 1, 0]],\n  [<inline>three</inline>, [0, 1, 1]],\n  [<text>three</text>, [0, 1, 1, 0]],\n  [<text>four</text>, [0, 1, 2]],\n  [<text>five</text>, [0, 2]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/inline-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three<inline>four</inline>five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [], reverse: true }))\n}\nexport const output = [\n  [input, []],\n  [\n    <block>\n      one<inline>two</inline>three<inline>four</inline>five\n    </block>,\n    [0],\n  ],\n  [<text>five</text>, [0, 4]],\n  [<inline>four</inline>, [0, 3]],\n  [<text>four</text>, [0, 3, 0]],\n  [<text>three</text>, [0, 2]],\n  [<inline>two</inline>, [0, 1]],\n  [<text>two</text>, [0, 1, 0]],\n  [<text>one</text>, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline void>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [] }))\n}\nexport const output = [\n  [input, []],\n  [\n    <block>\n      one<inline void>two</inline>three\n    </block>,\n    [0],\n  ],\n  [<text>one</text>, [0, 0]],\n  [<inline void>two</inline>, [0, 1]],\n  [<text>three</text>, [0, 2]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/no-match/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.nodes(editor, { at: [] }))\n}\nexport const output = [\n  [input, []],\n  [\n    <block>\n      one<inline>two</inline>three\n    </block>,\n    [0],\n  ],\n  [<text>one</text>, [0, 0]],\n  [<inline>two</inline>, [0, 1]],\n  [<text>two</text>, [0, 1, 0]],\n  [<text>three</text>, [0, 2]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/pass/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block pass>\n      <block match>one</block>\n    </block>\n    <block>\n      <block match>two</block>\n      <block pass match>\n        three\n      </block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, {\n      at: [],\n      match: n => !!n.match,\n      pass: ([n]) => !!n.pass,\n    })\n  )\n}\nexport const output = [\n  [<block match>two</block>, [1, 0]],\n  [\n    <block pass match>\n      three\n    </block>,\n    [1, 1],\n  ],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Text } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, { at: [], match: Text.isText, voids: true })\n  )\n}\nexport const output = [[<text>one</text>, [0, 0]]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/nodes/voids-true/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Text } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline void>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.nodes(editor, { at: [], match: Text.isText, voids: true })\n  )\n}\nexport const output = [\n  [<text>one</text>, [0, 0]],\n  [<text>two</text>, [0, 1, 0]],\n  [<text>three</text>, [0, 2]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/parent/path.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.parent(editor, [0, 0])\n}\nexport const output = [<block>one</block>, [0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/parent/point.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.parent(editor, { path: [0, 0], offset: 1 })\n}\nexport const output = [<block>one</block>, [0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/parent/range-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.parent(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [1, 0], offset: 2 },\n    },\n    { edge: 'end' }\n  )\n}\nexport const output = [<block>two</block>, [1]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/parent/range-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.parent(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [1, 0], offset: 2 },\n    },\n    { edge: 'start' }\n  )\n}\nexport const output = [<block>one</block>, [0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/parent/range.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.parent(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [0, 0], offset: 2 },\n  })\n}\nexport const output = [<block>one</block>, [0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/path/path.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.path(editor, [0])\n}\nexport const output = [0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/path/point.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.path(editor, { path: [0, 0], offset: 1 })\n}\nexport const output = [0, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/path/range-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.path(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [1, 0], offset: 2 },\n    },\n    { edge: 'end' }\n  )\n}\nexport const output = [1, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/path/range-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.path(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [1, 0], offset: 2 },\n    },\n    { edge: 'start' }\n  )\n}\nexport const output = [0, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/path/range.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.path(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [1, 0], offset: 2 },\n  })\n}\nexport const output = []\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/point/path-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.point(editor, [0], { edge: 'end' })\n}\nexport const output = { path: [0, 0], offset: 3 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/point/path-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.point(editor, [0], { edge: 'start' })\n}\nexport const output = { path: [0, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/point/path.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.point(editor, [0])\n}\nexport const output = { path: [0, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/point/point.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.point(editor, { path: [0, 0], offset: 1 })\n}\nexport const output = { path: [0, 0], offset: 1 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/point/range-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.point(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [0, 1], offset: 2 },\n    },\n    { edge: 'end' }\n  )\n}\nexport const output = { path: [0, 1], offset: 2 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/point/range-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.point(\n    editor,\n    {\n      anchor: { path: [0, 0], offset: 1 },\n      focus: { path: [0, 1], offset: 2 },\n    },\n    { edge: 'start' }\n  )\n}\nexport const output = { path: [0, 0], offset: 1 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/point/range.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.point(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [0, 1], offset: 2 },\n  })\n}\nexport const output = { path: [0, 0], offset: 1 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/block-multiple-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>three</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], reverse: true }))\n}\nexport const output = [\n  { path: [2, 0], offset: 5 },\n  { path: [2, 0], offset: 4 },\n  { path: [2, 0], offset: 3 },\n  { path: [2, 0], offset: 2 },\n  { path: [2, 0], offset: 1 },\n  { path: [2, 0], offset: 0 },\n  { path: [1, 0], offset: 3 },\n  { path: [1, 0], offset: 2 },\n  { path: [1, 0], offset: 1 },\n  { path: [1, 0], offset: 0 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/block-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>three</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [] }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n  { path: [1, 0], offset: 0 },\n  { path: [1, 0], offset: 1 },\n  { path: [1, 0], offset: 2 },\n  { path: [1, 0], offset: 3 },\n  { path: [2, 0], offset: 0 },\n  { path: [2, 0], offset: 1 },\n  { path: [2, 0], offset: 2 },\n  { path: [2, 0], offset: 3 },\n  { path: [2, 0], offset: 4 },\n  { path: [2, 0], offset: 5 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [] }))\n}\nexport const output = [\n  { path: [0, 0, 0], offset: 0 },\n  { path: [0, 0, 0], offset: 1 },\n  { path: [0, 0, 0], offset: 2 },\n  { path: [0, 0, 0], offset: 3 },\n  { path: [1, 0, 0], offset: 0 },\n  { path: [1, 0, 0], offset: 1 },\n  { path: [1, 0, 0], offset: 2 },\n  { path: [1, 0, 0], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/block-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], reverse: true }))\n}\nexport const output = [\n  { path: [0, 0], offset: 3 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [] }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/inline-fragmentation-empty-text.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text />\n        <inline>\n          <text />\n        </inline>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [] }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 1, 0], offset: 0 },\n  { path: [0, 1, 2], offset: 0 },\n  { path: [0, 2], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/inline-fragmentation-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      1<inline>2</inline>3\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], reverse: true }))\n}\n\nexport const output = [\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/inline-fragmentation.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      1<inline>2</inline>3\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [] }))\n}\n\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 2], offset: 1 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/inline-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three<inline>four</inline>five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [] }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 4 },\n  { path: [0, 2], offset: 5 },\n  { path: [0, 3, 0], offset: 0 },\n  { path: [0, 3, 0], offset: 1 },\n  { path: [0, 3, 0], offset: 2 },\n  { path: [0, 3, 0], offset: 3 },\n  { path: [0, 3, 0], offset: 4 },\n  { path: [0, 4], offset: 0 },\n  { path: [0, 4], offset: 1 },\n  { path: [0, 4], offset: 2 },\n  { path: [0, 4], offset: 3 },\n  { path: [0, 4], offset: 4 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/inline-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two<inline>three</inline>four\n      </inline>\n      five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [] }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 1, 1, 0], offset: 0 },\n  { path: [0, 1, 1, 0], offset: 1 },\n  { path: [0, 1, 1, 0], offset: 2 },\n  { path: [0, 1, 1, 0], offset: 3 },\n  { path: [0, 1, 1, 0], offset: 4 },\n  { path: [0, 1, 1, 0], offset: 5 },\n  { path: [0, 1, 2], offset: 0 },\n  { path: [0, 1, 2], offset: 1 },\n  { path: [0, 1, 2], offset: 2 },\n  { path: [0, 1, 2], offset: 3 },\n  { path: [0, 1, 2], offset: 4 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 4 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/inline-normalized.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>o</inline>\n      <text />\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, {\n      at: Editor.range(editor, []),\n      unit: 'character',\n    })\n  )\n}\n\n// this is the output but it's incorrect.\n// there should be two positions, before the character and after the character\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/inline-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], reverse: true }))\n}\nexport const output = [\n  { path: [0, 2], offset: 5 },\n  { path: [0, 2], offset: 4 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [] }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 4 },\n  { path: [0, 2], offset: 5 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-block-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one two three</block>\n    <block>four five six</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, { at: [], unit: 'block', reverse: true })\n  )\n}\nexport const output = [\n  { path: [1, 0], offset: 13 },\n  { path: [1, 0], offset: 0 },\n  { path: [0, 0], offset: 13 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one two three</block>\n    <block>four five six</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], unit: 'block' }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 13 },\n  { path: [1, 0], offset: 0 },\n  { path: [1, 0], offset: 13 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-character-inline-fragmentation-multibyte.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      😀<inline>😀</inline>😀\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], unit: 'character' }))\n}\n\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 2], offset: 2 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-character-inline-fragmentation-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      1<inline>2</inline>3\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, { at: [], unit: 'character', reverse: true })\n  )\n}\n\nexport const output = [\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-character-inline-fragmentation.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      1<inline>2</inline>3\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], unit: 'character' }))\n}\n\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 2], offset: 1 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-character-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n    <block>\n      four<inline>five</inline>six\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, { at: [], unit: 'character', reverse: true })\n  )\n}\nexport const output = [\n  { path: [1, 2], offset: 3 },\n  { path: [1, 2], offset: 2 },\n  { path: [1, 2], offset: 1 },\n  { path: [1, 2], offset: 0 },\n  { path: [1, 1, 0], offset: 3 },\n  { path: [1, 1, 0], offset: 2 },\n  { path: [1, 1, 0], offset: 1 },\n  { path: [1, 1, 0], offset: 0 },\n  { path: [1, 0], offset: 3 },\n  { path: [1, 0], offset: 2 },\n  { path: [1, 0], offset: 1 },\n  { path: [1, 0], offset: 0 },\n  { path: [0, 2], offset: 5 },\n  { path: [0, 2], offset: 4 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-character.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n    <block>\n      four<inline>five</inline>six\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], unit: 'character' }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 4 },\n  { path: [0, 2], offset: 5 },\n  { path: [1, 0], offset: 0 },\n  { path: [1, 0], offset: 1 },\n  { path: [1, 0], offset: 2 },\n  { path: [1, 0], offset: 3 },\n  { path: [1, 0], offset: 4 },\n  { path: [1, 1, 0], offset: 1 },\n  { path: [1, 1, 0], offset: 2 },\n  { path: [1, 1, 0], offset: 3 },\n  { path: [1, 1, 0], offset: 4 },\n  { path: [1, 2], offset: 1 },\n  { path: [1, 2], offset: 2 },\n  { path: [1, 2], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-line-inline-fragmentation-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      he<inline>ll</inline>o wo<inline>rl</inline>d\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, { at: [], unit: 'line', reverse: true })\n  )\n}\n\nexport const output = [\n  { path: [0, 4], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-line-inline-fragmentation.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      he<inline>ll</inline>o wo<inline>rl</inline>d\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], unit: 'line' }))\n}\n\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 4], offset: 1 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-line-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one two three</block>\n    <block>four five six</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, { at: [], unit: 'line', reverse: true })\n  )\n}\nexport const output = [\n  { path: [1, 0], offset: 13 },\n  { path: [1, 0], offset: 0 },\n  { path: [0, 0], offset: 13 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-line.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one two three</block>\n    <block>four five six</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], unit: 'line' }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 13 },\n  { path: [1, 0], offset: 0 },\n  { path: [1, 0], offset: 13 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-word-inline-fragmentation.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      he<inline>ll</inline>o wo<inline>rl</inline>d\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], unit: 'word' }))\n}\n\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 4], offset: 1 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-word-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one two three</block>\n    <block>four five six</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, { at: [], unit: 'word', reverse: true })\n  )\n}\nexport const output = [\n  { path: [1, 0], offset: 13 },\n  { path: [1, 0], offset: 10 },\n  { path: [1, 0], offset: 5 },\n  { path: [1, 0], offset: 0 },\n  { path: [0, 0], offset: 13 },\n  { path: [0, 0], offset: 8 },\n  { path: [0, 0], offset: 4 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/all/unit-word.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one two three</block>\n    <block>four five six</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], unit: 'word' }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 0], offset: 7 },\n  { path: [0, 0], offset: 13 },\n  { path: [1, 0], offset: 0 },\n  { path: [1, 0], offset: 4 },\n  { path: [1, 0], offset: 9 },\n  { path: [1, 0], offset: 13 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/path/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [0] }))\n}\nexport const output = [\n  { path: [0, 0, 0], offset: 0 },\n  { path: [0, 0, 0], offset: 1 },\n  { path: [0, 0, 0], offset: 2 },\n  { path: [0, 0, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/path/block-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { reverse: true, at: [0, 0] }))\n}\nexport const output = [\n  { path: [0, 0], offset: 3 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [1, 0] }))\n}\nexport const output = [\n  { path: [1, 0], offset: 0 },\n  { path: [1, 0], offset: 1 },\n  { path: [1, 0], offset: 2 },\n  { path: [1, 0], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/path/inline-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two<inline>three</inline>four\n      </inline>\n      five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [0, 1] }))\n}\nexport const output = [\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 1, 1, 0], offset: 0 },\n  { path: [0, 1, 1, 0], offset: 1 },\n  { path: [0, 1, 1, 0], offset: 2 },\n  { path: [0, 1, 1, 0], offset: 3 },\n  { path: [0, 1, 1, 0], offset: 4 },\n  { path: [0, 1, 1, 0], offset: 5 },\n  { path: [0, 1, 2], offset: 0 },\n  { path: [0, 1, 2], offset: 1 },\n  { path: [0, 1, 2], offset: 2 },\n  { path: [0, 1, 2], offset: 3 },\n  { path: [0, 1, 2], offset: 4 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/path/inline-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { reverse: true, at: [0, 1] }))\n}\nexport const output = [\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/path/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [0, 1] }))\n}\nexport const output = [\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/range/block-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>three</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, {\n      reverse: true,\n      at: {\n        anchor: { path: [0, 0], offset: 1 },\n        focus: { path: [2, 0], offset: 2 },\n      },\n    })\n  )\n}\nexport const output = [\n  { path: [2, 0], offset: 2 },\n  { path: [2, 0], offset: 1 },\n  { path: [2, 0], offset: 0 },\n  { path: [1, 0], offset: 3 },\n  { path: [1, 0], offset: 2 },\n  { path: [1, 0], offset: 1 },\n  { path: [1, 0], offset: 0 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 1 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/range/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>three</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, {\n      at: {\n        anchor: { path: [0, 0], offset: 1 },\n        focus: { path: [2, 0], offset: 2 },\n      },\n    })\n  )\n}\nexport const output = [\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n  { path: [1, 0], offset: 0 },\n  { path: [1, 0], offset: 1 },\n  { path: [1, 0], offset: 2 },\n  { path: [1, 0], offset: 3 },\n  { path: [2, 0], offset: 0 },\n  { path: [2, 0], offset: 1 },\n  { path: [2, 0], offset: 2 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/range/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three<inline>four</inline>five\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, {\n      at: {\n        anchor: { path: [0, 0], offset: 2 },\n        focus: { path: [0, 4], offset: 2 },\n      },\n    })\n  )\n}\nexport const output = [\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 4 },\n  { path: [0, 2], offset: 5 },\n  { path: [0, 3, 0], offset: 0 },\n  { path: [0, 3, 0], offset: 1 },\n  { path: [0, 3, 0], offset: 2 },\n  { path: [0, 3, 0], offset: 3 },\n  { path: [0, 3, 0], offset: 4 },\n  { path: [0, 4], offset: 0 },\n  { path: [0, 4], offset: 1 },\n  { path: [0, 4], offset: 2 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/voids-true/block-all-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, { at: [], reverse: true, voids: true })\n  )\n}\nexport const output = [\n  { path: [0, 0], offset: 3 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/voids-true/block-all.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], voids: true }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/voids-true/inline-all-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(\n    Editor.positions(editor, { at: [], reverse: true, voids: true })\n  )\n}\nexport const output = [\n  { path: [0, 2], offset: 5 },\n  { path: [0, 2], offset: 4 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 0 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/positions/voids-true/inline-all.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Array.from(Editor.positions(editor, { at: [], voids: true }))\n}\nexport const output = [\n  { path: [0, 0], offset: 0 },\n  { path: [0, 0], offset: 1 },\n  { path: [0, 0], offset: 2 },\n  { path: [0, 0], offset: 3 },\n  { path: [0, 1, 0], offset: 0 },\n  { path: [0, 1, 0], offset: 1 },\n  { path: [0, 1, 0], offset: 2 },\n  { path: [0, 1, 0], offset: 3 },\n  { path: [0, 2], offset: 0 },\n  { path: [0, 2], offset: 1 },\n  { path: [0, 2], offset: 2 },\n  { path: [0, 2], offset: 3 },\n  { path: [0, 2], offset: 4 },\n  { path: [0, 2], offset: 5 },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/previous/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.previous(editor, {\n    at: [1],\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n  })\n}\nexport const output = [<block>one</block>, [0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/previous/default.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.previous(editor, { at: [1] })\n}\nexport const output = [<block>one</block>, [0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/previous/text.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.previous(editor, { at: [1], match: Text.isText })\n}\nexport const output = [<text>one</text>, [0, 0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/range/path.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.range(editor, [0])\n}\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [0, 0], offset: 3 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/range/point.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.range(editor, { path: [0, 0], offset: 1 })\n}\nexport const output = {\n  anchor: { path: [0, 0], offset: 1 },\n  focus: { path: [0, 0], offset: 1 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/range/range-backward.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.range(editor, {\n    anchor: { path: [0, 0], offset: 2 },\n    focus: { path: [0, 0], offset: 1 },\n  })\n}\nexport const output = {\n  anchor: { path: [0, 0], offset: 2 },\n  focus: { path: [0, 0], offset: 1 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/range/range.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.range(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [0, 0], offset: 2 },\n  })\n}\nexport const output = {\n  anchor: { path: [0, 0], offset: 1 },\n  focus: { path: [0, 0], offset: 2 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/start/path.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.start(editor, [0])\n}\nexport const output = { path: [0, 0], offset: 0 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/start/point.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.start(editor, { path: [0, 0], offset: 1 })\n}\nexport const output = { path: [0, 0], offset: 1 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/start/range.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.start(editor, {\n    anchor: { path: [0, 0], offset: 1 },\n    focus: { path: [0, 0], offset: 3 },\n  })\n}\nexport const output = { path: [0, 0], offset: 1 }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/string/block-across.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>one</text>\n      <text>two</text>\n    </block>\n    <block>\n      <text>three</text>\n      <text>four</text>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.string(editor, [])\n}\nexport const output = `onetwothreefour`\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/string/block-void.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <text>one</text>\n      <text>two</text>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.string(editor, [0])\n}\nexport const output = ``\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/string/block-voids-true.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <text>one</text>\n      <text>two</text>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.string(editor, [0], { voids: true })\n}\nexport const output = `onetwo`\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/string/block.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>one</text>\n      <text>two</text>\n    </block>\n    <block>\n      <text>three</text>\n      <text>four</text>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.string(editor, [0])\n}\nexport const output = `onetwo`\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/string/inline.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>three\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.string(editor, [0, 1])\n}\nexport const output = `two`\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/string/text.tsx",
    "content": "/** @jsx jsx  */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>one</text>\n      <text>two</text>\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.string(editor, [0, 0])\n}\nexport const output = `one`\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/block-hanging-over-non-empty-void-with-voids-option.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is a first paragraph\n    </block>\n    <block>This is the second paragraph</block>\n    <block void>\n      This is the third paragraph\n      {/* unhang should move focus to here */}\n    </block>\n    <block>\n      <focus />\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection, { voids: true })\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [2, 0], offset: 27 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/block-hanging-over-void-with-voids-option.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is a first paragraph\n    </block>\n    <block>This is the second paragraph</block>\n    <block void />\n    <block>\n      <focus />\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection, { voids: true })\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [1, 0], offset: 28 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/block-hanging-over-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is a first paragraph\n    </block>\n    <block>\n      This is the second paragraph\n      {/* unhang should move focus to here because, without `voids` set, it should skip over void block below */}\n    </block>\n    <block void>This void paragraph gets skipped over</block>\n    <block>\n      <focus />\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection)\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [1, 0], offset: 28 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/block-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      word\n    </block>\n    <block>\n      <focus />\n      another\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection)\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [0, 0], offset: 4 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/collapsed.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection)\n}\nexport const output = {\n  anchor: { path: [0, 0], offset: 3 },\n  focus: { path: [0, 0], offset: 3 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/inline-at-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is a first paragraph\n      <inline void>\n        <text />\n      </inline>\n      <text />\n      {/* unhang should move focus to here */}\n    </block>\n    <block>\n      <focus />\n      This is the second paragraph\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection, { voids: true })\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [0, 2], offset: 0 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/inline-range-normal.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>Block before</text>\n    </block>\n    <block>\n      <text>\n        <anchor />\n        Some text before{' '}\n      </text>\n      <inline void>\n        <focus />\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text>Another block</text>\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  const range = Editor.unhangRange(editor, editor.selection)\n  return range\n}\n\nexport const output = {\n  anchor: { path: [1, 0], offset: 0 },\n  focus: { path: [1, 1, 0], offset: 0 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/multi-block-inline-at-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is the first paragraph\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n    <block>\n      This is the second paragraph\n      <inline void>\n        <text />\n      </inline>\n      <text />\n      {/* unhang should move focus to here */}\n    </block>\n    <block>\n      <focus />\n      This is the third paragraph\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection, { voids: true })\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [1, 2], offset: 0 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/not-hanging-inline-at-end.tsx",
    "content": "/** @jsx jsx */\n/* The starting selection range is not hanging, so should not be adjusted */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is the first paragraph\n      <inline void>\n        <text />\n      </inline>\n      <text>\n        <focus />\n      </text>\n    </block>\n    <block>This is the second paragraph</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection, { voids: true })\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [0, 2], offset: 0 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/not-hanging-multi-block-inline-at-end.tsx",
    "content": "/** @jsx jsx */\n/* The starting selection range is not hanging, so should not be adjusted */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is the first paragraph\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n    <block>\n      This is the second paragraph\n      <inline void>\n        <text />\n      </inline>\n      <text>\n        <focus />\n      </text>\n    </block>\n    <block>This is the third paragraph</block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection, { voids: true })\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [1, 2], offset: 0 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/text-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        before\n        <anchor />\n      </text>\n      <text>selected</text>\n      <text>\n        <focus />\n        after\n      </text>\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection)\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 6 },\n  focus: { path: [0, 2], offset: 0 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/void-hanging-with-voids-option.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is a first paragraph\n    </block>\n    <block>This is the second paragraph</block>\n    <block void>\n      <focus />\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection, { voids: true })\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [1, 0], offset: 28 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Editor/unhangRange/void-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is a first paragraph\n    </block>\n    <block>This is the second paragraph</block>\n    <block void>\n      <focus />\n    </block>\n  </editor>\n)\n\nexport const test = editor => {\n  return Editor.unhangRange(editor, editor.selection)\n}\n\nexport const output = {\n  anchor: { path: [0, 0], offset: 0 },\n  focus: { path: [0, 0], offset: 25 },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/boolean.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Element.isElement(value)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/custom-property.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  children: [],\n  custom: 'value',\n}\nexport const test = value => {\n  return Element.isElement(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/editor.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  children: [],\n  operations: [],\n  selection: null,\n  marks: null,\n  addMark() {},\n  apply() {},\n  deleteBackward() {},\n  deleteForward() {},\n  deleteFragment() {},\n  insertBreak() {},\n  insertSoftBreak() {},\n  insertFragment() {},\n  insertNode() {},\n  insertText() {},\n  isElementReadOnly() {},\n  isInline() {},\n  isSelectable() {},\n  isVoid() {},\n  normalizeNode() {},\n  onChange() {},\n  removeMark() {},\n  getDirtyPaths() {},\n}\nexport const test = value => {\n  return Element.isElement(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/element.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  children: [],\n}\nexport const test = value => {\n  return Element.isElement(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/isElementDiscriminant.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  source: 'heading-large',\n  children: [{ text: '' }],\n}\nexport const test = value =>\n  Element.isElementType(value, 'heading-large', 'source')\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/isElementDiscriminantFalse.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  type: 'heading-large',\n  children: [{ text: '' }],\n}\nexport const test = value => Element.isElementType(value, 'paragraph', 'source')\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/isElementType.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  type: 'paragraph',\n  children: [{ text: '' }],\n}\nexport const test = value => Element.isElementType(value, 'paragraph')\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/isElementTypeFalse.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  type: 'heading-large',\n  children: [{ text: '' }],\n}\nexport const test = value => Element.isElementType(value, 'paragraph')\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/nodes-full.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  children: [\n    {\n      children: [],\n    },\n  ],\n}\nexport const test = value => {\n  return Element.isElement(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/object.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {}\nexport const test = value => {\n  return Element.isElement(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElement/text.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  text: '',\n}\nexport const test = value => {\n  return Element.isElement(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElementList/boolean.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Element.isElementList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElementList/element.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  children: [],\n}\nexport const test = value => {\n  return Element.isElementList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElementList/empty.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = []\nexport const test = value => {\n  return Element.isElementList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElementList/full-editor.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = [\n  {\n    children: [],\n    operations: [],\n    selection: null,\n    marks: null,\n    addMark() {},\n    apply() {},\n    deleteBackward() {},\n    deleteForward() {},\n    deleteFragment() {},\n    insertBreak() {},\n    insertSoftBreak() {},\n    insertFragment() {},\n    insertNode() {},\n    insertText() {},\n    isElementReadOnly() {},\n    isInline() {},\n    isSelectable() {},\n    isVoid() {},\n    normalizeNode() {},\n    onChange() {},\n    removeMark() {},\n    getDirtyPaths() {},\n  },\n]\nexport const test = value => {\n  return Element.isElementList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElementList/full-element.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = [\n  {\n    children: [],\n  },\n]\nexport const test = value => {\n  return Element.isElementList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElementList/full-text.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = [\n  {\n    text: '',\n  },\n]\nexport const test = value => {\n  return Element.isElementList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/isElementList/not-full-element.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = [\n  {\n    children: [],\n  },\n  {\n    type: 'set_node',\n    path: [0],\n    properties: {},\n    newProperties: {},\n  },\n]\nexport const test = value => {\n  return Element.isElementList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/matches/custom-prop-match.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  element: { children: [], type: 'bold' },\n  props: { type: 'bold' },\n}\nexport const test = ({ element, props }) => {\n  return Element.matches(element, props)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/matches/custom-prop-not-match.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  element: { children: [], type: 'bold' },\n  props: { type: 'italic' },\n}\nexport const test = ({ element, props }) => {\n  return Element.matches(element, props)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Element/matches/empty-match.tsx",
    "content": "import { Element } from 'slate'\n\nexport const input = {\n  element: { children: [] },\n  props: {},\n}\nexport const test = ({ element, props }) => {\n  return Element.matches(element, props)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPath/customPoint.tsx",
    "content": "import { Location, Point } from 'slate'\n\nexport const input: Point & { custom: string } = {\n  path: [0, 1],\n  offset: 2,\n  custom: 'value',\n}\nexport const test = (value: typeof input) => {\n  return Location.isPath(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPath/customRange.tsx",
    "content": "import { Location, Range } from 'slate'\n\nexport const input: Range & { custom: string } = {\n  anchor: { path: [0, 1], offset: 2 },\n  focus: { path: [3, 4], offset: 5 },\n  custom: 'value',\n}\nexport const test = (value: typeof input) => {\n  return Location.isPath(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPath/emptyPath.tsx",
    "content": "import { Location, Path } from 'slate'\n\nexport const input: Path = []\nexport const test = (value: typeof input) => {\n  return Location.isPath(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPath/path.tsx",
    "content": "import { Location, Path } from 'slate'\n\nexport const input: Path = [0, 1]\nexport const test = (value: typeof input) => {\n  return Location.isPath(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPath/point.tsx",
    "content": "import { Location, Point } from 'slate'\n\nexport const input: Point = { path: [0, 1], offset: 2 }\nexport const test = (value: typeof input) => {\n  return Location.isPath(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPath/range.tsx",
    "content": "import { Location, Range } from 'slate'\n\nexport const input: Range = {\n  anchor: { path: [0, 1], offset: 2 },\n  focus: { path: [3, 4], offset: 5 },\n}\nexport const test = (value: typeof input) => {\n  return Location.isPath(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPoint/customPoint.tsx",
    "content": "import { Location, Point } from 'slate'\n\nexport const input: Point & { custom: string } = {\n  path: [0, 1],\n  offset: 2,\n  custom: 'value',\n}\nexport const test = (value: typeof input) => {\n  return Location.isPoint(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPoint/customRange.tsx",
    "content": "import { Location, Range } from 'slate'\n\nexport const input: Range & { custom: string } = {\n  anchor: { path: [0, 1], offset: 2 },\n  focus: { path: [3, 4], offset: 5 },\n  custom: 'value',\n}\nexport const test = (value: typeof input) => {\n  return Location.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPoint/emptyPath.tsx",
    "content": "import { Location, Path } from 'slate'\n\nexport const input: Path = []\nexport const test = (value: typeof input) => {\n  return Location.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPoint/path.tsx",
    "content": "import { Location, Path } from 'slate'\n\nexport const input: Path = [0, 1]\nexport const test = (value: typeof input) => {\n  return Location.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPoint/point.tsx",
    "content": "import { Location, Point } from 'slate'\n\nexport const input: Point = { path: [0, 1], offset: 2 }\nexport const test = (value: typeof input) => {\n  return Location.isPoint(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isPoint/range.tsx",
    "content": "import { Location, Range } from 'slate'\n\nexport const input: Range = {\n  anchor: { path: [0, 1], offset: 2 },\n  focus: { path: [3, 4], offset: 5 },\n}\nexport const test = (value: typeof input) => {\n  return Location.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isRange/customPoint.tsx",
    "content": "import { Location, Point } from 'slate'\n\nexport const input: Point & { custom: string } = {\n  path: [0, 1],\n  offset: 2,\n  custom: 'value',\n}\nexport const test = (value: typeof input) => {\n  return Location.isRange(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isRange/customRange.tsx",
    "content": "import { Location, Range } from 'slate'\n\nexport const input: Range & { custom: string } = {\n  anchor: { path: [0, 1], offset: 2 },\n  focus: { path: [3, 4], offset: 5 },\n  custom: 'value',\n}\nexport const test = (value: typeof input) => {\n  return Location.isRange(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isRange/emptyPath.tsx",
    "content": "import { Location, Path } from 'slate'\n\nexport const input: Path = []\nexport const test = (value: typeof input) => {\n  return Location.isRange(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isRange/path.tsx",
    "content": "import { Location, Path } from 'slate'\n\nexport const input: Path = [0, 1]\nexport const test = (value: typeof input) => {\n  return Location.isRange(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isRange/point.tsx",
    "content": "import { Location, Point } from 'slate'\n\nexport const input: Point = { path: [0, 1], offset: 2 }\nexport const test = (value: typeof input) => {\n  return Location.isRange(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isRange/range.tsx",
    "content": "import { Location, Range } from 'slate'\n\nexport const input: Range = {\n  anchor: { path: [0, 1], offset: 2 },\n  focus: { path: [3, 4], offset: 5 },\n}\nexport const test = (value: typeof input) => {\n  return Location.isRange(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isSpan/customPoint.tsx",
    "content": "import { Location, Point } from 'slate'\n\nexport const input: Point & { custom: string } = {\n  path: [0, 1],\n  offset: 2,\n  custom: 'value',\n}\nexport const test = (value: typeof input) => {\n  return Location.isSpan(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isSpan/customRange.tsx",
    "content": "import { Location, Range } from 'slate'\n\nexport const input: Range & { custom: string } = {\n  anchor: { path: [0, 1], offset: 2 },\n  focus: { path: [3, 4], offset: 5 },\n  custom: 'value',\n}\nexport const test = (value: typeof input) => {\n  return Location.isSpan(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isSpan/emptyPath.tsx",
    "content": "import { Location, Path } from 'slate'\n\nexport const input: Path = []\nexport const test = (value: typeof input) => {\n  return Location.isSpan(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isSpan/path.tsx",
    "content": "import { Location, Path } from 'slate'\n\nexport const input: Path = [0, 1]\nexport const test = (value: typeof input) => {\n  return Location.isSpan(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isSpan/point.tsx",
    "content": "import { Location, Point } from 'slate'\n\nexport const input: Point = { path: [0, 1], offset: 2 }\nexport const test = (value: typeof input) => {\n  return Location.isSpan(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isSpan/range.tsx",
    "content": "import { Location, Range } from 'slate'\n\nexport const input: Range = {\n  anchor: { path: [0, 1], offset: 2 },\n  focus: { path: [3, 4], offset: 5 },\n}\nexport const test = (value: typeof input) => {\n  return Location.isSpan(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Location/isSpan/span.tsx",
    "content": "import { Location, Span } from 'slate'\n\nexport const input: Span = [\n  [0, 1],\n  [2, 3],\n]\nexport const test = (value: typeof input) => {\n  return Location.isSpan(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/ancestor/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\nimport { cloneDeep } from 'lodash'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.ancestor(value, [0])\n}\nexport const output = cloneDeep(input.children[0])\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/ancestors/reverse.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.ancestors(value, [0, 0], { reverse: true }))\n}\nexport const output = [\n  [input.children[0], [0]],\n  [input, []],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/ancestors/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.ancestors(value, [0, 0]))\n}\nexport const output = [\n  [input, []],\n  [input.children[0], [0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/child/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\nimport { cloneDeep } from 'lodash'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.child(value, 0)\n}\nexport const output = cloneDeep(input.children[0])\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/children/all.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.children(value, [0]))\n}\nexport const output = [\n  [<text key=\"a\" />, [0, 0]],\n  [<text key=\"b\" />, [0, 1]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/children/reverse.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.children(value, [0], { reverse: true }))\n}\nexport const output = [\n  [<text key=\"b\" />, [0, 1]],\n  [<text key=\"a\" />, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/descendant/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\nimport { cloneDeep } from 'lodash'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.descendant(value, [0])\n}\nexport const output = cloneDeep(input.children[0])\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/descendants/all.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.descendants(value))\n}\nexport const output = [\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>,\n    [0],\n  ],\n  [<text key=\"a\" />, [0, 0]],\n  [<text key=\"b\" />, [0, 1]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/descendants/from.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.descendants(value, { from: [0, 1] }))\n}\nexport const output = [\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>,\n    [0],\n  ],\n  [<text key=\"b\" />, [0, 1]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/descendants/reverse.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.descendants(value, { reverse: true }))\n}\nexport const output = [\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>,\n    [0],\n  ],\n  [<text key=\"b\" />, [0, 1]],\n  [<text key=\"a\" />, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/descendants/to.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n      <text key=\"c\" />\n      <text key=\"d\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(\n    Node.descendants(value, {\n      from: [0, 1],\n      to: [0, 2],\n    })\n  )\n}\nexport const output = [\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n      <text key=\"c\" />\n      <text key=\"d\" />\n    </element>,\n    [0],\n  ],\n  [<text key=\"b\" />, [0, 1]],\n  [<text key=\"c\" />, [0, 2]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/elements/all.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.elements(value))\n}\nexport const output = [\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>,\n    [0],\n  ],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/elements/path.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.elements(value, { path: [0, 1] }))\n}\nexport const output = [\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>,\n    [0],\n  ],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/elements/range.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n      <text key=\"c\" />\n      <text key=\"d\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(\n    Node.elements(value, {\n      range: {\n        anchor: {\n          path: [0, 1],\n          offset: 0,\n        },\n        focus: {\n          path: [0, 2],\n          offset: 0,\n        },\n      },\n    })\n  )\n}\nexport const output = [\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n      <text key=\"c\" />\n      <text key=\"d\" />\n    </element>,\n    [0],\n  ],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/elements/reverse.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.elements(value, { reverse: true }))\n}\nexport const output = [\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>,\n    [0],\n  ],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/first/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.first(value, [0])\n}\nexport const output = [<text key=\"a\" />, [0, 0]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/get/root.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\nimport { cloneDeep } from 'lodash'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.get(value, [])\n}\nexport const skip = true // TODO: see https://github.com/ianstormtaylor/slate/pull/4188\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/get/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.get(value, [0])\n}\nexport const output = (\n  <element>\n    <text />\n  </element>\n)\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/getIf/proto.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  try {\n    return Node.getIf(value, ['__proto__' as any])\n  } catch (error) {\n    return error.message\n  }\n}\nexport const output = 'Got non-numeric path index'\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/getIf/root.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\nimport { cloneDeep } from 'lodash'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.getIf(value, [])\n}\nexport const skip = true // TODO: see https://github.com/ianstormtaylor/slate/pull/4188\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/getIf/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.getIf(value, [0])\n}\nexport const output = (\n  <element>\n    <text />\n  </element>\n)\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/getIf/undefined.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.getIf(value, [0, 0, 0])\n}\nexport const output = undefined\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNode/boolean.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Node.isNode(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNode/custom-property.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = {\n  children: [],\n  custom: true,\n}\nexport const test = value => {\n  return Node.isNode(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNode/element.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = {\n  children: [],\n}\nexport const test = value => {\n  return Node.isNode(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNode/object.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = {}\nexport const test = value => {\n  return Node.isNode(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNode/text.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = {\n  text: '',\n}\nexport const test = value => {\n  return Node.isNode(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNode/value.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = {\n  children: [],\n  selection: null,\n}\nexport const test = value => {\n  return Node.isNode(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNodeList/boolean.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Node.isNodeList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNodeList/element.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = {\n  children: [],\n}\nexport const test = value => {\n  return Node.isNodeList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNodeList/empty.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = []\nexport const test = value => {\n  return Node.isNodeList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNodeList/full-element.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = [\n  {\n    children: [],\n  },\n]\nexport const test = value => {\n  return Node.isNodeList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNodeList/full-text.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = [\n  {\n    text: '',\n  },\n]\nexport const test = value => {\n  return Node.isNodeList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNodeList/full-value.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = [\n  {\n    children: [],\n    selection: null,\n  },\n]\nexport const test = value => {\n  return Node.isNodeList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/isNodeList/not-full-node.tsx",
    "content": "import { Node } from 'slate'\n\nexport const input = [\n  {\n    children: [],\n    selection: null,\n  },\n  'a string',\n]\nexport const test = value => {\n  return Node.isNodeList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/leaf/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.leaf(value, [0, 0])\n}\nexport const output = <text />\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/levels/reverse.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.levels(value, [0, 0], { reverse: true }))\n}\nexport const output = [\n  [input.children[0].children[0], [0, 0]],\n  [input.children[0], [0]],\n  [input, []],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/levels/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.levels(value, [0, 0]))\n}\nexport const output = [\n  [input, []],\n  [input.children[0], [0]],\n  [input.children[0].children[0], [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/nodes/all.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.nodes(value))\n}\nexport const output = [\n  [input, []],\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>,\n    [0],\n  ],\n  [<text key=\"a\" />, [0, 0]],\n  [<text key=\"b\" />, [0, 1]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/nodes/multiple-elements.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n    </element>\n    <element>\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.nodes(value))\n}\nexport const output = [\n  [input, []],\n  [\n    <element>\n      <text key=\"a\" />\n    </element>,\n    [0],\n  ],\n  [<text key=\"a\" />, [0, 0]],\n  [\n    <element>\n      <text key=\"b\" />\n    </element>,\n    [1],\n  ],\n  [<text key=\"b\" />, [1, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/nodes/nested-elements.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <element>\n        <text key=\"a\" />\n      </element>\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.nodes(value))\n}\nexport const output = [\n  [input, []],\n  [\n    <element>\n      <element>\n        <text key=\"a\" />\n      </element>\n    </element>,\n    [0],\n  ],\n  [\n    <element>\n      <text key=\"a\" />\n    </element>,\n    [0, 0],\n  ],\n  [<text key=\"a\" />, [0, 0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/nodes/pass.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <element pass>\n        <text key=\"a\" />\n      </element>\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.nodes(value, { pass: ([n]) => !!n.pass }))\n}\nexport const output = [\n  [input, []],\n  [\n    <element>\n      <element pass>\n        <text key=\"a\" />\n      </element>\n    </element>,\n    [0],\n  ],\n  [\n    <element pass>\n      <text key=\"a\" />\n    </element>,\n    [0, 0],\n  ],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/nodes/to.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n      <text key=\"c\" />\n      <text key=\"d\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(\n    Node.nodes(value, {\n      from: [0, 1],\n      to: [0, 2],\n    })\n  )\n}\nexport const output = [\n  [input, []],\n  [\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n      <text key=\"c\" />\n      <text key=\"d\" />\n    </element>,\n    [0],\n  ],\n  [<text key=\"b\" />, [0, 1]],\n  [<text key=\"c\" />, [0, 2]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/parent/success.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.parent(value, [0, 0])\n}\nexport const output = (\n  <element>\n    <text />\n  </element>\n)\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/string/across-elements.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text>one</text>\n      <text>two</text>\n    </element>\n    <element>\n      <text>three</text>\n      <text>four</text>\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Node.string(value)\n}\nexport const output = `onetwothreefour`\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/string/element.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <element>\n    <text>one</text>\n    <text>two</text>\n  </element>\n)\nexport const test = value => {\n  return Node.string(value, [1])\n}\nexport const output = `onetwo`\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/string/text.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = <text>one</text>\nexport const test = value => {\n  return Node.string(value)\n}\nexport const output = `one`\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/texts/all.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.texts(value))\n}\nexport const output = [\n  [<text key=\"a\" />, [0, 0]],\n  [<text key=\"b\" />, [0, 1]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/texts/from.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.texts(value, { from: [0, 1] }))\n}\nexport const output = [[<text key=\"b\" />, [0, 1]]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/texts/multiple-elements.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n    </element>\n    <element>\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.texts(value))\n}\nexport const output = [\n  [<text key=\"a\" />, [0, 0]],\n  [<text key=\"b\" />, [1, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/texts/reverse.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(Node.texts(value, { reverse: true }))\n}\nexport const output = [\n  [<text key=\"b\" />, [0, 1]],\n  [<text key=\"a\" />, [0, 0]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Node/texts/to.tsx",
    "content": "/** @jsx jsx  */\nimport { Node } from 'slate'\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text key=\"a\" />\n      <text key=\"b\" />\n      <text key=\"c\" />\n      <text key=\"d\" />\n    </element>\n  </editor>\n)\nexport const test = value => {\n  return Array.from(\n    Node.texts(value, {\n      from: [0, 1],\n      to: [0, 2],\n    })\n  )\n}\nexport const output = [\n  [<text key=\"b\" />, [0, 1]],\n  [<text key=\"c\" />, [0, 2]],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/inverse/moveNode/backward-in-parent.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = { type: 'move_node', path: [0, 2], newPath: [0, 1] }\nexport const test = value => {\n  return Operation.inverse(value)\n}\nexport const output = { type: 'move_node', path: [0, 1], newPath: [0, 2] }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/inverse/moveNode/child-to-ends-after-parent.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = { type: 'move_node', path: [0, 2, 1], newPath: [0, 3] }\nexport const test = value => {\n  return Operation.inverse(value)\n}\nexport const output = { type: 'move_node', path: [0, 3], newPath: [0, 2, 1] }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/inverse/moveNode/child-to-ends-before-parent.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = { type: 'move_node', path: [0, 2, 1], newPath: [0, 1] }\nexport const test = value => {\n  return Operation.inverse(value)\n}\nexport const output = { type: 'move_node', path: [0, 1], newPath: [0, 3, 1] }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/inverse/moveNode/child-to-parent.tsx",
    "content": "import { Operation } from 'slate'\n// This test covers moving a child to the location of where the current parent is (not becoming its parent).\n// When the move happens the child is inserted infront of its old parent causing its former parent's index to shiftp\n// back within its former grandparent (now parent).\nexport const input = { type: 'move_node', path: [0, 2, 1], newPath: [0, 2] }\nexport const test = value => {\n  return Operation.inverse(value)\n}\nexport const output = { type: 'move_node', path: [0, 2], newPath: [0, 3, 1] }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/inverse/moveNode/ends-after-parent-to-child.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = { type: 'move_node', path: [0, 3], newPath: [0, 2, 1] }\nexport const test = value => {\n  return Operation.inverse(value)\n}\nexport const output = { type: 'move_node', path: [0, 2, 1], newPath: [0, 3] }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/inverse/moveNode/ends-before-parent-to-child.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = { type: 'move_node', path: [0, 1], newPath: [0, 2, 1] }\nexport const test = value => {\n  return Operation.inverse(value)\n}\n// The path has changed here because the removal of [0, 1] caused [0, 2] to shift forward into its location.\nexport const output = { type: 'move_node', path: [0, 1, 1], newPath: [0, 1] }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/inverse/moveNode/forward-in-parent.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = { type: 'move_node', path: [0, 1], newPath: [0, 2] }\nexport const test = value => {\n  return Operation.inverse(value)\n}\nexport const output = { type: 'move_node', path: [0, 2], newPath: [0, 1] }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/inverse/moveNode/non-sibling.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = { type: 'move_node', path: [0, 2], newPath: [1, 0, 0] }\nexport const test = value => {\n  return Operation.inverse(value)\n}\nexport const output = { type: 'move_node', path: [1, 0, 0], newPath: [0, 2] }\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/boolean.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/custom-property.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'set_node',\n  path: [0],\n  properties: {},\n  newProperties: {},\n  custom: true,\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/insert_node.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'insert_node',\n  path: [0],\n  node: {\n    children: [],\n  },\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/insert_text.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'insert_text',\n  path: [0],\n  offset: 0,\n  text: 'string',\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/merge_node.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'merge_node',\n  path: [0],\n  position: 0,\n  properties: {},\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/move_node.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'move_node',\n  path: [0],\n  newPath: [1],\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/object.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/remove_node.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'remove_node',\n  path: [0],\n  node: {\n    children: [],\n  },\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/remove_text.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'remove_text',\n  path: [0],\n  offset: 0,\n  text: 'string',\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/set_node.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'set_node',\n  path: [0],\n  properties: {},\n  newProperties: {},\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/set_selection.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'set_selection',\n  properties: {},\n  newProperties: {},\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/split_node.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'split_node',\n  path: [0],\n  position: 0,\n  properties: {},\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperation/without-type.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  path: [0],\n  properties: {},\n  newProperties: {},\n}\nexport const test = value => {\n  return Operation.isOperation(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperationList/boolean.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Operation.isOperationList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperationList/empty.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = []\nexport const test = value => {\n  return Operation.isOperationList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperationList/full.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = [\n  {\n    type: 'set_node',\n    path: [0],\n    properties: {},\n    newProperties: {},\n  },\n]\nexport const test = value => {\n  return Operation.isOperationList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperationList/not-full-operaion.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = [\n  {\n    type: 'set_node',\n    path: [0],\n    properties: {},\n    newProperties: {},\n  },\n  {\n    text: '',\n  },\n]\nexport const test = value => {\n  return Operation.isOperationList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Operation/isOperationList/operation.tsx",
    "content": "import { Operation } from 'slate'\n\nexport const input = {\n  type: 'set_node',\n  path: [0],\n  properties: {},\n  newProperties: {},\n}\nexport const test = value => {\n  return Operation.isOperationList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/ancestors/reverse.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1, 2]\nexport const test = path => {\n  return Path.ancestors(path, { reverse: true })\n}\nexport const output = [[0, 1], [0], []]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/ancestors/success.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1, 2]\nexport const test = path => {\n  return Path.ancestors(path)\n}\nexport const output = [[], [0], [0, 1]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/common/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.common(path, another)\n}\nexport const output = [0, 1, 2]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/common/root.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [3, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.common(path, another)\n}\nexport const output = []\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/common/success.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.common(path, another)\n}\nexport const output = [0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/compare/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.compare(path, another)\n}\nexport const output = 0\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/compare/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.compare(path, another)\n}\nexport const output = 1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/compare/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.compare(path, another)\n}\nexport const output = -1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/compare/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.compare(path, another)\n}\nexport const output = 0\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/compare/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.compare(path, another)\n}\nexport const output = 0\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/compare/root.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [],\n}\nexport const test = ({ path, another }) => {\n  return Path.compare(path, another)\n}\nexport const output = 0\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1],\n  another: [0, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/ends-at.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/ends-before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAfter/root.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAt/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAt(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAt/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAt(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAt/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAt(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAt/ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1],\n  another: [0, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAt(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAt/ends-at.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAt(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAt/ends-before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAt(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAt/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAt(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsAt/root.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsAt(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1],\n  another: [0, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/ends-at.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/ends-before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/endsBefore/root.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [],\n}\nexport const test = ({ path, another }) => {\n  return Path.endsBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/equals/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.equals(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/equals/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.equals(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/equals/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.equals(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/equals/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.equals(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/equals/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.equals(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/equals/root.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [],\n}\nexport const test = ({ path, another }) => {\n  return Path.equals(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/hasPrevious/root.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 0]\nexport const test = path => {\n  return Path.hasPrevious(path)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/hasPrevious/success.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1]\nexport const test = path => {\n  return Path.hasPrevious(path)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAfter/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAfter/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAfter(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAfter/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAfter/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAfter/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAfter(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAncestor/above-grandparent.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAncestor(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAncestor/above-parent.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAncestor(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAncestor/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAncestor(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAncestor/before.js",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\n\nexport const test = ({ path, another }) => {\n  return Path.isAncestor(path, another)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAncestor/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAncestor(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAncestor/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAncestor(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isAncestor/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.isAncestor(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isBefore/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isBefore/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isBefore/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isBefore(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isBefore/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isBefore/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.isBefore(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isChild/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isChild(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isChild/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isChild(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isChild/before.js",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\n\nexport const test = ({ path, another }) => {\n  return Path.isChild(path, another)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isChild/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isChild(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isChild/below-child.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isChild(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isChild/below-grandchild.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  another: [],\n}\nexport const test = ({ path, another }) => {\n  return Path.isChild(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isChild/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.isChild(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isDescendant/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isDescendant(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isDescendant/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isDescendant(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isDescendant/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isDescendant(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isDescendant/below-child.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isDescendant(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isDescendant/below-grandchild.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  another: [],\n}\nexport const test = ({ path, another }) => {\n  return Path.isDescendant(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isDescendant/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.isDescendant(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isParent/above-grandparent.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isParent(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isParent/above-parent.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isParent(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isParent/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isParent(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isParent/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isParent(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isParent/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isParent(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isParent/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0, 1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.isParent(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isPath/boolean.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = true\nexport const test = path => {\n  return Path.isPath(path)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isPath/empty.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = []\nexport const test = path => {\n  return Path.isPath(path)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isPath/full.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1]\nexport const test = path => {\n  return Path.isPath(path)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isPath/mixed.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [2, 4, 'b']\nexport const test = (value: typeof input) => {\n  return Path.isPath(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isPath/strings.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = ['a', 'b']\nexport const test = path => {\n  return Path.isPath(path)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isSibling/above.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isSibling(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isSibling/after-sibling.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 4],\n  another: [1, 2],\n}\nexport const test = ({ path, another }) => {\n  return Path.isSibling(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isSibling/after.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isSibling(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isSibling/before-sibling.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  another: [0, 3],\n}\nexport const test = ({ path, another }) => {\n  return Path.isSibling(path, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isSibling/before.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 2],\n  another: [1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isSibling(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isSibling/below.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.isSibling(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/isSibling/equal.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  another: [0, 1],\n}\nexport const test = ({ path, another }) => {\n  return Path.isSibling(path, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/levels/reverse.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1, 2]\nexport const test = path => {\n  return Path.levels(path, { reverse: true })\n}\nexport const output = [[0, 1, 2], [0, 1], [0], []]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/levels/success.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1, 2]\nexport const test = path => {\n  return Path.levels(path)\n}\nexport const output = [[], [0], [0, 1], [0, 1, 2]]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/next/success.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1]\nexport const test = path => {\n  return Path.next(path)\n}\nexport const output = [0, 2]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/parent/success.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1]\nexport const test = path => {\n  return Path.parent(path)\n}\nexport const output = [0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/previous/success.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = [0, 1]\nexport const test = path => {\n  return Path.previous(path)\n}\nexport const output = [0, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/relative/grandparent.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1, 2],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.relative(path, another)\n}\nexport const output = [1, 2]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/relative/parent.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  another: [0],\n}\nexport const test = ({ path, another }) => {\n  return Path.relative(path, another)\n}\nexport const output = [1]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/relative/root.tsx",
    "content": "import { Path } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  another: [],\n}\nexport const test = ({ path, another }) => {\n  return Path.relative(path, another)\n}\nexport const output = [0, 1]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/ancestor-sibling-ends-after-to-ancestor.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [4],\n  newPath: [3],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [4, 3, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/ancestor-sibling-ends-after-to-ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [4],\n  newPath: [2],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [4, 3, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/ancestor-sibling-ends-before-to-ancestor.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [2],\n  newPath: [3],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [2, 3, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/ancestor-sibling-ends-before-to-ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [2],\n  newPath: [4],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [2, 3, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/ancestor-to-ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3],\n  newPath: [5, 1],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [4, 1, 3, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/ancestor-to-ends-before.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3],\n  newPath: [2, 5],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [2, 5, 3, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/ends-after-to-no-relation.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3, 4],\n  newPath: [3, 0, 0],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [3, 3, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/ends-before-to-no-relation.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3, 2],\n  newPath: [3, 0, 0],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [3, 2, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/equal-to-ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3, 3],\n  newPath: [3, 5, 0],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [3, 4, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/equal-to-ends-before.js",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3]\n\nconst op = {\n  type: 'move_node',\n  path: [3, 3],\n  newPath: [3, 1, 0],\n}\n\nexport const test = () => {\n  return Path.transform(path, op)\n}\n\nexport const output = [3, 1, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/equal-to-ends-before.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3, 3],\n  newPath: [3, 1, 0],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [3, 1, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/no-relation-to-ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3, 0, 0],\n  newPath: [3, 4],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [3, 3, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/no-relation-to-ends-before.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3, 0, 0],\n  newPath: [3, 2],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [3, 4, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/parent-to-ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3, 3],\n  newPath: [5, 1],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [5, 1, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/parent-to-ends-before.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [3, 3, 3]\nconst op = {\n  type: 'move_node',\n  path: [3, 3],\n  newPath: [2, 1],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [2, 1, 3]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/sibling-ends-after-to-ends-equal.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [0, 1]\nconst op = {\n  type: 'move_node',\n  path: [0, 3],\n  newPath: [0, 1],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [0, 2]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/sibling-ends-after-to-sibling-ends-before.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [0, 1]\nconst op = {\n  type: 'move_node',\n  path: [0, 3],\n  newPath: [0, 0],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [0, 2]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/sibling-ends-before-to-ends-equal.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [0, 1]\nconst op = {\n  type: 'move_node',\n  path: [0, 0],\n  newPath: [0, 1],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [0, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Path/transform/move_node/sibling-ends-before-to-sibling-ends-after.tsx",
    "content": "import { Path } from 'slate'\n\nconst path = [0, 1]\nconst op = {\n  type: 'move_node',\n  path: [0, 0],\n  newPath: [0, 3],\n}\nexport const test = () => {\n  return Path.transform(path, op)\n}\nexport const output = [0, 0]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-after-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = 1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-after-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = 1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-after-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 3,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = 1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-before-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 4,\n  },\n  another: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = -1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-before-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = -1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-before-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = -1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-equal-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = 1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-equal-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = -1\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/compare/path-equal-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 7,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.compare(point, another)\n}\nexport const output = 0\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-after-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-after-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-after-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 3,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-before-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 4,\n  },\n  another: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-before-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-before-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-equal-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-equal-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/equals/path-equal-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 7,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.equals(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-after-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-after-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-after-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 3,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-before-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 4,\n  },\n  another: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-before-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-before-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-equal-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-equal-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isAfter/path-equal-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 7,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isAfter(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-after-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-after-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-after-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 4],\n    offset: 3,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-before-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 4,\n  },\n  another: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-before-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-before-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 0],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-equal-offset-after.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-equal-offset-before.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 0,\n  },\n  another: {\n    path: [0, 1],\n    offset: 3,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isBefore/path-equal-offset-equal.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  point: {\n    path: [0, 1],\n    offset: 7,\n  },\n  another: {\n    path: [0, 1],\n    offset: 7,\n  },\n}\nexport const test = ({ point, another }) => {\n  return Point.isBefore(point, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isPoint/boolean.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Point.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isPoint/custom-property.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  offset: 0,\n  custom: 'value',\n}\nexport const test = value => {\n  return Point.isPoint(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isPoint/object.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {}\nexport const test = value => {\n  return Point.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isPoint/offset.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = 42\nexport const test = value => {\n  return Point.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isPoint/path.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = [0, 1]\nexport const test = value => {\n  return Point.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isPoint/point.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n  offset: 0,\n}\nexport const test = value => {\n  return Point.isPoint(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isPoint/without-offset.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 1],\n}\nexport const test = value => {\n  return Point.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/isPoint/without-path.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  offset: 0,\n}\nexport const test = value => {\n  return Point.isPoint(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/transform/backward-insert-text-after-point.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 0],\n  offset: 0,\n}\n\nexport const test = value => {\n  return Point.transform(\n    value,\n    {\n      type: 'insert_text',\n      path: [0, 0],\n      text: 'a',\n      offset: 1,\n      properties: {},\n    },\n    { affinity: 'backward' }\n  )\n}\nexport const output = {\n  path: [0, 0],\n  offset: 0,\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/transform/backward-insert-text-at-point.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 0],\n  offset: 1,\n}\n\nexport const test = value => {\n  return Point.transform(\n    value,\n    {\n      type: 'insert_text',\n      path: [0, 0],\n      text: 'a',\n      offset: 1,\n      properties: {},\n    },\n    { affinity: 'backward' }\n  )\n}\nexport const output = {\n  path: [0, 0],\n  offset: 1,\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/transform/backward-insert-text-before-point.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 0],\n  offset: 1,\n}\n\nexport const test = value => {\n  return Point.transform(\n    value,\n    {\n      type: 'insert_text',\n      path: [0, 0],\n      text: 'a',\n      offset: 0,\n      properties: {},\n    },\n    { affinity: 'backward' }\n  )\n}\nexport const output = {\n  path: [0, 0],\n  offset: 2,\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/transform/forward-insert-text-after-point.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 0],\n  offset: 0,\n}\n\nexport const test = value => {\n  return Point.transform(\n    value,\n    {\n      type: 'insert_text',\n      path: [0, 0],\n      text: 'a',\n      offset: 1,\n      properties: {},\n    },\n    { affinity: 'forward' }\n  )\n}\nexport const output = {\n  path: [0, 0],\n  offset: 0,\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/transform/forward-insert-text-at-point.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 0],\n  offset: 1,\n}\n\nexport const test = value => {\n  return Point.transform(\n    value,\n    {\n      type: 'insert_text',\n      path: [0, 0],\n      text: 'a',\n      offset: 1,\n      properties: {},\n    },\n    { affinity: 'forward' }\n  )\n}\nexport const output = {\n  path: [0, 0],\n  offset: 2,\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Point/transform/forward-insert-text-before-point.tsx",
    "content": "import { Point } from 'slate'\n\nexport const input = {\n  path: [0, 0],\n  offset: 1,\n}\n\nexport const test = value => {\n  return Point.transform(\n    value,\n    {\n      type: 'insert_text',\n      path: [0, 0],\n      text: 'a',\n      offset: 0,\n      properties: {},\n    },\n    { affinity: 'forward' }\n  )\n}\nexport const output = {\n  path: [0, 0],\n  offset: 2,\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/edges/collapsed.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.edges(range)\n}\nexport const output = [\n  {\n    path: [0],\n    offset: 0,\n  },\n  {\n    path: [0],\n    offset: 0,\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/equals/equal.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [0, 1],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 1],\n      offset: 0,\n    },\n  },\n  another: {\n    anchor: {\n      path: [0, 1],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 1],\n      offset: 0,\n    },\n  },\n}\nexport const test = ({ range, another }) => {\n  return Range.equals(range, another)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/equals/not-equal.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [0, 4],\n      offset: 7,\n    },\n    focus: {\n      path: [0, 4],\n      offset: 7,\n    },\n  },\n  another: {\n    anchor: {\n      path: [0, 1],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 1],\n      offset: 0,\n    },\n  },\n}\nexport const test = ({ range, another }) => {\n  return Range.equals(range, another)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/path-after.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: [4],\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/path-before.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: [0],\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/path-end.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: [3],\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/path-inside.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: [2],\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/path-start.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: [1],\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/point-inside.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: {\n    path: [2],\n    offset: 0,\n  },\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/point-offset-before.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 3,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: {\n    path: [1],\n    offset: 0,\n  },\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/point-path-after.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: {\n    path: [4],\n    offset: 0,\n  },\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/point-path-before.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/includes/point-start.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  range: {\n    anchor: {\n      path: [1],\n      offset: 0,\n    },\n    focus: {\n      path: [3],\n      offset: 0,\n    },\n  },\n  target: {\n    path: [1],\n    offset: 0,\n  },\n}\nexport const test = ({ range, target }) => {\n  return Range.includes(range, target)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isBackward/backward.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [3],\n    offset: 0,\n  },\n  focus: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isBackward(range)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isBackward/collapsed.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isBackward(range)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isBackward/forward.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [3],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isBackward(range)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isCollapsed/collapsed.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isCollapsed(range)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isCollapsed/expanded.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [3],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isCollapsed(range)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isExpanded/collapsed.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isExpanded(range)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isExpanded/expanded.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [3],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isExpanded(range)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isForward/backward.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [3],\n    offset: 0,\n  },\n  focus: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isForward(range)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isForward/collapsed.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isForward(range)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isForward/forward.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [3],\n    offset: 0,\n  },\n}\nexport const test = range => {\n  return Range.isForward(range)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isRange/boolean.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Range.isRange(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isRange/custom-property.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0, 1],\n    offset: 0,\n  },\n  focus: {\n    path: [0, 1],\n    offset: 0,\n  },\n  custom: 'value',\n}\nexport const test = value => {\n  return Range.isRange(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isRange/object.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {}\nexport const test = value => {\n  return Range.isRange(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isRange/range.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0, 1],\n    offset: 0,\n  },\n  focus: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = value => {\n  return Range.isRange(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isRange/without-anchor.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  focus: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = value => {\n  return Range.isRange(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/isRange/without-focus.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\nexport const test = value => {\n  return Range.isRange(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/points/full-selection.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0],\n    offset: 0,\n  },\n  focus: {\n    path: [0],\n    offset: 0,\n  },\n}\nexport const test = value => {\n  return Array.from(Range.points(value))\n}\nexport const output = [\n  [input.anchor, 'anchor'],\n  [input.focus, 'focus'],\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/transform/inward-collapsed.tsx",
    "content": "import { Range } from 'slate'\n\nexport const input = {\n  anchor: {\n    path: [0, 0],\n    offset: 1,\n  },\n  focus: {\n    path: [0, 0],\n    offset: 1,\n  },\n}\nexport const test = value => {\n  return Range.transform(\n    value,\n    {\n      type: 'split_node',\n      path: [0, 0],\n      position: 1,\n      properties: {},\n    },\n    { affinity: 'inward' }\n  )\n}\nexport const output = {\n  anchor: {\n    path: [0, 1],\n    offset: 0,\n  },\n  focus: {\n    path: [0, 1],\n    offset: 0,\n  },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Range/transform/outward-collapsed.tsx",
    "content": "import { Range } from 'slate'\n\n/**\n * If a collapsed Range is transformed with affinity outward by an insert_text operation, it should expand.\n */\n\nexport const input = {\n  anchor: {\n    path: [0, 0],\n    offset: 1,\n  },\n  focus: {\n    path: [0, 0],\n    offset: 1,\n  },\n}\nexport const test = value => {\n  return Range.transform(\n    value,\n    {\n      type: 'insert_text',\n      path: [0, 0],\n      text: 'a',\n      offset: 1,\n      properties: {},\n    },\n    { affinity: 'outward' }\n  )\n}\nexport const output = {\n  anchor: {\n    path: [0, 0],\n    offset: 1,\n  },\n  focus: {\n    path: [0, 0],\n    offset: 2,\n  },\n}\n"
  },
  {
    "path": "packages/slate/test/interfaces/Scrubber/scrubber.ts",
    "content": "import { Node, Scrubber } from 'slate'\n\nexport const input = {\n  customField: 'some very long custom field value that will get scrubbed',\n  anotherField: 'this field should not get scrambled',\n}\n\nexport const test = (value: Node) => {\n  Scrubber.setScrubber((key, value) =>\n    key === 'customField' ? '... scrubbed ...' : value\n  )\n  const stringified = Scrubber.stringify(value)\n  Scrubber.setScrubber(undefined)\n\n  const unmarshaled = JSON.parse(stringified)\n  return (\n    // ensure that first field has been scrubbed\n    unmarshaled.customField === '... scrubbed ...' &&\n    // ensure that second field is unaltered\n    unmarshaled.anotherField === input.anotherField\n  )\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/decorations/adjacent.js",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    anchor: {\n      path: [0],\n      offset: 1,\n    },\n    focus: {\n      path: [0],\n      offset: 2,\n    },\n    decoration1: 'decoration1',\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 2,\n    },\n    focus: {\n      path: [0],\n      offset: 3,\n    },\n    decoration2: 'decoration2',\n  },\n]\n\nexport const test = decorations => {\n  return Text.decorations({ text: 'abcd', mark: 'mark' }, decorations)\n}\n\nexport const output = [\n  {\n    leaf: {\n      text: 'a',\n      mark: 'mark',\n    },\n    position: { start: 0, end: 1, isFirst: true },\n  },\n  {\n    leaf: {\n      text: 'b',\n      mark: 'mark',\n      decoration1: 'decoration1',\n    },\n    position: { start: 1, end: 2 },\n  },\n  {\n    leaf: {\n      text: 'c',\n      mark: 'mark',\n      decoration2: 'decoration2',\n    },\n    position: { start: 2, end: 3 },\n  },\n  {\n    leaf: {\n      text: 'd',\n      mark: 'mark',\n    },\n    position: { start: 3, end: 4, isLast: true },\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/decorations/collapse.js",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    anchor: {\n      path: [0],\n      offset: 1,\n    },\n    focus: {\n      path: [0],\n      offset: 2,\n    },\n    decoration1: 'decoration1',\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 2,\n    },\n    focus: {\n      path: [0],\n      offset: 2,\n    },\n    decoration2: 'decoration2',\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 2,\n    },\n    focus: {\n      path: [0],\n      offset: 3,\n    },\n    decoration3: 'decoration3',\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 4,\n    },\n    focus: {\n      path: [0],\n      offset: 4,\n    },\n    decoration4: 'decoration4',\n  },\n]\n\nexport const test = decorations => {\n  return Text.decorations({ text: 'abcd', mark: 'mark' }, decorations)\n}\n\nexport const output = [\n  {\n    leaf: {\n      text: 'a',\n      mark: 'mark',\n    },\n    position: { start: 0, end: 1, isFirst: true },\n  },\n  {\n    leaf: {\n      text: 'b',\n      mark: 'mark',\n      decoration1: 'decoration1',\n    },\n    position: { start: 1, end: 2 },\n  },\n  {\n    leaf: {\n      text: '',\n      mark: 'mark',\n      decoration1: 'decoration1',\n      decoration2: 'decoration2',\n      decoration3: 'decoration3',\n    },\n    position: { start: 2, end: 2 },\n  },\n  {\n    leaf: {\n      text: 'c',\n      mark: 'mark',\n      decoration3: 'decoration3',\n    },\n    position: { start: 2, end: 3 },\n  },\n  {\n    leaf: {\n      text: 'd',\n      mark: 'mark',\n    },\n    position: { start: 3, end: 4 },\n  },\n  {\n    leaf: {\n      text: '',\n      mark: 'mark',\n      decoration4: 'decoration4',\n    },\n    position: { start: 4, end: 4, isLast: true },\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/decorations/end.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    anchor: {\n      path: [0],\n      offset: 2,\n    },\n    focus: {\n      path: [0],\n      offset: 3,\n    },\n    decoration: 'decoration',\n  },\n]\nexport const test = decorations => {\n  return Text.decorations({ text: 'abc', mark: 'mark' }, decorations)\n}\nexport const output = [\n  {\n    leaf: {\n      text: 'ab',\n      mark: 'mark',\n    },\n    position: { start: 0, end: 2, isFirst: true },\n  },\n  {\n    leaf: {\n      text: 'c',\n      mark: 'mark',\n      decoration: 'decoration',\n    },\n    position: { start: 2, end: 3, isLast: true },\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/decorations/intersect.js",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    anchor: {\n      path: [0],\n      offset: 1,\n    },\n    focus: {\n      path: [0],\n      offset: 5,\n    },\n    decoration1: 'decoration1',\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 1,\n    },\n    focus: {\n      path: [0],\n      offset: 3,\n    },\n    decoration2: 'decoration2',\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 2,\n    },\n    focus: {\n      path: [0],\n      offset: 2,\n    },\n    decoration3: 'decoration3',\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 2,\n    },\n    focus: {\n      path: [0],\n      offset: 4,\n    },\n    decoration4: 'decoration4',\n  },\n]\n\nexport const test = decorations => {\n  return Text.decorations({ text: 'abcdef', mark: 'mark' }, decorations)\n}\n\nexport const output = [\n  {\n    leaf: {\n      text: 'a',\n      mark: 'mark',\n    },\n    position: { start: 0, end: 1, isFirst: true },\n  },\n  {\n    leaf: {\n      text: 'b',\n      mark: 'mark',\n      decoration1: 'decoration1',\n      decoration2: 'decoration2',\n    },\n    position: { start: 1, end: 2 },\n  },\n  {\n    leaf: {\n      text: '',\n      mark: 'mark',\n      decoration1: 'decoration1',\n      decoration2: 'decoration2',\n      decoration3: 'decoration3',\n      decoration4: 'decoration4',\n    },\n    position: { start: 2, end: 2 },\n  },\n  {\n    leaf: {\n      text: 'c',\n      mark: 'mark',\n      decoration1: 'decoration1',\n      decoration2: 'decoration2',\n      decoration4: 'decoration4',\n    },\n    position: { start: 2, end: 3 },\n  },\n  {\n    leaf: {\n      text: 'd',\n      mark: 'mark',\n      decoration1: 'decoration1',\n      decoration4: 'decoration4',\n    },\n    position: { start: 3, end: 4 },\n  },\n  {\n    leaf: {\n      text: 'e',\n      mark: 'mark',\n      decoration1: 'decoration1',\n    },\n    position: { start: 4, end: 5 },\n  },\n  {\n    leaf: {\n      text: 'f',\n      mark: 'mark',\n    },\n    position: { start: 5, end: 6, isLast: true },\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/decorations/merge.ts",
    "content": "import { Text } from 'slate'\n\nconst merge = (leaf: Text, dec: { decoration: number[] }) => {\n  const { decoration, ...rest } = dec\n  leaf.decoration = [...(leaf.decoration ?? []), ...decoration]\n  Object.assign(leaf, rest)\n}\n\nexport const input = [\n  {\n    anchor: {\n      path: [0],\n      offset: 0,\n    },\n    focus: {\n      path: [0],\n      offset: 2,\n    },\n    merge,\n    decoration: [1, 2, 3],\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 1,\n    },\n    focus: {\n      path: [0],\n      offset: 3,\n    },\n    merge,\n    decoration: [4, 5, 6],\n  },\n]\nexport const test = decorations => {\n  return Text.decorations({ text: 'abc', mark: 'mark' }, decorations)\n}\nexport const output = [\n  {\n    leaf: {\n      text: 'a',\n      mark: 'mark',\n      decoration: [1, 2, 3],\n    },\n    position: { start: 0, end: 1, isFirst: true },\n  },\n  {\n    leaf: {\n      text: 'b',\n      mark: 'mark',\n      decoration: [1, 2, 3, 4, 5, 6],\n    },\n    position: { start: 1, end: 2 },\n  },\n  {\n    leaf: {\n      text: 'c',\n      mark: 'mark',\n      decoration: [4, 5, 6],\n    },\n    position: { start: 2, end: 3, isLast: true },\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/decorations/middle.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    anchor: {\n      path: [0],\n      offset: 1,\n    },\n    focus: {\n      path: [0],\n      offset: 2,\n    },\n    decoration: 'decoration',\n  },\n]\nexport const test = decorations => {\n  return Text.decorations({ text: 'abc', mark: 'mark' }, decorations)\n}\nexport const output = [\n  {\n    leaf: {\n      text: 'a',\n      mark: 'mark',\n    },\n    position: { start: 0, end: 1, isFirst: true },\n  },\n  {\n    leaf: {\n      text: 'b',\n      mark: 'mark',\n      decoration: 'decoration',\n    },\n    position: { start: 1, end: 2 },\n  },\n  {\n    leaf: {\n      text: 'c',\n      mark: 'mark',\n    },\n    position: { start: 2, end: 3, isLast: true },\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/decorations/overlapping.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    anchor: {\n      path: [0],\n      offset: 1,\n    },\n    focus: {\n      path: [0],\n      offset: 2,\n    },\n    decoration1: 'decoration1',\n  },\n  {\n    anchor: {\n      path: [0],\n      offset: 0,\n    },\n    focus: {\n      path: [0],\n      offset: 3,\n    },\n    decoration2: 'decoration2',\n  },\n]\nexport const test = decorations => {\n  return Text.decorations({ text: 'abc', mark: 'mark' }, decorations)\n}\nexport const output = [\n  {\n    leaf: {\n      text: 'a',\n      mark: 'mark',\n      decoration2: 'decoration2',\n    },\n    position: { start: 0, end: 1, isFirst: true },\n  },\n  {\n    leaf: {\n      text: 'b',\n      mark: 'mark',\n      decoration1: 'decoration1',\n      decoration2: 'decoration2',\n    },\n    position: { start: 1, end: 2 },\n  },\n  {\n    leaf: {\n      text: 'c',\n      mark: 'mark',\n      decoration2: 'decoration2',\n    },\n    position: { start: 2, end: 3, isLast: true },\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/decorations/start.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    anchor: {\n      path: [0],\n      offset: 0,\n    },\n    focus: {\n      path: [0],\n      offset: 1,\n    },\n    decoration: 'decoration',\n  },\n]\nexport const test = decorations => {\n  return Text.decorations({ text: 'abc', mark: 'mark' }, decorations)\n}\nexport const output = [\n  {\n    leaf: {\n      text: 'a',\n      mark: 'mark',\n      decoration: 'decoration',\n    },\n    position: { start: 0, end: 1, isFirst: true },\n  },\n  {\n    leaf: {\n      text: 'bc',\n      mark: 'mark',\n    },\n    position: { start: 1, end: 3, isLast: true },\n  },\n]\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/equals/complex-exact-equals.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  textNodeA: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n  textNodeB: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n}\n\nexport const test = ({ textNodeA, textNodeB }) => {\n  return Text.equals(textNodeA, textNodeB, { loose: false })\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/equals/complex-exact-not-equal.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  textNodeA: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n  textNodeB: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: true },\n  },\n}\n\nexport const test = ({ textNodeA, textNodeB }) => {\n  return Text.equals(textNodeA, textNodeB, { loose: false })\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/equals/complex-loose-equals.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  textNodeA: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n  textNodeB: {\n    text: 'diff text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n}\n\nexport const test = ({ textNodeA, textNodeB }) => {\n  return Text.equals(textNodeA, textNodeB, { loose: true })\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/equals/complex-loose-not-equal.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  textNodeA: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n  textNodeB: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: true },\n  },\n}\n\nexport const test = ({ textNodeA, textNodeB }) => {\n  return Text.equals(textNodeA, textNodeB, { loose: false })\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/equals/exact-equals.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  textNodeA: { text: 'same text', bold: true },\n  textNodeB: { text: 'same text', bold: true },\n}\n\nexport const test = ({ textNodeA, textNodeB }) => {\n  return Text.equals(textNodeA, textNodeB, { loose: false })\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/equals/exact-not-equal.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  textNodeA: { text: 'same text', bold: true },\n  textNodeB: { text: 'same text', bold: true, italic: true },\n}\n\nexport const test = ({ textNodeA, textNodeB }) => {\n  return Text.equals(textNodeA, textNodeB, { loose: false })\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/equals/loose-equals.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  textNodeA: { text: 'some text', bold: true },\n  textNodeB: { text: 'diff text', bold: true },\n}\n\nexport const test = ({ textNodeA, textNodeB }) => {\n  return Text.equals(textNodeA, textNodeB, { loose: true })\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/equals/loose-not-equal.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  textNodeA: { text: 'same text', bold: true },\n  textNodeB: { text: 'same text', bold: true, italic: true },\n}\n\nexport const test = ({ textNodeA, textNodeB }) => {\n  return Text.equals(textNodeA, textNodeB, { loose: true })\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isText/boolean.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Text.isText(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isText/custom-property.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: '',\n  custom: true,\n}\nexport const test = value => {\n  return Text.isText(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isText/object.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {}\nexport const test = value => {\n  return Text.isText(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isText/text-full.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: 'string',\n}\nexport const test = value => {\n  return Text.isText(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isText/text.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: '',\n}\nexport const test = value => {\n  return Text.isText(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isText/without-text.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {}\nexport const test = value => {\n  return Text.isText(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isTextList/boolean.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = true\nexport const test = value => {\n  return Text.isTextList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isTextList/empty.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = []\nexport const test = value => {\n  return Text.isTextList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isTextList/full-element.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    children: [],\n  },\n]\nexport const test = value => {\n  return Text.isTextList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isTextList/full-text.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    text: '',\n  },\n]\nexport const test = value => {\n  return Text.isTextList(value)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isTextList/full-value.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    children: [],\n    selection: null,\n  },\n]\nexport const test = value => {\n  return Text.isTextList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isTextList/not-full-text.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = [\n  {\n    text: '',\n  },\n  {\n    type: 'set_node',\n    path: [0],\n    properties: {},\n    newProperties: {},\n  },\n]\nexport const test = value => {\n  return Text.isTextList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/isTextList/text.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: '',\n}\nexport const test = value => {\n  return Text.isTextList(value)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/matches/empty-true.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: { text: '', bold: true },\n  props: {},\n}\nexport const test = ({ text, props }) => {\n  return Text.matches(text, props)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/matches/match-false.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: { text: '', bold: true },\n  props: { italic: true },\n}\nexport const test = ({ text, props }) => {\n  return Text.matches(text, props)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/matches/match-true.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: { text: '', bold: true },\n  props: { bold: true },\n}\nexport const test = ({ text, props }) => {\n  return Text.matches(text, props)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/matches/partial-false.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: { text: '', bold: true, italic: true },\n  props: { underline: true },\n}\nexport const test = ({ text, props }) => {\n  return Text.matches(text, props)\n}\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/matches/partial-true.tsx",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: { text: '', bold: true, italic: true },\n  props: { bold: true },\n}\nexport const test = ({ text, props }) => {\n  return Text.matches(text, props)\n}\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/matches/undefined-false.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: { foo: undefined },\n  props: { bar: undefined },\n}\n\nexport const test = ({ text, props }) => {\n  return Text.matches(text, props)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/interfaces/Text/matches/undefined-true.js",
    "content": "import { Text } from 'slate'\n\nexport const input = {\n  text: { foo: undefined },\n  props: { foo: undefined },\n}\n\nexport const test = ({ text, props }) => {\n  return Text.matches(text, props)\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/jsx.d.ts",
    "content": "// This allows tests to include Slate Nodes written in JSX without TypeScript complaining.\ndeclare namespace jsx.JSX {\n  interface IntrinsicElements {\n    [elemName: string]: any // eslint-disable-line\n  }\n}\n"
  },
  {
    "path": "packages/slate/test/normalization/block/insert-custom-block.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\nimport { Editor, Element, Transforms } from 'slate'\n\nexport const input = (\n  <editor>\n    <element type=\"body\" />\n  </editor>\n)\n\n// patch in a custom normalizer that inserts empty paragraphs in the body instead of text nodes\n// this test also verifies the new node itself is also normalized, because it's inserting a non-normalized node\nconst editor = input as unknown as Editor\nconst defaultNormalize = editor.normalizeNode\neditor.normalizeNode = entry => {\n  const [node, path] = entry\n  if (\n    Element.isElement(node) &&\n    node.children.length === 0 &&\n    (node as any).type === 'body'\n  ) {\n    const child = { type: 'paragraph', children: [] }\n    Transforms.insertNodes(editor, child, {\n      at: path.concat(0),\n      voids: true,\n    })\n  } else {\n    defaultNormalize(entry)\n  }\n}\n\nexport const output = (\n  <editor>\n    <element type=\"body\">\n      <element type=\"paragraph\">\n        <text />\n      </element>\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/block/insert-text.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block />\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/block/remove-block.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>one</text>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>onetwo</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/block/remove-inline-with-wrapping.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const withFallbackElement = true\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <inline>two</inline>\n      <block>three</block>\n      <inline>four</inline>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>\n        <text />\n        <inline>two</inline>\n        <text />\n      </block>\n      <block>three</block>\n      <block>\n        <text />\n        <inline>four</inline>\n        <text />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/block/remove-inline.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <inline>two</inline>\n      <block>three</block>\n      <inline>four</inline>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>three</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/editor/remove-inline-with-wrapping.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const withFallbackElement = true\n\nexport const input = (\n  <editor>\n    <inline>one</inline>\n    <block>two</block>\n    <inline>three</inline>\n    <block>four</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>one</inline>\n      <text />\n    </block>\n    <block>two</block>\n    <block>\n      <text />\n      <inline>three</inline>\n      <text />\n    </block>\n    <block>four</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/editor/remove-inline.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <inline>one</inline>\n    <block>two</block>\n    <inline>three</inline>\n    <block>four</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>two</block>\n    <block>four</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/editor/remove-text-with-wrapping.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const withFallbackElement = true\n\nexport const input = (\n  <editor>\n    <text>one</text>\n    <block>two</block>\n    <text>three</text>\n    <block>four</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>one</text>\n    </block>\n    <block>two</block>\n    <block>\n      <text>three</text>\n    </block>\n    <block>four</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/editor/remove-text.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <text>one</text>\n    <block>two</block>\n    <text>three</text>\n    <block>four</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>two</block>\n    <block>four</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/inline/insert-adjacent-text.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <inline>one</inline>\n      <inline>two</inline>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>one</inline>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/inline/remove-block.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <block>one</block>\n        <text>two</text>\n        <block>three</block>\n        <text>four</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text>onetwothreefour</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/text/merge-adjacent-empty-after-nested.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <block>\n        <cursor />\n        <text />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <block>\n        <cursor />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/text/merge-adjacent-empty-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <cursor />\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/text/merge-adjacent-empty-before-inline.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>not empty</text>\n      <text a />\n      <inline>inline</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>not empty</text>\n      <inline>inline</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/text/merge-adjacent-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/text/merge-adjacent-match-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>1</text>\n      <text>2</text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>12</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/text/merge-adjacent-match.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text a>1</text>\n      <text a>2</text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text a>12</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/void/block-insert-text.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block void />\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/normalization/void/inline-insert-text.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void />\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/move_node/path-equals-new-path.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>1</element>\n    <element>2</element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'move_node',\n    path: [0],\n    newPath: [0],\n  },\n]\nexport const output = (\n  <editor>\n    <element>1</element>\n    <element>2</element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/move_node/path-not-equals-new-path.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>1</element>\n    <element>2</element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'move_node',\n    path: [0],\n    newPath: [1],\n  },\n]\nexport const output = (\n  <editor>\n    <element>2</element>\n    <element>1</element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-aunt-text-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n      <inline>\n        <text id=\"0\">a</text>\n        <text id=\"1\">\n          <cursor />\n        </text>\n      </inline>\n      <text>b</text>\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [0, 1, 1],\n    node: { text: '', id: '1' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text />\n      <inline>\n        <text id=\"0\">\n          a<cursor />\n        </text>\n      </inline>\n      <text>b</text>\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-aunt-text-before.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../'\n\nexport const input = (\n  <editor>\n    <element>\n      <text>a</text>\n      <inline>\n        <text id=\"0\">\n          <cursor />\n        </text>\n        <text id=\"1\">b</text>\n      </inline>\n      <text />\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [0, 1, 0],\n    node: { text: '', id: '0' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text>a</text>\n      <inline>\n        <text id=\"1\">\n          <cursor />b\n        </text>\n      </inline>\n      <text />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-nested.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n    <element>\n      <element>\n        <cursor />\n        <text />\n      </element>\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [1, 0, 0],\n    node: { text: '' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text />\n    </element>\n    <element>\n      <element>\n        <cursor />\n      </element>\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-sibling-inline-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../'\n\nexport const input = (\n  <editor>\n    <element>a</element>\n    <element>\n      <text>\n        <cursor />\n      </text>\n      <inline>b</inline>\n      <text />\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [1, 0],\n    node: { text: '' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>a</element>\n    <element>\n      {/* Recreated by normalizer */}\n      <text />\n      <inline>\n        <cursor />b\n      </inline>\n      <text />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-sibling-inline-before-text-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n      <inline>a</inline>\n      <text id=\"0\">\n        <cursor />\n      </text>\n      <text id=\"1\">b</text>\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [0, 2],\n    node: { text: '', id: '0' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text />\n      <inline>a</inline>\n      <text id=\"1\">\n        <cursor />b\n      </text>\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-sibling-inline-before.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n      <inline>a</inline>\n      <text>\n        <cursor />\n      </text>\n    </element>\n    <element>b</element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [0, 2],\n    node: { text: '' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text />\n      <inline>\n        a<cursor />\n      </inline>\n      {/* Recreated by normalizer */}\n      <text />\n    </element>\n    <element>b</element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-sibling-text-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>a</element>\n    <element>\n      <text id=\"0\">\n        <cursor />\n      </text>\n      <text id=\"1\">b</text>\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [1, 0],\n    node: { text: '', id: '0' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>a</element>\n    <element>\n      <text id=\"1\">\n        <cursor />b\n      </text>\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-sibling-text-before-inline-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../'\n\nexport const input = (\n  <editor>\n    <element>\n      <text id=\"0\">a</text>\n      <text id=\"1\">\n        <cursor />\n      </text>\n      <inline>b</inline>\n      <text />\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [0, 1],\n    node: { text: '', id: '1' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text id=\"0\">\n        a<cursor />\n      </text>\n      <inline>b</inline>\n      <text />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-sibling-text-before.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text id=\"0\">a</text>\n      <text id=\"1\">\n        <cursor />\n      </text>\n    </element>\n    <element>b</element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [0, 1],\n    node: { text: '', id: '1' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text id=\"0\">\n        a<cursor />\n      </text>\n    </element>\n    <element>b</element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor-sibling-text-both-sides.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text id=\"0\">a</text>\n      <text id=\"1\">\n        <cursor />\n      </text>\n      <text id=\"2\">b</text>\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [0, 1],\n    node: { text: '', id: '1' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text id=\"0\">\n        a<cursor />\n      </text>\n      <text id=\"2\">b</text>\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_node/cursor.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text />\n    </element>\n    <element>\n      <cursor />\n      <text />\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_node',\n    path: [1, 0],\n    node: { text: '' },\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text />\n    </element>\n    <element>\n      <cursor />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/anchor-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      wor\n      <anchor />d<focus />\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      w<anchor />d<focus />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/anchor-before.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      w<anchor />\n      ord\n      <focus />\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      w<anchor />d<focus />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/anchor-middle.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      wo\n      <anchor />\n      rd\n      <focus />\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      w<anchor />d<focus />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/cursor-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      wor\n      <cursor />d\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      w<cursor />d\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/cursor-before.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      w<cursor />\n      ord\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      w<cursor />d\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/cursor-middle.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      wo\n      <cursor />\n      rd\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      w<cursor />d\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/focus-after.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <anchor />\n      wor\n      <focus />d\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <anchor />w<focus />d\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/focus-before.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <anchor />w<focus />\n      ord\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <anchor />w<focus />d\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/remove_text/focus-middle.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <anchor />\n      wo\n      <focus />\n      rd\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'remove_text',\n    path: [0, 0],\n    offset: 1,\n    text: 'or',\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <anchor />w<focus />d\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/set_node/remove-null.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\nimport { Transforms, Editor } from 'slate'\n\nexport const input = (\n  <editor>\n    <element>\n      <text someKey />\n    </element>\n  </editor>\n)\n\n// this is supported for backwards compatibility only; newProperties should omit removed values.\nexport const operations = [\n  {\n    type: 'set_node',\n    path: [0, 0],\n    properties: { someKey: true },\n    newProperties: { someKey: null },\n  },\n]\n\nexport const output = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/set_node/remove-omit.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\nimport { Transforms, Editor } from 'slate'\n\nexport const input = (\n  <editor>\n    <element>\n      <text someKey />\n    </element>\n  </editor>\n)\n\nexport const operations = [\n  {\n    type: 'set_node',\n    path: [0, 0],\n    properties: { someKey: true },\n    newProperties: {},\n  },\n]\n\nexport const output = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/set_node/remove-undefined.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\nimport { Transforms, Editor } from 'slate'\n\nexport const input = (\n  <editor>\n    <element>\n      <text someKey />\n    </element>\n  </editor>\n)\n\n// this is supported for backwards compatibility only; newProperties should omit removed values.\nexport const operations = [\n  {\n    type: 'set_node',\n    path: [0, 0],\n    properties: { someKey: true },\n    newProperties: { someKey: undefined },\n  },\n]\n\nexport const output = (\n  <editor>\n    <element>\n      <text />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/set_selection/custom-props.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\nimport { Transforms, Editor } from 'slate'\n\nexport const input = (\n  <editor>\n    <element>\n      a<cursor />\n    </element>\n  </editor>\n)\n\nexport const operations = [\n  {\n    type: 'set_selection',\n    oldProperties: {},\n    newProperties: { custom: 123 },\n  },\n]\n\nexport const output = (\n  <editor>\n    <element>\n      a<cursor />\n    </element>\n  </editor>\n)\n\nTransforms.setSelection(output, { custom: 123 })\n"
  },
  {
    "path": "packages/slate/test/operations/set_selection/remove.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\nimport { Transforms, Editor } from 'slate'\n\nexport const input = (\n  <editor>\n    <element>\n      a<cursor />\n    </element>\n  </editor>\n)\n\nTransforms.setSelection(input, { custom: 123 })\n\nexport const operations = [\n  {\n    type: 'set_selection',\n    oldProperties: {},\n    newProperties: { custom: null },\n  },\n]\n\nexport const output = (\n  <editor>\n    <element>\n      a<cursor />\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/split_node/element-empty-properties.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <element data>\n      before text\n      <inline>hyperlink</inline>\n      after text\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'split_node',\n    path: [0],\n    position: 1,\n    properties: {},\n  },\n]\nexport const output = (\n  <editor>\n    <element data>before text</element>\n    <element>\n      <text />\n      <inline>hyperlink</inline>\n      after text\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/split_node/element.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <element data>\n      before text\n      <inline>hyperlink</inline>\n      after text\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'split_node',\n    path: [0],\n    position: 1,\n    properties: {\n      data: true,\n    },\n  },\n]\nexport const output = (\n  <editor>\n    <element data>before text</element>\n    <element data>\n      <text />\n      <inline>hyperlink</inline>\n      after text\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/split_node/text-empty-properties.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <element>\n      <text bold>some text</text>\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'split_node',\n    path: [0, 0],\n    position: 5,\n    properties: {},\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text bold>some </text>\n      <text>text</text>\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/operations/split_node/text.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <element>\n      <text bold>some text</text>\n    </element>\n  </editor>\n)\nexport const operations = [\n  {\n    type: 'split_node',\n    path: [0, 0],\n    position: 5,\n    properties: {\n      bold: true,\n    },\n  },\n  {\n    type: 'split_node',\n    path: [0],\n    position: 1,\n    properties: {},\n  },\n]\nexport const output = (\n  <editor>\n    <element>\n      <text bold>some </text>\n    </element>\n    <element>\n      <text bold>text</text>\n    </element>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/emojis/inline-end-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word🇫🇷\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/emojis/inline-middle-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wor📛\n        <cursor />d\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wor\n        <cursor />d\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/emojis/inline-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character' })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />\n        📛rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/emojis/inline-only-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        📛\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/emojis/inline-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character' })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        📛word\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        word\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/emojis/text-end-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      word📛\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/emojis/text-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character' })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      📛word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.delete(editor, { at: [1] })\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/path/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>one</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.delete(editor, { at: [0, 1] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/path/selection-inside.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      <text>\n        t<cursor />\n        wo\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.delete(editor, { at: [1, 0] })\n}\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/path/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { at: [0, 0] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>one</text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/basic-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      <cursor />\n      two\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n      two\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/basic.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n    <block>another</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n      another\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/depths-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>Hello</block>\n    <block>\n      <block>\n        <cursor />\n        world!\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      Hello\n      <cursor />\n      world!\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/inline-before-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      <cursor />\n      two\n      <inline>three</inline>\n      four\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n      two\n      <inline>three</inline>\n      four\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/inline-before.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n    <block>\n      <text />\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/inline-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two\n        <cursor />\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>three</inline>\n      four\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>two</inline>\n      <text>\n        <cursor />\n      </text>\n      <inline>three</inline>\n      four\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/inline-inside-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>two</inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        three\n      </inline>\n      four\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>two</inline>\n      <text>\n        <cursor />\n      </text>\n      <inline>three</inline>\n      four\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/inline-void-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text />\n      </inline>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n    <block>\n      <text />\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n    <block>\n      two<inline>three</inline>four\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n      two<inline>three</inline>four\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/nested-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>word</block>\n      <block>\n        <cursor />\n        another\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        word\n        <cursor />\n        another\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/point/nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        word\n        <cursor />\n      </block>\n      <block>another</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        word\n        <cursor />\n        another\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-across-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>two</block>\n    <block>three</block>\n    <block>\n      four\n      <focus />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-across-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        one\n        <anchor />\n      </block>\n      <block>two</block>\n    </block>\n    <block>\n      <block>\n        <focus />\n        three\n      </block>\n      <block>four</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        one\n        <cursor />\n        three\n      </block>\n    </block>\n    <block>\n      <block>four</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      other\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-depths-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        one\n        <anchor />\n      </block>\n    </block>\n    <block>\n      <focus />\n      two\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        one\n        <cursor />\n        two\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-depths.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block>\n      <block>middle</block>\n      <block>\n        an\n        <focus />\n        other\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      other\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-hanging-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>two</block>\n    <block>\n      <focus />\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n    <block>three</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-hanging-single.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      <focus />\n      two\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-inline-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <anchor />\n        rd\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        an\n        <focus />\n        other\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>wo</inline>\n      <text />\n      <inline>\n        <cursor />\n        other\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-inline-over.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      t<anchor />\n      wo<inline>three</inline>fou\n      <focus />r\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      t<cursor />r\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-join-edges.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <anchor />\n    </block>\n    <block>\n      <focus />\n      another\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n      another\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-join-inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <anchor />\n    </block>\n    <block>\n      <focus />\n      two<inline>three</inline>four\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n      two<inline>three</inline>four\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-join-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          word\n          <anchor />\n        </block>\n        <block>\n          <focus />\n          another\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          word\n          <cursor />\n          another\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      t<anchor />w<focus />o\n    </block>\n    <block>three</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      t<cursor />o\n    </block>\n    <block>three</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <anchor />\n        one\n      </block>\n      <block>\n        <block>two</block>\n        <block>\n          <block>\n            three\n            <focus />\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <cursor />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-void-end-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is a first paragraph\n    </block>\n    <block>This is the second paragraph</block>\n    <block void />\n    <block>\n      <focus />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/block-void-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      This is a first paragraph\n    </block>\n    <block>This is the second paragraph</block>\n    <block void>\n      <focus />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/character-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      wor\n      <anchor />d<focus />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wor\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/character-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      w<anchor />o<focus />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      w<cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/character-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />w<focus />\n      ord\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      ord\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/inline-after.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one<inline>two</inline>\n      <anchor />a<focus />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one<inline>two</inline>\n      <text>\n        <cursor />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/inline-inside.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <anchor />r<focus />d\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />d\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/inline-over.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      o<anchor />\n      ne<inline>two</inline>thre\n      <focus />e\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      o<cursor />e\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/inline-whole.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <anchor />\n        word\n        <focus />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/selection/word.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      word\n      <focus />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/document-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/document-start-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/empty-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character' })\n}\nexport const input = (\n  <editor>\n    <block>\n      wor\n      <cursor />d\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wor\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/first-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      w<cursor />\n      ord\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      ord\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/first.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character' })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      ord\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/inline-after-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>two</inline>\n      a<cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>two</inline>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/inline-after.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>two</inline>\n      <cursor />a\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>two</inline>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/inline-before-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      a<cursor />\n      <inline>two</inline>\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      <inline>two</inline>\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/inline-before.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character' })\n}\nexport const input = (\n  <editor>\n    <block>\n      a<cursor />\n      <inline>two</inline>\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      a\n      <inline>\n        <cursor />\n        wo\n      </inline>\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/inline-end-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>two</inline>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>\n        tw\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/inline-inside-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        a<cursor />\n      </inline>\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>\n        <cursor />\n      </inline>\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/inline-inside.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        <cursor />a\n      </inline>\n      two\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>\n        <cursor />\n      </inline>\n      two\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/last.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character' })\n}\nexport const input = (\n  <editor>\n    <block>\n      wor\n      <cursor />d\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wor\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/middle-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      w<cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character' })\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wo\n      <cursor />d\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/multiple-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', distance: 3, reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      w<cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', distance: 3 })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />d\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/thai-multiple-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', distance: 2, reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      พี่\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      พ\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-character/thai-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'character', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      พี่\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      พี\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-line/text-end-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'line', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two three\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-line/text-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\nimport { cloneDeep } from 'lodash'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'line' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two three\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-line/text-middle-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'line', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two thr\n      <cursor />\n      ee\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      ee\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-line/text-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'line' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two thr\n      <cursor />\n      ee\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two thr\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-line/text-start-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\nimport { cloneDeep } from 'lodash'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'line', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one two three\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-line/text-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'line' })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one two three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-word/block-join-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'word', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>word</block>\n    <block>\n      <cursor />\n      another\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n      another\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-word/block-join.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'word' })\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n    <block>another</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n      another\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-word/text-end-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'word', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two three\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-word/text-middle-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'word', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two thr\n      <cursor />\n      ee\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two <cursor />\n      ee\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-word/text-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'word' })\n}\nexport const input = (\n  <editor>\n    <block>\n      o<cursor />\n      ne two three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      o<cursor /> two three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/unit-word/text-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { unit: 'word' })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one two three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor /> two three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-across-backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block void>\n      <focus />\n    </block>\n    <block>one</block>\n    <block>\n      two\n      <anchor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-after-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block void>\n      <text />\n    </block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-before.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n    <block void>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-both.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block void>\n      <anchor />\n    </block>\n    <block void>\n      <focus />\n    </block>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block void>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-hanging-from.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block void>\n      <anchor />\n    </block>\n    <block>\n      <focus />\n      one\n    </block>\n    <block>two</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-hanging-into.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block void>\n      <focus />\n      two\n    </block>\n    <block>three</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n    <block>three</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-only.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block void>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = <editor />\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-start-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block void>\n      <anchor />\n    </block>\n    <block void>\n      <text />\n    </block>\n    <block>\n      <focus />\n      one\n    </block>\n    <block>two</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block void>\n      <anchor />\n    </block>\n    <block>one</block>\n    <block>\n      tw\n      <focus />o\n    </block>\n    <block>three</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />o\n    </block>\n    <block>three</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/inline-after-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text />\n      </inline>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>\n        <cursor />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/inline-before.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        <cursor />\n      </text>\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>\n        <cursor />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/inline-into.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n      <inline>\n        t<focus />\n        wo\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        wo\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/inline-over.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>two</block>\n    <block>\n      three\n      <inline void>four</inline>\n      <focus />\n      five\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      five\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/inline-start-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline void>\n        <anchor />\n      </inline>\n      two\n    </block>\n    <block>\n      three <focus />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/inline-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline void>\n        <anchor />\n      </inline>\n      <focus />\n      two\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n      two\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/read-only-inline-after-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline readOnly>read-only inline</inline>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>\n        <cursor />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-false/read-only-inline-within.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline readOnly>\n        read-only <cursor />\n        inline\n      </inline>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>\n        <cursor />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-true/across-blocks.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <text>\n        on\n        <anchor />e\n      </text>\n    </block>\n    <block void>\n      <text>\n        t<focus />\n        wo\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.delete(editor, { voids: true })\n}\nexport const output = (\n  <editor>\n    <block void>\n      on\n      <cursor />\n      wo\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/delete/voids-true/path.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <text>one</text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.delete(editor, { at: [0, 0], voids: true })\n}\nexport const output = (\n  <editor>\n    <block void>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/deselect/basic.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  Transforms.deselect(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/general/invalid-insert_node.tsx",
    "content": "/** @jsx jsx */\nimport assert from 'assert'\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  // position 2 is past the end of the block children\n  assert.throws(() => {\n    Transforms.insertNodes(editor, <text>another</text>, { at: [0, 2] })\n  }, 'Inserting a node after the end of a block should fail')\n  // 1 is _at_ the end, so it's still valid\n  Transforms.insertNodes(editor, <text>another</text>, { at: [0, 1] })\n}\nexport const output = (\n  <editor>\n    <block>\n      word\n      <cursor />\n      another\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/block-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>\n        <block>one</block>\n      </block>\n      <block>two</block>\n      <block>three</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>word</block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n    <block>\n      <block>one</block>\n    </block>\n    <block>two</block>\n    <block>\n      three\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>wordone</block>\n    <block>two</block>\n    <block>\n      three\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/block-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nconst fragment = (\n  <fragment>\n    <block>one</block>\n    <block>two</block>\n  </fragment>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, fragment, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      word\n    </block>\n    <block>\n      <focus />\n      another\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      two\n      <cursor />\n    </block>\n    <block>another</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/block-middle-3.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>woone</block>\n    <block>two</block>\n    <block>\n      three\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        word\n        <cursor />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>wordone</block>\n      <block>two</block>\n      <block>\n        three\n        <cursor />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>\n      three\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/blocks-middle-1.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>one</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      woone\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/blocks-middle-2.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>one</block>\n      <block>two</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>woone</block>\n    <block>\n      two\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-blocks/with-inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>\n        one<inline>two</inline>three\n      </block>\n      <block>\n        four<inline>five</inline>six\n      </block>\n      <block>\n        seven<inline>eight</inline>nine\n      </block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      woone<inline>two</inline>three\n    </block>\n    <block>\n      four<inline>five</inline>six\n    </block>\n    <block>\n      seven<inline>eight</inline>nine\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-inlines/block-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <inline>fragment</inline>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        fragment\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-inlines/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <inline>fragment</inline>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\n// TODO: this cursor placement seems off\nexport const output = (\n  <editor>\n    <block>\n      word\n      <inline>\n        fragment\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-inlines/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <inline>fragment</inline>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wo\n      <inline>\n        fragment\n        <cursor />\n      </inline>\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-inlines/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <inline>fragment</inline>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        fragment\n        <cursor />\n      </inline>\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-inlines/inline-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <inline>fragment</inline>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text />\n      </inline>\n      <text />\n      <inline>\n        fragment\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-inlines/inline-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <inline>fragment</inline>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>wo</inline>\n      <text />\n      <inline>\n        fragment\n        <cursor />\n      </inline>\n      <text />\n      <inline>rd</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-inlines/with-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <inline>one</inline>\n      <inline>two</inline>\n      <inline>three</inline>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>wo</inline>\n      <text />\n      <inline>one</inline>\n      <text />\n      <inline>two</inline>\n      <text />\n      <inline>\n        three\n        <cursor />\n      </inline>\n      <text />\n      <inline>rd</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-inlines/with-text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      one\n      <inline>two</inline>\n      three\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      woone\n      <inline>two</inline>\n      three\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-lists/merge-lists.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>\n        <block>3</block>\n        <block>4</block>\n      </block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>1</block>\n      <block>\n        2<cursor />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>1</block>\n      <block>23</block>\n      <block>\n        4<cursor />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-mixed/block-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <text>one</text>\n      <block>two</block>\n      <text>three</text>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>word</block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n    <block>one</block>\n    <block>two</block>\n    <block>\n      three\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-mixed/block-empty2.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>two</block>\n      <text>three</text>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>word</block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n    <block>two</block>\n    <block>\n      <text>\n        three\n        <cursor />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-mixed/block-empty3.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <text>one</text>\n      <block>two</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>word</block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n    <block>one</block>\n    <block>\n      two\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-mixed/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <text>one</text>\n      <block>two</block>\n      <text>three</text>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>wordone</block>\n    <block>two</block>\n    <block>\n      three\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-mixed/block-end2.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <text>one</text>\n      <block>two</block>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>wordone</block>\n    <block>\n      two\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-mixed/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <text>one</text>\n      <block>two</block>\n      <text>three</text>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>woone</block>\n    <block>two</block>\n    <block>\n      three\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-mixed/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <text>one</text>\n      <block>two</block>\n      <text>three</text>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>\n      three\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-mixed/block-start2.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <block>one</block>\n      <text>two</text>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      two\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-tables/merge-cells-with-nested-blocks.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <block>\n      <block>\n        <block>\n          <block>\n            <block>1</block>\n          </block>\n          <block>\n            <block>2</block>\n          </block>\n        </block>\n      </block>\n    </block>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          <block>\n            <block>\n              <cursor />\n            </block>\n          </block>\n          <block>\n            <block>\n              <text />\n            </block>\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n// TODO: surely this is the wrong behavior.\n// ideally, paragraph with \"2\" goes into second cell\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          <block>\n            <block>1</block>\n            <block>\n              <block>\n                2<cursor />\n              </block>\n            </block>\n          </block>\n          <block>\n            <block>\n              <text />\n            </block>\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const skip = true\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-tables/merge-into-empty-cells.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <block>\n      <block>\n        <block>\n          <block>1</block>\n          <block>2</block>\n        </block>\n      </block>\n    </block>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          <block>\n            <cursor />\n          </block>\n          <block>\n            <text />\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n// TODO: paste \"2\" into second cell instead of creating new one?\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          <block>1</block>\n          <block>\n            2<cursor />\n          </block>\n          <block>\n            <text />\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const skip = true\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-tables/merge-into-full-cells.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <block>\n      <block>\n        <block>\n          <block>New 1</block>\n          <block>New 2</block>\n        </block>\n      </block>\n    </block>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          <block>\n            {'Existing 1 '}\n            <cursor />\n          </block>\n          <block>Existing 2</block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n// TODO: paste \"Existing 2\" before / after \"New 2\" in second cell?\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          <block>Existing 1 New 1</block>\n          <block>\n            New 2<cursor />\n          </block>\n          <block>Existing 2</block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const skip = true\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-texts/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wofragment\n      <cursor />\n      other\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-texts/block-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      fragment\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-texts/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wordfragment\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-texts/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wofragment\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-texts/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      fragment\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-texts/inline-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n// TODO: argument to made that fragment should go into the inline\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text />\n      </inline>\n      fragment\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-texts/inline-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n// TODO: argument to made that fragment should go into the inline\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>wo</inline>\n      fragment\n      <cursor />\n      <inline>rd</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/of-texts/with-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(\n    editor,\n    <fragment>\n      <text>one</text>\n      <text>two</text>\n    </fragment>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      woonetwo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/voids-false/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block void>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/voids-false/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, options)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n// TODO: argument to made that fragment should go into the inline\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, {\n    voids: true,\n    ...options,\n  })\n}\nexport const input = (\n  <editor>\n    <block void>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>\n      wofragment\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertFragment/voids-true/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertFragment(editor, <fragment>fragment</fragment>, {\n    voids: true,\n    ...options,\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n// TODO: argument to made that fragment should go into the inline\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>wo</inline>\n      fragment\n      <cursor />\n      <inline void>rd</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/block/block-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n    <block>not empty</block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block>\n      <text />\n    </block>,\n    options\n  )\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <cursor />\n    </block>\n    <block>not empty</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/block/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block>\n      <text />\n    </block>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>wo</block>\n    <block>\n      <cursor />\n    </block>\n    <block>rd</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/block/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block>\n      <text />\n    </block>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block void>\n      text\n      <cursor />\n    </block>\n    <block>text</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>text</block>\n    <block>\n      <cursor />\n    </block>\n    <block>text</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/block/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block>\n      <text />\n    </block>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n    <block>\n      <cursor />\n    </block>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/inline/block-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <inline void>\n      <text />\n    </inline>,\n    options\n  )\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/inline/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <inline void>\n      <text />\n    </inline>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <inline void>\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/inline/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <inline void>\n      <text />\n    </inline>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wo\n      <inline void>\n        <cursor />\n      </inline>\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/inline/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <inline void>\n      <text />\n    </inline>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <cursor />\n      </inline>\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/inline/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <inline void>\n      <text />\n    </inline>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block void>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/inline/inline-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <inline void>\n      <text />\n    </inline>,\n    options\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <inline void>\n          <cursor />\n        </inline>\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block>\n      <text />\n    </block>,\n    { at: [0], ...options }\n  )\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/path/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <inline>\n      <text />\n    </inline>,\n    { at: [0, 0], ...options }\n  )\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text />\n      </inline>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/path/multiple-inline-not-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      hel\n      <cursor />\n      lo\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    [\n      <inline>\n        <text />\n      </inline>,\n      <text>world</text>,\n    ],\n    options\n  )\n}\nexport const output = (\n  <editor>\n    <block>\n      hel\n      <inline>\n        <text />\n      </inline>\n      world\n      <cursor />\n      lo\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/path/multiple-inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      hello\n      <cursor />\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    [\n      <inline>\n        <text />\n      </inline>,\n      <text>world</text>,\n    ],\n    options\n  )\n}\nexport const output = (\n  <editor>\n    <block>\n      hello\n      <inline>\n        <text />\n      </inline>\n      world\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/path/multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(editor, [<block>two</block>, <block>three</block>], {\n    at: [0],\n    ...options,\n  })\n}\nexport const output = (\n  <editor>\n    <block>two</block>\n    <block>three</block>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/path/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(editor, <text>another</text>, {\n    at: [0, 0],\n    ...options,\n  })\n}\nexport const output = (\n  <editor>\n    <block>\n      another\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/select-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block>\n      <text />\n    </block>,\n    { at: [0], select: true, ...options }\n  )\n}\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n    </block>\n    <block>one</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/selection/none-empty.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = <editor />\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(editor, <block>one</block>, options)\n}\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/selection/none-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(editor, <block>two</block>, options)\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      two\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/void/at-path.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block void>\n      <text>two</text>\n    </block>,\n    { at: [1], select: true, ...options }\n  )\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block void>\n      two\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/void/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block void>\n      <block>\n        <text>two</text>\n      </block>\n    </block>,\n    options\n  )\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block void>\n      <block>\n        <text>\n          two\n          <cursor />\n        </text>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/void/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <block void>\n      <text>two</text>\n    </block>,\n    options\n  )\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block void>\n      two\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/void/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two\n        <cursor />\n      </inline>\n      three\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(\n    editor,\n    <inline void>\n      <text>four</text>\n    </inline>,\n    options\n  )\n}\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two\n        <inline void>\n          four\n          <cursor />\n        </inline>\n        <text />\n      </inline>\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(editor, <text>two</text>, {\n    at: [0, 1],\n    voids: true,\n    options,\n  })\n}\nexport const output = (\n  <editor>\n    <block void>\n      one\n      <cursor />\n      two\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertNodes/voids-true/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline void>\n        two\n        <cursor />\n      </inline>\n      three\n    </block>\n  </editor>\n)\nexport const run = (editor, options = {}) => {\n  Transforms.insertNodes(editor, <text>four</text>, {\n    at: [0, 1, 1],\n    voids: true,\n    options,\n  })\n}\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline void>\n        two\n        <cursor />\n        four\n      </inline>\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>word</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: [0] })\n}\nexport const output = (\n  <editor>\n    <block>x</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/path/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>word</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: [0, 0] })\n}\nexport const output = (\n  <editor>\n    <block>x</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/point/selection-after.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        w<anchor />\n        or\n        <focus />d\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: { path: [0, 0], offset: 4 } })\n}\nexport const output = (\n  <editor>\n    <block>\n      w<anchor />\n      or\n      <focus />\n      dx\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/point/selection-before.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        w<anchor />\n        or\n        <focus />d\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: { path: [0, 0], offset: 0 } })\n}\nexport const output = (\n  <editor>\n    <block>\n      xw\n      <anchor />\n      or\n      <focus />d\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/point/selection-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        w<anchor />\n        or\n        <focus />d\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: { path: [0, 0], offset: 3 } })\n}\nexport const output = (\n  <editor>\n    <block>\n      w<anchor />\n      orx\n      <focus />d\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/point/selection-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        w<anchor />\n        or\n        <focus />d\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: { path: [0, 0], offset: 2 } })\n}\nexport const output = (\n  <editor>\n    <block>\n      w<anchor />\n      oxr\n      <focus />d\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/point/selection-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        w<anchor />\n        or\n        <focus />d\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: { path: [0, 0], offset: 1 } })\n}\nexport const output = (\n  <editor>\n    <block>\n      wx\n      <anchor />\n      or\n      <focus />d\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/point/text-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>word</text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: { path: [0, 0], offset: 4 } })\n}\nexport const output = (\n  <editor>\n    <block>wordx</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/point/text-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>word</text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: { path: [0, 0], offset: 2 } })\n}\nexport const output = (\n  <editor>\n    <block>woxrd</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/point/text-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: { path: [0, 0], offset: 0 } })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        wo\n        <cursor />\n        rd\n      </text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      xwo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-across-inline-wold.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a')\n}\nexport const input = (\n  <editor>\n    <block>\n      first paragraph\n      <inline>\n        tw\n        <anchor />o\n      </inline>\n    </block>\n    <block>\n      second\n      <focus />\n      paragraph\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      first paragraph\n      <inline>\n        twa\n        <cursor />\n      </inline>\n      paragraph\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a')\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      first paragraph\n    </block>\n    <block>\n      second\n      <focus /> paragraph\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      a<cursor /> paragraph\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-end-words.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, ' a few words')\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word a few words\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a')\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      worda\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-hanging-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a')\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>two</block>\n    <block>\n      <focus />\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      a<cursor />\n      three\n    </block>\n  </editor>\n)\nexport const skip = true\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a')\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      <focus />\n      two\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      a<cursor />\n    </block>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-middle-words.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, ' a few words ')\n}\nexport const input = (\n  <editor>\n    <block>\n      w<cursor />\n      ord\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      w a few words <cursor />\n      ord\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a')\n}\nexport const input = (\n  <editor>\n    <block>\n      w<cursor />\n      ord\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wa\n      <cursor />\n      ord\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-start-words.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a few words')\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      a few words\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a')\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      a<cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'a')\n}\nexport const input = (\n  <editor>\n    <block void>\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/selection/inline-end.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  editor.insertText('four')\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline>\n        two\n        <cursor />\n      </inline>\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline>\n        twofour\n        <cursor />\n      </inline>\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/voids-false/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: [0] })\n}\nexport const output = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/voids-false/read-only-inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline readOnly>\n        read-only <cursor />\n        inline\n      </inline>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x')\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline readOnly>\n        read-only <cursor />\n        inline\n      </inline>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/voids-false/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: [0, 0] })\n}\nexport const output = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: [0], voids: true })\n}\nexport const output = (\n  <editor>\n    <block void>x</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/insertText/voids-true/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.insertText(editor, 'x', { at: [0, 0], voids: true })\n}\nexport const output = (\n  <editor>\n    <block void>x</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/liftNodes/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.liftNodes(editor, { at: [0, 0] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>word</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/liftNodes/path/first-block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.liftNodes(editor, { at: [0, 0] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/liftNodes/path/last-block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.liftNodes(editor, { at: [0, 1] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/liftNodes/path/middle-block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.liftNodes(editor, { at: [0, 1] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>two</block>\n    <block>\n      <block>three</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/liftNodes/selection/block-full.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.liftNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <anchor />\n        one\n      </block>\n      <block>two</block>\n      <block>three</block>\n      <block>four</block>\n      <block>five</block>\n      <block>\n        six\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>two</block>\n    <block>three</block>\n    <block>four</block>\n    <block>five</block>\n    <block>\n      six\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/liftNodes/selection/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.liftNodes(editor, { match: n => n.c })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block b>\n        <block c>\n          <cursor />\n          one\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block c>\n        <cursor />\n        one\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/liftNodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.liftNodes(editor, { at: [0, 0], voids: true })\n}\nexport const input = (\n  <editor>\n    <block void>\n      <block>word</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/depth-block/block-nested-multi-child.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../..'\nimport { Transforms } from 'slate'\n\nexport const run = editor => {\n  Transforms.mergeNodes(editor, {\n    at: {\n      path: [0, 1, 1, 0, 0, 0],\n      offset: 0,\n    },\n  })\n}\n\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <text>123</text>\n      </block>\n      <block>\n        <block>\n          <text>45</text>\n        </block>\n        <block>\n          <block>\n            <block>\n              <text>c</text>\n            </block>\n            <block>\n              <block>\n                <text>edf</text>\n              </block>\n            </block>\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <text>123</text>\n      </block>\n      <block>\n        <block>\n          <text>45c</text>\n        </block>\n        <block>\n          <block>\n            <block>\n              <block>\n                <text>edf</text>\n              </block>\n            </block>\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/depth-block/block-nested-only-child.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../..'\nimport { Transforms } from 'slate'\n\nexport const run = editor => {\n  Transforms.mergeNodes(editor, {\n    at: {\n      path: [0, 1, 1, 0, 0, 0],\n      offset: 0,\n    },\n  })\n}\n\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <text>123</text>\n      </block>\n      <block>\n        <block>\n          <text>45</text>\n        </block>\n        <block>\n          <block>\n            <block>\n              <text>c</text>\n            </block>\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <text>123</text>\n      </block>\n      <block>\n        <block>\n          <text>45c</text>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/depth-block/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      <cursor />\n      two\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.mergeNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n  })\n}\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n      two\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/path/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.mergeNodes(editor, {\n    at: [1],\n    withMatch: ([, p]) => p.length === 1,\n  })\n}\nexport const output = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.mergeNodes(editor, { at: [1] })\n}\nexport const output = (\n  <editor>\n    <block>onetwo</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/path/text-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.mergeNodes(editor, { at: [1, 0], match: Text.isText })\n}\nexport const output = (\n  <editor>\n    <block>onetwo</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/path/text-hanging-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      <block>\n        <cursor />\n        <text />\n      </block>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.mergeNodes(editor, { at: [1, 0, 1], match: Text.isText })\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      <block>\n        <cursor />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/path/text-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      <cursor />\n      <text />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.mergeNodes(editor, { at: [1, 1], match: Text.isText })\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/mergeNodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <text>one</text>\n      <text>two</text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.mergeNodes(editor, { at: [0, 1], voids: true })\n}\nexport const output = (\n  <editor>\n    <block void>onetwo</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/anchor/backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'anchor' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two th\n      <focus />\n      ree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one t<anchor />\n      wo th\n      <focus />\n      ree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/anchor/basic.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'anchor' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      tw\n      <focus />o three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one t<anchor />w<focus />o three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/anchor/collapsed.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'anchor' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two t<cursor />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two t<focus />h<anchor />\n      ree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/anchor/distance.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'anchor', distance: 3 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two thr\n      <focus />\n      ee\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two\n      <anchor /> thr\n      <focus />\n      ee\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/anchor/reverse-backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'anchor', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two th\n      <anchor />\n      ree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <focus />\n      two t<anchor />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/anchor/reverse-basic.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'anchor', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      tw\n      <focus />o three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <anchor /> tw\n      <focus />o three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/anchor/reverse-distance.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'anchor', reverse: true, distance: 3 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      tw\n      <focus />o three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      o<anchor />\n      ne tw\n      <focus />o three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/backward-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two th\n      <anchor />\n      ree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <focus /> two t<anchor />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two th\n      <anchor />\n      ree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one t<focus />\n      wo thr\n      <anchor />\n      ee\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/basic-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <cursor />\n      two three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor /> two three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/collapsed.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one <cursor />\n      two three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one t<cursor />\n      wo three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/distance-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true, distance: 6 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two th\n      <cursor />\n      ree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <cursor />\n      two three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/distance.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { distance: 6 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <cursor />\n      two three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two th\n      <cursor />\n      ree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/expanded-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two th\n      <focus />\n      ree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <anchor /> two t<focus />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/expanded.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two th\n      <focus />\n      ree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one t<anchor />\n      wo thr\n      <focus />\n      ee\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/unit-word-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true, unit: 'word' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one tw\n      <cursor />o three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <cursor />\n      two three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/both/unit-word.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { unit: 'word' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <cursor />\n      two three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two\n      <cursor /> three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/emojis/keycap-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word5️⃣\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n        5️⃣\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/emojis/keycap.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n        5️⃣\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word5️⃣\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/emojis/ri-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word🇫🇷\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n        🇫🇷\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/emojis/ri.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n        🇫🇷\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word🇫🇷\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/emojis/tag-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word🏴󠁧󠁢󠁳󠁣󠁴󠁿\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n        🏴󠁧󠁢󠁳󠁣󠁴󠁿\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/emojis/tag.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n        🏴󠁧󠁢󠁳󠁣󠁴󠁿\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word🏴󠁧󠁢󠁳󠁣󠁴󠁿\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/emojis/zwj-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word👨‍👩‍👧‍👧\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n        👨‍👩‍👧‍👧\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/emojis/zwj.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word\n        <cursor />\n        👨‍👩‍👧‍👧\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        word👨‍👩‍👧‍👧\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/backward-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two t<anchor />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <focus />\n      two <anchor />\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two t<anchor />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <focus />\n      two th\n      <anchor />\n      ree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/collapsed-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two t<cursor />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two <focus />t<anchor />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/distance-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end', reverse: true, distance: 3 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <anchor />\n      tw\n      <focus />o three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/distance.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end', distance: 3 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <anchor />\n      two thre\n      <focus />e\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/expanded-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <anchor />\n      two <focus />\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/expanded.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <anchor />\n      two th\n      <focus />\n      ree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/from-backward-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end', reverse: true, distance: 7 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two <anchor />\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      o<anchor />\n      ne <focus />\n      two three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/end/to-backward-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'end', reverse: true, distance: 6 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two\n      <focus /> three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      o<focus />\n      ne <anchor />\n      two three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/focus/backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'focus', distance: 7 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two <anchor />\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two <anchor />\n      thr\n      <focus />\n      ee\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/focus/collapsed-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'focus', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one two t<cursor />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two <focus />t<anchor />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/focus/distance-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'focus', reverse: true, distance: 6 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two thr\n      <focus />\n      ee\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <anchor />t<focus />\n      wo three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/focus/distance.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'focus', distance: 4 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      tw\n      <focus />o three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <anchor />\n      two th\n      <focus />\n      ree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/focus/expanded-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'focus', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      tw\n      <focus />o three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <anchor />t<focus />\n      wo three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/focus/expanded.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'focus' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      tw\n      <focus />o three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one <anchor />\n      two\n      <focus /> three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/focus/to-backward-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'focus', reverse: true, distance: 10 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two thr\n      <focus />\n      ee\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      o<focus />\n      ne <anchor />\n      two three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/start/backward-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'start', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two t<anchor />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <focus /> two t<anchor />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/start/backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'start' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two t<anchor />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one t<focus />\n      wo t<anchor />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/start/distance-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'start', reverse: true, distance: 3 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      o<anchor />\n      ne two t<focus />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/start/distance.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'start', distance: 3 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two\n      <anchor /> t<focus />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/start/expanded-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'start', reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <anchor /> two t<focus />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/start/expanded.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'start' })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one t<anchor />\n      wo t<focus />\n      hree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/start/from-backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'start', distance: 7 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <focus />\n      two t<anchor />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two t<anchor />\n      hr\n      <focus />\n      ee\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/move/start/to-backward.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.move(editor, { edge: 'start', distance: 8 })\n}\nexport const input = (\n  <editor>\n    <block>\n      one <anchor />\n      two t<focus />\n      hree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one two t<focus />\n      hre\n      <anchor />e\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/path/inside-next.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, { at: [0], to: [1, 1] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <block>two</block>\n      <block>\n        <cursor />\n        one\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/path/nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, { at: [0, 0], to: [1, 0] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/path/noop-equal.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>1</block>\n    <block>2</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, { at: [1], to: [1] })\n}\nexport const output = (\n  <editor>\n    <block>1</block>\n    <block>2</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/path/text-nodes.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>bar</text>\n      <text>foo</text>\n    </block>\n    <block>\n      <cursor />\n      baz\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, { at: [0, 0], to: [1, 0] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text>foo</text>\n    </block>\n    <block>\n      <text>\n        bar\n        <cursor />\n        baz\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/path/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, { at: [1, 0], to: [0, 1] })\n}\nexport const output = (\n  <editor>\n    <block>onetwo</block>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/path/to-sibling.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, { at: [0], to: [1, 1] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <block>two</block>\n      <block>\n        <cursor />\n        one\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/selection/block-nested-after.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.moveNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    to: [1],\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>\n        <anchor />\n        two\n      </block>\n      <block>\n        three\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>\n      <anchor />\n      two\n    </block>\n    <block>\n      three\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/selection/block-nested-before.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.moveNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    to: [0],\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <anchor />\n        one\n      </block>\n      <block>\n        two\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/selection/block-siblings-after.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.moveNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    to: [2],\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n    <block>three</block>\n  </editor>\n)\n\nexport const output = (\n  <editor>\n    <block>three</block>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/selection/block-siblings-before.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.moveNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    to: [0],\n  })\n}\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      two\n      <anchor />\n    </block>\n    <block>\n      three\n      <focus />\n    </block>\n  </editor>\n)\n\nexport const output = (\n  <editor>\n    <block>\n      two\n      <anchor />\n    </block>\n    <block>\n      three\n      <focus />\n    </block>\n    <block>one</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/selection/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n    <block>two</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    to: [1],\n  })\n}\nexport const output = (\n  <editor>\n    <block>two</block>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n    <block void>two</block>\n    <block void>three</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, {\n    at: [1, 0],\n    to: [2, 0],\n    voids: true,\n  })\n}\nexport const output = (\n  <editor>\n    <block void>one</block>\n    <block void>\n      <text />\n    </block>\n    <block void>twothree</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/moveNodes/voids-true/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        one\n      </inline>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, { at: [0, 1], to: [0, 3] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>two</inline>\n      <text />\n      <inline>\n        <cursor />\n        one\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/normalization/move_node.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.moveNodes(editor, { at: [0, 0], to: [1, 0] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>onetwo</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/normalization/set_node.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Element, Transforms } from 'slate'\nimport { jsx } from '../..'\nimport _ from 'lodash'\n\nexport const input = (\n  <editor>\n    <block type=\"body\" attr={{ a: true }}>\n      one\n    </block>\n  </editor>\n)\n\nconst editor = input as unknown as Editor\nconst defaultNormalize = editor.normalizeNode\neditor.normalizeNode = entry => {\n  const [node, path] = entry\n  if (\n    Element.isElement(node) &&\n    (node as any).type === 'body' &&\n    Editor.string(editor, path, { voids: true }) === 'one'\n  ) {\n    Transforms.setNodes(\n      editor,\n      { attr: { a: false } },\n      { at: path, compare: (p, n) => !_.isEqual(p, n) }\n    )\n  }\n\n  defaultNormalize(entry)\n}\n\nexport const run = editor => {\n  Editor.normalize(editor, { force: true })\n}\n\nexport const output = (\n  <editor>\n    <block type=\"body\" attr={{ a: false }}>\n      one\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/normalization/split_node-and-insert_node.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>one</inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Editor.withoutNormalizing(editor, () => {\n    const operations = [\n      {\n        type: 'split_node',\n        path: [0, 1],\n        position: 0,\n        properties: { inline: true },\n      },\n      {\n        type: 'split_node',\n        path: [0],\n        position: 1,\n        properties: {},\n      },\n      {\n        type: 'split_node',\n        path: [2, 1, 0],\n        position: 0,\n        properties: {},\n      },\n      {\n        type: 'split_node',\n        path: [2, 1],\n        position: 0,\n        properties: { inline: true },\n      },\n      {\n        type: 'split_node',\n        path: [2],\n        position: 1,\n        properties: {},\n      },\n      { type: 'insert_node', path: [2, 1], node: { text: '' } },\n    ]\n    operations.forEach(editor.apply)\n  })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        <text />\n      </inline>\n      <text />\n      <inline>one</inline>\n      <text />\n    </block>\n    <block>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        <text />\n      </inline>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/path/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [0, 0] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n    <block>\n      <block>two</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [0] })\n}\nexport const output = (\n  <editor>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/path/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>one</inline>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [0, 1] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/path/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [1, 0] })\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/select/block-only-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [0] })\n}\nexport const output = <editor />\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/select/block-void-multiple-texts.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <text>\n        <cursor />\n        one\n      </text>\n      <text>two</text>\n    </block>\n    <block>three</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [0] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/select/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>\n      <cursor />\n      one\n    </block>\n    <block>two</block>\n    <block>three</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [0] })\n}\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      two\n    </block>\n    <block>three</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/selection/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      on\n      <anchor />e\n    </block>\n    <block>\n      t<focus />\n      wo\n    </block>\n    <block>three</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor)\n}\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/selection/block-all.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      on\n      <anchor />e\n    </block>\n    <block>\n      t<focus />\n      wo\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor)\n}\nexport const output = <editor />\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>one</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [0, 0], voids: true })\n}\nexport const output = (\n  <editor>\n    <block void>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/removeNodes/voids-true/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>one</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.removeNodes(editor, { at: [0, 1, 0], voids: true })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/select/path.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  Transforms.select(editor, [0, 0])\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/select/point.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  Transforms.select(editor, {\n    path: [0, 0],\n    offset: 1,\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      o<cursor />\n      ne\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/select/range.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  Transforms.select(editor, {\n    anchor: {\n      path: [0, 0],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 3,\n    },\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/basic-structure/can-be-serialized.tsx",
    "content": "/** @jsx jsx */\nimport assert from 'assert'\nimport { Editor, Transforms, Operation } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor: Editor) => {\n  Transforms.setNodes(editor, { someKey: true }, { at: [0] })\n  const [op] = editor.operations\n  const roundTrip: Operation = JSON.parse(JSON.stringify(op))\n  assert.deepStrictEqual(op, roundTrip)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block someKey>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/basic-structure/invert-after-serialization.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Operation } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = (editor: Editor) => {\n  Transforms.setNodes(editor, { key: true }, { at: [0] })\n  const [op] = editor.operations\n  const roundTrip: Operation = JSON.parse(JSON.stringify(op))\n  const inverted = Operation.inverse(roundTrip)\n  editor.apply(inverted)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/block/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      word\n    </block>\n    <block>\n      a<focus />\n      nother\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block someKey>\n      <anchor />\n      word\n    </block>\n    <block someKey>\n      a<focus />\n      nother\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/block/block-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      word\n    </block>\n    <block>\n      <focus />\n      another\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block someKey>\n      <anchor />\n      word\n    </block>\n    <block>\n      <focus />\n      another\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/block/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <cursor />\n        word\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block someKey>\n        <cursor />\n        word\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/block/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block void>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void someKey>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/block/block.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isBlock(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block someKey>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/inline/inline-across.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isInline(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <anchor />\n        word\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        another\n        <focus />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline someKey>\n        <anchor />\n        word\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline someKey>\n        another\n        <focus />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/inline/inline-block-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isInline(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <anchor />\n        word\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        <focus />\n        another\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline someKey>\n        <anchor />\n        word\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        <focus />\n        another\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/inline/inline-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isInline(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <anchor />\n        word\n      </inline>\n      <focus />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline someKey>\n        <anchor />\n        word\n      </inline>\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/inline/inline-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isInline(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text />\n        <inline>\n          <cursor />\n          word\n        </inline>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text />\n        <inline someKey>\n          <cursor />\n          word\n        </inline>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/inline/inline-void-2.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isInline(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>word</text>\n      <inline void alreadyHasAKey>\n        <text />\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>word</text>\n      <inline void alreadyHasAKey someKey>\n        <text />\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/inline/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isInline(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <cursor />\n        word\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void someKey>\n        <cursor />\n        word\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/inline/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: n => Element.isElement(n) && Editor.isInline(editor, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        word\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline someKey>\n        <cursor />\n        word\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/marks/mark-across-range.tsx",
    "content": "/** @jsx jsx */\n// Apply a mark across a range containing text with other marks and a void\nimport { Editor, Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Editor.addMark(editor, 'bold', true)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        <anchor />\n        word{' '}\n      </text>\n      <text italic>italic words </text>\n      <inline void>\n        <text />\n      </inline>\n      <text underline>\n        {' '}\n        underlined words\n        <focus />\n      </text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text bold>\n        <anchor />\n        word{' '}\n      </text>\n      <text italic bold>\n        italic words{' '}\n      </text>\n      <inline void>\n        <text />\n      </inline>\n      <text underline bold>\n        {' '}\n        underlined words\n        <focus />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/marks/mark-void-collapsed.tsx",
    "content": "/** @jsx jsx */\n// Apply a mark across a range containing text with other marks and one void that supports marks\nimport { Editor, Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  editor.markableVoid = node => node.markable\n  Editor.addMark(editor, 'bold', true)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>word</text>\n      <inline void markable>\n        <text />\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>word</text>\n      <inline void markable>\n        <text bold />\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/marks/mark-void-range-hanging.tsx",
    "content": "/** @jsx jsx */\n// Apply a mark across a range containing text with other marks and some voids that support marks\nimport { Editor } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  editor.markableVoid = node => node.markable\n  Editor.addMark(editor, 'bold', true)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        <anchor />\n      </text>\n      <inline void markable>\n        <text />\n      </inline>\n      <text italic>italic words </text>\n      <inline void markable>\n        <text />\n      </inline>\n      <text>\n        <focus />\n      </text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text bold>\n        <anchor />\n      </text>\n      <inline void markable>\n        <text bold />\n      </inline>\n      <text italic bold>\n        italic words{' '}\n      </text>\n      <inline void markable>\n        <text bold />\n      </inline>\n      <text bold>\n        <focus />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/marks/mark-void-range.tsx",
    "content": "/** @jsx jsx */\n// Apply a mark across a range containing text with other marks and one void that supports marks\nimport { Editor, Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  editor.markableVoid = node => node.markable\n  Editor.addMark(editor, 'bold', true)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        <anchor />\n        word{' '}\n      </text>\n      <inline void>\n        <text />\n      </inline>\n      <text italic>italic words </text>\n      <inline void markable>\n        <text />\n      </inline>\n      <text underline>\n        {' '}\n        underlined words\n        <focus />\n      </text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text bold>\n        <anchor />\n        word{' '}\n      </text>\n      <inline void>\n        <text />\n      </inline>\n      <text italic bold>\n        italic words{' '}\n      </text>\n      <inline void markable>\n        <text bold />\n      </inline>\n      <text underline bold>\n        {' '}\n        underlined words\n        <focus />\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/merge/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\nimport _ from 'lodash'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { a: { b: 2, c: 3 } },\n    { at: [0, 0], match: Text.isText, merge: (n, p) => _.defaultsDeep(p, n) }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text a={{ b: 1 }}>word</text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text a={{ b: 2, c: 3 }}>word</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>word</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.setNodes(editor, { key: 'a' }, { at: [0] })\n}\nexport const output = (\n  <editor>\n    <block key=\"a\">word</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/path/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(editor, { key: 'a' }, { at: [0, 1] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>word</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline key=\"a\">word</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/path/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(editor, { key: 'a' }, { at: [0, 0] })\n}\nexport const input = (\n  <editor>\n    <block>word</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text key=\"a\">word</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/split/noop-collapsed.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: Text.isText, split: true }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      w<cursor />\n      ord\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      w<cursor />\n      ord\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/split/text-remove.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: null },\n    { match: Text.isText, split: true }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text someKey>\n        w<anchor />\n        or\n        <focus />d\n      </text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text someKey>w</text>\n      <text>\n        <anchor />\n        or\n        <focus />\n      </text>\n      <text someKey>d</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/split/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: Text.isText, split: true }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      w<anchor />\n      or\n      <focus />d\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>w</text>\n      <text someKey>\n        <anchor />\n        or\n        <focus />\n      </text>\n      <text>d</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/text/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(editor, { someKey: true }, { match: Text.isText })\n}\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      word\n    </block>\n    <block>\n      a<focus />\n      nother\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text someKey>\n        <anchor />\n        word\n      </text>\n    </block>\n    <block>\n      <text someKey>\n        a<focus />\n        nother\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/text/merge-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(\n    editor,\n    { someKey: true },\n    { match: Text.isText, split: true }\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        One\n        <anchor />\n      </text>\n      <text someKey>Two</text>\n      <text>\n        <focus />\n        Three\n      </text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text>\n        One\n        <anchor />\n      </text>\n      <text someKey>\n        Two\n        <focus />\n      </text>\n      <text>Three</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/text/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.setNodes(editor, { someKey: true }, { match: Text.isText })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text someKey>\n        <cursor />\n        word\n      </text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setNodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.setNodes(editor, { someKey: true }, { at: [0, 0], voids: true })\n}\nexport const output = (\n  <editor>\n    <block void>\n      <text someKey>word</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/setPoint/offset.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  Transforms.move(editor)\n  Transforms.setPoint(editor, { offset: 0 }, { edge: 'focus' })\n}\nexport const input = (\n  <editor>\n    <block>\n      f<cursor />\n      oo\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <focus />\n      fo\n      <anchor />o\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/always/after-inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    always: true,\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <inline void>\n        <text />\n      </inline>\n      <cursor />\n      two\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline void>\n        <text />\n      </inline>\n      <text />\n    </block>\n    <block>\n      <cursor />\n      two\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/always/after-inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    always: true,\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <inline>hyperlink</inline>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      word\n      <inline>hyperlink</inline>\n      <text />\n    </block>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/always/before-inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    always: true,\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n      <inline>hyperlink</inline>\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n    <block>\n      <cursor />\n      <inline>hyperlink</inline>\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/always/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    always: true,\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      word\n      <cursor />\n    </block>\n    <block>another</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n    <block>\n      <cursor />\n    </block>\n    <block>another</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/always/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n    always: true,\n  })\n}\nexport const input = (\n  <editor>\n    <block>word</block>\n    <block>\n      <cursor />\n      another\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n    <block>\n      <text />\n    </block>\n    <block>\n      <cursor />\n      another\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/match-any/zero.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { match: () => true, mode: 'highest' })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <block>\n          wo\n          <cursor />\n          rd\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <block>wo</block>\n      </block>\n    </block>\n    <block>\n      <block>\n        <block>\n          <cursor />\n          rd\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/match-block/block-middle-multiple-texts.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        one\n        <cursor />\n      </text>\n      <text>two</text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/match-block/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>wo</block>\n    <block>\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/match-block/inline-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>wo</inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/match-inline/inline-middle.js",
    "content": "/** @jsx jsx */\n\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    match: n => Element.isElement(n) && Editor.isInline(editor, n),\n  })\n}\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>wo</inline>\n      <text />\n      <inline>\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/path/block-inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 2] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>one</inline>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>one</inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/path/block-nested-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 1] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block void>one</block>\n      <block void>two</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block void>one</block>\n    </block>\n    <block>\n      <block void>two</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/path/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 1] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>one</block>\n    </block>\n    <block>\n      <block>two</block>\n      <block>three</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/path/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 1] })\n}\nexport const input = (\n  <editor>\n    <block void>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/path/block-with-attributes.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 2] })\n}\nexport const input = (\n  <editor>\n    <block data>\n      <text />\n      <inline>one</inline>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block data>\n      <text />\n      <inline>one</inline>\n      <text />\n    </block>\n    <block data>\n      <text />\n      <inline>two</inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/path/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 1, 0] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text>word</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text>word</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/path/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 1, 0] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text>word</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text />\n      </inline>\n      <text />\n      <inline>\n        <text>word</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/point/block-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: { path: [0, 0], offset: 2 } })\n}\nexport const input = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/point/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: { path: [0, 1, 0], offset: 2 } })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text>word</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text>word</text>\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/point/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms, Element } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    at: { path: [0, 1, 0], offset: 2 },\n    match: n => Element.isElement(n) && Editor.isInline(editor, n),\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text>word</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text>wo</text>\n      </inline>\n      <text />\n      <inline>\n        <text>rd</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/point/text-with-marks.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, {\n    at: { path: [0, 0], offset: 2 },\n  })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text bold>word</text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text bold>wo</text>\n    </block>\n    <block>\n      <text bold>rd</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>wo</block>\n    <block>\n      <cursor />\n      other\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/block-expanded.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      w<anchor />\n      or\n      <focus />d\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>w</block>\n    <block>\n      <cursor />d\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/block-hanging.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      <anchor />\n      two\n    </block>\n    <block>\n      <focus />\n      three\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>\n      <text />\n    </block>\n    <block>\n      <cursor />\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/block-nested-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block void>\n        wo\n        <anchor />\n        rd\n      </block>\n      <block void>\n        an\n        <focus />\n        other\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/block-void-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block void>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/block-void-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      on\n      <anchor />e\n    </block>\n    <block void>two</block>\n    <block>\n      th\n      <focus />\n      ree\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>on</block>\n    <block>\n      <cursor />\n      ree\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/block-void-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block void>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      other\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/inline-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <anchor />\n        rd\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        an\n        <focus />\n        other\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>wo</inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        other\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/inline-expanded.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        w<anchor />\n        or\n        <focus />d\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>w</inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        <cursor />d\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/inline-void-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        word\n        <cursor />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>word</inline>\n      <text />\n    </block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/selection/inline-void.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        wo\n        <cursor />\n        rd\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>word</inline>\n      <text />\n    </block>\n    <block>\n      <cursor />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 1], voids: true })\n}\nexport const input = (\n  <editor>\n    <block void>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>\n      <block>one</block>\n    </block>\n    <block void>\n      <block>two</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/splitNodes/voids-true/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.splitNodes(editor, { at: [0, 1, 1], voids: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text>one</text>\n        <text>two</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline void>\n        <text>one</text>\n      </inline>\n      <text />\n      <inline void>\n        <text>two</text>\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unsetNodes/operation-contents-check.tsx",
    "content": "/** @jsx jsx */\nimport assert from 'assert'\nimport { Transforms, Text, Editor } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = (editor: Editor) => {\n  Transforms.unsetNodes(editor, 'someKey', { at: [0] })\n\n  // unsetNodes uses null to remove properties, but that should not\n  // flow through to the operation\n  const [setNode] = editor.operations\n\n  if (setNode.type === 'set_node') {\n    assert.deepStrictEqual(setNode, {\n      type: 'set_node',\n      path: [0],\n      properties: { someKey: true },\n      newProperties: {},\n    })\n  } else {\n    // eslint-disable-next-line no-console\n    console.error('operations:', editor.operations)\n    assert.fail('operation was not a set node')\n  }\n}\nexport const input = (\n  <editor>\n    <block someKey>word</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unsetNodes/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  Transforms.unsetNodes(editor, 'someKey', { match: Text.isText })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text someKey>\n        <cursor />\n        word\n      </text>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-block/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        wo\n        <anchor />\n        rd\n      </block>\n      <block>\n        an\n        <focus />\n        other\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-block/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n      <block>four</block>\n      <block>\n        <anchor />\n        five\n      </block>\n      <block>\n        <focus />\n        six\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>three</block>\n    <block>four</block>\n    <block>\n      <anchor />\n      five\n    </block>\n    <block>\n      <focus />\n      six\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-block/block-inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <text />\n        <inline>\n          wo\n          <anchor />\n          rd\n        </inline>\n        <text />\n      </block>\n      <block>\n        <text />\n        <inline>\n          an\n          <focus />\n          other\n        </inline>\n        <text />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <anchor />\n        rd\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        an\n        <focus />\n        other\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-block/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>one</block>\n      <block>two</block>\n      <block>\n        <anchor />\n        three\n      </block>\n      <block>\n        <focus />\n        four\n      </block>\n      <block>five</block>\n      <block>six</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n    <block>\n      <anchor />\n      three\n    </block>\n    <block>\n      <focus />\n      four\n    </block>\n    <block>five</block>\n    <block>six</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-block/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <block>\n          <cursor />\n          word\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <cursor />\n        word\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-block/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <anchor />\n        one\n      </block>\n      <block>\n        <focus />\n        two\n      </block>\n      <block>three</block>\n      <block>four</block>\n      <block>five</block>\n      <block>six</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      <focus />\n      two\n    </block>\n    <block>three</block>\n    <block>four</block>\n    <block>five</block>\n    <block>six</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-block/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <cursor />\n        word\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-inline/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        w<anchor />\n        <inline a>\n          or\n          <focus />\n        </inline>\n        d\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        w<anchor />\n        or\n        <focus />d\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-inline/inline-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline a>\n        <anchor />\n        one\n      </inline>\n      two\n      <inline a>\n        three\n        <focus />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      onetwothree\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-inline/inline-over.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block>\n      w<anchor />o<inline a>rd</inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline a>an</inline>\n      ot\n      <focus />\n      her\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      w<anchor />\n      ord\n    </block>\n    <block>\n      anot\n      <focus />\n      her\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/match-inline/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a })\n}\nexport const input = (\n  <editor>\n    <block>\n      w<anchor />\n      <inline a>\n        or\n        <focus />\n      </inline>\n      d\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      w<anchor />\n      or\n      <focus />d\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/mode-all/match-ancestors.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, mode: 'all' })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block a>\n        <block>\n          <cursor />\n          word\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/mode-all/match-siblings-and-parent.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, mode: 'all' })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block a>\n        <block>\n          <anchor />\n          one\n        </block>\n      </block>\n      <block a>\n        <block>\n          two\n          <focus />\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/mode-all/match-siblings.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, mode: 'all' })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <anchor />\n        one\n      </block>\n    </block>\n    <block a>\n      <block>\n        two\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/mode-all/match-some-siblings-and-parent-split.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, mode: 'all', split: true })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block a>\n        <block>\n          <anchor />\n          one\n        </block>\n      </block>\n      <block a>\n        <block>\n          two\n          <focus />\n        </block>\n      </block>\n      <block a>\n        <block>three</block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n    <block a>\n      <block a>\n        <block>three</block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/mode-all/match-some-siblings-and-parent.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, mode: 'all' })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block a>\n        <block>\n          <anchor />\n          one\n        </block>\n      </block>\n      <block a>\n        <block>\n          two\n          <focus />\n        </block>\n      </block>\n      <block a>\n        <block>three</block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n    <block a>\n      <block>three</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/mode-all/match-some-siblings.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, mode: 'all' })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <anchor />\n        one\n      </block>\n    </block>\n    <block a>\n      <block>\n        two\n        <focus />\n      </block>\n    </block>\n    <block a>\n      <block>three</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n    <block a>\n      <block>three</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/path/block-multiple.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { at: [0] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>one</block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block>two</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { at: [0] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>word</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>word</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/split-block/block-all-nested.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../../..'\nimport { Transforms } from 'slate'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, {\n    match: n => !!n.a,\n    mode: 'all',\n    split: true,\n  })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block a>\n        <block>one</block>\n        <block>\n          <cursor />\n          word\n        </block>\n        <block>now</block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block a>\n        <block>one</block>\n      </block>\n    </block>\n    <block>\n      <cursor />\n      word\n    </block>\n    <block a>\n      <block a>\n        <block>now</block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/split-block/block-all.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, split: true })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <anchor />\n        one\n      </block>\n      <block>two</block>\n      <block>three</block>\n      <block>four</block>\n      <block>five</block>\n      <block>\n        six\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>two</block>\n    <block>three</block>\n    <block>four</block>\n    <block>five</block>\n    <block>\n      six\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/split-block/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, split: true })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n      <block>four</block>\n      <block>\n        <anchor />\n        five\n      </block>\n      <block>\n        six\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block>one</block>\n      <block>two</block>\n      <block>three</block>\n      <block>four</block>\n    </block>\n    <block>\n      <anchor />\n      five\n    </block>\n    <block>\n      six\n      <focus />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/split-block/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, split: true })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>one</block>\n      <block>two</block>\n      <block>\n        <anchor />\n        three\n      </block>\n      <block>\n        four\n        <focus />\n      </block>\n      <block>five</block>\n      <block>six</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block>one</block>\n      <block>two</block>\n    </block>\n    <block>\n      <anchor />\n      three\n    </block>\n    <block>\n      four\n      <focus />\n    </block>\n    <block a>\n      <block>five</block>\n      <block>six</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/split-block/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, split: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      <block a>\n        <block>one</block>\n        <block>two</block>\n        <block>\n          <anchor />\n          three\n        </block>\n        <block>\n          four\n          <focus />\n        </block>\n        <block>five</block>\n        <block>six</block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block a>\n        <block>one</block>\n        <block>two</block>\n      </block>\n      <block>\n        <anchor />\n        three\n      </block>\n      <block>\n        four\n        <focus />\n      </block>\n      <block a>\n        <block>five</block>\n        <block>six</block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/split-block/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, split: true })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <anchor />\n        one\n      </block>\n      <block>\n        two\n        <focus />\n      </block>\n      <block>three</block>\n      <block>four</block>\n      <block>five</block>\n      <block>six</block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <anchor />\n      one\n    </block>\n    <block>\n      two\n      <focus />\n    </block>\n    <block a>\n      <block>three</block>\n      <block>four</block>\n      <block>five</block>\n      <block>six</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/unwrapNodes/split-block/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.unwrapNodes(editor, { match: n => n.a, split: true })\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        <cursor />\n        one\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <cursor />\n      one\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/block-across-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        wo\n        <anchor />\n        rd\n      </block>\n      <block>\n        an\n        <focus />\n        other\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block a>\n        <block>\n          wo\n          <anchor />\n          rd\n        </block>\n        <block>\n          an\n          <focus />\n          other\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/block-across-uneven.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        wo\n        <anchor />\n        rd\n      </block>\n      <block>\n        <block>\n          an\n          <focus />\n          other\n        </block>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block a>\n        <block>\n          wo\n          <anchor />\n          rd\n        </block>\n        <block>\n          <block>\n            an\n            <focus />\n            other\n          </block>\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block>\n        wo\n        <anchor />\n        rd\n      </block>\n      <block>\n        an\n        <focus />\n        other\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>one</block>\n    <block>\n      <anchor />\n      two\n    </block>\n    <block>\n      three\n      <focus />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />)\n}\nexport const output = (\n  <editor>\n    <block>one</block>\n    <block a>\n      <block>\n        <anchor />\n        two\n      </block>\n      <block>\n        three\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />)\n}\nexport const input = (\n  <editor>\n    <block a>\n      <block b>\n        <cursor />\n        word\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block new>\n        <block b>\n          <cursor />\n          word\n        </block>\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block>\n        <cursor />\n        word\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/inline-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <anchor />\n        rd\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        an\n        <focus />\n        other\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block>\n        <text />\n        <inline>\n          wo\n          <anchor />\n          rd\n        </inline>\n        <text />\n      </block>\n      <block>\n        <text />\n        <inline>\n          an\n          <focus />\n          other\n        </inline>\n        <text />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/omit-all.tsx",
    "content": "/** @jsx jsx */\nimport { Editor, Node, Text, Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />, {\n    match: (node, currentPath) => {\n      // reject all nodes inside blocks tagged `noneditable`. Which is everything.\n      if (node.noneditable) return false\n      for (const [node, _] of Node.ancestors(editor, currentPath)) {\n        if (node.noneditable) return false\n      }\n      return true\n    },\n  })\n}\nexport const input = (\n  <editor>\n    <block noneditable>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block noneditable>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/block/omit-nodes.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(\n    editor,\n    <block a>\n      <block b>\n        <text />\n      </block>\n    </block>\n  )\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n    </block>\n    <block>\n      an\n      <focus />\n      other\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block>\n        wo\n        <anchor />\n        rd\n      </block>\n      <block>\n        an\n        <focus />\n        other\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/inline/inline-across-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <inline a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        <text />\n        <inline>\n          wo\n          <anchor />\n          rd\n        </inline>\n        <text />\n      </block>\n      <block>\n        <text />\n        <inline>\n          an\n          <focus />\n          other\n        </inline>\n        <text />\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <block>\n        <text />\n        <inline a>\n          <text />\n          <inline>\n            wo\n            <anchor />\n            rd\n          </inline>\n          <text />\n        </inline>\n        <text />\n      </block>\n      <block>\n        <text />\n        <inline a>\n          <text />\n          <inline>\n            an\n            <focus />\n            other\n          </inline>\n          <text />\n        </inline>\n        <text />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/inline/inline-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <inline a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        wo\n        <anchor />\n        rd\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline>\n        an\n        <focus />\n        other\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline a>\n        <text />\n        <inline>\n          wo\n          <anchor />\n          rd\n        </inline>\n        <text />\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline a>\n        <text />\n        <inline>\n          an\n          <focus />\n          other\n        </inline>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/inline/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <inline a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <cursor />\n        word\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline>\n        <text />\n        <inline a>\n          <cursor />\n          word\n        </inline>\n        <text />\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/inline/text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <inline a />)\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      <text />\n      <inline a>\n        <cursor />\n        word\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/path/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />, { at: [0] })\n}\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block a>\n      <block>\n        <cursor />\n        word\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/selection/depth-text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms, Text } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        <anchor />\n        word\n        <focus />\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />, { match: Text.isText })\n}\nexport const output = (\n  <editor>\n    <block>\n      <block new>\n        <anchor />\n        word\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-block/block-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      on\n      <anchor />e\n    </block>\n    <block>\n      t<focus />\n      wo\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block>on</block>\n    <block new>\n      <block>\n        <anchor />e\n      </block>\n      <block>\n        t<focus />\n      </block>\n    </block>\n    <block>wo</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-block/block-end.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <anchor />\n      rd\n      <focus />\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block>wo</block>\n    <block new>\n      <block>\n        <anchor />\n        rd\n        <focus />\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-block/block-mark.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block old>\n      <text>\n        one\n        <anchor />\n      </text>\n      <text bold>two</text>\n      <text>\n        <focus />\n        three\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block old>one</block>\n    <block new>\n      <block old>\n        <text bold>\n          <anchor />\n          two\n          <focus />\n        </text>\n      </block>\n    </block>\n    <block old>\n      <text>three</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-block/block-middle.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      w<anchor />\n      or\n      <focus />d\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block>w</block>\n    <block new>\n      <block>\n        <anchor />\n        or\n        <focus />\n      </block>\n    </block>\n    <block>d</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-block/block-nested.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block a>\n      <block>\n        w<anchor />\n        or\n        <focus />d\n      </block>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block a>\n      <block>w</block>\n      <block new>\n        <block>\n          <anchor />\n          or\n          <focus />\n        </block>\n      </block>\n      <block>d</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-block/block-start.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <anchor />\n      wo\n      <focus />\n      rd\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block new>\n      <block>\n        <anchor />\n        wo\n        <focus />\n      </block>\n    </block>\n    <block>rd</block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-block/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <cursor />\n      word\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block new>\n      <block>\n        <cursor />\n        word\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-inline/inline-mark.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      <text>\n        one\n        <anchor />\n      </text>\n      <text bold>two</text>\n      <text>\n        <focus />\n        three\n      </text>\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <inline new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block>\n      <text>one</text>\n      <inline new>\n        <text bold>\n          <anchor />\n          two\n          <focus />\n        </text>\n      </inline>\n      <text>three</text>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/split-inline/inline.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const input = (\n  <editor>\n    <block>\n      one\n      <anchor />\n      two\n      <focus />\n      three\n    </block>\n  </editor>\n)\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <inline new />, { split: true })\n}\nexport const output = (\n  <editor>\n    <block>\n      one\n      <inline new>\n        <anchor />\n        two\n        <focus />\n      </inline>\n      three\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/transforms/wrapNodes/voids-true/block.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../../..'\n\nexport const run = editor => {\n  Transforms.wrapNodes(editor, <block a />, { at: [0, 0], voids: true })\n}\nexport const input = (\n  <editor>\n    <block void>word</block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block void>\n      <block a>word</block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/deep-equals-with-array.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: {\n    text: 'same text',\n    array: ['array-content'],\n    bold: true,\n  },\n  objectB: {\n    text: 'same text',\n    array: ['array-content'],\n    bold: true,\n  },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/deep-equals.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n  objectB: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/deep-not-equal-multiple-objects.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: true },\n    underline: { origin: 'inherited', value: false },\n  },\n  objectB: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: true },\n    underline: { origin: 'inherited', value: true },\n  },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/deep-not-equal-nested-undefined.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: true },\n    underline: { origin: 'inherited', value: false },\n  },\n  objectB: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: true },\n  },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/deep-not-equal.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: false },\n  },\n  objectB: {\n    text: 'same text',\n    bold: true,\n    italic: { origin: 'inherited', value: true },\n  },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/deep-not-equals-with-array.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: {\n    text: 'same text',\n    array: ['array-content'],\n    bold: true,\n  },\n  objectB: {\n    text: 'same text',\n    array: ['array-content'],\n    bold: false,\n  },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/simple-equals.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: { text: 'same text', bold: true },\n  objectB: { text: 'same text', bold: true },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/simple-not-equal.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: { text: 'same text', bold: true },\n  objectB: { text: 'same text', bold: true, italic: true },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = false\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/undefined-key-equal-backward.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: {\n    text: 'same text',\n  },\n  objectB: {\n    text: 'same text',\n    bold: undefined,\n  },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/utils/deep-equal/undefined-key-equal-forward.js",
    "content": "import { isDeepEqual } from '../../../src/utils/deep-equal'\n\nexport const input = {\n  objectA: {\n    text: 'same text',\n    bold: undefined,\n  },\n  objectB: {\n    text: 'same text',\n  },\n}\n\nexport const test = ({ objectA, objectB }) => {\n  return isDeepEqual(objectA, objectB)\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate/test/utils/string.ts",
    "content": "import assert from 'assert'\nimport {\n  codepointsIteratorRTL,\n  getCharacterDistance,\n  getWordDistance,\n} from '../../src/utils/string'\n\nconst codepoints = [\n  ['a', 1],\n  ['0', 1],\n  [' ', 1],\n  ['# ', 1],\n  ['* ', 1],\n  ['2 ', 1],\n  ['🙂', 2],\n  ['☺️', 2],\n  ['☺️', 2],\n  ['⬅️', 2],\n  ['🏴', 2],\n  ['☺️a', 2, 1],\n  ['🏁🇨🇳', 2, 4],\n  ['🎌🇩🇪', 2, 4],\n  ['🚩🇺🇸', 2, 4],\n  ['🇨🇳🎌', 4, 2],\n  ['🏴🏳️', 2, 3],\n  ['🇷🇺🚩', 4, 2],\n] as const\n\nconst zwjSequences = [\n  ['👁‍🗨', 5],\n  ['👨‍👩‍👧‍👧', 11],\n  ['👩‍❤️‍👨', 8],\n  ['🙋🏽‍♂️', 7],\n  ['🙋‍♂️', 5],\n  ['🕵️‍♀️', 6],\n  ['👨🏿‍🦳', 7],\n] as const\n\nconst regionalIndicatorSequences = [\n  '🇧🇪',\n  '🇧🇫',\n  '🇧🇬',\n  '🇧🇭',\n  '🇧🇮',\n  '🇧🇯',\n  '🇧🇱',\n  '🇧🇲',\n  '🇧🇳',\n  '🇧🇴',\n]\n\nconst keycapSequences = [\n  '#️⃣',\n  '*️⃣',\n  '0️⃣',\n  '1️⃣',\n  '2️⃣',\n  '3️⃣',\n  '4️⃣',\n  '5️⃣',\n  '6️⃣',\n  '7️⃣',\n  '8️⃣',\n  '9️⃣',\n]\n\nconst tagSequences = [\n  ['🏴󠁧󠁢󠁥󠁮󠁧󠁿', 14],\n  ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 14],\n  ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 14],\n] as const\n\n// Sample strings from https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html#samples\n// In some strings, explicit Unicode code points are used to prevent accidental normalization.\n// Zero-width joiners (U+200D), which are hard to tell, are also made explicit.\nconst sampleStrings = {\n  '2': ['a\\u0308'],\n  '3': [' \\u200d', 'ن'],\n  '4': ['ن\\u200d', ' '],\n  '5': ['ᄀᄀ'],\n  '6': ['가\\u11a8', 'ᄀ'],\n  '7': ['각ᆨ', 'ᄀ'],\n  '8': ['🇦🇧', '🇨', 'b'],\n  '9': ['a', '🇦🇧', '🇨', 'b'],\n  '10': ['a', '🇦🇧\\u200d', '🇨', 'b'],\n  '11': ['a', '🇦\\u200d', '🇧🇨', 'b'],\n  '12': ['a', '🇦🇧', '🇨🇩', 'b'],\n  '13': ['a\\u200d'],\n  '14': ['a\\u0308', 'b'],\n  '15': ['aः', 'b'],\n  '16': ['a', '؀b'],\n  '17': ['👶🏿', '👶'],\n  '18': ['a🏿', '👶'],\n  '19': ['a🏿', '👶\\u200d🛑'],\n  '20': ['👶🏿̈\\u200d👶🏿'],\n  '21': ['🛑\\u200d🛑'],\n  '22': ['a\\u200d', '🛑'],\n  '23': ['✁\\u200d✁'],\n  '24': ['a\\u200d', '✁'],\n}\n\nconst dirs = ['ltr', 'rtl']\n\ndirs.forEach(dir => {\n  const isRTL = dir === 'rtl'\n\n  describe(`getCharacterDistance - ${dir}`, () => {\n    codepoints.forEach(([str, ltrDist, rtlDist]) => {\n      const dist = isRTL && rtlDist != null ? rtlDist : ltrDist\n\n      it(str, () => {\n        assert.strictEqual(getCharacterDistance(str + str, isRTL), dist)\n      })\n    })\n\n    zwjSequences.forEach(([str, dist]) => {\n      it(str, () => {\n        assert.strictEqual(getCharacterDistance(str + str, isRTL), dist)\n      })\n    })\n\n    regionalIndicatorSequences.forEach(str => {\n      it(str, () => {\n        assert.strictEqual(getCharacterDistance(str + str, isRTL), 4)\n      })\n    })\n\n    keycapSequences.forEach(str => {\n      it(str, () => {\n        assert.strictEqual(getCharacterDistance(str + str, isRTL), 3)\n      })\n    })\n\n    tagSequences.forEach(([str, dist]) => {\n      it(str, () => {\n        assert.strictEqual(getCharacterDistance(str + str, isRTL), dist)\n      })\n    })\n\n    Object.entries(sampleStrings).forEach(([label, strs]) => {\n      for (let i = 0; i < strs.length; i++) {\n        let str = ''\n        if (isRTL) {\n          str = strs.slice(0, i + 1).join('')\n        } else {\n          str = strs.slice(i).join('')\n        }\n        it(`Sample string ${label}, boundary ${isRTL ? i : i + 1}`, () => {\n          assert.strictEqual(getCharacterDistance(str, isRTL), strs[i].length)\n        })\n      }\n    })\n  })\n})\n\nconst ltrCases = [\n  ['hello foobarbaz', 5],\n  ['🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿 🏴󠁧󠁢󠁷󠁬󠁳󠁿', 28],\n  [\"Don't do this\", 5],\n  [\"I'm ok\", 3],\n] as const\n\nconst rtlCases = [\n  ['hello foobarbaz', 9],\n  ['🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿 🏴󠁧󠁢󠁷󠁬󠁳󠁿', 14],\n  [\"Don't\", 5],\n  [\"Don't do this\", 4],\n  [\"I'm\", 3],\n  ['Tags 🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿', 28],\n] as const\n\ndescribe(`getWordDistance - ltr`, () => {\n  ltrCases.forEach(([str, dist]) => {\n    it(str, () => {\n      assert.strictEqual(getWordDistance(str), dist)\n    })\n  })\n})\n\ndescribe(`getWordDistance - rtl`, () => {\n  rtlCases.forEach(([str, dist]) => {\n    it(str, () => {\n      assert.strictEqual(getWordDistance(str, true), dist)\n    })\n  })\n})\n\nconst cases = [\n  ...[...codepoints, ...zwjSequences, ...tagSequences, ...rtlCases].map(\n    ([str]) => str\n  ),\n  ...keycapSequences,\n  ...regionalIndicatorSequences,\n]\n\ndescribe('codepointsIteratorRTL', () => {\n  cases.forEach(str => {\n    it(str, () => {\n      const arr1 = [...codepointsIteratorRTL(str)]\n      const arr2 = Array.from(str).reverse()\n\n      assert.deepStrictEqual(arr1, arr2)\n    })\n  })\n})\n"
  },
  {
    "path": "packages/slate/tsconfig.json",
    "content": "{\n  \"extends\": \"../../config/typescript/tsconfig.json\",\n  \"include\": [\"src/**/*\"],\n  \"compilerOptions\": {\n    \"rootDir\": \"./src\",\n    \"outDir\": \"./lib\",\n    \"composite\": true\n  },\n  \"references\": []\n}\n"
  },
  {
    "path": "packages/slate-dom/CHANGELOG.md",
    "content": "# slate-dom\n\n## 0.123.1\n\n### Patch Changes\n\n- [#6004](https://github.com/ianstormtaylor/slate/pull/6004) [`e2a940a0`](https://github.com/ianstormtaylor/slate/commit/e2a940a0e1575a4f084923a16a1ab89cf965dfda) Thanks [@christianhg](https://github.com/christianhg)! - Fix `findPath` throwing \"Unable to find the path for Slate node\" after component unmount\n\n  When `toSlatePoint` is called with `suppressThrow: true` (e.g., from `toSlateRange` during selection change handling), it should not throw errors. However, the internal `findPath` calls were not respecting this option, causing errors to be thrown when the component was unmounting and node references became stale.\n\n  This fix wraps the `findPath` calls in `toSlatePoint` with try-catch blocks that respect the `suppressThrow` option, returning `null` instead of throwing when the option is enabled.\n\n## 0.123.0\n\n### Patch Changes\n\n- [#6000](https://github.com/ianstormtaylor/slate/pull/6000) [`8d9bf305`](https://github.com/ianstormtaylor/slate/commit/8d9bf30595a6fad62ff15e302ab489ff46a2515a) Thanks [@nabbydude](https://github.com/nabbydude)! - Added `Location.isPath`, `Location.isPoint`, `Location.isRange`, and `Location.isSpan` functions, as efficient type discriminators.\n  Use these instead of `Path.isPath`, `Point.isPoint`, `Range.isRange`, and `Span.isSpan` whenever possible.\n\n## 0.121.0\n\n### Patch Changes\n\n- [#5982](https://github.com/ianstormtaylor/slate/pull/5982) [`dd4a77b3`](https://github.com/ianstormtaylor/slate/commit/dd4a77b3c5bb5d2d3cd6a62f49d6f318d30d6727) Thanks [@nabbydude](https://github.com/nabbydude)! - Add `Node.isEditor`, `Node.isElement`, and `Node.isText` as alternative type guards for when we already know the object is a node.\n  Use these new functions instead of `Editor.isEditor`, `Element.isElement`, and `Text.isText` whenever possible, the classic functions are only necessary for typechecking an entirely unknown object.\n  ===\n\n## 0.119.0\n\n### Minor Changes\n\n- [#5963](https://github.com/ianstormtaylor/slate/pull/5963) [`33e74a82`](https://github.com/ianstormtaylor/slate/commit/33e74a822b82c4b9ce1444f456c5343970441ccb) Thanks [@iperzic](https://github.com/iperzic)! - Fixes an editor crash that happens when editor is placed inside Shadow DOM and the user is typing on Android\n\n## 0.118.1\n\n### Patch Changes\n\n- [#5936](https://github.com/ianstormtaylor/slate/pull/5936) [`05583457`](https://github.com/ianstormtaylor/slate/commit/0558345703e3451f82ffd7eeb15dee51102b1209) Thanks [@delijah](https://github.com/delijah)! - Search backward and forward for leaf nodes in non contenteditable elements inside `toSlatePoint`\n\n## 0.117.4\n\n### Patch Changes\n\n- [#5919](https://github.com/ianstormtaylor/slate/pull/5919) [`e029a87a`](https://github.com/ianstormtaylor/slate/commit/e029a87aba0d124af39c519813448201da32193d) Thanks [@12joan](https://github.com/12joan)! - Do not apply WeChat-related workarounds on recent versions of Chrome\n\n- [#5916](https://github.com/ianstormtaylor/slate/pull/5916) [`f2ea1e1e`](https://github.com/ianstormtaylor/slate/commit/f2ea1e1e3ae281cfef145b92a9cb61c7a749363d) Thanks [@delijah](https://github.com/delijah)! - Do not retry focusing editor after it has been unmounted\n\n## 0.116.0\n\n### Minor Changes\n\n- [#5871](https://github.com/ianstormtaylor/slate/pull/5871) [`fb87646e`](https://github.com/ianstormtaylor/slate/commit/fb87646e8643e1d0547134cea9d1f57912f06a92) Thanks [@12joan](https://github.com/12joan)! - - Add `splitDecorationsByChild` to split an array of decorated ranges by child index.\n\n## 0.114.0\n\n### Patch Changes\n\n- [#5849](https://github.com/ianstormtaylor/slate/pull/5849) [`0fde537b`](https://github.com/ianstormtaylor/slate/commit/0fde537b52c23dd374721501e31e9aab56ce6477) Thanks [@12joan](https://github.com/12joan)! - Fix: Deleting backward by a line misses 1 character (belated changeset for https://github.com/ianstormtaylor/slate/pull/5827)\n\n## 0.112.2\n\n### Patch Changes\n\n- [#5792](https://github.com/ianstormtaylor/slate/pull/5792) [`82165125`](https://github.com/ianstormtaylor/slate/commit/82165125957644f7dfe81d55a620f4d31132e3c9) Thanks [@zhi-zhi-zhi](https://github.com/zhi-zhi-zhi)! - fix: additional fix for previous fix: Prevent ReactEditor.toDOMRange crash in setDomSelection #5741\n\n## 0.111.0\n\n### Minor Changes\n\n- [#5734](https://github.com/ianstormtaylor/slate/pull/5734) [`9a212512`](https://github.com/ianstormtaylor/slate/commit/9a2125127064f35332d5c06df2dfa3768f745185) Thanks [@bmingles](https://github.com/bmingles)! - Split out slate-dom package\n"
  },
  {
    "path": "packages/slate-dom/package.json",
    "content": "{\n  \"name\": \"slate-dom\",\n  \"description\": \"Tools for building completely customizable richtext editors with React.\",\n  \"version\": \"0.123.1\",\n  \"license\": \"MIT\",\n  \"repository\": \"git://github.com/ianstormtaylor/slate.git\",\n  \"main\": \"dist/index.js\",\n  \"module\": \"dist/index.es.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"umd\": \"dist/slate-dom.js\",\n  \"umdMin\": \"dist/slate-dom.min.js\",\n  \"sideEffects\": false,\n  \"files\": [\n    \"dist/\"\n  ],\n  \"dependencies\": {\n    \"@juggle/resize-observer\": \"^3.4.0\",\n    \"direction\": \"^1.0.4\",\n    \"is-hotkey\": \"^0.2.0\",\n    \"is-plain-object\": \"^5.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"scroll-into-view-if-needed\": \"^3.1.0\",\n    \"tiny-invariant\": \"1.3.1\"\n  },\n  \"devDependencies\": {\n    \"@babel/runtime\": \"^7.23.2\",\n    \"@types/is-hotkey\": \"^0.1.8\",\n    \"@types/jest\": \"29.5.6\",\n    \"@types/jsdom\": \"^21.1.4\",\n    \"@types/lodash\": \"^4.14.200\",\n    \"@types/resize-observer-browser\": \"^0.1.8\",\n    \"slate\": \"^0.123.0\",\n    \"slate-hyperscript\": \"^0.115.0\",\n    \"source-map-loader\": \"^4.0.1\"\n  },\n  \"peerDependencies\": {\n    \"slate\": \">=0.121.0\"\n  },\n  \"umdGlobals\": {\n    \"slate\": \"Slate\"\n  },\n  \"keywords\": [\n    \"canvas\",\n    \"contenteditable\",\n    \"docs\",\n    \"document\",\n    \"edit\",\n    \"editor\",\n    \"editable\",\n    \"html\",\n    \"immutable\",\n    \"markdown\",\n    \"medium\",\n    \"paper\",\n    \"react\",\n    \"rich\",\n    \"richtext\",\n    \"richtext\",\n    \"slate\",\n    \"text\",\n    \"wysiwyg\",\n    \"wysiwym\"\n  ]\n}\n"
  },
  {
    "path": "packages/slate-dom/src/custom-types.ts",
    "content": "import { BaseRange, BaseText } from 'slate'\nimport { DOMEditor } from './plugin/dom-editor'\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: DOMEditor\n    Text: BaseText & {\n      placeholder?: string\n      onPlaceholderResize?: (node: HTMLElement | null) => void\n      // FIXME: is unknown correct here?\n      [key: string]: unknown\n    }\n    Range: BaseRange & {\n      placeholder?: string\n      onPlaceholderResize?: (node: HTMLElement | null) => void\n      // FIXME: is unknown correct here?\n      [key: string]: unknown\n    }\n  }\n}\n\ndeclare global {\n  interface Window {\n    MSStream: boolean\n  }\n  interface DocumentOrShadowRoot {\n    getSelection(): Selection | null\n  }\n\n  interface CaretPosition {\n    readonly offsetNode: Node\n    readonly offset: number\n    getClientRect(): DOMRect | null\n  }\n\n  interface Document {\n    caretPositionFromPoint(x: number, y: number): CaretPosition | null\n  }\n\n  interface Node {\n    getRootNode(options?: GetRootNodeOptions): Document | ShadowRoot\n  }\n}\n\nexport {}\n"
  },
  {
    "path": "packages/slate-dom/src/index.ts",
    "content": "// Plugin\nexport { DOMEditor, type DOMEditorInterface } from './plugin/dom-editor'\nexport { withDOM } from './plugin/with-dom'\n\n// Utils\nexport { TRIPLE_CLICK } from './utils/constants'\n\nexport {\n  applyStringDiff,\n  mergeStringDiffs,\n  normalizePoint,\n  normalizeRange,\n  normalizeStringDiff,\n  StringDiff,\n  targetRange,\n  TextDiff,\n  verifyDiffState,\n} from './utils/diff-text'\n\nexport {\n  closestShadowAware,\n  containsShadowAware,\n  DOMElement,\n  DOMNode,\n  DOMPoint,\n  DOMRange,\n  DOMSelection,\n  DOMStaticRange,\n  DOMText,\n  getActiveElement,\n  getDefaultView,\n  getSelection,\n  hasShadowRoot,\n  isAfter,\n  isBefore,\n  isDOMElement,\n  isDOMNode,\n  isDOMSelection,\n  isPlainTextOnlyPaste,\n  isTrackedMutation,\n  normalizeDOMPoint,\n} from './utils/dom'\n\nexport {\n  CAN_USE_DOM,\n  HAS_BEFORE_INPUT_SUPPORT,\n  IS_ANDROID,\n  IS_CHROME,\n  IS_FIREFOX,\n  IS_FIREFOX_LEGACY,\n  IS_IOS,\n  IS_WEBKIT,\n  IS_UC_MOBILE,\n  IS_WECHATBROWSER,\n} from './utils/environment'\n\nexport { default as Hotkeys } from './utils/hotkeys'\n\nexport { Key } from './utils/key'\n\nexport {\n  isElementDecorationsEqual,\n  isTextDecorationsEqual,\n  splitDecorationsByChild,\n} from './utils/range-list'\n\nexport {\n  EDITOR_TO_ELEMENT,\n  EDITOR_TO_FORCE_RENDER,\n  EDITOR_TO_KEY_TO_ELEMENT,\n  EDITOR_TO_ON_CHANGE,\n  EDITOR_TO_PENDING_ACTION,\n  EDITOR_TO_PENDING_DIFFS,\n  EDITOR_TO_PENDING_INSERTION_MARKS,\n  EDITOR_TO_PENDING_SELECTION,\n  EDITOR_TO_PLACEHOLDER_ELEMENT,\n  EDITOR_TO_SCHEDULE_FLUSH,\n  EDITOR_TO_USER_MARKS,\n  EDITOR_TO_USER_SELECTION,\n  EDITOR_TO_WINDOW,\n  ELEMENT_TO_NODE,\n  IS_COMPOSING,\n  IS_FOCUSED,\n  IS_NODE_MAP_DIRTY,\n  IS_READ_ONLY,\n  MARK_PLACEHOLDER_SYMBOL,\n  NODE_TO_ELEMENT,\n  NODE_TO_INDEX,\n  NODE_TO_KEY,\n  NODE_TO_PARENT,\n  PLACEHOLDER_SYMBOL,\n} from './utils/weak-maps'\n"
  },
  {
    "path": "packages/slate-dom/src/plugin/dom-editor.ts",
    "content": "import {\n  BaseEditor,\n  Editor,\n  Node,\n  Path,\n  Point,\n  Range,\n  Scrubber,\n  Transforms,\n} from 'slate'\nimport { TextDiff } from '../utils/diff-text'\nimport {\n  closestShadowAware,\n  containsShadowAware,\n  DOMElement,\n  DOMNode,\n  DOMPoint,\n  DOMRange,\n  DOMSelection,\n  DOMStaticRange,\n  DOMText,\n  getSelection,\n  hasShadowRoot,\n  isAfter,\n  isBefore,\n  isDOMElement,\n  isDOMNode,\n  isDOMSelection,\n  normalizeDOMPoint,\n} from '../utils/dom'\nimport { IS_ANDROID, IS_CHROME, IS_FIREFOX } from '../utils/environment'\n\nimport { Key } from '../utils/key'\nimport {\n  EDITOR_TO_ELEMENT,\n  EDITOR_TO_KEY_TO_ELEMENT,\n  EDITOR_TO_PENDING_DIFFS,\n  EDITOR_TO_SCHEDULE_FLUSH,\n  EDITOR_TO_WINDOW,\n  ELEMENT_TO_NODE,\n  IS_COMPOSING,\n  IS_FOCUSED,\n  IS_READ_ONLY,\n  NODE_TO_INDEX,\n  NODE_TO_KEY,\n  NODE_TO_PARENT,\n} from '../utils/weak-maps'\n\n/**\n * A DOM-specific version of the `Editor` interface.\n */\n\nexport interface DOMEditor extends BaseEditor {\n  hasEditableTarget: (\n    editor: DOMEditor,\n    target: EventTarget | null\n  ) => target is DOMNode\n  hasRange: (editor: DOMEditor, range: Range) => boolean\n  hasSelectableTarget: (\n    editor: DOMEditor,\n    target: EventTarget | null\n  ) => boolean\n  hasTarget: (\n    editor: DOMEditor,\n    target: EventTarget | null\n  ) => target is DOMNode\n  insertData: (data: DataTransfer) => void\n  insertFragmentData: (data: DataTransfer) => boolean\n  insertTextData: (data: DataTransfer) => boolean\n  isTargetInsideNonReadonlyVoid: (\n    editor: DOMEditor,\n    target: EventTarget | null\n  ) => boolean\n  setFragmentData: (\n    data: DataTransfer,\n    originEvent?: 'drag' | 'copy' | 'cut'\n  ) => void\n}\n\nexport interface DOMEditorInterface {\n  /**\n   * Experimental and android specific: Get pending diffs\n   */\n  androidPendingDiffs: (editor: Editor) => TextDiff[] | undefined\n\n  /**\n   * Experimental and android specific: Flush all pending diffs and cancel composition at the next possible time.\n   */\n  androidScheduleFlush: (editor: Editor) => void\n\n  /**\n   * Blur the editor.\n   */\n  blur: (editor: DOMEditor) => void\n\n  /**\n   * Deselect the editor.\n   */\n  deselect: (editor: DOMEditor) => void\n\n  /**\n   * Find the DOM node that implements DocumentOrShadowRoot for the editor.\n   */\n  findDocumentOrShadowRoot: (editor: DOMEditor) => Document | ShadowRoot\n\n  /**\n   * Get the target range from a DOM `event`.\n   */\n  findEventRange: (editor: DOMEditor, event: any) => Range\n\n  /**\n   * Find a key for a Slate node.\n   */\n  findKey: (editor: DOMEditor, node: Node) => Key\n\n  /**\n   * Find the path of Slate node.\n   */\n  findPath: (editor: DOMEditor, node: Node) => Path\n\n  /**\n   * Focus the editor.\n   */\n  focus: (editor: DOMEditor, options?: { retries: number }) => void\n\n  /**\n   * Return the host window of the current editor.\n   */\n  getWindow: (editor: DOMEditor) => Window\n\n  /**\n   * Check if a DOM node is within the editor.\n   */\n  hasDOMNode: (\n    editor: DOMEditor,\n    target: DOMNode,\n    options?: { editable?: boolean }\n  ) => boolean\n\n  /**\n   * Check if the target is editable and in the editor.\n   */\n  hasEditableTarget: (\n    editor: DOMEditor,\n    target: EventTarget | null\n  ) => target is DOMNode\n\n  /**\n   *\n   */\n  hasRange: (editor: DOMEditor, range: Range) => boolean\n\n  /**\n   * Check if the target can be selectable\n   */\n  hasSelectableTarget: (\n    editor: DOMEditor,\n    target: EventTarget | null\n  ) => boolean\n\n  /**\n   * Check if the target is in the editor.\n   */\n  hasTarget: (\n    editor: DOMEditor,\n    target: EventTarget | null\n  ) => target is DOMNode\n\n  /**\n   * Insert data from a `DataTransfer` into the editor.\n   */\n  insertData: (editor: DOMEditor, data: DataTransfer) => void\n\n  /**\n   * Insert fragment data from a `DataTransfer` into the editor.\n   */\n  insertFragmentData: (editor: DOMEditor, data: DataTransfer) => boolean\n\n  /**\n   * Insert text data from a `DataTransfer` into the editor.\n   */\n  insertTextData: (editor: DOMEditor, data: DataTransfer) => boolean\n\n  /**\n   * Check if the user is currently composing inside the editor.\n   */\n  isComposing: (editor: DOMEditor) => boolean\n\n  /**\n   * Check if the editor is focused.\n   */\n  isFocused: (editor: DOMEditor) => boolean\n\n  /**\n   * Check if the editor is in read-only mode.\n   */\n  isReadOnly: (editor: DOMEditor) => boolean\n\n  /**\n   * Check if the target is inside void and in an non-readonly editor.\n   */\n  isTargetInsideNonReadonlyVoid: (\n    editor: DOMEditor,\n    target: EventTarget | null\n  ) => boolean\n\n  /**\n   * Sets data from the currently selected fragment on a `DataTransfer`.\n   */\n  setFragmentData: (\n    editor: DOMEditor,\n    data: DataTransfer,\n    originEvent?: 'drag' | 'copy' | 'cut'\n  ) => void\n\n  /**\n   * Find the native DOM element from a Slate node.\n   */\n  toDOMNode: (editor: DOMEditor, node: Node) => HTMLElement\n\n  /**\n   * Find a native DOM selection point from a Slate point.\n   */\n  toDOMPoint: (editor: DOMEditor, point: Point) => DOMPoint\n\n  /**\n   * Find a native DOM range from a Slate `range`.\n   *\n   * Notice: the returned range will always be ordinal regardless of the direction of Slate `range` due to DOM API limit.\n   *\n   * there is no way to create a reverse DOM Range using Range.setStart/setEnd\n   * according to https://dom.spec.whatwg.org/#concept-range-bp-set.\n   */\n  toDOMRange: (editor: DOMEditor, range: Range) => DOMRange\n\n  /**\n   * Find a Slate node from a native DOM `element`.\n   */\n  toSlateNode: (editor: DOMEditor, domNode: DOMNode) => Node\n\n  /**\n   * Find a Slate point from a DOM selection's `domNode` and `domOffset`.\n   */\n  toSlatePoint: <T extends boolean>(\n    editor: DOMEditor,\n    domPoint: DOMPoint,\n    options: {\n      exactMatch: boolean\n      suppressThrow: T\n      /**\n       * The direction to search for Slate leaf nodes if `domPoint` is\n       * non-editable and non-void.\n       */\n      searchDirection?: 'forward' | 'backward'\n    }\n  ) => T extends true ? Point | null : Point\n\n  /**\n   * Find a Slate range from a DOM range or selection.\n   */\n  toSlateRange: <T extends boolean>(\n    editor: DOMEditor,\n    domRange: DOMRange | DOMStaticRange | DOMSelection,\n    options: {\n      exactMatch: boolean\n      suppressThrow: T\n    }\n  ) => T extends true ? Range | null : Range\n}\n\n// eslint-disable-next-line no-redeclare\nexport const DOMEditor: DOMEditorInterface = {\n  androidPendingDiffs: editor => EDITOR_TO_PENDING_DIFFS.get(editor),\n\n  androidScheduleFlush: editor => {\n    EDITOR_TO_SCHEDULE_FLUSH.get(editor)?.()\n  },\n\n  blur: editor => {\n    const el = DOMEditor.toDOMNode(editor, editor)\n    const root = DOMEditor.findDocumentOrShadowRoot(editor)\n    IS_FOCUSED.set(editor, false)\n\n    if (root.activeElement === el) {\n      el.blur()\n    }\n  },\n\n  deselect: editor => {\n    const { selection } = editor\n    const root = DOMEditor.findDocumentOrShadowRoot(editor)\n    const domSelection = getSelection(root)\n\n    if (domSelection && domSelection.rangeCount > 0) {\n      domSelection.removeAllRanges()\n    }\n\n    if (selection) {\n      Transforms.deselect(editor)\n    }\n  },\n\n  findDocumentOrShadowRoot: editor => {\n    const el = DOMEditor.toDOMNode(editor, editor)\n    const root = el.getRootNode()\n\n    if (root instanceof Document || root instanceof ShadowRoot) {\n      return root\n    }\n\n    return el.ownerDocument\n  },\n\n  findEventRange: (editor, event) => {\n    if ('nativeEvent' in event) {\n      event = event.nativeEvent\n    }\n\n    const { clientX: x, clientY: y, target } = event\n\n    if (x == null || y == null) {\n      throw new Error(`Cannot resolve a Slate range from a DOM event: ${event}`)\n    }\n\n    const node = DOMEditor.toSlateNode(editor, event.target)\n    const path = DOMEditor.findPath(editor, node)\n\n    // If the drop target is inside a void node, move it into either the\n    // next or previous node, depending on which side the `x` and `y`\n    // coordinates are closest to.\n    if (Node.isElement(node) && Editor.isVoid(editor, node)) {\n      const rect = target.getBoundingClientRect()\n      const isPrev = editor.isInline(node)\n        ? x - rect.left < rect.left + rect.width - x\n        : y - rect.top < rect.top + rect.height - y\n\n      const edge = Editor.point(editor, path, {\n        edge: isPrev ? 'start' : 'end',\n      })\n      const point = isPrev\n        ? Editor.before(editor, edge)\n        : Editor.after(editor, edge)\n\n      if (point) {\n        const range = Editor.range(editor, point)\n        return range\n      }\n    }\n\n    // Else resolve a range from the caret position where the drop occured.\n    let domRange\n    const { document } = DOMEditor.getWindow(editor)\n\n    // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n    if (document.caretRangeFromPoint) {\n      domRange = document.caretRangeFromPoint(x, y)\n    } else {\n      const position = document.caretPositionFromPoint(x, y)\n\n      if (position) {\n        domRange = document.createRange()\n        domRange.setStart(position.offsetNode, position.offset)\n        domRange.setEnd(position.offsetNode, position.offset)\n      }\n    }\n\n    if (!domRange) {\n      throw new Error(`Cannot resolve a Slate range from a DOM event: ${event}`)\n    }\n\n    // Resolve a Slate range from the DOM range.\n    const range = DOMEditor.toSlateRange(editor, domRange, {\n      exactMatch: false,\n      suppressThrow: false,\n    })\n    return range\n  },\n\n  findKey: (editor, node) => {\n    let key = NODE_TO_KEY.get(node)\n\n    if (!key) {\n      key = new Key()\n      NODE_TO_KEY.set(node, key)\n    }\n\n    return key\n  },\n\n  findPath: (editor, node) => {\n    const path: Path = []\n    let child = node\n\n    while (true) {\n      const parent = NODE_TO_PARENT.get(child)\n\n      if (parent == null) {\n        if (child === editor) {\n          return path\n        } else {\n          break\n        }\n      }\n\n      const i = NODE_TO_INDEX.get(child)\n\n      if (i == null) {\n        break\n      }\n\n      path.unshift(i)\n      child = parent\n    }\n\n    throw new Error(\n      `Unable to find the path for Slate node: ${Scrubber.stringify(node)}`\n    )\n  },\n\n  focus: (editor, options = { retries: 5 }) => {\n    // Return if already focused\n    if (IS_FOCUSED.get(editor)) {\n      return\n    }\n\n    // Return if no dom node is associated with the editor, which means the editor is not yet mounted\n    // or has been unmounted. This can happen especially, while retrying to focus the editor.\n    if (!EDITOR_TO_ELEMENT.get(editor)) {\n      return\n    }\n\n    // Retry setting focus if the editor has pending operations.\n    // The DOM (selection) is unstable while changes are applied.\n    // Retry until retries are exhausted or editor is focused.\n    if (options.retries <= 0) {\n      throw new Error(\n        'Could not set focus, editor seems stuck with pending operations'\n      )\n    }\n    if (editor.operations.length > 0) {\n      setTimeout(() => {\n        DOMEditor.focus(editor, { retries: options.retries - 1 })\n      }, 10)\n      return\n    }\n\n    const el = DOMEditor.toDOMNode(editor, editor)\n    const root = DOMEditor.findDocumentOrShadowRoot(editor)\n    if (root.activeElement !== el) {\n      // Ensure that the DOM selection state is set to the editor's selection\n      if (editor.selection && root instanceof Document) {\n        const domSelection = getSelection(root)\n        const domRange = DOMEditor.toDOMRange(editor, editor.selection)\n        domSelection?.removeAllRanges()\n        domSelection?.addRange(domRange)\n      }\n      // Create a new selection in the top of the document if missing\n      if (!editor.selection) {\n        Transforms.select(editor, Editor.start(editor, []))\n      }\n      // IS_FOCUSED should be set before calling el.focus() to ensure that\n      // FocusedContext is updated to the correct value\n      IS_FOCUSED.set(editor, true)\n      el.focus({ preventScroll: true })\n    }\n  },\n\n  getWindow: editor => {\n    const window = EDITOR_TO_WINDOW.get(editor)\n    if (!window) {\n      throw new Error('Unable to find a host window element for this editor')\n    }\n    return window\n  },\n\n  hasDOMNode: (editor, target, options = {}) => {\n    const { editable = false } = options\n    const editorEl = DOMEditor.toDOMNode(editor, editor)\n    let targetEl\n\n    // COMPAT: In Firefox, reading `target.nodeType` will throw an error if\n    // target is originating from an internal \"restricted\" element (e.g. a\n    // stepper arrow on a number input). (2018/05/04)\n    // https://github.com/ianstormtaylor/slate/issues/1819\n    try {\n      targetEl = (\n        isDOMElement(target) ? target : target.parentElement\n      ) as HTMLElement\n    } catch (err) {\n      if (\n        err instanceof Error &&\n        !err.message.includes('Permission denied to access property \"nodeType\"')\n      ) {\n        throw err\n      }\n    }\n\n    if (!targetEl) {\n      return false\n    }\n\n    return (\n      closestShadowAware(targetEl, `[data-slate-editor]`) === editorEl &&\n      (!editable || targetEl.isContentEditable\n        ? true\n        : (typeof targetEl.isContentEditable === 'boolean' && // isContentEditable exists only on HTMLElement, and on other nodes it will be undefined\n            // this is the core logic that lets you know you got the right editor.selection instead of null when editor is contenteditable=\"false\"(readOnly)\n            closestShadowAware(targetEl, '[contenteditable=\"false\"]') ===\n              editorEl) ||\n          !!targetEl.getAttribute('data-slate-zero-width'))\n    )\n  },\n\n  hasEditableTarget: (editor, target): target is DOMNode =>\n    isDOMNode(target) &&\n    DOMEditor.hasDOMNode(editor, target, { editable: true }),\n\n  hasRange: (editor, range) => {\n    const { anchor, focus } = range\n    return (\n      Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path)\n    )\n  },\n\n  hasSelectableTarget: (editor, target) =>\n    DOMEditor.hasEditableTarget(editor, target) ||\n    DOMEditor.isTargetInsideNonReadonlyVoid(editor, target),\n\n  hasTarget: (editor, target): target is DOMNode =>\n    isDOMNode(target) && DOMEditor.hasDOMNode(editor, target),\n\n  insertData: (editor, data) => {\n    editor.insertData(data)\n  },\n\n  insertFragmentData: (editor, data) => editor.insertFragmentData(data),\n\n  insertTextData: (editor, data) => editor.insertTextData(data),\n\n  isComposing: editor => {\n    return !!IS_COMPOSING.get(editor)\n  },\n\n  isFocused: editor => !!IS_FOCUSED.get(editor),\n\n  isReadOnly: editor => !!IS_READ_ONLY.get(editor),\n\n  isTargetInsideNonReadonlyVoid: (editor, target) => {\n    if (IS_READ_ONLY.get(editor)) return false\n    if (!DOMEditor.hasTarget(editor, target)) return false\n\n    const slateNode = DOMEditor.toSlateNode(editor, target)\n    return Node.isElement(slateNode) && Editor.isVoid(editor, slateNode)\n  },\n\n  setFragmentData: (editor, data, originEvent) =>\n    editor.setFragmentData(data, originEvent),\n\n  toDOMNode: (editor, node) => {\n    const domNode =\n      node === editor\n        ? EDITOR_TO_ELEMENT.get(editor)\n        : EDITOR_TO_KEY_TO_ELEMENT.get(editor)?.get(\n            DOMEditor.findKey(editor, node)\n          )\n\n    if (!domNode) {\n      throw new Error(\n        `Cannot resolve a DOM node from Slate node: ${Scrubber.stringify(node)}`\n      )\n    }\n\n    return domNode\n  },\n\n  toDOMPoint: (editor, point) => {\n    const [node] = Editor.node(editor, point.path)\n    const el = DOMEditor.toDOMNode(editor, node)\n    let domPoint: DOMPoint | undefined\n\n    // If we're inside a void node, force the offset to 0, otherwise the zero\n    // width spacing character will result in an incorrect offset of 1\n    if (Editor.void(editor, { at: point })) {\n      point = { path: point.path, offset: 0 }\n    }\n\n    // For each leaf, we need to isolate its content, which means filtering\n    // to its direct text and zero-width spans. (We have to filter out any\n    // other siblings that may have been rendered alongside them.)\n    const selector = `[data-slate-string], [data-slate-zero-width]`\n    const texts = Array.from(el.querySelectorAll(selector))\n    let start = 0\n\n    for (let i = 0; i < texts.length; i++) {\n      const text = texts[i]\n      const domNode = text.childNodes[0] as HTMLElement\n\n      if (domNode == null || domNode.textContent == null) {\n        continue\n      }\n\n      const { length } = domNode.textContent\n      const attr = text.getAttribute('data-slate-length')\n      const trueLength = attr == null ? length : parseInt(attr, 10)\n      const end = start + trueLength\n\n      // Prefer putting the selection inside the mark placeholder to ensure\n      // composed text is displayed with the correct marks.\n      const nextText = texts[i + 1]\n      if (\n        point.offset === end &&\n        nextText?.hasAttribute('data-slate-mark-placeholder')\n      ) {\n        const domText = nextText.childNodes[0]\n\n        domPoint = [\n          // COMPAT: If we don't explicity set the dom point to be on the actual\n          // dom text element, chrome will put the selection behind the actual dom\n          // text element, causing domRange.getBoundingClientRect() calls on a collapsed\n          // selection to return incorrect zero values (https://bugs.chromium.org/p/chromium/issues/detail?id=435438)\n          // which will cause issues when scrolling to it.\n          domText instanceof DOMText ? domText : nextText,\n          nextText.textContent?.startsWith('\\uFEFF') ? 1 : 0,\n        ]\n        break\n      }\n\n      if (point.offset <= end) {\n        const offset = Math.min(length, Math.max(0, point.offset - start))\n        domPoint = [domNode, offset]\n        break\n      }\n\n      start = end\n    }\n\n    if (!domPoint) {\n      throw new Error(\n        `Cannot resolve a DOM point from Slate point: ${Scrubber.stringify(\n          point\n        )}`\n      )\n    }\n\n    return domPoint\n  },\n\n  toDOMRange: (editor, range) => {\n    const { anchor, focus } = range\n    const isBackward = Range.isBackward(range)\n    const domAnchor = DOMEditor.toDOMPoint(editor, anchor)\n    const domFocus = Range.isCollapsed(range)\n      ? domAnchor\n      : DOMEditor.toDOMPoint(editor, focus)\n\n    const window = DOMEditor.getWindow(editor)\n    const domRange = window.document.createRange()\n    const [startNode, startOffset] = isBackward ? domFocus : domAnchor\n    const [endNode, endOffset] = isBackward ? domAnchor : domFocus\n\n    // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at\n    // zero-width node has an offset of 1 so we have to check if we are in a zero-width node and\n    // adjust the offset accordingly.\n    const startEl = (\n      isDOMElement(startNode) ? startNode : startNode.parentElement\n    ) as HTMLElement\n    const isStartAtZeroWidth = !!startEl.getAttribute('data-slate-zero-width')\n    const endEl = (\n      isDOMElement(endNode) ? endNode : endNode.parentElement\n    ) as HTMLElement\n    const isEndAtZeroWidth = !!endEl.getAttribute('data-slate-zero-width')\n\n    domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset)\n    domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset)\n    return domRange\n  },\n\n  toSlateNode: (editor, domNode) => {\n    let domEl = isDOMElement(domNode) ? domNode : domNode.parentElement\n\n    if (domEl && !domEl.hasAttribute('data-slate-node')) {\n      domEl = domEl.closest(`[data-slate-node]`)\n    }\n\n    const node = domEl ? ELEMENT_TO_NODE.get(domEl as HTMLElement) : null\n\n    if (!node) {\n      throw new Error(`Cannot resolve a Slate node from DOM node: ${domEl}`)\n    }\n\n    return node\n  },\n\n  toSlatePoint: <T extends boolean>(\n    editor: DOMEditor,\n    domPoint: DOMPoint,\n    options: {\n      exactMatch: boolean\n      suppressThrow: T\n      searchDirection?: 'forward' | 'backward'\n    }\n  ): T extends true ? Point | null : Point => {\n    const { exactMatch, suppressThrow } = options\n    const [nearestNode, nearestOffset] = exactMatch\n      ? domPoint\n      : normalizeDOMPoint(domPoint)\n    const parentNode = nearestNode.parentNode as DOMElement\n    let searchDirection = options.searchDirection\n    let textNode: DOMElement | null = null\n    let offset = 0\n\n    if (parentNode) {\n      const editorEl = DOMEditor.toDOMNode(editor, editor)\n      const potentialVoidNode = parentNode.closest('[data-slate-void=\"true\"]')\n      // Need to ensure that the closest void node is actually a void node\n      // within this editor, and not a void node within some parent editor. This can happen\n      // if this editor is within a void node of another editor (\"nested editors\", like in\n      // the \"Editable Voids\" example on the docs site).\n      const voidNode =\n        potentialVoidNode && containsShadowAware(editorEl, potentialVoidNode)\n          ? potentialVoidNode\n          : null\n      const potentialNonEditableNode = parentNode.closest(\n        '[contenteditable=\"false\"]'\n      )\n      const nonEditableNode =\n        potentialNonEditableNode &&\n        containsShadowAware(editorEl, potentialNonEditableNode)\n          ? potentialNonEditableNode\n          : null\n      let leafNode = parentNode.closest('[data-slate-leaf]')\n      let domNode: DOMElement | null = null\n\n      // Calculate how far into the text node the `nearestNode` is, so that we\n      // can determine what the offset relative to the text node is.\n      if (leafNode) {\n        textNode = leafNode.closest('[data-slate-node=\"text\"]')\n\n        if (textNode) {\n          const window = DOMEditor.getWindow(editor)\n          const range = window.document.createRange()\n          range.setStart(textNode, 0)\n          range.setEnd(nearestNode, nearestOffset)\n\n          const contents = range.cloneContents()\n          const removals = [\n            ...Array.prototype.slice.call(\n              contents.querySelectorAll('[data-slate-zero-width]')\n            ),\n            ...Array.prototype.slice.call(\n              contents.querySelectorAll('[contenteditable=false]')\n            ),\n          ]\n\n          removals.forEach(el => {\n            // COMPAT: While composing at the start of a text node, some keyboards put\n            // the text content inside the zero width space.\n            if (\n              IS_ANDROID &&\n              !exactMatch &&\n              el.hasAttribute('data-slate-zero-width') &&\n              el.textContent.length > 0 &&\n              el.textContext !== '\\uFEFF'\n            ) {\n              if (el.textContent.startsWith('\\uFEFF')) {\n                el.textContent = el.textContent.slice(1)\n              }\n\n              return\n            }\n\n            el!.parentNode!.removeChild(el)\n          })\n\n          // COMPAT: Edge has a bug where Range.prototype.toString() will\n          // convert \\n into \\r\\n. The bug causes a loop when slate-dom\n          // attempts to reposition its cursor to match the native position. Use\n          // textContent.length instead.\n          // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n          offset = contents.textContent!.length\n          domNode = textNode\n        }\n      } else if (voidNode) {\n        // For void nodes, the element with the offset key will be a cousin, not an\n        // ancestor, so find it by going down from the nearest void parent and taking the\n        // first one that isn't inside a nested editor.\n        const leafNodes = voidNode.querySelectorAll('[data-slate-leaf]')\n        for (let index = 0; index < leafNodes.length; index++) {\n          const current = leafNodes[index]\n          if (DOMEditor.hasDOMNode(editor, current)) {\n            leafNode = current\n            break\n          }\n        }\n\n        // COMPAT: In read-only editors the leaf is not rendered.\n        if (!leafNode) {\n          offset = 1\n        } else {\n          textNode = leafNode.closest('[data-slate-node=\"text\"]')!\n          domNode = leafNode\n          offset = domNode.textContent!.length\n          domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n            offset -= el.textContent!.length\n          })\n        }\n      } else if (nonEditableNode) {\n        // Find the edge of the nearest leaf in `searchDirection`\n        const getLeafNodes = (node: DOMElement | null | undefined) =>\n          node\n            ? node.querySelectorAll(\n                // Exclude leaf nodes in nested editors\n                '[data-slate-leaf]:not(:scope [data-slate-editor] [data-slate-leaf])'\n              )\n            : []\n        const elementNode = nonEditableNode.closest(\n          '[data-slate-node=\"element\"]'\n        )\n\n        if (searchDirection === 'backward' || !searchDirection) {\n          const leafNodes = [\n            ...getLeafNodes(elementNode?.previousElementSibling),\n            ...getLeafNodes(elementNode),\n          ]\n\n          leafNode =\n            leafNodes.findLast(leaf => isBefore(nonEditableNode, leaf)) ?? null\n\n          if (leafNode) {\n            searchDirection = 'backward'\n          }\n        }\n\n        if (searchDirection === 'forward' || !searchDirection) {\n          const leafNodes = [\n            ...getLeafNodes(elementNode),\n            ...getLeafNodes(elementNode?.nextElementSibling),\n          ]\n\n          leafNode =\n            leafNodes.find(leaf => isAfter(nonEditableNode, leaf)) ?? null\n\n          if (leafNode) {\n            searchDirection = 'forward'\n          }\n        }\n\n        if (leafNode) {\n          textNode = leafNode.closest('[data-slate-node=\"text\"]')!\n          domNode = leafNode\n          if (searchDirection === 'forward') {\n            offset = 0\n          } else {\n            offset = domNode.textContent!.length\n            domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n              offset -= el.textContent!.length\n            })\n          }\n        }\n      }\n\n      if (\n        domNode &&\n        offset === domNode.textContent!.length &&\n        // COMPAT: Android IMEs might remove the zero width space while composing,\n        // and we don't add it for line-breaks.\n        IS_ANDROID &&\n        domNode.getAttribute('data-slate-zero-width') === 'z' &&\n        domNode.textContent?.startsWith('\\uFEFF') &&\n        // COMPAT: If the parent node is a Slate zero-width space, editor is\n        // because the text node should have no characters. However, during IME\n        // composition the ASCII characters will be prepended to the zero-width\n        // space, so subtract 1 from the offset to account for the zero-width\n        // space character.\n        (parentNode.hasAttribute('data-slate-zero-width') ||\n          // COMPAT: In Firefox, `range.cloneContents()` returns an extra trailing '\\n'\n          // when the document ends with a new-line character. This results in the offset\n          // length being off by one, so we need to subtract one to account for this.\n          (IS_FIREFOX && domNode.textContent?.endsWith('\\n\\n')))\n      ) {\n        offset--\n      }\n    }\n\n    if (IS_ANDROID && !textNode && !exactMatch) {\n      const node = parentNode.hasAttribute('data-slate-node')\n        ? parentNode\n        : parentNode.closest('[data-slate-node]')\n\n      if (node && DOMEditor.hasDOMNode(editor, node, { editable: true })) {\n        const slateNode = DOMEditor.toSlateNode(editor, node)\n        let nodePath\n        try {\n          nodePath = DOMEditor.findPath(editor, slateNode)\n        } catch (e) {\n          if (suppressThrow) {\n            return null as T extends true ? Point | null : Point\n          }\n          throw e\n        }\n        let { path, offset } = Editor.start(editor, nodePath)\n\n        if (!node.querySelector('[data-slate-leaf]')) {\n          offset = nearestOffset\n        }\n\n        return { path, offset } as T extends true ? Point | null : Point\n      }\n    }\n\n    if (!textNode) {\n      if (suppressThrow) {\n        return null as T extends true ? Point | null : Point\n      }\n      throw new Error(\n        `Cannot resolve a Slate point from DOM point: ${domPoint}`\n      )\n    }\n\n    // COMPAT: If someone is clicking from one Slate editor into another,\n    // the select event fires twice, once for the old editor's `element`\n    // first, and then afterwards for the correct `element`. (2017/03/03)\n    const slateNode = DOMEditor.toSlateNode(editor, textNode!)\n    let path\n    try {\n      path = DOMEditor.findPath(editor, slateNode)\n    } catch (e) {\n      if (suppressThrow) {\n        return null as T extends true ? Point | null : Point\n      }\n      throw e\n    }\n    return { path, offset } as T extends true ? Point | null : Point\n  },\n\n  toSlateRange: <T extends boolean>(\n    editor: DOMEditor,\n    domRange: DOMRange | DOMStaticRange | DOMSelection,\n    options: {\n      exactMatch: boolean\n      suppressThrow: T\n    }\n  ): T extends true ? Range | null : Range => {\n    const { exactMatch, suppressThrow } = options\n    const el = isDOMSelection(domRange)\n      ? domRange.anchorNode\n      : domRange.startContainer\n    let anchorNode\n    let anchorOffset\n    let focusNode\n    let focusOffset\n    let isCollapsed\n\n    if (el) {\n      if (isDOMSelection(domRange)) {\n        // COMPAT: In firefox the normal seletion way does not work\n        // (https://github.com/ianstormtaylor/slate/pull/5486#issue-1820720223)\n        if (IS_FIREFOX && domRange.rangeCount > 1) {\n          focusNode = domRange.focusNode // Focus node works fine\n          const firstRange = domRange.getRangeAt(0)\n          const lastRange = domRange.getRangeAt(domRange.rangeCount - 1)\n\n          // Here we are in the contenteditable mode of a table in firefox\n          if (\n            focusNode instanceof HTMLTableRowElement &&\n            firstRange.startContainer instanceof HTMLTableRowElement &&\n            lastRange.startContainer instanceof HTMLTableRowElement\n          ) {\n            // HTMLElement, becouse Element is a slate element\n            function getLastChildren(element: HTMLElement): HTMLElement {\n              if (element.childElementCount > 0) {\n                return getLastChildren(<HTMLElement>element.children[0])\n              } else {\n                return element\n              }\n            }\n\n            const firstNodeRow = <HTMLTableRowElement>firstRange.startContainer\n            const lastNodeRow = <HTMLTableRowElement>lastRange.startContainer\n\n            // This should never fail as \"The HTMLElement interface represents any HTML element.\"\n            const firstNode = getLastChildren(\n              <HTMLElement>firstNodeRow.children[firstRange.startOffset]\n            )\n            const lastNode = getLastChildren(\n              <HTMLElement>lastNodeRow.children[lastRange.startOffset]\n            )\n\n            // Zero, as we allways take the right one as the anchor point\n            focusOffset = 0\n\n            if (lastNode.childNodes.length > 0) {\n              anchorNode = lastNode.childNodes[0]\n            } else {\n              anchorNode = lastNode\n            }\n\n            if (firstNode.childNodes.length > 0) {\n              focusNode = firstNode.childNodes[0]\n            } else {\n              focusNode = firstNode\n            }\n\n            if (lastNode instanceof HTMLElement) {\n              anchorOffset = (<HTMLElement>lastNode).innerHTML.length\n            } else {\n              // Fallback option\n              anchorOffset = 0\n            }\n          } else {\n            // This is the read only mode of a firefox table\n            // Right to left\n            if (firstRange.startContainer === focusNode) {\n              anchorNode = lastRange.endContainer\n              anchorOffset = lastRange.endOffset\n              focusOffset = firstRange.startOffset\n            } else {\n              // Left to right\n              anchorNode = firstRange.startContainer\n              anchorOffset = firstRange.endOffset\n              focusOffset = lastRange.startOffset\n            }\n          }\n        } else {\n          anchorNode = domRange.anchorNode\n          anchorOffset = domRange.anchorOffset\n          focusNode = domRange.focusNode\n          focusOffset = domRange.focusOffset\n        }\n\n        // COMPAT: There's a bug in chrome that always returns `true` for\n        // `isCollapsed` for a Selection that comes from a ShadowRoot.\n        // (2020/08/08)\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n        // IsCollapsed might not work in firefox, but this will\n        if ((IS_CHROME && hasShadowRoot(anchorNode)) || IS_FIREFOX) {\n          isCollapsed =\n            domRange.anchorNode === domRange.focusNode &&\n            domRange.anchorOffset === domRange.focusOffset\n        } else {\n          isCollapsed = domRange.isCollapsed\n        }\n      } else {\n        anchorNode = domRange.startContainer\n        anchorOffset = domRange.startOffset\n        focusNode = domRange.endContainer\n        focusOffset = domRange.endOffset\n        isCollapsed = domRange.collapsed\n      }\n    }\n\n    if (\n      anchorNode == null ||\n      focusNode == null ||\n      anchorOffset == null ||\n      focusOffset == null\n    ) {\n      throw new Error(\n        `Cannot resolve a Slate range from DOM range: ${domRange}`\n      )\n    }\n\n    // COMPAT: Firefox sometimes includes an extra \\n (rendered by TextString\n    // when isTrailing is true) in the focusOffset, resulting in an invalid\n    // Slate point. (2023/11/01)\n    if (\n      IS_FIREFOX &&\n      focusNode.textContent?.endsWith('\\n\\n') &&\n      focusOffset === focusNode.textContent.length\n    ) {\n      focusOffset--\n    }\n\n    const anchor = DOMEditor.toSlatePoint(editor, [anchorNode, anchorOffset], {\n      exactMatch,\n      suppressThrow,\n    })\n    if (!anchor) {\n      return null as T extends true ? Range | null : Range\n    }\n\n    const focusBeforeAnchor =\n      isBefore(anchorNode, focusNode) ||\n      (anchorNode === focusNode && focusOffset < anchorOffset)\n    const focus = isCollapsed\n      ? anchor\n      : DOMEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n          exactMatch,\n          suppressThrow,\n          searchDirection: focusBeforeAnchor ? 'forward' : 'backward',\n        })\n    if (!focus) {\n      return null as T extends true ? Range | null : Range\n    }\n\n    let range: Range = { anchor: anchor as Point, focus: focus as Point }\n    // if the selection is a hanging range that ends in a void\n    // and the DOM focus is an Element\n    // (meaning that the selection ends before the element)\n    // unhang the range to avoid mistakenly including the void\n    if (\n      Range.isExpanded(range) &&\n      Range.isForward(range) &&\n      isDOMElement(focusNode) &&\n      Editor.void(editor, { at: range.focus, mode: 'highest' })\n    ) {\n      range = Editor.unhangRange(editor, range, { voids: true })\n    }\n\n    return range as unknown as T extends true ? Range | null : Range\n  },\n}\n"
  },
  {
    "path": "packages/slate-dom/src/plugin/with-dom.ts",
    "content": "import {\n  BaseEditor,\n  Editor,\n  Location,\n  Node,\n  Operation,\n  Path,\n  PathRef,\n  Range,\n  Transforms,\n} from 'slate'\nimport {\n  TextDiff,\n  transformPendingPoint,\n  transformPendingRange,\n  transformTextDiff,\n} from '../utils/diff-text'\nimport {\n  getPlainText,\n  getSlateFragmentAttribute,\n  isDOMText,\n} from '../utils/dom'\nimport { Key } from '../utils/key'\nimport { findCurrentLineRange } from '../utils/lines'\nimport {\n  IS_NODE_MAP_DIRTY,\n  EDITOR_TO_KEY_TO_ELEMENT,\n  EDITOR_TO_ON_CHANGE,\n  EDITOR_TO_PENDING_ACTION,\n  EDITOR_TO_PENDING_DIFFS,\n  EDITOR_TO_PENDING_INSERTION_MARKS,\n  EDITOR_TO_PENDING_SELECTION,\n  EDITOR_TO_SCHEDULE_FLUSH,\n  EDITOR_TO_USER_MARKS,\n  EDITOR_TO_USER_SELECTION,\n  NODE_TO_KEY,\n} from '../utils/weak-maps'\nimport { DOMEditor } from './dom-editor'\n\n/**\n * `withDOM` adds DOM specific behaviors to the editor.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\n\nexport const withDOM = <T extends BaseEditor>(\n  editor: T,\n  clipboardFormatKey = 'x-slate-fragment'\n): T & DOMEditor => {\n  const e = editor as T & DOMEditor\n  const { apply, onChange, deleteBackward, addMark, removeMark } = e\n\n  // The WeakMap which maps a key to a specific HTMLElement must be scoped to the editor instance to\n  // avoid collisions between editors in the DOM that share the same value.\n  EDITOR_TO_KEY_TO_ELEMENT.set(e, new WeakMap())\n\n  e.addMark = (key, value) => {\n    EDITOR_TO_SCHEDULE_FLUSH.get(e)?.()\n\n    if (\n      !EDITOR_TO_PENDING_INSERTION_MARKS.get(e) &&\n      EDITOR_TO_PENDING_DIFFS.get(e)?.length\n    ) {\n      // Ensure the current pending diffs originating from changes before the addMark\n      // are applied with the current formatting\n      EDITOR_TO_PENDING_INSERTION_MARKS.set(e, null)\n    }\n\n    EDITOR_TO_USER_MARKS.delete(e)\n\n    addMark(key, value)\n  }\n\n  e.removeMark = key => {\n    if (\n      !EDITOR_TO_PENDING_INSERTION_MARKS.get(e) &&\n      EDITOR_TO_PENDING_DIFFS.get(e)?.length\n    ) {\n      // Ensure the current pending diffs originating from changes before the addMark\n      // are applied with the current formatting\n      EDITOR_TO_PENDING_INSERTION_MARKS.set(e, null)\n    }\n\n    EDITOR_TO_USER_MARKS.delete(e)\n\n    removeMark(key)\n  }\n\n  e.deleteBackward = unit => {\n    if (unit !== 'line') {\n      return deleteBackward(unit)\n    }\n\n    if (e.selection && Range.isCollapsed(e.selection)) {\n      const parentBlockEntry = Editor.above(e, {\n        match: n => Node.isElement(n) && Editor.isBlock(e, n),\n        at: e.selection,\n      })\n\n      if (parentBlockEntry) {\n        const [, parentBlockPath] = parentBlockEntry\n        const parentElementRange = Editor.range(\n          e,\n          parentBlockPath,\n          e.selection.anchor\n        )\n\n        const currentLineRange = findCurrentLineRange(e, parentElementRange)\n\n        if (!Range.isCollapsed(currentLineRange)) {\n          Transforms.delete(e, { at: currentLineRange })\n        }\n      }\n    }\n  }\n\n  // This attempts to reset the NODE_TO_KEY entry to the correct value\n  // as apply() changes the object reference and hence invalidates the NODE_TO_KEY entry\n  e.apply = (op: Operation) => {\n    const matches: [Path, Key][] = []\n    const pathRefMatches: [PathRef, Key][] = []\n\n    const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(e)\n    if (pendingDiffs?.length) {\n      const transformed = pendingDiffs\n        .map(textDiff => transformTextDiff(textDiff, op))\n        .filter(Boolean) as TextDiff[]\n\n      EDITOR_TO_PENDING_DIFFS.set(e, transformed)\n    }\n\n    const pendingSelection = EDITOR_TO_PENDING_SELECTION.get(e)\n    if (pendingSelection) {\n      EDITOR_TO_PENDING_SELECTION.set(\n        e,\n        transformPendingRange(e, pendingSelection, op)\n      )\n    }\n\n    const pendingAction = EDITOR_TO_PENDING_ACTION.get(e)\n    if (pendingAction?.at) {\n      const at = Location.isPoint(pendingAction?.at)\n        ? transformPendingPoint(e, pendingAction.at, op)\n        : transformPendingRange(e, pendingAction.at, op)\n\n      EDITOR_TO_PENDING_ACTION.set(e, at ? { ...pendingAction, at } : null)\n    }\n\n    switch (op.type) {\n      case 'insert_text':\n      case 'remove_text':\n      case 'set_node':\n      case 'split_node': {\n        matches.push(...getMatches(e, op.path))\n        break\n      }\n\n      case 'set_selection': {\n        // Selection was manually set, don't restore the user selection after the change.\n        EDITOR_TO_USER_SELECTION.get(e)?.unref()\n        EDITOR_TO_USER_SELECTION.delete(e)\n        break\n      }\n\n      case 'insert_node':\n      case 'remove_node': {\n        matches.push(...getMatches(e, Path.parent(op.path)))\n        break\n      }\n\n      case 'merge_node': {\n        const prevPath = Path.previous(op.path)\n        matches.push(...getMatches(e, prevPath))\n        break\n      }\n\n      case 'move_node': {\n        const commonPath = Path.common(\n          Path.parent(op.path),\n          Path.parent(op.newPath)\n        )\n        matches.push(...getMatches(e, commonPath))\n\n        let changedPath: Path\n        if (Path.isBefore(op.path, op.newPath)) {\n          matches.push(...getMatches(e, Path.parent(op.path)))\n          changedPath = op.newPath\n        } else {\n          matches.push(...getMatches(e, Path.parent(op.newPath)))\n          changedPath = op.path\n        }\n\n        const changedNode = Node.get(editor, Path.parent(changedPath))\n        const changedNodeKey = DOMEditor.findKey(e, changedNode)\n        const changedPathRef = Editor.pathRef(e, Path.parent(changedPath))\n        pathRefMatches.push([changedPathRef, changedNodeKey])\n\n        break\n      }\n    }\n\n    apply(op)\n\n    switch (op.type) {\n      case 'insert_node':\n      case 'remove_node':\n      case 'merge_node':\n      case 'move_node':\n      case 'split_node':\n      case 'insert_text':\n      case 'remove_text':\n      case 'set_selection': {\n        // FIXME: Rename to something like IS_DOM_EDITOR_DESYNCED\n        // to better reflect reality, see #5792\n        IS_NODE_MAP_DIRTY.set(e, true)\n      }\n    }\n\n    for (const [path, key] of matches) {\n      const [node] = Editor.node(e, path)\n      NODE_TO_KEY.set(node, key)\n    }\n\n    for (const [pathRef, key] of pathRefMatches) {\n      if (pathRef.current) {\n        const [node] = Editor.node(e, pathRef.current)\n        NODE_TO_KEY.set(node, key)\n      }\n\n      pathRef.unref()\n    }\n  }\n\n  e.setFragmentData = (data: Pick<DataTransfer, 'getData' | 'setData'>) => {\n    const { selection } = e\n\n    if (!selection) {\n      return\n    }\n\n    const [start, end] = Range.edges(selection)\n    const startVoid = Editor.void(e, { at: start.path })\n    const endVoid = Editor.void(e, { at: end.path })\n\n    if (Range.isCollapsed(selection) && !startVoid) {\n      return\n    }\n\n    // Create a fake selection so that we can add a Base64-encoded copy of the\n    // fragment to the HTML, to decode on future pastes.\n    const domRange = DOMEditor.toDOMRange(e, selection)\n    let contents = domRange.cloneContents()\n    let attach = contents.childNodes[0] as HTMLElement\n\n    // Make sure attach is non-empty, since empty nodes will not get copied.\n    contents.childNodes.forEach(node => {\n      if (node.textContent && node.textContent.trim() !== '') {\n        attach = node as HTMLElement\n      }\n    })\n\n    // COMPAT: If the end node is a void node, we need to move the end of the\n    // range from the void node's spacer span, to the end of the void node's\n    // content, since the spacer is before void's content in the DOM.\n    if (endVoid) {\n      const [voidNode] = endVoid\n      const r = domRange.cloneRange()\n      const domNode = DOMEditor.toDOMNode(e, voidNode)\n      r.setEndAfter(domNode)\n      contents = r.cloneContents()\n    }\n\n    // COMPAT: If the start node is a void node, we need to attach the encoded\n    // fragment to the void node's content node instead of the spacer, because\n    // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n    // most browsers. (2018/04/27)\n    if (startVoid) {\n      attach = contents.querySelector('[data-slate-spacer]')! as HTMLElement\n    }\n\n    // Remove any zero-width space spans from the cloned DOM so that they don't\n    // show up elsewhere when pasted.\n    Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(\n      zw => {\n        const isNewline = zw.getAttribute('data-slate-zero-width') === 'n'\n        zw.textContent = isNewline ? '\\n' : ''\n      }\n    )\n\n    // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n    // in the HTML, and can be used for intra-Slate pasting. If it's a text\n    // node, wrap it in a `<span>` so we have something to set an attribute on.\n    if (isDOMText(attach)) {\n      const span = attach.ownerDocument.createElement('span')\n      // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n      // then leading and trailing spaces will be ignored. (2017/09/21)\n      span.style.whiteSpace = 'pre'\n      span.appendChild(attach)\n      contents.appendChild(span)\n      attach = span\n    }\n\n    const fragment = e.getFragment()\n    const string = JSON.stringify(fragment)\n    const encoded = window.btoa(encodeURIComponent(string))\n    attach.setAttribute('data-slate-fragment', encoded)\n    data.setData(`application/${clipboardFormatKey}`, encoded)\n\n    // Add the content to a <div> so that we can get its inner HTML.\n    const div = contents.ownerDocument.createElement('div')\n    div.appendChild(contents)\n    div.setAttribute('hidden', 'true')\n    contents.ownerDocument.body.appendChild(div)\n    data.setData('text/html', div.innerHTML)\n    data.setData('text/plain', getPlainText(div))\n    contents.ownerDocument.body.removeChild(div)\n    return data\n  }\n\n  e.insertData = (data: DataTransfer) => {\n    if (!e.insertFragmentData(data)) {\n      e.insertTextData(data)\n    }\n  }\n\n  e.insertFragmentData = (data: DataTransfer): boolean => {\n    /**\n     * Checking copied fragment from application/x-slate-fragment or data-slate-fragment\n     */\n    const fragment =\n      data.getData(`application/${clipboardFormatKey}`) ||\n      getSlateFragmentAttribute(data)\n\n    if (fragment) {\n      const decoded = decodeURIComponent(window.atob(fragment))\n      const parsed = JSON.parse(decoded) as Node[]\n      e.insertFragment(parsed)\n      return true\n    }\n    return false\n  }\n\n  e.insertTextData = (data: DataTransfer): boolean => {\n    const text = data.getData('text/plain')\n\n    if (text) {\n      const lines = text.split(/\\r\\n|\\r|\\n/)\n      let split = false\n\n      for (const line of lines) {\n        if (split) {\n          Transforms.splitNodes(e, { always: true })\n        }\n\n        e.insertText(line)\n        split = true\n      }\n      return true\n    }\n    return false\n  }\n\n  e.onChange = options => {\n    const onContextChange = EDITOR_TO_ON_CHANGE.get(e)\n\n    if (onContextChange) {\n      onContextChange(options)\n    }\n\n    onChange(options)\n  }\n\n  return e\n}\n\nconst getMatches = (e: Editor, path: Path) => {\n  const matches: [Path, Key][] = []\n  for (const [n, p] of Editor.levels(e, { at: path })) {\n    const key = DOMEditor.findKey(e, n)\n    matches.push([p, key])\n  }\n  return matches\n}\n"
  },
  {
    "path": "packages/slate-dom/src/utils/constants.ts",
    "content": "export const TRIPLE_CLICK = 3\n"
  },
  {
    "path": "packages/slate-dom/src/utils/diff-text.ts",
    "content": "import { Editor, Node, Operation, Path, Point, Range } from 'slate'\nimport { EDITOR_TO_PENDING_DIFFS } from './weak-maps'\n\nexport type StringDiff = {\n  start: number\n  end: number\n  text: string\n}\n\nexport type TextDiff = {\n  id: number\n  path: Path\n  diff: StringDiff\n}\n\n/**\n * Check whether a text diff was applied in a way we can perform the pending action on /\n * recover the pending selection.\n */\nexport function verifyDiffState(editor: Editor, textDiff: TextDiff): boolean {\n  const { path, diff } = textDiff\n  if (!Editor.hasPath(editor, path)) {\n    return false\n  }\n\n  const node = Node.get(editor, path)\n  if (!Node.isText(node)) {\n    return false\n  }\n\n  if (diff.start !== node.text.length || diff.text.length === 0) {\n    return (\n      node.text.slice(diff.start, diff.start + diff.text.length) === diff.text\n    )\n  }\n\n  const nextPath = Path.next(path)\n  if (!Editor.hasPath(editor, nextPath)) {\n    return false\n  }\n\n  const nextNode = Node.get(editor, nextPath)\n  return Node.isText(nextNode) && nextNode.text.startsWith(diff.text)\n}\n\nexport function applyStringDiff(text: string, ...diffs: StringDiff[]) {\n  return diffs.reduce(\n    (text, diff) =>\n      text.slice(0, diff.start) + diff.text + text.slice(diff.end),\n    text\n  )\n}\n\nfunction longestCommonPrefixLength(str: string, another: string) {\n  const length = Math.min(str.length, another.length)\n\n  for (let i = 0; i < length; i++) {\n    if (str.charAt(i) !== another.charAt(i)) {\n      return i\n    }\n  }\n\n  return length\n}\n\nfunction longestCommonSuffixLength(\n  str: string,\n  another: string,\n  max: number\n): number {\n  const length = Math.min(str.length, another.length, max)\n\n  for (let i = 0; i < length; i++) {\n    if (\n      str.charAt(str.length - i - 1) !== another.charAt(another.length - i - 1)\n    ) {\n      return i\n    }\n  }\n\n  return length\n}\n\n/**\n * Remove redundant changes from the diff so that it spans the minimal possible range\n */\nexport function normalizeStringDiff(targetText: string, diff: StringDiff) {\n  const { start, end, text } = diff\n  const removedText = targetText.slice(start, end)\n\n  const prefixLength = longestCommonPrefixLength(removedText, text)\n  const max = Math.min(\n    removedText.length - prefixLength,\n    text.length - prefixLength\n  )\n  const suffixLength = longestCommonSuffixLength(removedText, text, max)\n\n  const normalized: StringDiff = {\n    start: start + prefixLength,\n    end: end - suffixLength,\n    text: text.slice(prefixLength, text.length - suffixLength),\n  }\n\n  if (normalized.start === normalized.end && normalized.text.length === 0) {\n    return null\n  }\n\n  return normalized\n}\n\n/**\n * Return a string diff that is equivalent to applying b after a spanning the range of\n * both changes\n */\nexport function mergeStringDiffs(\n  targetText: string,\n  a: StringDiff,\n  b: StringDiff\n): StringDiff | null {\n  const start = Math.min(a.start, b.start)\n  const overlap = Math.max(\n    0,\n    Math.min(a.start + a.text.length, b.end) - b.start\n  )\n\n  const applied = applyStringDiff(targetText, a, b)\n  const sliceEnd = Math.max(\n    b.start + b.text.length,\n    a.start +\n      a.text.length +\n      (a.start + a.text.length > b.start ? b.text.length : 0) -\n      overlap\n  )\n\n  const text = applied.slice(start, sliceEnd)\n  const end = Math.max(a.end, b.end - a.text.length + (a.end - a.start))\n  return normalizeStringDiff(targetText, { start, end, text })\n}\n\n/**\n * Get the slate range the text diff spans.\n */\nexport function targetRange(textDiff: TextDiff): Range {\n  const { path, diff } = textDiff\n  return {\n    anchor: { path, offset: diff.start },\n    focus: { path, offset: diff.end },\n  }\n}\n\n/**\n * Normalize a 'pending point' a.k.a a point based on the dom state before applying\n * the pending diffs. Since the pending diffs might have been inserted with different\n * marks we have to 'walk' the offset from the starting position to ensure we still\n * have a valid point inside the document\n */\nexport function normalizePoint(editor: Editor, point: Point): Point | null {\n  let { path, offset } = point\n  if (!Editor.hasPath(editor, path)) {\n    return null\n  }\n\n  let leaf = Node.get(editor, path)\n  if (!Node.isText(leaf)) {\n    return null\n  }\n\n  const parentBlock = Editor.above(editor, {\n    match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n    at: path,\n  })\n\n  if (!parentBlock) {\n    return null\n  }\n\n  while (offset > leaf.text.length) {\n    const entry = Editor.next(editor, { at: path, match: Node.isText })\n    if (!entry || !Path.isDescendant(entry[1], parentBlock[1])) {\n      return null\n    }\n\n    offset -= leaf.text.length\n    leaf = entry[0]\n    path = entry[1]\n  }\n\n  return { path, offset }\n}\n\n/**\n * Normalize a 'pending selection' to ensure it's valid in the current document state.\n */\nexport function normalizeRange(editor: Editor, range: Range): Range | null {\n  const anchor = normalizePoint(editor, range.anchor)\n  if (!anchor) {\n    return null\n  }\n\n  if (Range.isCollapsed(range)) {\n    return { anchor, focus: anchor }\n  }\n\n  const focus = normalizePoint(editor, range.focus)\n  if (!focus) {\n    return null\n  }\n\n  return { anchor, focus }\n}\n\nexport function transformPendingPoint(\n  editor: Editor,\n  point: Point,\n  op: Operation\n): Point | null {\n  const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor)\n  const textDiff = pendingDiffs?.find(({ path }) =>\n    Path.equals(path, point.path)\n  )\n\n  if (!textDiff || point.offset <= textDiff.diff.start) {\n    return Point.transform(point, op, { affinity: 'backward' })\n  }\n\n  const { diff } = textDiff\n  // Point references location inside the diff => transform the point based on the location\n  // the diff will be applied to and add the offset inside the diff.\n  if (point.offset <= diff.start + diff.text.length) {\n    const anchor = { path: point.path, offset: diff.start }\n    const transformed = Point.transform(anchor, op, {\n      affinity: 'backward',\n    })\n\n    if (!transformed) {\n      return null\n    }\n\n    return {\n      path: transformed.path,\n      offset: transformed.offset + point.offset - diff.start,\n    }\n  }\n\n  // Point references location after the diff\n  const anchor = {\n    path: point.path,\n    offset: point.offset - diff.text.length + diff.end - diff.start,\n  }\n  const transformed = Point.transform(anchor, op, {\n    affinity: 'backward',\n  })\n  if (!transformed) {\n    return null\n  }\n\n  if (\n    op.type === 'split_node' &&\n    Path.equals(op.path, point.path) &&\n    anchor.offset < op.position &&\n    diff.start < op.position\n  ) {\n    return transformed\n  }\n\n  return {\n    path: transformed.path,\n    offset: transformed.offset + diff.text.length - diff.end + diff.start,\n  }\n}\n\nexport function transformPendingRange(\n  editor: Editor,\n  range: Range,\n  op: Operation\n): Range | null {\n  const anchor = transformPendingPoint(editor, range.anchor, op)\n  if (!anchor) {\n    return null\n  }\n\n  if (Range.isCollapsed(range)) {\n    return { anchor, focus: anchor }\n  }\n\n  const focus = transformPendingPoint(editor, range.focus, op)\n  if (!focus) {\n    return null\n  }\n\n  return { anchor, focus }\n}\n\nexport function transformTextDiff(\n  textDiff: TextDiff,\n  op: Operation\n): TextDiff | null {\n  const { path, diff, id } = textDiff\n\n  switch (op.type) {\n    case 'insert_text': {\n      if (!Path.equals(op.path, path) || op.offset >= diff.end) {\n        return textDiff\n      }\n\n      if (op.offset <= diff.start) {\n        return {\n          diff: {\n            start: op.text.length + diff.start,\n            end: op.text.length + diff.end,\n            text: diff.text,\n          },\n          id,\n          path,\n        }\n      }\n\n      return {\n        diff: {\n          start: diff.start,\n          end: diff.end + op.text.length,\n          text: diff.text,\n        },\n        id,\n        path,\n      }\n    }\n    case 'remove_text': {\n      if (!Path.equals(op.path, path) || op.offset >= diff.end) {\n        return textDiff\n      }\n\n      if (op.offset + op.text.length <= diff.start) {\n        return {\n          diff: {\n            start: diff.start - op.text.length,\n            end: diff.end - op.text.length,\n            text: diff.text,\n          },\n          id,\n          path,\n        }\n      }\n\n      return {\n        diff: {\n          start: diff.start,\n          end: diff.end - op.text.length,\n          text: diff.text,\n        },\n        id,\n        path,\n      }\n    }\n    case 'split_node': {\n      if (!Path.equals(op.path, path) || op.position >= diff.end) {\n        return {\n          diff,\n          id,\n          path: Path.transform(path, op, { affinity: 'backward' })!,\n        }\n      }\n\n      if (op.position > diff.start) {\n        return {\n          diff: {\n            start: diff.start,\n            end: Math.min(op.position, diff.end),\n            text: diff.text,\n          },\n          id,\n          path,\n        }\n      }\n\n      return {\n        diff: {\n          start: diff.start - op.position,\n          end: diff.end - op.position,\n          text: diff.text,\n        },\n        id,\n        path: Path.transform(path, op, { affinity: 'forward' })!,\n      }\n    }\n    case 'merge_node': {\n      if (!Path.equals(op.path, path)) {\n        return {\n          diff,\n          id,\n          path: Path.transform(path, op)!,\n        }\n      }\n\n      return {\n        diff: {\n          start: diff.start + op.position,\n          end: diff.end + op.position,\n          text: diff.text,\n        },\n        id,\n        path: Path.transform(path, op)!,\n      }\n    }\n  }\n\n  const newPath = Path.transform(path, op)\n  if (!newPath) {\n    return null\n  }\n\n  return {\n    diff,\n    path: newPath,\n    id,\n  }\n}\n"
  },
  {
    "path": "packages/slate-dom/src/utils/dom.ts",
    "content": "/**\n * Types.\n */\n\n// COMPAT: This is required to prevent TypeScript aliases from doing some very\n// weird things for Slate's types with the same name as globals. (2019/11/27)\n// https://github.com/microsoft/TypeScript/issues/35002\nimport DOMNode = globalThis.Node\nimport DOMComment = globalThis.Comment\nimport DOMElement = globalThis.Element\nimport DOMText = globalThis.Text\nimport DOMRange = globalThis.Range\nimport DOMSelection = globalThis.Selection\nimport DOMStaticRange = globalThis.StaticRange\nimport { DOMEditor } from '../plugin/dom-editor'\n\nexport {\n  DOMNode,\n  DOMComment,\n  DOMElement,\n  DOMText,\n  DOMRange,\n  DOMSelection,\n  DOMStaticRange,\n}\n\ndeclare global {\n  interface Window {\n    Selection: (typeof Selection)['constructor']\n    DataTransfer: (typeof DataTransfer)['constructor']\n    Node: (typeof Node)['constructor']\n  }\n}\n\nexport type DOMPoint = [Node, number]\n\n/**\n * Returns the host window of a DOM node\n */\n\nexport const getDefaultView = (value: any): Window | null => {\n  return (\n    (value && value.ownerDocument && value.ownerDocument.defaultView) || null\n  )\n}\n\n/**\n * Check if a DOM node is a comment node.\n */\n\nexport const isDOMComment = (value: any): value is DOMComment => {\n  return isDOMNode(value) && value.nodeType === 8\n}\n\n/**\n * Check if a DOM node is an element node.\n */\n\nexport const isDOMElement = (value: any): value is DOMElement => {\n  return isDOMNode(value) && value.nodeType === 1\n}\n\n/**\n * Check if a value is a DOM node.\n */\n\nexport const isDOMNode = (value: any): value is DOMNode => {\n  const window = getDefaultView(value)\n  return !!window && value instanceof window.Node\n}\n\n/**\n * Check if a value is a DOM selection.\n */\n\nexport const isDOMSelection = (value: any): value is DOMSelection => {\n  const window = value && value.anchorNode && getDefaultView(value.anchorNode)\n  return !!window && value instanceof window.Selection\n}\n\n/**\n * Check if a DOM node is an element node.\n */\n\nexport const isDOMText = (value: any): value is DOMText => {\n  return isDOMNode(value) && value.nodeType === 3\n}\n\n/**\n * Checks whether a paste event is a plaintext-only event.\n */\n\nexport const isPlainTextOnlyPaste = (event: ClipboardEvent) => {\n  return (\n    event.clipboardData &&\n    event.clipboardData.getData('text/plain') !== '' &&\n    event.clipboardData.types.length === 1\n  )\n}\n\n/**\n * Normalize a DOM point so that it always refers to a text node.\n */\n\nexport const normalizeDOMPoint = (domPoint: DOMPoint): DOMPoint => {\n  let [node, offset] = domPoint\n\n  // If it's an element node, its offset refers to the index of its children\n  // including comment nodes, so try to find the right text child node.\n  if (isDOMElement(node) && node.childNodes.length) {\n    let isLast = offset === node.childNodes.length\n    let index = isLast ? offset - 1 : offset\n    ;[node, index] = getEditableChildAndIndex(\n      node,\n      index,\n      isLast ? 'backward' : 'forward'\n    )\n    // If the editable child found is in front of input offset, we instead seek to its end\n    isLast = index < offset\n\n    // If the node has children, traverse until we have a leaf node. Leaf nodes\n    // can be either text nodes, or other void DOM nodes.\n    while (isDOMElement(node) && node.childNodes.length) {\n      const i = isLast ? node.childNodes.length - 1 : 0\n      node = getEditableChild(node, i, isLast ? 'backward' : 'forward')\n    }\n\n    // Determine the new offset inside the text node.\n    offset = isLast && node.textContent != null ? node.textContent.length : 0\n  }\n\n  // Return the node and offset.\n  return [node, offset]\n}\n\n/**\n * Determines whether the active element is nested within a shadowRoot\n */\n\nexport const hasShadowRoot = (node: Node | null) => {\n  let parent = node && node.parentNode\n  while (parent) {\n    if (parent.toString() === '[object ShadowRoot]') {\n      return true\n    }\n    parent = parent.parentNode\n  }\n  return false\n}\n\n/**\n * Get the nearest editable child and index at `index` in a `parent`, preferring\n * `direction`.\n */\n\nexport const getEditableChildAndIndex = (\n  parent: DOMElement,\n  index: number,\n  direction: 'forward' | 'backward'\n): [DOMNode, number] => {\n  const { childNodes } = parent\n  let child = childNodes[index]\n  let i = index\n  let triedForward = false\n  let triedBackward = false\n\n  // While the child is a comment node, or an element node with no children,\n  // keep iterating to find a sibling non-void, non-comment node.\n  while (\n    isDOMComment(child) ||\n    (isDOMElement(child) && child.childNodes.length === 0) ||\n    (isDOMElement(child) && child.getAttribute('contenteditable') === 'false')\n  ) {\n    if (triedForward && triedBackward) {\n      break\n    }\n\n    if (i >= childNodes.length) {\n      triedForward = true\n      i = index - 1\n      direction = 'backward'\n      continue\n    }\n\n    if (i < 0) {\n      triedBackward = true\n      i = index + 1\n      direction = 'forward'\n      continue\n    }\n\n    child = childNodes[i]\n    index = i\n    i += direction === 'forward' ? 1 : -1\n  }\n\n  return [child, index]\n}\n\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n */\n\nexport const getEditableChild = (\n  parent: DOMElement,\n  index: number,\n  direction: 'forward' | 'backward'\n): DOMNode => {\n  const [child] = getEditableChildAndIndex(parent, index, direction)\n  return child\n}\n\n/**\n * Get a plaintext representation of the content of a node, accounting for block\n * elements which get a newline appended.\n *\n * The domNode must be attached to the DOM.\n */\n\nexport const getPlainText = (domNode: DOMNode) => {\n  let text = ''\n\n  if (isDOMText(domNode) && domNode.nodeValue) {\n    return domNode.nodeValue\n  }\n\n  if (isDOMElement(domNode)) {\n    for (const childNode of Array.from(domNode.childNodes)) {\n      text += getPlainText(childNode)\n    }\n\n    const display = getComputedStyle(domNode).getPropertyValue('display')\n\n    if (display === 'block' || display === 'list' || domNode.tagName === 'BR') {\n      text += '\\n'\n    }\n  }\n\n  return text\n}\n\n/**\n * Get x-slate-fragment attribute from data-slate-fragment\n */\nconst catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m\nexport const getSlateFragmentAttribute = (\n  dataTransfer: DataTransfer\n): string | void => {\n  const htmlData = dataTransfer.getData('text/html')\n  const [, fragment] = htmlData.match(catchSlateFragment) || []\n  return fragment\n}\n\n/**\n * Get the x-slate-fragment attribute that exist in text/html data\n * and append it to the DataTransfer object\n */\nexport const getClipboardData = (\n  dataTransfer: DataTransfer,\n  clipboardFormatKey = 'x-slate-fragment'\n): DataTransfer => {\n  if (!dataTransfer.getData(`application/${clipboardFormatKey}`)) {\n    const fragment = getSlateFragmentAttribute(dataTransfer)\n    if (fragment) {\n      const clipboardData = new DataTransfer()\n      dataTransfer.types.forEach(type => {\n        clipboardData.setData(type, dataTransfer.getData(type))\n      })\n      clipboardData.setData(`application/${clipboardFormatKey}`, fragment)\n      return clipboardData\n    }\n  }\n  return dataTransfer\n}\n\n/**\n * Get the dom selection from Shadow Root if possible, otherwise from the document\n */\nexport const getSelection = (root: Document | ShadowRoot): Selection | null => {\n  if (root.getSelection != null) {\n    return root.getSelection()\n  }\n  return document.getSelection()\n}\n\n/**\n * Check whether a mutation originates from a editable element inside the editor.\n */\n\nexport const isTrackedMutation = (\n  editor: DOMEditor,\n  mutation: MutationRecord,\n  batch: MutationRecord[]\n): boolean => {\n  const { target } = mutation\n  if (isDOMElement(target) && target.matches('[contentEditable=\"false\"]')) {\n    return false\n  }\n\n  const { document } = DOMEditor.getWindow(editor)\n  if (containsShadowAware(document, target)) {\n    return DOMEditor.hasDOMNode(editor, target, { editable: true })\n  }\n\n  const parentMutation = batch.find(({ addedNodes, removedNodes }) => {\n    for (const node of addedNodes) {\n      if (node === target || containsShadowAware(node, target)) {\n        return true\n      }\n    }\n\n    for (const node of removedNodes) {\n      if (node === target || containsShadowAware(node, target)) {\n        return true\n      }\n    }\n  })\n\n  if (!parentMutation || parentMutation === mutation) {\n    return false\n  }\n\n  // Target add/remove is tracked. Track the mutation if we track the parent mutation.\n  return isTrackedMutation(editor, parentMutation, batch)\n}\n\n/**\n * Retrieves the deepest active element in the DOM, considering nested shadow DOMs.\n */\nexport const getActiveElement = () => {\n  let activeElement = document.activeElement\n\n  while (activeElement?.shadowRoot && activeElement.shadowRoot?.activeElement) {\n    activeElement = activeElement?.shadowRoot?.activeElement\n  }\n\n  return activeElement\n}\n\n/**\n * @returns `true` if `otherNode` is before `node` in the document; otherwise, `false`.\n */\nexport const isBefore = (node: DOMNode, otherNode: DOMNode): boolean =>\n  Boolean(\n    node.compareDocumentPosition(otherNode) &\n      DOMNode.DOCUMENT_POSITION_PRECEDING\n  )\n\n/**\n * @returns `true` if `otherNode` is after `node` in the document; otherwise, `false`.\n */\nexport const isAfter = (node: DOMNode, otherNode: DOMNode): boolean =>\n  Boolean(\n    node.compareDocumentPosition(otherNode) &\n      DOMNode.DOCUMENT_POSITION_FOLLOWING\n  )\n\n/**\n * Shadow DOM-aware version of Element.closest()\n * Traverses up the DOM tree, crossing shadow DOM boundaries\n */\nexport const closestShadowAware = (\n  element: DOMElement | null | undefined,\n  selector: string\n): DOMElement | null => {\n  if (!element) {\n    return null\n  }\n\n  let current: DOMElement | null = element\n\n  while (current) {\n    if (current.matches && current.matches(selector)) {\n      return current\n    }\n\n    if (current.parentElement) {\n      current = current.parentElement\n    } else if (current.parentNode && 'host' in current.parentNode) {\n      current = (current.parentNode as ShadowRoot).host as DOMElement\n    } else {\n      return null\n    }\n  }\n\n  return null\n}\n\n/**\n * Shadow DOM-aware version of Node.contains()\n * Checks if a node contains another node, crossing shadow DOM boundaries\n */\nexport const containsShadowAware = (\n  parent: DOMNode | null | undefined,\n  child: DOMNode | null | undefined\n): boolean => {\n  if (!parent || !child) {\n    return false\n  }\n\n  if (parent.contains(child)) {\n    return true\n  }\n\n  let current: DOMNode | null = child\n\n  while (current) {\n    if (current === parent) {\n      return true\n    }\n\n    if (current.parentNode) {\n      if ('host' in current.parentNode) {\n        current = (current.parentNode as ShadowRoot).host\n      } else {\n        current = current.parentNode\n      }\n    } else {\n      return false\n    }\n  }\n\n  return false\n}\n"
  },
  {
    "path": "packages/slate-dom/src/utils/environment.ts",
    "content": "export const IS_IOS =\n  typeof navigator !== 'undefined' &&\n  typeof window !== 'undefined' &&\n  /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n  !window.MSStream\n\nexport const IS_APPLE =\n  typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent)\n\nexport const IS_ANDROID =\n  typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent)\n\nexport const IS_FIREFOX =\n  typeof navigator !== 'undefined' &&\n  /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent)\n\nexport const IS_WEBKIT =\n  typeof navigator !== 'undefined' &&\n  /AppleWebKit(?!.*Chrome)/i.test(navigator.userAgent)\n\n// \"modern\" Edge was released at 79.x\nexport const IS_EDGE_LEGACY =\n  typeof navigator !== 'undefined' &&\n  /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(?:\\.)/i.test(navigator.userAgent)\n\nexport const IS_CHROME =\n  typeof navigator !== 'undefined' && /Chrome/i.test(navigator.userAgent)\n\n// Native `beforeInput` events don't work well with react on Chrome 75\n// and older, Chrome 76+ can use `beforeInput` though.\nexport const IS_CHROME_LEGACY =\n  typeof navigator !== 'undefined' &&\n  /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(?:\\.)/i.test(navigator.userAgent)\n\nexport const IS_ANDROID_CHROME_LEGACY =\n  IS_ANDROID &&\n  typeof navigator !== 'undefined' &&\n  /Chrome?\\/(?:[0-5]?\\d)(?:\\.)/i.test(navigator.userAgent)\n\n// Firefox did not support `beforeInput` until `v87`.\nexport const IS_FIREFOX_LEGACY =\n  typeof navigator !== 'undefined' &&\n  /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])(?:\\.)).*/i.test(\n    navigator.userAgent\n  )\n\n// UC mobile browser\nexport const IS_UC_MOBILE =\n  typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent)\n\n// Wechat browser (not including mac wechat)\nexport const IS_WECHATBROWSER =\n  typeof navigator !== 'undefined' &&\n  /.*Wechat/.test(navigator.userAgent) &&\n  !/.*MacWechat/.test(navigator.userAgent) && // avoid lookbehind (buggy in safari < 16.4)\n  (!IS_CHROME || IS_CHROME_LEGACY) // wechat and low chrome is real wechat\n// Check if DOM is available as React does internally.\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const CAN_USE_DOM = !!(\n  typeof window !== 'undefined' &&\n  typeof window.document !== 'undefined' &&\n  typeof window.document.createElement !== 'undefined'\n)\n\n// Check if the browser is Safari and older than 17\nexport const IS_SAFARI_LEGACY =\n  typeof navigator !== 'undefined' &&\n  /Safari/.test(navigator.userAgent) &&\n  /Version\\/(\\d+)/.test(navigator.userAgent) &&\n  (navigator.userAgent.match(/Version\\/(\\d+)/)?.[1]\n    ? parseInt(navigator.userAgent.match(/Version\\/(\\d+)/)?.[1]!, 10) < 17\n    : false)\n\n// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event\n// Chrome Legacy doesn't support `beforeinput` correctly\nexport const HAS_BEFORE_INPUT_SUPPORT =\n  (!IS_CHROME_LEGACY || !IS_ANDROID_CHROME_LEGACY) &&\n  !IS_EDGE_LEGACY &&\n  // globalThis is undefined in older browsers\n  typeof globalThis !== 'undefined' &&\n  globalThis.InputEvent &&\n  // @ts-ignore The `getTargetRanges` property isn't recognized.\n  typeof globalThis.InputEvent.prototype.getTargetRanges === 'function'\n"
  },
  {
    "path": "packages/slate-dom/src/utils/hotkeys.ts",
    "content": "import { isHotkey } from 'is-hotkey'\nimport { IS_APPLE } from './environment'\n\n/**\n * Hotkey mappings for each platform.\n */\n\nconst HOTKEYS = {\n  bold: 'mod+b',\n  compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n  moveBackward: 'left',\n  moveForward: 'right',\n  moveWordBackward: 'ctrl+left',\n  moveWordForward: 'ctrl+right',\n  deleteBackward: 'shift?+backspace',\n  deleteForward: 'shift?+delete',\n  extendBackward: 'shift+left',\n  extendForward: 'shift+right',\n  italic: 'mod+i',\n  insertSoftBreak: 'shift+enter',\n  splitBlock: 'enter',\n  undo: 'mod+z',\n}\n\nconst APPLE_HOTKEYS = {\n  moveLineBackward: 'opt+up',\n  moveLineForward: 'opt+down',\n  moveWordBackward: 'opt+left',\n  moveWordForward: 'opt+right',\n  deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n  deleteForward: ['ctrl+delete', 'ctrl+d'],\n  deleteLineBackward: 'cmd+shift?+backspace',\n  deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n  deleteWordBackward: 'opt+shift?+backspace',\n  deleteWordForward: 'opt+shift?+delete',\n  extendLineBackward: 'opt+shift+up',\n  extendLineForward: 'opt+shift+down',\n  redo: 'cmd+shift+z',\n  transposeCharacter: 'ctrl+t',\n}\n\nconst WINDOWS_HOTKEYS = {\n  deleteWordBackward: 'ctrl+shift?+backspace',\n  deleteWordForward: 'ctrl+shift?+delete',\n  redo: ['ctrl+y', 'ctrl+shift+z'],\n}\n\n/**\n * Create a platform-aware hotkey checker.\n */\n\nconst create = (key: string) => {\n  const generic = HOTKEYS[<keyof typeof HOTKEYS>key]\n  const apple = APPLE_HOTKEYS[<keyof typeof APPLE_HOTKEYS>key]\n  const windows = WINDOWS_HOTKEYS[<keyof typeof WINDOWS_HOTKEYS>key]\n  const isGeneric = generic && isHotkey(generic)\n  const isApple = apple && isHotkey(apple)\n  const isWindows = windows && isHotkey(windows)\n\n  return (event: KeyboardEvent) => {\n    if (isGeneric && isGeneric(event)) return true\n    if (IS_APPLE && isApple && isApple(event)) return true\n    if (!IS_APPLE && isWindows && isWindows(event)) return true\n    return false\n  }\n}\n\n/**\n * Hotkeys.\n */\n\nexport default {\n  isBold: create('bold'),\n  isCompose: create('compose'),\n  isMoveBackward: create('moveBackward'),\n  isMoveForward: create('moveForward'),\n  isDeleteBackward: create('deleteBackward'),\n  isDeleteForward: create('deleteForward'),\n  isDeleteLineBackward: create('deleteLineBackward'),\n  isDeleteLineForward: create('deleteLineForward'),\n  isDeleteWordBackward: create('deleteWordBackward'),\n  isDeleteWordForward: create('deleteWordForward'),\n  isExtendBackward: create('extendBackward'),\n  isExtendForward: create('extendForward'),\n  isExtendLineBackward: create('extendLineBackward'),\n  isExtendLineForward: create('extendLineForward'),\n  isItalic: create('italic'),\n  isMoveLineBackward: create('moveLineBackward'),\n  isMoveLineForward: create('moveLineForward'),\n  isMoveWordBackward: create('moveWordBackward'),\n  isMoveWordForward: create('moveWordForward'),\n  isRedo: create('redo'),\n  isSoftBreak: create('insertSoftBreak'),\n  isSplitBlock: create('splitBlock'),\n  isTransposeCharacter: create('transposeCharacter'),\n  isUndo: create('undo'),\n}\n"
  },
  {
    "path": "packages/slate-dom/src/utils/key.ts",
    "content": "/**\n * An auto-incrementing identifier for keys.\n */\n\nlet n = 0\n\n/**\n * A class that keeps track of a key string. We use a full class here because we\n * want to be able to use them as keys in `WeakMap` objects.\n */\n\nexport class Key {\n  id: string\n\n  constructor() {\n    this.id = `${n++}`\n  }\n}\n"
  },
  {
    "path": "packages/slate-dom/src/utils/lines.ts",
    "content": "/**\n * Utilities for single-line deletion\n */\n\nimport { Editor, Range } from 'slate'\nimport { DOMEditor } from '../plugin/dom-editor'\n\nconst doRectsIntersect = (rect: DOMRect, compareRect: DOMRect) => {\n  const middle = (compareRect.top + compareRect.bottom) / 2\n\n  return rect.top <= middle && rect.bottom >= middle\n}\n\nconst areRangesSameLine = (editor: DOMEditor, range1: Range, range2: Range) => {\n  const rect1 = DOMEditor.toDOMRange(editor, range1).getBoundingClientRect()\n  const rect2 = DOMEditor.toDOMRange(editor, range2).getBoundingClientRect()\n\n  return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1)\n}\n\n/**\n * A helper utility that returns the end portion of a `Range`\n * which is located on a single line.\n *\n * @param {Editor} editor The editor object to compare against\n * @param {Range} parentRange The parent range to compare against\n * @returns {Range} A valid portion of the parentRange which is one a single line\n */\nexport const findCurrentLineRange = (\n  editor: DOMEditor,\n  parentRange: Range\n): Range => {\n  const parentRangeBoundary = Editor.range(editor, Range.end(parentRange))\n  const positions = Array.from(Editor.positions(editor, { at: parentRange }))\n\n  let left = 0\n  let right = positions.length\n  let middle = Math.floor(right / 2)\n\n  if (\n    areRangesSameLine(\n      editor,\n      Editor.range(editor, positions[left]),\n      parentRangeBoundary\n    )\n  ) {\n    return Editor.range(editor, positions[left], parentRangeBoundary)\n  }\n\n  if (positions.length < 2) {\n    return Editor.range(\n      editor,\n      positions[positions.length - 1],\n      parentRangeBoundary\n    )\n  }\n\n  while (middle !== positions.length && middle !== left) {\n    if (\n      areRangesSameLine(\n        editor,\n        Editor.range(editor, positions[middle]),\n        parentRangeBoundary\n      )\n    ) {\n      right = middle\n    } else {\n      left = middle\n    }\n\n    middle = Math.floor((left + right) / 2)\n  }\n\n  return Editor.range(editor, positions[left], parentRangeBoundary)\n}\n"
  },
  {
    "path": "packages/slate-dom/src/utils/range-list.ts",
    "content": "import { Ancestor, DecoratedRange, Editor, Range } from 'slate'\nimport { PLACEHOLDER_SYMBOL } from './weak-maps'\nimport { DOMEditor } from '../plugin/dom-editor'\n\nexport const shallowCompare = (\n  obj1: { [key: string]: unknown },\n  obj2: { [key: string]: unknown }\n) =>\n  Object.keys(obj1).length === Object.keys(obj2).length &&\n  Object.keys(obj1).every(\n    key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]\n  )\n\nconst isDecorationFlagsEqual = (range: Range, other: Range) => {\n  const { anchor: rangeAnchor, focus: rangeFocus, ...rangeOwnProps } = range\n  const { anchor: otherAnchor, focus: otherFocus, ...otherOwnProps } = other\n\n  return (\n    range[PLACEHOLDER_SYMBOL] === other[PLACEHOLDER_SYMBOL] &&\n    shallowCompare(rangeOwnProps, otherOwnProps)\n  )\n}\n\n/**\n * Check if a list of decorator ranges are equal to another.\n *\n * PERF: this requires the two lists to also have the ranges inside them in the\n * same order, but this is an okay constraint for us since decorations are\n * kept in order, and the odd case where they aren't is okay to re-render for.\n */\n\nexport const isElementDecorationsEqual = (\n  list: Range[] | null,\n  another: Range[] | null\n): boolean => {\n  if (list === another) {\n    return true\n  }\n\n  if (!list || !another) {\n    return false\n  }\n\n  if (list.length !== another.length) {\n    return false\n  }\n\n  for (let i = 0; i < list.length; i++) {\n    const range = list[i]\n    const other = another[i]\n\n    if (!Range.equals(range, other) || !isDecorationFlagsEqual(range, other)) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * Check if a list of decorator ranges are equal to another.\n *\n * PERF: this requires the two lists to also have the ranges inside them in the\n * same order, but this is an okay constraint for us since decorations are\n * kept in order, and the odd case where they aren't is okay to re-render for.\n */\n\nexport const isTextDecorationsEqual = (\n  list: Range[] | null,\n  another: Range[] | null\n): boolean => {\n  if (list === another) {\n    return true\n  }\n\n  if (!list || !another) {\n    return false\n  }\n\n  if (list.length !== another.length) {\n    return false\n  }\n\n  for (let i = 0; i < list.length; i++) {\n    const range = list[i]\n    const other = another[i]\n\n    // compare only offsets because paths doesn't matter for text\n    if (\n      range.anchor.offset !== other.anchor.offset ||\n      range.focus.offset !== other.focus.offset ||\n      !isDecorationFlagsEqual(range, other)\n    ) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * Split and group decorations by each child of a node.\n *\n * @returns An array with length equal to that of `node.children`. Each index\n * corresponds to a child of `node`, and the value is an array of decorations\n * for that child.\n */\n\nexport const splitDecorationsByChild = (\n  editor: Editor,\n  node: Ancestor,\n  decorations: DecoratedRange[]\n): DecoratedRange[][] => {\n  const decorationsByChild = Array.from(\n    node.children,\n    (): DecoratedRange[] => []\n  )\n\n  if (decorations.length === 0) {\n    return decorationsByChild\n  }\n\n  const path = DOMEditor.findPath(editor, node)\n  const level = path.length\n  const ancestorRange = Editor.range(editor, path)\n\n  const cachedChildRanges = new Array<Range | undefined>(node.children.length)\n\n  const getChildRange = (index: number) => {\n    const cachedRange = cachedChildRanges[index]\n    if (cachedRange) return cachedRange\n    const childRange = Editor.range(editor, [...path, index])\n    cachedChildRanges[index] = childRange\n    return childRange\n  }\n\n  for (const decoration of decorations) {\n    const decorationRange = Range.intersection(ancestorRange, decoration)\n    if (!decorationRange) continue\n\n    const [startPoint, endPoint] = Range.edges(decorationRange)\n    const startIndex = startPoint.path[level]\n    const endIndex = endPoint.path[level]\n\n    for (let i = startIndex; i <= endIndex; i++) {\n      const ds = decorationsByChild[i]\n      if (!ds) continue\n\n      const childRange = getChildRange(i)\n      const childDecorationRange = Range.intersection(childRange, decoration)\n      if (!childDecorationRange) continue\n\n      ds.push({\n        ...decoration,\n        ...childDecorationRange,\n      })\n    }\n  }\n\n  return decorationsByChild\n}\n"
  },
  {
    "path": "packages/slate-dom/src/utils/types.ts",
    "content": "export type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R\n  ? (...args: P) => R\n  : never\n"
  },
  {
    "path": "packages/slate-dom/src/utils/weak-maps.ts",
    "content": "import {\n  Ancestor,\n  Editor,\n  Node,\n  Operation,\n  Point,\n  Range,\n  RangeRef,\n  Text,\n} from 'slate'\nimport { TextDiff } from './diff-text'\nimport { Key } from './key'\n\nexport type Action = { at?: Point | Range; run: () => void }\n\n/**\n * Two weak maps that allow us rebuild a path given a node. They are populated\n * at render time such that after a render occurs we can always backtrack.\n */\nexport const IS_NODE_MAP_DIRTY: WeakMap<Editor, boolean> = new WeakMap()\nexport const NODE_TO_INDEX: WeakMap<Node, number> = new WeakMap()\nexport const NODE_TO_PARENT: WeakMap<Node, Ancestor> = new WeakMap()\n\n/**\n * Weak maps that allow us to go between Slate nodes and DOM nodes. These\n * are used to resolve DOM event-related logic into Slate actions.\n */\nexport const EDITOR_TO_WINDOW: WeakMap<Editor, Window> = new WeakMap()\nexport const EDITOR_TO_ELEMENT: WeakMap<Editor, HTMLElement> = new WeakMap()\nexport const EDITOR_TO_PLACEHOLDER: WeakMap<Editor, string> = new WeakMap()\nexport const EDITOR_TO_PLACEHOLDER_ELEMENT: WeakMap<Editor, HTMLElement> =\n  new WeakMap()\nexport const ELEMENT_TO_NODE: WeakMap<HTMLElement, Node> = new WeakMap()\nexport const NODE_TO_ELEMENT: WeakMap<Node, HTMLElement> = new WeakMap()\nexport const NODE_TO_KEY: WeakMap<Node, Key> = new WeakMap()\nexport const EDITOR_TO_KEY_TO_ELEMENT: WeakMap<\n  Editor,\n  WeakMap<Key, HTMLElement>\n> = new WeakMap()\n\n/**\n * Weak maps for storing editor-related state.\n */\n\nexport const IS_READ_ONLY: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_FOCUSED: WeakMap<Editor, boolean> = new WeakMap()\nexport const IS_COMPOSING: WeakMap<Editor, boolean> = new WeakMap()\n\nexport const EDITOR_TO_USER_SELECTION: WeakMap<Editor, RangeRef | null> =\n  new WeakMap()\n\n/**\n * Weak map for associating the context `onChange` context with the plugin.\n */\n\nexport const EDITOR_TO_ON_CHANGE = new WeakMap<\n  Editor,\n  (options?: { operation?: Operation }) => void\n>()\n\n/**\n * Weak maps for saving pending state on composition stage.\n */\n\nexport const EDITOR_TO_SCHEDULE_FLUSH: WeakMap<Editor, () => void> =\n  new WeakMap()\n\nexport const EDITOR_TO_PENDING_INSERTION_MARKS: WeakMap<\n  Editor,\n  Partial<Text> | null\n> = new WeakMap()\n\nexport const EDITOR_TO_USER_MARKS: WeakMap<Editor, Partial<Text> | null> =\n  new WeakMap()\n\n/**\n * Android input handling specific weak-maps\n */\n\nexport const EDITOR_TO_PENDING_DIFFS: WeakMap<Editor, TextDiff[]> =\n  new WeakMap()\n\nexport const EDITOR_TO_PENDING_ACTION: WeakMap<Editor, Action | null> =\n  new WeakMap()\n\nexport const EDITOR_TO_PENDING_SELECTION: WeakMap<Editor, Range | null> =\n  new WeakMap()\n\nexport const EDITOR_TO_FORCE_RENDER: WeakMap<Editor, () => void> = new WeakMap()\n\n/**\n * Symbols.\n */\n\nexport const PLACEHOLDER_SYMBOL = Symbol('placeholder') as unknown as string\nexport const MARK_PLACEHOLDER_SYMBOL = Symbol(\n  'mark-placeholder'\n) as unknown as string\n"
  },
  {
    "path": "packages/slate-dom/tsconfig.json",
    "content": "{\n  \"extends\": \"../../config/typescript/tsconfig.json\",\n  \"include\": [\"src/**/*\"],\n  \"compilerOptions\": {\n    \"rootDir\": \"./src\",\n    \"outDir\": \"./lib\"\n  },\n  \"references\": [{ \"path\": \"../slate\" }]\n}\n"
  },
  {
    "path": "packages/slate-history/CHANGELOG.md",
    "content": "# slate-history\n\n## 0.115.0\n\n### Patch Changes\n\n- [#5866](https://github.com/ianstormtaylor/slate/pull/5866) [`7f5f9e1c`](https://github.com/ianstormtaylor/slate/commit/7f5f9e1c626e61ec476087212b22ee9ff86538e4) Thanks [@nabbydude](https://github.com/nabbydude)! - Fix certain undos undoing more than they should\n\n- [#5862](https://github.com/ianstormtaylor/slate/pull/5862) [`98b115b7`](https://github.com/ianstormtaylor/slate/commit/98b115b7e1ce8a9bfec57f80bcb9a4e11152eca5) Thanks [@12joan](https://github.com/12joan)! - Increase minimum `slate` version to `0.114.3`\n\n- [#5859](https://github.com/ianstormtaylor/slate/pull/5859) [`72532fd2`](https://github.com/ianstormtaylor/slate/commit/72532fd2d7be594251ea26fefb5c1ce8337b76ed) Thanks [@12joan](https://github.com/12joan)! - Optimize `isElement`, `isText`, `isNodeList` and `isEditor` by removing dependency on `is-plain-object` and by performing shallow checks by default. To perform a full check, including all descendants, pass the `{ deep: true }` option to `isElement`, `isNodeList` or `isEditor`.\n\n## 0.113.1\n\n### Patch Changes\n\n- [#5837](https://github.com/ianstormtaylor/slate/pull/5837) [`701d5f32`](https://github.com/ianstormtaylor/slate/commit/701d5f320f37733071150dd0f78201f3bf7bfdc9) Thanks [@ederzz](https://github.com/ederzz)! - fix: add try/finally block in withoutSaving method to ensure state restoration\n\n## 0.110.3\n\n### Patch Changes\n\n- [#5747](https://github.com/ianstormtaylor/slate/pull/5747) [`0e1e4b4d`](https://github.com/ianstormtaylor/slate/commit/0e1e4b4dbf470d7ec795309e510ce683674a4ce5) Thanks [@zbeyens](https://github.com/zbeyens)! - Add `HistoryEditor.withNewBatch`\n\n## 0.109.0\n\n### Minor Changes\n\n- [#5696](https://github.com/ianstormtaylor/slate/pull/5696) [`e5fed793`](https://github.com/ianstormtaylor/slate/commit/e5fed793e7ed592298af2fa1fc8d2dde21ebf326) Thanks [@felixfeng33](https://github.com/felixfeng33)! - Add `withMerging`\n\n## 0.100.0\n\n### Minor Changes\n\n- [#5528](https://github.com/ianstormtaylor/slate/pull/5528) [`c4c14882`](https://github.com/ianstormtaylor/slate/commit/c4c14882edf13828f6583a88e50754ce63583bd7) Thanks [@dylans](https://github.com/dylans)! - Update dependencies to React 18, Node 20, TS 5.2, etc.\n\n## 0.93.0\n\n### Minor Changes\n\n- [#5382](https://github.com/ianstormtaylor/slate/commit/bab6943be9e0a307538c29a9dc5fcf23c09c5e40) Thanks [@reinvanimschoot](https://github.com/reinvanimschoot)! - Extracts history push to own function\n\n## 0.86.0\n\n### Patch Changes\n\n- [#5197](https://github.com/ianstormtaylor/slate/pull/5197) [`70b64dc8`](https://github.com/ianstormtaylor/slate/commit/70b64dc8f10199658ac09bfef141b56187498652) Thanks [@jacobcarpenter](https://github.com/jacobcarpenter)! - Fix isHistory check.\n\n## 0.85.0\n\n### Minor Changes\n\n- [#4717](https://github.com/ianstormtaylor/slate/pull/4717) [`d73026ee`](https://github.com/ianstormtaylor/slate/commit/d73026eed2d190da6153e91a914717978b155d8e) Thanks [@bryanph](https://github.com/bryanph)! - Changes how selections are stored in the history resulting in more consistent results\n\n## 0.81.3\n\n### Patch Changes\n\n- [#5042](https://github.com/ianstormtaylor/slate/pull/5042) [`11a93e65`](https://github.com/ianstormtaylor/slate/commit/11a93e65de4b197a43777e575caf13d7a05d5dc9) Thanks [@bryanph](https://github.com/bryanph)! - Upgrade next.js and source-map-loader packages\n\n## 0.66.0\n\n### Patch Changes\n\n- [#4500](https://github.com/ianstormtaylor/slate/pull/4500) [`50bb3d7e`](https://github.com/ianstormtaylor/slate/commit/50bb3d7e32d640957018831526235ca656963f1d) Thanks [@tubbo](https://github.com/tubbo)! - Upgrade `is-plain-object` to v5.0.0\n\n## 0.65.3\n\n### Patch Changes\n\n- [#4430](https://github.com/ianstormtaylor/slate/pull/4430) [`748bf750`](https://github.com/ianstormtaylor/slate/commit/748bf7500557507a999796749cef28b0d1eb79d9) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Removed unnecessary (and outdated) dependency on `immer`\n\n## 0.62.0\n\n### Minor Changes\n\n- [#4154](https://github.com/ianstormtaylor/slate/pull/4154) [`7283c51f`](https://github.com/ianstormtaylor/slate/commit/7283c51feb83cb8522bc16efce09bb01c29400b9) Thanks [@ianstormtaylor](https://github.com/ianstormtaylor)! - **Start using [🦋 Changesets](https://github.com/atlassian/changesets) to manage releases.** Going forward, whenever a pull request is made that fixes or adds functionality to Slate, it will need to be accompanied by a changset Markdown file describing the change. These files will be automatically used in the release process when bump the versions of Slate and compiling the changelog.\n\n### Patch Changes\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) Thanks [@ianstormtaylor](https://github.com/ianstormtaylor)! - Fixed history logic to not store focus and blur selection changes in the history.\n"
  },
  {
    "path": "packages/slate-history/Readme.md",
    "content": "This package contains the core logic of Slate. Feel free to poke around to learn more!\n"
  },
  {
    "path": "packages/slate-history/package.json",
    "content": "{\n  \"name\": \"slate-history\",\n  \"description\": \"An operation-based history implementation for Slate editors.\",\n  \"version\": \"0.115.0\",\n  \"license\": \"MIT\",\n  \"repository\": \"git://github.com/ianstormtaylor/slate.git\",\n  \"main\": \"dist/index.js\",\n  \"module\": \"dist/index.es.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"umd\": \"dist/slate-history.js\",\n  \"umdMin\": \"dist/slate-history.min.js\",\n  \"sideEffects\": false,\n  \"files\": [\n    \"dist/\"\n  ],\n  \"devDependencies\": {\n    \"@babel/runtime\": \"^7.23.2\",\n    \"lodash\": \"^4.17.21\",\n    \"slate\": \"^0.123.0\",\n    \"slate-hyperscript\": \"^0.115.0\",\n    \"source-map-loader\": \"^4.0.1\"\n  },\n  \"peerDependencies\": {\n    \"slate\": \">=0.114.3\"\n  },\n  \"umdGlobals\": {\n    \"slate\": \"Slate\"\n  },\n  \"keywords\": [\n    \"editor\",\n    \"history\",\n    \"operation\",\n    \"redo\",\n    \"save\",\n    \"slate\",\n    \"stack\",\n    \"undo\"\n  ]\n}\n"
  },
  {
    "path": "packages/slate-history/src/history-editor.ts",
    "content": "import { BaseEditor, Editor } from 'slate'\nimport { History } from './history'\n\n/**\n * Weakmaps for attaching state to the editor.\n */\n\nexport const HISTORY = new WeakMap<Editor, History>()\nexport const SAVING = new WeakMap<Editor, boolean | undefined>()\nexport const MERGING = new WeakMap<Editor, boolean | undefined>()\nexport const SPLITTING_ONCE = new WeakMap<Editor, boolean | undefined>()\n\n/**\n * `HistoryEditor` contains helpers for history-enabled editors.\n */\n\nexport interface HistoryEditor extends BaseEditor {\n  history: History\n  undo: () => void\n  redo: () => void\n  writeHistory: (stack: 'undos' | 'redos', batch: any) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const HistoryEditor = {\n  /**\n   * Check if a value is a `HistoryEditor` object.\n   */\n\n  isHistoryEditor(value: any): value is HistoryEditor {\n    return History.isHistory(value.history) && Editor.isEditor(value)\n  },\n\n  /**\n   * Get the merge flag's current value.\n   */\n\n  isMerging(editor: HistoryEditor): boolean | undefined {\n    return MERGING.get(editor)\n  },\n\n  /**\n   * Get the splitting once flag's current value.\n   */\n\n  isSplittingOnce(editor: HistoryEditor): boolean | undefined {\n    return SPLITTING_ONCE.get(editor)\n  },\n\n  setSplittingOnce(editor: HistoryEditor, value: boolean | undefined): void {\n    SPLITTING_ONCE.set(editor, value)\n  },\n\n  /**\n   * Get the saving flag's current value.\n   */\n\n  isSaving(editor: HistoryEditor): boolean | undefined {\n    return SAVING.get(editor)\n  },\n\n  /**\n   * Redo to the previous saved state.\n   */\n\n  redo(editor: HistoryEditor): void {\n    editor.redo()\n  },\n\n  /**\n   * Undo to the previous saved state.\n   */\n\n  undo(editor: HistoryEditor): void {\n    editor.undo()\n  },\n\n  /**\n   * Apply a series of changes inside a synchronous `fn`, These operations will\n   * be merged into the previous history.\n   */\n  withMerging(editor: HistoryEditor, fn: () => void): void {\n    const prev = HistoryEditor.isMerging(editor)\n    MERGING.set(editor, true)\n    fn()\n    MERGING.set(editor, prev)\n  },\n\n  /**\n   * Apply a series of changes inside a synchronous `fn`, ensuring that the first\n   * operation starts a new batch in the history. Subsequent operations will be\n   * merged as usual.\n   */\n  withNewBatch(editor: HistoryEditor, fn: () => void): void {\n    const prev = HistoryEditor.isMerging(editor)\n    MERGING.set(editor, true)\n    SPLITTING_ONCE.set(editor, true)\n    fn()\n    MERGING.set(editor, prev)\n    SPLITTING_ONCE.delete(editor)\n  },\n\n  /**\n   * Apply a series of changes inside a synchronous `fn`, without merging any of\n   * the new operations into previous save point in the history.\n   */\n\n  withoutMerging(editor: HistoryEditor, fn: () => void): void {\n    const prev = HistoryEditor.isMerging(editor)\n    MERGING.set(editor, false)\n    fn()\n    MERGING.set(editor, prev)\n  },\n\n  /**\n   * Apply a series of changes inside a synchronous `fn`, without saving any of\n   * their operations into the history.\n   */\n\n  withoutSaving(editor: HistoryEditor, fn: () => void): void {\n    const prev = HistoryEditor.isSaving(editor)\n    SAVING.set(editor, false)\n    try {\n      fn()\n    } finally {\n      SAVING.set(editor, prev)\n    }\n  },\n}\n"
  },
  {
    "path": "packages/slate-history/src/history.ts",
    "content": "import { Operation, Range, isObject } from 'slate'\n\ninterface Batch {\n  operations: Operation[]\n  selectionBefore: Range | null\n}\n\n/**\n * `History` objects hold all of the operations that are applied to a value, so\n * they can be undone or redone as necessary.\n */\n\nexport interface History {\n  redos: Batch[]\n  undos: Batch[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport const History = {\n  /**\n   * Check if a value is a `History` object.\n   */\n\n  isHistory(value: any): value is History {\n    return (\n      isObject(value) &&\n      Array.isArray(value.redos) &&\n      Array.isArray(value.undos) &&\n      (value.redos.length === 0 ||\n        Operation.isOperationList(value.redos[0].operations)) &&\n      (value.undos.length === 0 ||\n        Operation.isOperationList(value.undos[0].operations))\n    )\n  },\n}\n"
  },
  {
    "path": "packages/slate-history/src/index.ts",
    "content": "export * from './history'\nexport * from './history-editor'\nexport * from './with-history'\n"
  },
  {
    "path": "packages/slate-history/src/with-history.ts",
    "content": "import { Editor, Operation, Path, Transforms } from 'slate'\n\nimport { HistoryEditor } from './history-editor'\n\n/**\n * The `withHistory` plugin keeps track of the operation history of a Slate\n * editor as operations are applied to it, using undo and redo stacks.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\n\nexport const withHistory = <T extends Editor>(editor: T) => {\n  const e = editor as T & HistoryEditor\n  const { apply } = e\n  e.history = { undos: [], redos: [] }\n\n  e.redo = () => {\n    const { history } = e\n    const { redos } = history\n\n    if (redos.length > 0) {\n      const batch = redos[redos.length - 1]\n\n      if (batch.selectionBefore) {\n        Transforms.setSelection(e, batch.selectionBefore)\n      }\n\n      HistoryEditor.withoutSaving(e, () => {\n        Editor.withoutNormalizing(e, () => {\n          for (const op of batch.operations) {\n            e.apply(op)\n          }\n        })\n      })\n\n      history.redos.pop()\n      e.writeHistory('undos', batch)\n    }\n  }\n\n  e.undo = () => {\n    const { history } = e\n    const { undos } = history\n\n    if (undos.length > 0) {\n      const batch = undos[undos.length - 1]\n\n      HistoryEditor.withoutSaving(e, () => {\n        Editor.withoutNormalizing(e, () => {\n          const inverseOps = batch.operations.map(Operation.inverse).reverse()\n\n          for (const op of inverseOps) {\n            e.apply(op)\n          }\n          if (batch.selectionBefore) {\n            Transforms.setSelection(e, batch.selectionBefore)\n          }\n        })\n      })\n\n      e.writeHistory('redos', batch)\n      history.undos.pop()\n    }\n  }\n\n  e.apply = (op: Operation) => {\n    const { operations, history } = e\n    const { undos } = history\n    const lastBatch = undos[undos.length - 1]\n    const lastOp =\n      lastBatch && lastBatch.operations[lastBatch.operations.length - 1]\n    let save = HistoryEditor.isSaving(e)\n    let merge = HistoryEditor.isMerging(e)\n\n    if (save == null) {\n      save = shouldSave(op, lastOp)\n    }\n\n    if (save) {\n      if (merge == null) {\n        if (lastBatch == null) {\n          merge = false\n        } else if (operations.includes(lastOp)) {\n          merge = true\n        } else {\n          merge = shouldMerge(op, lastOp)\n        }\n      }\n\n      if (HistoryEditor.isSplittingOnce(e)) {\n        merge = false\n        HistoryEditor.setSplittingOnce(e, undefined)\n      }\n\n      if (lastBatch && merge) {\n        lastBatch.operations.push(op)\n      } else {\n        const batch = {\n          operations: [op],\n          selectionBefore: e.selection,\n        }\n        e.writeHistory('undos', batch)\n      }\n\n      while (undos.length > 100) {\n        undos.shift()\n      }\n\n      history.redos = []\n    }\n\n    apply(op)\n  }\n\n  e.writeHistory = (stack: 'undos' | 'redos', batch: any) => {\n    e.history[stack].push(batch)\n  }\n\n  return e\n}\n\n/**\n * Check whether to merge an operation into the previous operation.\n */\n\nconst shouldMerge = (op: Operation, prev: Operation | undefined): boolean => {\n  if (\n    prev &&\n    op.type === 'insert_text' &&\n    prev.type === 'insert_text' &&\n    op.offset === prev.offset + prev.text.length &&\n    Path.equals(op.path, prev.path)\n  ) {\n    return true\n  }\n\n  if (\n    prev &&\n    op.type === 'remove_text' &&\n    prev.type === 'remove_text' &&\n    op.offset + op.text.length === prev.offset &&\n    Path.equals(op.path, prev.path)\n  ) {\n    return true\n  }\n\n  return false\n}\n\n/**\n * Check whether an operation needs to be saved to the history.\n */\n\nconst shouldSave = (op: Operation, prev: Operation | undefined): boolean => {\n  if (op.type === 'set_selection') {\n    return false\n  }\n\n  return true\n}\n"
  },
  {
    "path": "packages/slate-history/test/index.js",
    "content": "import assert from 'assert'\nimport { fixtures } from '../../../support/fixtures'\nimport { createHyperscript } from 'slate-hyperscript'\nimport { History, withHistory } from '..'\n\ndescribe('slate-history', () => {\n  fixtures(__dirname, 'undo', ({ module }) => {\n    const { input, run, output } = module\n    const editor = withTest(withHistory(input))\n    run(editor)\n    editor.undo()\n    assert.deepEqual(editor.children, output.children)\n    assert.deepEqual(editor.selection, output.selection)\n  })\n\n  fixtures(__dirname, 'isHistory', ({ module }) => {\n    const { input, run, output } = module\n    const editor = withTest(withHistory(input))\n    run(editor)\n    const result = History.isHistory(editor.history)\n    assert.strictEqual(result, output)\n  })\n})\n\nexport const jsx = createHyperscript({\n  elements: {\n    block: {},\n    inline: { inline: true },\n  },\n})\n\nconst withTest = editor => {\n  const { isInline, isVoid, isElementReadOnly, isSelectable } = editor\n\n  editor.isInline = element => {\n    return element.inline === true ? true : isInline(element)\n  }\n\n  editor.isVoid = element => {\n    return element.void === true ? true : isVoid(element)\n  }\n\n  editor.isElementReadOnly = element => {\n    return element.readOnly === true ? true : isElementReadOnly(element)\n  }\n\n  editor.isSelectable = element => {\n    return element.nonSelectable === true ? false : isSelectable(element)\n  }\n\n  return editor\n}\n"
  },
  {
    "path": "packages/slate-history/test/isHistory/after-edit.js",
    "content": "/** @jsx jsx */\n\nimport { Transforms } from 'slate'\nimport { jsx } from '..'\n\nexport const input = (\n  <editor>\n    <block>\n      Initial text <cursor />\n    </block>\n  </editor>\n)\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'additional text')\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate-history/test/isHistory/after-redo.js",
    "content": "/** @jsx jsx */\n\nimport { Transforms } from 'slate'\nimport { jsx } from '..'\n\nexport const input = (\n  <editor>\n    <block>\n      Initial text <cursor />\n    </block>\n  </editor>\n)\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'additional text')\n\n  editor.undo()\n  editor.redo()\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate-history/test/isHistory/after-undo.js",
    "content": "/** @jsx jsx */\n\nimport { Transforms } from 'slate'\nimport { jsx } from '..'\n\nexport const input = (\n  <editor>\n    <block>\n      Initial text <cursor />\n    </block>\n  </editor>\n)\n\nexport const run = editor => {\n  Transforms.insertText(editor, 'additional text')\n\n  editor.undo()\n}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate-history/test/isHistory/before-edit.js",
    "content": "/** @jsx jsx */\nimport { jsx } from '..'\n\nexport const input = (\n  <editor>\n    <block>\n      Initial text <cursor />\n    </block>\n  </editor>\n)\n\nexport const run = () => {}\n\nexport const output = true\n"
  },
  {
    "path": "packages/slate-history/test/jsx.d.ts",
    "content": "// This allows tests to include Slate Nodes written in JSX without TypeScript complaining.\ndeclare namespace jsx.JSX {\n  interface IntrinsicElements {\n    [elemName: string]: any // eslint-disable-line\n  }\n}\n"
  },
  {
    "path": "packages/slate-history/test/undo/cursor/keep_after_focus_and_remove_text_undo.js",
    "content": "/** @jsx jsx */\n\nimport assert from 'assert'\nimport { Transforms, Editor } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  // focus at the end\n  Transforms.select(editor, {\n    anchor: { path: [0, 0], offset: 5 },\n    focus: { path: [0, 0], offset: 5 },\n  })\n  // select all\n  Transforms.select(editor, {\n    anchor: { path: [0, 0], offset: 5 },\n    focus: { path: [0, 0], offset: 0 },\n  })\n  // remove\n  Editor.deleteFragment(editor)\n  // blur\n  Transforms.deselect(editor)\n  // focus back\n  Transforms.select(editor, {\n    anchor: { path: [0, 0], offset: 0 },\n    focus: { path: [0, 0], offset: 0 },\n  })\n}\n\nexport const input = (\n  <editor>\n    <block>Hello</block>\n  </editor>\n)\n\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'Hello',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: { path: [0, 0], offset: 5 },\n    focus: { path: [0, 0], offset: 0 },\n  },\n}\n"
  },
  {
    "path": "packages/slate-history/test/undo/delete_backward/block-join-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  editor.deleteBackward()\n}\nexport const input = (\n  <editor>\n    <block>Hello</block>\n    <block>\n      <cursor />\n      world!\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>Hello</block>\n    <block>\n      <cursor />\n      world!\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate-history/test/undo/delete_backward/block-nested-reverse.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  editor.deleteBackward()\n}\nexport const input = (\n  <editor>\n    <block>Hello</block>\n    <block>\n      <block>\n        <cursor />\n        world!\n      </block>\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>Hello</block>\n    <block>\n      <block>\n        <cursor />\n        world!\n      </block>\n    </block>\n  </editor>\n)\n"
  },
  {
    "path": "packages/slate-history/test/undo/delete_backward/block-text.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\nimport { cloneDeep } from 'lodash'\n\nexport const run = editor => {\n  Transforms.delete(editor, { reverse: true })\n}\nexport const input = (\n  <editor>\n    <block>\n      wo\n      <cursor />\n      rd\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate-history/test/undo/delete_backward/custom-prop.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\nimport { cloneDeep } from 'lodash'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block a>\n      o<anchor />\n      ne\n    </block>\n    <block b>\n      tw\n      <focus />o\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate-history/test/undo/delete_backward/inline-across.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\nimport { cloneDeep } from 'lodash'\n\nexport const run = editor => {\n  Transforms.delete(editor)\n}\nexport const input = (\n  <editor>\n    <block>\n      <text />\n      <inline a>\n        o<anchor />\n        ne\n      </inline>\n      <text />\n    </block>\n    <block>\n      <text />\n      <inline b>\n        tw\n        <focus />o\n      </inline>\n      <text />\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate-history/test/undo/insert_break/basic.tsx",
    "content": "/** @jsx jsx */\nimport { Editor } from 'slate'\nimport { jsx } from '../..'\nimport { cloneDeep } from 'lodash'\n\nexport const run = editor => {\n  editor.insertBreak()\n}\nexport const input = (\n  <editor>\n    <block>\n      <block>\n        on\n        <cursor />e\n      </block>\n      <block>two</block>\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate-history/test/undo/insert_fragment/basic.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\nimport { cloneDeep } from 'lodash'\n\nconst fragment = (\n  <block type=\"d\">\n    <block>A</block>\n    <block type=\"c\">\n      <block type=\"d\">\n        <block>B</block>\n        <block>\n          <block type=\"d\">\n            <block>C</block>\n          </block>\n        </block>\n      </block>\n      <block type=\"d\">\n        <block>D</block>\n      </block>\n    </block>\n  </block>\n)\nexport const run = editor => {\n  editor.insertFragment(fragment)\n}\nexport const input = (\n  <editor>\n    <block type=\"d\">\n      <block>\n        <text>\n          <cursor />\n        </text>\n      </block>\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate-history/test/undo/insert_text/basic.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\nimport { cloneDeep } from 'lodash'\n\nexport const run = editor => {\n  editor.insertText('text')\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate-history/test/undo/insert_text/contiguous.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from '../..'\nimport { cloneDeep } from 'lodash'\n\nexport const run = editor => {\n  editor.insertText('t')\n  editor.insertText('w')\n  editor.insertText('o')\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = cloneDeep(input)\n"
  },
  {
    "path": "packages/slate-history/test/undo/insert_text/non-contiguous.tsx",
    "content": "/** @jsx jsx */\nimport { Transforms } from 'slate'\nimport { jsx } from '../..'\n\nexport const run = editor => {\n  editor.insertText('t')\n  Transforms.move(editor, { reverse: true })\n  editor.insertText('w')\n  Transforms.move(editor, { reverse: true })\n  editor.insertText('o')\n}\nexport const input = (\n  <editor>\n    <block>\n      one\n      <cursor />\n    </block>\n  </editor>\n)\nexport const output = (\n  <editor>\n    <block>\n      onew\n      <cursor />t\n    </block>\n  </editor>\n)\nexport const skip = true\n"
  },
  {
    "path": "packages/slate-history/tsconfig.json",
    "content": "{\n  \"extends\": \"../../config/typescript/tsconfig.json\",\n  \"include\": [\"src/**/*\"],\n  \"compilerOptions\": {\n    \"rootDir\": \"./src\",\n    \"outDir\": \"./lib\",\n    \"composite\": true\n  },\n  \"references\": []\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/CHANGELOG.md",
    "content": "# slate-hyperscript\n\n## 0.115.0\n\n### Patch Changes\n\n- [#5862](https://github.com/ianstormtaylor/slate/pull/5862) [`98b115b7`](https://github.com/ianstormtaylor/slate/commit/98b115b7e1ce8a9bfec57f80bcb9a4e11152eca5) Thanks [@12joan](https://github.com/12joan)! - Increase minimum `slate` version to `0.114.3`\n\n- [#5859](https://github.com/ianstormtaylor/slate/pull/5859) [`72532fd2`](https://github.com/ianstormtaylor/slate/commit/72532fd2d7be594251ea26fefb5c1ce8337b76ed) Thanks [@12joan](https://github.com/12joan)! - Optimize `isElement`, `isText`, `isNodeList` and `isEditor` by removing dependency on `is-plain-object` and by performing shallow checks by default. To perform a full check, including all descendants, pass the `{ deep: true }` option to `isElement`, `isNodeList` or `isEditor`.\n\n## 0.100.0\n\n### Minor Changes\n\n- [#5528](https://github.com/ianstormtaylor/slate/pull/5528) [`c4c14882`](https://github.com/ianstormtaylor/slate/commit/c4c14882edf13828f6583a88e50754ce63583bd7) Thanks [@dylans](https://github.com/dylans)! - Update dependencies to React 18, Node 20, TS 5.2, etc.\n\n## 0.81.3\n\n### Patch Changes\n\n- [#5042](https://github.com/ianstormtaylor/slate/pull/5042) [`11a93e65`](https://github.com/ianstormtaylor/slate/commit/11a93e65de4b197a43777e575caf13d7a05d5dc9) Thanks [@bryanph](https://github.com/bryanph)! - Upgrade next.js and source-map-loader packages\n\n## 0.77.0\n\n### Patch Changes\n\n- [#4932](https://github.com/ianstormtaylor/slate/pull/4932) [`1ff6e690`](https://github.com/ianstormtaylor/slate/commit/1ff6e6909353a2e8088dcc8c2bacad15381652a4) Thanks [@e1himself](https://github.com/e1himself)! - Export `createText` creator from `slate-hyperscript` package\n\n## 0.67.0\n\n### Patch Changes\n\n- [#4555](https://github.com/ianstormtaylor/slate/pull/4555) [`c29eea02`](https://github.com/ianstormtaylor/slate/commit/c29eea022ec943f0c63278e9058fe1267f7dff01) Thanks [@bryanph](https://github.com/bryanph)! - createEditor is now exported from slate-hyperscript, making it easier to set up custom editor tests\n\n  For example:\n\n  ```\n  const jsx = createHyperscript({\n    creators: {\n      editor: createEditor(aFunctionThatReturnsAnEditorObject)\n    },\n    elements: {\n      block: { type: 'block' },\n      inline: { type: 'inline' }\n    }\n  })\n  ```\n\n## 0.66.0\n\n### Patch Changes\n\n- [#4500](https://github.com/ianstormtaylor/slate/pull/4500) [`50bb3d7e`](https://github.com/ianstormtaylor/slate/commit/50bb3d7e32d640957018831526235ca656963f1d) Thanks [@tubbo](https://github.com/tubbo)! - Upgrade `is-plain-object` to v5.0.0\n\n## 0.62.0\n\n### Minor Changes\n\n- [#4154](https://github.com/ianstormtaylor/slate/pull/4154) [`7283c51f`](https://github.com/ianstormtaylor/slate/commit/7283c51feb83cb8522bc16efce09bb01c29400b9) Thanks [@ianstormtaylor](https://github.com/ianstormtaylor)! - **Start using [🦋 Changesets](https://github.com/atlassian/changesets) to manage releases.** Going forward, whenever a pull request is made that fixes or adds functionality to Slate, it will need to be accompanied by a changset Markdown file describing the change. These files will be automatically used in the release process when bump the versions of Slate and compiling the changelog.\n"
  },
  {
    "path": "packages/slate-hyperscript/Readme.md",
    "content": "This package contains a hyperscript helper for creating Slate documents with JSX!\n"
  },
  {
    "path": "packages/slate-hyperscript/package.json",
    "content": "{\n  \"name\": \"slate-hyperscript\",\n  \"description\": \"A hyperscript helper for creating Slate documents.\",\n  \"version\": \"0.115.0\",\n  \"license\": \"MIT\",\n  \"repository\": \"git://github.com/ianstormtaylor/slate.git\",\n  \"main\": \"dist/index.js\",\n  \"module\": \"dist/index.es.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"umd\": \"dist/slate-hyperscript.js\",\n  \"umdMin\": \"dist/slate-hyperscript.min.js\",\n  \"sideEffects\": false,\n  \"files\": [\n    \"dist/\"\n  ],\n  \"devDependencies\": {\n    \"@babel/runtime\": \"^7.23.2\",\n    \"slate\": \"^0.123.0\",\n    \"source-map-loader\": \"^4.0.1\"\n  },\n  \"peerDependencies\": {\n    \"slate\": \">=0.114.3\"\n  },\n  \"umdGlobals\": {\n    \"slate\": \"Slate\"\n  },\n  \"keywords\": [\n    \"deserialize\",\n    \"h\",\n    \"html\",\n    \"hyperscript\",\n    \"jsx\",\n    \"serialize\",\n    \"slate\",\n    \"xml\"\n  ]\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/src/creators.ts",
    "content": "import { Element, Descendant, Node, Range, Text, Editor } from 'slate'\nimport {\n  AnchorToken,\n  FocusToken,\n  Token,\n  addAnchorToken,\n  addFocusToken,\n  getAnchorOffset,\n  getFocusOffset,\n} from './tokens'\n\n/**\n * Resolve the descedants of a node by normalizing the children that can be\n * passed into a hyperscript creator function.\n */\n\nconst STRINGS: WeakSet<Text> = new WeakSet()\n\nconst resolveDescendants = (children: any[]): Descendant[] => {\n  const nodes: Node[] = []\n\n  const addChild = (child: Node | Token): void => {\n    if (child == null) {\n      return\n    }\n\n    const prev = nodes[nodes.length - 1]\n\n    if (typeof child === 'string') {\n      const text = { text: child }\n      STRINGS.add(text)\n      child = text\n    }\n\n    if (Text.isText(child)) {\n      const c = child // HACK: fix typescript complaining\n\n      if (\n        Text.isText(prev) &&\n        STRINGS.has(prev) &&\n        STRINGS.has(c) &&\n        Text.equals(prev, c, { loose: true })\n      ) {\n        prev.text += c.text\n      } else {\n        nodes.push(c)\n      }\n    } else if (Element.isElement(child)) {\n      nodes.push(child)\n    } else if (child instanceof Token) {\n      let n = nodes[nodes.length - 1]\n\n      if (!Text.isText(n)) {\n        addChild('')\n        n = nodes[nodes.length - 1] as Text\n      }\n\n      if (child instanceof AnchorToken) {\n        addAnchorToken(n, child)\n      } else if (child instanceof FocusToken) {\n        addFocusToken(n, child)\n      }\n    } else {\n      throw new Error(`Unexpected hyperscript child object: ${child}`)\n    }\n  }\n\n  for (const child of children.flat(Infinity)) {\n    addChild(child)\n  }\n\n  return nodes\n}\n\n/**\n * Create an anchor token.\n */\n\nexport function createAnchor(\n  tagName: string,\n  attributes: { [key: string]: any },\n  children: any[]\n): AnchorToken {\n  return new AnchorToken(attributes)\n}\n\n/**\n * Create an anchor and a focus token.\n */\n\nexport function createCursor(\n  tagName: string,\n  attributes: { [key: string]: any },\n  children: any[]\n): Token[] {\n  return [new AnchorToken(attributes), new FocusToken(attributes)]\n}\n\n/**\n * Create an `Element` object.\n */\n\nexport function createElement(\n  tagName: string,\n  attributes: { [key: string]: any },\n  children: any[]\n): Element {\n  return { ...attributes, children: resolveDescendants(children) }\n}\n\n/**\n * Create a focus token.\n */\n\nexport function createFocus(\n  tagName: string,\n  attributes: { [key: string]: any },\n  children: any[]\n): FocusToken {\n  return new FocusToken(attributes)\n}\n\n/**\n * Create a fragment.\n */\n\nexport function createFragment(\n  tagName: string,\n  attributes: { [key: string]: any },\n  children: any[]\n): Descendant[] {\n  return resolveDescendants(children)\n}\n\n/**\n * Create a `Selection` object.\n */\n\nexport function createSelection(\n  tagName: string,\n  attributes: { [key: string]: any },\n  children: any[]\n): Range {\n  const anchor: AnchorToken = children.find(c => c instanceof AnchorToken)\n  const focus: FocusToken = children.find(c => c instanceof FocusToken)\n\n  if (!anchor || anchor.offset == null || anchor.path == null) {\n    throw new Error(\n      `The <selection> hyperscript tag must have an <anchor> tag as a child with \\`path\\` and \\`offset\\` attributes defined.`\n    )\n  }\n\n  if (!focus || focus.offset == null || focus.path == null) {\n    throw new Error(\n      `The <selection> hyperscript tag must have a <focus> tag as a child with \\`path\\` and \\`offset\\` attributes defined.`\n    )\n  }\n\n  return {\n    anchor: {\n      offset: anchor.offset,\n      path: anchor.path,\n    },\n    focus: {\n      offset: focus.offset,\n      path: focus.path,\n    },\n    ...attributes,\n  }\n}\n\n/**\n * Create a `Text` object.\n */\n\nexport function createText(\n  tagName: string,\n  attributes: { [key: string]: any },\n  children: any[]\n): Text {\n  const nodes = resolveDescendants(children)\n\n  if (nodes.length > 1) {\n    throw new Error(\n      `The <text> hyperscript tag must only contain a single node's worth of children.`\n    )\n  }\n\n  let [node] = nodes\n\n  if (node == null) {\n    node = { text: '' }\n  }\n\n  if (!Text.isText(node)) {\n    throw new Error(`\n    The <text> hyperscript tag can only contain text content as children.`)\n  }\n\n  // COMPAT: If they used the <text> tag we want to guarantee that it won't be\n  // merge with other string children.\n  STRINGS.delete(node)\n\n  Object.assign(node, attributes)\n  return node\n}\n\n/**\n * Create a top-level `Editor` object.\n */\n\nexport const createEditor =\n  (makeEditor: () => Editor) =>\n  (\n    tagName: string,\n    attributes: { [key: string]: any },\n    children: any[]\n  ): Editor => {\n    const otherChildren: any[] = []\n    let selectionChild: Range | undefined\n\n    for (const child of children) {\n      if (Range.isRange(child)) {\n        selectionChild = child\n      } else {\n        otherChildren.push(child)\n      }\n    }\n\n    const descendants = resolveDescendants(otherChildren)\n    const selection: Partial<Range> = {}\n    const editor = makeEditor()\n    Object.assign(editor, attributes)\n    editor.children = descendants as Element[]\n\n    // Search the document's texts to see if any of them have tokens associated\n    // that need incorporated into the selection.\n    for (const [node, path] of Node.texts(editor)) {\n      const anchor = getAnchorOffset(node)\n      const focus = getFocusOffset(node)\n\n      if (anchor != null) {\n        const [offset] = anchor\n        selection.anchor = { path, offset }\n      }\n\n      if (focus != null) {\n        const [offset] = focus\n        selection.focus = { path, offset }\n      }\n    }\n\n    if (selection.anchor && !selection.focus) {\n      throw new Error(\n        `Slate hyperscript ranges must have both \\`<anchor />\\` and \\`<focus />\\` defined if one is defined, but you only defined \\`<anchor />\\`. For collapsed selections, use \\`<cursor />\\` instead.`\n      )\n    }\n\n    if (!selection.anchor && selection.focus) {\n      throw new Error(\n        `Slate hyperscript ranges must have both \\`<anchor />\\` and \\`<focus />\\` defined if one is defined, but you only defined \\`<focus />\\`. For collapsed selections, use \\`<cursor />\\` instead.`\n      )\n    }\n\n    if (selectionChild != null) {\n      editor.selection = selectionChild\n    } else if (Range.isRange(selection)) {\n      editor.selection = selection\n    }\n\n    return editor\n  }\n"
  },
  {
    "path": "packages/slate-hyperscript/src/hyperscript.ts",
    "content": "import { Element, createEditor as makeEditor, isObject } from 'slate'\nimport {\n  createAnchor,\n  createCursor,\n  createEditor,\n  createElement,\n  createFocus,\n  createFragment,\n  createSelection,\n  createText,\n} from './creators'\n\n/**\n * The default creators for Slate objects.\n */\n\nconst DEFAULT_CREATORS = {\n  anchor: createAnchor,\n  cursor: createCursor,\n  editor: createEditor(makeEditor),\n  element: createElement,\n  focus: createFocus,\n  fragment: createFragment,\n  selection: createSelection,\n  text: createText,\n}\n\n/**\n * `HyperscriptCreators` are dictionaries of `HyperscriptCreator` functions\n * keyed by tag name.\n */\n\ntype HyperscriptCreators<T = any> = Record<\n  string,\n  (tagName: string, attributes: { [key: string]: any }, children: any[]) => T\n>\n\n/**\n * `HyperscriptShorthands` are dictionaries of properties applied to specific\n * kind of object, keyed by tag name. They allow you to easily define custom\n * hyperscript tags for your domain.\n */\n\ntype HyperscriptShorthands = Record<string, Record<string, any>>\n\n/**\n * Create a Slate hyperscript function with `options`.\n */\n\nconst createHyperscript = (\n  options: {\n    creators?: HyperscriptCreators\n    elements?: HyperscriptShorthands\n  } = {}\n) => {\n  const { elements = {} } = options\n  const elementCreators = normalizeElements(elements)\n  const creators = {\n    ...DEFAULT_CREATORS,\n    ...elementCreators,\n    ...options.creators,\n  }\n\n  const jsx = createFactory(creators)\n  return jsx\n}\n\n/**\n * Create a Slate hyperscript function with `options`.\n */\n\nconst createFactory = <T extends HyperscriptCreators>(creators: T) => {\n  const jsx = <S extends keyof T & string>(\n    tagName: S,\n    attributes?: Object,\n    ...children: any[]\n  ): ReturnType<T[S]> => {\n    const creator = creators[tagName]\n\n    if (!creator) {\n      throw new Error(`No hyperscript creator found for tag: <${tagName}>`)\n    }\n\n    if (attributes == null) {\n      attributes = {}\n    }\n\n    if (!isObject(attributes)) {\n      children = [attributes].concat(children)\n      attributes = {}\n    }\n\n    children = children.filter(child => Boolean(child)).flat()\n    const ret = creator(tagName, attributes, children)\n    return ret\n  }\n\n  return jsx\n}\n\n/**\n * Normalize a dictionary of element shorthands into creator functions.\n */\n\nconst normalizeElements = (elements: HyperscriptShorthands) => {\n  const creators: HyperscriptCreators<Element> = {}\n\n  for (const tagName in elements) {\n    const props = elements[tagName]\n\n    if (typeof props !== 'object') {\n      throw new Error(\n        `Properties specified for a hyperscript shorthand should be an object, but for the custom element <${tagName}>  tag you passed: ${props}`\n      )\n    }\n\n    creators[tagName] = (\n      tagName: string,\n      attributes: { [key: string]: any },\n      children: any[]\n    ) => {\n      return createElement('element', { ...props, ...attributes }, children)\n    }\n  }\n\n  return creators\n}\n\nexport { createHyperscript, HyperscriptCreators, HyperscriptShorthands }\n"
  },
  {
    "path": "packages/slate-hyperscript/src/index.ts",
    "content": "import {\n  createHyperscript,\n  HyperscriptCreators,\n  HyperscriptShorthands,\n} from './hyperscript'\nimport { createEditor, createText } from './creators'\n\n/**\n * The default hyperscript factory that ships with Slate, without custom tags.\n */\n\nconst jsx = createHyperscript()\n\nexport {\n  jsx,\n  createHyperscript,\n  createEditor,\n  createText,\n  HyperscriptCreators,\n  HyperscriptShorthands,\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/src/tokens.ts",
    "content": "import { Node, Path, Text } from 'slate'\n\n/**\n * A weak map to hold anchor tokens.\n */\n\nconst ANCHOR: WeakMap<Node, [number, AnchorToken]> = new WeakMap()\n\n/**\n * A weak map to hold focus tokens.\n */\n\nconst FOCUS: WeakMap<Node, [number, FocusToken]> = new WeakMap()\n\n/**\n * All tokens inherit from a single constructor for `instanceof` checking.\n */\n\nexport class Token {}\n\n/**\n * Anchor tokens represent the selection's anchor point.\n */\n\nexport class AnchorToken extends Token {\n  offset?: number\n  path?: Path\n\n  constructor(\n    props: {\n      offset?: number\n      path?: Path\n    } = {}\n  ) {\n    super()\n    const { offset, path } = props\n    this.offset = offset\n    this.path = path\n  }\n}\n\n/**\n * Focus tokens represent the selection's focus point.\n */\n\nexport class FocusToken extends Token {\n  offset?: number\n  path?: Path\n\n  constructor(\n    props: {\n      offset?: number\n      path?: Path\n    } = {}\n  ) {\n    super()\n    const { offset, path } = props\n    this.offset = offset\n    this.path = path\n  }\n}\n\n/**\n * Add an anchor token to the end of a text node.\n */\n\nexport const addAnchorToken = (text: Text, token: AnchorToken) => {\n  const offset = text.text.length\n  ANCHOR.set(text, [offset, token])\n}\n\n/**\n * Get the offset if a text node has an associated anchor token.\n */\n\nexport const getAnchorOffset = (\n  text: Text\n): [number, AnchorToken] | undefined => {\n  return ANCHOR.get(text)\n}\n\n/**\n * Add a focus token to the end of a text node.\n */\n\nexport const addFocusToken = (text: Text, token: FocusToken) => {\n  const offset = text.text.length\n  FOCUS.set(text, [offset, token])\n}\n\n/**\n * Get the offset if a text node has an associated focus token.\n */\n\nexport const getFocusOffset = (\n  text: Text\n): [number, FocusToken] | undefined => {\n  return FOCUS.get(text)\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-across-element.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      w<anchor />\n      or\n      <focus />d\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'word',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 1,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 3,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-across-elements-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text>\n        <anchor />\n      </text>\n    </element>\n    <element>\n      <text>\n        <focus />\n      </text>\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: '',\n        },\n      ],\n    },\n    {\n      children: [\n        {\n          text: '',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 0,\n    },\n    focus: {\n      path: [1, 0],\n      offset: 0,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-across-elements-end.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      one\n      <anchor />\n    </element>\n    <element>\n      two\n      <focus />\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'one',\n        },\n      ],\n    },\n    {\n      children: [\n        {\n          text: 'two',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 3,\n    },\n    focus: {\n      path: [1, 0],\n      offset: 3,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-across-elements-middle.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      on\n      <anchor />e\n    </element>\n    <element>\n      t<focus />\n      wo\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'one',\n        },\n      ],\n    },\n    {\n      children: [\n        {\n          text: 'two',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 2,\n    },\n    focus: {\n      path: [1, 0],\n      offset: 1,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-across-elements-start.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <anchor />\n      one\n    </element>\n    <element>\n      <focus />\n      two\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'one',\n        },\n      ],\n    },\n    {\n      children: [\n        {\n          text: 'two',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 0,\n    },\n    focus: {\n      path: [1, 0],\n      offset: 0,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-element-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <cursor />\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: '',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 0,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-element-end.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      one\n      <cursor />\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'one',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 3,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 3,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-element-middle.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      o<cursor />\n      ne\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'one',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 1,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 1,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-element-nested-end.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <element>\n        word\n        <cursor />\n      </element>\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          children: [\n            {\n              text: 'word',\n            },\n          ],\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0, 0],\n      offset: 4,\n    },\n    focus: {\n      path: [0, 0, 0],\n      offset: 4,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-element-nested-middle.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <element>\n        wo\n        <cursor />\n        rd\n      </element>\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          children: [\n            {\n              text: 'word',\n            },\n          ],\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0, 0],\n      offset: 2,\n    },\n    focus: {\n      path: [0, 0, 0],\n      offset: 2,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-element-nested-start.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <element>\n        <cursor />\n        word\n      </element>\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          children: [\n            {\n              text: 'word',\n            },\n          ],\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0, 0],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 0, 0],\n      offset: 0,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-element-start.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <cursor />\n      one\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'one',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 0,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/cursor-text-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>\n      <text>\n        <cursor />\n      </text>\n    </element>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: '',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 0,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/element-custom.tsx",
    "content": "/** @jsx jsx */\nimport { createHyperscript } from 'slate-hyperscript'\n\nconst jsx = createHyperscript({\n  elements: {\n    paragraph: { type: 'paragraph' },\n  },\n})\nexport const input = <paragraph>word</paragraph>\nexport const output = {\n  type: 'paragraph',\n  children: [\n    {\n      text: 'word',\n    },\n  ],\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/element-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = <element />\nexport const output = {\n  children: [],\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/element-nested-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <element>\n    <element />\n  </element>\n)\nexport const output = {\n  children: [\n    {\n      children: [],\n    },\n  ],\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/element-nested-string.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <element>\n    <element>word</element>\n  </element>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'word',\n        },\n      ],\n    },\n  ],\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/element-string.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = <element>word</element>\nexport const output = {\n  children: [\n    {\n      text: 'word',\n    },\n  ],\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/element-text-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <element>\n    <text />\n  </element>\n)\nexport const output = {\n  children: [\n    {\n      text: '',\n    },\n  ],\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/element-text-string.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <element>\n    <text>word</text>\n  </element>\n)\nexport const output = {\n  children: [\n    {\n      text: 'word',\n    },\n  ],\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/fragment-element.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <fragment>\n    <element>word</element>\n  </fragment>\n)\nexport const output = [\n  {\n    children: [\n      {\n        text: 'word',\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/fragment-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = <fragment />\nexport const output = []\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/fragment-string.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = <fragment>word</fragment>\nexport const output = [\n  {\n    text: 'word',\n  },\n]\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/selection-offset-start.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>word</element>\n    <selection>\n      <anchor path={[0, 0]} offset={0} />\n      <focus path={[0, 0]} offset={0} />\n    </selection>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'word',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 0,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 0,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/selection.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <editor>\n    <element>word</element>\n    <selection>\n      <anchor path={[0, 0]} offset={1} />\n      <focus path={[0, 0]} offset={2} />\n    </selection>\n  </editor>\n)\nexport const output = {\n  children: [\n    {\n      children: [\n        {\n          text: 'word',\n        },\n      ],\n    },\n  ],\n  selection: {\n    anchor: {\n      path: [0, 0],\n      offset: 1,\n    },\n    focus: {\n      path: [0, 0],\n      offset: 2,\n    },\n  },\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/text-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = <text a />\nexport const output = {\n  text: '',\n  a: true,\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/text-full.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = <text a>word</text>\nexport const output = {\n  text: 'word',\n  a: true,\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/text-nested.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = (\n  <text b>\n    <text a>word</text>\n  </text>\n)\nexport const output = {\n  text: 'word',\n  a: true,\n  b: true,\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/fixtures/value-empty.tsx",
    "content": "/** @jsx jsx */\nimport { jsx } from 'slate-hyperscript'\n\nexport const input = <editor />\nexport const output = {\n  children: [],\n  selection: null,\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/test/index.js",
    "content": "import assert from 'assert'\nimport { resolve } from 'path'\nimport { fixtures } from '../../../support/fixtures'\n\ndescribe('slate-hyperscript', () => {\n  fixtures(resolve(__dirname, 'fixtures'), ({ module }) => {\n    const { input, output } = module\n    let actual = {}\n\n    if (Array.isArray(output)) {\n      actual = input\n    } else {\n      for (const key in output) {\n        actual[key] = input[key]\n      }\n    }\n\n    assert.deepEqual(actual, output)\n  })\n})\n"
  },
  {
    "path": "packages/slate-hyperscript/test/jsx.d.ts",
    "content": "// This allows tests to include Slate Nodes written in JSX without TypeScript complaining.\ndeclare namespace jsx.JSX {\n  interface IntrinsicElements {\n    [elemName: string]: any // eslint-disable-line\n  }\n}\n"
  },
  {
    "path": "packages/slate-hyperscript/tsconfig.json",
    "content": "{\n  \"extends\": \"../../config/typescript/tsconfig.json\",\n  \"include\": [\"src/**/*\"],\n  \"compilerOptions\": {\n    \"rootDir\": \"./src\",\n    \"outDir\": \"./lib\",\n    \"composite\": true\n  },\n  \"references\": []\n}\n"
  },
  {
    "path": "packages/slate-react/CHANGELOG.md",
    "content": "# slate-react\n\n## 0.123.0\n\n### Patch Changes\n\n- [#6000](https://github.com/ianstormtaylor/slate/pull/6000) [`8d9bf305`](https://github.com/ianstormtaylor/slate/commit/8d9bf30595a6fad62ff15e302ab489ff46a2515a) Thanks [@nabbydude](https://github.com/nabbydude)! - Added `Location.isPath`, `Location.isPoint`, `Location.isRange`, and `Location.isSpan` functions, as efficient type discriminators.\n  Use these instead of `Path.isPath`, `Point.isPoint`, `Range.isRange`, and `Span.isSpan` whenever possible.\n\n## 0.121.0\n\n### Patch Changes\n\n- [#5982](https://github.com/ianstormtaylor/slate/pull/5982) [`dd4a77b3`](https://github.com/ianstormtaylor/slate/commit/dd4a77b3c5bb5d2d3cd6a62f49d6f318d30d6727) Thanks [@nabbydude](https://github.com/nabbydude)! - Add `Node.isEditor`, `Node.isElement`, and `Node.isText` as alternative type guards for when we already know the object is a node.\n  Use these new functions instead of `Editor.isEditor`, `Element.isElement`, and `Text.isText` whenever possible, the classic functions are only necessary for typechecking an entirely unknown object.\n  ===\n\n## 0.120.2\n\n### Patch Changes\n\n- [#5986](https://github.com/ianstormtaylor/slate/pull/5986) [`66283839`](https://github.com/ianstormtaylor/slate/commit/662838397fea198f3f8125ae87ac8b54cd29be89) Thanks [@ebroder](https://github.com/ebroder)! - Update TypeScript declarations for React v19 by switching from JSX.Element to React.JSX.Element\n\n## 0.120.1\n\n### Patch Changes\n\n- [#5988](https://github.com/ianstormtaylor/slate/pull/5988) [`bfa5055f`](https://github.com/ianstormtaylor/slate/commit/bfa5055f75fcf64ee71c2aee8f1ca43dc50222f4) Thanks [@12joan](https://github.com/12joan)! - Fix rendering issues when both chunking and React's strict mode are enabled\n\n## 0.120.0\n\n### Minor Changes\n\n- [#5968](https://github.com/ianstormtaylor/slate/pull/5968) [`49f28e50`](https://github.com/ianstormtaylor/slate/commit/49f28e5067b213431bd16e423524d608cd819a80) Thanks [@TyMick](https://github.com/TyMick)! - Scroll to focus point of expanded selections in `defaultScrollSelectionIntoView`\n\n### Patch Changes\n\n- [#5976](https://github.com/ianstormtaylor/slate/pull/5976) [`3d38db8f`](https://github.com/ianstormtaylor/slate/commit/3d38db8fe7068e6a245d5b4b1ebef536ea3f8a3e) Thanks [@semimikoh](https://github.com/semimikoh)! - Fix slate-dom peer dependency to require >=0.119.0 to resolve containsShadowAware import error\n\n- [#5975](https://github.com/ianstormtaylor/slate/pull/5975) [`d0d192b8`](https://github.com/ianstormtaylor/slate/commit/d0d192b824827f3873e62f237cb5169999791744) Thanks [@nabbydude](https://github.com/nabbydude)! - Allow onValueChange and onSelectionChange to trigger on the same frame, fixing a few bugs where one was not being called\n\n## 0.119.0\n\n### Minor Changes\n\n- [#5963](https://github.com/ianstormtaylor/slate/pull/5963) [`33e74a82`](https://github.com/ianstormtaylor/slate/commit/33e74a822b82c4b9ce1444f456c5343970441ccb) Thanks [@iperzic](https://github.com/iperzic)! - Fixes an editor crash that happens when editor is placed inside Shadow DOM and the user is typing on Android\n\n## 0.118.2\n\n### Patch Changes\n\n- [#5957](https://github.com/ianstormtaylor/slate/pull/5957) [`bd66bfa2`](https://github.com/ianstormtaylor/slate/commit/bd66bfa2f17e8fab6eb95823fd719fddcb6e0122) Thanks [@scrapooo](https://github.com/scrapooo)! - Fix: `onValueChange` was not triggered when replacing text after selecting it from right to left.\n\n- [#5965](https://github.com/ianstormtaylor/slate/pull/5965) [`cc5a9d8c`](https://github.com/ianstormtaylor/slate/commit/cc5a9d8c10ec4a923d9e56ec1a322b91408faabd) Thanks [@hiteshshetty-dev](https://github.com/hiteshshetty-dev)! - Ignores composition events when fired from nested input or textarea\n\n- [#5959](https://github.com/ianstormtaylor/slate/pull/5959) [`622fb115`](https://github.com/ianstormtaylor/slate/commit/622fb11530811fffae284d463de1f49a1ef217a1) Thanks [@hiteshshetty-dev](https://github.com/hiteshshetty-dev)! - Adds translate='no' to Editable component to skip DOM from translation\n\n## 0.117.4\n\n### Patch Changes\n\n- [#5914](https://github.com/ianstormtaylor/slate/pull/5914) [`ef76eb46`](https://github.com/ianstormtaylor/slate/commit/ef76eb46e054a47a8b01da73b9e2d9852626b72c) Thanks [@12joan](https://github.com/12joan)! - Export `defaultScrollSelectionIntoView`\n\n## 0.117.3\n\n### Patch Changes\n\n- [#5901](https://github.com/ianstormtaylor/slate/pull/5901) [`5a20ea3a`](https://github.com/ianstormtaylor/slate/commit/5a20ea3ad8f725b6072b6512f68d48e440da8901) Thanks [@bibixx](https://github.com/bibixx)! - Fix Android cursor jumping to word start after autocorrect\n\n## 0.117.2\n\n### Patch Changes\n\n- [#5908](https://github.com/ianstormtaylor/slate/pull/5908) [`06b21fdc`](https://github.com/ianstormtaylor/slate/commit/06b21fdca39705c4686c2d3afb9649d63f9ddde5) Thanks [@nabbydude](https://github.com/nabbydude)! - Fixed issue on android where deleting forward at the end of a block would delete the first character in the next block instead of the linebreak\n\n## 0.117.1\n\n### Patch Changes\n\n- [#5902](https://github.com/ianstormtaylor/slate/pull/5902) [`47da9bf4`](https://github.com/ianstormtaylor/slate/commit/47da9bf45599c81359cb6bc86aa59d01c77bba52) Thanks [@zbeyens](https://github.com/zbeyens)! - Fixes #5900\n\n## 0.116.0\n\n### Minor Changes\n\n- [#5871](https://github.com/ianstormtaylor/slate/pull/5871) [`fb87646e`](https://github.com/ianstormtaylor/slate/commit/fb87646e8643e1d0547134cea9d1f57912f06a92) Thanks [@12joan](https://github.com/12joan)! - - Implement experimental chunking optimization (disabled by default, see https://docs.slatejs.org/walkthroughs/09-performance).\n  - Add `useElement` and `useElementIf` hooks to get the current element.\n  - **BREAKING CHANGE:** Decorations are no longer recomputed when a node's parent re-renders, only when the node itself re-renders or when the `decorate` function is changed.\n    - Ensure that `decorate` is a pure function of the node passed into it. Depending on the node's parent may result in decorations not being recomputed when you expect them to be.\n    - If this change impacts you, consider changing your `decorate` function to work on the node's parent instead.\n    - For example, if your `decorate` function decorates a `code-line` based on the parent `code-block`'s language, decorate the `code-block` instead.\n    - This is unlikely to result in any performance detriment, since in previous versions of `slate-react`, the decorations of all siblings were recomputed when one sibling was modified.\n  - **BREAKING CHANGE:** Elements no longer re-render due to selection changes.\n    - To re-render whenever an element becomes selected or deselected, subscribe to `useSelected`.\n    - To re-render whenever the selection changes anywhere in the editor, subscribe to `useSlateSelection`.\n    - To re-render whenever the intersection of the selection with an element changes (the previous behaviour), use `useSlateSelector` to compute this intersection using `Range.intersection`. Ensure you provide a suitable equality function using `Range.equals`.\n  - Increase minimum `slate-dom` version to `0.116.0`.\n  - Deprecate the `useSlateWithV` hook\n  - PERF: Use subscribable pattern for `useSlate`, `useSelected` and decorations to reduce re-renders.\n\n## 0.115.0\n\n### Patch Changes\n\n- [#5881](https://github.com/ianstormtaylor/slate/pull/5881) [`05263b54`](https://github.com/ianstormtaylor/slate/commit/05263b544c32b4c704d141dc5142190f18c056e1) Thanks [@12joan](https://github.com/12joan)! - Fix IME issues in Firefox caused by placeholder\n\n- [#5877](https://github.com/ianstormtaylor/slate/pull/5877) [`747ebfda`](https://github.com/ianstormtaylor/slate/commit/747ebfda0a06b29fc31720f9172c67222fbeae07) Thanks [@12joan](https://github.com/12joan)! - Fix a crash on iOS when composing text using an IME at the start of a block, at the cost of breaking capitalization on iOS in an empty editor.\n\n- [#5859](https://github.com/ianstormtaylor/slate/pull/5859) [`72532fd2`](https://github.com/ianstormtaylor/slate/commit/72532fd2d7be594251ea26fefb5c1ce8337b76ed) Thanks [@12joan](https://github.com/12joan)! - Optimize `isElement`, `isText`, `isNodeList` and `isEditor` by removing dependency on `is-plain-object` and by performing shallow checks by default. To perform a full check, including all descendants, pass the `{ deep: true }` option to `isElement`, `isNodeList` or `isEditor`.\n\n## 0.114.2\n\n### Patch Changes\n\n- [#5855](https://github.com/ianstormtaylor/slate/pull/5855) [`ec367fb0`](https://github.com/ianstormtaylor/slate/commit/ec367fb04f018c8fd0daf8b0d09f87c89a8c155b) Thanks [@zbeyens](https://github.com/zbeyens)! - Fix `renderText` prop not applied\n\n## 0.114.1\n\n### Patch Changes\n\n- [#5853](https://github.com/ianstormtaylor/slate/pull/5853) [`9fe6184c`](https://github.com/ianstormtaylor/slate/commit/9fe6184ca26c518a1114b66df319504f31a07cbb) Thanks [@12joan](https://github.com/12joan)! - Increase minimum `slate` version to 0.114.0 due to https://github.com/ianstormtaylor/slate/issues/5852\n\n## 0.114.0\n\n### Minor Changes\n\n- [#5850](https://github.com/ianstormtaylor/slate/pull/5850) [`22a3dda3`](https://github.com/ianstormtaylor/slate/commit/22a3dda36d4362d5dfdb9a75836297dae8cd7f9e) Thanks [@zbeyens](https://github.com/zbeyens)! - - Update `RenderLeafProps` interface to add `leafPosition` property containing `start`, `end`, `isFirst`, and `isLast` when a text node is split by decorations.\n\n  - Add optional `renderText` prop to `<Editable />` component for customizing text node rendering.\n\n- [#5848](https://github.com/ianstormtaylor/slate/pull/5848) [`2c62e017`](https://github.com/ianstormtaylor/slate/commit/2c62e0179734871369ac23d38ebfc1378ec9ad68) Thanks [@dpolugic](https://github.com/dpolugic)! - Use equalityFn in useSlateSelector during render as well\n\n## 0.113.0\n\n### Patch Changes\n\n- [#5822](https://github.com/ianstormtaylor/slate/pull/5822) [`68915e8c`](https://github.com/ianstormtaylor/slate/commit/68915e8cfadd9d8dd545dbcd8c33b6b69827a287) Thanks [@RavenColEvol](https://github.com/RavenColEvol)! - add context menu undo support\n\n## 0.112.1\n\n### Patch Changes\n\n- [#5795](https://github.com/ianstormtaylor/slate/pull/5795) [`f456dfbf`](https://github.com/ianstormtaylor/slate/commit/f456dfbf133f93fabe683849adb7952b8b04fc60) Thanks [@12joan](https://github.com/12joan)! - Ignore selectionchange events originating from input and textarea elements (addresses Chrome bug https://issues.chromium.org/issues/389368412)\n\n## 0.112.0\n\n### Patch Changes\n\n- [#5763](https://github.com/ianstormtaylor/slate/pull/5763) [`644ebdc8`](https://github.com/ianstormtaylor/slate/commit/644ebdc8f5f30878fb87dc8685f62e0636c23491) Thanks [@TyMick](https://github.com/TyMick)! - Use extended `Editor` type in `useSlateWithV` return type\n\n- [#5741](https://github.com/ianstormtaylor/slate/pull/5741) [`90fbcdef`](https://github.com/ianstormtaylor/slate/commit/90fbcdeff58d9b1f5de13102a1198f1c7244ae0c) Thanks [@AdrienPoupa](https://github.com/AdrienPoupa)! - Fix ReactEditor.toDOMRange crash in setDomSelection\n\n## 0.111.0\n\n### Minor Changes\n\n- [#5734](https://github.com/ianstormtaylor/slate/pull/5734) [`9a212512`](https://github.com/ianstormtaylor/slate/commit/9a2125127064f35332d5c06df2dfa3768f745185) Thanks [@bmingles](https://github.com/bmingles)! - Split out slate-dom package\n\n## 0.110.3\n\n### Patch Changes\n\n- [#5746](https://github.com/ianstormtaylor/slate/pull/5746) [`e97a9f88`](https://github.com/ianstormtaylor/slate/commit/e97a9f8857b24d57c1386b2d01e9922360f98599) Thanks [@DustinMackintosh](https://github.com/DustinMackintosh)! - Invalidate node maps when nodes change until next react paint\n\n## 0.110.2\n\n### Patch Changes\n\n- [#5737](https://github.com/ianstormtaylor/slate/pull/5737) [`cd21bb1f`](https://github.com/ianstormtaylor/slate/commit/cd21bb1f80cfaa824253849b407781c9471dcd9a) Thanks [@WindRunnerMax](https://github.com/WindRunnerMax)! - fix: sync built-in state on undo when editor is unfocused\n\n- [#5727](https://github.com/ianstormtaylor/slate/pull/5727) [`335c5418`](https://github.com/ianstormtaylor/slate/commit/335c54188ff1e2985cc584dd9fa3117508208dd3) Thanks [@hernansartorio](https://github.com/hernansartorio)! - Call unref on pathRefs created for move_node to remove memory leak\n\n## 0.110.1\n\n### Patch Changes\n\n- [#5716](https://github.com/ianstormtaylor/slate/pull/5716) [`10abeff8`](https://github.com/ianstormtaylor/slate/commit/10abeff84fd856f9fd72240f8ee1631466f98d02) Thanks [@TyMick](https://github.com/TyMick)! - Fix selections with non-void non-editable focus\n\n## 0.110.0\n\n### Minor Changes\n\n- [#5706](https://github.com/ianstormtaylor/slate/pull/5706) [`f9e83b80`](https://github.com/ianstormtaylor/slate/commit/f9e83b807f4b2ae717814af5943f53f366a48fd2) Thanks [@yf-yang](https://github.com/yf-yang)! - Expose useComposing hook\n\n## 0.109.0\n\n### Minor Changes\n\n- [#5695](https://github.com/ianstormtaylor/slate/pull/5695) [`6cb38e37`](https://github.com/ianstormtaylor/slate/commit/6cb38e37a4bd3a43ee02652c514288df62da1c21) Thanks [@yf-yang](https://github.com/yf-yang)! - feat: Add useComposing hook\"\n\n## 0.108.0\n\n### Minor Changes\n\n- [#5681](https://github.com/ianstormtaylor/slate/pull/5681) [`b8bf92dc`](https://github.com/ianstormtaylor/slate/commit/b8bf92dc7e42f7547128fcfe1c63e89dffb29032) Thanks [@yf-yang](https://github.com/yf-yang)! - Forward ref from Editable component\n\n## 0.107.1\n\n### Patch Changes\n\n- [#5677](https://github.com/ianstormtaylor/slate/pull/5677) [`a9a70405`](https://github.com/ianstormtaylor/slate/commit/a9a7040583ffe6a5ddf623acbaa91dee8fc76904) Thanks [@WindrunnerMax](https://github.com/WindrunnerMax)! - fix unexpected event triggered when using `ReactEditor.focus`\n\n## 0.107.0\n\n### Minor Changes\n\n- [#5676](https://github.com/ianstormtaylor/slate/pull/5676) [`ec9e5f0a`](https://github.com/ianstormtaylor/slate/commit/ec9e5f0a366dda80f826e90042ff8a49b1cf3933) Thanks [@ivan-sysoi](https://github.com/ivan-sysoi)! - Changed behaviour of ReactEditor.findDocumentOrShadowRoot. It returns shadow root or document without checking for the existence of the getSelection method.\n\n## 0.106.0\n\n### Minor Changes\n\n- [#5659](https://github.com/ianstormtaylor/slate/pull/5659) [`e6254f70`](https://github.com/ianstormtaylor/slate/commit/e6254f706a47d0e451d3d40485bf96f819eaa9ab) Thanks [@MahmoudElsayad](https://github.com/MahmoudElsayad)! - Enable Shadow DOM fix for all Safari versions.\n\n### Patch Changes\n\n- [#5664](https://github.com/ianstormtaylor/slate/pull/5664) [`0016f984`](https://github.com/ianstormtaylor/slate/commit/0016f9843f76fee1fe7d26330dd00cd1307915ec) Thanks [@12joan](https://github.com/12joan)! - Fix: `state.isDraggingInternally` is stale if a drop handler outside the editor causes the dragged DOM element to unmount\n\n## 0.105.0\n\n### Minor Changes\n\n- [#5654](https://github.com/ianstormtaylor/slate/pull/5654) [`2a8b4e95`](https://github.com/ianstormtaylor/slate/commit/2a8b4e958bd02f3b70da51c3880fd764270424ad) Thanks [@alex-starostin](https://github.com/alex-starostin)! - Make capitalizing work for iOS\n\n## 0.104.0\n\n### Minor Changes\n\n- [#5648](https://github.com/ianstormtaylor/slate/pull/5648) [`0bb7be54`](https://github.com/ianstormtaylor/slate/commit/0bb7be5496db4c31042667a17f9ff95c3f3d42b0) Thanks [@MahmoudElsayad](https://github.com/MahmoudElsayad)! - Fix Safari selection inside Shadow DOM.\n\n## 0.102.0\n\n### Patch Changes\n\n- [#5541](https://github.com/ianstormtaylor/slate/pull/5541) [`c2ae1eda`](https://github.com/ianstormtaylor/slate/commit/c2ae1eda91d0aae1cd63bd46af759c542c292a8a) Thanks [@12joan](https://github.com/12joan)! - Do not move selection outside inline node when composition starts\n\n## 0.101.6\n\n### Patch Changes\n\n- [#5593](https://github.com/ianstormtaylor/slate/pull/5593) [`54594d0f`](https://github.com/ianstormtaylor/slate/commit/54594d0f81627166d72c97256203c4b5642a82ff) Thanks [@12joan](https://github.com/12joan)! - Fix: Calling `ReactEditor.focus` doesn't update `useFocused` when running in @testing-library/react\n\n## 0.101.5\n\n### Patch Changes\n\n- [#5584](https://github.com/ianstormtaylor/slate/pull/5584) [`884ab424`](https://github.com/ianstormtaylor/slate/commit/884ab4249485e5930f1f79abb939bf375ffd47c0) Thanks [@Elvin7CF](https://github.com/Elvin7CF)! - Fix onCompositionEnd not updating isComposing\n\n## 0.101.3\n\n### Patch Changes\n\n- [#5576](https://github.com/ianstormtaylor/slate/pull/5576) [`8ce52fd4`](https://github.com/ianstormtaylor/slate/commit/8ce52fd494c5156c8f08841b972bc5eda2817c03) Thanks [@qirong77](https://github.com/qirong77)! - fix onCompositionEnd update error.\n\n## 0.101.2\n\n### Patch Changes\n\n- [#5567](https://github.com/ianstormtaylor/slate/pull/5567) [`07f59e36`](https://github.com/ianstormtaylor/slate/commit/07f59e36071bae2b9c09b787f1dd514c6bf859a4) Thanks [@timagixe](https://github.com/timagixe)! - Fix cursor position on selection collapse for RTL direction\n\n## 0.101.1\n\n### Patch Changes\n\n- [#5564](https://github.com/ianstormtaylor/slate/pull/5564) [`9aa573e9`](https://github.com/ianstormtaylor/slate/commit/9aa573e9b8b2aff0c702fc6efa622e71db7759f1) Thanks [@12joan](https://github.com/12joan)! - Apply 300ms placeholder delay only on Android devices\n\n## 0.101.0\n\n### Minor Changes\n\n- [#5527](https://github.com/ianstormtaylor/slate/pull/5527) [`fc081816`](https://github.com/ianstormtaylor/slate/commit/fc081816e08ade6838d05a96f84088de9f2734ce) Thanks [@skogsmaskin](https://github.com/skogsmaskin)! - Fixes a bug with `ReactEditor.focus` where it would throw an error if the editor was in the middle of applying pending operations.\n  With this change, setting focus will be retried until the editor no longer has any pending operations.\n  Calling `ReactEditor.focus` on a editor without a current selection, will now make a selection in the top of the document.\n\n### Patch Changes\n\n- [#5549](https://github.com/ianstormtaylor/slate/pull/5549) [`f9cca97f`](https://github.com/ianstormtaylor/slate/commit/f9cca97f00e4b7827f7056cd7f1644345a4be953) Thanks [@12joan](https://github.com/12joan)! - Firefox compat: Fix incorrect focus.offset when text node ends with \\n\n\n- [#5556](https://github.com/ianstormtaylor/slate/pull/5556) [`22495e14`](https://github.com/ianstormtaylor/slate/commit/22495e143d81fd602ff3efa0b5f6339a4b05b6c0) Thanks [@dylans](https://github.com/dylans)! - Revert #5542\n\n## 0.100.1\n\n### Patch Changes\n\n- [#5542](https://github.com/ianstormtaylor/slate/pull/5542) [`8688ed5c`](https://github.com/ianstormtaylor/slate/commit/8688ed5c680069c4277d8b575b79fe525737935d) Thanks [@hellsan631](https://github.com/hellsan631)! - Fix Memory Leak when switching between focused editables\n\n## 0.100.0\n\n### Minor Changes\n\n- [#5526](https://github.com/ianstormtaylor/slate/pull/5526) [`623f4452`](https://github.com/ianstormtaylor/slate/commit/623f44521ee95be38c53b6def456ed8c5f16e14b) Thanks [@jkcs](https://github.com/jkcs)! - Add `onSelectionChange` and `onValueChange` in Slate React component\n\n- [#5528](https://github.com/ianstormtaylor/slate/pull/5528) [`c4c14882`](https://github.com/ianstormtaylor/slate/commit/c4c14882edf13828f6583a88e50754ce63583bd7) Thanks [@dylans](https://github.com/dylans)! - Update dependencies to React 18, Node 20, TS 5.2, etc.\n\n## 0.99.0\n\n### Minor Changes\n\n- [#5516](https://github.com/ianstormtaylor/slate/pull/5516) [`300dc57a`](https://github.com/ianstormtaylor/slate/commit/300dc57a00c6437519ae0044384811efec653758) Thanks [@josephmr](https://github.com/josephmr)! - Retain editor selection when using ReactEditor.focus()\n\n### Patch Changes\n\n- [#5514](https://github.com/ianstormtaylor/slate/pull/5514) [`ff7db221`](https://github.com/ianstormtaylor/slate/commit/ff7db221205014605464628d18e41f1310bcead9) Thanks [@YaoKaiLun](https://github.com/YaoKaiLun)! - Fix move_node triggers nodes re-render\n\n## 0.98.4\n\n### Patch Changes\n\n- [#5510](https://github.com/ianstormtaylor/slate/pull/5510) [`13c7d271`](https://github.com/ianstormtaylor/slate/commit/13c7d271e35406a2497e78ef114417ad17796c65) Thanks [@e1himself](https://github.com/e1himself)! - Remove an unused React ref\n\n## 0.98.3\n\n### Patch Changes\n\n- [#5503](https://github.com/ianstormtaylor/slate/pull/5503) [`e308cd66`](https://github.com/ianstormtaylor/slate/commit/e308cd664d381ba1cd37f423445f189b9b5e4d1d) Thanks [@janpaepke](https://github.com/janpaepke)! - bugfix: slate breaks on load on safari < 16.4\n\n## 0.98.2\n\n### Patch Changes\n\n- [#5497](https://github.com/ianstormtaylor/slate/pull/5497) [`76ba3759`](https://github.com/ianstormtaylor/slate/commit/76ba3759838fd538587fda2f4027f7c74ff09589) Thanks [@Dimitri-WEI-Lingfeng](https://github.com/Dimitri-WEI-Lingfeng)! - fix the bug that user cannot input chinese on mac wechat browser.\n\n## 0.98.1\n\n### Patch Changes\n\n- [#5491](https://github.com/ianstormtaylor/slate/pull/5491) [`a5576e56`](https://github.com/ianstormtaylor/slate/commit/a5576e56a73f061972775953f270b34081a5cad8) Thanks [@WcaleNieWolny](https://github.com/WcaleNieWolny)! - Fix firefox table selection if table is contentedtiable\n\n## 0.98.0\n\n### Minor Changes\n\n- [#5486](https://github.com/ianstormtaylor/slate/pull/5486) [`8b548fb5`](https://github.com/ianstormtaylor/slate/commit/8b548fb53af861e1f391f2d5c052e3279f0a0b6c) Thanks [@WcaleNieWolny](https://github.com/WcaleNieWolny)! - Fix invalid usage of the selection API in firefox\n\n## 0.97.2\n\n### Patch Changes\n\n- [#5462](https://github.com/ianstormtaylor/slate/pull/5462) [`a6b606d8`](https://github.com/ianstormtaylor/slate/commit/a6b606d804795d9b134784a35e3b00ac77f3ebbc) Thanks [@Ben-Wormald](https://github.com/Ben-Wormald)! - Update hotkeys util to use isHotkey for better support for non-latin keyboards\n\n* [#5470](https://github.com/ianstormtaylor/slate/pull/5470) [`4bd15ed3`](https://github.com/ianstormtaylor/slate/commit/4bd15ed3950e3a0871f5d0ecb391bb637c05e59d) Thanks [@josephmr](https://github.com/josephmr)! - Fix Android caret placement regression when inputting into empty editor\n\n## 0.97.1\n\n### Patch Changes\n\n- [#5460](https://github.com/ianstormtaylor/slate/pull/5460) [`53395449`](https://github.com/ianstormtaylor/slate/commit/53395449e5b03fde5c0521203ef044064f3c159e) Thanks [@12joan](https://github.com/12joan)! - Do not attempt to batch updates manually in React >= 18\n\n## 0.97.0\n\n### Minor Changes\n\n- [#5451](https://github.com/ianstormtaylor/slate/pull/5451) [`12ff246e`](https://github.com/ianstormtaylor/slate/commit/12ff246e101bb7ae51248066c07c378ee4be9220) Thanks [@gtluszcz](https://github.com/gtluszcz)! - Fixed occasional crashes when selecting void elements in Chrome\n\n### Patch Changes\n\n- [#5453](https://github.com/ianstormtaylor/slate/pull/5453) [`cde0a155`](https://github.com/ianstormtaylor/slate/commit/cde0a155e23d015d4ee72f9f10f63b67e878668e) Thanks [@Shiba-ligo](https://github.com/Shiba-ligo)! - fix regular expression for testing Webkit based browser.\n\n## 0.96.0\n\n### Minor Changes\n\n- [#5437](https://github.com/ianstormtaylor/slate/pull/5437) [`3ad13d60`](https://github.com/ianstormtaylor/slate/commit/3ad13d601550341688cc75466a75b616d8232154) Thanks [@josephmr](https://github.com/josephmr)! - Detect all WebKit based browsers for COMPAT behavior\n\n### Patch Changes\n\n- [#5443](https://github.com/ianstormtaylor/slate/pull/5443) [`eb7f5987`](https://github.com/ianstormtaylor/slate/commit/eb7f598707ab9a4f1bd62fd195719049e9536be0) Thanks [@OldDream](https://github.com/OldDream)! - fix wrong caret position during composition.\n\n## 0.95.0\n\n### Minor Changes\n\n- [#5422](https://github.com/ianstormtaylor/slate/pull/5422) [`0b179909`](https://github.com/ianstormtaylor/slate/commit/0b1799091a6800c7e868d5a6148b82648cbe8270) Thanks [@Chudesnov](https://github.com/Chudesnov)! - Prevents default focus styles from being removed in Editable\n\n* [#5421](https://github.com/ianstormtaylor/slate/pull/5421) [`91e388ec`](https://github.com/ianstormtaylor/slate/commit/91e388ecd9e6a540b4a651978436f196f38f667d) Thanks [@e1himself](https://github.com/e1himself)! - Rename `<Slate>` component prop from `value` to `initialValue` to emphasize uncontrolled nature of it\n\n## 0.94.2\n\n### Patch Changes\n\n- [#5423](https://github.com/ianstormtaylor/slate/pull/5423) [`042bca16`](https://github.com/ianstormtaylor/slate/commit/042bca167ac810acccae229bc905a49098aee546) Thanks [@horacioh](https://github.com/horacioh)! - fix placeholder position in Safari 16.x\n\n## 0.94.0\n\n### Patch Changes\n\n- [#5307](https://github.com/ianstormtaylor/slate/pull/5307) [`3243c7e3`](https://github.com/ianstormtaylor/slate/commit/3243c7e34ac2602618c67c88b1b7df07fde1c2ec) Thanks [@zbeyens](https://github.com/zbeyens)! - Interface methods JSDoc should now work on IDEs.\n\n## 0.93.0\n\n### Patch Changes\n\n- [#5383](https://github.com/ianstormtaylor/slate/pull/5383) [`3c3ea29a`](https://github.com/ianstormtaylor/slate/commit/3c3ea29a2d7c70bab3629f0f78ea28dca4058b53) Thanks [@12joan](https://github.com/12joan)! - Fix issue when tabbing into editor in Safari (https://github.com/udecode/plate/issues/2315)\n\n* [#5368](https://github.com/ianstormtaylor/slate/pull/5368) [`5a0d3974`](https://github.com/ianstormtaylor/slate/commit/5a0d3974d6cb2c099dff4c0976e9390d24c345ad) Thanks [@edhager](https://github.com/edhager)! - Delay rendering of placeholder to avoid IME hiding\n\n## 0.92.0\n\n### Minor Changes\n\n- [#5363](https://github.com/ianstormtaylor/slate/pull/5363) [`d42cd005`](https://github.com/ianstormtaylor/slate/commit/d42cd005db862165f5ac63fba4d35f36d92864f6) Thanks [@aciccarello](https://github.com/aciccarello)! - update dependencies on react hooks to be more senstive to changes\n\n  The code should now meet eslint react hook standards\n\n  This could result in more renders\n\n  closes #3886\n\n### Patch Changes\n\n- [#5369](https://github.com/ianstormtaylor/slate/pull/5369) [`556a4565`](https://github.com/ianstormtaylor/slate/commit/556a4565d2bb4a611d34bb30ecd9bac324664066) Thanks [@alex-vladut](https://github.com/alex-vladut)! - Allow copying from editable void input\n\n## 0.91.11\n\n### Patch Changes\n\n- [#5362](https://github.com/ianstormtaylor/slate/pull/5362) [`43999356`](https://github.com/ianstormtaylor/slate/commit/439993569001f8c5dc9e68194c198d430a4ef4bc) Thanks [@jason0x43](https://github.com/jason0x43)! - Fix an issue where pastes in Safari wouldn't include application/x-slate-fragment data\n\n* [#5359](https://github.com/ianstormtaylor/slate/pull/5359) [`9825d29b`](https://github.com/ianstormtaylor/slate/commit/9825d29b87ffff96b4cdfd7339028cc1a92c6f68) Thanks [@jason0x43](https://github.com/jason0x43)! - Fix an issue on Android where content containing a newline wouldn't be pasted properly\n\n## 0.91.10\n\n### Patch Changes\n\n- [#5346](https://github.com/ianstormtaylor/slate/pull/5346) [`a5e833f6`](https://github.com/ianstormtaylor/slate/commit/a5e833f6550a823689e593317f4579127d8a7fd7) Thanks [@edhager](https://github.com/edhager)! - Fix a problem with Editable not calling the decorate function passed as a prop when it should.\n\n* [#5343](https://github.com/ianstormtaylor/slate/pull/5343) [`f7f02a8b`](https://github.com/ianstormtaylor/slate/commit/f7f02a8b23f16a3f3103302343e3326549917892) Thanks [@12joan](https://github.com/12joan)! - Fix error when triple-clicking a word preceding a `contenteditable=\"false\"` DOM node in Chrome\n\n## 0.91.9\n\n### Patch Changes\n\n- [#5339](https://github.com/ianstormtaylor/slate/pull/5339) [`62f8ddd9`](https://github.com/ianstormtaylor/slate/commit/62f8ddd9713617bf474968a10b69c24b71074b41) Thanks [@12joan](https://github.com/12joan)! - Fixes #5335. To prevent performance issues, make sure to wrap custom `renderPlaceholder` values in `useCallback`.\n\n## 0.91.8\n\n### Patch Changes\n\n- [#5325](https://github.com/ianstormtaylor/slate/pull/5325) [`af3f828b`](https://github.com/ianstormtaylor/slate/commit/af3f828b1206409951708b823fb32965b67c798f) Thanks [@clauderic](https://github.com/clauderic)! - Fix edge-cases in the Android input manager when text leaf nodes are deleted, such as when deleting text leaf nodes adjacent to inline void nodes.\n\n* [#5327](https://github.com/ianstormtaylor/slate/pull/5327) [`4205e0f0`](https://github.com/ianstormtaylor/slate/commit/4205e0f002929f575f34ef8bb5d3bf9d2670d9d7) Thanks [@YasinChan](https://github.com/YasinChan)! - Fix the issue of composition API and beforeinput event triggering between Chrome versions 60-75 on the Android platform.\n\n## 0.91.7\n\n### Patch Changes\n\n- [#5322](https://github.com/ianstormtaylor/slate/pull/5322) [`836f6600`](https://github.com/ianstormtaylor/slate/commit/836f660054c6fd4ced793cfa28349543b8db9890) Thanks [@edhager](https://github.com/edhager)! - Add checks to Editable selection change handler to avoid errors\n\n## 0.91.6\n\n### Patch Changes\n\n- [#5315](https://github.com/ianstormtaylor/slate/pull/5315) [`5784a38b`](https://github.com/ianstormtaylor/slate/commit/5784a38b6bd0f7de50efc890a4d6ceb8fafe191b) Thanks [@clauderic](https://github.com/clauderic)! - The `RestoreDOM` manager that is used Android no longer restores the DOM to its previous state for text mutations. This allows the editor state to be reconciled during a composition without interrupting the composition, as programatically updating the `textContent` of a text node ends the current composition.\n\n* [#5315](https://github.com/ianstormtaylor/slate/pull/5315) [`5784a38b`](https://github.com/ianstormtaylor/slate/commit/5784a38b6bd0f7de50efc890a4d6ceb8fafe191b) Thanks [@clauderic](https://github.com/clauderic)! - Fixed consumer defined `onInput` event handler not being invoked when passed to the `<Editable>` component.\n\n## 0.91.5\n\n### Patch Changes\n\n- [#5313](https://github.com/ianstormtaylor/slate/pull/5313) [`3bf568ed`](https://github.com/ianstormtaylor/slate/commit/3bf568ede2a1df91ff4f88402e0cdd848848f2fb) Thanks [@edhager](https://github.com/edhager)! - Some code clean-up in Editable.\n\n* [#5306](https://github.com/ianstormtaylor/slate/pull/5306) [`213edbbf`](https://github.com/ianstormtaylor/slate/commit/213edbbf3abc407532aeda72e40d6f01d368c33c) Thanks [@clauderic](https://github.com/clauderic)! - Use memoization to avoid unnecessary `textContent` updates in `<TextString>` component.\n\n## 0.91.4\n\n### Patch Changes\n\n- [#5310](https://github.com/ianstormtaylor/slate/pull/5310) [`b94254d6`](https://github.com/ianstormtaylor/slate/commit/b94254d694c6ea6c88cacd661e7bd77165cd2607) Thanks [@etrepum](https://github.com/etrepum)! - Fix to ensure that the latest versions of onChange and renderPlaceholder are used\n\n## 0.91.3\n\n### Patch Changes\n\n- [#5305](https://github.com/ianstormtaylor/slate/pull/5305) [`11adbf96`](https://github.com/ianstormtaylor/slate/commit/11adbf966c764ffde866be38ada2d32e00105e48) Thanks [@alex-vladut](https://github.com/alex-vladut)! - Allow pasting plain text into editable voids\n\n## 0.91.2\n\n### Patch Changes\n\n- [#5297](https://github.com/ianstormtaylor/slate/pull/5297) [`967d99eb`](https://github.com/ianstormtaylor/slate/commit/967d99eb36df798ac3163c7d15a01e64fee0668c) Thanks [@edhager](https://github.com/edhager)! - Fix memory leaks by adding clean-up code that looks for ref resets in Editable and Text.\n\n## 0.91.1\n\n### Patch Changes\n\n- [#5251](https://github.com/ianstormtaylor/slate/pull/5251) [`6fa4b954`](https://github.com/ianstormtaylor/slate/commit/6fa4b954a5e4c67cff87d00b1253b2a838c0db94) Thanks [@YaoKaiLun](https://github.com/YaoKaiLun)! - Fix the cursor jump to an unexpected position after deleting in android\n\n## 0.91.0\n\n### Minor Changes\n\n- [#5267](https://github.com/ianstormtaylor/slate/pull/5267) [`463edbd2`](https://github.com/ianstormtaylor/slate/commit/463edbd27ed78a4b4a3d38886da4d9e3e8b8efd5) Thanks [@ilya2204](https://github.com/ilya2204)! - Allow to change clipboard fragment format name\n\n* [#5271](https://github.com/ianstormtaylor/slate/pull/5271) [`9635b992`](https://github.com/ianstormtaylor/slate/commit/9635b992a0d91cecd45e3b6a883a860f14bcaaea) Thanks [@dsvgit](https://github.com/dsvgit)! - If TextComponent decorations keep the same offsets and only paths are changed, prevent re-rendering because only decoration offsets matter when leaves are calculated.\n\n## 0.90.0\n\n### Minor Changes\n\n- [#5278](https://github.com/ianstormtaylor/slate/pull/5278) [`9c4097a2`](https://github.com/ianstormtaylor/slate/commit/9c4097a26fa92718e6f4fc1f984a70fb5af42ca2) Thanks [@kylemclean](https://github.com/kylemclean)! - Revert to using inline styles for default editor styles\n\n## 0.89.0\n\n### Minor Changes\n\n- [#5275](https://github.com/ianstormtaylor/slate/pull/5275) [`5bc69d8d`](https://github.com/ianstormtaylor/slate/commit/5bc69d8d657c57eef06aeaa1fa198840d36939c7) Thanks [@12joan](https://github.com/12joan)! - Firefox: fix wrong text highlighting with double-click\n\n### Patch Changes\n\n- [#5265](https://github.com/ianstormtaylor/slate/pull/5265) [`3cf51f4d`](https://github.com/ianstormtaylor/slate/commit/3cf51f4d88e8e91faa6ab5d1f2c5f8c8e505ae89) Thanks [@kylemclean](https://github.com/kylemclean)! - Improve compatibility for browsers that do not support ResizeObserver or :where selector\n\n## 0.88.2\n\n### Patch Changes\n\n- [#5259](https://github.com/ianstormtaylor/slate/pull/5259) [`d7de564d`](https://github.com/ianstormtaylor/slate/commit/d7de564d62848dd8e14535993083c5e9aa1bfacc) Thanks [@Jacfem](https://github.com/Jacfem)! - Updates the selection correctly in readonly shadowdom\n\n* [#5252](https://github.com/ianstormtaylor/slate/pull/5252) [`179d5c92`](https://github.com/ianstormtaylor/slate/commit/179d5c926eecfdb2b3d8a75c07cb89181c348ad1) Thanks [@frellica](https://github.com/frellica)! - remove qq browser from `beforeinput` compat list because it had updated its chromium core to version 94\n\n## 0.88.0\n\n### Minor Changes\n\n- [#5226](https://github.com/ianstormtaylor/slate/pull/5226) [`0141f683`](https://github.com/ianstormtaylor/slate/commit/0141f683659025c7e851c11274cf200da05fd31e) Thanks [@laufeyrut](https://github.com/laufeyrut)! - Check if getBoundingClientRect exist before trying to call bind on it. Makes unit testing experience agains Editable nicer\n\n## 0.87.1\n\n### Patch Changes\n\n- [#5223](https://github.com/ianstormtaylor/slate/pull/5223) [`120437d6`](https://github.com/ianstormtaylor/slate/commit/120437d61237eeb8df4ed0db92af31698e910eda) Thanks [@alex-vladut](https://github.com/alex-vladut)! - Fix issue preventing editing and copy/paste into editable voids\n\n## 0.87.0\n\n### Minor Changes\n\n- [#5206](https://github.com/ianstormtaylor/slate/pull/5206) [`96b7fcdb`](https://github.com/ianstormtaylor/slate/commit/96b7fcdbf98a7c8908f5d9613d9898cb24a8ae47) Thanks [@kylemclean](https://github.com/kylemclean)! - Use stylesheet for default styles on Editable components\n\n## 0.86.0\n\n### Minor Changes\n\n- [#5121](https://github.com/ianstormtaylor/slate/pull/5121) [`06942c6d`](https://github.com/ianstormtaylor/slate/commit/06942c6d7e4b8418a467f022750b010491dbdbe7) Thanks [@laufeyrut](https://github.com/laufeyrut)! - Make it possible to copy/paste void elements\n\n## 0.83.2\n\n### Patch Changes\n\n- [#5148](https://github.com/ianstormtaylor/slate/pull/5148) [`a2b6786d`](https://github.com/ianstormtaylor/slate/commit/a2b6786d19f8bd5f779c526742a4dc3da971f696) Thanks [@ksimons](https://github.com/ksimons)! - Ensure the min-height for placeholders is set on the correct editor\n- [#5155](https://github.com/ianstormtaylor/slate/pull/5154) [`1b14de5`](https://github.com/ianstormtaylor/slate/commit/1b14de5f8e5961ac36eced229abea9abb5be71f9) Thanks [@jameshfisher](https://github.com/jameshfisher) - Revert insertText breaking change that deletes fragment\n\n## 0.83.1\n\n### Patch Changes\n\n- [#5143](https://github.com/ianstormtaylor/slate/pull/5143) [`347865ca`](https://github.com/ianstormtaylor/slate/commit/347865cafc1f2f3b0fc3d74d8758e082480df6ca) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Fix scrollIntoView when selection is collapsed inside mark placeholder\n\n## 0.83.0\n\n### Minor Changes\n\n- [#5123](https://github.com/ianstormtaylor/slate/pull/5123) [`0eb37e79`](https://github.com/ianstormtaylor/slate/commit/0eb37e79150275d3535f1694d8972751a83d826f) Thanks [@laufeyrut](https://github.com/laufeyrut)! - Make it possible to delete block elements with backspace in Chrome and Safari\n\n### Patch Changes\n\n- [#5127](https://github.com/ianstormtaylor/slate/pull/5127) [`341041f0`](https://github.com/ianstormtaylor/slate/commit/341041f0b721926cca3f9dee98dc4589f2c96797) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Cleanup and fix insertion placeholder mark compare\n\n## 0.82.2\n\n### Patch Changes\n\n- [#5120](https://github.com/ianstormtaylor/slate/pull/5120) [`9815bdab`](https://github.com/ianstormtaylor/slate/commit/9815bdabdd34221ed86f68b556cfa43d845e2db0) Thanks [@hueyhe](https://github.com/hueyhe)! - Fix editor selection out of sync in readonly mode\n\n* [#5100](https://github.com/ianstormtaylor/slate/pull/5100) [`8eb1972b`](https://github.com/ianstormtaylor/slate/commit/8eb1972b5b2f9489936b1759afb76574040af5a0) Thanks [@KittyGiraudel](https://github.com/KittyGiraudel)! - Add `aria-multiline` attribute to textbox editor\n\n- [#5105](https://github.com/ianstormtaylor/slate/pull/5105) [`55b95740`](https://github.com/ianstormtaylor/slate/commit/55b9574097f6008bda7ed8e3cb7aa9dd607d9f49) Thanks [@yume-chan](https://github.com/yume-chan)! - Change `Element` component to use callback-style ref to reliably track DOM node of rendered custom elements\n\n## 0.82.1\n\n### Patch Changes\n\n- [#5084](https://github.com/ianstormtaylor/slate/pull/5084) [`50de780b`](https://github.com/ianstormtaylor/slate/commit/50de780b1c32fa2c52ad88d42031748f9d3944e9) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Fix selection handling with slow flush in mark placeholders on android, fix auto-capitalize after placeholder\n\n* [#5091](https://github.com/ianstormtaylor/slate/pull/5091) [`e18879e7`](https://github.com/ianstormtaylor/slate/commit/e18879e728077b09580b29e9a6683aaa66629bc5) Thanks [@e1himself](https://github.com/e1himself)! - Fix `withReact()` function type definition\n\n## 0.82.0\n\n### Minor Changes\n\n- [#5041](https://github.com/ianstormtaylor/slate/pull/5041) [`9bc0b613`](https://github.com/ianstormtaylor/slate/commit/9bc0b6132aa288a37ae9a85d0e59a9d5a75ebdd7) Thanks [@bryanph](https://github.com/bryanph)! - - Introduces a `useSlateSelection` hook that triggers whenever the selection changes.\n  - This also changes the implementation of SlateContext to use an incrementing value instead of an array replace to trigger updates\n  - Introduces a `useSlateWithV` hook that includes the version counter which can be used to prevent re-renders\n\n* [#4988](https://github.com/ianstormtaylor/slate/pull/4988) [`fbab6331`](https://github.com/ianstormtaylor/slate/commit/fbab6331a5ecebd9e98c6c8c87d6f4b3b7c43bd0) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Android input handling rewrite, replace composition insert prefixes with decoration based mark placeholders\n\n## 0.81.3\n\n### Patch Changes\n\n- [#5054](https://github.com/ianstormtaylor/slate/pull/5054) [`1cc0797f`](https://github.com/ianstormtaylor/slate/commit/1cc0797f53f22e650198c83192ba5fc35c525a15) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Fix toSlatePoint in void nodes with nested editors if children are rendered as the last child\n\n* [#5042](https://github.com/ianstormtaylor/slate/pull/5042) [`11a93e65`](https://github.com/ianstormtaylor/slate/commit/11a93e65de4b197a43777e575caf13d7a05d5dc9) Thanks [@bryanph](https://github.com/bryanph)! - Upgrade next.js and source-map-loader packages\n\n## 0.81.2\n\n### Patch Changes\n\n- [#5045](https://github.com/ianstormtaylor/slate/pull/5045) [`0b2e6c79`](https://github.com/ianstormtaylor/slate/commit/0b2e6c79c08fc4eba32be7a424da758ba74573c3) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Don't native insert inside blocks with whitespace=\"pre\" containing tab chars to work around https://bugs.chromium.org/p/chromium/issues/detail?id=1219139\n\n* [#5046](https://github.com/ianstormtaylor/slate/pull/5046) [`f96b6597`](https://github.com/ianstormtaylor/slate/commit/f96b659755673375ef1b6a1cc925c73ce4934a03) Thanks [@BitPhinix](https://github.com/BitPhinix)! - fix macos accent menu when using arrow keys\n\n## 0.81.0\n\n### Minor Changes\n\n- [#4999](https://github.com/ianstormtaylor/slate/pull/4999) [`fe13a8f9`](https://github.com/ianstormtaylor/slate/commit/fe13a8f9e750569342ee004951e34233ab6614bf) Thanks [@alexandercampbell](https://github.com/alexandercampbell)! - Add new Slate.Scrubber interface to allow scrubbing end user data from exception\n  text. The default behavior remains unchanged.\n\n## 0.80.0\n\n### Patch Changes\n\n- [#5007](https://github.com/ianstormtaylor/slate/pull/5007) [`92c5730a`](https://github.com/ianstormtaylor/slate/commit/92c5730a96223a683b3c95651eb4c90a5caca21a) Thanks [@jasonphillips](https://github.com/jasonphillips)! - Revert #4876 & #4910 to restore original decorations behavior\n\n## 0.79.0\n\n### Minor Changes\n\n- [#4981](https://github.com/ianstormtaylor/slate/pull/4981) [`cb8a5515`](https://github.com/ianstormtaylor/slate/commit/cb8a551508c023346fd3aa0af1a5a80ffd6a37cd) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Add `ReactEditor.isComposing(editor)` to get the current `isComposing` state\n\n## 0.78.1\n\n### Patch Changes\n\n- [#4979](https://github.com/ianstormtaylor/slate/pull/4979) [`6afa9f6a`](https://github.com/ianstormtaylor/slate/commit/6afa9f6a719092368b92dc3342e21e44d457d77e) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Unset isComposing on keydown with isCompsing false\n\n## 0.77.4\n\n### Patch Changes\n\n- [#4965](https://github.com/ianstormtaylor/slate/pull/4965) [`a4536e2a`](https://github.com/ianstormtaylor/slate/commit/a4536e2aa2703d4c4460a54f87997ce76a722689) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Fix triple click handling in nested blocks\n\n## 0.77.3\n\n### Patch Changes\n\n- [#4957](https://github.com/ianstormtaylor/slate/pull/4957) [`c1e3fbaa`](https://github.com/ianstormtaylor/slate/commit/c1e3fbaab969f2e78303f9ba00f26b88c575cdd1) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Don't treat events with non-selection target range as native\n\n## 0.77.2\n\n### Patch Changes\n\n- [#4951](https://github.com/ianstormtaylor/slate/pull/4951) [`5b51e87d`](https://github.com/ianstormtaylor/slate/commit/5b51e87d511e3a8c05a679903650cb256f3bf044) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Fix double insert in anchor element decorations\n\n## 0.77.1\n\n### Patch Changes\n\n- [#4948](https://github.com/ianstormtaylor/slate/pull/4948) [`9957c214`](https://github.com/ianstormtaylor/slate/commit/9957c214357dbbd5492ec4761fd6e1c7b14310f5) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Prevent native insert at the end of anchor elements\n\n## 0.77.0\n\n### Minor Changes\n\n- [#4926](https://github.com/ianstormtaylor/slate/pull/4926) [`076ab9a6`](https://github.com/ianstormtaylor/slate/commit/076ab9a67a5d7bf54062e551e6c29b1464da7e99) Thanks [@Auralytical](https://github.com/Auralytical)! - Fix firefox three digit version check\n\n### Patch Changes\n\n- [#4944](https://github.com/ianstormtaylor/slate/pull/4944) [`486c385b`](https://github.com/ianstormtaylor/slate/commit/486c385bc52ae76890f67ee9e8965955a6de3f61) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Fix crash when tripple clicking editor root\n\n## 0.76.1\n\n### Patch Changes\n\n- [#4923](https://github.com/ianstormtaylor/slate/pull/4923) [`08d5a12c`](https://github.com/ianstormtaylor/slate/commit/08d5a12c9131c715ba75d3cc6f87108f8e6a8f59) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Call keyDown handler while composing\n\n* [#4920](https://github.com/ianstormtaylor/slate/pull/4920) [`f6b7ca1f`](https://github.com/ianstormtaylor/slate/commit/f6b7ca1f97bcc9e6136ab6ba6c7e9bcb1c4fd9bb) Thanks [@adri1wald](https://github.com/adri1wald)! - fix useFocused hook in react >= 17\n\n- [#4914](https://github.com/ianstormtaylor/slate/pull/4914) [`aff67312`](https://github.com/ianstormtaylor/slate/commit/aff67312cbfa7e45df5cf6abcaec9f4f7d5f1a89) Thanks [@sennpang](https://github.com/sennpang)! - Fixed Triple click selection and copy&paste in read-only mode\n\n* [#4919](https://github.com/ianstormtaylor/slate/pull/4919) [`7de7cdcf`](https://github.com/ianstormtaylor/slate/commit/7de7cdcf5625d44dbb2dc9faf52675374e51499f) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Restore user selection after applying beforeinput with target range\n\n- [#4922](https://github.com/ianstormtaylor/slate/pull/4922) [`9892cf0f`](https://github.com/ianstormtaylor/slate/commit/9892cf0ffbd741cc2880d1f0bd0d7c1b36145bbd) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Make Slate component onChange optional\n\n## 0.76.0\n\n### Minor Changes\n\n- [#4873](https://github.com/ianstormtaylor/slate/pull/4873) [`20acca4b`](https://github.com/ianstormtaylor/slate/commit/20acca4bc8f31bd1aa6fbca2c49aaae5f31cadfe) Thanks [@bryanph](https://github.com/bryanph)! - A different behavior for inserting a soft break with shift+enter is quite common in rich text editors. Right now you have to do this in onKeyDown which is not so nice. This adds a separate insertSoftBreak method on the editor instance that gets called when a soft break is inserted. This maintains the current default behavior for backwards compatibility (it just splits the block). But at least you can easily overwrite it now.\n\n  If you rely on overwriting editor.insertBreak for extra behavior for soft breaks this might be a breaking change for you and you should overwrite editor.insertSoftBreak instead.\n\n### Patch Changes\n\n- [#4901](https://github.com/ianstormtaylor/slate/pull/4901) [`5ef346fe`](https://github.com/ianstormtaylor/slate/commit/5ef346feb9e6430b3b6af66f196e5445a9ee3ff2) Thanks [@bryanph](https://github.com/bryanph)! - Fixes a bug where nodes remounted on split_node and merge_node\n\n* [#4885](https://github.com/ianstormtaylor/slate/pull/4885) [`07669dca`](https://github.com/ianstormtaylor/slate/commit/07669dca4b0641506ca857bd781c460dae7606a9) Thanks [@ryanmitts](https://github.com/ryanmitts)! - toSlatePoint should not consider a selection within a void node if the void node isn't in the editor itself.\n\n  Prior to this fix, a nested Slate editor inside a void node in a parent editor would not allow you to start typing text in a blank editor state correctly. After the first character insertion, the selection would jump back to the start of the nested editor.\n\n- [#4910](https://github.com/ianstormtaylor/slate/pull/4910) [`2a8d86f1`](https://github.com/ianstormtaylor/slate/commit/2a8d86f1a40bcc806422e6fe3658ddd810ce73a5) Thanks [@jasonphillips](https://github.com/jasonphillips)! - Fix decorations applied across nested elements\n\n## 0.75.0\n\n### Minor Changes\n\n- [#4883](https://github.com/ianstormtaylor/slate/pull/4883) [`3b3b0e32`](https://github.com/ianstormtaylor/slate/commit/3b3b0e32df4df9fb4cf1d82c0c09b7242c708169) Thanks [@always-maap](https://github.com/always-maap)! - Fix chrome and edge three digit version check\n\n## 0.74.2\n\n### Patch Changes\n\n- [#4876](https://github.com/ianstormtaylor/slate/pull/4876) [`1b205c08`](https://github.com/ianstormtaylor/slate/commit/1b205c087bef2f2360679c46801804d6d30a8139) Thanks [@nemanja-tosic](https://github.com/nemanja-tosic)! - Fix decorations not getting applied for children unless parent changes\n- [#4874](https://github.com/ianstormtaylor/slate/pull/4874) [`4d28948`](https://github.com/ianstormtaylor/slate/commit/4d28948b901b1724493dd0a782e3001149546533) Thanks [@bryanph](https://github.com/bryanph)! - Revert #4755\n\n## 0.74.1\n\n### Patch Changes\n\n- [#4868](https://github.com/ianstormtaylor/slate/pull/4868) [`7499d4b4`](https://github.com/ianstormtaylor/slate/commit/7499d4b4c01a089906a96f30f6c04256204ca65e) Thanks [@sennpang](https://github.com/sennpang)! - fixed cursor when triple clicking on text and type over it, fixes #4862\n\n## 0.74.0\n\n### Minor Changes\n\n- [#4841](https://github.com/ianstormtaylor/slate/pull/4841) [`47f2403e`](https://github.com/ianstormtaylor/slate/commit/47f2403e3a46d84b8d8f99c6e2bf41f2699e30df) Thanks [@Fibs7000](https://github.com/Fibs7000)! - Added redux-style useSlateSelector to improve and prevent unneccessary rerendering with the useSlate hook\n\n## 0.73.0\n\n### Patch Changes\n\n- [#4840](https://github.com/ianstormtaylor/slate/pull/4840) [`100448d5`](https://github.com/ianstormtaylor/slate/commit/100448d55c018351d5a5ffbe18efa207e668f1fb) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Render void spacer in readonly mode\n\n## 0.72.9\n\n### Patch Changes\n\n- [#4828](https://github.com/ianstormtaylor/slate/pull/4828) [`d5ac8237`](https://github.com/ianstormtaylor/slate/commit/d5ac82373b97e389528688ec6dbc7c72715cc360) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Reset isDraggingInternally onDragEnd and onDrop even if the event is handled by the editable handler\n\n* [#4819](https://github.com/ianstormtaylor/slate/pull/4819) [`80661509`](https://github.com/ianstormtaylor/slate/commit/80661509ecf39b5d8256fa387c7eff15f60bf612) Thanks [@ugaya40](https://github.com/ugaya40)! - Fix a possible update of react state after Slate component is unmounted\n\n## 0.72.8\n\n### Patch Changes\n\n- [#4816](https://github.com/ianstormtaylor/slate/pull/4816) [`6d62abc1`](https://github.com/ianstormtaylor/slate/commit/6d62abc1039cf93ce90bd9332a505471df8118ba) Thanks [@dylans](https://github.com/dylans)! - - Revert #4749, DOM & Slate selection are mismatching\n\n## 0.72.7\n\n### Patch Changes\n\n- [#4813](https://github.com/ianstormtaylor/slate/pull/4813) [`a5fd62dd`](https://github.com/ianstormtaylor/slate/commit/a5fd62ddd646553841a54616f7a5528e310bfd22) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Don't throw in toSlatePoint while using supressThrow if leaf has no text node\n\n* [#4798](https://github.com/ianstormtaylor/slate/pull/4798) [`3796c514`](https://github.com/ianstormtaylor/slate/commit/3796c514d6da0db8656486151147d92e73a2350a) Thanks [@hueyhe](https://github.com/hueyhe)! - Fix text not rendered on ssr\n\n- [#4809](https://github.com/ianstormtaylor/slate/pull/4809) [`e9987529`](https://github.com/ianstormtaylor/slate/commit/e9987529895d3ef2740f8f466a9ef9ce4c3e37c2) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Flush onDOMSelectionChange on onDOMBeforeInput\n\n## 0.72.6\n\n### Patch Changes\n\n- [#4796](https://github.com/ianstormtaylor/slate/pull/4796) [`5d8a1606`](https://github.com/ianstormtaylor/slate/commit/5d8a16066949981ead34466af26bcb8e4ffa994b) Thanks [@hueyhe](https://github.com/hueyhe)! - Fix text not rendered on server-side rendering\n\n## 0.72.5\n\n### Patch Changes\n\n- [#4749](https://github.com/ianstormtaylor/slate/pull/4749) [`a3dfb151`](https://github.com/ianstormtaylor/slate/commit/a3dfb151d432ec67f10847997fc71b009bcf5c00) Thanks [@Jabher](https://github.com/Jabher)! - Fix \"cannot resolve DOM point\" error when switching between multiple errors\n\n## 0.72.4\n\n### Patch Changes\n\n- [#4753](https://github.com/ianstormtaylor/slate/pull/4753) [`e9a46ad2`](https://github.com/ianstormtaylor/slate/commit/e9a46ad29e0376a45051c4a8100c5678784b785c) Thanks [@alessiogaldy](https://github.com/alessiogaldy)! - Fix \"editor.insertText never gets called inside plugins on android\"\n\n* [#4779](https://github.com/ianstormtaylor/slate/pull/4779) [`345b8fc9`](https://github.com/ianstormtaylor/slate/commit/345b8fc9e8f073674c006098bd843823309db2e2) Thanks [@alessiogaldy](https://github.com/alessiogaldy)! - Android editable updates\n\n  - Remove logic to delay handling of text insertion\n  - Call Transforms.setSelection before Editor.insertText to adjust position\n\n- [#4786](https://github.com/ianstormtaylor/slate/pull/4786) [`67aa1f10`](https://github.com/ianstormtaylor/slate/commit/67aa1f10106e15486031b4103285c7fae4373056) Thanks [@alessiogaldy](https://github.com/alessiogaldy)! - - Restore logic to delay text insertion on android\n  - Always call Trasform.setSelection before calling Editor.insertText\n\n* [#4755](https://github.com/ianstormtaylor/slate/pull/4755) [`8daa77e9`](https://github.com/ianstormtaylor/slate/commit/8daa77e9fab6b222ad796b420b86f3ec88999a39) Thanks [@jhurwitz](https://github.com/jhurwitz)! - fix useFocused hook\n\n- [#4788](https://github.com/ianstormtaylor/slate/pull/4788) [`a8c08a4e`](https://github.com/ianstormtaylor/slate/commit/a8c08a4e0107bccfe972149a512643fbbfcfb9bf) Thanks [@YasinChan](https://github.com/YasinChan)! - Android merge `Editor.insertText` logic.\n\n## 0.72.2\n\n### Patch Changes\n\n- [#4734](https://github.com/ianstormtaylor/slate/pull/4734) [`3c07a870`](https://github.com/ianstormtaylor/slate/commit/3c07a8706ef152fe35c5363a2316aa291c12c2f0) Thanks [@YasinChan](https://github.com/YasinChan)! - [AndroidEditor] Solve input association problems and add click events.\n- [#4733](https://github.com/ianstormtaylor/slate/pull/4733) [`ccafb69`](https://github.com/ianstormtaylor/slate/commit/ccafb6982f56364becc8ca39ed6c1953a5febac3) Thanks [@Schipy](https://github.com/Schipy)! - Optimize TextString rendering to support browser/OS text features, e.g. fix native spellcheck.\n\n## 0.72.1\n\n### Patch Changes\n\n- [#4720](https://github.com/ianstormtaylor/slate/pull/4720) [`1217021a`](https://github.com/ianstormtaylor/slate/commit/1217021a9a42563c9ee951ab670255c209863452) Thanks [@bryanph](https://github.com/bryanph)! - Add origin event type to setFragmentData to be able to distinguish copy, cut and drag\n\n* [#4727](https://github.com/ianstormtaylor/slate/pull/4727) [`0334851c`](https://github.com/ianstormtaylor/slate/commit/0334851cb1da3fd194278e48985166eb658eaf24) Thanks [@ahoisl](https://github.com/ahoisl)! - Fix \"Cannot resolve from DOM point\" error on onDomSelectionChange for readonly void elements\n\n## 0.72.0\n\n### Minor Changes\n\n- [#4702](https://github.com/ianstormtaylor/slate/pull/4702) [`8bc6a464`](https://github.com/ianstormtaylor/slate/commit/8bc6a464600d6820d85f55fdaf71e9ea01702eb5) Thanks [@ttitoo](https://github.com/ttitoo)! - Fix CJK IME (e.g. Chinese or Japanese) double input\n\n### Patch Changes\n\n- [#4706](https://github.com/ianstormtaylor/slate/pull/4706) [`6d194077`](https://github.com/ianstormtaylor/slate/commit/6d194077763ec0a9d5642be5cafef20e65dbce8e) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Update android restoreDOM to use partial dom restoring\n\n* [#4707](https://github.com/ianstormtaylor/slate/pull/4707) [`c020ca23`](https://github.com/ianstormtaylor/slate/commit/c020ca23b6f5d2307eb62630566ec711def89fcf) Thanks [@ahoisl](https://github.com/ahoisl)! - fix: add 'readonly' dependency for onDragStart callback\n\n## 0.71.0\n\n### Minor Changes\n\n- [#4682](https://github.com/ianstormtaylor/slate/pull/4682) [`e5380655`](https://github.com/ianstormtaylor/slate/commit/e53806557217b08bce6217b7d871cd5ae7dad31c) Thanks [@matthewkeil](https://github.com/matthewkeil)! - Support SSR for autoCorrect, spellCheck and autoCapitalize.\n  Fixes prop mismatch between server and client.\n  Removes the need to add\n  <Editable\n    spellCheck={false}\n    autoCorrect=\"false\"\n    autoCapitalize=\"false\"\n  />\n\n## 0.70.2\n\n### Patch Changes\n\n- [#4669](https://github.com/ianstormtaylor/slate/pull/4669) [`807716d7`](https://github.com/ianstormtaylor/slate/commit/807716d7dfb0fa5791cdcdfeaf4ac027a003127b) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Flush scheduleOnDOMSelectionChange on beforeinput\n\n* [#4661](https://github.com/ianstormtaylor/slate/pull/4661) [`0f194a86`](https://github.com/ianstormtaylor/slate/commit/0f194a86a08d5de07e58e20fb95c9dc760e9d52d) Thanks [@leoc4e](https://github.com/leoc4e)! - use ownerDocument to create element\n\n## 0.70.1\n\n### Patch Changes\n\n- [#4654](https://github.com/ianstormtaylor/slate/pull/4654) [`2c7750ca`](https://github.com/ianstormtaylor/slate/commit/2c7750cac5949a935a570a9590a82187673b9a44) Thanks [@anho](https://github.com/anho)! - weak guard on DataTransfer to not rely on current window\n\n* [#4652](https://github.com/ianstormtaylor/slate/pull/4652) [`95389ed7`](https://github.com/ianstormtaylor/slate/commit/95389ed7b03487aa066af277afcccba440c32f24) Thanks [@karthikcodes6](https://github.com/karthikcodes6)! - Disabled the auto scroll behaviour when the editor has any active selection\n\n- [#4650](https://github.com/ianstormtaylor/slate/pull/4650) [`b6643132`](https://github.com/ianstormtaylor/slate/commit/b6643132f1f3b64f019a601ee2f44a521c122ad3) Thanks [@e1himself](https://github.com/e1himself)! - Do not disable Grammarly extension in Slate editors\n\n## 0.70.0\n\n### Patch Changes\n\n- [#4636](https://github.com/ianstormtaylor/slate/pull/4636) [`9e8d5e2b`](https://github.com/ianstormtaylor/slate/commit/9e8d5e2b9bbff1ec7161e292635a074ba3538774) Thanks [@cmmartin](https://github.com/cmmartin)! - Fixes drop actions in editors rendered in iFrames.\n\n## 0.69.0\n\n### Minor Changes\n\n- [#4625](https://github.com/ianstormtaylor/slate/pull/4625) [`e54f2a0e`](https://github.com/ianstormtaylor/slate/commit/e54f2a0ea01ddc94f3ad14e812602b0ed824aeb3) Thanks [@echarles](https://github.com/echarles)! - insertTextData and insertFragmentData return a boolean (true if some content has been effectively inserted)\n\n## 0.68.1\n\n### Patch Changes\n\n- [#4627](https://github.com/ianstormtaylor/slate/pull/4627) [`ec01e75f`](https://github.com/ianstormtaylor/slate/commit/ec01e75fff29b3e7b710b59a6ba8106d9aa9ca5e) Thanks [@jameshfisher](https://github.com/jameshfisher)! - Fixed issues where cursor jumps to wrong location\n\n## 0.68.0\n\n### Minor Changes\n\n- [#4620](https://github.com/ianstormtaylor/slate/pull/4620) [`0b59ad54`](https://github.com/ianstormtaylor/slate/commit/0b59ad5414f682b510453696b6f45d5a46cb66bb) Thanks [@NicklasAndersson](https://github.com/NicklasAndersson)! - Support selection in readOnly=true editors.\n\n## 0.67.1\n\n### Patch Changes\n\n- [#4616](https://github.com/ianstormtaylor/slate/pull/4616) [`77d9f60a`](https://github.com/ianstormtaylor/slate/commit/77d9f60ab5e497aadf2d0c9564b1e79525984734) Thanks [@jameshfisher](https://github.com/jameshfisher)! - Fixed crash on self-deleting void node\n\n* [#4617](https://github.com/ianstormtaylor/slate/pull/4617) [`b186d3ea`](https://github.com/ianstormtaylor/slate/commit/b186d3ea12ce59c024a56fcbad4604c919757d36) Thanks [@imdbsd](https://github.com/imdbsd)! - Fix crash on drag and drop image on readOnly editable\n\n- [#4614](https://github.com/ianstormtaylor/slate/pull/4614) [`72160fac`](https://github.com/ianstormtaylor/slate/commit/72160fac08fde98d223c9dd2b4263897d23454f6) Thanks [@echarles](https://github.com/echarles)! - Add insertFragmentData and insertTextData to the ReactEditor API\n\n## 0.67.0\n\n### Minor Changes\n\n- [#4540](https://github.com/ianstormtaylor/slate/pull/4540) [`11ef83b4`](https://github.com/ianstormtaylor/slate/commit/11ef83b47fca84d1f908b5c9eeefada516fe9fed) Thanks [@bryanph](https://github.com/bryanph)! - The Slate Provider's \"value\" prop is now only used as initial state for editor.children as was intended before. If your code relies on replacing editor.children you should do so by replacing it directly instead of relying on the \"value\" prop to do this for you.\n\n### Patch Changes\n\n- [#4577](https://github.com/ianstormtaylor/slate/pull/4577) [`4b2e4000`](https://github.com/ianstormtaylor/slate/commit/4b2e4000d6253bd86fab237b6f2c70e9f8d30f09) Thanks [@jameshfisher](https://github.com/jameshfisher)! - Fixed a bug that removed the selection when hovering over a non-selectable DOM element\n\n* [#4605](https://github.com/ianstormtaylor/slate/pull/4605) [`87ab2efa`](https://github.com/ianstormtaylor/slate/commit/87ab2efa41a5b7a1324b3fc97117a1cdd3b41d66) Thanks [@jaked](https://github.com/jaked)! - defer native events within Editable to avoid bugs with Editor\n\n- [#4584](https://github.com/ianstormtaylor/slate/pull/4584) [`f40e515d`](https://github.com/ianstormtaylor/slate/commit/f40e515dc7f956b7fd859688c0170f2c1763fecf) Thanks [@jameshfisher](https://github.com/jameshfisher)! - Fixed bug: setting selection from `contentEditable:false` element causes crash\n\n## 0.66.7\n\n### Patch Changes\n\n- [#4588](https://github.com/ianstormtaylor/slate/pull/4588) [`ae65ae5f`](https://github.com/ianstormtaylor/slate/commit/ae65ae5f717c877eee0e3f839b76fc18d8b44999) Thanks [@jaked](https://github.com/jaked)! - revert #4455 / #4512; fix triple-click by unhanging range with void\n\n## 0.66.6\n\n### Patch Changes\n\n- [#4556](https://github.com/ianstormtaylor/slate/pull/4556) [`b1084918`](https://github.com/ianstormtaylor/slate/commit/b10849182086699d4bb18209a37ea6247f712bd0) Thanks [@jaked](https://github.com/jaked)! - fix forced update in TextString in case of double render\n\n## 0.66.4\n\n### Patch Changes\n\n- [#4304](https://github.com/ianstormtaylor/slate/pull/4304) [`7ba486aa`](https://github.com/ianstormtaylor/slate/commit/7ba486aa397411a3e83ab636b0982167d95319c0) Thanks [@davidruisinger](https://github.com/davidruisinger)! - Fixed a bug where text was typed backwards within nested editor\n\n## 0.66.3\n\n### Patch Changes\n\n- [#4547](https://github.com/ianstormtaylor/slate/pull/4547) [`677da0ca`](https://github.com/ianstormtaylor/slate/commit/677da0ca87ffefb36676200fee5cf5cf0136b22e) Thanks [@clauderic](https://github.com/clauderic)! - Fixed a bug that caused the editor to be unable to resolve a Slate point from a DOM point when selecting an entire document that ended in a new line in Firefox.\n\n* [#4526](https://github.com/ianstormtaylor/slate/pull/4526) [`bc85497d`](https://github.com/ianstormtaylor/slate/commit/bc85497d58dc2eddb0918eed4c7d25d040fa653f) Thanks [@VictorBaron](https://github.com/VictorBaron)! - Fix - delete selected inline void in chrome\n\n- [#4549](https://github.com/ianstormtaylor/slate/pull/4549) [`f9c41a56`](https://github.com/ianstormtaylor/slate/commit/f9c41a569cab2000bd14df5f516c80089b3bf0ac) Thanks [@nemanja-tosic](https://github.com/nemanja-tosic)! - Fix deletion of expanded range (#4546)\n\n## 0.66.2\n\n### Patch Changes\n\n- [#4529](https://github.com/ianstormtaylor/slate/pull/4529) [`bd80a0b8`](https://github.com/ianstormtaylor/slate/commit/bd80a0b8dc108a05addb6e599b7f6272acc8aa57) Thanks [@nemanja-tosic](https://github.com/nemanja-tosic)! - Fix erroneous text after native insert\n\n## 0.66.1\n\n### Patch Changes\n\n- [#4514](https://github.com/ianstormtaylor/slate/pull/4514) [`8b5dbc3d`](https://github.com/ianstormtaylor/slate/commit/8b5dbc3dc7716b51b74a3b7a3dbe2609642f2f6c) Thanks [@dylans](https://github.com/dylans)! - fix(react-editor): reset focus offset when triple clicking\n\n## 0.66.0\n\n### Minor Changes\n\n- [#3888](https://github.com/ianstormtaylor/slate/pull/3888) [`25afbd43`](https://github.com/ianstormtaylor/slate/commit/25afbd43001cdee852af6386d2b701d943b788da) Thanks [@bkrausz](https://github.com/bkrausz)! - Use native character insertion to fix browser/OS text features\n\n### Patch Changes\n\n- [#4475](https://github.com/ianstormtaylor/slate/pull/4475) [`c1433f56`](https://github.com/ianstormtaylor/slate/commit/c1433f56cfe13feb826264989bb4f68a0eefab62) Thanks [@skogsmaskin](https://github.com/skogsmaskin)! - [slate-react]: fix selection bugs when multiple editors share value\n\n* [#4132](https://github.com/ianstormtaylor/slate/pull/4132) [`48b71294`](https://github.com/ianstormtaylor/slate/commit/48b7129447347c9cf7a0535026287896ef59779b) Thanks [@ulion](https://github.com/ulion)! - Make onDomSelectionChange trigger after onClick.\n\n- [#4493](https://github.com/ianstormtaylor/slate/pull/4493) [`3dd74dd5`](https://github.com/ianstormtaylor/slate/commit/3dd74dd58daa907bfa1fb44bc5655ae2fc8ddb35) Thanks [@dylans](https://github.com/dylans)! - Update error message for useSlate\n\n* [#4450](https://github.com/ianstormtaylor/slate/pull/4450) [`220f2d2c`](https://github.com/ianstormtaylor/slate/commit/220f2d2ce6dffcc1a0f2ea1e8725601b8ea1949b) Thanks [@neko-neko](https://github.com/neko-neko)! - Changed so that the onKeyDown event do not fired while IME converting.\n\n- [#4452](https://github.com/ianstormtaylor/slate/pull/4452) [`935b3a79`](https://github.com/ianstormtaylor/slate/commit/935b3a79d6ec7d7e8f20804b2703e984e9c396e0) Thanks [@dylans](https://github.com/dylans)! - double ime fix for qq browser\n\n* [#4500](https://github.com/ianstormtaylor/slate/pull/4500) [`50bb3d7e`](https://github.com/ianstormtaylor/slate/commit/50bb3d7e32d640957018831526235ca656963f1d) Thanks [@tubbo](https://github.com/tubbo)! - Upgrade `is-plain-object` to v5.0.0\n\n- [#4480](https://github.com/ianstormtaylor/slate/pull/4480) [`e51566ad`](https://github.com/ianstormtaylor/slate/commit/e51566ada84cfa107c445cc6f3908e78c18656b6) Thanks [@imdbsd](https://github.com/imdbsd)! - Add key for Children SelectedContext.Provider\n\n* [#4454](https://github.com/ianstormtaylor/slate/pull/4454) [`d06706c9`](https://github.com/ianstormtaylor/slate/commit/d06706c9e15bbbdd7cdd9a1bbb38c87d37c85ea1) Thanks [@imdbsd](https://github.com/imdbsd)! - Fix to read fragment from data-slate-fragment when application/x-slate-fragment is missing\n\n- [#4460](https://github.com/ianstormtaylor/slate/pull/4460) [`ace397f9`](https://github.com/ianstormtaylor/slate/commit/ace397f96602d93ab9216e3d3434f55eef981e4d) Thanks [@dylans](https://github.com/dylans)! - fix double character insertion regression due to unnecessary memo\n\n* [#4451](https://github.com/ianstormtaylor/slate/pull/4451) [`8e4120ae`](https://github.com/ianstormtaylor/slate/commit/8e4120ae315151705152e62944737ca4f62ad446) Thanks [@githoniel](https://github.com/githoniel)! - fix IME double input with editor mark\n\n- [#4503](https://github.com/ianstormtaylor/slate/pull/4503) [`2065c5bd`](https://github.com/ianstormtaylor/slate/commit/2065c5bdfd0de9f7d5ea049b23cd22b71bb80225) Thanks [@bytrangle](https://github.com/bytrangle)! - Fix incorrect selection when triple clicking blocks in Editable component\n\n* [#4433](https://github.com/ianstormtaylor/slate/pull/4433) [`a1f925bd`](https://github.com/ianstormtaylor/slate/commit/a1f925bddfb8e4507977b3449972d4521d05b148) Thanks [@imdbsd](https://github.com/imdbsd)! - Fix copy-paste a slate fragment on android editable\n\n- [#4365](https://github.com/ianstormtaylor/slate/pull/4365) [`906e5af1`](https://github.com/ianstormtaylor/slate/commit/906e5af1b1af07454da0a93490fca70b58fd9986) Thanks [@samarsault](https://github.com/samarsault)! - fix a bug where element selections were not captured by useSelected\n\n* [#4342](https://github.com/ianstormtaylor/slate/pull/4342) [`834ce348`](https://github.com/ianstormtaylor/slate/commit/834ce3483dc407a6293ba29cac8f192c13f57b01) Thanks [@imdbsd](https://github.com/imdbsd)! - Fix editor mark is not inserted on android\n\n## 0.65.3\n\n### Patch Changes\n\n- [#4175](https://github.com/ianstormtaylor/slate/pull/4175) [`bde6e804`](https://github.com/ianstormtaylor/slate/commit/bde6e80476ee0ba7a14c8c7625b51de9e58bb170) Thanks [@gyh9457](https://github.com/gyh9457)! - Fixed a bug in the memoization logic for the leaves of text nodes.\n\n* [#4394](https://github.com/ianstormtaylor/slate/pull/4394) [`01889807`](https://github.com/ianstormtaylor/slate/commit/0188980796b7a4b23ef2ee9e7e468532c1f5c8c4) Thanks [@jaked](https://github.com/jaked)! - fix bug where decorate is not called on immediate children of editor\n\n- [#4049](https://github.com/ianstormtaylor/slate/pull/4049) [`6c844227`](https://github.com/ianstormtaylor/slate/commit/6c8442272105ec78b88d38efecb7aab9bb4e41de) Thanks [@ulion](https://github.com/ulion)! - Fix ios chrome ime double input issue.\n\n* [#4427](https://github.com/ianstormtaylor/slate/pull/4427) [`3f69a9f3`](https://github.com/ianstormtaylor/slate/commit/3f69a9f3951b5beca77b065aaa5eba0737e68a8e) Thanks [@ben10code](https://github.com/ben10code)! - Fix crash when unmounting an editor rendered within a React portal. The issue was arising at unmount time, because `getRootNode` returned the dettached portal node and it is not an instance of `Document` or `ShadowRoot`. As a fix, `getDocumentOrShadowRoot` has been refactored to return a root node instead of throwing. In sum, this patch fixes a regression bug introduced by https://github.com/ianstormtaylor/slate/pull/3749/\n\n- [#4369](https://github.com/ianstormtaylor/slate/pull/4369) [`c217dbb5`](https://github.com/ianstormtaylor/slate/commit/c217dbb5b9190753298bbc117a49af940a3a0d53) Thanks [@thesunny](https://github.com/thesunny)! - Scroll when inserting new text will now scroll parent scrollables\n\n* [#4333](https://github.com/ianstormtaylor/slate/pull/4333) [`e0776c5c`](https://github.com/ianstormtaylor/slate/commit/e0776c5c923f1fb33a130599e558e6dffdde40f4) Thanks [@dylans](https://github.com/dylans)! - Allow setFragmentData to work without copy/paste or DnD data structure\n\n- [#4421](https://github.com/ianstormtaylor/slate/pull/4421) [`237edc6e`](https://github.com/ianstormtaylor/slate/commit/237edc6ea616c9171611e632e146872a245bdb0e) Thanks [@jaked](https://github.com/jaked)! - fix decorate bug (#4277) without adding extra layers of render tree\n\n* [#4347](https://github.com/ianstormtaylor/slate/pull/4347) [`46c8871c`](https://github.com/ianstormtaylor/slate/commit/46c8871c9cafd3017b2c9afff9b36f0527c2205f) Thanks [@aiwenar](https://github.com/aiwenar)! - Re-render leaf when new properties were added to it\n\n- [#4352](https://github.com/ianstormtaylor/slate/pull/4352) [`4b373dc2`](https://github.com/ianstormtaylor/slate/commit/4b373dc29055a6fb3e2cdb26dd4cd023787603a5) Thanks [@hueyhe](https://github.com/hueyhe)! - Do not display placeholder when composing\n\n## 0.65.2\n\n### Patch Changes\n\n- [#4331](https://github.com/ianstormtaylor/slate/pull/4331) [`a3bc97af`](https://github.com/ianstormtaylor/slate/commit/a3bc97af3e3bc88ccf9ab7eadb1a56c0bc92f436) Thanks [@golota60](https://github.com/golota60)! - Fix deletion of selected inline void nodes in Safari when presssing `backspace` or `delete`. This is a bug that [was originally fixed only for Google Chrome](https://github.com/ianstormtaylor/slate/issues/3456), but the fix also needs to be applied in Safari.\n\n## 0.65.1\n\n### Patch Changes\n\n- [#4324](https://github.com/ianstormtaylor/slate/pull/4324) [`61171a23`](https://github.com/ianstormtaylor/slate/commit/61171a23821b882116deabceec15f7e2649d271c) Thanks [@clauderic](https://github.com/clauderic)! - Fix backward typing bug in Safari by ensuring the selection is always removed on blur.\n  Safari doesn't always remove the selection, even if the contenteditable element no longer has focus.\n  In this scenario, we need to forcefully remove the selection on blur.\n  Refer to https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n\n## 0.65.0\n\n### Minor Changes\n\n- [#4299](https://github.com/ianstormtaylor/slate/pull/4299) [`2c17e2b7`](https://github.com/ianstormtaylor/slate/commit/2c17e2b7f9dbfa4a821b05668bd00f465da175ad) Thanks [@georgberecz](https://github.com/georgberecz)! - Allow custom event handlers on Editable component to return boolean flag to specify whether the event can be treated as being handled.\n\n  By default, the `Editable` component comes with a set of event handlers that handle typical rich-text editing behaviors (for example, it implements its own `onCopy`, `onPaste`, `onDrop`, and `onKeyDown` handlers).\n\n  In some cases you may want to extend or override Slate's default behavior, which can be done by passing your own event handler(s) to the `Editable` component.\n\n  Your custom event handler can control whether or not Slate should execute its own event handling for a given event after your handler runs depending on the return value of your event handler as described below.\n\n  ```jsx\n  import {Editable} from 'slate-react';\n\n  function MyEditor() {\n    const onClick = event => {\n      // Implement custom event logic...\n\n      // When no value is returned, Slate will execute its own event handler when\n      // neither isDefaultPrevented nor isPropagationStopped was set on the event\n    };\n\n    const onDrop = event => {\n      // Implement custom event logic...\n\n      // No matter the state of the event, treat it as being handled by returning\n      // true here, Slate will skip its own event handler\n      return true;\n    };\n\n    const onDragStart = event => {\n      // Implement custom event logic...\n\n      // No matter the status of the event, treat event as *not* being handled by\n      // returning false, Slate will exectue its own event handler afterward\n      return false;\n    };\n\n    return (\n      <Editable\n        onClick={onClick}\n        onDrop={onDrop}\n        onDragStart={onDragStart}\n        {/*...*/}\n      />\n    )\n  }\n  ```\n\n### Patch Changes\n\n- [#4266](https://github.com/ianstormtaylor/slate/pull/4266) [`411e5a19`](https://github.com/ianstormtaylor/slate/commit/411e5a193bd639fb743c2253a5f5e43a5949b100) Thanks [@TheSpyder](https://github.com/TheSpyder)! - Removed accidental bundling of `slate-history` inside `slate-react`\n\n* [#4307](https://github.com/ianstormtaylor/slate/pull/4307) [`a7e3a181`](https://github.com/ianstormtaylor/slate/commit/a7e3a18187d1c29744d78875542abd035220ebdc) Thanks [@clauderic](https://github.com/clauderic)! - Fix deletion of selected inline void nodes in Chrome. Chrome does not fire a `beforeinput` event when deleting backwards within an inline void node, so we need to add special logic to handle this edge-case for Chrome only.\n\n- [#4272](https://github.com/ianstormtaylor/slate/pull/4272) [`294d5120`](https://github.com/ianstormtaylor/slate/commit/294d5120aed89f4e1c7a818e0d1339f4fa1cbaf5) Thanks [@clauderic](https://github.com/clauderic)! - Fix errors accessing `globalThis` in browsers that do not implement it\n\n* [#4295](https://github.com/ianstormtaylor/slate/pull/4295) [`dfc03960`](https://github.com/ianstormtaylor/slate/commit/dfc039601f7b4d74592dfe39c31b67c0f0619bca) Thanks [@dubzzz](https://github.com/dubzzz)! - Fix React warnings related to `autoCorrect` and `autoCapitalize` attributes being passed as a boolean instead of a string.\n\n- [#4271](https://github.com/ianstormtaylor/slate/pull/4271) [`ff267767`](https://github.com/ianstormtaylor/slate/commit/ff267767f61577fdbd68119a1c978e9856e3bb31) Thanks [@omerg](https://github.com/omerg)! - Fixed typo: Renamed `toSlatePoint` argument `extractMatch` to `exactMatch`\n\n## 0.64.0\n\n### Minor Changes\n\n- [#4257](https://github.com/ianstormtaylor/slate/pull/4257) [`4f0d1120`](https://github.com/ianstormtaylor/slate/commit/4f0d1120d46d1024d94e3c2742026f6c54357e1f) Thanks [@clauderic](https://github.com/clauderic)! - Added support for Android devices using a `MutationObserver` based reconciliation layer.\n\n  Bugs should be expected; translating mutations into a set of operations that need to be reconciled onto the Slate model is not an absolute science, and requires a lot of guesswork and handling of edge cases. There are still edge cases that aren't being handled.\n\n  This reconciliation layer aims to support Android 10 and 11. Earlier versions of Android work to a certain extent, but have more bugs and edge cases that currently aren't well supported.\n\n## 0.63.0\n\n### Patch Changes\n\n- [#4238](https://github.com/ianstormtaylor/slate/pull/4238) [`c14e1fbc`](https://github.com/ianstormtaylor/slate/commit/c14e1fbc77c51f7928ba8ab089c76f3e3438fb97) Thanks [@clauderic](https://github.com/clauderic)! - Fix duplicated content and other bugs related to drag and drop handling\n\n* [#4237](https://github.com/ianstormtaylor/slate/pull/4237) [`623960a7`](https://github.com/ianstormtaylor/slate/commit/623960a7d14103b8cebe667019b4de5f8ad1fd61) Thanks [@dylans](https://github.com/dylans)! - Fixed text insertion logic to prevent crashing in newer Firefox versions.\n\n## 0.62.1\n\n### Patch Changes\n\n- [#4118](https://github.com/ianstormtaylor/slate/pull/4118) [`6a137633`](https://github.com/ianstormtaylor/slate/commit/6a1376332bbd2567336c444c57c1e64fdf706feb) Thanks [@kamilkazmierczak](https://github.com/kamilkazmierczak)! - Improved detection of legacy browsers that don't have proper `beforeinput` support.\n\n* [#4190](https://github.com/ianstormtaylor/slate/pull/4190) [`ea2eefef`](https://github.com/ianstormtaylor/slate/commit/ea2eefefb84365eb969e91151afc861e0dbefefd) Thanks [@juliankrispel](https://github.com/juliankrispel)! - Added a `renderPlaceholder` prop to the `<Editable>` component for customizing how placeholders are rendered.\n\n- [#4157](https://github.com/ianstormtaylor/slate/pull/4157) [`de5cc7e5`](https://github.com/ianstormtaylor/slate/commit/de5cc7e5ed97fdca9e3766a8d947ab6391e6ccb2) Thanks [@githoniel](https://github.com/githoniel)! - Fixed a bug when syncing the selection for IME-based editing.\n\n* [#4158](https://github.com/ianstormtaylor/slate/pull/4158) [`ea6dc089`](https://github.com/ianstormtaylor/slate/commit/ea6dc08913d9dd671eeb05796dca522a4a35904e) Thanks [@githoniel](https://github.com/githoniel)! - Fixed a bug that resulted in doubly-input characters when using an IME.\n\n- [#4211](https://github.com/ianstormtaylor/slate/pull/4211) [`1c32b97d`](https://github.com/ianstormtaylor/slate/commit/1c32b97d23138d301e9ecb567263e3001cc4dbfa) Thanks [@clauderic](https://github.com/clauderic)! - Collapse expanded selection before handling `moveWordBackward` (`alt + left`) and `moveWordForward` (`alt + right`) hotkeys.\n\n* [#4219](https://github.com/ianstormtaylor/slate/pull/4219) [`737aaa9c`](https://github.com/ianstormtaylor/slate/commit/737aaa9cde2d4a2d6d64b83256aa5d9d1b5ce720) Thanks [@juliankrispel](https://github.com/juliankrispel)! - Fixes error that occurs when Editor is rendered inside iframe\n\n## 0.62.0\n\n### Minor Changes\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - **Add directional awareness to `Editor.deleteFragment`.** This is an obscure change, but is a required distinction when implementing features that need to \"fake delete\" content (like Google Docs's suggestions). Previously deleting always collapsed to the end of a range, but now it can collapse forwards as well.\n\n* [#4154](https://github.com/ianstormtaylor/slate/pull/4154) [`7283c51f`](https://github.com/ianstormtaylor/slate/commit/7283c51feb83cb8522bc16efce09bb01c29400b9) Thanks [@ianstormtaylor](https://github.com/ianstormtaylor)! - **Start using [🦋 Changesets](https://github.com/atlassian/changesets) to manage releases.** Going forward, whenever a pull request is made that fixes or adds functionality to Slate, it will need to be accompanied by a changset Markdown file describing the change. These files will be automatically used in the release process when bump the versions of Slate and compiling the changelog.\n\n### Patch Changes\n\n- [#4150](https://github.com/ianstormtaylor/slate/pull/4150) [`bbd7d9c3`](https://github.com/ianstormtaylor/slate/commit/bbd7d9c33023add223ef9f1a33b657a468552caf) Thanks [@nivekithan](https://github.com/nivekithan)! - Added support for using the new `beforeInput` events in the latest Firefox.\n\n* [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed spellcheck disabling logic to always work in older versions of Firefox.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed browser-detection behavior to work with Deno.\n\n* [`d5589279`](https://github.com/ianstormtaylor/slate/commit/d5589279e8792185c1082af720a73f55b16797dd) - Updated placeholder styles to allow for wrapping long placeholder text.\n\n- [#3698](https://github.com/ianstormtaylor/slate/pull/3698) [`bf83f333`](https://github.com/ianstormtaylor/slate/commit/bf83f333e689bc17b96504b497bb7fcdf6dc7fc1) Thanks [@pubuzhixing8](https://github.com/pubuzhixing8)! - Fixed selection updating with IME inputs in browsers that support `beforeinput`.\n\n* [#3652](https://github.com/ianstormtaylor/slate/pull/3652) [`f3fb40cc`](https://github.com/ianstormtaylor/slate/commit/f3fb40cce044b73b6da13013f90bd7018f2f5d8a) Thanks [@Andarist](https://github.com/Andarist)! - Fixed selection logic when a controlled editor's nodes change out from under it.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed a bug where memoization logic would prevent placeholders from re-rendering properly.\n\n* [#3326](https://github.com/ianstormtaylor/slate/pull/3326) [`d5b2d7f5`](https://github.com/ianstormtaylor/slate/commit/d5b2d7f55e2982019b246fdea1e9eb845d0e2fc2) Thanks [@rockettomatooo](https://github.com/rockettomatooo)! - Added invariants when passing invalud `value` or `editor` props to `<Editable>`.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed cursor movement in RTL text.\n\n* [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed a bug in the conversion of DOM points to Slate points.\n\n- [#3746](https://github.com/ianstormtaylor/slate/pull/3746) [`f8be509e`](https://github.com/ianstormtaylor/slate/commit/f8be509e4d0b5c13bb791e0fd5702242319d114f) Thanks [@gztomas](https://github.com/gztomas)! - Fixed auto-scrolling behavior when a block is bigger than the viewport.\n\n* [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed a bug that occurred when using Babel's `loose` mode.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed deleting void elements when using cut-and-paste.\n\n* [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed a bug that crashed the editor when using IME input.\n\n- [#3396](https://github.com/ianstormtaylor/slate/pull/3396) [`469e6b26`](https://github.com/ianstormtaylor/slate/commit/469e6b26f50857ef0d68cdf5a54793f8fe9033fd) Thanks [@cvlmtg](https://github.com/cvlmtg)! - Fixed allowing the `onPaste` handler to be overridden in all browsers.\n\n* [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed internal decoration logic to be faster and require fewer re-renders.\n\n- [#3894](https://github.com/ianstormtaylor/slate/pull/3894) [`7fe41f15`](https://github.com/ianstormtaylor/slate/commit/7fe41f156614453479cb9ea649fe5665b616d3a7) Thanks [@msc117](https://github.com/msc117)! - Fixed an error that happened when selecting void nodes in a read-only editor.\n\n* [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed `move_node` operations to not always require a full re-render.\n\n- [`d5589279`](https://github.com/ianstormtaylor/slate/commit/d5589279e8792185c1082af720a73f55b16797dd) - Fixed normalization of DOM points to be more accurate when triple-clicking.\n\n* [`d5589279`](https://github.com/ianstormtaylor/slate/commit/d5589279e8792185c1082af720a73f55b16797dd) - Fixed a bug that prevented `isFocused` from updating on certain focus changes.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed IME input to not insert repeated characters.\n\n* [#3749](https://github.com/ianstormtaylor/slate/pull/3749) [`0473d0bf`](https://github.com/ianstormtaylor/slate/commit/0473d0bf93808b0e4e98abe833b7f7f4f5aff3b1) Thanks [@davidruisinger](https://github.com/davidruisinger)! - Fixes Slate to work with the Shadow DOM.\n\n- [`c6002024`](https://github.com/ianstormtaylor/slate/commit/c60020244b9d25094edb0ffcca8b49dead9b31dc) - Fixed deleting by line to account for the line breaks in the browser.\n"
  },
  {
    "path": "packages/slate-react/Readme.md",
    "content": "This package contains the React-specific logic for Slate. It's separated further into a series of directories:\n\n- [**Components**](./src/components) — containing the React components for rendering Slate editors.\n- [**Hooks**](./src/hooks) — containing a few React hooks for Slate editors.\n- [**Plugins**](./src/plugin) — containing the React-specific plugins for Slate editors.\n- [**Utils**](./src/utils) — containing a few private convenience modules.\n\nFeel free to poke around in each of them to learn more!\n"
  },
  {
    "path": "packages/slate-react/package.json",
    "content": "{\n  \"name\": \"slate-react\",\n  \"description\": \"Tools for building completely customizable richtext editors with React.\",\n  \"version\": \"0.123.0\",\n  \"license\": \"MIT\",\n  \"repository\": \"git://github.com/ianstormtaylor/slate.git\",\n  \"main\": \"dist/index.js\",\n  \"module\": \"dist/index.es.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"umd\": \"dist/slate-react.js\",\n  \"umdMin\": \"dist/slate-react.min.js\",\n  \"sideEffects\": false,\n  \"files\": [\n    \"dist/\"\n  ],\n  \"dependencies\": {\n    \"@juggle/resize-observer\": \"^3.4.0\",\n    \"direction\": \"^1.0.4\",\n    \"is-hotkey\": \"^0.2.0\",\n    \"lodash\": \"^4.17.21\",\n    \"scroll-into-view-if-needed\": \"^3.1.0\",\n    \"tiny-invariant\": \"1.3.1\"\n  },\n  \"devDependencies\": {\n    \"@babel/runtime\": \"^7.23.2\",\n    \"@testing-library/jest-dom\": \"^6.6.3\",\n    \"@testing-library/react\": \"^14.0.0\",\n    \"@types/is-hotkey\": \"^0.1.8\",\n    \"@types/jest\": \"29.5.6\",\n    \"@types/jsdom\": \"^21.1.4\",\n    \"@types/lodash\": \"^4.14.200\",\n    \"@types/react\": \"^18.2.41\",\n    \"@types/react-dom\": \"^18.2.17\",\n    \"@types/resize-observer-browser\": \"^0.1.8\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"slate\": \"^0.123.0\",\n    \"slate-dom\": \"^0.123.0\",\n    \"slate-hyperscript\": \"^0.115.0\",\n    \"source-map-loader\": \"^4.0.1\"\n  },\n  \"peerDependencies\": {\n    \"react\": \">=18.2.0\",\n    \"react-dom\": \">=18.2.0\",\n    \"slate\": \">=0.121.0\",\n    \"slate-dom\": \">=0.119.1\"\n  },\n  \"umdGlobals\": {\n    \"react\": \"React\",\n    \"slate\": \"Slate\"\n  },\n  \"keywords\": [\n    \"canvas\",\n    \"contenteditable\",\n    \"docs\",\n    \"document\",\n    \"edit\",\n    \"editor\",\n    \"editable\",\n    \"html\",\n    \"immutable\",\n    \"markdown\",\n    \"medium\",\n    \"paper\",\n    \"react\",\n    \"rich\",\n    \"richtext\",\n    \"richtext\",\n    \"slate\",\n    \"text\",\n    \"wysiwyg\",\n    \"wysiwym\"\n  ]\n}\n"
  },
  {
    "path": "packages/slate-react/src/@types/direction.d.ts",
    "content": "declare module 'direction' {\n  function direction(text: string): 'neutral' | 'ltr' | 'rtl'\n  export default direction\n}\n"
  },
  {
    "path": "packages/slate-react/src/chunking/children-helper.ts",
    "content": "import { Editor, Descendant } from 'slate'\nimport { Key } from 'slate-dom'\nimport { ChunkLeaf } from './types'\nimport { ReactEditor } from '../plugin/react-editor'\n\n/**\n * Traverse an array of children, providing helpers useful for reconciling the\n * children array with a chunk tree\n */\nexport class ChildrenHelper {\n  private editor: Editor\n  private children: Descendant[]\n\n  /**\n   * Sparse array of Slate node keys, each index corresponding to an index in\n   * the children array\n   *\n   * Fetching the key for a Slate node is expensive, so we cache them here.\n   */\n  private cachedKeys: Array<Key | undefined>\n\n  /**\n   * The index of the next node to be read in the children array\n   */\n  public pointerIndex: number\n\n  constructor(editor: Editor, children: Descendant[]) {\n    this.editor = editor\n    this.children = children\n    this.cachedKeys = new Array(children.length)\n    this.pointerIndex = 0\n  }\n\n  /**\n   * Read a given number of nodes, advancing the pointer by that amount\n   */\n  public read(n: number): Descendant[] {\n    // PERF: If only one child was requested (the most common case), use array\n    // indexing instead of slice\n    if (n === 1) {\n      return [this.children[this.pointerIndex++]]\n    }\n\n    const slicedChildren = this.remaining(n)\n    this.pointerIndex += n\n\n    return slicedChildren\n  }\n\n  /**\n   * Get the remaining children without advancing the pointer\n   *\n   * @param [maxChildren] Limit the number of children returned.\n   */\n  public remaining(maxChildren?: number): Descendant[] {\n    if (maxChildren === undefined) {\n      return this.children.slice(this.pointerIndex)\n    }\n\n    return this.children.slice(\n      this.pointerIndex,\n      this.pointerIndex + maxChildren\n    )\n  }\n\n  /**\n   * Whether all children have been read\n   */\n  public get reachedEnd() {\n    return this.pointerIndex >= this.children.length\n  }\n\n  /**\n   * Determine whether a node with a given key appears in the unread part of the\n   * children array, and return its index relative to the current pointer if so\n   *\n   * Searching for the node object itself using indexOf is most efficient, but\n   * will fail to locate nodes that have been modified. In this case, nodes\n   * should be identified by their keys instead.\n   *\n   * Searching an array of keys using indexOf is very inefficient since fetching\n   * the keys for all children in advance is very slow. Insead, if the node\n   * search fails to return a value, fetch the keys of each remaining child one\n   * by one and compare it to the known key.\n   */\n  public lookAhead(node: Descendant, key: Key) {\n    const elementResult = this.children.indexOf(node, this.pointerIndex)\n    if (elementResult > -1) return elementResult - this.pointerIndex\n\n    for (let i = this.pointerIndex; i < this.children.length; i++) {\n      const candidateNode = this.children[i]\n      const candidateKey = this.findKey(candidateNode, i)\n      if (candidateKey === key) return i - this.pointerIndex\n    }\n\n    return -1\n  }\n\n  /**\n   * Convert an array of Slate nodes to an array of chunk leaves, each\n   * containing the node and its key\n   */\n  public toChunkLeaves(nodes: Descendant[], startIndex: number): ChunkLeaf[] {\n    return nodes.map((node, i) => ({\n      type: 'leaf',\n      node,\n      key: this.findKey(node, startIndex + i),\n      index: startIndex + i,\n    }))\n  }\n\n  /**\n   * Get the key for a Slate node, cached using the node's index\n   */\n  private findKey(node: Descendant, index: number): Key {\n    const cachedKey = this.cachedKeys[index]\n    if (cachedKey) return cachedKey\n    const key = ReactEditor.findKey(this.editor, node)\n    this.cachedKeys[index] = key\n    return key\n  }\n}\n"
  },
  {
    "path": "packages/slate-react/src/chunking/chunk-tree-helper.ts",
    "content": "import { Path } from 'slate'\nimport { Key } from 'slate-dom'\nimport {\n  Chunk,\n  ChunkTree,\n  ChunkLeaf,\n  ChunkDescendant,\n  ChunkAncestor,\n} from './types'\n\ntype SavedPointer =\n  | 'start'\n  | {\n      chunk: ChunkAncestor\n      node: ChunkDescendant\n    }\n\nexport interface ChunkTreeHelperOptions {\n  chunkSize: number\n  debug?: boolean\n}\n\n/**\n * Traverse and modify a chunk tree\n */\nexport class ChunkTreeHelper {\n  /**\n   * The root of the chunk tree\n   */\n  private root: ChunkTree\n\n  /**\n   * The ideal size of a chunk\n   */\n  private chunkSize: number\n\n  /**\n   * Whether debug mode is enabled\n   *\n   * If enabled, the pointer state will be checked for internal consistency\n   * after each mutating operation.\n   */\n  private debug: boolean\n\n  /**\n   * Whether the traversal has reached the end of the chunk tree\n   *\n   * When this is true, the pointerChunk and pointerIndex point to the last\n   * top-level node in the chunk tree, although pointerNode returns null.\n   */\n  private reachedEnd: boolean\n\n  /**\n   * The chunk containing the current node\n   */\n  private pointerChunk: ChunkAncestor\n\n  /**\n   * The index of the current node within pointerChunk\n   *\n   * Can be -1 to indicate that the pointer is before the start of the tree.\n   */\n  private pointerIndex: number\n\n  /**\n   * Similar to a Slate path; tracks the path of pointerChunk relative to the\n   * root.\n   *\n   * Used to move the pointer from the current chunk to the parent chunk more\n   * efficiently.\n   */\n  private pointerIndexStack: number[]\n\n  /**\n   * Indexing the current chunk's children has a slight time cost, which adds up\n   * when traversing very large trees, so the current node is cached.\n   *\n   * A value of undefined means that the current node is not cached. This\n   * property must be set to undefined whenever the pointer is moved, unless\n   * the pointer is guaranteed to point to the same node that it did previously.\n   */\n  private cachedPointerNode: ChunkDescendant | null | undefined\n\n  constructor(\n    chunkTree: ChunkTree,\n    { chunkSize, debug }: ChunkTreeHelperOptions\n  ) {\n    this.root = chunkTree\n    this.chunkSize = chunkSize\n    // istanbul ignore next\n    this.debug = debug ?? false\n    this.pointerChunk = chunkTree\n    this.pointerIndex = -1\n    this.pointerIndexStack = []\n    this.reachedEnd = false\n    this.validateState()\n  }\n\n  /**\n   * Move the pointer to the next leaf in the chunk tree\n   */\n  public readLeaf(): ChunkLeaf | null {\n    // istanbul ignore next\n    if (this.reachedEnd) return null\n\n    // Get the next sibling or aunt node\n    while (true) {\n      if (this.pointerIndex + 1 < this.pointerSiblings.length) {\n        this.pointerIndex++\n        this.cachedPointerNode = undefined\n        break\n      } else if (this.pointerChunk.type === 'root') {\n        this.reachedEnd = true\n        return null\n      } else {\n        this.exitChunk()\n      }\n    }\n\n    this.validateState()\n\n    // If the next sibling or aunt is a chunk, descend into it\n    this.enterChunkUntilLeaf(false)\n\n    return this.pointerNode as ChunkLeaf\n  }\n\n  /**\n   * Move the pointer to the previous leaf in the chunk tree\n   */\n  public returnToPreviousLeaf() {\n    // If we were at the end of the tree, descend into the end of the last\n    // chunk in the tree\n    if (this.reachedEnd) {\n      this.reachedEnd = false\n      this.enterChunkUntilLeaf(true)\n      return\n    }\n\n    // Get the previous sibling or aunt node\n    while (true) {\n      if (this.pointerIndex >= 1) {\n        this.pointerIndex--\n        this.cachedPointerNode = undefined\n        break\n      } else if (this.pointerChunk.type === 'root') {\n        this.pointerIndex = -1\n        return\n      } else {\n        this.exitChunk()\n      }\n    }\n\n    this.validateState()\n\n    // If the previous sibling or aunt is a chunk, descend into it\n    this.enterChunkUntilLeaf(true)\n  }\n\n  /**\n   * Insert leaves before the current leaf, leaving the pointer unchanged\n   */\n  public insertBefore(leaves: ChunkLeaf[]) {\n    this.returnToPreviousLeaf()\n    this.insertAfter(leaves)\n    this.readLeaf()\n  }\n\n  /**\n   * Insert leaves after the current leaf, leaving the pointer on the last\n   * inserted leaf\n   *\n   * The insertion algorithm first checks for any chunk we're currently at the\n   * end of that can receive additional leaves. Next, it tries to insert leaves\n   * at the starts of any subsequent chunks.\n   *\n   * Any remaining leaves are passed to rawInsertAfter to be chunked and\n   * inserted at the highest possible level.\n   */\n  public insertAfter(leaves: ChunkLeaf[]) {\n    // istanbul ignore next\n    if (leaves.length === 0) return\n\n    let beforeDepth = 0\n    let afterDepth = 0\n\n    // While at the end of a chunk, insert any leaves that will fit, and then\n    // exit the chunk\n    while (\n      this.pointerChunk.type === 'chunk' &&\n      this.pointerIndex === this.pointerSiblings.length - 1\n    ) {\n      const remainingCapacity = this.chunkSize - this.pointerSiblings.length\n      const toInsertCount = Math.min(remainingCapacity, leaves.length)\n\n      if (toInsertCount > 0) {\n        const leavesToInsert = leaves.splice(0, toInsertCount)\n        this.rawInsertAfter(leavesToInsert, beforeDepth)\n      }\n\n      this.exitChunk()\n      beforeDepth++\n    }\n\n    if (leaves.length === 0) return\n\n    // Save the pointer so that we can come back here after inserting leaves\n    // into the starts of subsequent blocks\n    const rawInsertPointer = this.savePointer()\n\n    // If leaves are inserted into the start of a subsequent block, then we\n    // eventually need to restore the pointer to the last such inserted leaf\n    let finalPointer: SavedPointer | null = null\n\n    // Move the pointer into the chunk containing the next leaf, if it exists\n    if (this.readLeaf()) {\n      // While at the start of a chunk, insert any leaves that will fit, and\n      // then exit the chunk\n      while (this.pointerChunk.type === 'chunk' && this.pointerIndex === 0) {\n        const remainingCapacity = this.chunkSize - this.pointerSiblings.length\n        const toInsertCount = Math.min(remainingCapacity, leaves.length)\n\n        if (toInsertCount > 0) {\n          const leavesToInsert = leaves.splice(-toInsertCount, toInsertCount)\n\n          // Insert the leaves at the start of the chunk\n          this.pointerIndex = -1\n          this.cachedPointerNode = undefined\n          this.rawInsertAfter(leavesToInsert, afterDepth)\n\n          // If this is the first batch of insertions at the start of a\n          // subsequent chunk, set the final pointer to the last inserted leaf\n          if (!finalPointer) {\n            finalPointer = this.savePointer()\n          }\n        }\n\n        this.exitChunk()\n        afterDepth++\n      }\n    }\n\n    this.restorePointer(rawInsertPointer)\n\n    // If there are leaves left to insert, insert them between the end of the\n    // previous chunk and the start of the first subsequent chunk, or wherever\n    // the pointer ended up after the first batch of insertions\n    const minDepth = Math.max(beforeDepth, afterDepth)\n    this.rawInsertAfter(leaves, minDepth)\n\n    if (finalPointer) {\n      this.restorePointer(finalPointer)\n    }\n\n    this.validateState()\n  }\n\n  /**\n   * Remove the current node and decrement the pointer, deleting any ancestor\n   * chunk that becomes empty as a result\n   */\n  public remove() {\n    this.pointerSiblings.splice(this.pointerIndex--, 1)\n    this.cachedPointerNode = undefined\n\n    if (\n      this.pointerSiblings.length === 0 &&\n      this.pointerChunk.type === 'chunk'\n    ) {\n      this.exitChunk()\n      this.remove()\n    } else {\n      this.invalidateChunk()\n    }\n\n    this.validateState()\n  }\n\n  /**\n   * Add the current chunk and all ancestor chunks to the list of modified\n   * chunks\n   */\n  public invalidateChunk() {\n    for (let c = this.pointerChunk; c.type === 'chunk'; c = c.parent) {\n      this.root.modifiedChunks.add(c)\n    }\n  }\n\n  /**\n   * Whether the pointer is at the start of the tree\n   */\n  private get atStart() {\n    return this.pointerChunk.type === 'root' && this.pointerIndex === -1\n  }\n\n  /**\n   * The siblings of the current node\n   */\n  private get pointerSiblings(): ChunkDescendant[] {\n    return this.pointerChunk.children\n  }\n\n  /**\n   * Get the current node (uncached)\n   *\n   * If the pointer is at the start or end of the document, returns null.\n   *\n   * Usually, the current node is a chunk leaf, although it can be a chunk\n   * while insertions are in progress.\n   */\n  private getPointerNode(): ChunkDescendant | null {\n    if (this.reachedEnd || this.pointerIndex === -1) {\n      return null\n    }\n\n    return this.pointerSiblings[this.pointerIndex]\n  }\n\n  /**\n   * Cached getter for the current node\n   */\n  private get pointerNode(): ChunkDescendant | null {\n    if (this.cachedPointerNode !== undefined) return this.cachedPointerNode\n    const pointerNode = this.getPointerNode()\n    this.cachedPointerNode = pointerNode\n    return pointerNode\n  }\n\n  /**\n   * Get the path of a chunk relative to the root, returning null if the chunk\n   * is not connected to the root\n   */\n  private getChunkPath(chunk: ChunkAncestor): number[] | null {\n    const path: number[] = []\n\n    for (let c = chunk; c.type === 'chunk'; c = c.parent) {\n      const index = c.parent.children.indexOf(c)\n\n      // istanbul ignore next\n      if (index === -1) {\n        return null\n      }\n\n      path.unshift(index)\n    }\n\n    return path\n  }\n\n  /**\n   * Save the current pointer to be restored later\n   */\n  private savePointer(): SavedPointer {\n    if (this.atStart) return 'start'\n\n    // istanbul ignore next\n    if (!this.pointerNode) {\n      throw new Error('Cannot save pointer when pointerNode is null')\n    }\n\n    return {\n      chunk: this.pointerChunk,\n      node: this.pointerNode,\n    }\n  }\n\n  /**\n   * Restore the pointer to a previous state\n   */\n  private restorePointer(savedPointer: SavedPointer) {\n    if (savedPointer === 'start') {\n      this.pointerChunk = this.root\n      this.pointerIndex = -1\n      this.pointerIndexStack = []\n      this.reachedEnd = false\n      this.cachedPointerNode = undefined\n      return\n    }\n\n    // Since nodes may have been inserted or removed prior to the saved\n    // pointer since it was saved, the index and index stack must be\n    // recomputed. This is slow, but this is fine since restoring a pointer is\n    // not a frequent operation.\n\n    const { chunk, node } = savedPointer\n    const index = chunk.children.indexOf(node)\n\n    // istanbul ignore next\n    if (index === -1) {\n      throw new Error(\n        'Cannot restore point because saved node is no longer in saved chunk'\n      )\n    }\n\n    const indexStack = this.getChunkPath(chunk)\n\n    // istanbul ignore next\n    if (!indexStack) {\n      throw new Error(\n        'Cannot restore point because saved chunk is no longer connected to root'\n      )\n    }\n\n    this.pointerChunk = chunk\n    this.pointerIndex = index\n    this.pointerIndexStack = indexStack\n    this.reachedEnd = false\n    this.cachedPointerNode = node\n    this.validateState()\n  }\n\n  /**\n   * Assuming the current node is a chunk, move the pointer into that chunk\n   *\n   * @param end If true, place the pointer on the last node of the chunk.\n   * Otherwise, place the pointer on the first node.\n   */\n  private enterChunk(end: boolean) {\n    // istanbul ignore next\n    if (this.pointerNode?.type !== 'chunk') {\n      throw new Error('Cannot enter non-chunk')\n    }\n\n    this.pointerIndexStack.push(this.pointerIndex)\n    this.pointerChunk = this.pointerNode\n    this.pointerIndex = end ? this.pointerSiblings.length - 1 : 0\n    this.cachedPointerNode = undefined\n    this.validateState()\n\n    // istanbul ignore next\n    if (this.pointerChunk.children.length === 0) {\n      throw new Error('Cannot enter empty chunk')\n    }\n  }\n\n  /**\n   * Assuming the current node is a chunk, move the pointer into that chunk\n   * repeatedly until the current node is a leaf\n   *\n   * @param end If true, place the pointer on the last node of the chunk.\n   * Otherwise, place the pointer on the first node.\n   */\n  private enterChunkUntilLeaf(end: boolean) {\n    while (this.pointerNode?.type === 'chunk') {\n      this.enterChunk(end)\n    }\n  }\n\n  /**\n   * Move the pointer to the parent chunk\n   */\n  private exitChunk() {\n    // istanbul ignore next\n    if (this.pointerChunk.type === 'root') {\n      throw new Error('Cannot exit root')\n    }\n\n    const previousPointerChunk = this.pointerChunk\n    this.pointerChunk = previousPointerChunk.parent\n    this.pointerIndex = this.pointerIndexStack.pop()!\n    this.cachedPointerNode = undefined\n    this.validateState()\n  }\n\n  /**\n   * Insert leaves immediately after the current node, leaving the pointer on\n   * the last inserted leaf\n   *\n   * Leaves are chunked according to the number of nodes already in the parent\n   * plus the number of nodes being inserted, or the minimum depth if larger\n   */\n  private rawInsertAfter(leaves: ChunkLeaf[], minDepth: number) {\n    if (leaves.length === 0) return\n\n    const groupIntoChunks = (\n      leaves: ChunkLeaf[],\n      parent: ChunkAncestor,\n      perChunk: number\n    ): ChunkDescendant[] => {\n      if (perChunk === 1) return leaves\n      const chunks: Chunk[] = []\n\n      for (let i = 0; i < this.chunkSize; i++) {\n        const chunkNodes = leaves.slice(i * perChunk, (i + 1) * perChunk)\n        if (chunkNodes.length === 0) break\n\n        const chunk: Chunk = {\n          type: 'chunk',\n          key: new Key(),\n          parent,\n          children: [],\n        }\n\n        chunk.children = groupIntoChunks(\n          chunkNodes,\n          chunk,\n          perChunk / this.chunkSize\n        )\n        chunks.push(chunk)\n      }\n\n      return chunks\n    }\n\n    // Determine the chunking depth based on the number of existing nodes in\n    // the chunk and the number of nodes being inserted\n    const newTotal = this.pointerSiblings.length + leaves.length\n    let depthForTotal = 0\n\n    for (let i = this.chunkSize; i < newTotal; i *= this.chunkSize) {\n      depthForTotal++\n    }\n\n    // A depth of 0 means no chunking\n    const depth = Math.max(depthForTotal, minDepth)\n    const perTopLevelChunk = Math.pow(this.chunkSize, depth)\n\n    const chunks = groupIntoChunks(leaves, this.pointerChunk, perTopLevelChunk)\n    this.pointerSiblings.splice(this.pointerIndex + 1, 0, ...chunks)\n    this.pointerIndex += chunks.length\n    this.cachedPointerNode = undefined\n    this.invalidateChunk()\n    this.validateState()\n  }\n\n  /**\n   * If debug mode is enabled, ensure that the state is internally consistent\n   */\n  // istanbul ignore next\n  private validateState() {\n    if (!this.debug) return\n\n    const validateDescendant = (node: ChunkDescendant) => {\n      if (node.type === 'chunk') {\n        const { parent, children } = node\n\n        if (!parent.children.includes(node)) {\n          throw new Error(\n            `Debug: Chunk ${node.key.id} has an incorrect parent property`\n          )\n        }\n\n        children.forEach(validateDescendant)\n      }\n    }\n\n    this.root.children.forEach(validateDescendant)\n\n    if (\n      this.cachedPointerNode !== undefined &&\n      this.cachedPointerNode !== this.getPointerNode()\n    ) {\n      throw new Error(\n        'Debug: The cached pointer is incorrect and has not been invalidated'\n      )\n    }\n\n    const actualIndexStack = this.getChunkPath(this.pointerChunk)\n\n    if (!actualIndexStack) {\n      throw new Error('Debug: The pointer chunk is not connected to the root')\n    }\n\n    if (!Path.equals(this.pointerIndexStack, actualIndexStack)) {\n      throw new Error(\n        `Debug: The cached index stack [${this.pointerIndexStack.join(\n          ', '\n        )}] does not match the path of the pointer chunk [${actualIndexStack.join(\n          ', '\n        )}]`\n      )\n    }\n  }\n}\n"
  },
  {
    "path": "packages/slate-react/src/chunking/get-chunk-tree-for-node.ts",
    "content": "import { Ancestor, Editor } from 'slate'\nimport { Key } from 'slate-dom'\nimport { ChunkTree } from './types'\nimport { ReconcileOptions, reconcileChildren } from './reconcile-children'\nimport { ReactEditor } from '../plugin/react-editor'\n\nexport const KEY_TO_CHUNK_TREE = new WeakMap<Key, ChunkTree>()\n\n/**\n * Get or create the chunk tree for a Slate node\n *\n * If the reconcile option is provided, the chunk tree will be updated to\n * match the current children of the node. The children are chunked\n * automatically using the given chunk size.\n */\nexport const getChunkTreeForNode = (\n  editor: Editor,\n  node: Ancestor,\n  // istanbul ignore next\n  options: {\n    reconcile?: Omit<ReconcileOptions, 'chunkTree' | 'children'> | false\n  } = {}\n) => {\n  const key = ReactEditor.findKey(editor, node)\n  let chunkTree = KEY_TO_CHUNK_TREE.get(key)\n\n  if (!chunkTree) {\n    chunkTree = {\n      type: 'root',\n      movedNodeKeys: new Set(),\n      modifiedChunks: new Set(),\n      children: [],\n    }\n\n    KEY_TO_CHUNK_TREE.set(key, chunkTree)\n  }\n\n  if (options.reconcile) {\n    reconcileChildren(editor, {\n      chunkTree,\n      children: node.children,\n      ...options.reconcile,\n    })\n  }\n\n  return chunkTree\n}\n"
  },
  {
    "path": "packages/slate-react/src/chunking/index.ts",
    "content": "export * from './get-chunk-tree-for-node'\nexport * from './types'\n"
  },
  {
    "path": "packages/slate-react/src/chunking/reconcile-children.ts",
    "content": "import { Editor, Descendant } from 'slate'\nimport { ChunkTree, ChunkLeaf } from './types'\nimport { ChunkTreeHelper, ChunkTreeHelperOptions } from './chunk-tree-helper'\nimport { ChildrenHelper } from './children-helper'\n\nexport interface ReconcileOptions extends ChunkTreeHelperOptions {\n  chunkTree: ChunkTree\n  children: Descendant[]\n  chunkSize: number\n  rerenderChildren?: number[]\n  onInsert?: (node: Descendant, index: number) => void\n  onUpdate?: (node: Descendant, index: number) => void\n  onIndexChange?: (node: Descendant, index: number) => void\n  debug?: boolean\n}\n\n/**\n * Update the chunk tree to match the children array, inserting, removing and\n * updating differing nodes\n */\nexport const reconcileChildren = (\n  editor: Editor,\n  {\n    chunkTree,\n    children,\n    chunkSize,\n    rerenderChildren = [],\n    onInsert,\n    onUpdate,\n    onIndexChange,\n    debug,\n  }: ReconcileOptions\n) => {\n  const chunkTreeHelper = new ChunkTreeHelper(chunkTree, { chunkSize, debug })\n  const childrenHelper = new ChildrenHelper(editor, children)\n\n  let treeLeaf: ChunkLeaf | null\n\n  // Read leaves from the tree one by one, each one representing a single Slate\n  // node. Each leaf from the tree is compared to the current node in the\n  // children array to determine whether nodes have been inserted, removed or\n  // updated.\n  while ((treeLeaf = chunkTreeHelper.readLeaf())) {\n    // Check where the tree node appears in the children array. In the most\n    // common case (where no insertions or removals have occurred), this will be\n    // 0. If the node has been removed, this will be -1. If new nodes have been\n    // inserted before the node, or if the node has been moved to a later\n    // position in the same children array, this will be a positive number.\n    const lookAhead = childrenHelper.lookAhead(treeLeaf.node, treeLeaf.key)\n\n    // If the node was moved, we want to remove it and insert it later, rather\n    // then re-inserting all intermediate nodes before it.\n    const wasMoved = lookAhead > 0 && chunkTree.movedNodeKeys.has(treeLeaf.key)\n\n    // If the tree leaf was moved or removed, remove it\n    if (lookAhead === -1 || wasMoved) {\n      chunkTreeHelper.remove()\n      continue\n    }\n\n    // Get the matching Slate node and any nodes that may have been inserted\n    // prior to it. Insert these into the chunk tree.\n    const insertedChildrenStartIndex = childrenHelper.pointerIndex\n    const insertedChildren = childrenHelper.read(lookAhead + 1)\n    const matchingChild = insertedChildren.pop()!\n\n    if (insertedChildren.length) {\n      const leavesToInsert = childrenHelper.toChunkLeaves(\n        insertedChildren,\n        insertedChildrenStartIndex\n      )\n\n      chunkTreeHelper.insertBefore(leavesToInsert)\n\n      insertedChildren.forEach((node, relativeIndex) => {\n        onInsert?.(node, insertedChildrenStartIndex + relativeIndex)\n      })\n    }\n\n    const matchingChildIndex = childrenHelper.pointerIndex - 1\n\n    // Make sure the chunk tree contains the most recent version of the Slate\n    // node\n    if (treeLeaf.node !== matchingChild) {\n      treeLeaf.node = matchingChild\n      chunkTreeHelper.invalidateChunk()\n      onUpdate?.(matchingChild, matchingChildIndex)\n    }\n\n    // Update the index if it has changed\n    if (treeLeaf.index !== matchingChildIndex) {\n      treeLeaf.index = matchingChildIndex\n      onIndexChange?.(matchingChild, matchingChildIndex)\n    }\n\n    // Manually invalidate chunks containing specific children that we want to\n    // re-render\n    if (rerenderChildren.includes(matchingChildIndex)) {\n      chunkTreeHelper.invalidateChunk()\n    }\n  }\n\n  // If there are still Slate nodes remaining from the children array that were\n  // not matched to nodes in the tree, insert them at the end of the tree\n  if (!childrenHelper.reachedEnd) {\n    const remainingChildren = childrenHelper.remaining()\n\n    const leavesToInsert = childrenHelper.toChunkLeaves(\n      remainingChildren,\n      childrenHelper.pointerIndex\n    )\n\n    // Move the pointer back to the final leaf in the tree, or the start of the\n    // tree if the tree is currently empty\n    chunkTreeHelper.returnToPreviousLeaf()\n\n    chunkTreeHelper.insertAfter(leavesToInsert)\n\n    remainingChildren.forEach((node, relativeIndex) => {\n      onInsert?.(node, childrenHelper.pointerIndex + relativeIndex)\n    })\n  }\n\n  chunkTree.movedNodeKeys.clear()\n}\n"
  },
  {
    "path": "packages/slate-react/src/chunking/types.ts",
    "content": "import { Descendant } from 'slate'\nimport { Key } from 'slate-dom'\n\nexport interface ChunkTree {\n  type: 'root'\n  children: ChunkDescendant[]\n\n  /**\n   * The keys of any Slate nodes that have been moved using move_node since the\n   * last render\n   *\n   * Detecting when a node has been moved to a different position in the\n   * children array is impossible to do efficiently while reconciling the chunk\n   * tree. This interferes with the reconciliation logic since it is treated as\n   * if the intermediate nodes were inserted and removed, causing them to be\n   * re-chunked unnecessarily.\n   *\n   * This set is used to detect when a node has been moved so that this case\n   * can be handled correctly and efficiently.\n   */\n  movedNodeKeys: Set<Key>\n\n  /**\n   * The chunks whose descendants have been modified during the most recent\n   * reconciliation\n   *\n   * Used to determine when the otherwise memoized React components for each\n   * chunk should be re-rendered.\n   */\n  modifiedChunks: Set<Chunk>\n}\n\nexport interface Chunk {\n  type: 'chunk'\n  key: Key\n  parent: ChunkAncestor\n  children: ChunkDescendant[]\n}\n\n// A chunk leaf is unrelated to a Slate leaf; it is a leaf of the chunk tree,\n// containing a single element that is a child of the Slate node the chunk tree\n// belongs to.\nexport interface ChunkLeaf {\n  type: 'leaf'\n  key: Key\n  node: Descendant\n  index: number\n}\n\nexport type ChunkAncestor = ChunkTree | Chunk\nexport type ChunkDescendant = Chunk | ChunkLeaf\nexport type ChunkNode = ChunkTree | Chunk | ChunkLeaf\n"
  },
  {
    "path": "packages/slate-react/src/components/chunk-tree.tsx",
    "content": "import React, { ComponentProps, Fragment, useEffect } from 'react'\nimport { Element } from 'slate'\nimport { Key } from 'slate-dom'\nimport { RenderChunkProps } from './editable'\nimport {\n  Chunk as TChunk,\n  ChunkAncestor as TChunkAncestor,\n  ChunkTree as TChunkTree,\n} from '../chunking'\n\nconst defaultRenderChunk = ({ children }: RenderChunkProps) => children\n\nconst ChunkAncestor = <C extends TChunkAncestor>(props: {\n  root: TChunkTree\n  ancestor: C\n  renderElement: (node: Element, index: number, key: Key) => React.JSX.Element\n  renderChunk?: (props: RenderChunkProps) => React.JSX.Element\n}) => {\n  const {\n    root,\n    ancestor,\n    renderElement,\n    renderChunk = defaultRenderChunk,\n  } = props\n\n  return ancestor.children.map(chunkNode => {\n    if (chunkNode.type === 'chunk') {\n      const key = chunkNode.key.id\n\n      const renderedChunk = renderChunk({\n        highest: ancestor === root,\n        lowest: chunkNode.children.some(c => c.type === 'leaf'),\n        attributes: { 'data-slate-chunk': true },\n        children: (\n          <MemoizedChunk\n            root={root}\n            ancestor={chunkNode}\n            renderElement={renderElement}\n            renderChunk={renderChunk}\n          />\n        ),\n      })\n\n      return <Fragment key={key}>{renderedChunk}</Fragment>\n    }\n\n    // Only blocks containing no inlines are chunked\n    const element = chunkNode.node as Element\n\n    return renderElement(element, chunkNode.index, chunkNode.key)\n  })\n}\n\nconst ChunkTree = (props: ComponentProps<typeof ChunkAncestor<TChunkTree>>) => {\n  // Clear the set of modified chunks only when React finishes rendering. The\n  // timing of this is important in strict mode because if the chunks are\n  // cleared during rendering (such as in reconcileChildren), strict mode's\n  // second render won't include them.\n  useEffect(() => {\n    props.root.modifiedChunks.clear()\n  })\n\n  return <ChunkAncestor {...props} />\n}\n\nconst MemoizedChunk = React.memo(\n  ChunkAncestor<TChunk>,\n  (prev, next) =>\n    prev.root === next.root &&\n    prev.renderElement === next.renderElement &&\n    prev.renderChunk === next.renderChunk &&\n    !next.root.modifiedChunks.has(next.ancestor)\n)\n\nexport default ChunkTree\n"
  },
  {
    "path": "packages/slate-react/src/components/editable.tsx",
    "content": "import getDirection from 'direction'\nimport debounce from 'lodash/debounce'\nimport throttle from 'lodash/throttle'\nimport React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useReducer,\n  useRef,\n  useState,\n  forwardRef,\n  ForwardedRef,\n} from 'react'\nimport { JSX } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport {\n  Editor,\n  Element,\n  Node,\n  NodeEntry,\n  Path,\n  Range,\n  Text,\n  Transforms,\n  DecoratedRange,\n  LeafPosition,\n} from 'slate'\nimport { useAndroidInputManager } from '../hooks/android-input-manager/use-android-input-manager'\nimport useChildren from '../hooks/use-children'\nimport { DecorateContext, useDecorateContext } from '../hooks/use-decorations'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { ReadOnlyContext } from '../hooks/use-read-only'\nimport { useSlate } from '../hooks/use-slate'\nimport { useTrackUserInput } from '../hooks/use-track-user-input'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { TRIPLE_CLICK } from 'slate-dom'\nimport {\n  containsShadowAware,\n  DOMElement,\n  DOMRange,\n  DOMText,\n  getActiveElement,\n  getDefaultView,\n  getSelection,\n  isDOMElement,\n  isDOMNode,\n  isPlainTextOnlyPaste,\n} from 'slate-dom'\nimport {\n  CAN_USE_DOM,\n  HAS_BEFORE_INPUT_SUPPORT,\n  IS_ANDROID,\n  IS_CHROME,\n  IS_FIREFOX,\n  IS_FIREFOX_LEGACY,\n  IS_IOS,\n  IS_WEBKIT,\n  IS_UC_MOBILE,\n  IS_WECHATBROWSER,\n} from 'slate-dom'\nimport { Hotkeys } from 'slate-dom'\nimport {\n  IS_NODE_MAP_DIRTY,\n  EDITOR_TO_ELEMENT,\n  EDITOR_TO_FORCE_RENDER,\n  EDITOR_TO_PENDING_INSERTION_MARKS,\n  EDITOR_TO_USER_MARKS,\n  EDITOR_TO_USER_SELECTION,\n  EDITOR_TO_WINDOW,\n  ELEMENT_TO_NODE,\n  IS_COMPOSING,\n  IS_FOCUSED,\n  IS_READ_ONLY,\n  MARK_PLACEHOLDER_SYMBOL,\n  NODE_TO_ELEMENT,\n  PLACEHOLDER_SYMBOL,\n} from 'slate-dom'\nimport { RestoreDOM } from './restore-dom/restore-dom'\nimport { AndroidInputManager } from '../hooks/android-input-manager/android-input-manager'\nimport { ComposingContext } from '../hooks/use-composing'\nimport { useFlushDeferredSelectorsOnRender } from '../hooks/use-slate-selector'\n\ntype DeferredOperation = () => void\n\nconst Children = (props: Parameters<typeof useChildren>[0]) => (\n  <React.Fragment>{useChildren(props)}</React.Fragment>\n)\n\n/**\n * `RenderElementProps` are passed to the `renderElement` handler.\n */\n\nexport interface RenderElementProps {\n  children: any\n  element: Element\n  attributes: {\n    'data-slate-node': 'element'\n    'data-slate-inline'?: true\n    'data-slate-void'?: true\n    dir?: 'rtl'\n    ref: any\n  }\n}\n\n/**\n * `RenderChunkProps` are passed to the `renderChunk` handler\n */\nexport interface RenderChunkProps {\n  highest: boolean\n  lowest: boolean\n  children: any\n  attributes: {\n    'data-slate-chunk': true\n  }\n}\n\n/**\n * `RenderLeafProps` are passed to the `renderLeaf` handler.\n */\n\nexport interface RenderLeafProps {\n  children: any\n  /**\n   * The leaf node with any applied decorations.\n   * If no decorations are applied, it will be identical to the `text` property.\n   */\n  leaf: Text\n  text: Text\n  attributes: {\n    'data-slate-leaf': true\n  }\n  /**\n   * The position of the leaf within the Text node, only present when the text node is split by decorations.\n   */\n  leafPosition?: LeafPosition\n}\n\n/**\n * `RenderTextProps` are passed to the `renderText` handler.\n */\nexport interface RenderTextProps {\n  text: Text\n  children: any\n  attributes: {\n    'data-slate-node': 'text'\n    ref: any\n  }\n}\n\n/**\n * `EditableProps` are passed to the `<Editable>` component.\n */\n\nexport type EditableProps = {\n  decorate?: (entry: NodeEntry) => DecoratedRange[]\n  onDOMBeforeInput?: (event: InputEvent) => void\n  placeholder?: string\n  readOnly?: boolean\n  role?: string\n  style?: React.CSSProperties\n  renderElement?: (props: RenderElementProps) => React.JSX.Element\n  renderChunk?: (props: RenderChunkProps) => React.JSX.Element\n  renderLeaf?: (props: RenderLeafProps) => React.JSX.Element\n  renderText?: (props: RenderTextProps) => React.JSX.Element\n  renderPlaceholder?: (props: RenderPlaceholderProps) => React.JSX.Element\n  scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void\n  as?: React.ElementType\n  disableDefaultStyles?: boolean\n} & React.TextareaHTMLAttributes<HTMLDivElement>\n\n/**\n * Editable.\n */\n\nexport const Editable = forwardRef(\n  (props: EditableProps, forwardedRef: ForwardedRef<HTMLDivElement>) => {\n    const defaultRenderPlaceholder = useCallback(\n      (props: RenderPlaceholderProps) => <DefaultPlaceholder {...props} />,\n      []\n    )\n    const {\n      autoFocus,\n      decorate = defaultDecorate,\n      onDOMBeforeInput: propsOnDOMBeforeInput,\n      placeholder,\n      readOnly = false,\n      renderElement,\n      renderChunk,\n      renderLeaf,\n      renderText,\n      renderPlaceholder = defaultRenderPlaceholder,\n      scrollSelectionIntoView = defaultScrollSelectionIntoView,\n      style: userStyle = {},\n      as: Component = 'div',\n      disableDefaultStyles = false,\n      ...attributes\n    } = props\n    const editor = useSlate()\n    // Rerender editor when composition status changed\n    const [isComposing, setIsComposing] = useState(false)\n    const ref = useRef<HTMLDivElement | null>(null)\n    const deferredOperations = useRef<DeferredOperation[]>([])\n    const [placeholderHeight, setPlaceholderHeight] = useState<\n      number | undefined\n    >()\n    const processing = useRef(false)\n\n    const { onUserInput, receivedUserInput } = useTrackUserInput()\n\n    const [, forceRender] = useReducer(s => s + 1, 0)\n    EDITOR_TO_FORCE_RENDER.set(editor, forceRender)\n\n    // Update internal state on each render.\n    IS_READ_ONLY.set(editor, readOnly)\n\n    // Keep track of some state for the event handler logic.\n    const state = useMemo(\n      () => ({\n        isDraggingInternally: false,\n        isUpdatingSelection: false,\n        latestElement: null as DOMElement | null,\n        hasMarkPlaceholder: false,\n      }),\n      []\n    )\n\n    // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n    // needs to be manually focused.\n    //\n    // If this stops working in Firefox, make sure nothing is causing this\n    // component to re-render during the initial mount. If the DOM selection is\n    // set by `useIsomorphicLayoutEffect` before `onDOMSelectionChange` updates\n    // `editor.selection`, the DOM selection can be removed accidentally.\n    useEffect(() => {\n      if (ref.current && autoFocus) {\n        ref.current.focus()\n      }\n    }, [autoFocus])\n\n    /**\n     * The AndroidInputManager object has a cyclical dependency on onDOMSelectionChange\n     *\n     * It is defined as a reference to simplify hook dependencies and clarify that\n     * it needs to be initialized.\n     */\n    const androidInputManagerRef = useRef<\n      AndroidInputManager | null | undefined\n    >()\n\n    // Listen on the native `selectionchange` event to be able to update any time\n    // the selection changes. This is required because React's `onSelect` is leaky\n    // and non-standard so it doesn't fire until after a selection has been\n    // released. This causes issues in situations where another change happens\n    // while a selection is being dragged.\n    const onDOMSelectionChange = useMemo(\n      () =>\n        throttle(() => {\n          if (IS_NODE_MAP_DIRTY.get(editor)) {\n            onDOMSelectionChange()\n            return\n          }\n\n          const el = ReactEditor.toDOMNode(editor, editor)\n          const root = el.getRootNode()\n\n          if (!processing.current && IS_WEBKIT && root instanceof ShadowRoot) {\n            processing.current = true\n\n            const active = getActiveElement()\n\n            if (active) {\n              document.execCommand('indent')\n            } else {\n              Transforms.deselect(editor)\n            }\n\n            processing.current = false\n            return\n          }\n\n          const androidInputManager = androidInputManagerRef.current\n          if (\n            (IS_ANDROID || !ReactEditor.isComposing(editor)) &&\n            (!state.isUpdatingSelection || androidInputManager?.isFlushing()) &&\n            !state.isDraggingInternally\n          ) {\n            const root = ReactEditor.findDocumentOrShadowRoot(editor)\n            const { activeElement } = root\n            const el = ReactEditor.toDOMNode(editor, editor)\n            const domSelection = getSelection(root)\n\n            if (activeElement === el) {\n              state.latestElement = activeElement\n              IS_FOCUSED.set(editor, true)\n            } else {\n              IS_FOCUSED.delete(editor)\n            }\n\n            if (!domSelection) {\n              return Transforms.deselect(editor)\n            }\n\n            const { anchorNode, focusNode } = domSelection\n\n            const anchorNodeSelectable =\n              ReactEditor.hasEditableTarget(editor, anchorNode) ||\n              ReactEditor.isTargetInsideNonReadonlyVoid(editor, anchorNode)\n\n            const focusNodeInEditor = ReactEditor.hasTarget(editor, focusNode)\n\n            if (anchorNodeSelectable && focusNodeInEditor) {\n              const range = ReactEditor.toSlateRange(editor, domSelection, {\n                exactMatch: false,\n                suppressThrow: true,\n              })\n\n              if (range) {\n                if (\n                  !ReactEditor.isComposing(editor) &&\n                  !androidInputManager?.hasPendingChanges() &&\n                  !androidInputManager?.isFlushing()\n                ) {\n                  Transforms.select(editor, range)\n                } else {\n                  androidInputManager?.handleUserSelect(range)\n                }\n              }\n            }\n\n            // Deselect the editor if the dom selection is not selectable in readonly mode\n            if (readOnly && (!anchorNodeSelectable || !focusNodeInEditor)) {\n              Transforms.deselect(editor)\n            }\n          }\n        }, 100),\n      [editor, readOnly, state]\n    )\n\n    const scheduleOnDOMSelectionChange = useMemo(\n      () => debounce(onDOMSelectionChange, 0),\n      [onDOMSelectionChange]\n    )\n\n    androidInputManagerRef.current = useAndroidInputManager({\n      node: ref,\n      onDOMSelectionChange,\n      scheduleOnDOMSelectionChange,\n    })\n\n    useIsomorphicLayoutEffect(() => {\n      // Update element-related weak maps with the DOM element ref.\n      let window\n      if (ref.current && (window = getDefaultView(ref.current))) {\n        EDITOR_TO_WINDOW.set(editor, window)\n        EDITOR_TO_ELEMENT.set(editor, ref.current)\n        NODE_TO_ELEMENT.set(editor, ref.current)\n        ELEMENT_TO_NODE.set(ref.current, editor)\n      } else {\n        NODE_TO_ELEMENT.delete(editor)\n      }\n\n      // Make sure the DOM selection state is in sync.\n      const { selection } = editor\n      const root = ReactEditor.findDocumentOrShadowRoot(editor)\n      const domSelection = getSelection(root)\n\n      if (\n        !domSelection ||\n        !ReactEditor.isFocused(editor) ||\n        androidInputManagerRef.current?.hasPendingAction()\n      ) {\n        return\n      }\n\n      const setDomSelection = (forceChange?: boolean) => {\n        const hasDomSelection = domSelection.type !== 'None'\n\n        // If the DOM selection is properly unset, we're done.\n        if (!selection && !hasDomSelection) {\n          return\n        }\n\n        // Get anchorNode and focusNode\n        const focusNode = domSelection.focusNode\n        let anchorNode\n\n        // COMPAT: In firefox the normal selection way does not work\n        // (https://github.com/ianstormtaylor/slate/pull/5486#issue-1820720223)\n        if (IS_FIREFOX && domSelection.rangeCount > 1) {\n          const firstRange = domSelection.getRangeAt(0)\n          const lastRange = domSelection.getRangeAt(domSelection.rangeCount - 1)\n\n          // Right to left\n          if (firstRange.startContainer === focusNode) {\n            anchorNode = lastRange.endContainer\n          } else {\n            // Left to right\n            anchorNode = firstRange.startContainer\n          }\n        } else {\n          anchorNode = domSelection.anchorNode\n        }\n\n        // verify that the dom selection is in the editor\n        const editorElement = EDITOR_TO_ELEMENT.get(editor)!\n        let hasDomSelectionInEditor = false\n        if (\n          containsShadowAware(editorElement, anchorNode) &&\n          containsShadowAware(editorElement, focusNode)\n        ) {\n          hasDomSelectionInEditor = true\n        }\n\n        // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n        if (\n          hasDomSelection &&\n          hasDomSelectionInEditor &&\n          selection &&\n          !forceChange\n        ) {\n          const slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n            exactMatch: true,\n\n            // domSelection is not necessarily a valid Slate range\n            // (e.g. when clicking on contentEditable:false element)\n            suppressThrow: true,\n          })\n\n          if (slateRange && Range.equals(slateRange, selection)) {\n            if (!state.hasMarkPlaceholder) {\n              return\n            }\n\n            // Ensure selection is inside the mark placeholder\n            if (\n              anchorNode?.parentElement?.hasAttribute(\n                'data-slate-mark-placeholder'\n              )\n            ) {\n              return\n            }\n          }\n        }\n\n        // when <Editable/> is being controlled through external value\n        // then its children might just change - DOM responds to it on its own\n        // but Slate's value is not being updated through any operation\n        // and thus it doesn't transform selection on its own\n        if (selection && !ReactEditor.hasRange(editor, selection)) {\n          editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n            exactMatch: false,\n            suppressThrow: true,\n          })\n          return\n        }\n\n        // Otherwise the DOM selection is out of sync, so update it.\n        state.isUpdatingSelection = true\n\n        let newDomRange: DOMRange | null = null\n\n        try {\n          newDomRange = selection && ReactEditor.toDOMRange(editor, selection)\n        } catch (e) {\n          // Ignore, dom and state might be out of sync\n        }\n\n        if (newDomRange) {\n          if (ReactEditor.isComposing(editor) && !IS_ANDROID) {\n            domSelection.collapseToEnd()\n          } else if (Range.isBackward(selection!)) {\n            domSelection.setBaseAndExtent(\n              newDomRange.endContainer,\n              newDomRange.endOffset,\n              newDomRange.startContainer,\n              newDomRange.startOffset\n            )\n          } else {\n            domSelection.setBaseAndExtent(\n              newDomRange.startContainer,\n              newDomRange.startOffset,\n              newDomRange.endContainer,\n              newDomRange.endOffset\n            )\n          }\n          scrollSelectionIntoView(editor, newDomRange)\n        } else {\n          domSelection.removeAllRanges()\n        }\n\n        return newDomRange\n      }\n\n      // In firefox if there is more then 1 range and we call setDomSelection we remove the ability to select more cells in a table\n      if (domSelection.rangeCount <= 1) {\n        setDomSelection()\n      }\n\n      const ensureSelection =\n        androidInputManagerRef.current?.isFlushing() === 'action'\n\n      if (!IS_ANDROID || !ensureSelection) {\n        setTimeout(() => {\n          state.isUpdatingSelection = false\n        })\n        return\n      }\n\n      let timeoutId: ReturnType<typeof setTimeout> | null = null\n      const animationFrameId = requestAnimationFrame(() => {\n        if (ensureSelection) {\n          const ensureDomSelection = (forceChange?: boolean) => {\n            try {\n              const el = ReactEditor.toDOMNode(editor, editor)\n              el.focus()\n\n              setDomSelection(forceChange)\n            } catch (e) {\n              // Ignore, dom and state might be out of sync\n            }\n          }\n\n          // Compat: Android IMEs try to force their selection by manually re-applying it even after we set it.\n          // This essentially would make setting the slate selection during an update meaningless, so we force it\n          // again here. We can't only do it in the setTimeout after the animation frame since that would cause a\n          // visible flicker.\n          ensureDomSelection()\n\n          timeoutId = setTimeout(() => {\n            // COMPAT: While setting the selection in an animation frame visually correctly sets the selection,\n            // it doesn't update GBoards spellchecker state. We have to manually trigger a selection change after\n            // the animation frame to ensure it displays the correct state.\n            ensureDomSelection(true)\n            state.isUpdatingSelection = false\n          })\n        }\n      })\n\n      return () => {\n        cancelAnimationFrame(animationFrameId)\n        if (timeoutId) {\n          clearTimeout(timeoutId)\n        }\n      }\n    })\n\n    // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n    // is required because React's `beforeinput` is fake and never really attaches\n    // to the real event sadly. (2019/11/01)\n    // https://github.com/facebook/react/issues/11211\n    const onDOMBeforeInput = useCallback(\n      (event: InputEvent) => {\n        handleNativeHistoryEvents(editor, event)\n        const el = ReactEditor.toDOMNode(editor, editor)\n        const root = el.getRootNode()\n\n        if (processing?.current && IS_WEBKIT && root instanceof ShadowRoot) {\n          const ranges = event.getTargetRanges()\n          const range = ranges[0]\n\n          const newRange = new window.Range()\n\n          newRange.setStart(range.startContainer, range.startOffset)\n          newRange.setEnd(range.endContainer, range.endOffset)\n\n          // Translate the DOM Range into a Slate Range\n          const slateRange = ReactEditor.toSlateRange(editor, newRange, {\n            exactMatch: false,\n            suppressThrow: false,\n          })\n\n          Transforms.select(editor, slateRange)\n\n          event.preventDefault()\n          event.stopImmediatePropagation()\n          return\n        }\n        onUserInput()\n\n        if (\n          !readOnly &&\n          ReactEditor.hasEditableTarget(editor, event.target) &&\n          !isDOMEventHandled(event, propsOnDOMBeforeInput)\n        ) {\n          // COMPAT: BeforeInput events aren't cancelable on android, so we have to handle them differently using the android input manager.\n          if (androidInputManagerRef.current) {\n            return androidInputManagerRef.current.handleDOMBeforeInput(event)\n          }\n\n          // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n          // triggering a `beforeinput` expecting the change to be applied to the immediately before\n          // set selection.\n          scheduleOnDOMSelectionChange.flush()\n          onDOMSelectionChange.flush()\n\n          const { selection } = editor\n          const { inputType: type } = event\n          const data = (event as any).dataTransfer || event.data || undefined\n\n          const isCompositionChange =\n            type === 'insertCompositionText' || type === 'deleteCompositionText'\n\n          // COMPAT: use composition change events as a hint to where we should insert\n          // composition text if we aren't composing to work around https://github.com/ianstormtaylor/slate/issues/5038\n          if (isCompositionChange && ReactEditor.isComposing(editor)) {\n            return\n          }\n\n          let native = false\n          if (\n            type === 'insertText' &&\n            selection &&\n            Range.isCollapsed(selection) &&\n            // Only use native character insertion for single characters a-z or space for now.\n            // Long-press events (hold a + press 4 = ä) to choose a special character otherwise\n            // causes duplicate inserts.\n            event.data &&\n            event.data.length === 1 &&\n            /[a-z ]/i.test(event.data) &&\n            // Chrome has issues correctly editing the start of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n            // When there is an inline element, e.g. a link, and you select\n            // right after it (the start of the next node).\n            selection.anchor.offset !== 0\n          ) {\n            native = true\n\n            // Skip native if there are marks, as\n            // `insertText` will insert a node, not just text.\n            if (editor.marks) {\n              native = false\n            }\n\n            // If the NODE_MAP is dirty, we can't trust the selection anchor (eg ReactEditor.toDOMPoint)\n            if (!IS_NODE_MAP_DIRTY.get(editor)) {\n              // Chrome also has issues correctly editing the end of anchor elements: https://bugs.chromium.org/p/chromium/issues/detail?id=1259100\n              // Therefore we don't allow native events to insert text at the end of anchor nodes.\n              const { anchor } = selection\n\n              const [node, offset] = ReactEditor.toDOMPoint(editor, anchor)\n              const anchorNode = node.parentElement?.closest('a')\n\n              const window = ReactEditor.getWindow(editor)\n\n              if (\n                native &&\n                anchorNode &&\n                ReactEditor.hasDOMNode(editor, anchorNode)\n              ) {\n                // Find the last text node inside the anchor.\n                const lastText = window?.document\n                  .createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT)\n                  .lastChild() as DOMText | null\n\n                if (\n                  lastText === node &&\n                  lastText.textContent?.length === offset\n                ) {\n                  native = false\n                }\n              }\n\n              // Chrome has issues with the presence of tab characters inside elements with whiteSpace = 'pre'\n              // causing abnormal insert behavior: https://bugs.chromium.org/p/chromium/issues/detail?id=1219139\n              if (\n                native &&\n                node.parentElement &&\n                window?.getComputedStyle(node.parentElement)?.whiteSpace ===\n                  'pre'\n              ) {\n                const block = Editor.above(editor, {\n                  at: anchor.path,\n                  match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n                })\n\n                if (block && Node.string(block[0]).includes('\\t')) {\n                  native = false\n                }\n              }\n            }\n          }\n          // COMPAT: For the deleting forward/backward input types we don't want\n          // to change the selection because it is the range that will be deleted,\n          // and those commands determine that for themselves.\n          // If the NODE_MAP is dirty, we can't trust the selection anchor (eg ReactEditor.toDOMPoint via ReactEditor.toSlateRange)\n          if (\n            (!type.startsWith('delete') || type.startsWith('deleteBy')) &&\n            !IS_NODE_MAP_DIRTY.get(editor)\n          ) {\n            const [targetRange] = (event as any).getTargetRanges()\n\n            if (targetRange) {\n              const range = ReactEditor.toSlateRange(editor, targetRange, {\n                exactMatch: false,\n                suppressThrow: false,\n              })\n\n              if (!selection || !Range.equals(selection, range)) {\n                native = false\n\n                const selectionRef =\n                  !isCompositionChange &&\n                  editor.selection &&\n                  Editor.rangeRef(editor, editor.selection)\n\n                Transforms.select(editor, range)\n\n                if (selectionRef) {\n                  EDITOR_TO_USER_SELECTION.set(editor, selectionRef)\n                }\n              }\n            }\n          }\n\n          // Composition change types occur while a user is composing text and can't be\n          // cancelled. Let them through and wait for the composition to end.\n          if (isCompositionChange) {\n            return\n          }\n\n          if (!native) {\n            event.preventDefault()\n          }\n\n          // COMPAT: If the selection is expanded, even if the command seems like\n          // a delete forward/backward command it should delete the selection.\n          if (\n            selection &&\n            Range.isExpanded(selection) &&\n            type.startsWith('delete')\n          ) {\n            const direction = type.endsWith('Backward') ? 'backward' : 'forward'\n            Editor.deleteFragment(editor, { direction })\n            return\n          }\n\n          switch (type) {\n            case 'deleteByComposition':\n            case 'deleteByCut':\n            case 'deleteByDrag': {\n              Editor.deleteFragment(editor)\n              break\n            }\n\n            case 'deleteContent':\n            case 'deleteContentForward': {\n              Editor.deleteForward(editor)\n              break\n            }\n\n            case 'deleteContentBackward': {\n              Editor.deleteBackward(editor)\n              break\n            }\n\n            case 'deleteEntireSoftLine': {\n              Editor.deleteBackward(editor, { unit: 'line' })\n              Editor.deleteForward(editor, { unit: 'line' })\n              break\n            }\n\n            case 'deleteHardLineBackward': {\n              Editor.deleteBackward(editor, { unit: 'block' })\n              break\n            }\n\n            case 'deleteSoftLineBackward': {\n              Editor.deleteBackward(editor, { unit: 'line' })\n              break\n            }\n\n            case 'deleteHardLineForward': {\n              Editor.deleteForward(editor, { unit: 'block' })\n              break\n            }\n\n            case 'deleteSoftLineForward': {\n              Editor.deleteForward(editor, { unit: 'line' })\n              break\n            }\n\n            case 'deleteWordBackward': {\n              Editor.deleteBackward(editor, { unit: 'word' })\n              break\n            }\n\n            case 'deleteWordForward': {\n              Editor.deleteForward(editor, { unit: 'word' })\n              break\n            }\n\n            case 'insertLineBreak':\n              Editor.insertSoftBreak(editor)\n              break\n\n            case 'insertParagraph': {\n              Editor.insertBreak(editor)\n              break\n            }\n\n            case 'insertFromComposition':\n            case 'insertFromDrop':\n            case 'insertFromPaste':\n            case 'insertFromYank':\n            case 'insertReplacementText':\n            case 'insertText': {\n              if (type === 'insertFromComposition') {\n                // COMPAT: in Safari, `compositionend` is dispatched after the\n                // `beforeinput` for \"insertFromComposition\". But if we wait for it\n                // then we will abort because we're still composing and the selection\n                // won't be updated properly.\n                // https://www.w3.org/TR/input-events-2/\n                if (ReactEditor.isComposing(editor)) {\n                  setIsComposing(false)\n                  IS_COMPOSING.set(editor, false)\n                }\n              }\n\n              // use a weak comparison instead of 'instanceof' to allow\n              // programmatic access of paste events coming from external windows\n              // like cypress where cy.window does not work realibly\n              if (data?.constructor.name === 'DataTransfer') {\n                ReactEditor.insertData(editor, data)\n              } else if (typeof data === 'string') {\n                // Only insertText operations use the native functionality, for now.\n                // Potentially expand to single character deletes, as well.\n                if (native) {\n                  deferredOperations.current.push(() =>\n                    Editor.insertText(editor, data)\n                  )\n                } else {\n                  Editor.insertText(editor, data)\n                }\n              }\n\n              break\n            }\n          }\n\n          // Restore the actual user section if nothing manually set it.\n          const toRestore = EDITOR_TO_USER_SELECTION.get(editor)?.unref()\n          EDITOR_TO_USER_SELECTION.delete(editor)\n\n          if (\n            toRestore &&\n            (!editor.selection || !Range.equals(editor.selection, toRestore))\n          ) {\n            Transforms.select(editor, toRestore)\n          }\n        }\n      },\n      [\n        editor,\n        onDOMSelectionChange,\n        onUserInput,\n        propsOnDOMBeforeInput,\n        readOnly,\n        scheduleOnDOMSelectionChange,\n      ]\n    )\n\n    const callbackRef = useCallback(\n      (node: HTMLDivElement | null) => {\n        if (node == null) {\n          onDOMSelectionChange.cancel()\n          scheduleOnDOMSelectionChange.cancel()\n\n          EDITOR_TO_ELEMENT.delete(editor)\n          NODE_TO_ELEMENT.delete(editor)\n\n          if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n            // @ts-ignore The `beforeinput` event isn't recognized.\n            ref.current.removeEventListener('beforeinput', onDOMBeforeInput)\n          }\n        } else {\n          // Attach a native DOM event handler for `beforeinput` events, because React's\n          // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n          // real `beforeinput` events sadly... (2019/11/04)\n          // https://github.com/facebook/react/issues/11211\n          if (HAS_BEFORE_INPUT_SUPPORT) {\n            // @ts-ignore The `beforeinput` event isn't recognized.\n            node.addEventListener('beforeinput', onDOMBeforeInput)\n          }\n        }\n\n        ref.current = node\n        if (typeof forwardedRef === 'function') {\n          forwardedRef(node)\n        } else if (forwardedRef) {\n          forwardedRef.current = node\n        }\n      },\n      [\n        onDOMSelectionChange,\n        scheduleOnDOMSelectionChange,\n        editor,\n        onDOMBeforeInput,\n        forwardedRef,\n      ]\n    )\n\n    useIsomorphicLayoutEffect(() => {\n      const window = ReactEditor.getWindow(editor)\n\n      // COMPAT: In Chrome, `selectionchange` events can fire when <input> and\n      // <textarea> elements are appended to the DOM, causing\n      // `editor.selection` to be overwritten in some circumstances.\n      // (2025/01/16) https://issues.chromium.org/issues/389368412\n      const onSelectionChange = ({ target }: Event) => {\n        const targetElement = target instanceof HTMLElement ? target : null\n        const targetTagName = targetElement?.tagName\n        if (targetTagName === 'INPUT' || targetTagName === 'TEXTAREA') {\n          return\n        }\n        scheduleOnDOMSelectionChange()\n      }\n\n      // Attach a native DOM event handler for `selectionchange`, because React's\n      // built-in `onSelect` handler doesn't fire for all selection changes. It's\n      // a leaky polyfill that only fires on keypresses or clicks. Instead, we\n      // want to fire for any change to the selection inside the editor.\n      // (2019/11/04) https://github.com/facebook/react/issues/5785\n      window.document.addEventListener('selectionchange', onSelectionChange)\n\n      // Listen for dragend and drop globally. In Firefox, if a drop handler\n      // initiates an operation that causes the originally dragged element to\n      // unmount, that element will not emit a dragend event. (2024/06/21)\n      const stoppedDragging = () => {\n        state.isDraggingInternally = false\n      }\n      window.document.addEventListener('dragend', stoppedDragging)\n      window.document.addEventListener('drop', stoppedDragging)\n\n      return () => {\n        window.document.removeEventListener(\n          'selectionchange',\n          onSelectionChange\n        )\n        window.document.removeEventListener('dragend', stoppedDragging)\n        window.document.removeEventListener('drop', stoppedDragging)\n      }\n    }, [scheduleOnDOMSelectionChange, state])\n\n    const decorations = decorate([editor, []])\n    const decorateContext = useDecorateContext(decorate)\n\n    const showPlaceholder =\n      placeholder &&\n      editor.children.length === 1 &&\n      Array.from(Node.texts(editor)).length === 1 &&\n      Node.string(editor) === '' &&\n      !isComposing\n\n    const placeHolderResizeHandler = useCallback(\n      (placeholderEl: HTMLElement | null) => {\n        if (placeholderEl && showPlaceholder) {\n          setPlaceholderHeight(placeholderEl.getBoundingClientRect()?.height)\n        } else {\n          setPlaceholderHeight(undefined)\n        }\n      },\n      [showPlaceholder]\n    )\n\n    if (showPlaceholder) {\n      const start = Editor.start(editor, [])\n      decorations.push({\n        [PLACEHOLDER_SYMBOL]: true,\n        placeholder,\n        onPlaceholderResize: placeHolderResizeHandler,\n        anchor: start,\n        focus: start,\n      })\n    }\n\n    const { marks } = editor\n    state.hasMarkPlaceholder = false\n\n    if (editor.selection && Range.isCollapsed(editor.selection) && marks) {\n      const { anchor } = editor.selection\n      const leaf = Node.leaf(editor, anchor.path)\n      const { text, ...rest } = leaf\n\n      // While marks isn't a 'complete' text, we can still use loose Text.equals\n      // here which only compares marks anyway.\n      if (!Text.equals(leaf, marks as Text, { loose: true })) {\n        state.hasMarkPlaceholder = true\n\n        const unset = Object.fromEntries(\n          Object.keys(rest).map(mark => [mark, null])\n        )\n\n        decorations.push({\n          [MARK_PLACEHOLDER_SYMBOL]: true,\n          ...unset,\n          ...marks,\n\n          anchor,\n          focus: anchor,\n        })\n      }\n    }\n\n    // Update EDITOR_TO_MARK_PLACEHOLDER_MARKS in setTimeout useEffect to ensure we don't set it\n    // before we receive the composition end event.\n    useEffect(() => {\n      setTimeout(() => {\n        const { selection } = editor\n        if (selection) {\n          const { anchor } = selection\n          const text = Node.leaf(editor, anchor.path)\n\n          // While marks isn't a 'complete' text, we can still use loose Text.equals\n          // here which only compares marks anyway.\n          if (marks && !Text.equals(text, marks as Text, { loose: true })) {\n            EDITOR_TO_PENDING_INSERTION_MARKS.set(editor, marks)\n            return\n          }\n        }\n\n        EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n      })\n    })\n\n    useFlushDeferredSelectorsOnRender()\n\n    return (\n      <ReadOnlyContext.Provider value={readOnly}>\n        <ComposingContext.Provider value={isComposing}>\n          <DecorateContext.Provider value={decorateContext}>\n            <RestoreDOM node={ref} receivedUserInput={receivedUserInput}>\n              <Component\n                role={readOnly ? undefined : 'textbox'}\n                aria-multiline={readOnly ? undefined : true}\n                translate=\"no\"\n                {...attributes}\n                // COMPAT: Certain browsers don't support the `beforeinput` event, so we'd\n                // have to use hacks to make these replacement-based features work.\n                // For SSR situations HAS_BEFORE_INPUT_SUPPORT is false and results in prop\n                // mismatch warning app moves to browser. Pass-through consumer props when\n                // not CAN_USE_DOM (SSR) and default to falsy value\n                spellCheck={\n                  HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n                    ? attributes.spellCheck\n                    : false\n                }\n                autoCorrect={\n                  HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n                    ? attributes.autoCorrect\n                    : 'false'\n                }\n                autoCapitalize={\n                  HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM\n                    ? attributes.autoCapitalize\n                    : 'false'\n                }\n                data-slate-editor\n                data-slate-node=\"value\"\n                // explicitly set this\n                contentEditable={!readOnly}\n                // in some cases, a decoration needs access to the range / selection to decorate a text node,\n                // then you will select the whole text node when you select part the of text\n                // this magic zIndex=\"-1\" will fix it\n                zindex={-1}\n                suppressContentEditableWarning\n                ref={callbackRef}\n                style={{\n                  ...(disableDefaultStyles\n                    ? {}\n                    : {\n                        // Allow positioning relative to the editable element.\n                        position: 'relative',\n                        // Preserve adjacent whitespace and new lines.\n                        whiteSpace: 'pre-wrap',\n                        // Allow words to break if they are too long.\n                        wordWrap: 'break-word',\n                        // Make the minimum height that of the placeholder.\n                        ...(placeholderHeight\n                          ? { minHeight: placeholderHeight }\n                          : {}),\n                      }),\n                  // Allow for passed-in styles to override anything.\n                  ...userStyle,\n                }}\n                onBeforeInput={useCallback(\n                  (event: React.FormEvent<HTMLDivElement>) => {\n                    // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n                    // fall back to React's leaky polyfill instead just for it. It\n                    // only works for the `insertText` input type.\n                    if (\n                      !HAS_BEFORE_INPUT_SUPPORT &&\n                      !readOnly &&\n                      !isEventHandled(event, attributes.onBeforeInput) &&\n                      ReactEditor.hasSelectableTarget(editor, event.target)\n                    ) {\n                      event.preventDefault()\n                      if (!ReactEditor.isComposing(editor)) {\n                        const text = (event as any).data as string\n                        Editor.insertText(editor, text)\n                      }\n                    }\n                  },\n                  [attributes.onBeforeInput, editor, readOnly]\n                )}\n                onInput={useCallback(\n                  (event: React.FormEvent<HTMLDivElement>) => {\n                    if (isEventHandled(event, attributes.onInput)) {\n                      return\n                    }\n\n                    if (androidInputManagerRef.current) {\n                      androidInputManagerRef.current.handleInput()\n                      return\n                    }\n\n                    // Flush native operations, as native events will have propogated\n                    // and we can correctly compare DOM text values in components\n                    // to stop rendering, so that browser functions like autocorrect\n                    // and spellcheck work as expected.\n                    for (const op of deferredOperations.current) {\n                      op()\n                    }\n                    deferredOperations.current = []\n\n                    // COMPAT: Since `beforeinput` doesn't fully `preventDefault`,\n                    // there's a chance that content might be placed in the browser's undo stack.\n                    // This means undo can be triggered even when the div is not focused,\n                    // and it only triggers the input event for the node. (2024/10/09)\n                    if (!ReactEditor.isFocused(editor)) {\n                      handleNativeHistoryEvents(\n                        editor,\n                        event.nativeEvent as InputEvent\n                      )\n                    }\n                  },\n                  [attributes.onInput, editor]\n                )}\n                onBlur={useCallback(\n                  (event: React.FocusEvent<HTMLDivElement>) => {\n                    if (\n                      readOnly ||\n                      state.isUpdatingSelection ||\n                      !ReactEditor.hasSelectableTarget(editor, event.target) ||\n                      isEventHandled(event, attributes.onBlur)\n                    ) {\n                      return\n                    }\n\n                    // COMPAT: If the current `activeElement` is still the previous\n                    // one, this is due to the window being blurred when the tab\n                    // itself becomes unfocused, so we want to abort early to allow to\n                    // editor to stay focused when the tab becomes focused again.\n                    const root = ReactEditor.findDocumentOrShadowRoot(editor)\n                    if (state.latestElement === root.activeElement) {\n                      return\n                    }\n\n                    const { relatedTarget } = event\n                    const el = ReactEditor.toDOMNode(editor, editor)\n\n                    // COMPAT: The event should be ignored if the focus is returning\n                    // to the editor from an embedded editable element (eg. an <input>\n                    // element inside a void node).\n                    if (relatedTarget === el) {\n                      return\n                    }\n\n                    // COMPAT: The event should be ignored if the focus is moving from\n                    // the editor to inside a void node's spacer element.\n                    if (\n                      isDOMElement(relatedTarget) &&\n                      relatedTarget.hasAttribute('data-slate-spacer')\n                    ) {\n                      return\n                    }\n\n                    // COMPAT: The event should be ignored if the focus is moving to a\n                    // non- editable section of an element that isn't a void node (eg.\n                    // a list item of the check list example).\n                    if (\n                      relatedTarget != null &&\n                      isDOMNode(relatedTarget) &&\n                      ReactEditor.hasDOMNode(editor, relatedTarget)\n                    ) {\n                      const node = ReactEditor.toSlateNode(\n                        editor,\n                        relatedTarget\n                      )\n\n                      if (Node.isElement(node) && !editor.isVoid(node)) {\n                        return\n                      }\n                    }\n\n                    // COMPAT: Safari doesn't always remove the selection even if the content-\n                    // editable element no longer has focus. Refer to:\n                    // https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n                    if (IS_WEBKIT) {\n                      const domSelection = getSelection(root)\n                      domSelection?.removeAllRanges()\n                    }\n\n                    IS_FOCUSED.delete(editor)\n                  },\n                  [\n                    readOnly,\n                    state.isUpdatingSelection,\n                    state.latestElement,\n                    editor,\n                    attributes.onBlur,\n                  ]\n                )}\n                onClick={useCallback(\n                  (event: React.MouseEvent<HTMLDivElement>) => {\n                    if (\n                      ReactEditor.hasTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onClick) &&\n                      isDOMNode(event.target)\n                    ) {\n                      const node = ReactEditor.toSlateNode(editor, event.target)\n                      const path = ReactEditor.findPath(editor, node)\n\n                      // At this time, the Slate document may be arbitrarily different,\n                      // because onClick handlers can change the document before we get here.\n                      // Therefore we must check that this path actually exists,\n                      // and that it still refers to the same node.\n                      if (\n                        !Editor.hasPath(editor, path) ||\n                        Node.get(editor, path) !== node\n                      ) {\n                        return\n                      }\n\n                      if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n                        let blockPath = path\n                        if (\n                          !(\n                            Node.isElement(node) && Editor.isBlock(editor, node)\n                          )\n                        ) {\n                          const block = Editor.above(editor, {\n                            match: n =>\n                              Node.isElement(n) && Editor.isBlock(editor, n),\n                            at: path,\n                          })\n\n                          blockPath = block?.[1] ?? path.slice(0, 1)\n                        }\n\n                        const range = Editor.range(editor, blockPath)\n                        Transforms.select(editor, range)\n                        return\n                      }\n\n                      if (readOnly) {\n                        return\n                      }\n\n                      const start = Editor.start(editor, path)\n                      const end = Editor.end(editor, path)\n                      const startVoid = Editor.void(editor, { at: start })\n                      const endVoid = Editor.void(editor, { at: end })\n\n                      if (\n                        startVoid &&\n                        endVoid &&\n                        Path.equals(startVoid[1], endVoid[1])\n                      ) {\n                        const range = Editor.range(editor, start)\n                        Transforms.select(editor, range)\n                      }\n                    }\n                  },\n                  [editor, attributes.onClick, readOnly]\n                )}\n                onCompositionEnd={useCallback(\n                  (event: React.CompositionEvent<HTMLDivElement>) => {\n                    if (isDOMEventTargetInput(event)) {\n                      return\n                    }\n                    if (ReactEditor.hasSelectableTarget(editor, event.target)) {\n                      if (ReactEditor.isComposing(editor)) {\n                        Promise.resolve().then(() => {\n                          setIsComposing(false)\n                          IS_COMPOSING.set(editor, false)\n                        })\n                      }\n\n                      androidInputManagerRef.current?.handleCompositionEnd(\n                        event\n                      )\n\n                      if (\n                        isEventHandled(event, attributes.onCompositionEnd) ||\n                        IS_ANDROID\n                      ) {\n                        return\n                      }\n\n                      // COMPAT: In Chrome, `beforeinput` events for compositions\n                      // aren't correct and never fire the \"insertFromComposition\"\n                      // type that we need. So instead, insert whenever a composition\n                      // ends since it will already have been committed to the DOM.\n                      if (\n                        !IS_WEBKIT &&\n                        !IS_FIREFOX_LEGACY &&\n                        !IS_IOS &&\n                        !IS_WECHATBROWSER &&\n                        !IS_UC_MOBILE &&\n                        event.data\n                      ) {\n                        const placeholderMarks =\n                          EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)\n                        EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n\n                        // Ensure we insert text with the marks the user was actually seeing\n                        if (placeholderMarks !== undefined) {\n                          EDITOR_TO_USER_MARKS.set(editor, editor.marks)\n                          editor.marks = placeholderMarks\n                        }\n\n                        Editor.insertText(editor, event.data)\n\n                        const userMarks = EDITOR_TO_USER_MARKS.get(editor)\n                        EDITOR_TO_USER_MARKS.delete(editor)\n                        if (userMarks !== undefined) {\n                          editor.marks = userMarks\n                        }\n                      }\n                    }\n                  },\n                  [attributes.onCompositionEnd, editor]\n                )}\n                onCompositionUpdate={useCallback(\n                  (event: React.CompositionEvent<HTMLDivElement>) => {\n                    if (\n                      ReactEditor.hasSelectableTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onCompositionUpdate) &&\n                      !isDOMEventTargetInput(event)\n                    ) {\n                      if (!ReactEditor.isComposing(editor)) {\n                        setIsComposing(true)\n                        IS_COMPOSING.set(editor, true)\n                      }\n                    }\n                  },\n                  [attributes.onCompositionUpdate, editor]\n                )}\n                onCompositionStart={useCallback(\n                  (event: React.CompositionEvent<HTMLDivElement>) => {\n                    if (isDOMEventTargetInput(event)) {\n                      return\n                    }\n                    if (ReactEditor.hasSelectableTarget(editor, event.target)) {\n                      androidInputManagerRef.current?.handleCompositionStart(\n                        event\n                      )\n\n                      if (\n                        isEventHandled(event, attributes.onCompositionStart) ||\n                        IS_ANDROID\n                      ) {\n                        return\n                      }\n\n                      setIsComposing(true)\n\n                      const { selection } = editor\n                      if (selection && Range.isExpanded(selection)) {\n                        Editor.deleteFragment(editor)\n                        return\n                      }\n                    }\n                  },\n                  [attributes.onCompositionStart, editor]\n                )}\n                onCopy={useCallback(\n                  (event: React.ClipboardEvent<HTMLDivElement>) => {\n                    if (\n                      ReactEditor.hasSelectableTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onCopy) &&\n                      !isDOMEventTargetInput(event)\n                    ) {\n                      event.preventDefault()\n                      ReactEditor.setFragmentData(\n                        editor,\n                        event.clipboardData,\n                        'copy'\n                      )\n                    }\n                  },\n                  [attributes.onCopy, editor]\n                )}\n                onCut={useCallback(\n                  (event: React.ClipboardEvent<HTMLDivElement>) => {\n                    if (\n                      !readOnly &&\n                      ReactEditor.hasSelectableTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onCut) &&\n                      !isDOMEventTargetInput(event)\n                    ) {\n                      event.preventDefault()\n                      ReactEditor.setFragmentData(\n                        editor,\n                        event.clipboardData,\n                        'cut'\n                      )\n                      const { selection } = editor\n\n                      if (selection) {\n                        if (Range.isExpanded(selection)) {\n                          Editor.deleteFragment(editor)\n                        } else {\n                          const node = Node.parent(\n                            editor,\n                            selection.anchor.path\n                          )\n                          if (Editor.isVoid(editor, node)) {\n                            Transforms.delete(editor)\n                          }\n                        }\n                      }\n                    }\n                  },\n                  [readOnly, editor, attributes.onCut]\n                )}\n                onDragOver={useCallback(\n                  (event: React.DragEvent<HTMLDivElement>) => {\n                    if (\n                      ReactEditor.hasTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onDragOver)\n                    ) {\n                      // Only when the target is void, call `preventDefault` to signal\n                      // that drops are allowed. Editable content is droppable by\n                      // default, and calling `preventDefault` hides the cursor.\n                      const node = ReactEditor.toSlateNode(editor, event.target)\n\n                      if (Node.isElement(node) && Editor.isVoid(editor, node)) {\n                        event.preventDefault()\n                      }\n                    }\n                  },\n                  [attributes.onDragOver, editor]\n                )}\n                onDragStart={useCallback(\n                  (event: React.DragEvent<HTMLDivElement>) => {\n                    if (\n                      !readOnly &&\n                      ReactEditor.hasTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onDragStart)\n                    ) {\n                      const node = ReactEditor.toSlateNode(editor, event.target)\n                      const path = ReactEditor.findPath(editor, node)\n                      const voidMatch =\n                        (Node.isElement(node) && Editor.isVoid(editor, node)) ||\n                        Editor.void(editor, { at: path, voids: true })\n\n                      // If starting a drag on a void node, make sure it is selected\n                      // so that it shows up in the selection's fragment.\n                      if (voidMatch) {\n                        const range = Editor.range(editor, path)\n                        Transforms.select(editor, range)\n                      }\n\n                      state.isDraggingInternally = true\n\n                      ReactEditor.setFragmentData(\n                        editor,\n                        event.dataTransfer,\n                        'drag'\n                      )\n                    }\n                  },\n                  [readOnly, editor, attributes.onDragStart, state]\n                )}\n                onDrop={useCallback(\n                  (event: React.DragEvent<HTMLDivElement>) => {\n                    if (\n                      !readOnly &&\n                      ReactEditor.hasTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onDrop)\n                    ) {\n                      event.preventDefault()\n\n                      // Keep a reference to the dragged range before updating selection\n                      const draggedRange = editor.selection\n\n                      // Find the range where the drop happened\n                      const range = ReactEditor.findEventRange(editor, event)\n                      const data = event.dataTransfer\n\n                      Transforms.select(editor, range)\n\n                      if (state.isDraggingInternally) {\n                        if (\n                          draggedRange &&\n                          !Range.equals(draggedRange, range) &&\n                          !Editor.void(editor, { at: range, voids: true })\n                        ) {\n                          Transforms.delete(editor, {\n                            at: draggedRange,\n                          })\n                        }\n                      }\n\n                      ReactEditor.insertData(editor, data)\n\n                      // When dragging from another source into the editor, it's possible\n                      // that the current editor does not have focus.\n                      if (!ReactEditor.isFocused(editor)) {\n                        ReactEditor.focus(editor)\n                      }\n                    }\n                  },\n                  [readOnly, editor, attributes.onDrop, state]\n                )}\n                onDragEnd={useCallback(\n                  (event: React.DragEvent<HTMLDivElement>) => {\n                    if (\n                      !readOnly &&\n                      state.isDraggingInternally &&\n                      attributes.onDragEnd &&\n                      ReactEditor.hasTarget(editor, event.target)\n                    ) {\n                      attributes.onDragEnd(event)\n                    }\n                  },\n                  [readOnly, state, attributes, editor]\n                )}\n                onFocus={useCallback(\n                  (event: React.FocusEvent<HTMLDivElement>) => {\n                    if (\n                      !readOnly &&\n                      !state.isUpdatingSelection &&\n                      ReactEditor.hasEditableTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onFocus)\n                    ) {\n                      const el = ReactEditor.toDOMNode(editor, editor)\n                      const root = ReactEditor.findDocumentOrShadowRoot(editor)\n                      state.latestElement = root.activeElement\n\n                      // COMPAT: If the editor has nested editable elements, the focus\n                      // can go to them. In Firefox, this must be prevented because it\n                      // results in issues with keyboard navigation. (2017/03/30)\n                      if (IS_FIREFOX && event.target !== el) {\n                        el.focus()\n                        return\n                      }\n\n                      IS_FOCUSED.set(editor, true)\n                    }\n                  },\n                  [readOnly, state, editor, attributes.onFocus]\n                )}\n                onKeyDown={useCallback(\n                  (event: React.KeyboardEvent<HTMLDivElement>) => {\n                    if (\n                      !readOnly &&\n                      ReactEditor.hasEditableTarget(editor, event.target)\n                    ) {\n                      androidInputManagerRef.current?.handleKeyDown(event)\n\n                      const { nativeEvent } = event\n\n                      // COMPAT: The composition end event isn't fired reliably in all browsers,\n                      // so we sometimes might end up stuck in a composition state even though we\n                      // aren't composing any more.\n                      if (\n                        ReactEditor.isComposing(editor) &&\n                        nativeEvent.isComposing === false\n                      ) {\n                        IS_COMPOSING.set(editor, false)\n                        setIsComposing(false)\n                      }\n\n                      if (\n                        isEventHandled(event, attributes.onKeyDown) ||\n                        ReactEditor.isComposing(editor)\n                      ) {\n                        return\n                      }\n\n                      const { selection } = editor\n                      const element =\n                        editor.children[\n                          selection !== null ? selection.focus.path[0] : 0\n                        ]\n                      const isRTL = getDirection(Node.string(element)) === 'rtl'\n\n                      // COMPAT: Since we prevent the default behavior on\n                      // `beforeinput` events, the browser doesn't think there's ever\n                      // any history stack to undo or redo, so we have to manage these\n                      // hotkeys ourselves. (2019/11/06)\n                      if (Hotkeys.isRedo(nativeEvent)) {\n                        event.preventDefault()\n                        const maybeHistoryEditor: any = editor\n\n                        if (typeof maybeHistoryEditor.redo === 'function') {\n                          maybeHistoryEditor.redo()\n                        }\n\n                        return\n                      }\n\n                      if (Hotkeys.isUndo(nativeEvent)) {\n                        event.preventDefault()\n                        const maybeHistoryEditor: any = editor\n\n                        if (typeof maybeHistoryEditor.undo === 'function') {\n                          maybeHistoryEditor.undo()\n                        }\n\n                        return\n                      }\n\n                      // COMPAT: Certain browsers don't handle the selection updates\n                      // properly. In Chrome, the selection isn't properly extended.\n                      // And in Firefox, the selection isn't properly collapsed.\n                      // (2017/10/17)\n                      if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n                        event.preventDefault()\n                        Transforms.move(editor, { unit: 'line', reverse: true })\n                        return\n                      }\n\n                      if (Hotkeys.isMoveLineForward(nativeEvent)) {\n                        event.preventDefault()\n                        Transforms.move(editor, { unit: 'line' })\n                        return\n                      }\n\n                      if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n                        event.preventDefault()\n                        Transforms.move(editor, {\n                          unit: 'line',\n                          edge: 'focus',\n                          reverse: true,\n                        })\n                        return\n                      }\n\n                      if (Hotkeys.isExtendLineForward(nativeEvent)) {\n                        event.preventDefault()\n                        Transforms.move(editor, { unit: 'line', edge: 'focus' })\n                        return\n                      }\n\n                      // COMPAT: If a void node is selected, or a zero-width text node\n                      // adjacent to an inline is selected, we need to handle these\n                      // hotkeys manually because browsers won't be able to skip over\n                      // the void node with the zero-width space not being an empty\n                      // string.\n                      if (Hotkeys.isMoveBackward(nativeEvent)) {\n                        event.preventDefault()\n\n                        if (selection && Range.isCollapsed(selection)) {\n                          Transforms.move(editor, { reverse: !isRTL })\n                        } else {\n                          Transforms.collapse(editor, {\n                            edge: isRTL ? 'end' : 'start',\n                          })\n                        }\n\n                        return\n                      }\n\n                      if (Hotkeys.isMoveForward(nativeEvent)) {\n                        event.preventDefault()\n\n                        if (selection && Range.isCollapsed(selection)) {\n                          Transforms.move(editor, { reverse: isRTL })\n                        } else {\n                          Transforms.collapse(editor, {\n                            edge: isRTL ? 'start' : 'end',\n                          })\n                        }\n\n                        return\n                      }\n\n                      if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n                        event.preventDefault()\n\n                        if (selection && Range.isExpanded(selection)) {\n                          Transforms.collapse(editor, { edge: 'focus' })\n                        }\n\n                        Transforms.move(editor, {\n                          unit: 'word',\n                          reverse: !isRTL,\n                        })\n                        return\n                      }\n\n                      if (Hotkeys.isMoveWordForward(nativeEvent)) {\n                        event.preventDefault()\n\n                        if (selection && Range.isExpanded(selection)) {\n                          Transforms.collapse(editor, { edge: 'focus' })\n                        }\n\n                        Transforms.move(editor, {\n                          unit: 'word',\n                          reverse: isRTL,\n                        })\n                        return\n                      }\n\n                      // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n                      // fall back to guessing at the input intention for hotkeys.\n                      // COMPAT: In iOS, some of these hotkeys are handled in the\n                      if (!HAS_BEFORE_INPUT_SUPPORT) {\n                        // We don't have a core behavior for these, but they change the\n                        // DOM if we don't prevent them, so we have to.\n                        if (\n                          Hotkeys.isBold(nativeEvent) ||\n                          Hotkeys.isItalic(nativeEvent) ||\n                          Hotkeys.isTransposeCharacter(nativeEvent)\n                        ) {\n                          event.preventDefault()\n                          return\n                        }\n\n                        if (Hotkeys.isSoftBreak(nativeEvent)) {\n                          event.preventDefault()\n                          Editor.insertSoftBreak(editor)\n                          return\n                        }\n\n                        if (Hotkeys.isSplitBlock(nativeEvent)) {\n                          event.preventDefault()\n                          Editor.insertBreak(editor)\n                          return\n                        }\n\n                        if (Hotkeys.isDeleteBackward(nativeEvent)) {\n                          event.preventDefault()\n\n                          if (selection && Range.isExpanded(selection)) {\n                            Editor.deleteFragment(editor, {\n                              direction: 'backward',\n                            })\n                          } else {\n                            Editor.deleteBackward(editor)\n                          }\n\n                          return\n                        }\n\n                        if (Hotkeys.isDeleteForward(nativeEvent)) {\n                          event.preventDefault()\n\n                          if (selection && Range.isExpanded(selection)) {\n                            Editor.deleteFragment(editor, {\n                              direction: 'forward',\n                            })\n                          } else {\n                            Editor.deleteForward(editor)\n                          }\n\n                          return\n                        }\n\n                        if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n                          event.preventDefault()\n\n                          if (selection && Range.isExpanded(selection)) {\n                            Editor.deleteFragment(editor, {\n                              direction: 'backward',\n                            })\n                          } else {\n                            Editor.deleteBackward(editor, { unit: 'line' })\n                          }\n\n                          return\n                        }\n\n                        if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n                          event.preventDefault()\n\n                          if (selection && Range.isExpanded(selection)) {\n                            Editor.deleteFragment(editor, {\n                              direction: 'forward',\n                            })\n                          } else {\n                            Editor.deleteForward(editor, { unit: 'line' })\n                          }\n\n                          return\n                        }\n\n                        if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n                          event.preventDefault()\n\n                          if (selection && Range.isExpanded(selection)) {\n                            Editor.deleteFragment(editor, {\n                              direction: 'backward',\n                            })\n                          } else {\n                            Editor.deleteBackward(editor, { unit: 'word' })\n                          }\n\n                          return\n                        }\n\n                        if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n                          event.preventDefault()\n\n                          if (selection && Range.isExpanded(selection)) {\n                            Editor.deleteFragment(editor, {\n                              direction: 'forward',\n                            })\n                          } else {\n                            Editor.deleteForward(editor, { unit: 'word' })\n                          }\n\n                          return\n                        }\n                      } else {\n                        if (IS_CHROME || IS_WEBKIT) {\n                          // COMPAT: Chrome and Safari support `beforeinput` event but do not fire\n                          // an event when deleting backwards in a selected void inline node\n                          if (\n                            selection &&\n                            (Hotkeys.isDeleteBackward(nativeEvent) ||\n                              Hotkeys.isDeleteForward(nativeEvent)) &&\n                            Range.isCollapsed(selection)\n                          ) {\n                            const currentNode = Node.parent(\n                              editor,\n                              selection.anchor.path\n                            )\n\n                            if (\n                              Node.isElement(currentNode) &&\n                              Editor.isVoid(editor, currentNode) &&\n                              (Editor.isInline(editor, currentNode) ||\n                                Editor.isBlock(editor, currentNode))\n                            ) {\n                              event.preventDefault()\n                              Editor.deleteBackward(editor, { unit: 'block' })\n\n                              return\n                            }\n                          }\n                        }\n                      }\n                    }\n                  },\n                  [readOnly, editor, attributes.onKeyDown]\n                )}\n                onPaste={useCallback(\n                  (event: React.ClipboardEvent<HTMLDivElement>) => {\n                    if (\n                      !readOnly &&\n                      ReactEditor.hasEditableTarget(editor, event.target) &&\n                      !isEventHandled(event, attributes.onPaste)\n                    ) {\n                      // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n                      // fall back to React's `onPaste` here instead.\n                      // COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events\n                      // when \"paste without formatting\" is used, so fallback. (2020/02/20)\n                      // COMPAT: Safari InputEvents generated by pasting won't include\n                      // application/x-slate-fragment items, so use the\n                      // ClipboardEvent here. (2023/03/15)\n                      if (\n                        !HAS_BEFORE_INPUT_SUPPORT ||\n                        isPlainTextOnlyPaste(event.nativeEvent) ||\n                        IS_WEBKIT\n                      ) {\n                        event.preventDefault()\n                        ReactEditor.insertData(editor, event.clipboardData)\n                      }\n                    }\n                  },\n                  [readOnly, editor, attributes.onPaste]\n                )}\n              >\n                <Children\n                  decorations={decorations}\n                  node={editor}\n                  renderElement={renderElement}\n                  renderChunk={renderChunk}\n                  renderPlaceholder={renderPlaceholder}\n                  renderLeaf={renderLeaf}\n                  renderText={renderText}\n                />\n              </Component>\n            </RestoreDOM>\n          </DecorateContext.Provider>\n        </ComposingContext.Provider>\n      </ReadOnlyContext.Provider>\n    )\n  }\n)\n\n/**\n * The props that get passed to renderPlaceholder\n */\nexport type RenderPlaceholderProps = {\n  children: any\n  attributes: {\n    'data-slate-placeholder': boolean\n    dir?: 'rtl'\n    contentEditable: boolean\n    ref: React.RefCallback<any>\n    style: React.CSSProperties\n  }\n}\n\n/**\n * The default placeholder element\n */\n\nexport const DefaultPlaceholder = ({\n  attributes,\n  children,\n}: RenderPlaceholderProps) => (\n  // COMPAT: Artificially add a line-break to the end on the placeholder element\n  // to prevent Android IMEs to pick up its content in autocorrect and to auto-capitalize the first letter\n  <span {...attributes}>\n    {children}\n    {IS_ANDROID && <br />}\n  </span>\n)\n\n/**\n * A default memoized decorate function.\n */\n\nexport const defaultDecorate: (entry: NodeEntry) => DecoratedRange[] = () => []\n\n/**\n * A default implement to scroll dom range into view.\n */\n\nexport const defaultScrollSelectionIntoView = (\n  editor: ReactEditor,\n  domRange: DOMRange\n) => {\n  // Scroll to the focus point of the selection, in case the selection is expanded\n  const isBackward = !!editor.selection && Range.isBackward(editor.selection)\n  const domFocusPoint = domRange.cloneRange()\n  domFocusPoint.collapse(isBackward)\n\n  if (domFocusPoint.getBoundingClientRect) {\n    const leafEl = domFocusPoint.startContainer.parentElement!\n\n    // COMPAT: In Chrome, domFocusPoint.getBoundingClientRect() can return zero dimensions for valid ranges (e.g. line breaks).\n    // When this happens, do not scroll like most editors do.\n    const domRect = domFocusPoint.getBoundingClientRect()\n    const isZeroDimensionRect =\n      domRect.width === 0 &&\n      domRect.height === 0 &&\n      domRect.x === 0 &&\n      domRect.y === 0\n\n    if (isZeroDimensionRect) {\n      const leafRect = leafEl.getBoundingClientRect()\n      const leafHasDimensions = leafRect.width > 0 || leafRect.height > 0\n\n      if (leafHasDimensions) {\n        return\n      }\n    }\n\n    // Default behavior: use domFocusPoint's getBoundingClientRect\n    leafEl.getBoundingClientRect =\n      domFocusPoint.getBoundingClientRect.bind(domFocusPoint)\n    scrollIntoView(leafEl, {\n      scrollMode: 'if-needed',\n    })\n\n    // @ts-expect-error an unorthodox delete D:\n    delete leafEl.getBoundingClientRect\n  }\n}\n\n/**\n * Check if an event is overrided by a handler.\n */\n\nexport const isEventHandled = <\n  EventType extends React.SyntheticEvent<unknown, unknown>,\n>(\n  event: EventType,\n  handler?: (event: EventType) => void | boolean\n) => {\n  if (!handler) {\n    return false\n  }\n  // The custom event handler may return a boolean to specify whether the event\n  // shall be treated as being handled or not.\n  const shouldTreatEventAsHandled = handler(event)\n\n  if (shouldTreatEventAsHandled != null) {\n    return shouldTreatEventAsHandled\n  }\n\n  return event.isDefaultPrevented() || event.isPropagationStopped()\n}\n\n/**\n * Check if the event's target is an input element\n */\nexport const isDOMEventTargetInput = <\n  EventType extends React.SyntheticEvent<unknown, unknown>,\n>(\n  event: EventType\n) => {\n  return (\n    isDOMNode(event.target) &&\n    (event.target instanceof HTMLInputElement ||\n      event.target instanceof HTMLTextAreaElement)\n  )\n}\n\n/**\n * Check if a DOM event is overrided by a handler.\n */\n\nexport const isDOMEventHandled = <E extends Event>(\n  event: E,\n  handler?: (event: E) => void | boolean\n) => {\n  if (!handler) {\n    return false\n  }\n\n  // The custom event handler may return a boolean to specify whether the event\n  // shall be treated as being handled or not.\n  const shouldTreatEventAsHandled = handler(event)\n\n  if (shouldTreatEventAsHandled != null) {\n    return shouldTreatEventAsHandled\n  }\n\n  return event.defaultPrevented\n}\n\nconst handleNativeHistoryEvents = (editor: Editor, event: InputEvent) => {\n  const maybeHistoryEditor: any = editor\n  if (\n    event.inputType === 'historyUndo' &&\n    typeof maybeHistoryEditor.undo === 'function'\n  ) {\n    maybeHistoryEditor.undo()\n    return\n  }\n  if (\n    event.inputType === 'historyRedo' &&\n    typeof maybeHistoryEditor.redo === 'function'\n  ) {\n    maybeHistoryEditor.redo()\n    return\n  }\n}\n"
  },
  {
    "path": "packages/slate-react/src/components/element.tsx",
    "content": "import getDirection from 'direction'\nimport React, { useCallback } from 'react'\nimport { JSX } from 'react'\nimport { Editor, Element as SlateElement, Node, DecoratedRange } from 'slate'\nimport { ReactEditor, useReadOnly, useSlateStatic } from '..'\nimport useChildren from '../hooks/use-children'\nimport { isElementDecorationsEqual } from 'slate-dom'\nimport {\n  EDITOR_TO_KEY_TO_ELEMENT,\n  ELEMENT_TO_NODE,\n  NODE_TO_ELEMENT,\n  NODE_TO_INDEX,\n  NODE_TO_PARENT,\n} from 'slate-dom'\nimport {\n  RenderChunkProps,\n  RenderElementProps,\n  RenderLeafProps,\n  RenderPlaceholderProps,\n  RenderTextProps,\n} from './editable'\n\nimport Text from './text'\nimport { useDecorations } from '../hooks/use-decorations'\n\nconst defaultRenderElement = (props: RenderElementProps) => (\n  <DefaultElement {...props} />\n)\n\n/**\n * Element.\n */\n\nconst Element = (props: {\n  decorations: DecoratedRange[]\n  element: SlateElement\n  renderElement?: (props: RenderElementProps) => React.JSX.Element\n  renderChunk?: (props: RenderChunkProps) => React.JSX.Element\n  renderPlaceholder: (props: RenderPlaceholderProps) => React.JSX.Element\n  renderText?: (props: RenderTextProps) => React.JSX.Element\n  renderLeaf?: (props: RenderLeafProps) => React.JSX.Element\n}) => {\n  const {\n    decorations: parentDecorations,\n    element,\n    renderElement = defaultRenderElement,\n    renderChunk,\n    renderPlaceholder,\n    renderLeaf,\n    renderText,\n  } = props\n  const editor = useSlateStatic()\n  const readOnly = useReadOnly()\n  const isInline = editor.isInline(element)\n  const decorations = useDecorations(element, parentDecorations)\n  const key = ReactEditor.findKey(editor, element)\n  const ref = useCallback(\n    (ref: HTMLElement | null) => {\n      // Update element-related weak maps with the DOM element ref.\n      const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n      if (ref) {\n        KEY_TO_ELEMENT?.set(key, ref)\n        NODE_TO_ELEMENT.set(element, ref)\n        ELEMENT_TO_NODE.set(ref, element)\n      } else {\n        KEY_TO_ELEMENT?.delete(key)\n        NODE_TO_ELEMENT.delete(element)\n      }\n    },\n    [editor, key, element]\n  )\n  let children: React.ReactNode = useChildren({\n    decorations,\n    node: element,\n    renderElement,\n    renderChunk,\n    renderPlaceholder,\n    renderLeaf,\n    renderText,\n  })\n\n  // Attributes that the developer must mix into the element in their\n  // custom node renderer component.\n  const attributes: {\n    'data-slate-node': 'element'\n    'data-slate-void'?: true\n    'data-slate-inline'?: true\n    contentEditable?: false\n    dir?: 'rtl'\n    ref: any\n  } = {\n    'data-slate-node': 'element',\n    ref,\n  }\n\n  if (isInline) {\n    attributes['data-slate-inline'] = true\n  }\n\n  // If it's a block node with inline children, add the proper `dir` attribute\n  // for text direction.\n  if (!isInline && Editor.hasInlines(editor, element)) {\n    const text = Node.string(element)\n    const dir = getDirection(text)\n\n    if (dir === 'rtl') {\n      attributes.dir = dir\n    }\n  }\n\n  // If it's a void node, wrap the children in extra void-specific elements.\n  if (Editor.isVoid(editor, element)) {\n    attributes['data-slate-void'] = true\n\n    if (!readOnly && isInline) {\n      attributes.contentEditable = false\n    }\n\n    const Tag = isInline ? 'span' : 'div'\n    const [[text]] = Node.texts(element)\n\n    children = (\n      <Tag\n        data-slate-spacer\n        style={{\n          height: '0',\n          color: 'transparent',\n          outline: 'none',\n          position: 'absolute',\n        }}\n      >\n        <Text\n          renderPlaceholder={renderPlaceholder}\n          decorations={[]}\n          isLast={false}\n          parent={element}\n          text={text}\n        />\n      </Tag>\n    )\n\n    NODE_TO_INDEX.set(text, 0)\n    NODE_TO_PARENT.set(text, element)\n  }\n\n  return renderElement({ attributes, children, element })\n}\n\nconst MemoizedElement = React.memo(Element, (prev, next) => {\n  return (\n    prev.element === next.element &&\n    prev.renderElement === next.renderElement &&\n    prev.renderChunk === next.renderChunk &&\n    prev.renderText === next.renderText &&\n    prev.renderLeaf === next.renderLeaf &&\n    prev.renderPlaceholder === next.renderPlaceholder &&\n    isElementDecorationsEqual(prev.decorations, next.decorations)\n  )\n})\n\n/**\n * The default element renderer.\n */\n\nexport const DefaultElement = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n  const editor = useSlateStatic()\n  const Tag = editor.isInline(element) ? 'span' : 'div'\n  return (\n    <Tag {...attributes} style={{ position: 'relative' }}>\n      {children}\n    </Tag>\n  )\n}\n\nexport default MemoizedElement\n"
  },
  {
    "path": "packages/slate-react/src/components/leaf.tsx",
    "content": "import React, {\n  useRef,\n  useCallback,\n  MutableRefObject,\n  useState,\n  useEffect,\n} from 'react'\nimport { JSX } from 'react'\nimport { Element, LeafPosition, Text } from 'slate'\nimport { ResizeObserver as ResizeObserverPolyfill } from '@juggle/resize-observer'\nimport String from './string'\nimport { PLACEHOLDER_SYMBOL, EDITOR_TO_PLACEHOLDER_ELEMENT } from 'slate-dom'\nimport { RenderLeafProps, RenderPlaceholderProps } from './editable'\nimport { useSlateStatic } from '../hooks/use-slate-static'\nimport { IS_WEBKIT, IS_ANDROID } from 'slate-dom'\n\n// Delay the placeholder on Android to prevent the keyboard from closing.\n// (https://github.com/ianstormtaylor/slate/pull/5368)\nconst PLACEHOLDER_DELAY = IS_ANDROID ? 300 : 0\n\nfunction disconnectPlaceholderResizeObserver(\n  placeholderResizeObserver: MutableRefObject<ResizeObserver | null>,\n  releaseObserver: boolean\n) {\n  if (placeholderResizeObserver.current) {\n    placeholderResizeObserver.current.disconnect()\n    if (releaseObserver) {\n      placeholderResizeObserver.current = null\n    }\n  }\n}\n\ntype TimerId = ReturnType<typeof setTimeout> | null\n\nfunction clearTimeoutRef(timeoutRef: MutableRefObject<TimerId>) {\n  if (timeoutRef.current) {\n    clearTimeout(timeoutRef.current)\n    timeoutRef.current = null\n  }\n}\n\nconst defaultRenderLeaf = (props: RenderLeafProps) => <DefaultLeaf {...props} />\n\n/**\n * Individual leaves in a text node with unique formatting.\n */\nconst Leaf = (props: {\n  isLast: boolean\n  leaf: Text\n  parent: Element\n  renderPlaceholder: (props: RenderPlaceholderProps) => React.JSX.Element\n  renderLeaf?: (props: RenderLeafProps) => React.JSX.Element\n  text: Text\n  leafPosition?: LeafPosition\n}) => {\n  const {\n    leaf,\n    isLast,\n    text,\n    parent,\n    renderPlaceholder,\n    renderLeaf = defaultRenderLeaf,\n    leafPosition,\n  } = props\n\n  const editor = useSlateStatic()\n  const placeholderResizeObserver = useRef<ResizeObserver | null>(null)\n  const placeholderRef = useRef<HTMLElement | null>(null)\n  const [showPlaceholder, setShowPlaceholder] = useState(false)\n  const showPlaceholderTimeoutRef = useRef<TimerId>(null)\n\n  const callbackPlaceholderRef = useCallback(\n    (placeholderEl: HTMLElement | null) => {\n      disconnectPlaceholderResizeObserver(\n        placeholderResizeObserver,\n        placeholderEl == null\n      )\n\n      if (placeholderEl == null) {\n        EDITOR_TO_PLACEHOLDER_ELEMENT.delete(editor)\n        leaf.onPlaceholderResize?.(null)\n      } else {\n        EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl)\n\n        if (!placeholderResizeObserver.current) {\n          // Create a new observer and observe the placeholder element.\n          const ResizeObserver = window.ResizeObserver || ResizeObserverPolyfill\n          placeholderResizeObserver.current = new ResizeObserver(() => {\n            leaf.onPlaceholderResize?.(placeholderEl)\n          })\n        }\n        placeholderResizeObserver.current.observe(placeholderEl)\n        placeholderRef.current = placeholderEl\n      }\n    },\n    [placeholderRef, leaf, editor]\n  )\n\n  let children = (\n    <String isLast={isLast} leaf={leaf} parent={parent} text={text} />\n  )\n\n  const leafIsPlaceholder = Boolean(leaf[PLACEHOLDER_SYMBOL])\n  useEffect(() => {\n    if (leafIsPlaceholder) {\n      if (!showPlaceholderTimeoutRef.current) {\n        // Delay the placeholder, so it will not render in a selection\n        showPlaceholderTimeoutRef.current = setTimeout(() => {\n          setShowPlaceholder(true)\n          showPlaceholderTimeoutRef.current = null\n        }, PLACEHOLDER_DELAY)\n      }\n    } else {\n      clearTimeoutRef(showPlaceholderTimeoutRef)\n      setShowPlaceholder(false)\n    }\n    return () => clearTimeoutRef(showPlaceholderTimeoutRef)\n  }, [leafIsPlaceholder, setShowPlaceholder])\n\n  if (leafIsPlaceholder && showPlaceholder) {\n    const placeholderProps: RenderPlaceholderProps = {\n      children: leaf.placeholder,\n      attributes: {\n        'data-slate-placeholder': true,\n        style: {\n          position: 'absolute',\n          top: 0,\n          pointerEvents: 'none',\n          width: '100%',\n          maxWidth: '100%',\n          display: 'block',\n          opacity: '0.333',\n          userSelect: 'none',\n          textDecoration: 'none',\n          // Fixes https://github.com/udecode/plate/issues/2315\n          WebkitUserModify: IS_WEBKIT ? 'inherit' : undefined,\n        },\n        contentEditable: false,\n        ref: callbackPlaceholderRef,\n      },\n    }\n\n    children = (\n      <React.Fragment>\n        {children}\n        {renderPlaceholder(placeholderProps)}\n      </React.Fragment>\n    )\n  }\n\n  // COMPAT: Having the `data-` attributes on these leaf elements ensures that\n  // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\n  // contenteditable behaviors. (2019/05/08)\n  const attributes: {\n    'data-slate-leaf': true\n  } = {\n    'data-slate-leaf': true,\n  }\n\n  return renderLeaf({\n    attributes,\n    children,\n    leaf,\n    text,\n    leafPosition,\n  })\n}\n\nconst MemoizedLeaf = React.memo(Leaf, (prev, next) => {\n  return (\n    next.parent === prev.parent &&\n    next.isLast === prev.isLast &&\n    next.renderLeaf === prev.renderLeaf &&\n    next.renderPlaceholder === prev.renderPlaceholder &&\n    next.text === prev.text &&\n    Text.equals(next.leaf, prev.leaf) &&\n    next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL]\n  )\n})\n\nexport const DefaultLeaf = (props: RenderLeafProps) => {\n  const { attributes, children } = props\n  return <span {...attributes}>{children}</span>\n}\n\nexport default MemoizedLeaf\n"
  },
  {
    "path": "packages/slate-react/src/components/restore-dom/restore-dom-manager.ts",
    "content": "import { RefObject } from 'react'\nimport { ReactEditor } from '../../plugin/react-editor'\nimport { isTrackedMutation } from 'slate-dom'\n\nexport type RestoreDOMManager = {\n  registerMutations: (mutations: MutationRecord[]) => void\n  restoreDOM: () => void\n  clear: () => void\n}\n\nexport const createRestoreDomManager = (\n  editor: ReactEditor,\n  receivedUserInput: RefObject<boolean>\n): RestoreDOMManager => {\n  let bufferedMutations: MutationRecord[] = []\n\n  const clear = () => {\n    bufferedMutations = []\n  }\n\n  const registerMutations = (mutations: MutationRecord[]) => {\n    if (!receivedUserInput.current) {\n      return\n    }\n\n    const trackedMutations = mutations.filter(mutation =>\n      isTrackedMutation(editor, mutation, mutations)\n    )\n\n    bufferedMutations.push(...trackedMutations)\n  }\n\n  function restoreDOM() {\n    if (bufferedMutations.length > 0) {\n      bufferedMutations.reverse().forEach(mutation => {\n        if (mutation.type === 'characterData') {\n          // We don't want to restore the DOM for characterData mutations\n          // because this interrupts the composition.\n          return\n        }\n\n        mutation.removedNodes.forEach(node => {\n          mutation.target.insertBefore(node, mutation.nextSibling)\n        })\n\n        mutation.addedNodes.forEach(node => {\n          mutation.target.removeChild(node)\n        })\n      })\n\n      // Clear buffered mutations to ensure we don't undo them twice\n      clear()\n    }\n  }\n\n  return {\n    registerMutations,\n    restoreDOM,\n    clear,\n  }\n}\n"
  },
  {
    "path": "packages/slate-react/src/components/restore-dom/restore-dom.tsx",
    "content": "import React, {\n  Component,\n  ComponentType,\n  ContextType,\n  ReactNode,\n  RefObject,\n} from 'react'\nimport { EditorContext } from '../../hooks/use-slate-static'\nimport { IS_ANDROID } from 'slate-dom'\nimport {\n  createRestoreDomManager,\n  RestoreDOMManager,\n} from './restore-dom-manager'\n\nconst MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n  subtree: true,\n  childList: true,\n  characterData: true,\n  characterDataOldValue: true,\n}\n\ntype RestoreDOMProps = {\n  children?: ReactNode\n  receivedUserInput: RefObject<boolean>\n  node: RefObject<HTMLDivElement>\n}\n\n// We have to use a class component here since we rely on `getSnapshotBeforeUpdate` which has no FC equivalent\n// to run code synchronously immediately before react commits the component update to the DOM.\nclass RestoreDOMComponent extends Component<RestoreDOMProps> {\n  static contextType = EditorContext\n  context: ContextType<typeof EditorContext> = null\n\n  private manager: RestoreDOMManager | null = null\n  private mutationObserver: MutationObserver | null = null\n\n  observe() {\n    const { node } = this.props\n    if (!node.current) {\n      throw new Error('Failed to attach MutationObserver, `node` is undefined')\n    }\n\n    this.mutationObserver?.observe(node.current, MUTATION_OBSERVER_CONFIG)\n  }\n\n  componentDidMount() {\n    const { receivedUserInput } = this.props\n    const editor = this.context!\n\n    this.manager = createRestoreDomManager(editor, receivedUserInput)\n    this.mutationObserver = new MutationObserver(this.manager.registerMutations)\n\n    this.observe()\n  }\n\n  getSnapshotBeforeUpdate() {\n    const pendingMutations = this.mutationObserver?.takeRecords()\n    if (pendingMutations?.length) {\n      this.manager?.registerMutations(pendingMutations)\n    }\n\n    this.mutationObserver?.disconnect()\n    this.manager?.restoreDOM()\n\n    return null\n  }\n\n  componentDidUpdate() {\n    this.manager?.clear()\n    this.observe()\n  }\n\n  componentWillUnmount() {\n    this.mutationObserver?.disconnect()\n  }\n\n  render() {\n    return this.props.children\n  }\n}\n\nexport const RestoreDOM: ComponentType<RestoreDOMProps> = IS_ANDROID\n  ? RestoreDOMComponent\n  : ({ children }) => <>{children}</>\n"
  },
  {
    "path": "packages/slate-react/src/components/slate.tsx",
    "content": "import React, { useCallback, useEffect, useState } from 'react'\nimport { Descendant, Editor, Node, Operation, Scrubber, Selection } from 'slate'\nimport { EDITOR_TO_ON_CHANGE } from 'slate-dom'\nimport { FocusedContext } from '../hooks/use-focused'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport {\n  useSelectorContext,\n  SlateSelectorContext,\n} from '../hooks/use-slate-selector'\nimport { EditorContext } from '../hooks/use-slate-static'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { REACT_MAJOR_VERSION } from '../utils/environment'\n\n/**\n * A wrapper around the provider to handle `onChange` events, because the editor\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\n */\n\nexport const Slate = (props: {\n  editor: ReactEditor\n  initialValue: Descendant[]\n  children: React.ReactNode\n  onChange?: (value: Descendant[]) => void\n  onSelectionChange?: (selection: Selection) => void\n  onValueChange?: (value: Descendant[]) => void\n}) => {\n  const {\n    editor,\n    children,\n    onChange,\n    onSelectionChange,\n    onValueChange,\n    initialValue,\n    ...rest\n  } = props\n\n  // Run once on first mount, but before `useEffect` or render\n  React.useState(() => {\n    if (!Node.isNodeList(initialValue)) {\n      throw new Error(\n        `[Slate] initialValue is invalid! Expected a list of elements but got: ${Scrubber.stringify(\n          initialValue\n        )}`\n      )\n    }\n\n    if (!Editor.isEditor(editor)) {\n      throw new Error(\n        `[Slate] editor is invalid! You passed: ${Scrubber.stringify(editor)}`\n      )\n    }\n\n    editor.children = initialValue\n    Object.assign(editor, rest)\n  })\n\n  const { selectorContext, onChange: handleSelectorChange } =\n    useSelectorContext()\n\n  const onContextChange = useCallback(() => {\n    if (onChange) {\n      onChange(editor.children)\n    }\n    if (\n      onSelectionChange &&\n      editor.operations.find(op => op.type === 'set_selection')\n    ) {\n      onSelectionChange(editor.selection)\n    }\n    if (\n      onValueChange &&\n      editor.operations.find(op => op.type !== 'set_selection')\n    ) {\n      onValueChange(editor.children)\n    }\n\n    handleSelectorChange()\n  }, [editor, handleSelectorChange, onChange, onSelectionChange, onValueChange])\n\n  useEffect(() => {\n    EDITOR_TO_ON_CHANGE.set(editor, onContextChange)\n\n    return () => {\n      EDITOR_TO_ON_CHANGE.set(editor, () => {})\n    }\n  }, [editor, onContextChange])\n\n  const [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor))\n\n  useEffect(() => {\n    setIsFocused(ReactEditor.isFocused(editor))\n  }, [editor])\n\n  useIsomorphicLayoutEffect(() => {\n    const fn = () => setIsFocused(ReactEditor.isFocused(editor))\n    if (REACT_MAJOR_VERSION >= 17) {\n      // In React >= 17 onFocus and onBlur listen to the focusin and focusout events during the bubbling phase.\n      // Therefore in order for <Editable />'s handlers to run first, which is necessary for ReactEditor.isFocused(editor)\n      // to return the correct value, we have to listen to the focusin and focusout events without useCapture here.\n      document.addEventListener('focusin', fn)\n      document.addEventListener('focusout', fn)\n      return () => {\n        document.removeEventListener('focusin', fn)\n        document.removeEventListener('focusout', fn)\n      }\n    } else {\n      document.addEventListener('focus', fn, true)\n      document.addEventListener('blur', fn, true)\n      return () => {\n        document.removeEventListener('focus', fn, true)\n        document.removeEventListener('blur', fn, true)\n      }\n    }\n  }, [editor])\n\n  return (\n    <SlateSelectorContext.Provider value={selectorContext}>\n      <EditorContext.Provider value={editor}>\n        <FocusedContext.Provider value={isFocused}>\n          {children}\n        </FocusedContext.Provider>\n      </EditorContext.Provider>\n    </SlateSelectorContext.Provider>\n  )\n}\n"
  },
  {
    "path": "packages/slate-react/src/components/string.tsx",
    "content": "import React, { forwardRef, memo, useRef, useState } from 'react'\nimport { Editor, Text, Path, Element, Node } from 'slate'\n\nimport { ReactEditor, useSlateStatic } from '..'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { IS_ANDROID } from 'slate-dom'\nimport { MARK_PLACEHOLDER_SYMBOL } from 'slate-dom'\n\n/**\n * Leaf content strings.\n */\n\nconst String = (props: {\n  isLast: boolean\n  leaf: Text\n  parent: Element\n  text: Text\n}) => {\n  const { isLast, leaf, parent, text } = props\n  const editor = useSlateStatic()\n  const path = ReactEditor.findPath(editor, text)\n  const parentPath = Path.parent(path)\n  const isMarkPlaceholder = Boolean(leaf[MARK_PLACEHOLDER_SYMBOL])\n\n  // COMPAT: Render text inside void nodes with a zero-width space.\n  // So the node can contain selection but the text is not visible.\n  if (editor.isVoid(parent)) {\n    return <ZeroWidthString length={Node.string(parent).length} />\n  }\n\n  // COMPAT: If this is the last text node in an empty block, render a zero-\n  // width space that will convert into a line break when copying and pasting\n  // to support expected plain text.\n  if (\n    leaf.text === '' &&\n    parent.children[parent.children.length - 1] === text &&\n    !editor.isInline(parent) &&\n    Editor.string(editor, parentPath) === ''\n  ) {\n    return <ZeroWidthString isLineBreak isMarkPlaceholder={isMarkPlaceholder} />\n  }\n\n  // COMPAT: If the text is empty, it's because it's on the edge of an inline\n  // node, so we render a zero-width space so that the selection can be\n  // inserted next to it still.\n  if (leaf.text === '') {\n    return <ZeroWidthString isMarkPlaceholder={isMarkPlaceholder} />\n  }\n\n  // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n  // so we need to add an extra trailing new lines to prevent that.\n  if (isLast && leaf.text.slice(-1) === '\\n') {\n    return <TextString isTrailing text={leaf.text} />\n  }\n\n  return <TextString text={leaf.text} />\n}\n\n/**\n * Leaf strings with text in them.\n */\nconst TextString = (props: { text: string; isTrailing?: boolean }) => {\n  const { text, isTrailing = false } = props\n  const ref = useRef<HTMLSpanElement>(null)\n  const getTextContent = () => {\n    return `${text ?? ''}${isTrailing ? '\\n' : ''}`\n  }\n  const [initialText] = useState(getTextContent)\n\n  // This is the actual text rendering boundary where we interface with the DOM\n  // The text is not rendered as part of the virtual DOM, as since we handle basic character insertions natively,\n  // updating the DOM is not a one way dataflow anymore. What we need here is not reconciliation and diffing\n  // with previous version of the virtual DOM, but rather diffing with the actual DOM element, and replace the DOM <span> content\n  // exactly if and only if its current content does not match our current virtual DOM.\n  // Otherwise the DOM TextNode would always be replaced by React as the user types, which interferes with native text features,\n  // eg makes native spellcheck opt out from checking the text node.\n\n  // useLayoutEffect: updating our span before browser paint\n  useIsomorphicLayoutEffect(() => {\n    // null coalescing text to make sure we're not outputing \"null\" as a string in the extreme case it is nullish at runtime\n    const textWithTrailing = getTextContent()\n\n    if (ref.current && ref.current.textContent !== textWithTrailing) {\n      ref.current.textContent = textWithTrailing\n    }\n\n    // intentionally not specifying dependencies, so that this effect runs on every render\n    // as this effectively replaces \"specifying the text in the virtual DOM under the <span> below\" on each render\n  })\n\n  // We intentionally render a memoized <span> that only receives the initial text content when the component is mounted.\n  // We defer to the layout effect above to update the `textContent` of the span element when needed.\n  return <MemoizedText ref={ref}>{initialText}</MemoizedText>\n}\n\nconst MemoizedText = memo(\n  forwardRef<HTMLSpanElement, { children: string }>((props, ref) => {\n    return (\n      <span data-slate-string ref={ref}>\n        {props.children}\n      </span>\n    )\n  })\n)\n\n/**\n * Leaf strings without text, render as zero-width strings.\n */\n\nexport const ZeroWidthString = (props: {\n  length?: number\n  isLineBreak?: boolean\n  isMarkPlaceholder?: boolean\n}) => {\n  const { length = 0, isLineBreak = false, isMarkPlaceholder = false } = props\n\n  const attributes: {\n    'data-slate-zero-width': string\n    'data-slate-length': number\n    'data-slate-mark-placeholder'?: boolean\n  } = {\n    'data-slate-zero-width': isLineBreak ? 'n' : 'z',\n    'data-slate-length': length,\n  }\n\n  if (isMarkPlaceholder) {\n    attributes['data-slate-mark-placeholder'] = true\n  }\n\n  // FIXME: Inserting the \\uFEFF on iOS breaks capitalization at the start of an\n  // empty editor (https://github.com/ianstormtaylor/slate/issues/5199).\n  //\n  // However, not inserting the \\uFEFF on iOS causes the editor to crash when\n  // inserting any text using an IME at the start of a block. This appears to\n  // be because accepting an IME suggestion when at the start of a block (no\n  // preceding \\uFEFF) removes one or more DOM elements that `toSlateRange`\n  // depends on. (https://github.com/ianstormtaylor/slate/issues/5703)\n  return (\n    <span {...attributes}>\n      {!IS_ANDROID || !isLineBreak ? '\\uFEFF' : null}\n      {isLineBreak ? <br /> : null}\n    </span>\n  )\n}\n\nexport default String\n"
  },
  {
    "path": "packages/slate-react/src/components/text.tsx",
    "content": "import React, { useCallback, useRef } from 'react'\nimport { Element, Text as SlateText, DecoratedRange } from 'slate'\nimport { ReactEditor, useSlateStatic } from '..'\nimport { isTextDecorationsEqual } from 'slate-dom'\nimport {\n  EDITOR_TO_KEY_TO_ELEMENT,\n  ELEMENT_TO_NODE,\n  NODE_TO_ELEMENT,\n} from 'slate-dom'\nimport {\n  RenderLeafProps,\n  RenderPlaceholderProps,\n  RenderTextProps,\n} from './editable'\nimport Leaf from './leaf'\nimport { useDecorations } from '../hooks/use-decorations'\n\nconst defaultRenderText = (props: RenderTextProps) => <DefaultText {...props} />\n\n/**\n * Text.\n */\n\nconst Text = (props: {\n  decorations: DecoratedRange[]\n  isLast: boolean\n  parent: Element\n  renderPlaceholder: (props: RenderPlaceholderProps) => React.JSX.Element\n  renderLeaf?: (props: RenderLeafProps) => React.JSX.Element\n  renderText?: (props: RenderTextProps) => React.JSX.Element\n  text: SlateText\n}) => {\n  const {\n    decorations: parentDecorations,\n    isLast,\n    parent,\n    renderPlaceholder,\n    renderLeaf,\n    renderText = defaultRenderText,\n    text,\n  } = props\n\n  const editor = useSlateStatic()\n  const ref = useRef<HTMLSpanElement | null>(null)\n  const decorations = useDecorations(text, parentDecorations)\n  const decoratedLeaves = SlateText.decorations(text, decorations)\n  const key = ReactEditor.findKey(editor, text)\n  const children = []\n\n  for (let i = 0; i < decoratedLeaves.length; i++) {\n    const { leaf, position } = decoratedLeaves[i]\n\n    children.push(\n      <Leaf\n        isLast={isLast && i === decoratedLeaves.length - 1}\n        key={`${key.id}-${i}`}\n        renderPlaceholder={renderPlaceholder}\n        leaf={leaf}\n        leafPosition={position}\n        text={text}\n        parent={parent}\n        renderLeaf={renderLeaf}\n      />\n    )\n  }\n\n  // Update element-related weak maps with the DOM element ref.\n  const callbackRef = useCallback(\n    (span: HTMLSpanElement | null) => {\n      const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n      if (span) {\n        KEY_TO_ELEMENT?.set(key, span)\n        NODE_TO_ELEMENT.set(text, span)\n        ELEMENT_TO_NODE.set(span, text)\n      } else {\n        KEY_TO_ELEMENT?.delete(key)\n        NODE_TO_ELEMENT.delete(text)\n        if (ref.current) {\n          ELEMENT_TO_NODE.delete(ref.current)\n        }\n      }\n      ref.current = span\n    },\n    [ref, editor, key, text]\n  )\n\n  const attributes: {\n    'data-slate-node': 'text'\n    ref: any\n  } = {\n    'data-slate-node': 'text',\n    ref: callbackRef,\n  }\n\n  return renderText({\n    text,\n    children,\n    attributes,\n  })\n}\n\nconst MemoizedText = React.memo(Text, (prev, next) => {\n  return (\n    next.parent === prev.parent &&\n    next.isLast === prev.isLast &&\n    next.renderText === prev.renderText &&\n    next.renderLeaf === prev.renderLeaf &&\n    next.renderPlaceholder === prev.renderPlaceholder &&\n    next.text === prev.text &&\n    isTextDecorationsEqual(next.decorations, prev.decorations)\n  )\n})\n\nexport const DefaultText = (props: RenderTextProps) => {\n  const { attributes, children } = props\n  return <span {...attributes}>{children}</span>\n}\n\nexport default MemoizedText\n"
  },
  {
    "path": "packages/slate-react/src/custom-types.ts",
    "content": "import { BaseRange, BaseText } from 'slate'\nimport { ReactEditor } from './plugin/react-editor'\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: ReactEditor\n    Text: BaseText & {\n      placeholder?: string\n      onPlaceholderResize?: (node: HTMLElement | null) => void\n      // FIXME: is unknown correct here?\n      [key: string]: unknown\n    }\n    Range: BaseRange & {\n      placeholder?: string\n      onPlaceholderResize?: (node: HTMLElement | null) => void\n      // FIXME: is unknown correct here?\n      [key: string]: unknown\n    }\n  }\n}\n\ndeclare global {\n  interface Window {\n    MSStream: boolean\n  }\n  interface DocumentOrShadowRoot {\n    getSelection(): Selection | null\n  }\n\n  interface CaretPosition {\n    readonly offsetNode: Node\n    readonly offset: number\n    getClientRect(): DOMRect | null\n  }\n\n  interface Document {\n    caretPositionFromPoint(x: number, y: number): CaretPosition | null\n  }\n\n  interface Node {\n    getRootNode(options?: GetRootNodeOptions): Document | ShadowRoot\n  }\n}\n\nexport {}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/android-input-manager/android-input-manager.ts",
    "content": "import { DebouncedFunc } from 'lodash'\nimport { Editor, Location, Node, Path, Point, Range, Transforms } from 'slate'\nimport { ReactEditor } from '../../plugin/react-editor'\nimport {\n  applyStringDiff,\n  mergeStringDiffs,\n  normalizePoint,\n  normalizeRange,\n  normalizeStringDiff,\n  StringDiff,\n  targetRange,\n  TextDiff,\n  verifyDiffState,\n} from 'slate-dom'\nimport { isDOMSelection, isTrackedMutation } from 'slate-dom'\nimport {\n  EDITOR_TO_FORCE_RENDER,\n  EDITOR_TO_PENDING_ACTION,\n  EDITOR_TO_PENDING_DIFFS,\n  EDITOR_TO_PENDING_INSERTION_MARKS,\n  EDITOR_TO_PENDING_SELECTION,\n  EDITOR_TO_PLACEHOLDER_ELEMENT,\n  EDITOR_TO_USER_MARKS,\n  IS_COMPOSING,\n  IS_NODE_MAP_DIRTY,\n} from 'slate-dom'\n\nexport type Action = { at?: Point | Range; run: () => void }\n\n// https://github.com/facebook/draft-js/blob/main/src/component/handlers/composition/DraftEditorCompositionHandler.js#L41\n// When using keyboard English association function, conpositionEnd triggered too fast, resulting in after `insertText` still maintain association state.\nconst RESOLVE_DELAY = 25\n\n// Time with no user interaction before the current user action is considered as done.\nconst FLUSH_DELAY = 200\n\n// Replace with `const debug = console.log` to debug\nconst debug = (..._: unknown[]) => {}\n\n// Type guard to check if a value is a DataTransfer\nconst isDataTransfer = (value: any): value is DataTransfer =>\n  value?.constructor.name === 'DataTransfer'\n\nexport type CreateAndroidInputManagerOptions = {\n  editor: ReactEditor\n\n  scheduleOnDOMSelectionChange: DebouncedFunc<() => void>\n  onDOMSelectionChange: DebouncedFunc<() => void>\n}\n\nexport type AndroidInputManager = {\n  flush: () => void\n  scheduleFlush: () => void\n\n  hasPendingDiffs: () => boolean\n  hasPendingAction: () => boolean\n  hasPendingChanges: () => boolean\n  isFlushing: () => boolean | 'action'\n\n  handleUserSelect: (range: Range | null) => void\n  handleCompositionEnd: (event: React.CompositionEvent<HTMLDivElement>) => void\n  handleCompositionStart: (\n    event: React.CompositionEvent<HTMLDivElement>\n  ) => void\n  handleDOMBeforeInput: (event: InputEvent) => void\n  handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void\n\n  handleDomMutations: (mutations: MutationRecord[]) => void\n  handleInput: () => void\n}\n\nexport function createAndroidInputManager({\n  editor,\n  scheduleOnDOMSelectionChange,\n  onDOMSelectionChange,\n}: CreateAndroidInputManagerOptions): AndroidInputManager {\n  let flushing: 'action' | boolean = false\n  let compositionEndTimeoutId: ReturnType<typeof setTimeout> | null = null\n  let flushTimeoutId: ReturnType<typeof setTimeout> | null = null\n  let actionTimeoutId: ReturnType<typeof setTimeout> | null = null\n\n  let idCounter = 0\n  let insertPositionHint: StringDiff | null | false = false\n\n  const applyPendingSelection = () => {\n    const pendingSelection = EDITOR_TO_PENDING_SELECTION.get(editor)\n    EDITOR_TO_PENDING_SELECTION.delete(editor)\n\n    if (pendingSelection) {\n      const { selection } = editor\n      const normalized = normalizeRange(editor, pendingSelection)\n\n      debug('apply pending selection', pendingSelection, normalized)\n\n      if (normalized && (!selection || !Range.equals(normalized, selection))) {\n        Transforms.select(editor, normalized)\n      }\n    }\n  }\n\n  const performAction = () => {\n    const action = EDITOR_TO_PENDING_ACTION.get(editor)\n    EDITOR_TO_PENDING_ACTION.delete(editor)\n    if (!action) {\n      return\n    }\n\n    if (action.at) {\n      const target = Location.isPoint(action.at)\n        ? normalizePoint(editor, action.at)\n        : normalizeRange(editor, action.at)\n\n      if (!target) {\n        return\n      }\n\n      const targetRange = Editor.range(editor, target)\n      if (!editor.selection || !Range.equals(editor.selection, targetRange)) {\n        Transforms.select(editor, target)\n      }\n    }\n\n    action.run()\n  }\n\n  const flush = () => {\n    if (flushTimeoutId) {\n      clearTimeout(flushTimeoutId)\n      flushTimeoutId = null\n    }\n\n    if (actionTimeoutId) {\n      clearTimeout(actionTimeoutId)\n      actionTimeoutId = null\n    }\n\n    if (!hasPendingDiffs() && !hasPendingAction()) {\n      applyPendingSelection()\n      return\n    }\n\n    if (!flushing) {\n      flushing = true\n      setTimeout(() => (flushing = false))\n    }\n\n    if (hasPendingAction()) {\n      flushing = 'action'\n    }\n\n    const selectionRef =\n      editor.selection &&\n      Editor.rangeRef(editor, editor.selection, { affinity: 'forward' })\n    EDITOR_TO_USER_MARKS.set(editor, editor.marks)\n\n    debug(\n      'flush',\n      EDITOR_TO_PENDING_ACTION.get(editor),\n      EDITOR_TO_PENDING_DIFFS.get(editor)\n    )\n\n    let scheduleSelectionChange = hasPendingDiffs()\n\n    let diff: TextDiff | undefined\n    while ((diff = EDITOR_TO_PENDING_DIFFS.get(editor)?.[0])) {\n      const pendingMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)\n\n      if (pendingMarks !== undefined) {\n        EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n        editor.marks = pendingMarks\n      }\n\n      if (pendingMarks && insertPositionHint === false) {\n        insertPositionHint = null\n        debug('insert after mark placeholder')\n      }\n\n      const range = targetRange(diff)\n      if (!editor.selection || !Range.equals(editor.selection, range)) {\n        Transforms.select(editor, range)\n      }\n\n      if (diff.diff.text) {\n        Editor.insertText(editor, diff.diff.text)\n      } else {\n        Editor.deleteFragment(editor)\n      }\n\n      // Remove diff only after we have applied it to account for it when transforming\n      // pending ranges.\n      EDITOR_TO_PENDING_DIFFS.set(\n        editor,\n        EDITOR_TO_PENDING_DIFFS.get(editor)?.filter(\n          ({ id }) => id !== diff!.id\n        )!\n      )\n\n      if (!verifyDiffState(editor, diff)) {\n        debug('invalid diff state')\n        scheduleSelectionChange = false\n        EDITOR_TO_PENDING_ACTION.delete(editor)\n        EDITOR_TO_USER_MARKS.delete(editor)\n        flushing = 'action'\n\n        // Ensure we don't restore the pending user (dom) selection\n        // since the document and dom state do not match.\n        EDITOR_TO_PENDING_SELECTION.delete(editor)\n        scheduleOnDOMSelectionChange.cancel()\n        onDOMSelectionChange.cancel()\n        selectionRef?.unref()\n      }\n    }\n\n    const selection = selectionRef?.unref()\n    if (\n      selection &&\n      !EDITOR_TO_PENDING_SELECTION.get(editor) &&\n      (!editor.selection || !Range.equals(selection, editor.selection))\n    ) {\n      Transforms.select(editor, selection)\n    }\n\n    if (hasPendingAction()) {\n      performAction()\n      return\n    }\n\n    // COMPAT: The selectionChange event is fired after the action is performed,\n    // so we have to manually schedule it to ensure we don't 'throw away' the selection\n    // while rendering if we have pending changes.\n    if (scheduleSelectionChange) {\n      debug('scheduleOnDOMSelectionChange pending changes')\n      scheduleOnDOMSelectionChange()\n    }\n\n    scheduleOnDOMSelectionChange.flush()\n    onDOMSelectionChange.flush()\n\n    applyPendingSelection()\n\n    const userMarks = EDITOR_TO_USER_MARKS.get(editor)\n    EDITOR_TO_USER_MARKS.delete(editor)\n    if (userMarks !== undefined) {\n      editor.marks = userMarks\n      editor.onChange()\n    }\n  }\n\n  const handleCompositionEnd = (\n    _event: React.CompositionEvent<HTMLDivElement>\n  ) => {\n    if (compositionEndTimeoutId) {\n      clearTimeout(compositionEndTimeoutId)\n    }\n\n    compositionEndTimeoutId = setTimeout(() => {\n      IS_COMPOSING.set(editor, false)\n      flush()\n    }, RESOLVE_DELAY)\n  }\n\n  const handleCompositionStart = (\n    _event: React.CompositionEvent<HTMLDivElement>\n  ) => {\n    debug('composition start')\n\n    IS_COMPOSING.set(editor, true)\n\n    if (compositionEndTimeoutId) {\n      clearTimeout(compositionEndTimeoutId)\n      compositionEndTimeoutId = null\n    }\n  }\n\n  const updatePlaceholderVisibility = (forceHide = false) => {\n    const placeholderElement = EDITOR_TO_PLACEHOLDER_ELEMENT.get(editor)\n    if (!placeholderElement) {\n      return\n    }\n\n    if (hasPendingDiffs() || forceHide) {\n      placeholderElement.style.display = 'none'\n      return\n    }\n\n    placeholderElement.style.removeProperty('display')\n  }\n\n  const storeDiff = (path: Path, diff: StringDiff) => {\n    debug('storeDiff', path, diff)\n\n    const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor) ?? []\n    EDITOR_TO_PENDING_DIFFS.set(editor, pendingDiffs)\n\n    const target = Node.leaf(editor, path)\n    const idx = pendingDiffs.findIndex(change => Path.equals(change.path, path))\n    if (idx < 0) {\n      const normalized = normalizeStringDiff(target.text, diff)\n      if (normalized) {\n        pendingDiffs.push({ path, diff, id: idCounter++ })\n      }\n\n      updatePlaceholderVisibility()\n      return\n    }\n\n    const merged = mergeStringDiffs(target.text, pendingDiffs[idx].diff, diff)\n    if (!merged) {\n      pendingDiffs.splice(idx, 1)\n      updatePlaceholderVisibility()\n      return\n    }\n\n    pendingDiffs[idx] = {\n      ...pendingDiffs[idx],\n      diff: merged,\n    }\n  }\n\n  const scheduleAction = (\n    run: () => void,\n    { at }: { at?: Point | Range } = {}\n  ): void => {\n    insertPositionHint = false\n    debug('scheduleAction', { at, run })\n\n    EDITOR_TO_PENDING_SELECTION.delete(editor)\n    scheduleOnDOMSelectionChange.cancel()\n    onDOMSelectionChange.cancel()\n\n    if (hasPendingAction()) {\n      flush()\n    }\n\n    EDITOR_TO_PENDING_ACTION.set(editor, { at, run })\n\n    // COMPAT: When deleting before a non-contenteditable element chrome only fires a beforeinput,\n    // (no input) and doesn't perform any dom mutations. Without a flush timeout we would never flush\n    // in this case and thus never actually perform the action.\n    actionTimeoutId = setTimeout(flush)\n  }\n\n  const handleDOMBeforeInput = (event: InputEvent): void => {\n    if (flushTimeoutId) {\n      clearTimeout(flushTimeoutId)\n      flushTimeoutId = null\n    }\n\n    if (IS_NODE_MAP_DIRTY.get(editor)) {\n      return\n    }\n\n    const { inputType: type } = event\n    let targetRange: Range | null = null\n    const data: DataTransfer | string | undefined =\n      (event as any).dataTransfer || event.data || undefined\n\n    if (\n      insertPositionHint !== false &&\n      type !== 'insertText' &&\n      type !== 'insertCompositionText'\n    ) {\n      insertPositionHint = false\n    }\n\n    let [nativeTargetRange] = (event as any).getTargetRanges()\n    if (nativeTargetRange) {\n      targetRange = ReactEditor.toSlateRange(editor, nativeTargetRange, {\n        exactMatch: false,\n        suppressThrow: true,\n      })\n    }\n\n    // COMPAT: SelectionChange event is fired after the action is performed, so we\n    // have to manually get the selection here to ensure it's up-to-date.\n    const window = ReactEditor.getWindow(editor)\n    const domSelection = window.getSelection()\n    if (!targetRange && domSelection) {\n      nativeTargetRange = domSelection\n      targetRange = ReactEditor.toSlateRange(editor, domSelection, {\n        exactMatch: false,\n        suppressThrow: true,\n      })\n    }\n\n    targetRange = targetRange ?? editor.selection\n    if (!targetRange) {\n      return\n    }\n\n    // By default, the input manager tries to store text diffs so that we can\n    // defer flushing them at a later point in time. We don't want to flush\n    // for every input event as this can be expensive. However, there are some\n    // scenarios where we cannot safely store the text diff and must instead\n    // schedule an action to let Slate normalize the editor state.\n    let canStoreDiff = true\n\n    if (type.startsWith('delete')) {\n      const direction = type.endsWith('Backward') ? 'backward' : 'forward'\n      let [start, end] = Range.edges(targetRange)\n      let [leaf, path] = Editor.leaf(editor, start.path)\n\n      if (Range.isExpanded(targetRange)) {\n        if (leaf.text.length === start.offset && end.offset === 0) {\n          const next = Editor.next(editor, {\n            at: start.path,\n            match: Node.isText,\n          })\n          if (next && Path.equals(next[1], end.path)) {\n            // when deleting a linebreak, targetRange will span across the break (ie start in the node before and end in the node after)\n            // if the node before is empty, this will look like a hanging range and get unhung later--which will take the break we want to remove out of the range\n            // so to avoid this we collapse the target range to default to single character deletion\n            if (direction === 'backward') {\n              targetRange = { anchor: end, focus: end }\n              start = end\n              ;[leaf, path] = next\n            } else {\n              targetRange = { anchor: start, focus: start }\n              end = start\n            }\n          }\n        }\n      }\n\n      const diff = {\n        text: '',\n        start: start.offset,\n        end: end.offset,\n      }\n      const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor)\n      const relevantPendingDiffs = pendingDiffs?.find(change =>\n        Path.equals(change.path, path)\n      )\n      const diffs = relevantPendingDiffs\n        ? [relevantPendingDiffs.diff, diff]\n        : [diff]\n      const text = applyStringDiff(leaf.text, ...diffs)\n\n      if (text.length === 0) {\n        // Text leaf will be removed, so we need to schedule an\n        // action to remove it so that Slate can normalize instead\n        // of storing as a diff\n        canStoreDiff = false\n      }\n\n      if (Range.isExpanded(targetRange)) {\n        if (\n          canStoreDiff &&\n          Path.equals(targetRange.anchor.path, targetRange.focus.path)\n        ) {\n          const point = { path: targetRange.anchor.path, offset: start.offset }\n          const range = Editor.range(editor, point, point)\n          handleUserSelect(range)\n\n          return storeDiff(targetRange.anchor.path, {\n            text: '',\n            end: end.offset,\n            start: start.offset,\n          })\n        }\n\n        return scheduleAction(\n          () => Editor.deleteFragment(editor, { direction }),\n          { at: targetRange }\n        )\n      }\n    }\n\n    switch (type) {\n      case 'deleteByComposition':\n      case 'deleteByCut':\n      case 'deleteByDrag': {\n        return scheduleAction(() => Editor.deleteFragment(editor), {\n          at: targetRange,\n        })\n      }\n\n      case 'deleteContent':\n      case 'deleteContentForward': {\n        const { anchor } = targetRange\n        if (canStoreDiff && Range.isCollapsed(targetRange)) {\n          const targetNode = Node.leaf(editor, anchor.path)\n\n          if (anchor.offset < targetNode.text.length) {\n            return storeDiff(anchor.path, {\n              text: '',\n              start: anchor.offset,\n              end: anchor.offset + 1,\n            })\n          }\n        }\n\n        return scheduleAction(() => Editor.deleteForward(editor), {\n          at: targetRange,\n        })\n      }\n\n      case 'deleteContentBackward': {\n        const { anchor } = targetRange\n\n        // If we have a mismatch between the native and slate selection being collapsed\n        // we are most likely deleting a zero-width placeholder and thus should perform it\n        // as an action to ensure correct behavior (mostly happens with mark placeholders)\n        const nativeCollapsed = isDOMSelection(nativeTargetRange)\n          ? nativeTargetRange.isCollapsed\n          : !!nativeTargetRange?.collapsed\n\n        if (\n          canStoreDiff &&\n          nativeCollapsed &&\n          Range.isCollapsed(targetRange) &&\n          anchor.offset > 0\n        ) {\n          return storeDiff(anchor.path, {\n            text: '',\n            start: anchor.offset - 1,\n            end: anchor.offset,\n          })\n        }\n\n        return scheduleAction(() => Editor.deleteBackward(editor), {\n          at: targetRange,\n        })\n      }\n\n      case 'deleteEntireSoftLine': {\n        return scheduleAction(\n          () => {\n            Editor.deleteBackward(editor, { unit: 'line' })\n            Editor.deleteForward(editor, { unit: 'line' })\n          },\n          { at: targetRange }\n        )\n      }\n\n      case 'deleteHardLineBackward': {\n        return scheduleAction(\n          () => Editor.deleteBackward(editor, { unit: 'block' }),\n          { at: targetRange }\n        )\n      }\n\n      case 'deleteSoftLineBackward': {\n        return scheduleAction(\n          () => Editor.deleteBackward(editor, { unit: 'line' }),\n          { at: targetRange }\n        )\n      }\n\n      case 'deleteHardLineForward': {\n        return scheduleAction(\n          () => Editor.deleteForward(editor, { unit: 'block' }),\n          { at: targetRange }\n        )\n      }\n\n      case 'deleteSoftLineForward': {\n        return scheduleAction(\n          () => Editor.deleteForward(editor, { unit: 'line' }),\n          { at: targetRange }\n        )\n      }\n\n      case 'deleteWordBackward': {\n        return scheduleAction(\n          () => Editor.deleteBackward(editor, { unit: 'word' }),\n          { at: targetRange }\n        )\n      }\n\n      case 'deleteWordForward': {\n        return scheduleAction(\n          () => Editor.deleteForward(editor, { unit: 'word' }),\n          { at: targetRange }\n        )\n      }\n\n      case 'insertLineBreak': {\n        return scheduleAction(() => Editor.insertSoftBreak(editor), {\n          at: targetRange,\n        })\n      }\n\n      case 'insertParagraph': {\n        return scheduleAction(() => Editor.insertBreak(editor), {\n          at: targetRange,\n        })\n      }\n      case 'insertCompositionText':\n      case 'deleteCompositionText':\n      case 'insertFromComposition':\n      case 'insertFromDrop':\n      case 'insertFromPaste':\n      case 'insertFromYank':\n      case 'insertReplacementText':\n      case 'insertText': {\n        if (isDataTransfer(data)) {\n          return scheduleAction(() => ReactEditor.insertData(editor, data), {\n            at: targetRange,\n          })\n        }\n\n        let text = data ?? ''\n\n        // COMPAT: If we are writing inside a placeholder, the ime inserts the text inside\n        // the placeholder itself and thus includes the zero-width space inside edit events.\n        if (EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)) {\n          text = text.replace('\\uFEFF', '')\n        }\n\n        // Pastes from the Android clipboard will generate `insertText` events.\n        // If the copied text contains any newlines, Android will append an\n        // extra newline to the end of the copied text.\n        if (type === 'insertText' && /.*\\n.*\\n$/.test(text)) {\n          text = text.slice(0, -1)\n        }\n\n        // If the text includes a newline, split it at newlines and paste each component\n        // string, with soft breaks in between each.\n        if (text.includes('\\n')) {\n          return scheduleAction(\n            () => {\n              const parts = text.split('\\n')\n              parts.forEach((line, i) => {\n                if (line) {\n                  Editor.insertText(editor, line)\n                }\n                if (i !== parts.length - 1) {\n                  Editor.insertSoftBreak(editor)\n                }\n              })\n            },\n            {\n              at: targetRange,\n            }\n          )\n        }\n\n        if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {\n          const [start, end] = Range.edges(targetRange)\n\n          const diff = {\n            start: start.offset,\n            end: end.offset,\n            text,\n          }\n\n          // COMPAT: Swiftkey has a weird bug where the target range of the 2nd word\n          // inserted after a mark placeholder is inserted with an anchor offset off by 1.\n          // So writing 'some text' will result in 'some ttext'. Luckily all 'normal' insert\n          // text events are fired with the correct target ranges, only the final 'insertComposition'\n          // isn't, so we can adjust the target range start offset if we are confident this is the\n          // swiftkey insert causing the issue.\n          if (text && insertPositionHint && type === 'insertCompositionText') {\n            const hintPosition =\n              insertPositionHint.start + insertPositionHint.text.search(/\\S|$/)\n            const diffPosition = diff.start + diff.text.search(/\\S|$/)\n\n            if (\n              diffPosition === hintPosition + 1 &&\n              diff.end ===\n                insertPositionHint.start + insertPositionHint.text.length\n            ) {\n              debug('adjusting swiftKey insert position using hint')\n              diff.start -= 1\n              insertPositionHint = null\n              scheduleFlush()\n            } else {\n              insertPositionHint = false\n            }\n          } else if (type === 'insertText') {\n            if (insertPositionHint === null) {\n              insertPositionHint = diff\n            } else if (\n              insertPositionHint &&\n              Range.isCollapsed(targetRange) &&\n              insertPositionHint.end + insertPositionHint.text.length ===\n                start.offset\n            ) {\n              insertPositionHint = {\n                ...insertPositionHint,\n                text: insertPositionHint.text + text,\n              }\n            } else {\n              insertPositionHint = false\n            }\n          } else {\n            insertPositionHint = false\n          }\n\n          if (canStoreDiff) {\n            const currentSelection = editor.selection\n            storeDiff(start.path, diff)\n\n            if (currentSelection) {\n              const newPoint = {\n                path: start.path,\n                offset: start.offset + text.length,\n              }\n\n              scheduleAction(\n                () => {\n                  Transforms.select(editor, {\n                    anchor: newPoint,\n                    focus: newPoint,\n                  })\n                },\n                { at: newPoint }\n              )\n            }\n            return\n          }\n        }\n\n        return scheduleAction(() => Editor.insertText(editor, text), {\n          at: targetRange,\n        })\n      }\n    }\n  }\n\n  const hasPendingAction = () => {\n    return !!EDITOR_TO_PENDING_ACTION.get(editor)\n  }\n\n  const hasPendingDiffs = () => {\n    return !!EDITOR_TO_PENDING_DIFFS.get(editor)?.length\n  }\n\n  const hasPendingChanges = () => {\n    return hasPendingAction() || hasPendingDiffs()\n  }\n\n  const isFlushing = () => {\n    return flushing\n  }\n\n  const handleUserSelect = (range: Range | null) => {\n    EDITOR_TO_PENDING_SELECTION.set(editor, range)\n\n    if (flushTimeoutId) {\n      clearTimeout(flushTimeoutId)\n      flushTimeoutId = null\n    }\n\n    const { selection } = editor\n    if (!range) {\n      return\n    }\n\n    const pathChanged =\n      !selection || !Path.equals(selection.anchor.path, range.anchor.path)\n    const parentPathChanged =\n      !selection ||\n      !Path.equals(\n        selection.anchor.path.slice(0, -1),\n        range.anchor.path.slice(0, -1)\n      )\n\n    if ((pathChanged && insertPositionHint) || parentPathChanged) {\n      insertPositionHint = false\n    }\n\n    if (pathChanged || hasPendingDiffs()) {\n      flushTimeoutId = setTimeout(flush, FLUSH_DELAY)\n    }\n  }\n\n  const handleInput = () => {\n    if (hasPendingAction() || !hasPendingDiffs()) {\n      debug('flush input')\n      flush()\n    }\n  }\n\n  const handleKeyDown = (_: React.KeyboardEvent) => {\n    // COMPAT: Swiftkey closes the keyboard when typing inside a empty node\n    // directly next to a non-contenteditable element (= the placeholder).\n    // The only event fired soon enough for us to allow hiding the placeholder\n    // without swiftkey picking it up is the keydown event, so we have to hide it\n    // here. See https://github.com/ianstormtaylor/slate/pull/4988#issuecomment-1201050535\n    if (!hasPendingDiffs()) {\n      updatePlaceholderVisibility(true)\n      setTimeout(updatePlaceholderVisibility)\n    }\n  }\n\n  const scheduleFlush = () => {\n    if (!hasPendingAction()) {\n      actionTimeoutId = setTimeout(flush)\n    }\n  }\n\n  const handleDomMutations = (mutations: MutationRecord[]) => {\n    if (hasPendingDiffs() || hasPendingAction()) {\n      return\n    }\n\n    if (\n      mutations.some(mutation => isTrackedMutation(editor, mutation, mutations))\n    ) {\n      // Cause a re-render to restore the dom state if we encounter tracked mutations without\n      // a corresponding pending action.\n      EDITOR_TO_FORCE_RENDER.get(editor)?.()\n    }\n  }\n\n  return {\n    flush,\n    scheduleFlush,\n\n    hasPendingDiffs,\n    hasPendingAction,\n    hasPendingChanges,\n\n    isFlushing,\n\n    handleUserSelect,\n    handleCompositionEnd,\n    handleCompositionStart,\n    handleDOMBeforeInput,\n    handleKeyDown,\n\n    handleDomMutations,\n    handleInput,\n  }\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/android-input-manager/use-android-input-manager.ts",
    "content": "import { RefObject, useState } from 'react'\nimport { useSlateStatic } from '../use-slate-static'\nimport { IS_ANDROID } from 'slate-dom'\nimport { EDITOR_TO_SCHEDULE_FLUSH } from 'slate-dom'\nimport {\n  createAndroidInputManager,\n  CreateAndroidInputManagerOptions,\n} from './android-input-manager'\nimport { useIsMounted } from '../use-is-mounted'\nimport { useMutationObserver } from '../use-mutation-observer'\n\ntype UseAndroidInputManagerOptions = {\n  node: RefObject<HTMLElement>\n} & Omit<\n  CreateAndroidInputManagerOptions,\n  'editor' | 'onUserInput' | 'receivedUserInput'\n>\n\nconst MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n  subtree: true,\n  childList: true,\n  characterData: true,\n}\n\nexport const useAndroidInputManager = !IS_ANDROID\n  ? () => null\n  : ({ node, ...options }: UseAndroidInputManagerOptions) => {\n      if (!IS_ANDROID) {\n        return null\n      }\n\n      const editor = useSlateStatic()\n      const isMounted = useIsMounted()\n\n      const [inputManager] = useState(() =>\n        createAndroidInputManager({\n          editor,\n          ...options,\n        })\n      )\n\n      useMutationObserver(\n        node,\n        inputManager.handleDomMutations,\n        MUTATION_OBSERVER_CONFIG\n      )\n\n      EDITOR_TO_SCHEDULE_FLUSH.set(editor, inputManager.scheduleFlush)\n      if (isMounted) {\n        inputManager.flush()\n      }\n\n      return inputManager\n    }\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-children.tsx",
    "content": "import React, { useCallback, useRef } from 'react'\nimport { Ancestor, Editor, Element, DecoratedRange, Text, Node } from 'slate'\nimport { Key, isElementDecorationsEqual } from 'slate-dom'\nimport {\n  RenderChunkProps,\n  RenderElementProps,\n  RenderLeafProps,\n  RenderPlaceholderProps,\n  RenderTextProps,\n} from '../components/editable'\n\nimport ElementComponent from '../components/element'\nimport TextComponent from '../components/text'\nimport { ReactEditor } from '../plugin/react-editor'\nimport {\n  IS_NODE_MAP_DIRTY,\n  NODE_TO_INDEX,\n  NODE_TO_PARENT,\n  splitDecorationsByChild,\n} from 'slate-dom'\nimport { useSlateStatic } from './use-slate-static'\nimport { getChunkTreeForNode } from '../chunking'\nimport ChunkTree from '../components/chunk-tree'\nimport { ElementContext } from './use-element'\n\n/**\n * Children.\n */\n\nconst useChildren = (props: {\n  decorations: DecoratedRange[]\n  node: Ancestor\n  renderElement?: (props: RenderElementProps) => React.JSX.Element\n  renderChunk?: (props: RenderChunkProps) => React.JSX.Element\n  renderPlaceholder: (props: RenderPlaceholderProps) => React.JSX.Element\n  renderText?: (props: RenderTextProps) => React.JSX.Element\n  renderLeaf?: (props: RenderLeafProps) => React.JSX.Element\n}) => {\n  const {\n    decorations,\n    node,\n    renderElement,\n    renderChunk,\n    renderPlaceholder,\n    renderText,\n    renderLeaf,\n  } = props\n  const editor = useSlateStatic()\n  IS_NODE_MAP_DIRTY.set(editor as ReactEditor, false)\n\n  const isBlock = Node.isElement(node) && !editor.isInline(node)\n  const isLeafBlock = isBlock && Editor.hasInlines(editor, node)\n  const chunkSize = isLeafBlock ? null : editor.getChunkSize(node)\n  const chunking = !!chunkSize\n\n  const { decorationsByChild, childrenToRedecorate } = useDecorationsByChild(\n    editor,\n    node,\n    decorations\n  )\n\n  // Update the index and parent of each child.\n  // PERF: If chunking is enabled, this is done while traversing the chunk tree\n  // instead to eliminate unnecessary weak map operations.\n  if (!chunking) {\n    node.children.forEach((n, i) => {\n      NODE_TO_INDEX.set(n, i)\n      NODE_TO_PARENT.set(n, node)\n    })\n  }\n\n  const renderElementComponent = useCallback(\n    (n: Element, i: number, cachedKey?: Key) => {\n      const key = cachedKey ?? ReactEditor.findKey(editor, n)\n\n      return (\n        <ElementContext.Provider key={`provider-${key.id}`} value={n}>\n          <ElementComponent\n            decorations={decorationsByChild[i]}\n            element={n}\n            key={key.id}\n            renderElement={renderElement}\n            renderChunk={renderChunk}\n            renderPlaceholder={renderPlaceholder}\n            renderLeaf={renderLeaf}\n            renderText={renderText}\n          />\n        </ElementContext.Provider>\n      )\n    },\n    [\n      editor,\n      decorationsByChild,\n      renderElement,\n      renderChunk,\n      renderPlaceholder,\n      renderLeaf,\n      renderText,\n    ]\n  )\n\n  const renderTextComponent = (n: Text, i: number) => {\n    const key = ReactEditor.findKey(editor, n)\n\n    return (\n      <TextComponent\n        decorations={decorationsByChild[i]}\n        key={key.id}\n        isLast={i === node.children.length - 1}\n        parent={node}\n        renderPlaceholder={renderPlaceholder}\n        renderLeaf={renderLeaf}\n        renderText={renderText}\n        text={n}\n      />\n    )\n  }\n\n  if (!chunking) {\n    return node.children.map((n, i) =>\n      Node.isText(n) ? renderTextComponent(n, i) : renderElementComponent(n, i)\n    )\n  }\n\n  const chunkTree = getChunkTreeForNode(editor, node, {\n    reconcile: {\n      chunkSize,\n      rerenderChildren: childrenToRedecorate,\n      onInsert: (n, i) => {\n        NODE_TO_INDEX.set(n, i)\n        NODE_TO_PARENT.set(n, node)\n      },\n      onUpdate: (n, i) => {\n        NODE_TO_INDEX.set(n, i)\n        NODE_TO_PARENT.set(n, node)\n      },\n      onIndexChange: (n, i) => {\n        NODE_TO_INDEX.set(n, i)\n      },\n    },\n  })\n\n  return (\n    <ChunkTree\n      root={chunkTree}\n      ancestor={chunkTree}\n      renderElement={renderElementComponent}\n      renderChunk={renderChunk}\n    />\n  )\n}\n\nconst useDecorationsByChild = (\n  editor: Editor,\n  node: Ancestor,\n  decorations: DecoratedRange[]\n) => {\n  const decorationsByChild = splitDecorationsByChild(editor, node, decorations)\n\n  // The value we return is a mutable array of `DecoratedRange[]` arrays. This\n  // lets us avoid passing an immutable array of decorations for each child into\n  // `ChunkTree` using props. Each `DecoratedRange[]` is only updated if the\n  // decorations at that index have changed, which speeds up the equality check\n  // for the `decorations` prop in the memoized `Element` and `Text` components.\n  const mutableDecorationsByChild = useRef(decorationsByChild).current\n\n  // Track the list of child indices whose decorations have changed, so that we\n  // can tell the chunk tree to re-render these children.\n  const childrenToRedecorate: number[] = []\n\n  // Resize the mutable array to match the latest result\n  mutableDecorationsByChild.length = decorationsByChild.length\n\n  for (let i = 0; i < decorationsByChild.length; i++) {\n    const decorations = decorationsByChild[i]\n\n    const previousDecorations: DecoratedRange[] | null =\n      mutableDecorationsByChild[i] ?? null\n\n    if (!isElementDecorationsEqual(previousDecorations, decorations)) {\n      mutableDecorationsByChild[i] = decorations\n      childrenToRedecorate.push(i)\n    }\n  }\n\n  return { decorationsByChild: mutableDecorationsByChild, childrenToRedecorate }\n}\n\nexport default useChildren\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-composing.ts",
    "content": "import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `composing` state of the editor.\n */\n\nexport const ComposingContext = createContext(false)\n\n/**\n * Get the current `composing` state of the editor.\n */\n\nexport const useComposing = (): boolean => {\n  return useContext(ComposingContext)\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-decorations.ts",
    "content": "import { createContext, useCallback, useContext, useMemo, useRef } from 'react'\nimport { DecoratedRange, Descendant, Node, NodeEntry } from 'slate'\nimport { isTextDecorationsEqual, isElementDecorationsEqual } from 'slate-dom'\nimport { useSlateStatic } from './use-slate-static'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { useGenericSelector } from './use-generic-selector'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\n\ntype Callback = () => void\n\n/**\n * A React context for sharing the `decorate` prop of the editable and\n * subscribing to changes on this prop.\n */\n\nexport const DecorateContext = createContext<{\n  decorate: (entry: NodeEntry) => DecoratedRange[]\n  addEventListener: (callback: Callback) => () => void\n}>({} as any)\n\nexport const useDecorations = (\n  node: Descendant,\n  parentDecorations: DecoratedRange[]\n): DecoratedRange[] => {\n  const editor = useSlateStatic()\n  const { decorate, addEventListener } = useContext(DecorateContext)\n\n  // Not memoized since we want nodes to be decorated on each render\n  const selector = () => {\n    const path = ReactEditor.findPath(editor, node)\n    return decorate([node, path])\n  }\n\n  const equalityFn = Node.isText(node)\n    ? isTextDecorationsEqual\n    : isElementDecorationsEqual\n\n  const [decorations, update] = useGenericSelector(selector, equalityFn)\n\n  useIsomorphicLayoutEffect(() => {\n    const unsubscribe = addEventListener(update)\n    update()\n    return unsubscribe\n  }, [addEventListener, update])\n\n  return useMemo(\n    () => [...decorations, ...parentDecorations],\n    [decorations, parentDecorations]\n  )\n}\n\nexport const useDecorateContext = (\n  decorateProp: (entry: NodeEntry) => DecoratedRange[]\n) => {\n  const eventListeners = useRef(new Set<Callback>())\n\n  const latestDecorate = useRef(decorateProp)\n\n  useIsomorphicLayoutEffect(() => {\n    latestDecorate.current = decorateProp\n    eventListeners.current.forEach(listener => listener())\n  }, [decorateProp])\n\n  const decorate = useCallback(\n    (entry: NodeEntry) => latestDecorate.current(entry),\n    []\n  )\n\n  const addEventListener = useCallback((callback: Callback) => {\n    eventListeners.current.add(callback)\n\n    return () => {\n      eventListeners.current.delete(callback)\n    }\n  }, [])\n\n  return useMemo(\n    () => ({ decorate, addEventListener }),\n    [decorate, addEventListener]\n  )\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-editor.tsx",
    "content": "import { useContext } from 'react'\n\nimport { EditorContext } from './use-slate-static'\n\n/**\n * Get the current editor object from the React context.\n * @deprecated Use useSlateStatic instead.\n */\n\nexport const useEditor = () => {\n  const editor = useContext(EditorContext)\n\n  if (!editor) {\n    throw new Error(\n      `The \\`useEditor\\` hook must be used inside the <Slate> component's context.`\n    )\n  }\n\n  return editor\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-element.ts",
    "content": "import { createContext, useContext } from 'react'\nimport { Element } from 'slate'\n\nexport const ElementContext = createContext<Element | null>(null)\n\n/**\n * Get the current element.\n */\n\nexport const useElement = (): Element => {\n  const context = useContext(ElementContext)\n\n  if (!context) {\n    throw new Error(\n      'The `useElement` hook must be used inside `renderElement`.'\n    )\n  }\n\n  return context\n}\n\n/**\n * Get the current element, or return null if not inside `renderElement`.\n */\nexport const useElementIf = () => useContext(ElementContext)\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-focused.ts",
    "content": "import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `focused` state of the editor.\n */\n\nexport const FocusedContext = createContext(false)\n\n/**\n * Get the current `focused` state of the editor.\n */\n\nexport const useFocused = (): boolean => {\n  return useContext(FocusedContext)\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-generic-selector.tsx",
    "content": "import { useCallback, useReducer, useRef } from 'react'\n\n/**\n * Create a selector that updates when an `update` function is called, and\n * which only causes the component to render when the result of `selector`\n * differs from the previous result according to `equalityFn`.\n *\n * If `selector` is memoized using `useCallback`, then it will only be called\n * when it changes or when `update` is called. Otherwise, `selector` will be\n * called every time the component renders.\n *\n * @example\n * const [state, update] = useGenericSelector(selector, equalityFn)\n *\n * useIsomorphicLayoutEffect(() => {\n *   return addEventListener(update)\n * }, [addEventListener, update])\n *\n * return state\n */\n\nexport function useGenericSelector<T>(\n  selector: () => T,\n  equalityFn: (a: T | null, b: T) => boolean\n): [state: T, update: () => void] {\n  const [, forceRender] = useReducer(s => s + 1, 0)\n\n  const latestSubscriptionCallbackError = useRef<Error | undefined>()\n  const latestSelector = useRef<() => T>(() => null as any)\n  const latestSelectedState = useRef<T | null>(null)\n  let selectedState: T\n\n  try {\n    if (\n      selector !== latestSelector.current ||\n      latestSubscriptionCallbackError.current\n    ) {\n      const selectorResult = selector()\n\n      if (equalityFn(latestSelectedState.current, selectorResult)) {\n        selectedState = latestSelectedState.current as T\n      } else {\n        selectedState = selectorResult\n      }\n    } else {\n      selectedState = latestSelectedState.current as T\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current && isError(err)) {\n      err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`\n    }\n\n    throw err\n  }\n\n  latestSelector.current = selector\n  latestSelectedState.current = selectedState\n  latestSubscriptionCallbackError.current = undefined\n\n  const update = useCallback(() => {\n    try {\n      const newSelectedState = latestSelector.current()\n\n      if (equalityFn(latestSelectedState.current, newSelectedState)) {\n        return\n      }\n\n      latestSelectedState.current = newSelectedState\n    } catch (err) {\n      // we ignore all errors here, since when the component\n      // is re-rendered, the selectors are called again, and\n      // will throw again, if neither props nor store state\n      // changed\n      if (err instanceof Error) {\n        latestSubscriptionCallbackError.current = err\n      } else {\n        latestSubscriptionCallbackError.current = new Error(String(err))\n      }\n    }\n\n    forceRender()\n\n    // don't rerender on equalityFn change since we want to be able to define it inline\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [])\n\n  return [selectedState, update]\n}\n\nfunction isError(error: any): error is Error {\n  return error instanceof Error\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-is-mounted.tsx",
    "content": "import { useEffect, useRef } from 'react'\n\nexport function useIsMounted() {\n  const isMountedRef = useRef(false)\n\n  useEffect(() => {\n    isMountedRef.current = true\n    return () => {\n      isMountedRef.current = false\n    }\n  }, [])\n\n  return isMountedRef.current\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-isomorphic-layout-effect.ts",
    "content": "import { useLayoutEffect, useEffect } from 'react'\nimport { CAN_USE_DOM } from 'slate-dom'\n\n/**\n * Prevent warning on SSR by falling back to useEffect when DOM isn't available\n */\n\nexport const useIsomorphicLayoutEffect = CAN_USE_DOM\n  ? useLayoutEffect\n  : useEffect\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-mutation-observer.ts",
    "content": "import { RefObject, useEffect, useState } from 'react'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\n\nexport function useMutationObserver(\n  node: RefObject<HTMLElement>,\n  callback: MutationCallback,\n  options: MutationObserverInit\n) {\n  const [mutationObserver] = useState(() => new MutationObserver(callback))\n\n  useIsomorphicLayoutEffect(() => {\n    // Discard mutations caused during render phase. This works due to react calling\n    // useLayoutEffect synchronously after the render phase before the next tick.\n    mutationObserver.takeRecords()\n  })\n\n  useEffect(() => {\n    if (!node.current) {\n      throw new Error('Failed to attach MutationObserver, `node` is undefined')\n    }\n\n    mutationObserver.observe(node.current, options)\n    return () => mutationObserver.disconnect()\n  }, [mutationObserver, node, options])\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-read-only.ts",
    "content": "import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `readOnly` state of the editor.\n */\n\nexport const ReadOnlyContext = createContext(false)\n\n/**\n * Get the current `readOnly` state of the editor.\n */\n\nexport const useReadOnly = (): boolean => {\n  return useContext(ReadOnlyContext)\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-selected.ts",
    "content": "import { useCallback } from 'react'\nimport { Editor, Range } from 'slate'\nimport { useElementIf } from './use-element'\nimport { useSlateSelector } from './use-slate-selector'\nimport { ReactEditor } from '../plugin/react-editor'\n\n/**\n * Get the current `selected` state of an element.\n */\n\nexport const useSelected = (): boolean => {\n  const element = useElementIf()\n\n  // Breaking the rules of hooks is fine here since `!element` will remain true\n  // or false for the entire lifetime of the component this hook is called from.\n  // TODO: Decide if we want to throw an error instead when calling\n  // `useSelected` outside of an element (potentially a breaking change).\n  if (!element) return false\n\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  const selector = useCallback(\n    (editor: Editor) => {\n      if (!editor.selection) return false\n      const path = ReactEditor.findPath(editor, element)\n      const range = Editor.range(editor, path)\n      return !!Range.intersection(range, editor.selection)\n    },\n    [element]\n  )\n\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return useSlateSelector(selector, undefined, {\n    // Defer the selector until after `Editable` has rendered so that the path\n    // will be accurate.\n    deferred: true,\n  })\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-slate-selection.tsx",
    "content": "import { BaseSelection, Range } from 'slate'\n\nimport { useSlateSelector } from './use-slate-selector'\n\n/**\n * Get the current slate selection.\n * Only triggers a rerender when the selection actually changes\n */\nexport const useSlateSelection = () => {\n  return useSlateSelector(editor => editor.selection, isSelectionEqual)\n}\n\nconst isSelectionEqual = (a: BaseSelection, b: BaseSelection) => {\n  if (!a && !b) return true\n  if (!a || !b) return false\n  return Range.equals(a, b)\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-slate-selector.tsx",
    "content": "import { createContext, useCallback, useContext, useMemo, useRef } from 'react'\nimport { Editor } from 'slate'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\nimport { useSlateStatic } from './use-slate-static'\nimport { useGenericSelector } from './use-generic-selector'\n\ntype Callback = () => void\n\nexport interface SlateSelectorOptions {\n  /**\n   * If true, defer calling the selector function until after `Editable` has\n   * finished rendering. This ensures that `ReactEditor.findPath` won't return\n   * an outdated path if called inside the selector.\n   */\n  deferred?: boolean\n}\n\n/**\n * A React context for sharing the editor selector context in a way to control\n * re-renders.\n */\n\nexport const SlateSelectorContext = createContext<{\n  addEventListener: (\n    callback: Callback,\n    options?: SlateSelectorOptions\n  ) => () => void\n  flushDeferred: () => void\n}>({} as any)\n\nconst refEquality = (a: any, b: any) => a === b\n\n/**\n * Use redux style selectors to prevent re-rendering on every keystroke.\n *\n * Bear in mind re-rendering can only prevented if the returned value is a value\n * type or for reference types (e.g. objects and arrays) add a custom equality\n * function.\n *\n * If `selector` is memoized using `useCallback`, then it will only be called\n * when it or the editor state changes. Otherwise, `selector` will be called\n * every time the component renders.\n *\n * @example\n * const isSelectionActive = useSlateSelector(editor => Boolean(editor.selection))\n */\n\nexport function useSlateSelector<T>(\n  selector: (editor: Editor) => T,\n  equalityFn: (a: T | null, b: T) => boolean = refEquality,\n  { deferred }: SlateSelectorOptions = {}\n): T {\n  const context = useContext(SlateSelectorContext)\n  if (!context) {\n    throw new Error(\n      `The \\`useSlateSelector\\` hook must be used inside the <Slate> component's context.`\n    )\n  }\n  const { addEventListener } = context\n\n  const editor = useSlateStatic()\n  const genericSelector = useCallback(\n    () => selector(editor),\n    [editor, selector]\n  )\n  const [selectedState, update] = useGenericSelector(\n    genericSelector,\n    equalityFn\n  )\n\n  useIsomorphicLayoutEffect(() => {\n    const unsubscribe = addEventListener(update, { deferred })\n    update()\n    return unsubscribe\n  }, [addEventListener, update, deferred])\n\n  return selectedState\n}\n\n/**\n * Create selector context with editor updating on every editor change\n */\nexport function useSelectorContext() {\n  const eventListeners = useRef(new Set<Callback>())\n  const deferredEventListeners = useRef(new Set<Callback>())\n\n  const onChange = useCallback(() => {\n    eventListeners.current.forEach(listener => listener())\n  }, [])\n\n  const flushDeferred = useCallback(() => {\n    deferredEventListeners.current.forEach(listener => listener())\n    deferredEventListeners.current.clear()\n  }, [])\n\n  const addEventListener = useCallback(\n    (\n      callbackProp: Callback,\n      { deferred = false }: SlateSelectorOptions = {}\n    ) => {\n      const callback = deferred\n        ? () => deferredEventListeners.current.add(callbackProp)\n        : callbackProp\n\n      eventListeners.current.add(callback)\n\n      return () => {\n        eventListeners.current.delete(callback)\n      }\n    },\n    []\n  )\n\n  const selectorContext = useMemo(\n    () => ({\n      addEventListener,\n      flushDeferred,\n    }),\n    [addEventListener, flushDeferred]\n  )\n\n  return { selectorContext, onChange }\n}\n\nexport function useFlushDeferredSelectorsOnRender() {\n  const { flushDeferred } = useContext(SlateSelectorContext)\n  useIsomorphicLayoutEffect(flushDeferred)\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-slate-static.tsx",
    "content": "import { createContext, useContext } from 'react'\nimport { Editor } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\n\n/**\n * A React context for sharing the editor object.\n */\n\nexport const EditorContext = createContext<ReactEditor | null>(null)\n\n/**\n * Get the current editor object from the React context.\n */\n\nexport const useSlateStatic = (): Editor => {\n  const editor = useContext(EditorContext)\n\n  if (!editor) {\n    throw new Error(\n      `The \\`useSlateStatic\\` hook must be used inside the <Slate> component's context.`\n    )\n  }\n\n  return editor\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-slate.tsx",
    "content": "import { MutableRefObject, useContext, useMemo, useReducer } from 'react'\nimport { Editor } from 'slate'\nimport { SlateSelectorContext } from './use-slate-selector'\nimport { useSlateStatic } from './use-slate-static'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\n\n/**\n * Get the current editor object and re-render whenever it changes.\n */\n\nexport const useSlate = (): Editor => {\n  const { addEventListener } = useContext(SlateSelectorContext)\n  const [, forceRender] = useReducer(s => s + 1, 0)\n\n  if (!addEventListener) {\n    throw new Error(\n      `The \\`useSlate\\` hook must be used inside the <Slate> component's context.`\n    )\n  }\n\n  useIsomorphicLayoutEffect(\n    () => addEventListener(forceRender),\n    [addEventListener]\n  )\n\n  return useSlateStatic()\n}\n\nconst EDITOR_TO_V = new WeakMap<Editor, MutableRefObject<number>>()\n\nconst getEditorVersionRef = (editor: Editor): MutableRefObject<number> => {\n  let v = EDITOR_TO_V.get(editor)\n\n  if (v) {\n    return v\n  }\n\n  v = { current: 0 }\n  EDITOR_TO_V.set(editor, v)\n\n  // Register the `onChange` handler exactly once per editor\n  const { onChange } = editor\n\n  editor.onChange = options => {\n    v!.current++\n    onChange(options)\n  }\n\n  return v\n}\n\n/**\n * Get the current editor object and its version, which increments on every\n * change.\n *\n * @deprecated The `v` counter is no longer used except for this hook, and may\n * be removed in a future version.\n */\n\nexport const useSlateWithV = (): { editor: Editor; v: number } => {\n  const editor = useSlate()\n  const vRef = useMemo(() => getEditorVersionRef(editor), [editor])\n  return { editor, v: vRef.current }\n}\n"
  },
  {
    "path": "packages/slate-react/src/hooks/use-track-user-input.ts",
    "content": "import { useCallback, useEffect, useRef } from 'react'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { useSlateStatic } from './use-slate-static'\n\nexport function useTrackUserInput() {\n  const editor = useSlateStatic()\n\n  const receivedUserInput = useRef<boolean>(false)\n  const animationFrameIdRef = useRef<number>(0)\n\n  const onUserInput = useCallback(() => {\n    if (receivedUserInput.current) {\n      return\n    }\n\n    receivedUserInput.current = true\n\n    const window = ReactEditor.getWindow(editor)\n    window.cancelAnimationFrame(animationFrameIdRef.current)\n\n    animationFrameIdRef.current = window.requestAnimationFrame(() => {\n      receivedUserInput.current = false\n    })\n  }, [editor])\n\n  useEffect(() => () => cancelAnimationFrame(animationFrameIdRef.current), [])\n\n  return {\n    receivedUserInput,\n    onUserInput,\n  }\n}\n"
  },
  {
    "path": "packages/slate-react/src/index.ts",
    "content": "// Components\nexport {\n  Editable,\n  RenderElementProps,\n  RenderChunkProps,\n  RenderLeafProps,\n  RenderPlaceholderProps,\n  DefaultPlaceholder,\n  defaultScrollSelectionIntoView,\n} from './components/editable'\n\nexport { DefaultElement } from './components/element'\nexport { DefaultText } from './components/text'\nexport { DefaultLeaf } from './components/leaf'\nexport { Slate } from './components/slate'\n\n// Hooks\nexport { useEditor } from './hooks/use-editor'\nexport { useElement, useElementIf } from './hooks/use-element'\nexport { useSlateStatic } from './hooks/use-slate-static'\nexport { useComposing } from './hooks/use-composing'\nexport { useFocused } from './hooks/use-focused'\nexport { useReadOnly } from './hooks/use-read-only'\nexport { useSelected } from './hooks/use-selected'\nexport { useSlate, useSlateWithV } from './hooks/use-slate'\nexport { useSlateSelector } from './hooks/use-slate-selector'\nexport { useSlateSelection } from './hooks/use-slate-selection'\n\n// Plugin\nexport { ReactEditor } from './plugin/react-editor'\nexport { withReact } from './plugin/with-react'\n\n// Utils\nexport { NODE_TO_INDEX, NODE_TO_PARENT } from 'slate-dom'\n"
  },
  {
    "path": "packages/slate-react/src/plugin/react-editor.ts",
    "content": "import { Ancestor } from 'slate'\nimport { DOMEditor, type DOMEditorInterface } from 'slate-dom'\n\n/**\n * A React and DOM-specific version of the `Editor` interface.\n */\n\nexport interface ReactEditor extends DOMEditor {\n  /**\n   * Determines the chunk size used by the children chunking optimization. If\n   * null is returned (which is the default), the chunking optimization is\n   * disabled.\n   */\n  getChunkSize: (node: Ancestor) => number | null\n}\n\nexport interface ReactEditorInterface extends DOMEditorInterface {}\n\n// eslint-disable-next-line no-redeclare\nexport const ReactEditor: ReactEditorInterface = DOMEditor\n"
  },
  {
    "path": "packages/slate-react/src/plugin/with-react.ts",
    "content": "import ReactDOM from 'react-dom'\nimport { BaseEditor, Node } from 'slate'\nimport { withDOM, IS_ANDROID, EDITOR_TO_PENDING_SELECTION } from 'slate-dom'\nimport { ReactEditor } from './react-editor'\nimport { REACT_MAJOR_VERSION } from '../utils/environment'\nimport { getChunkTreeForNode } from '../chunking'\n\n/**\n * `withReact` adds React and DOM specific behaviors to the editor.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\nexport const withReact = <T extends BaseEditor>(\n  editor: T,\n  clipboardFormatKey = 'x-slate-fragment'\n): T & ReactEditor => {\n  let e = editor as T & ReactEditor\n\n  e = withDOM(e, clipboardFormatKey)\n\n  const { onChange, apply, insertText } = e\n\n  e.getChunkSize = () => null\n\n  if (IS_ANDROID) {\n    e.insertText = (text, options) => {\n      // COMPAT: Android devices, specifically Samsung devices, experience cursor jumping.\n      // This issue occurs when the ⁠insertText function is called immediately after typing.\n      // The problem arises because typing schedules a selection change.\n      // However, this selection change is only executed after the ⁠insertText function.\n      // As a result, the already obsolete selection is applied, leading to incorrect\n      // final cursor position.\n      EDITOR_TO_PENDING_SELECTION.delete(e)\n\n      return insertText(text, options)\n    }\n  }\n\n  e.onChange = options => {\n    // COMPAT: React < 18 doesn't batch `setState` hook calls, which means\n    // that the children and selection can get out of sync for one render\n    // pass. So we have to use this unstable API to ensure it batches them.\n    // (2019/12/03)\n    // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n    const maybeBatchUpdates =\n      REACT_MAJOR_VERSION < 18\n        ? ReactDOM.unstable_batchedUpdates\n        : (callback: () => void) => callback()\n\n    maybeBatchUpdates(() => {\n      onChange(options)\n    })\n  }\n\n  // On move_node, if the chunking optimization is enabled for the parent of the\n  // node being moved, add the moved node to the movedNodeKeys set of the\n  // parent's chunk tree.\n  e.apply = operation => {\n    if (operation.type === 'move_node') {\n      const parent = Node.parent(e, operation.path)\n      const chunking = !!e.getChunkSize(parent)\n\n      if (chunking) {\n        const node = Node.get(e, operation.path)\n        const chunkTree = getChunkTreeForNode(e, parent)\n        const key = ReactEditor.findKey(e, node)\n        chunkTree.movedNodeKeys.add(key)\n      }\n    }\n\n    apply(operation)\n  }\n\n  return e\n}\n"
  },
  {
    "path": "packages/slate-react/src/utils/environment.ts",
    "content": "import React from 'react'\n\nexport const REACT_MAJOR_VERSION = parseInt(React.version.split('.')[0], 10)\n"
  },
  {
    "path": "packages/slate-react/test/chunking.spec.ts",
    "content": "import { Descendant, Element, Node, Transforms, createEditor } from 'slate'\nimport { Key } from 'slate-dom'\nimport { ReactEditor, withReact } from '../src'\nimport {\n  Chunk,\n  ChunkAncestor,\n  ChunkDescendant,\n  ChunkLeaf,\n  ChunkNode,\n  ChunkTree,\n  KEY_TO_CHUNK_TREE,\n  getChunkTreeForNode,\n} from '../src/chunking'\nimport { ReconcileOptions } from '../src/chunking/reconcile-children'\n\nconst block = (text: string): Element => ({ children: [{ text }] })\n\nconst blocks = (count: number) =>\n  Array.from(\n    {\n      length: count,\n    },\n    (_, i) => block(i.toString())\n  )\n\nconst reconcileEditor = (\n  editor: ReactEditor,\n  options: Omit<ReconcileOptions, 'chunkTree' | 'children' | 'chunkSize'> = {}\n) =>\n  getChunkTreeForNode(editor, editor, {\n    reconcile: {\n      chunkSize: 3,\n      debug: true,\n      ...options,\n    },\n  })\n\ntype TreeShape = string | TreeShape[]\n\nconst getTreeShape = (chunkNode: ChunkNode): TreeShape => {\n  if (chunkNode.type === 'leaf') {\n    return Node.string(chunkNode.node)\n  }\n\n  return chunkNode.children.map(getTreeShape)\n}\n\nconst getChildrenAndTreeForShape = (\n  editor: ReactEditor,\n  treeShape: TreeShape[]\n): { children: Descendant[]; chunkTree: ChunkTree } => {\n  const children: Descendant[] = []\n\n  const shapeToNode = (\n    ts: TreeShape,\n    parent: ChunkAncestor\n  ): ChunkDescendant => {\n    if (Array.isArray(ts)) {\n      const chunk: Chunk = {\n        type: 'chunk',\n        key: new Key(),\n        parent,\n        children: [],\n      }\n\n      chunk.children = ts.map(child => shapeToNode(child, chunk))\n\n      return chunk\n    }\n\n    const node = block(ts)\n    const index = children.length\n    children.push(node)\n\n    return {\n      type: 'leaf',\n      key: ReactEditor.findKey(editor, node),\n      node,\n      index,\n    }\n  }\n\n  const chunkTree: ChunkTree = {\n    type: 'root',\n    modifiedChunks: new Set(),\n    movedNodeKeys: new Set(),\n    children: [],\n  }\n\n  chunkTree.children = treeShape.map(child => shapeToNode(child, chunkTree))\n\n  return { children, chunkTree }\n}\n\nconst withChunking = (editor: ReactEditor) => {\n  editor.getChunkSize = node => (node === editor ? 3 : null)\n  return editor\n}\n\nconst createEditorWithShape = (treeShape: TreeShape[]) => {\n  const editor = withChunking(withReact(createEditor()))\n  const { children, chunkTree } = getChildrenAndTreeForShape(editor, treeShape)\n  editor.children = children\n  const key = ReactEditor.findKey(editor, editor)\n  KEY_TO_CHUNK_TREE.set(key, chunkTree)\n  return editor\n}\n\n// https://stackoverflow.com/a/29450606\nconst createPRNG = (seed: number) => {\n  const mask = 0xffffffff\n  let m_w = (123456789 + seed) & mask\n  let m_z = (987654321 - seed) & mask\n\n  return () => {\n    m_z = (36969 * (m_z & 65535) + (m_z >>> 16)) & mask\n    m_w = (18000 * (m_w & 65535) + (m_w >>> 16)) & mask\n\n    let result = ((m_z << 16) + (m_w & 65535)) >>> 0\n    result /= 4294967296\n    return result\n  }\n}\n\ndescribe('getChunkTreeForNode', () => {\n  describe('chunking initial value', () => {\n    const getShapeForInitialCount = (count: number) => {\n      const editor = withChunking(withReact(createEditor()))\n      editor.children = blocks(count)\n      const chunkTree = reconcileEditor(editor)\n      return getTreeShape(chunkTree)\n    }\n\n    it('returns empty tree for 0 children', () => {\n      expect(getShapeForInitialCount(0)).toEqual([])\n    })\n\n    it('returns flat tree for 1 child', () => {\n      expect(getShapeForInitialCount(1)).toEqual(['0'])\n    })\n\n    it('returns flat tree for 3 children', () => {\n      expect(getShapeForInitialCount(3)).toEqual(['0', '1', '2'])\n    })\n\n    it('returns 1 layer of chunking for 4 children', () => {\n      expect(getShapeForInitialCount(4)).toEqual([['0', '1', '2'], ['3']])\n    })\n\n    it('returns 1 layer of chunking for 9 children', () => {\n      expect(getShapeForInitialCount(9)).toEqual([\n        ['0', '1', '2'],\n        ['3', '4', '5'],\n        ['6', '7', '8'],\n      ])\n    })\n\n    it('returns 2 layers of chunking for 10 children', () => {\n      expect(getShapeForInitialCount(10)).toEqual([\n        [\n          ['0', '1', '2'],\n          ['3', '4', '5'],\n          ['6', '7', '8'],\n        ],\n        [['9']],\n      ])\n    })\n\n    it('returns 2 layers of chunking for 27 children', () => {\n      expect(getShapeForInitialCount(27)).toEqual([\n        [\n          ['0', '1', '2'],\n          ['3', '4', '5'],\n          ['6', '7', '8'],\n        ],\n        [\n          ['9', '10', '11'],\n          ['12', '13', '14'],\n          ['15', '16', '17'],\n        ],\n        [\n          ['18', '19', '20'],\n          ['21', '22', '23'],\n          ['24', '25', '26'],\n        ],\n      ])\n    })\n\n    it('returns 3 layers of chunking for 28 children', () => {\n      expect(getShapeForInitialCount(28)).toEqual([\n        [\n          [\n            ['0', '1', '2'],\n            ['3', '4', '5'],\n            ['6', '7', '8'],\n          ],\n          [\n            ['9', '10', '11'],\n            ['12', '13', '14'],\n            ['15', '16', '17'],\n          ],\n          [\n            ['18', '19', '20'],\n            ['21', '22', '23'],\n            ['24', '25', '26'],\n          ],\n        ],\n        [[['27']]],\n      ])\n    })\n\n    it('calls onInsert for initial children', () => {\n      const editor = withChunking(withReact(createEditor()))\n      editor.children = blocks(3)\n\n      const onInsert = jest.fn()\n      reconcileEditor(editor, { onInsert })\n\n      expect(onInsert.mock.calls).toEqual([\n        [editor.children[0], 0],\n        [editor.children[1], 1],\n        [editor.children[2], 2],\n      ])\n    })\n\n    it('sets the index of each chunk leaf', () => {\n      const editor = withChunking(withReact(createEditor()))\n      editor.children = blocks(9)\n\n      const chunkTree = reconcileEditor(editor)\n      const chunks = chunkTree.children as Chunk[]\n      const leaves = chunks.map(chunk => chunk.children)\n\n      expect(leaves).toMatchObject([\n        [{ index: 0 }, { index: 1 }, { index: 2 }],\n        [{ index: 3 }, { index: 4 }, { index: 5 }],\n        [{ index: 6 }, { index: 7 }, { index: 8 }],\n      ])\n    })\n  })\n\n  describe('inserting nodes', () => {\n    describe('in empty editor', () => {\n      it('inserts a single node', () => {\n        const editor = createEditorWithShape([])\n        Transforms.insertNodes(editor, block('x'), { at: [0] })\n        const chunkTree = reconcileEditor(editor)\n        expect(getTreeShape(chunkTree)).toEqual(['x'])\n      })\n\n      it('inserts 27 nodes with 2 layers of chunking', () => {\n        const editor = createEditorWithShape([])\n        Transforms.insertNodes(editor, blocks(27), { at: [0] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          [\n            ['0', '1', '2'],\n            ['3', '4', '5'],\n            ['6', '7', '8'],\n          ],\n          [\n            ['9', '10', '11'],\n            ['12', '13', '14'],\n            ['15', '16', '17'],\n          ],\n          [\n            ['18', '19', '20'],\n            ['21', '22', '23'],\n            ['24', '25', '26'],\n          ],\n        ])\n      })\n\n      it('inserts 28 nodes with 3 layers of chunking', () => {\n        const editor = createEditorWithShape([])\n        Transforms.insertNodes(editor, blocks(28), { at: [0] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          [\n            [\n              ['0', '1', '2'],\n              ['3', '4', '5'],\n              ['6', '7', '8'],\n            ],\n            [\n              ['9', '10', '11'],\n              ['12', '13', '14'],\n              ['15', '16', '17'],\n            ],\n            [\n              ['18', '19', '20'],\n              ['21', '22', '23'],\n              ['24', '25', '26'],\n            ],\n          ],\n          [[['27']]],\n        ])\n      })\n\n      it('inserts nodes one by one', () => {\n        const editor = createEditorWithShape([])\n        let chunkTree: ChunkTree\n\n        blocks(31).forEach((node, i) => {\n          Transforms.insertNodes(editor, node, { at: [i] })\n          chunkTree = reconcileEditor(editor)\n        })\n\n        expect(getTreeShape(chunkTree!)).toEqual([\n          '0',\n          '1',\n          '2',\n          ['3', '4', '5'],\n          ['6', '7', '8'],\n          ['9', '10', '11'],\n          ['12', '13', '14'],\n          ['15', '16', '17'],\n          ['18', '19', '20'],\n          [\n            ['21', '22', '23'],\n            ['24', '25', '26'],\n            ['27', '28', '29'],\n          ],\n          [['30']],\n        ])\n      })\n\n      it('inserts nodes one by one in reverse order', () => {\n        const editor = createEditorWithShape([])\n        let chunkTree: ChunkTree\n\n        blocks(31)\n          .reverse()\n          .forEach(node => {\n            Transforms.insertNodes(editor, node, { at: [0] })\n            chunkTree = reconcileEditor(editor)\n          })\n\n        expect(getTreeShape(chunkTree!)).toEqual([\n          [['0']],\n          [\n            ['1', '2', '3'],\n            ['4', '5', '6'],\n            ['7', '8', '9'],\n          ],\n          ['10', '11', '12'],\n          ['13', '14', '15'],\n          ['16', '17', '18'],\n          ['19', '20', '21'],\n          ['22', '23', '24'],\n          ['25', '26', '27'],\n          '28',\n          '29',\n          '30',\n        ])\n      })\n    })\n\n    describe('at end of editor', () => {\n      it('inserts a single node at the top level', () => {\n        const editor = createEditorWithShape(['0', ['1', '2', ['3', '4', '5']]])\n        Transforms.insertNodes(editor, block('x'), { at: [6] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          '0',\n          ['1', '2', ['3', '4', '5']],\n          [['x']],\n        ])\n      })\n\n      it('inserts a single node into a chunk', () => {\n        const editor = createEditorWithShape(['0', ['1', ['2', '3', '4']]])\n        Transforms.insertNodes(editor, block('x'), { at: [5] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          '0',\n          ['1', ['2', '3', '4'], ['x']],\n        ])\n      })\n\n      it('inserts a single node into a nested chunk', () => {\n        const editor = createEditorWithShape(['0', ['1', '2', ['3', '4']]])\n        Transforms.insertNodes(editor, block('x'), { at: [5] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          '0',\n          ['1', '2', ['3', '4', 'x']],\n        ])\n      })\n\n      it('inserts 25 nodes after 2 nodes with 2 layers of chunking', () => {\n        const editor = createEditorWithShape(['a', 'b'])\n        Transforms.insertNodes(editor, blocks(25), { at: [2] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          'a',\n          'b',\n          [\n            ['0', '1', '2'],\n            ['3', '4', '5'],\n            ['6', '7', '8'],\n          ],\n          [\n            ['9', '10', '11'],\n            ['12', '13', '14'],\n            ['15', '16', '17'],\n          ],\n          [['18', '19', '20'], ['21', '22', '23'], ['24']],\n        ])\n      })\n\n      it('inserts 25 nodes after 3 nodes with 3 layers of chunking', () => {\n        const editor = createEditorWithShape(['a', 'b', 'c'])\n        Transforms.insertNodes(editor, blocks(25), { at: [3] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          'a',\n          'b',\n          'c',\n          [\n            [\n              ['0', '1', '2'],\n              ['3', '4', '5'],\n              ['6', '7', '8'],\n            ],\n            [\n              ['9', '10', '11'],\n              ['12', '13', '14'],\n              ['15', '16', '17'],\n            ],\n            [['18', '19', '20'], ['21', '22', '23'], ['24']],\n          ],\n        ])\n      })\n\n      it('inserts many nodes at the ends of multiple nested chunks', () => {\n        const editor = createEditorWithShape(['a', ['b', ['c']]])\n        Transforms.insertNodes(editor, blocks(12), { at: [3] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          'a',\n          ['b', ['c', '0', '1'], ['2']],\n          [\n            ['3', '4', '5'],\n            ['6', '7', '8'],\n            ['9', '10', '11'],\n          ],\n        ])\n      })\n\n      it('calls onInsert for inserted nodes', () => {\n        const editor = createEditorWithShape(['a', 'b', 'c'])\n        Transforms.insertNodes(editor, blocks(2), { at: [3] })\n\n        const onInsert = jest.fn()\n        reconcileEditor(editor, { onInsert })\n\n        expect(onInsert.mock.calls).toEqual([\n          [editor.children[3], 3],\n          [editor.children[4], 4],\n        ])\n      })\n\n      it('sets the index of inserted leaves', () => {\n        const editor = createEditorWithShape(['a', 'b', 'c'])\n        Transforms.insertNodes(editor, blocks(2), { at: [3] })\n\n        const chunkTree = reconcileEditor(editor)\n        const chunk = chunkTree.children[3] as Chunk\n\n        expect(chunk.children).toMatchObject([{ index: 3 }, { index: 4 }])\n      })\n    })\n\n    describe('at start of editor', () => {\n      it('inserts a single node at the top level', () => {\n        const editor = createEditorWithShape(['0', '1'])\n        Transforms.insertNodes(editor, block('x'), { at: [0] })\n        const chunkTree = reconcileEditor(editor)\n        expect(getTreeShape(chunkTree)).toEqual(['x', '0', '1'])\n      })\n\n      it('inserts many nodes at the starts of multiple nested chunks', () => {\n        const editor = createEditorWithShape([[['a'], 'b'], 'c'])\n        Transforms.insertNodes(editor, blocks(12), { at: [0] })\n        const chunkTree = reconcileEditor(editor)\n\n        expect(getTreeShape(chunkTree)).toEqual([\n          [\n            ['0', '1', '2'],\n            ['3', '4', '5'],\n            ['6', '7', '8'],\n          ],\n          [['9'], ['10', '11', 'a'], 'b'],\n          'c',\n        ])\n      })\n    })\n\n    describe('in the middle of editor', () => {\n      describe('at the top level', () => {\n        it('inserts a single node', () => {\n          const editor = createEditorWithShape(['0', '1'])\n          Transforms.insertNodes(editor, block('x'), { at: [1] })\n          const chunkTree = reconcileEditor(editor)\n\n          expect(getTreeShape(chunkTree)).toEqual(['0', 'x', '1'])\n        })\n\n        it('inserts nodes at the start of subsequent sibling chunks', () => {\n          const editor = createEditorWithShape(['a', [['b', 'c'], 'd'], 'e'])\n          Transforms.insertNodes(editor, blocks(3), { at: [1] })\n          const chunkTree = reconcileEditor(editor)\n\n          expect(getTreeShape(chunkTree)).toEqual([\n            'a',\n            [['0']],\n            [['1'], ['2', 'b', 'c'], 'd'],\n            'e',\n          ])\n        })\n\n        it('calls onInsert for inserted nodes', () => {\n          const editor = createEditorWithShape(['a', 'b', 'c'])\n          Transforms.insertNodes(editor, blocks(2), { at: [1] })\n\n          const onInsert = jest.fn()\n          reconcileEditor(editor, { onInsert })\n\n          expect(onInsert.mock.calls).toEqual([\n            [editor.children[1], 1],\n            [editor.children[2], 2],\n          ])\n        })\n\n        it('calls onIndexChange for subsequent nodes', () => {\n          const editor = createEditorWithShape(['a', 'b', 'c'])\n          Transforms.insertNodes(editor, blocks(2), { at: [1] })\n\n          const onIndexChange = jest.fn()\n          reconcileEditor(editor, { onIndexChange })\n\n          expect(onIndexChange.mock.calls).toEqual([\n            [editor.children[3], 3],\n            [editor.children[4], 4],\n          ])\n        })\n\n        it('updates the index of subsequent leaves', () => {\n          const editor = createEditorWithShape(['a', 'b', 'c'])\n          Transforms.insertNodes(editor, blocks(3), { at: [1] })\n\n          const chunkTree = reconcileEditor(editor)\n          const subsequentLeaves = chunkTree.children.slice(2)\n\n          expect(subsequentLeaves).toMatchObject([{ index: 4 }, { index: 5 }])\n        })\n      })\n\n      describe('in the middle of a chunk', () => {\n        it('inserts a single node', () => {\n          const editor = createEditorWithShape([[['0', '1']]])\n          Transforms.insertNodes(editor, block('x'), { at: [1] })\n          const chunkTree = reconcileEditor(editor)\n          expect(getTreeShape(chunkTree)).toEqual([[['0', 'x', '1']]])\n        })\n\n        it('inserts 8 nodes between 2 nodes', () => {\n          const editor = createEditorWithShape([[['a', 'b']]])\n          Transforms.insertNodes(editor, blocks(8), { at: [1] })\n          const chunkTree = reconcileEditor(editor)\n\n          expect(getTreeShape(chunkTree)).toEqual([\n            [\n              [\n                'a',\n                [\n                  ['0', '1', '2'],\n                  ['3', '4', '5'],\n                  ['6', '7'],\n                ],\n                'b',\n              ],\n            ],\n          ])\n        })\n\n        it('inserts nodes at the start of subsequent sibling chunks', () => {\n          const editor = createEditorWithShape([['a', [['b', 'c'], 'd'], 'e']])\n          Transforms.insertNodes(editor, blocks(3), { at: [1] })\n          const chunkTree = reconcileEditor(editor)\n\n          expect(getTreeShape(chunkTree)).toEqual([\n            ['a', [['0']], [['1'], ['2', 'b', 'c'], 'd'], 'e'],\n          ])\n        })\n      })\n\n      describe('at the end of a chunk', () => {\n        it('inserts 2 nodes in 2 adjacent shallow chunks', () => {\n          const editor = createEditorWithShape([['a', 'b'], ['c']])\n          Transforms.insertNodes(editor, blocks(2), { at: [2] })\n          const chunkTree = reconcileEditor(editor)\n\n          expect(getTreeShape(chunkTree)).toEqual([\n            ['a', 'b', '0'],\n            ['1', 'c'],\n          ])\n        })\n\n        it('inserts nodes in many adjacent nested chunks', () => {\n          const editor = createEditorWithShape([\n            [\n              ['a', ['b', ['c']]],\n              [[['d'], 'e'], 'f'],\n            ],\n          ])\n\n          Transforms.insertNodes(editor, blocks(17), { at: [3] })\n          const chunkTree = reconcileEditor(editor)\n\n          expect(getTreeShape(chunkTree)).toEqual([\n            [\n              ['a', ['b', ['c', '0', '1'], ['2']], [['3']]],\n              [\n                [\n                  ['4', '5', '6'],\n                  ['7', '8', '9'],\n                  ['10', '11', '12'],\n                ],\n              ],\n              [[['13']], [['14'], ['15', '16', 'd'], 'e'], 'f'],\n            ],\n          ])\n        })\n      })\n    })\n  })\n\n  describe('removing nodes', () => {\n    it('removes a node', () => {\n      const editor = createEditorWithShape(['0', [['1']], '2'])\n      Transforms.removeNodes(editor, { at: [1] })\n      const chunkTree = reconcileEditor(editor)\n      expect(getTreeShape(chunkTree)).toEqual(['0', '2'])\n    })\n\n    it('removes multiple consecutive nodes', () => {\n      const editor = createEditorWithShape(['0', ['1', '2', '3'], '4'])\n      Transforms.removeNodes(editor, { at: [3] })\n      Transforms.removeNodes(editor, { at: [2] })\n      const chunkTree = reconcileEditor(editor)\n      expect(getTreeShape(chunkTree)).toEqual(['0', ['1'], '4'])\n    })\n\n    it('removes multiple non-consecutive nodes', () => {\n      const editor = createEditorWithShape(['0', ['1', '2', '3'], '4'])\n      Transforms.removeNodes(editor, { at: [3] })\n      Transforms.removeNodes(editor, { at: [1] })\n      const chunkTree = reconcileEditor(editor)\n      expect(getTreeShape(chunkTree)).toEqual(['0', ['2'], '4'])\n    })\n\n    it('calls onIndexChange for subsequent nodes', () => {\n      const editor = createEditorWithShape(['a', 'b', 'c', 'd'])\n      Transforms.removeNodes(editor, { at: [1] })\n\n      const onIndexChange = jest.fn()\n      reconcileEditor(editor, { onIndexChange })\n\n      expect(onIndexChange.mock.calls).toEqual([\n        [editor.children[1], 1],\n        [editor.children[2], 2],\n      ])\n    })\n\n    it('updates the index of subsequent leaves', () => {\n      const editor = createEditorWithShape(['a', 'b', 'c', 'd'])\n      Transforms.removeNodes(editor, { at: [1] })\n\n      const chunkTree = reconcileEditor(editor)\n      const subsequentLeaves = chunkTree.children.slice(1)\n\n      expect(subsequentLeaves).toMatchObject([{ index: 1 }, { index: 2 }])\n    })\n  })\n\n  describe('removing and inserting nodes', () => {\n    it('removes and inserts a node from the start', () => {\n      const editor = createEditorWithShape(['0', [['1']], '2'])\n      Transforms.removeNodes(editor, { at: [0] })\n      Transforms.insertNodes(editor, block('x'), { at: [0] })\n      const chunkTree = reconcileEditor(editor)\n      expect(getTreeShape(chunkTree)).toEqual([[['x', '1']], '2'])\n    })\n\n    it('removes and inserts a node from the middle', () => {\n      const editor = createEditorWithShape(['0', [['1']], '2'])\n      Transforms.removeNodes(editor, { at: [1] })\n      Transforms.insertNodes(editor, block('x'), { at: [1] })\n      const chunkTree = reconcileEditor(editor)\n      expect(getTreeShape(chunkTree)).toEqual(['0', 'x', '2'])\n    })\n\n    it('removes and inserts a node from the end', () => {\n      const editor = createEditorWithShape(['0', [['1']], '2'])\n      Transforms.removeNodes(editor, { at: [2] })\n      Transforms.insertNodes(editor, block('x'), { at: [2] })\n      const chunkTree = reconcileEditor(editor)\n      expect(getTreeShape(chunkTree)).toEqual(['0', [['1', 'x']]])\n    })\n\n    it('removes 2 nodes and inserts 1 node', () => {\n      const editor = createEditorWithShape(['0', ['1', '2'], '2'])\n      Transforms.removeNodes(editor, { at: [2] })\n      Transforms.removeNodes(editor, { at: [1] })\n      Transforms.insertNodes(editor, block('x'), { at: [1] })\n      const chunkTree = reconcileEditor(editor)\n      expect(getTreeShape(chunkTree)).toEqual(['0', 'x', '2'])\n    })\n\n    it('removes 1 nodes and inserts 2 node', () => {\n      const editor = createEditorWithShape(['0', ['1'], '2'])\n      Transforms.removeNodes(editor, { at: [1] })\n      Transforms.insertNodes(editor, block('x'), { at: [1] })\n      Transforms.insertNodes(editor, block('y'), { at: [2] })\n      const chunkTree = reconcileEditor(editor)\n      expect(getTreeShape(chunkTree)).toEqual(['0', ['x', 'y'], '2'])\n    })\n\n    it('calls onIndexChange for nodes until insertions equal removals', () => {\n      const editor = createEditorWithShape([\n        'a',\n        // Insert 2 here\n        'b',\n        'c',\n        'd', // Remove\n        'e',\n        'f',\n        'g', // Remove\n        'h',\n      ])\n\n      Transforms.removeNodes(editor, { at: [6] })\n      Transforms.removeNodes(editor, { at: [3] })\n      Transforms.insertNodes(editor, blocks(2), { at: [1] })\n\n      const onIndexChange = jest.fn()\n      reconcileEditor(editor, { onIndexChange })\n\n      expect(onIndexChange.mock.calls).toEqual([\n        [editor.children[3], 3],\n        [editor.children[4], 4],\n        [editor.children[5], 5],\n        [editor.children[6], 6],\n      ])\n    })\n  })\n\n  describe('updating nodes', () => {\n    it('replaces updated Slate nodes in the chunk tree', () => {\n      const editor = createEditorWithShape(['0', ['1'], '2'])\n      Transforms.setNodes(editor, { updated: true } as any, { at: [1] })\n\n      const chunkTree = reconcileEditor(editor)\n      const chunk = chunkTree.children[1] as Chunk\n      const leaf = chunk.children[0] as ChunkLeaf\n\n      expect(leaf.node).toMatchObject({ updated: true })\n    })\n\n    it('invalidates ancestor chunks of updated Slate nodes', () => {\n      const editor = createEditorWithShape(['0', [['1']], '2'])\n      Transforms.insertText(editor, 'x', { at: [1, 0] })\n\n      const chunkTree = reconcileEditor(editor)\n      const outerChunk = chunkTree.children[1] as Chunk\n      const innerChunk = outerChunk.children[0]\n\n      expect(getTreeShape(chunkTree)).toEqual(['0', [['x']], '2'])\n\n      expect(chunkTree.modifiedChunks).toEqual(\n        new Set([outerChunk, innerChunk])\n      )\n    })\n\n    it('calls onUpdate for updated Slate nodes', () => {\n      const editor = createEditorWithShape(['0', '1', '2', '3'])\n      Transforms.setNodes(editor, { updated: true } as any, { at: [1] })\n      Transforms.setNodes(editor, { updated: true } as any, { at: [2] })\n\n      const onUpdate = jest.fn()\n      reconcileEditor(editor, { onUpdate })\n\n      expect(onUpdate.mock.calls).toEqual([\n        [editor.children[1], 1],\n        [editor.children[2], 2],\n      ])\n    })\n  })\n\n  describe('moving nodes', () => {\n    it('moves a node down', () => {\n      const editor = createEditorWithShape([['0'], ['1'], ['2'], ['3'], ['4']])\n\n      // Move 1 to after 3\n      Transforms.moveNodes(editor, { at: [1], to: [3] })\n\n      const onInsert = jest.fn()\n      const onIndexChange = jest.fn()\n      const chunkTree = reconcileEditor(editor, { onInsert, onIndexChange })\n\n      expect(getTreeShape(chunkTree)).toEqual([['0'], ['2'], ['3', '1'], ['4']])\n\n      expect(onInsert.mock.calls).toEqual([[editor.children[3], 3]])\n\n      expect(onIndexChange.mock.calls).toEqual([\n        [editor.children[1], 1],\n        [editor.children[2], 2],\n      ])\n\n      expect(chunkTree.movedNodeKeys.size).toBe(0)\n    })\n\n    it('moves a node up', () => {\n      const editor = createEditorWithShape([['0'], ['1'], ['2'], ['3'], ['4']])\n\n      // Move 3 to after 0\n      Transforms.moveNodes(editor, { at: [3], to: [1] })\n\n      const onInsert = jest.fn()\n      const onIndexChange = jest.fn()\n      const chunkTree = reconcileEditor(editor, { onInsert, onIndexChange })\n\n      expect(getTreeShape(chunkTree)).toEqual([['0', '3'], ['1'], ['2'], ['4']])\n\n      expect(onInsert.mock.calls).toEqual([[editor.children[1], 1]])\n\n      expect(onIndexChange.mock.calls).toEqual([\n        [editor.children[2], 2],\n        [editor.children[3], 3],\n      ])\n\n      expect(chunkTree.movedNodeKeys.size).toBe(0)\n    })\n  })\n\n  describe('manual rerendering', () => {\n    it('invalidates specific child indices', () => {\n      const editor = createEditorWithShape([\n        ['0'],\n        ['1', ['2'], '3'],\n        ['4'],\n        '5',\n      ])\n\n      reconcileEditor(editor)\n\n      const chunkTree = reconcileEditor(editor, { rerenderChildren: [2, 4] })\n      const twoOuterChunk = chunkTree.children[1] as Chunk\n      const twoInnerChunk = twoOuterChunk.children[1]\n      const fourChunk = chunkTree.children[2]\n\n      expect(chunkTree.modifiedChunks).toEqual(\n        new Set([twoOuterChunk, twoInnerChunk, fourChunk])\n      )\n    })\n  })\n\n  describe('random testing', () => {\n    it('remains correct after random operations', () => {\n      // Hard code a value here to reproduce a test failure\n      const seed = Math.floor(10000000 * Math.random())\n      const random = createPRNG(seed)\n\n      const duration = 250\n      const startTime = performance.now()\n      const endTime = startTime + duration\n      let iteration = 0\n\n      try {\n        while (performance.now() < endTime) {\n          iteration++\n\n          const editor = withChunking(withReact(createEditor()))\n\n          const randomPosition = (includeEnd: boolean) =>\n            Math.floor(\n              random() * (editor.children.length + (includeEnd ? 1 : 0))\n            )\n\n          for (let i = 0; i < 30; i++) {\n            const randomValue = random()\n\n            if (randomValue < 0.33) {\n              reconcileEditor(editor)\n            } else if (randomValue < 0.66) {\n              Transforms.insertNodes(editor, block(i.toString()), {\n                at: [randomPosition(true)],\n              })\n            } else if (randomValue < 0.8) {\n              if (editor.children.length > 0) {\n                Transforms.removeNodes(editor, { at: [randomPosition(false)] })\n              }\n            } else {\n              if (editor.children.length > 0) {\n                Transforms.setNodes(editor, { updated: i } as any, {\n                  at: [randomPosition(false)],\n                })\n              }\n            }\n          }\n\n          const chunkTree = reconcileEditor(editor)\n          const chunkTreeSlateNodes: Descendant[] = []\n\n          const flattenTree = (node: ChunkNode) => {\n            if (node.type === 'leaf') {\n              chunkTreeSlateNodes.push(node.node)\n            } else {\n              node.children.forEach(flattenTree)\n            }\n          }\n\n          flattenTree(chunkTree)\n\n          expect(chunkTreeSlateNodes).toEqual(editor.children)\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `Random testing encountered an error or test failure on iteration ${iteration}. To reproduce this failure reliably, use the random seed: ${seed}`\n        )\n        throw e\n      }\n    })\n  })\n})\n"
  },
  {
    "path": "packages/slate-react/test/decorations.spec.tsx",
    "content": "import React from 'react'\nimport {\n  DecoratedRange,\n  Node,\n  NodeEntry,\n  Path,\n  createEditor as slateCreateEditor,\n  Editor,\n  Text,\n  Transforms,\n} from 'slate'\nimport { act, render } from '@testing-library/react'\nimport {\n  Slate,\n  withReact,\n  Editable,\n  RenderLeafProps,\n  ReactEditor,\n} from '../src'\n\nconst renderLeaf = ({ leaf, attributes, children }: RenderLeafProps) => {\n  const decorations = Object.keys(Node.extractProps(leaf)).sort()\n\n  return (\n    <span {...attributes} data-decorations={JSON.stringify(decorations)}>\n      {children}\n    </span>\n  )\n}\n\ninterface DecorateConfig {\n  path: Path\n  decorations: (node: Node) => (DecoratedRange & Record<string, unknown>)[]\n}\n\nconst decoratePaths =\n  (editor: ReactEditor, configs: DecorateConfig[]) =>\n  ([node, path]: NodeEntry): DecoratedRange[] => {\n    // Validate that decorate was called with a node matching the path\n    if (Node.get(editor, path) !== node) {\n      throw new Error('decorate was called with an incorrect node entry')\n    }\n\n    const matchingConfig = configs.find(({ path: p }) => Path.equals(path, p))\n    if (!matchingConfig) return []\n\n    return matchingConfig.decorations(node)\n  }\n\nconst getDecoratedLeaves = (\n  editor: ReactEditor,\n  path: Path\n): { text: string; decorations: string[] }[] => {\n  const text = ReactEditor.toDOMNode(editor, Node.leaf(editor, path))\n  const leaves = Array.from(text.children) as HTMLElement[]\n\n  return leaves.map(leaf => ({\n    text: leaf.textContent!,\n    decorations: JSON.parse(leaf.dataset.decorations!),\n  }))\n}\n\n// Pad children arrays with additional nodes to test whether decorations work\n// correctly on chunked children\nconst otherNodes = () =>\n  Array.from({ length: 7 }, () => ({ children: [{ text: '' }] }))\n\ndescribe('decorations', () => {\n  const withChunking = (chunking: boolean) => {\n    const createEditor = () => {\n      const editor = withReact(slateCreateEditor())\n\n      if (chunking) {\n        editor.getChunkSize = () => 2\n      }\n\n      return editor\n    }\n\n    describe('decorating initial value', () => {\n      it('decorates part of a single text node', () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          { children: [{ text: 'Hello world!' }] },\n          ...otherNodes(),\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [0, 0],\n            decorations: () => [\n              {\n                anchor: { path: [0, 0], offset: 6 },\n                focus: { path: [0, 0], offset: 11 },\n                bold: true,\n              },\n            ],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'Hello ', decorations: [] },\n          { text: 'world', decorations: ['bold'] },\n          { text: '!', decorations: [] },\n        ])\n      })\n\n      it('decorates an entire text node', () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          {\n            children: [{ text: 'before' }, { text: 'bold' }, { text: 'after' }],\n          },\n          ...otherNodes(),\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [0, 1],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [0, 1]),\n                bold: true,\n              },\n            ],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'before', decorations: [] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 1])).toEqual([\n          { text: 'bold', decorations: ['bold'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 2])).toEqual([\n          { text: 'after', decorations: [] },\n        ])\n      })\n\n      it('applies multiple overlapping decorations in a single text node', () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          { children: [{ text: 'Hello world!' }] },\n          ...otherNodes(),\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [0, 0],\n            decorations: () => [\n              {\n                anchor: { path: [0, 0], offset: 0 },\n                focus: { path: [0, 0], offset: 11 },\n                bold: true,\n              },\n              {\n                anchor: { path: [0, 0], offset: 6 },\n                focus: { path: [0, 0], offset: 12 },\n                italic: true,\n              },\n            ],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'Hello ', decorations: ['bold'] },\n          { text: 'world', decorations: ['bold', 'italic'] },\n          { text: '!', decorations: ['italic'] },\n        ])\n      })\n\n      it('passes down decorations from the parent element', () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          {\n            children: [\n              { text: 'before' },\n              { text: 'middle' },\n              { text: 'after' },\n            ],\n          },\n          ...otherNodes(),\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [0],\n            decorations: () => [\n              {\n                anchor: { path: [0, 0], offset: 2 },\n                focus: { path: [0, 2], offset: 2 },\n                bold: true,\n              },\n            ],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'be', decorations: [] },\n          { text: 'fore', decorations: ['bold'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 1])).toEqual([\n          { text: 'middle', decorations: ['bold'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 2])).toEqual([\n          { text: 'af', decorations: ['bold'] },\n          { text: 'ter', decorations: [] },\n        ])\n      })\n\n      it('passes decorations down from the editor', () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          {\n            children: [{ text: '0.0' }, { text: '0.1' }, { text: '0.2' }],\n          },\n          {\n            children: [{ text: '1.0' }],\n          },\n          {\n            children: [{ text: '2.0' }],\n          },\n          ...otherNodes(),\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [],\n            decorations: () => [\n              {\n                anchor: { path: [0, 1], offset: 0 },\n                focus: { path: [1, 0], offset: 3 },\n                bold: true,\n              },\n            ],\n          },\n          {\n            path: [0],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [0, 2]),\n                italic: true,\n              },\n            ],\n          },\n          {\n            path: [1, 0],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [1, 0]),\n                underline: true,\n              },\n            ],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: '0.0', decorations: [] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 1])).toEqual([\n          { text: '0.1', decorations: ['bold'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 2])).toEqual([\n          { text: '0.2', decorations: ['bold', 'italic'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [1, 0])).toEqual([\n          { text: '1.0', decorations: ['bold', 'underline'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [2, 0])).toEqual([\n          { text: '2.0', decorations: [] },\n        ])\n      })\n    })\n\n    describe('redecorating', () => {\n      it('redecorates all nodes when the decorate function changes', () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          {\n            children: [{ text: '0.0' }, { text: '0.1' }, { text: '0.2' }],\n          },\n          {\n            children: [{ text: '1.0' }, { text: '1.1' }, { text: '1.2' }],\n          },\n          ...otherNodes(),\n        ]\n\n        const decorate1 = decoratePaths(editor, [\n          {\n            path: [],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [0, 0]),\n                bold: true,\n              },\n              {\n                ...Editor.range(editor, [0, 1]),\n                italic: true,\n              },\n            ],\n          },\n          {\n            path: [1, 0],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [1, 0]),\n                bold: true,\n              },\n            ],\n          },\n          {\n            path: [1, 1],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [1, 1]),\n                italic: true,\n              },\n            ],\n          },\n        ])\n\n        const decorate2 = decoratePaths(editor, [\n          {\n            path: [0],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [0, 1]),\n                underline: true,\n              },\n              {\n                ...Editor.range(editor, [0, 2]),\n                bold: true,\n              },\n            ],\n          },\n          {\n            path: [1, 1],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [1, 1]),\n                underline: true,\n              },\n            ],\n          },\n          {\n            path: [1, 2],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [1, 2]),\n                bold: true,\n              },\n            ],\n          },\n        ])\n\n        const { rerender } = render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate1} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: '0.0', decorations: ['bold'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 1])).toEqual([\n          { text: '0.1', decorations: ['italic'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 2])).toEqual([\n          { text: '0.2', decorations: [] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [1, 0])).toEqual([\n          { text: '1.0', decorations: ['bold'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [1, 1])).toEqual([\n          { text: '1.1', decorations: ['italic'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [1, 2])).toEqual([\n          { text: '1.2', decorations: [] },\n        ])\n\n        rerender(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate2} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: '0.0', decorations: [] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 1])).toEqual([\n          { text: '0.1', decorations: ['underline'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [0, 2])).toEqual([\n          { text: '0.2', decorations: ['bold'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [1, 0])).toEqual([\n          { text: '1.0', decorations: [] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [1, 1])).toEqual([\n          { text: '1.1', decorations: ['underline'] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [1, 2])).toEqual([\n          { text: '1.2', decorations: ['bold'] },\n        ])\n      })\n\n      it('redecorates undecorated nodes when they change', async () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          { children: [{ text: 'The quick brown fox' }] },\n          ...otherNodes(),\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [0, 0],\n            decorations: node =>\n              Text.isText(node) && node.text.includes('box')\n                ? [\n                    {\n                      ...Editor.range(editor, [0, 0]),\n                      bold: true,\n                    },\n                  ]\n                : [],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'The quick brown fox', decorations: [] },\n        ])\n\n        await act(async () => {\n          Transforms.insertText(editor, 'b', {\n            at: {\n              anchor: { path: [0, 0], offset: 16 },\n              focus: { path: [0, 0], offset: 17 },\n            },\n          })\n        })\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'The quick brown box', decorations: ['bold'] },\n        ])\n      })\n\n      it('redecorates decorated nodes when they change', async () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          { children: [{ text: 'The quick brown box' }] },\n          ...otherNodes(),\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [0, 0],\n            decorations: node =>\n              Text.isText(node) && node.text.includes('box')\n                ? [\n                    {\n                      ...Editor.range(editor, [0, 0]),\n                      bold: true,\n                    },\n                  ]\n                : [],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'The quick brown box', decorations: ['bold'] },\n        ])\n\n        await act(async () => {\n          Transforms.insertText(editor, 'f', {\n            at: {\n              anchor: { path: [0, 0], offset: 16 },\n              focus: { path: [0, 0], offset: 17 },\n            },\n          })\n        })\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'The quick brown fox', decorations: [] },\n        ])\n      })\n\n      it('passes down new decorations from changed ancestors', async () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          {\n            children: [\n              { children: [{ text: 'Hello world!' }] },\n              ...otherNodes(),\n            ],\n          },\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [0],\n            decorations: node =>\n              'bold' in node\n                ? [\n                    {\n                      ...Editor.range(editor, [0, 0, 0]),\n                      bold: true,\n                    },\n                  ]\n                : [],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0, 0])).toEqual([\n          { text: 'Hello world!', decorations: [] },\n        ])\n\n        await act(async () => {\n          Transforms.setNodes(editor, { bold: true } as any, {\n            at: [0],\n          })\n        })\n\n        expect(getDecoratedLeaves(editor, [0, 0, 0])).toEqual([\n          { text: 'Hello world!', decorations: ['bold'] },\n        ])\n      })\n\n      it('does not redecorate unchanged nodes when their paths change', async () => {\n        const editor = createEditor()\n\n        const initialValue = [\n          { children: [{ text: 'A' }] },\n          { children: [{ text: 'B' }] },\n          ...otherNodes(),\n        ]\n\n        const decorate = decoratePaths(editor, [\n          {\n            path: [1, 0],\n            decorations: () => [\n              {\n                ...Editor.range(editor, [1, 0]),\n                bold: true,\n              },\n            ],\n          },\n        ])\n\n        render(\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable decorate={decorate} renderLeaf={renderLeaf} />\n          </Slate>\n        )\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: 'A', decorations: [] },\n        ])\n\n        expect(getDecoratedLeaves(editor, [1, 0])).toEqual([\n          { text: 'B', decorations: ['bold'] },\n        ])\n\n        await act(async () => {\n          Transforms.insertNodes(\n            editor,\n            { children: [{ text: '0' }] },\n            {\n              at: [0],\n            }\n          )\n        })\n\n        expect(getDecoratedLeaves(editor, [0, 0])).toEqual([\n          { text: '0', decorations: [] },\n        ])\n\n        // A does not become bold even though it now matches the decoration\n        expect(getDecoratedLeaves(editor, [1, 0])).toEqual([\n          { text: 'A', decorations: [] },\n        ])\n\n        // B remains bold even though it no longer matches the decoration\n        expect(getDecoratedLeaves(editor, [2, 0])).toEqual([\n          { text: 'B', decorations: ['bold'] },\n        ])\n      })\n    })\n  }\n\n  describe('without chunking', () => {\n    withChunking(false)\n  })\n\n  describe('with chunking', () => {\n    withChunking(true)\n  })\n})\n"
  },
  {
    "path": "packages/slate-react/test/editable.spec.tsx",
    "content": "import React, { useEffect } from 'react'\nimport { createEditor, Text, Transforms } from 'slate'\nimport { act, render } from '@testing-library/react'\nimport { Slate, withReact, Editable } from '../src'\n\ndescribe('slate-react', () => {\n  describe('Editable', () => {\n    describe('NODE_TO_KEY logic', () => {\n      test('should not unmount the node that gets split on a split_node operation', async () => {\n        const editor = withReact(createEditor())\n        const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n        const mounts = jest.fn()\n\n        act(() => {\n          render(\n            <Slate\n              editor={editor}\n              initialValue={initialValue}\n              onChange={() => {}}\n            >\n              <Editable\n                renderElement={({ children }) => {\n                  useEffect(() => mounts(), [])\n\n                  return children\n                }}\n              />\n            </Slate>\n          )\n        })\n\n        // slate updates at next tick, so we need this to be async\n        await act(async () =>\n          Transforms.splitNodes(editor, { at: { path: [0, 0], offset: 2 } })\n        )\n\n        // 2 renders, one for the main element and one for the split element\n        expect(mounts).toHaveBeenCalledTimes(2)\n      })\n\n      test('should not unmount the node that gets merged into on a merge_node operation', async () => {\n        const editor = withReact(createEditor())\n        const initialValue = [\n          { type: 'block', children: [{ text: 'te' }] },\n          { type: 'block', children: [{ text: 'st' }] },\n        ]\n        const mounts = jest.fn()\n\n        act(() => {\n          render(\n            <Slate\n              editor={editor}\n              initialValue={initialValue}\n              onChange={() => {}}\n            >\n              <Editable\n                renderElement={({ children }) => {\n                  useEffect(() => mounts(), [])\n\n                  return children\n                }}\n              />\n            </Slate>\n          )\n        })\n\n        // slate updates at next tick, so we need this to be async\n        await act(async () =>\n          Transforms.mergeNodes(editor, { at: { path: [0, 0], offset: 0 } })\n        )\n\n        // only 2 renders for the initial render\n        expect(mounts).toHaveBeenCalledTimes(2)\n      })\n    })\n    test('calls onSelectionChange when editor select change', async () => {\n      const editor = withReact(createEditor())\n      const initialValue = [\n        { type: 'block', children: [{ text: 'te' }] },\n        { type: 'block', children: [{ text: 'st' }] },\n      ]\n      const onChange = jest.fn()\n      const onValueChange = jest.fn()\n      const onSelectionChange = jest.fn()\n\n      act(() => {\n        render(\n          <Slate\n            editor={editor}\n            initialValue={initialValue}\n            onChange={onChange}\n            onValueChange={onValueChange}\n            onSelectionChange={onSelectionChange}\n          >\n            <Editable />\n          </Slate>\n        )\n      })\n\n      await act(async () =>\n        Transforms.select(editor, { path: [0, 0], offset: 2 })\n      )\n\n      expect(onSelectionChange).toHaveBeenCalled()\n      expect(onChange).toHaveBeenCalled()\n      expect(onValueChange).not.toHaveBeenCalled()\n    })\n\n    test('calls onValueChange when editor children change', async () => {\n      const editor = withReact(createEditor())\n      const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n      const onChange = jest.fn()\n      const onValueChange = jest.fn()\n      const onSelectionChange = jest.fn()\n\n      act(() => {\n        render(\n          <Slate\n            editor={editor}\n            initialValue={initialValue}\n            onChange={onChange}\n            onValueChange={onValueChange}\n            onSelectionChange={onSelectionChange}\n          >\n            <Editable />\n          </Slate>\n        )\n      })\n\n      await act(async () => Transforms.insertText(editor, 'Hello word!'))\n\n      expect(onValueChange).toHaveBeenCalled()\n      expect(onChange).toHaveBeenCalled()\n      expect(onSelectionChange).not.toHaveBeenCalled()\n    })\n\n    test('calls onValueChange when editor setNodes', async () => {\n      const editor = withReact(createEditor())\n      const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n      const onChange = jest.fn()\n      const onValueChange = jest.fn()\n      const onSelectionChange = jest.fn()\n\n      act(() => {\n        render(\n          <Slate\n            editor={editor}\n            initialValue={initialValue}\n            onChange={onChange}\n            onValueChange={onValueChange}\n            onSelectionChange={onSelectionChange}\n          >\n            <Editable />\n          </Slate>\n        )\n      })\n\n      await act(async () =>\n        Transforms.setNodes(\n          editor,\n          // @ts-ignore\n          { bold: true },\n          {\n            at: { path: [0, 0], offset: 2 },\n            match: Text.isText,\n            split: true,\n          }\n        )\n      )\n\n      expect(onChange).toHaveBeenCalled()\n      expect(onValueChange).toHaveBeenCalled()\n      expect(onSelectionChange).not.toHaveBeenCalled()\n    })\n\n    test('calls onValueChange when editor children change', async () => {\n      const editor = withReact(createEditor())\n      const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n      const onChange = jest.fn()\n      const onValueChange = jest.fn()\n      const onSelectionChange = jest.fn()\n\n      act(() => {\n        render(\n          <Slate\n            editor={editor}\n            initialValue={initialValue}\n            onChange={onChange}\n            onValueChange={onValueChange}\n            onSelectionChange={onSelectionChange}\n          >\n            <Editable />\n          </Slate>\n        )\n      })\n\n      await act(async () => Transforms.insertText(editor, 'Hello word!'))\n\n      expect(onValueChange).toHaveBeenCalled()\n      expect(onChange).toHaveBeenCalled()\n      expect(onSelectionChange).not.toHaveBeenCalled()\n    })\n\n    describe('translate=\"no\"', () => {\n      test('should have translate=\"no\" attribute', () => {\n        const editor = withReact(createEditor())\n        const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n\n        const { container } = render(\n          <Slate\n            editor={editor}\n            initialValue={initialValue}\n            onChange={() => {}}\n          >\n            <Editable />\n          </Slate>\n        )\n\n        const editableElement = container.querySelector('[data-slate-editor]')\n        expect(editableElement?.getAttribute('translate')).toBe('no')\n      })\n      test('should allow override of translate attribute', () => {\n        const editor = withReact(createEditor())\n        const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n\n        const { container } = render(\n          <Slate\n            editor={editor}\n            initialValue={initialValue}\n            onChange={() => {}}\n          >\n            <Editable translate=\"yes\" />\n          </Slate>\n        )\n\n        const editableElement = container.querySelector('[data-slate-editor]')\n        expect(editableElement?.getAttribute('translate')).toBe('yes')\n      })\n    })\n  })\n})\n"
  },
  {
    "path": "packages/slate-react/test/react-editor.spec.tsx",
    "content": "import React from 'react'\nimport { createEditor, Transforms } from 'slate'\nimport { act, render } from '@testing-library/react'\nimport { Slate, withReact, Editable, ReactEditor } from '../src'\n\ndescribe('slate-react', () => {\n  describe('ReactEditor', () => {\n    describe('.focus', () => {\n      test('should set focus in top of document with no editor selection', async () => {\n        const editor = withReact(createEditor())\n        const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n        const testSelection = {\n          anchor: { path: [0, 0], offset: 0 },\n          focus: { path: [0, 0], offset: 0 },\n        }\n\n        act(() => {\n          render(\n            <Slate editor={editor} initialValue={initialValue}>\n              <Editable />\n            </Slate>\n          )\n        })\n\n        expect(editor.selection).toBe(null)\n\n        await act(async () => {\n          ReactEditor.focus(editor)\n        })\n\n        expect(editor.selection).toEqual(testSelection)\n\n        await act(async () => {\n          const windowSelection = ReactEditor.getWindow(editor).getSelection()\n          expect(windowSelection?.focusNode?.textContent).toBe('test')\n          expect(windowSelection?.anchorNode?.textContent).toBe('test')\n          expect(windowSelection?.anchorOffset).toBe(\n            testSelection.anchor.offset\n          )\n          expect(windowSelection?.focusOffset).toBe(testSelection.focus.offset)\n        })\n      })\n\n      test('should be able to call .focus without getting toDOMNode errors', async () => {\n        const editor = withReact(createEditor())\n        const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n        const propagatedValue = [\n          { type: 'block', children: [{ text: 'foo' }] },\n          { type: 'block', children: [{ text: 'bar' }] },\n        ]\n\n        const testSelection = {\n          anchor: { path: [1, 0], offset: 0 },\n          focus: { path: [1, 0], offset: 3 },\n        }\n\n        act(() => {\n          render(\n            <Slate editor={editor} initialValue={initialValue}>\n              <Editable />\n            </Slate>\n          )\n        })\n\n        await act(async () => {\n          Transforms.removeNodes(editor, { at: [0] })\n          Transforms.insertNodes(editor, propagatedValue)\n          ReactEditor.focus(editor) // Note: calling focus in the middle of these transformations.\n          Transforms.select(editor, testSelection)\n        })\n\n        expect(editor.selection).toEqual(testSelection)\n\n        await act(async () => {\n          ReactEditor.focus(editor)\n        })\n\n        await act(async () => {\n          const windowSelection = ReactEditor.getWindow(editor).getSelection()\n          expect(windowSelection?.focusNode?.textContent).toBe('bar')\n          expect(windowSelection?.anchorNode?.textContent).toBe('bar')\n          expect(windowSelection?.anchorOffset).toBe(\n            testSelection.anchor.offset\n          )\n          expect(windowSelection?.focusOffset).toBe(testSelection.focus.offset)\n        })\n      })\n\n      test('should not trigger onValueChange when focus is called', async () => {\n        const editor = withReact(createEditor())\n        const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n        const onChange = jest.fn()\n        const onValueChange = jest.fn()\n        const onSlectionChange = jest.fn()\n\n        act(() => {\n          render(\n            <Slate\n              editor={editor}\n              initialValue={initialValue}\n              onValueChange={onValueChange}\n              onChange={onChange}\n              onSelectionChange={onSlectionChange}\n            >\n              <Editable />\n            </Slate>\n          )\n        })\n\n        expect(editor.selection).toBe(null)\n\n        await act(async () => {\n          ReactEditor.focus(editor)\n        })\n\n        expect(editor.selection).toEqual({\n          anchor: { path: [0, 0], offset: 0 },\n          focus: { path: [0, 0], offset: 0 },\n        })\n\n        expect(onChange).toHaveBeenCalled()\n        expect(onSlectionChange).toHaveBeenCalled()\n        expect(onValueChange).not.toHaveBeenCalled()\n      })\n    })\n  })\n})\n"
  },
  {
    "path": "packages/slate-react/test/tsconfig.json",
    "content": "{\n  \"extends\": \"../../../config/typescript/tsconfig.json\",\n  \"compilerOptions\": {\n    \"types\": [\"@testing-library/jest-dom\"]\n  },\n  \"references\": [{ \"path\": \"../\" }]\n}\n"
  },
  {
    "path": "packages/slate-react/test/use-selected.spec.tsx",
    "content": "import React from 'react'\nimport { createEditor, Transforms } from 'slate'\nimport { render, act } from '@testing-library/react'\nimport {\n  Slate,\n  withReact,\n  Editable,\n  useSelected,\n  RenderElementProps,\n  ReactEditor,\n} from '../src'\n\nlet editor: ReactEditor\nlet elementSelectedRenders: Record<string, boolean[] | undefined>\n\nconst clearRenders = () =>\n  Object.values(elementSelectedRenders).forEach(selectedRenders => {\n    if (selectedRenders) {\n      selectedRenders.length = 0\n    }\n  })\n\nconst initialValue = () => [\n  {\n    id: '0',\n    children: [\n      { id: '0.0', children: [{ text: '' }] },\n      { id: '0.1', children: [{ text: '' }] },\n      { id: '0.2', children: [{ text: '' }] },\n    ],\n  },\n  { id: '1', children: [{ text: '' }] },\n  { id: '2', children: [{ text: '' }] },\n]\n\ndescribe('useSelected', () => {\n  const withChunking = (chunking: boolean) => {\n    beforeEach(() => {\n      editor = withReact(createEditor())\n\n      if (chunking) {\n        editor.getChunkSize = () => 3\n      }\n\n      elementSelectedRenders = {}\n\n      const renderElement = ({\n        element,\n        attributes,\n        children,\n      }: RenderElementProps) => {\n        // eslint-disable-next-line react-hooks/rules-of-hooks\n        const selected = useSelected()\n        const { id } = element as any\n\n        let selectedRenders = elementSelectedRenders[id]\n\n        if (!selectedRenders) {\n          selectedRenders = []\n          elementSelectedRenders[id] = selectedRenders\n        }\n\n        selectedRenders.push(selected)\n\n        return <div {...attributes}>{children}</div>\n      }\n\n      render(\n        <Slate editor={editor} initialValue={initialValue()}>\n          <Editable renderElement={renderElement} />\n        </Slate>\n      )\n    })\n\n    it('returns false initially', () => {\n      expect(elementSelectedRenders).toEqual({\n        '0': [false],\n        '0.0': [false],\n        '0.1': [false],\n        '0.2': [false],\n        '1': [false],\n        '2': [false],\n      })\n    })\n\n    it('re-renders elements when it becomes true or false', async () => {\n      clearRenders()\n\n      await act(async () => {\n        Transforms.select(editor, [0, 0])\n      })\n\n      expect(elementSelectedRenders).toEqual({\n        '0': [true],\n        '0.0': [true],\n        '0.1': [],\n        '0.2': [],\n        '1': [],\n        '2': [],\n      })\n\n      clearRenders()\n\n      await act(async () => {\n        Transforms.select(editor, [2])\n      })\n\n      expect(elementSelectedRenders).toEqual({\n        '0': [false],\n        '0.0': [false],\n        '0.1': [],\n        '0.2': [],\n        '1': [],\n        '2': [true],\n      })\n    })\n\n    it('returns true for elements in the middle of the selection', async () => {\n      clearRenders()\n\n      await act(async () => {\n        Transforms.select(editor, {\n          anchor: { path: [2, 0], offset: 0 },\n          focus: { path: [0, 1, 0], offset: 0 },\n        })\n      })\n\n      expect(elementSelectedRenders).toEqual({\n        '0': [true],\n        '0.0': [],\n        '0.1': [true],\n        '0.2': [true],\n        '1': [true],\n        '2': [true],\n      })\n    })\n\n    it('remains true when the path changes', async () => {\n      clearRenders()\n\n      await act(async () => {\n        Transforms.select(editor, { path: [2, 0], offset: 0 })\n      })\n\n      expect(elementSelectedRenders).toEqual({\n        '0': [],\n        '0.0': [],\n        '0.1': [],\n        '0.2': [],\n        '1': [],\n        '2': [true],\n      })\n\n      clearRenders()\n\n      await act(async () => {\n        Transforms.insertNodes(\n          editor,\n          { id: 'new', children: [{ text: '' }] } as any,\n          { at: [2] }\n        )\n      })\n\n      expect(elementSelectedRenders).toEqual({\n        '0': [],\n        '0.0': [],\n        '0.1': [],\n        '0.2': [],\n        '1': [],\n        new: [false],\n        '2': [], // Remains true, no rerender\n      })\n    })\n  }\n\n  describe('without chunking', () => {\n    withChunking(false)\n  })\n\n  describe('with chunking', () => {\n    withChunking(true)\n  })\n})\n"
  },
  {
    "path": "packages/slate-react/test/use-slate-selector.spec.tsx",
    "content": "import React from 'react'\nimport { createEditor, Transforms } from 'slate'\nimport { act, renderHook } from '@testing-library/react'\nimport { Slate, withReact, Editable, useSlateSelector } from '../src'\nimport _ from 'lodash'\n\ndescribe('useSlateSelector', () => {\n  test('should use equality function when selector changes', async () => {\n    const editor = withReact(createEditor())\n    const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n\n    const callback1 = jest.fn(() => [])\n    const callback2 = jest.fn(() => [])\n\n    const { result, rerender } = renderHook(\n      ({ callback }) => useSlateSelector(callback, _.isEqual),\n      {\n        initialProps: {\n          callback: callback1,\n        },\n        wrapper: ({ children }) => (\n          <Slate editor={editor} initialValue={initialValue}>\n            <Editable />\n            {children}\n          </Slate>\n        ),\n      }\n    )\n\n    // One call in the render body, and one call in the effect\n    expect(callback1).toBeCalledTimes(2)\n\n    const firstResult = result.current\n\n    await act(async () => {\n      Transforms.insertText(editor, '!', { at: { path: [0, 0], offset: 4 } })\n    })\n\n    // The new call is from the effect\n    expect(callback1).toBeCalledTimes(3)\n\n    // Return values should have referential equality because of the custom equality function\n    expect(firstResult).toBe(result.current)\n\n    // Callback 2 has not been used yet\n    expect(callback2).toBeCalledTimes(0)\n\n    // Re-render with new function identity\n    rerender({ callback: callback2 })\n\n    // Callback 1 is not called\n    expect(callback1).toBeCalledTimes(3)\n\n    // Callback 2 is used instead\n    expect(callback2).toBeCalledTimes(1)\n\n    // Return values should have referential equality because of the custom equality function\n    expect(firstResult).toBe(result.current)\n  })\n})\n"
  },
  {
    "path": "packages/slate-react/test/use-slate.spec.tsx",
    "content": "/* eslint-disable import/no-deprecated */\nimport React from 'react'\nimport { Transforms, createEditor } from 'slate'\nimport { render, act } from '@testing-library/react'\nimport '@testing-library/jest-dom'\nimport { Slate, withReact, Editable, useSlateWithV } from '../src'\n\ndescribe('useSlateWithV', () => {\n  const ShowVersion = () => {\n    const { v } = useSlateWithV()\n    return <>V = {v}</>\n  }\n\n  it('tracks a global `v` counter for the editor', async () => {\n    const editor = withReact(createEditor())\n    const initialValue = [{ type: 'block', children: [{ text: 'test' }] }]\n\n    const { getByText, rerender } = render(\n      <Slate editor={editor} initialValue={initialValue}>\n        <Editable />\n        <p>\n          First: <ShowVersion key={1} />\n        </p>\n        <p>\n          Second: <ShowVersion key={2} />\n        </p>\n      </Slate>\n    )\n\n    expect(getByText('First: V = 0')).toBeInTheDocument()\n    expect(getByText('Second: V = 0')).toBeInTheDocument()\n\n    await act(async () => {\n      Transforms.insertText(editor, '!', { at: { path: [0, 0], offset: 4 } })\n    })\n\n    expect(getByText('First: V = 1')).toBeInTheDocument()\n    expect(getByText('Second: V = 1')).toBeInTheDocument()\n\n    rerender(\n      <Slate editor={editor} initialValue={initialValue}>\n        <Editable />\n        <p>\n          First: <ShowVersion key={1} />\n        </p>\n        <p>\n          Second: <ShowVersion key={2} />\n        </p>\n        <p>\n          Third: <ShowVersion key={3} />\n        </p>\n      </Slate>\n    )\n\n    expect(getByText('First: V = 1')).toBeInTheDocument()\n    expect(getByText('Second: V = 1')).toBeInTheDocument()\n    expect(getByText('Third: V = 1')).toBeInTheDocument()\n  })\n})\n"
  },
  {
    "path": "packages/slate-react/tsconfig.json",
    "content": "{\n  \"extends\": \"../../config/typescript/tsconfig.json\",\n  \"include\": [\"src/**/*\"],\n  \"compilerOptions\": {\n    \"rootDir\": \"./src\",\n    \"outDir\": \"./lib\"\n  },\n  \"references\": [\n    {\n      \"path\": \"../slate\"\n    },\n    {\n      \"path\": \"../slate-dom\"\n    }\n  ]\n}\n"
  },
  {
    "path": "playwright/docker/Dockerfile",
    "content": "# Use Node.js 22 base (Debian-based, similar to CI ubuntu-22.04)\n# Note: Can't use official Playwright image because Yarn PnP uses absolute paths\n# that break when the project is mounted at a different location in Docker\nFROM node:22-slim\n\n# Install curl (for health checks) and socat (for localhost port forwarding)\nRUN apt-get update && \\\n    apt-get install -y curl socat && \\\n    apt-get clean && \\\n    rm -rf /var/lib/apt/lists/*\n\nRUN corepack enable\n\nWORKDIR /app\n\n# Install globally to avoid Yarn PnP path resolution issues in container\nRUN npm install -g @playwright/test@1.52.0\n\nRUN playwright install --with-deps\n\nCOPY entrypoint.sh /entrypoint.sh\nRUN chmod +x /entrypoint.sh\n\nENTRYPOINT [\"/entrypoint.sh\"]\n"
  },
  {
    "path": "playwright/docker/docker-compose.yml",
    "content": "services:\n  test-runner:\n    build:\n      context: .\n      dockerfile: Dockerfile\n    volumes:\n      - ../..:/app:ro\n      - ../../test-results:/app/test-results:rw\n    environment:\n      - CI=true\n      - PLAYWRIGHT_BASE_URL=http://host.docker.internal:3000\n      - NODE_PATH=/usr/local/lib/node_modules\n    extra_hosts:\n      - \"host.docker.internal:host-gateway\"\n      - \"localhost:host-gateway\"\n    stdin_open: false\n    tty: false\n"
  },
  {
    "path": "playwright/docker/entrypoint.sh",
    "content": "#!/bin/bash\nset -e\n\necho \"==========================================\"\necho \"Docker Integration Tests\"\necho \"==========================================\"\n\n# Default to host.docker.internal if not overridden\nif [ -z \"$PLAYWRIGHT_BASE_URL\" ]; then\n  PLAYWRIGHT_BASE_URL=\"http://host.docker.internal:3000\"\nfi\n\necho \"Waiting for development server on host...\"\n\ntimeout=60\nelapsed=0\nwhile ! curl -s \"$PLAYWRIGHT_BASE_URL\" > /dev/null; do\n  if [ $elapsed -ge $timeout ]; then\n    echo \"❌ Server did not start within ${timeout}s\"\n    exit 1\n  fi\n  sleep 1\n  elapsed=$((elapsed + 1))\ndone\n\necho \"✓ Server is ready on host\"\n\n# Forward localhost:3000 to host for tests that use hardcoded localhost URLs\necho \"Setting up port forwarding from localhost:3000 to host...\"\nsocat TCP-LISTEN:3000,fork,reuseaddr TCP:host.docker.internal:3000 &\nSOCAT_PID=$!\n\nsleep 1\n\ncd /app/playwright/docker\nplaywright test --config=playwright.config.docker.ts \"$@\"\nTEST_EXIT_CODE=$?\n\nkill $SOCAT_PID 2>/dev/null || true\n\nexit $TEST_EXIT_CODE\n"
  },
  {
    "path": "playwright/docker/playwright.config.docker.ts",
    "content": "import type { PlaywrightTestConfig } from '@playwright/test'\nimport baseConfig from '../../playwright.config'\n\nconst config: PlaywrightTestConfig = {\n  ...baseConfig,\n  testDir: '..',\n  outputDir: '../../test-results/docker',\n}\n\nexport default config\n"
  },
  {
    "path": "playwright/docker/run-tests.sh",
    "content": "#!/bin/bash\n\n# Orchestrates running integration tests: starts dev server if needed, runs Docker tests, cleans up\n\nset -e\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"\nPROJECT_ROOT=\"$(cd \"$SCRIPT_DIR/../..\" && pwd)\"\n\ncd \"$PROJECT_ROOT\"\n\necho \"==========================================\"\necho \"Docker Integration Tests\"\necho \"==========================================\"\n\nif curl -s http://localhost:3000 > /dev/null 2>&1; then\n  echo \"✓ Development server already running on port 3000\"\n  SERVER_STARTED_HERE=false\nelse\n  echo \"Starting development server...\"\n  yarn serve > /dev/null 2>&1 &\n  SERVER_PID=$!\n  SERVER_STARTED_HERE=true\n\n  trap \"echo 'Stopping server...'; kill $SERVER_PID 2>/dev/null || true\" EXIT\n\n  echo \"Waiting for server to be ready...\"\n  timeout=60\n  elapsed=0\n  while ! curl -s http://localhost:3000 > /dev/null 2>&1; do\n    if [ $elapsed -ge $timeout ]; then\n      echo \"❌ Server did not start within ${timeout}s\"\n      exit 1\n    fi\n    sleep 1\n    elapsed=$((elapsed + 1))\n  done\n  echo \"✓ Server is ready\"\nfi\n\necho \"Running tests in Docker...\"\ncd \"$SCRIPT_DIR\"\n\ndocker compose run --rm test-runner \"$@\"\nTEST_EXIT_CODE=$?\n\n# Only stop server if we started it\nif [ \"$SERVER_STARTED_HERE\" = true ]; then\n  echo \"Stopping development server...\"\n  kill $SERVER_PID 2>/dev/null || true\nfi\n\nexit $TEST_EXIT_CODE\n"
  },
  {
    "path": "playwright/integration/examples/check-lists.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('Check-lists example', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/check-lists')\n  })\n\n  test('checks the bullet when clicked', async ({ page }) => {\n    const slateNodeElement = 'div[data-slate-node=\"element\"]'\n\n    expect(await page.locator(slateNodeElement).nth(3).textContent()).toBe(\n      'Criss-cross!'\n    )\n\n    await expect(\n      page.locator(slateNodeElement).nth(3).locator('span').nth(1)\n    ).toHaveCSS('text-decoration-line', 'line-through')\n\n    // Unchecking the checkboxes should un-cross the corresponding text.\n    await page\n      .locator(slateNodeElement)\n      .nth(3)\n      .locator('span')\n      .nth(0)\n      .locator('input')\n      .uncheck()\n    expect(await page.locator(slateNodeElement).nth(3).textContent()).toBe(\n      'Criss-cross!'\n    )\n    await expect(\n      page.locator(slateNodeElement).nth(3).locator('span').nth(1)\n    ).toHaveCSS('text-decoration-line', 'none')\n\n    await expect(page.locator('p[data-slate-node=\"element\"]')).toHaveCount(2)\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/code-highlighting.test.ts",
    "content": "import { test, expect, Page } from '@playwright/test'\n\ntest.setTimeout(60 * 1000)\n\ntest.describe('code highlighting', () => {\n  test.beforeEach(async ({ page }) => {\n    page.goto('http://localhost:3000/examples/code-highlighting')\n  })\n\n  for (const testCase of getTestCases()) {\n    const { language, content, highlights } = testCase\n\n    test(`code highlighting ${language}`, async ({ page }) => {\n      await setText(page, content, language)\n\n      const tokens = await page\n        .locator('[data-slate-editor] [data-slate-string]')\n        .all()\n\n      for (const [index, token] of tokens.entries()) {\n        const highlight = highlights[index]\n        const textContent = await token.textContent()\n\n        await expect(textContent).toEqual(highlight[0])\n        await expect(token).toHaveCSS('color', highlight[1])\n      }\n    })\n  }\n})\n\n// it also tests if select and code block button works the right way\nasync function setText(page: Page, text: string, language: string) {\n  await page.locator('[data-slate-editor]').selectText()\n  await page.keyboard.press('Backspace') // clear editor\n  await page.getByTestId('code-block-button').click() // convert first and the only one paragraph to code block\n  await page.getByTestId('language-select').selectOption({ value: language }) // select the language option\n\n  await page.keyboard.type(text) // type text\n}\n\nfunction getTestCases() {\n  const testCases: {\n    language: string\n    content: string\n    highlights: [string, string][]\n  }[] = [\n    {\n      language: 'css',\n      content: `body {\n  background-color: lightblue;\n}`,\n      highlights: [\n        ['body', 'rgb(102, 153, 0)'],\n        [' ', 'rgb(0, 0, 0)'],\n        ['{', 'rgb(153, 153, 153)'],\n        ['  ', 'rgb(0, 0, 0)'],\n        ['background-color', 'rgb(153, 0, 85)'],\n        [':', 'rgb(153, 153, 153)'],\n        [' lightblue', 'rgb(0, 0, 0)'],\n        [';', 'rgb(153, 153, 153)'],\n        ['}', 'rgb(153, 153, 153)'],\n      ],\n    },\n    {\n      language: 'html',\n      content: `<body>\n  <h1 class=\"title\">Testing html</h1>\n</body>`,\n      highlights: [\n        ['<', 'rgb(153, 0, 85)'],\n        ['body', 'rgb(153, 0, 85)'],\n        ['>', 'rgb(153, 0, 85)'],\n        ['  ', 'rgb(0, 0, 0)'],\n        ['<', 'rgb(153, 0, 85)'],\n        ['h1', 'rgb(153, 0, 85)'],\n        [' ', 'rgb(153, 0, 85)'],\n        ['class', 'rgb(102, 153, 0)'],\n        ['=', 'rgb(0, 119, 170)'],\n        ['\"', 'rgb(0, 119, 170)'],\n        ['title', 'rgb(0, 119, 170)'],\n        ['\"', 'rgb(0, 119, 170)'],\n        ['>', 'rgb(153, 0, 85)'],\n        ['Testing html', 'rgb(0, 0, 0)'],\n        ['</', 'rgb(153, 0, 85)'],\n        ['h1', 'rgb(153, 0, 85)'],\n        ['>', 'rgb(153, 0, 85)'],\n        ['</', 'rgb(153, 0, 85)'],\n        ['body', 'rgb(153, 0, 85)'],\n        ['>', 'rgb(153, 0, 85)'],\n      ],\n    },\n    {\n      language: 'jsx',\n      content: `<Title title=\"title\" renderIcon={() => <Icon />} />`,\n      highlights: [\n        ['<', 'rgb(153, 0, 85)'],\n        ['Title', 'rgb(221, 74, 104)'],\n        [' ', 'rgb(153, 0, 85)'],\n        ['title', 'rgb(102, 153, 0)'],\n        ['=', 'rgb(0, 119, 170)'],\n        ['\"', 'rgb(0, 119, 170)'],\n        ['title', 'rgb(0, 119, 170)'],\n        ['\"', 'rgb(0, 119, 170)'],\n        [' ', 'rgb(153, 0, 85)'],\n        ['renderIcon', 'rgb(102, 153, 0)'],\n        ['=', 'rgb(153, 0, 85)'],\n        ['{', 'rgb(153, 0, 85)'],\n        ['(', 'rgb(153, 0, 85)'],\n        [')', 'rgb(153, 0, 85)'],\n        [' ', 'rgb(153, 0, 85)'],\n        ['=>', 'rgb(154, 110, 58)'],\n        [' ', 'rgb(153, 0, 85)'],\n        ['<', 'rgb(153, 0, 85)'],\n        ['Icon', 'rgb(221, 74, 104)'],\n        [' ', 'rgb(153, 0, 85)'],\n        ['/>', 'rgb(153, 0, 85)'],\n        ['}', 'rgb(153, 0, 85)'],\n        [' ', 'rgb(153, 0, 85)'],\n        ['/>', 'rgb(153, 0, 85)'],\n      ],\n    },\n  ]\n\n  return testCases\n}\n"
  },
  {
    "path": "playwright/integration/examples/editable-voids.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('editable voids', () => {\n  const input = 'input[type=\"text\"]'\n  const elements = [\n    { tag: 'h4', count: 3 },\n    { tag: input, count: 1 },\n    { tag: 'input[type=\"radio\"]', count: 2 },\n  ]\n\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/editable-voids')\n  })\n\n  test('checks for the elements', async ({ page }) => {\n    for (const elem of elements) {\n      const { tag, count } = elem\n      await expect(page.locator(tag)).toHaveCount(count)\n    }\n  })\n\n  test('should double the elements', async ({ page }) => {\n    // click the `+` sign to duplicate the editable void\n    await page.locator('span.material-icons').nth(1).click()\n\n    for (const elem of elements) {\n      const { tag, count } = elem\n      await expect(page.locator(tag)).toHaveCount(count * 2)\n    }\n  })\n\n  test('make sure you can edit editable void', async ({ page }) => {\n    await page.locator(input).fill('Typing')\n    expect(await page.locator(input).inputValue()).toBe('Typing')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/embeds.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('embeds example', () => {\n  const slateEditor = 'div[data-slate-editor=\"true\"]'\n\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/embeds')\n  })\n\n  test('contains embeded', async ({ page }) => {\n    await expect(page.locator(slateEditor).locator('iframe')).toHaveCount(1)\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/forced-layout.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('forced layout example', () => {\n  const elements = [\n    { tag: '#__next h2', count: 1 },\n    { tag: '#__next p', count: 1 },\n  ]\n\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/forced-layout')\n  })\n\n  test('checks for the elements', async ({ page }) => {\n    for (const { tag, count } of elements) {\n      await expect(page.locator(tag)).toHaveCount(count)\n    }\n  })\n\n  test('checks if elements persist even after everything is deleted', async ({\n    page,\n  }) => {\n    // clear the textbox\n    await page.locator('div[role=\"textbox\"]').clear()\n    for (const { tag, count } of elements) {\n      await expect(page.locator(tag)).toHaveCount(count)\n    }\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/hovering-toolbar.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('hovering toolbar example', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/hovering-toolbar')\n  })\n\n  test('hovering toolbar appears', async ({ page }) => {\n    await page.pause()\n    await expect(page.getByTestId('menu')).toHaveCSS('opacity', '0')\n\n    await page.locator('span[data-slate-string=\"true\"]').nth(0).selectText()\n    await expect(page.getByTestId('menu')).toHaveCount(1)\n\n    await expect(page.getByTestId('menu')).toHaveCSS('opacity', '1')\n    await expect(\n      page.getByTestId('menu').locator('span.material-icons')\n    ).toHaveCount(3)\n  })\n\n  test('hovering toolbar disappears', async ({ page }) => {\n    await page.locator('span[data-slate-string=\"true\"]').nth(0).selectText()\n    await expect(page.getByTestId('menu')).toHaveCSS('opacity', '1')\n    await page.locator('span[data-slate-string=\"true\"]').nth(0).selectText()\n    await page\n      .locator('div')\n      .nth(0)\n      .click({ force: true, position: { x: 0, y: 0 } })\n    await expect(page.getByTestId('menu')).toHaveCSS('opacity', '0')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/huge-document.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('huge document example', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/huge-document')\n  })\n\n  test('uses chunking', async ({ page }) => {\n    await expect(page.getByLabel('Blocks')).toHaveValue('10000')\n    await expect(page.getByLabel('Chunk size')).toHaveValue('1000')\n    await expect(page.locator('[data-slate-chunk]')).toHaveCount(10)\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/iframe.test.ts",
    "content": "import { test, expect, Page } from '@playwright/test'\n\ntest.describe('iframe editor', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/iframe')\n  })\n\n  test('should be editable', async ({ page }) => {\n    await page\n      .frameLocator('iframe')\n      .locator('body')\n      .getByRole('textbox')\n      .focus()\n    await page.keyboard.press('Home')\n    await page.keyboard.type('Hello World')\n    expect(\n      await page\n        .frameLocator('iframe')\n        .locator('body')\n        .getByRole('textbox')\n        .textContent()\n    ).toContain('Hello World')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/images.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('images example', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/images')\n  })\n\n  test('contains image', async ({ page }) => {\n    await expect(page.getByRole('textbox').locator('img')).toHaveCount(2)\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/inlines.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('Inlines example', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/inlines')\n  })\n\n  test('contains link', async ({ page }) => {\n    expect(\n      await page.getByRole('textbox').locator('a').nth(0).innerText()\n    ).toContain('hyperlink')\n  })\n\n  // FIXME: unstable, has issues with selection.anchorNode\n  test.skip('arrow keys skip over read-only inline', async ({ page }) => {\n    const badge = page.locator('text=Approved >> xpath=../../..')\n\n    // Put cursor after the badge\n    await badge.evaluate(badgeElement => {\n      const range = document.createRange()\n      range.setStartAfter(badgeElement)\n      range.setEndAfter(badgeElement)\n      const selection = window.getSelection()!\n      selection.removeAllRanges()\n      selection.addRange(range)\n    })\n\n    const getSelectionContainerText = () =>\n      page.evaluate(() => {\n        const selection = window.getSelection()!\n        return selection.anchorNode!.textContent\n      })\n\n    expect(await getSelectionContainerText()).toBe('.')\n    await page.keyboard.press('ArrowLeft')\n    expect(await getSelectionContainerText()).toBe(\n      '! Here is a read-only inline: '\n    )\n    await page.keyboard.press('ArrowRight')\n    expect(await getSelectionContainerText()).toBe('.')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/markdown-preview.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('markdown preview', () => {\n  const slateEditor = 'div[data-slate-editor=\"true\"]'\n  const markdown = 'span[data-slate-string=\"true\"]'\n\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/markdown-preview')\n  })\n\n  test('checks for markdown', async ({ page }) => {\n    await expect(page.locator(slateEditor).locator(markdown)).toHaveCount(9)\n\n    await page.locator(slateEditor).click()\n    await page.keyboard.press('End')\n    await page.keyboard.press('Enter')\n    await page.keyboard.type('## Try it out!')\n    await page.keyboard.press('Enter')\n    await page.pause()\n    await expect(page.locator(slateEditor).locator(markdown)).toHaveCount(10)\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/markdown-shortcuts.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('On markdown-shortcuts example', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/markdown-shortcuts')\n  })\n\n  test('contains quote', async ({ page }) => {\n    expect(\n      await page.getByRole('textbox').locator('blockquote').textContent()\n    ).toContain('A wise quote.')\n  })\n\n  test('can add list items', async ({ page }, testInfo) => {\n    await expect(page.getByRole('textbox').locator('ul')).toHaveCount(0)\n\n    await page.getByRole('textbox').click()\n    await page\n      .getByRole('textbox')\n      .press(testInfo.project.name === 'webkit' ? 'Meta+ArrowLeft' : 'Home')\n    await page.getByRole('textbox').pressSequentially('* ')\n    await page.getByRole('textbox').pressSequentially('1st Item')\n    await page.keyboard.press('Enter')\n    await page.getByRole('textbox').pressSequentially('2nd Item')\n    await page.keyboard.press('Enter')\n    await page.getByRole('textbox').pressSequentially('3rd Item')\n    await page.keyboard.press('Enter')\n    await page.keyboard.press('Backspace')\n\n    await expect(page.locator('ul > li')).toHaveCount(3)\n\n    expect(await page.locator('ul > li').nth(0).innerText()).toContain(\n      '1st Item'\n    )\n    expect(await page.locator('ul > li').nth(1).innerText()).toContain(\n      '2nd Item'\n    )\n    expect(await page.locator('ul > li').nth(2).innerText()).toContain(\n      '3rd Item'\n    )\n  })\n\n  test('can add a h1 item', async ({ page }) => {\n    await expect(page.getByRole('textbox').locator('h1')).toHaveCount(0)\n\n    await page.getByRole('textbox').press('Enter')\n    await page.getByRole('textbox').press('ArrowLeft')\n    await page.getByRole('textbox').pressSequentially('# ')\n    await page.getByRole('textbox').pressSequentially('Heading')\n\n    await expect(page.locator('h1')).toHaveCount(1)\n\n    expect(\n      await page.getByRole('textbox').locator('h1').textContent()\n    ).toContain('Heading')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/mentions.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('mentions example', () => {\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/mentions')\n  )\n\n  test('renders mention element', async ({ page }) => {\n    await expect(page.locator('[data-cy=\"mention-R2-D2\"]')).toHaveCount(1)\n    await expect(page.locator('[data-cy=\"mention-Mace-Windu\"]')).toHaveCount(1)\n  })\n\n  test('shows list of mentions', async ({ page }) => {\n    await page.getByRole('textbox').click()\n    await page.getByRole('textbox').selectText()\n    await page.getByRole('textbox').press('Backspace')\n    await page.getByRole('textbox').pressSequentially(' @ma')\n    await expect(page.locator('[data-cy=\"mentions-portal\"]')).toHaveCount(1)\n  })\n\n  test('inserts on enter from list', async ({ page }) => {\n    await page.getByRole('textbox').click()\n    await page.getByRole('textbox').selectText()\n    await page.getByRole('textbox').press('Backspace')\n    await page.getByRole('textbox').pressSequentially(' @Ja')\n    await page.getByRole('textbox').press('Enter')\n    await expect(page.locator('[data-cy=\"mention-Jabba\"]')).toHaveCount(1)\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/paste-html.test.ts",
    "content": "import { test, expect, Page } from '@playwright/test'\n\ntest.describe('paste html example', () => {\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/paste-html')\n  )\n\n  const pasteHtml = async (page: Page, htmlContent: string) => {\n    await page.getByRole('textbox').click()\n    await page.getByRole('textbox').selectText()\n    await page.keyboard.press('Backspace')\n    await page\n      .getByRole('textbox')\n      .evaluate((el: HTMLElement, htmlContent: string) => {\n        const clipboardEvent = Object.assign(\n          new Event('paste', { bubbles: true, cancelable: true }),\n          {\n            clipboardData: {\n              getData: (type = 'text/html') => htmlContent,\n              types: ['text/html'],\n            },\n          }\n        )\n        el.dispatchEvent(clipboardEvent)\n      }, htmlContent)\n  }\n\n  test('pasted bold text uses <strong>', async ({ page }) => {\n    await pasteHtml(page, '<strong>Hello Bold</strong>')\n    expect(await page.locator('strong').textContent()).toContain('Hello')\n  })\n\n  test('pasted code uses <code>', async ({ page }) => {\n    await pasteHtml(page, '<code>console.log(\"hello from slate!\")</code>')\n    expect(await page.locator('code').textContent()).toContain('slate!')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/placeholder.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('placeholder example', () => {\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/custom-placeholder')\n  )\n\n  test('renders custom placeholder', async ({ page }) => {\n    const placeholderElement = page.locator('[data-slate-placeholder=true]')\n\n    expect(await placeholderElement.textContent()).toContain('Type something')\n    expect(await page.locator('pre').textContent()).toContain(\n      'renderPlaceholder'\n    )\n  })\n\n  test('renders editor tall enough to fit placeholder', async ({ page }) => {\n    const slateEditor = page.locator('[data-slate-editor=true]')\n    const placeholderElement = page.locator('[data-slate-placeholder=true]')\n\n    await expect(placeholderElement).toBeVisible()\n\n    const editorBoundingBox = await slateEditor.boundingBox()\n    const placeholderBoundingBox = await placeholderElement.boundingBox()\n\n    if (!editorBoundingBox)\n      throw new Error('Could not get bounding box for editor')\n    if (!placeholderBoundingBox)\n      throw new Error('Could not get bounding box for placeholder')\n\n    expect(editorBoundingBox.height).toBeGreaterThanOrEqual(\n      placeholderBoundingBox.height\n    )\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/plaintext.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('plaintext example', () => {\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/plaintext')\n  )\n\n  test('inserts text when typed', async ({ page }) => {\n    await page.getByRole('textbox').press('Home')\n    await page.getByRole('textbox').pressSequentially('Hello World')\n    expect(await page.getByRole('textbox').textContent()).toContain(\n      'Hello World'\n    )\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/read-only.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('readonly editor', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/read-only')\n  })\n\n  test('should not be editable', async ({ page }) => {\n    const slateEditor = '[data-slate-editor=\"true\"]'\n    expect(\n      await page.locator(slateEditor).getAttribute('contentEditable')\n    ).toBe('false')\n    expect(await page.locator(slateEditor).getAttribute('role')).toBe(null)\n    await page.locator(slateEditor).click()\n    await expect(page.locator(slateEditor)).not.toBeFocused()\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/richtext.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('On richtext example', () => {\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/richtext')\n  )\n\n  test('renders rich text', async ({ page }) => {\n    expect(await page.locator('strong').nth(0).textContent()).toContain('rich')\n    expect(await page.locator('blockquote').textContent()).toContain(\n      'wise quote'\n    )\n  })\n\n  test('inserts text when typed', async ({ page }) => {\n    await page.getByRole('textbox').press('Home')\n    await page.getByRole('textbox').pressSequentially('Hello World')\n\n    expect(await page.getByRole('textbox').textContent()).toContain(\n      'Hello World'\n    )\n  })\n\n  test('undo scrolls back to restored text after deletion and scroll away', async ({\n    page,\n  }) => {\n    const editor = page.getByRole('textbox')\n\n    await editor.press('ControlOrMeta+A')\n    await editor.pressSequentially('First paragraph.')\n    await editor.press('Enter')\n    await editor.pressSequentially('Second paragraph.')\n\n    // Insert enough content to be scrollable\n    for (let i = 0; i < 20; i++) {\n      await editor.press('Enter')\n      await editor.pressSequentially('Extra paragraph.')\n    }\n\n    const firstParagraph = editor.getByText('First paragraph.')\n    const secondParagraph = editor.getByText('Second paragraph.')\n\n    // Scroll back to top and select first paragraph\n    await firstParagraph.click({ clickCount: 3 })\n\n    await expect(firstParagraph).toBeVisible()\n    await expect(firstParagraph).toBeInViewport()\n    await expect(secondParagraph).toBeVisible()\n    await expect(secondParagraph).toBeInViewport()\n\n    await editor.press('Backspace')\n    await expect(firstParagraph).toBeHidden()\n\n    await editor.press(\n      process.platform === 'darwin' ? 'Meta+ArrowDown' : 'Control+End'\n    )\n    await expect(secondParagraph).not.toBeInViewport()\n\n    // Undo deletion\n    await editor.press('ControlOrMeta+Z')\n\n    await expect(firstParagraph).toBeVisible()\n    await expect(firstParagraph).toBeInViewport()\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/search-highlighting.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('search highlighting', () => {\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/search-highlighting')\n  )\n\n  test('highlights the searched text', async ({ page }) => {\n    const searchField = 'input[type=\"search\"]'\n    const highlightedText = 'search-highlighted'\n\n    await page.locator(searchField).fill('text')\n    await expect(page.locator(`[data-cy=\"${highlightedText}\"]`)).toHaveCount(2)\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/select.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('selection', () => {\n  const slateEditor = '[data-slate-node=\"element\"]'\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/richtext')\n  )\n  test('select the correct block when triple clicking', async ({ page }) => {\n    // triple clicking the second block (paragraph) shouldn't highlight the\n    // quote button\n    for (let i = 0; i < 3; i++) {\n      await page.locator(slateEditor).nth(1).click()\n    }\n    const quoteButton = page.getByTestId('block-button-block-quote')\n    await expect(quoteButton).toHaveCSS('color', 'rgb(204, 204, 204)')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/shadow-dom.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('shadow-dom example', () => {\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/shadow-dom')\n  )\n\n  test('renders slate editor inside nested shadow', async ({ page }) => {\n    const outerShadow = page.locator('[data-cy=\"outer-shadow-root\"]')\n    const innerShadow = outerShadow.locator('> div')\n\n    await expect(innerShadow.getByRole('textbox')).toHaveCount(1)\n  })\n\n  test('renders slate editor inside nested shadow and edits content', async ({\n    page,\n  }) => {\n    const outerShadow = page.locator('[data-cy=\"outer-shadow-root\"]')\n    const innerShadow = outerShadow.locator('> div')\n    const textbox = innerShadow.getByRole('textbox')\n\n    // Ensure the textbox is present\n    await expect(textbox).toHaveCount(1)\n\n    // Clear any existing text and type new text into the textbox\n    await textbox.click()\n    await page.keyboard.press('ControlOrMeta+A')\n\n    await page.keyboard.press('Backspace')\n    await page.keyboard.type('Hello, Playwright!')\n\n    // Assert that the textbox contains the correct text\n    await expect(textbox).toHaveText('Hello, Playwright!')\n  })\n\n  test('user can type add a new line in editor inside shadow DOM', async ({\n    page,\n  }) => {\n    const consoleErrors: string[] = []\n    page.on('console', msg => {\n      if (msg.type() === 'error') {\n        consoleErrors.push(msg.text())\n      }\n    })\n\n    const pageErrors: Error[] = []\n    page.on('pageerror', error => {\n      pageErrors.push(error)\n    })\n\n    const outerShadow = page.locator('[data-cy=\"outer-shadow-root\"]')\n    const innerShadow = outerShadow.locator('> div')\n    const textbox = innerShadow.getByRole('textbox')\n\n    await textbox.click()\n    await page.keyboard.press('Enter')\n    await page.keyboard.type('New line text')\n\n    expect(consoleErrors, 'Console errors occurred').toEqual([])\n    expect(pageErrors, 'Page errors occurred').toEqual([])\n\n    await expect(textbox).toContainText('New line text')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/styling.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('styling example', () => {\n  test.beforeEach(\n    async ({ page }) =>\n      await page.goto('http://localhost:3000/examples/styling')\n  )\n\n  test('applies styles to editor from style prop', async ({ page }) => {\n    page.waitForLoadState('domcontentloaded')\n\n    const editor = page.locator('[data-slate-editor=true]').nth(0)\n    const styles = await editor.evaluate(el => {\n      const {\n        backgroundColor,\n        minHeight,\n        outlineWidth,\n        outlineStyle,\n        outlineColor,\n        position,\n        whiteSpace,\n        wordWrap,\n      } = window.getComputedStyle(el)\n      return {\n        backgroundColor,\n        minHeight,\n        outlineWidth,\n        outlineStyle,\n        outlineColor,\n        position,\n        whiteSpace,\n        wordWrap,\n      }\n    })\n\n    // Provided styles\n    expect(styles.backgroundColor).toBe('rgb(255, 230, 156)')\n    expect(styles.minHeight).toBe('200px')\n    expect(styles.outlineWidth).toBe('2px')\n    expect(styles.outlineStyle).toBe('solid')\n    expect(styles.outlineColor).toBe('rgb(0, 128, 0)')\n\n    // Default styles\n    expect(styles.position).toBe('relative')\n    expect(styles.whiteSpace).toBe('pre-wrap')\n    expect(styles.wordWrap).toBe('break-word')\n  })\n\n  test('applies styles to editor from className prop', async ({ page }) => {\n    page.waitForLoadState('domcontentloaded')\n\n    const editor = page.locator('[data-slate-editor=true]').nth(1)\n    const styles = await editor.evaluate(el => {\n      const {\n        backgroundColor,\n        paddingTop,\n        paddingRight,\n        paddingBottom,\n        paddingLeft,\n        fontSize,\n        minHeight,\n        outlineWidth,\n        outlineStyle,\n        outlineColor,\n        borderTopLeftRadius,\n        borderTopRightRadius,\n        borderBottomRightRadius,\n        borderBottomLeftRadius,\n        outlineOffset,\n        position,\n        whiteSpace,\n        wordWrap,\n      } = window.getComputedStyle(el)\n      return {\n        backgroundColor,\n        paddingTop,\n        paddingRight,\n        paddingBottom,\n        paddingLeft,\n        fontSize,\n        minHeight,\n        outlineWidth,\n        outlineStyle,\n        outlineColor,\n        borderTopLeftRadius,\n        borderTopRightRadius,\n        borderBottomRightRadius,\n        borderBottomLeftRadius,\n        outlineOffset,\n        position,\n        whiteSpace,\n        wordWrap,\n      }\n    })\n\n    expect(styles.backgroundColor).toBe('rgb(218, 225, 255)')\n    expect(styles.paddingTop).toBe('40px')\n    expect(styles.paddingRight).toBe('40px')\n    expect(styles.paddingBottom).toBe('40px')\n    expect(styles.paddingLeft).toBe('40px')\n    expect(styles.fontSize).toBe('20px')\n    expect(styles.minHeight).toBe('150px')\n    expect(styles.borderBottomLeftRadius).toBe('20px')\n    expect(styles.borderBottomRightRadius).toBe('20px')\n    expect(styles.borderTopLeftRadius).toBe('20px')\n    expect(styles.borderTopRightRadius).toBe('20px')\n    expect(styles.outlineOffset).toBe('-20px')\n    expect(styles.outlineWidth).toBe('3px')\n    expect(styles.outlineStyle).toBe('dashed')\n    expect(styles.outlineColor).toBe('rgb(0, 94, 128)')\n    expect(styles.whiteSpace).toBe('pre-wrap')\n  })\n})\n"
  },
  {
    "path": "playwright/integration/examples/tables.test.ts",
    "content": "import { test, expect } from '@playwright/test'\n\ntest.describe('table example', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('http://localhost:3000/examples/tables')\n  })\n\n  test('table tag rendered', async ({ page }) => {\n    await expect(page.getByRole('textbox').locator('table')).toHaveCount(1)\n  })\n})\n"
  },
  {
    "path": "playwright/tsconfig.json",
    "content": "{\n  \"include\": [\"**/*.ts\"],\n  \"compilerOptions\": {\n    /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n    /* Basic Options */\n    \"downlevelIteration\": true,\n    \"target\": \"es5\" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,\n    \"module\": \"esnext\" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,\n    \"lib\": [\n      \"DOM\",\n      \"ES2020\"\n    ] /* Specify library files to be included in the compilation. */,\n    \"allowJs\": true /* Allow javascript files to be compiled. */,\n    \"noEmit\": true,\n    \"sourceMap\": true /* Generates corresponding '.map' file. */,\n    \"strict\": true /* Enable all strict type-checking options. */,\n    \"moduleResolution\": \"node\" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */,\n    \"allowSyntheticDefaultImports\": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */,\n    \"esModuleInterop\": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,\n    \"resolveJsonModule\": true,\n    \"skipLibCheck\": true /* Skip type checking of declaration files. */,\n    \"isolatedModules\": false,\n    \"forceConsistentCasingInFileNames\": true /* Disallow inconsistently-cased references to the same file. */\n  }\n}\n"
  },
  {
    "path": "playwright.config.ts",
    "content": "import { PlaywrightTestConfig } from '@playwright/test'\nimport { devices } from '@playwright/test'\nimport * as os from 'os'\n\nconst projects = [\n  {\n    name: 'chromium',\n    use: {\n      ...devices['Desktop Chrome'],\n      permissions: ['clipboard-read', 'clipboard-write'],\n      launchOptions: {\n        // headless: false,\n        /**\n         * Enable scrollbars in headless mode.\n         */\n        ignoreDefaultArgs: ['--hide-scrollbars'],\n      },\n    },\n  },\n  {\n    name: 'firefox',\n    use: {\n      ...devices['Desktop Firefox'],\n    },\n  },\n  {\n    name: 'mobile',\n    use: {\n      ...devices['Pixel 5'],\n    },\n  },\n]\n\nif (os.type() === 'Darwin') {\n  projects.push({\n    name: 'webkit',\n    use: {\n      ...devices['Desktop Safari'],\n    },\n  })\n}\n\nconst retries = process.env.PLAYWRIGHT_RETRIES\n  ? +process.env.PLAYWRIGHT_RETRIES\n  : process.env.CI\n  ? 5\n  : 2\n\n/**\n * See https://playwright.dev/docs/test-configuration.\n */\nconst config: PlaywrightTestConfig = {\n  testDir: './playwright',\n  /* Maximum time one test can run for. */\n  timeout: 20 * 1000,\n  expect: {\n    /**\n     * Maximum time expect() should wait for the condition to be met.\n     * For example in `await expect(locator).toHaveText();`\n     */\n    timeout: 8000,\n  },\n  /* Run tests in files in parallel */\n  fullyParallel: !process.env.CI,\n  /* Fail the build on CI if you accidentally left test.only in the source code. */\n  forbidOnly: !!process.env.CI,\n  /* Retry on CI only */\n  // allow PLAYWRIGHT_RETRIES to override for local dev\n  retries,\n  /* Opt out of parallel tests. */\n  // workers: 1,\n  /* Reporter to use. See https://playwright.dev/docs/test-reporters */\n  reporter: process.env.CI ? 'github' : 'list',\n  /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */\n  use: {\n    viewport: {\n      width: 1280,\n      height: 720,\n    },\n    /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */\n    actionTimeout: 0,\n    /* Base URL to use in actions like `await page.goto('/')`. */\n    // Can be overridden with PLAYWRIGHT_BASE_URL env var (used by Docker tests)\n    baseURL: process.env.PLAYWRIGHT_BASE_URL || 'http://localhost:3000',\n\n    /* Collect trace if the first attempt fails. See https://playwright.dev/docs/trace-viewer */\n    trace: 'retain-on-first-failure',\n\n    /* Name of attribute for selecting elements by page.getByTestId */\n    testIdAttribute: 'data-test-id',\n  },\n\n  /* Configure projects for major browsers */\n  projects,\n\n  /* Folder for test artifacts such as screenshots, videos, traces, etc. */\n  // outputDir: 'test-results/',\n}\n\nexport default config\n"
  },
  {
    "path": "site/components/ComponentLoader.tsx",
    "content": "import React from 'react'\n\nexport function ComponentLoader() {\n  return (\n    <div className=\"loading-container loading-spinner\">\n      <div className=\"spinner\" />\n      <p className=\"loading-text\">Loading example...</p>\n    </div>\n  )\n}\n\nexport function HugeDocumentLoader() {\n  return (\n    <div className=\"loading-container huge-loader-container\">\n      <div className=\"spinner\" />\n      <h2 className=\"loading-text huge-title\">Loading Huge Document</h2>\n      <p className=\"loading-text huge-subtitle\">\n        Preparing thousands of nodes...\n      </p>\n    </div>\n  )\n}\n"
  },
  {
    "path": "site/components/ExampleLayout.tsx",
    "content": "import React, { useState, ErrorInfo } from 'react'\nimport Link from 'next/link'\nimport { Icon } from '../examples/ts/components/index'\nimport { NON_HIDDEN_EXAMPLES } from '../constants/examples'\n\nconst Header = (props: React.HTMLAttributes<HTMLDivElement>) => (\n  <div {...props} className=\"example-header\" />\n)\n\nconst Title = (props: React.HTMLAttributes<HTMLSpanElement>) => (\n  <span {...props} className=\"example-title\" />\n)\n\nconst LinkList = (props: React.HTMLAttributes<HTMLDivElement>) => (\n  <div {...props} className=\"example-link-list\" />\n)\n\nconst A = (props: React.AnchorHTMLAttributes<HTMLAnchorElement>) => (\n  <a {...props} className=\"example-link\" />\n)\n\nconst Pill = (props: React.HTMLAttributes<HTMLSpanElement>) => (\n  <span {...props} className=\"example-pill\" />\n)\n\nconst TabList = ({\n  isVisible,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement> & { isVisible?: boolean }) => (\n  <div\n    role=\"menu\"\n    aria-label=\"Examples navigation\"\n    aria-hidden={!isVisible}\n    {...props}\n    className={`example-tab-list ${isVisible ? 'visible' : 'hidden'}`}\n  />\n)\n\nconst TabListUnderlay = ({\n  isVisible,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement> & { isVisible?: boolean }) => (\n  <div\n    {...props}\n    className={`example-tab-list-underlay ${isVisible ? 'visible' : 'hidden'}`}\n  />\n)\n\nconst TabButton = (props: React.HTMLAttributes<HTMLSpanElement>) => (\n  <button\n    {...props}\n    aria-label=\"Toggle examples menu\"\n    aria-haspopup=\"menu\"\n    className=\"example-tab-button\"\n  />\n)\n\nconst Tab = React.forwardRef(\n  (\n    {\n      active,\n      href,\n      ...props\n    }: React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n      active: boolean\n    },\n    ref: React.Ref<HTMLAnchorElement>\n  ) => (\n    <a\n      ref={ref}\n      href={href}\n      role=\"menuitem\"\n      aria-current={active ? 'page' : undefined}\n      {...props}\n      className={`example-tab ${active ? 'active' : ''}`}\n    />\n  )\n)\n\nconst ExampleHeader = (props: React.HTMLAttributes<HTMLDivElement>) => (\n  <div {...props} className=\"example-page-header\" />\n)\n\nconst ExampleTitle = (props: React.HTMLAttributes<HTMLSpanElement>) => (\n  <span {...props} className=\"example-page-title\" />\n)\n\nconst ExampleContent = (props: React.HTMLAttributes<HTMLDivElement>) => (\n  <div {...props} className=\"example-content\" />\n)\n\nexport const Warning = (props: React.HTMLAttributes<HTMLDivElement>) => (\n  <div {...props} className=\"example-warning\" />\n)\n\ninterface ExampleLayoutProps {\n  children: React.ReactNode\n  exampleName?: string\n  examplePath?: string\n  error?: Error | null\n  stackTrace?: ErrorInfo | null\n}\n\nexport function ExampleLayout({\n  children,\n  exampleName,\n  examplePath,\n  error,\n  stackTrace,\n}: ExampleLayoutProps) {\n  const [showTabs, setShowTabs] = useState<boolean>(false)\n\n  return (\n    <div>\n      <Header>\n        <Title>Slate Examples</Title>\n        <LinkList>\n          <A href=\"https://github.com/ianstormtaylor/slate\">GitHub</A>\n          <A href=\"https://docs.slatejs.org/\">Docs</A>\n        </LinkList>\n      </Header>\n\n      {exampleName && examplePath && (\n        <ExampleHeader>\n          <TabButton\n            onClick={e => {\n              e.stopPropagation()\n              setShowTabs(!showTabs)\n            }}\n            onKeyDown={(e: React.KeyboardEvent) => {\n              if (e.key === 'Escape') {\n                setShowTabs(false)\n              }\n            }}\n            aria-expanded={showTabs}\n          >\n            <Icon>menu</Icon>\n          </TabButton>\n          <ExampleTitle>\n            {exampleName}\n            <A\n              href={`https://github.com/ianstormtaylor/slate/blob/main/site/examples/js/${examplePath}.jsx`}\n            >\n              <Pill>JS Code</Pill>\n            </A>\n            <A\n              href={`https://github.com/ianstormtaylor/slate/blob/main/site/examples/ts/${examplePath}.tsx`}\n            >\n              <Pill>TS Code</Pill>\n            </A>\n          </ExampleTitle>\n        </ExampleHeader>\n      )}\n\n      <TabList isVisible={showTabs}>\n        {NON_HIDDEN_EXAMPLES.map(([n, p]) => (\n          <Link\n            key={p as string}\n            href=\"/examples/[example]\"\n            as={`/examples/${p}`}\n            legacyBehavior\n            passHref\n          >\n            <Tab\n              onClick={() => setShowTabs(false)}\n              active={p === examplePath}\n              onKeyDown={(e: React.KeyboardEvent) => {\n                if (e.key === 'Escape') {\n                  setShowTabs(false)\n                }\n              }}\n            >\n              {n}\n            </Tab>\n          </Link>\n        ))}\n      </TabList>\n\n      {error && stackTrace ? (\n        <Warning>\n          <p>An error was thrown by one of the example's React components!</p>\n          <pre>\n            <code>\n              {error.stack}\n              {'\\n'}\n              {stackTrace.componentStack}\n            </code>\n          </pre>\n        </Warning>\n      ) : (\n        <ExampleContent>{children}</ExampleContent>\n      )}\n\n      <TabListUnderlay\n        isVisible={showTabs}\n        onClick={() => setShowTabs(false)}\n        onKeyDown={(e: React.KeyboardEvent) => {\n          if (e.key === 'Escape') {\n            setShowTabs(false)\n          }\n        }}\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "site/constants/examples.ts",
    "content": "export const EXAMPLE_NAMES_AND_PATHS = [\n  ['Android Tests', 'android-tests'],\n  ['Checklists', 'check-lists'],\n  ['Code Highlighting', 'code-highlighting'],\n  ['Custom Placeholder', 'custom-placeholder'],\n  ['Editable Voids', 'editable-voids'],\n  ['Embeds', 'embeds'],\n  ['Forced Layout', 'forced-layout'],\n  ['Hovering Toolbar', 'hovering-toolbar'],\n  ['Huge Document', 'huge-document'],\n  ['Images', 'images'],\n  ['Inlines', 'inlines'],\n  ['Markdown Preview', 'markdown-preview'],\n  ['Markdown Shortcuts', 'markdown-shortcuts'],\n  ['Mentions', 'mentions'],\n  ['Paste HTML', 'paste-html'],\n  ['Plain Text', 'plaintext'],\n  ['Read-only', 'read-only'],\n  ['Rendering in iframes', 'iframe'],\n  ['Rich Text', 'richtext'],\n  ['Search Highlighting', 'search-highlighting'],\n  ['Shadow DOM', 'shadow-dom'],\n  ['Styling', 'styling'],\n  ['Tables', 'tables'],\n] as const\n\nexport const HIDDEN_EXAMPLES = ['android-tests'] as const\n\nexport const NON_HIDDEN_EXAMPLES = EXAMPLE_NAMES_AND_PATHS.filter(\n  ([, path]) => !HIDDEN_EXAMPLES.includes(path as any)\n)\n"
  },
  {
    "path": "site/examples/Readme.md",
    "content": "# Examples\n\nThis directory contains a set of examples that give you an idea for how you might use Slate to implement your own editor. Take a look around!\n\n- [**Plain text**](./ts/plaintext.tsx) — showing the most basic case: a glorified `<textarea>`.\n- [**Rich text**](./ts/richtext.tsx) — showing the features you'd expect from a basic editor.\n- [**Forced Layout**](./ts/forced-layout.tsx) - showing how to use constraints to enforce a document structure.\n- [**Markdown Shortcuts**](./ts/markdown-shortcuts.tsx) — showing how to add key handlers for Markdown-like shortcuts.\n- [**Inlines**](./ts/inlines.tsx) — showing how wrap text in inline nodes with associated data.\n- [**Images**](./ts/images.tsx) — showing how to use void (text-less) nodes to add images.\n- [**Hovering toolbar**](./ts/hovering-toolbar.tsx) — showing how a hovering toolbar can be implemented.\n- [**Tables**](./ts/tables.tsx) — showing how to nest blocks to render more advanced components.\n- [**Paste HTML**](./ts/paste-html.tsx) — showing how to use an HTML serializer to handle pasted HTML.\n- [**Code Highlighting**](./ts/code-highlighting.tsx) — showing how to use decorations to dynamically format text.\n- ...and more!\n\nIf you have an idea for an example that shows a common use case, pull request it!\n\n## Running the Examples\n\nTo get the examples running on your machine, you need to have the Slate repository cloned to your computer. After that, you need to `cd` into the directory where you cloned it, and install the dependencies with `yarn` and build the monorepo:\n\n```sh\nyarn install\nyarn build\n```\n\nThen start the watcher and examples server:\n\n```sh\nyarn start\n```\n\nNow you can open up `http://localhost:3000` in your browser and you'll see the examples site. Any changes you make to the source code will be immediately reflected when you refresh the page. You can open the examples URL quickly with:\n\n```sh\nyarn open\n```\n"
  },
  {
    "path": "site/examples/js/android-tests.jsx",
    "content": "import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, withReact } from 'slate-react'\nimport { css } from '@emotion/css'\n\nconst TEST_CASES = [\n  {\n    id: 'split-join',\n    name: 'Split/Join',\n    instructions:\n      'Hit enter twice then backspace twice in the following places:\\n- Before \"before\"\\n- Between the two \"d\"s in \"middle\"\\n- After \"after\"',\n    value: [\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'One ' },\n          { text: 'before', bold: true },\n          { text: ' two ' },\n          { text: 'middle', bold: true },\n          { text: ' three ' },\n          { text: 'after', bold: true },\n          { text: ' four' },\n        ],\n      },\n    ],\n  },\n  {\n    id: 'insert',\n    name: 'Insertion',\n    instructions:\n      'Enter text below each line of instruction, including mis-spelling \"wasnt\"',\n    value: [\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Type by tapping keys: ', bold: true },\n          { text: 'It wasnt me. No.' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Type using glide typing: ', bold: true },\n          { text: 'Yes Sam, I am.' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Type using voice input: ', bold: true },\n          { text: 'The quick brown fox jumps over the lazy dog' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: 'Write any two words using an IME', bold: true }],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n    ],\n  },\n  {\n    id: 'special',\n    name: 'Special',\n    instructions: 'Follow the instructions on each line',\n    value: [\n      {\n        type: 'paragraph',\n        children: [\n          {\n            text: 'Type \"it is\", move cursor to \"i|t\" and hit enter.',\n            bold: true,\n          },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          {\n            text: 'Move cursor to \"mid|dle\" and press space, backspace, space, backspace.',\n            bold: true,\n          },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: 'The middle word.' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          {\n            text: 'Place cursor in line below. Wait for caps on keyboard to show up. If not try again. Type \"It me. No.\" and check it doesn\\'t mangle on the last period.',\n            bold: true,\n          },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n    ],\n  },\n  {\n    id: 'empty',\n    name: 'Empty',\n    instructions:\n      'Type \"hello world\", press enter, \"hi\", press enter, \"bye\", and then backspace over everything',\n    value: [\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n    ],\n  },\n  {\n    id: 'remove',\n    name: 'Remove',\n    instructions:\n      'Select from ANCHOR to FOCUS and press backspace. Move cursor to end. Backspace over all remaining content.',\n    value: [\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Go and ' },\n          { text: 'select', bold: true },\n          { text: ' from this ANCHOR and then' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: 'go and select' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'to this FOCUS then press ' },\n          { text: 'backspace.', bold: true },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'After you have done that move selection to very end.' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Then try ' },\n          { text: 'backspacing', bold: true },\n          { text: ' over all remaining text.' },\n        ],\n      },\n    ],\n  },\n  {\n    id: 'autocorrect',\n    name: 'Autocorrect',\n    instructions:\n      'Type \"Cant\", then press space to autocorrect it. Make sure the cursor position is correct (after the autocorrected word)',\n    value: [\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n    ],\n  },\n]\nconst AndroidTestsExample = () => {\n  const [testId, setTestId] = useState(\n    () => window.location.hash.replace('#', '') || TEST_CASES[0].id\n  )\n  useEffect(() => {\n    window.history.replaceState({}, '', `#${testId}`)\n  }, [testId])\n  const testCase = TEST_CASES.find(({ id }) => id === testId)\n  if (!testCase) {\n    throw new Error(`Could not find test case '${testId}'`)\n  }\n  return (\n    <>\n      <label>\n        Test case:{' '}\n        <select value={testId} onChange={e => setTestId(e.target.value)}>\n          {TEST_CASES.map(({ name, id }) => (\n            <option key={id} value={id}>\n              {name}\n            </option>\n          ))}\n        </select>\n      </label>\n\n      <p\n        className={css`\n          font-weight: 600;\n          margin: 0.5rem 0;\n          white-space: pre-line;\n        `}\n      >\n        {testCase.instructions}\n      </p>\n\n      <TestCase key={testId} {...testCase} />\n    </>\n  )\n}\nconst TestCase = ({ value }) => {\n  const renderLeaf = useCallback(props => <Leaf {...props} />, [])\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={value}>\n      <Editable\n        renderLeaf={renderLeaf}\n        placeholder=\"Enter some text…\"\n        spellCheck\n      />\n    </Slate>\n  )\n}\nconst Leaf = ({ attributes, children, leaf }) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n  return <span {...attributes}>{children}</span>\n}\nexport default AndroidTestsExample\n"
  },
  {
    "path": "site/examples/js/check-lists.jsx",
    "content": "import { css } from '@emotion/css'\nimport React, { useCallback, useMemo } from 'react'\nimport { Editor, Node, Point, Range, Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  Slate,\n  useReadOnly,\n  useSlateStatic,\n  withReact,\n} from 'slate-react'\n\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'With Slate you can build complex block types that have their own embedded content and behaviors, like rendering checkboxes inside check list items!',\n      },\n    ],\n  },\n  {\n    type: 'check-list-item',\n    checked: true,\n    children: [{ text: 'Slide to the left.' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: true,\n    children: [{ text: 'Slide to the right.' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: false,\n    children: [{ text: 'Criss-cross.' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: true,\n    children: [{ text: 'Criss-cross!' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: false,\n    children: [{ text: 'Cha cha real smooth…' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: false,\n    children: [{ text: \"Let's go to work!\" }],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: 'Try it out for yourself!' }],\n  },\n]\nconst CheckListsExample = () => {\n  const renderElement = useCallback(props => <Element {...props} />, [])\n  const editor = useMemo(\n    () => withChecklists(withHistory(withReact(createEditor()))),\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        placeholder=\"Get to work…\"\n        spellCheck\n        autoFocus\n      />\n    </Slate>\n  )\n}\nconst withChecklists = editor => {\n  const { deleteBackward } = editor\n  editor.deleteBackward = (...args) => {\n    const { selection } = editor\n    if (selection && Range.isCollapsed(selection)) {\n      const [match] = Editor.nodes(editor, {\n        match: n => Node.isElement(n) && n.type === 'check-list-item',\n      })\n      if (match) {\n        const [, path] = match\n        const start = Editor.start(editor, path)\n        if (Point.equals(selection.anchor, start)) {\n          const newProperties = {\n            type: 'paragraph',\n          }\n          Transforms.setNodes(editor, newProperties, {\n            match: n => Node.isElement(n) && n.type === 'check-list-item',\n          })\n          return\n        }\n      }\n    }\n    deleteBackward(...args)\n  }\n  return editor\n}\nconst Element = props => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'check-list-item':\n      return <CheckListItemElement {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst CheckListItemElement = ({ attributes, children, element }) => {\n  const { checked } = element\n  const editor = useSlateStatic()\n  const readOnly = useReadOnly()\n  return (\n    <div\n      {...attributes}\n      className={css`\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n\n        & + & {\n          margin-top: 0;\n        }\n      `}\n    >\n      <span\n        contentEditable={false}\n        className={css`\n          margin-right: 0.75em;\n        `}\n      >\n        <input\n          type=\"checkbox\"\n          checked={checked}\n          onChange={event => {\n            const path = ReactEditor.findPath(editor, element)\n            const newProperties = {\n              checked: event.target.checked,\n            }\n            Transforms.setNodes(editor, newProperties, { at: path })\n          }}\n        />\n      </span>\n      <span\n        contentEditable={!readOnly}\n        suppressContentEditableWarning\n        className={css`\n          flex: 1;\n          opacity: ${checked ? 0.666 : 1};\n          text-decoration: ${!checked ? 'none' : 'line-through'};\n\n          &:focus {\n            outline: none;\n          }\n        `}\n      >\n        {children}\n      </span>\n    </div>\n  )\n}\nexport default CheckListsExample\n"
  },
  {
    "path": "site/examples/js/code-highlighting.jsx",
    "content": "import { css } from '@emotion/css'\nimport isHotkey from 'is-hotkey'\nimport Prism from 'prismjs'\nimport 'prismjs/components/prism-java'\nimport 'prismjs/components/prism-javascript'\nimport 'prismjs/components/prism-jsx'\nimport 'prismjs/components/prism-markdown'\nimport 'prismjs/components/prism-php'\nimport 'prismjs/components/prism-python'\nimport 'prismjs/components/prism-sql'\nimport 'prismjs/components/prism-tsx'\nimport 'prismjs/components/prism-typescript'\nimport React, { useCallback, useState } from 'react'\nimport { Editor, Node, Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  Slate,\n  useSlateStatic,\n  withReact,\n} from 'slate-react'\nimport { Button, Icon, Toolbar } from './components'\nimport { normalizeTokens } from './utils/normalize-tokens'\n\nconst ParagraphType = 'paragraph'\nconst CodeBlockType = 'code-block'\nconst CodeLineType = 'code-line'\nconst CodeHighlightingExample = () => {\n  const [editor] = useState(() => withHistory(withReact(createEditor())))\n  const decorate = useDecorate()\n  const onKeyDown = useOnKeydown(editor)\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <ExampleToolbar />\n      <Editable\n        decorate={decorate}\n        renderElement={ElementWrapper}\n        renderLeaf={renderLeaf}\n        onKeyDown={onKeyDown}\n      />\n      <style>{prismThemeCss}</style>\n    </Slate>\n  )\n}\nconst ElementWrapper = props => {\n  const { attributes, children, element } = props\n  const editor = useSlateStatic()\n  if (element.type === CodeBlockType) {\n    const setLanguage = language => {\n      const path = ReactEditor.findPath(editor, element)\n      Transforms.setNodes(editor, { language }, { at: path })\n    }\n    return (\n      <div\n        {...attributes}\n        className={css(`\n        font-family: monospace;\n        font-size: 16px;\n        line-height: 20px;\n        margin-top: 0;\n        background: rgba(0, 20, 60, .03);\n        padding: 5px 13px;\n      `)}\n        style={{ position: 'relative' }}\n        spellCheck={false}\n      >\n        <LanguageSelect\n          value={element.language}\n          onChange={e => setLanguage(e.target.value)}\n        />\n        {children}\n      </div>\n    )\n  }\n  if (element.type === CodeLineType) {\n    return (\n      <div {...attributes} style={{ position: 'relative' }}>\n        {children}\n      </div>\n    )\n  }\n  const Tag = editor.isInline(element) ? 'span' : 'div'\n  return (\n    <Tag {...attributes} style={{ position: 'relative' }}>\n      {children}\n    </Tag>\n  )\n}\nconst ExampleToolbar = () => {\n  return (\n    <Toolbar>\n      <CodeBlockButton />\n    </Toolbar>\n  )\n}\nconst CodeBlockButton = () => {\n  const editor = useSlateStatic()\n  const handleClick = () => {\n    Transforms.wrapNodes(\n      editor,\n      { type: CodeBlockType, language: 'html', children: [] },\n      {\n        match: n => Node.isElement(n) && n.type === ParagraphType,\n        split: true,\n      }\n    )\n    Transforms.setNodes(\n      editor,\n      { type: CodeLineType },\n      { match: n => Node.isElement(n) && n.type === ParagraphType }\n    )\n  }\n  return (\n    <Button\n      data-test-id=\"code-block-button\"\n      active\n      onPointerDown={event => {\n        event.preventDefault()\n      }}\n      onClick={handleClick}\n    >\n      <Icon>code</Icon>\n    </Button>\n  )\n}\nconst renderLeaf = props => {\n  const { attributes, children, leaf } = props\n  const { text, ...rest } = leaf\n  return (\n    <span {...attributes} className={Object.keys(rest).join(' ')}>\n      {children}\n    </span>\n  )\n}\nconst useDecorate = () => {\n  return useCallback(([node, path]) => {\n    if (Node.isElement(node) && node.type === CodeBlockType) {\n      return decorateCodeBlock([node, path])\n    }\n    return []\n  }, [])\n}\nconst decorateCodeBlock = ([block, blockPath]) => {\n  const text = block.children.map(line => Node.string(line)).join('\\n')\n  const tokens = Prism.tokenize(text, Prism.languages[block.language])\n  const normalizedTokens = normalizeTokens(tokens) // make tokens flat and grouped by line\n  const decorations = []\n  for (let index = 0; index < normalizedTokens.length; index++) {\n    const tokens = normalizedTokens[index]\n    let start = 0\n    for (const token of tokens) {\n      const length = token.content.length\n      if (!length) {\n        continue\n      }\n      const end = start + length\n      const path = [...blockPath, index, 0]\n      decorations.push({\n        anchor: { path, offset: start },\n        focus: { path, offset: end },\n        token: true,\n        ...Object.fromEntries(token.types.map(type => [type, true])),\n      })\n      start = end\n    }\n  }\n  return decorations\n}\nconst useOnKeydown = editor => {\n  const onKeyDown = useCallback(\n    e => {\n      if (isHotkey('tab', e)) {\n        // handle tab key, insert spaces\n        e.preventDefault()\n        Editor.insertText(editor, '  ')\n      }\n    },\n    [editor]\n  )\n  return onKeyDown\n}\nconst LanguageSelect = props => {\n  return (\n    <select\n      data-test-id=\"language-select\"\n      contentEditable={false}\n      className={css`\n        position: absolute;\n        right: 5px;\n        top: 5px;\n        z-index: 1;\n      `}\n      {...props}\n    >\n      <option value=\"css\">CSS</option>\n      <option value=\"html\">HTML</option>\n      <option value=\"java\">Java</option>\n      <option value=\"javascript\">JavaScript</option>\n      <option value=\"jsx\">JSX</option>\n      <option value=\"markdown\">Markdown</option>\n      <option value=\"php\">PHP</option>\n      <option value=\"python\">Python</option>\n      <option value=\"sql\">SQL</option>\n      <option value=\"tsx\">TSX</option>\n      <option value=\"typescript\">TypeScript</option>\n    </select>\n  )\n}\nconst toChildren = content => [{ text: content }]\nconst toCodeLines = content =>\n  content\n    .split('\\n')\n    .map(line => ({ type: CodeLineType, children: toChildren(line) }))\nconst initialValue = [\n  {\n    type: ParagraphType,\n    children: toChildren(\n      \"Here's one containing a single paragraph block with some text in it:\"\n    ),\n  },\n  {\n    type: CodeBlockType,\n    language: 'jsx',\n    children: toCodeLines(`// Add the initial value.\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }]\n  }\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}`),\n  },\n  {\n    type: ParagraphType,\n    children: toChildren(\n      'If you are using TypeScript, you will also need to extend the Editor with ReactEditor and add annotations as per the documentation on TypeScript. The example below also includes the custom types required for the rest of this example.'\n    ),\n  },\n  {\n    type: CodeBlockType,\n    language: 'typescript',\n    children: toCodeLines(`// TypeScript users only add this code\nimport { BaseEditor, Descendant } from 'slate'\nimport { ReactEditor } from 'slate-react'\n\ntype CustomElement = { type: 'paragraph'; children: CustomText[] }\ntype CustomText = { text: string }\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: BaseEditor & ReactEditor\n    Element: CustomElement\n    Text: CustomText\n  }\n}`),\n  },\n  {\n    type: ParagraphType,\n    children: toChildren('There you have it!'),\n  },\n]\n// Prismjs theme stored as a string instead of emotion css function.\n// It is useful for copy/pasting different themes. Also lets keeping simpler Leaf implementation\n// In the real project better to use just css file\nconst prismThemeCss = `\n/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n    color: black;\n    background: none;\n    text-shadow: 0 1px white;\n    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n    font-size: 1em;\n    text-align: left;\n    white-space: pre;\n    word-spacing: normal;\n    word-break: normal;\n    word-wrap: normal;\n    line-height: 1.5;\n\n    -moz-tab-size: 4;\n    -o-tab-size: 4;\n    tab-size: 4;\n\n    -webkit-hyphens: none;\n    -moz-hyphens: none;\n    -ms-hyphens: none;\n    hyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n    text-shadow: none;\n    background: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n    text-shadow: none;\n    background: #b3d4fc;\n}\n\n@media print {\n    code[class*=\"language-\"],\n    pre[class*=\"language-\"] {\n        text-shadow: none;\n    }\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n    padding: 1em;\n    margin: .5em 0;\n    overflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n    background: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n    padding: .1em;\n    border-radius: .3em;\n    white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n    color: slategray;\n}\n\n.token.punctuation {\n    color: #999;\n}\n\n.token.namespace {\n    opacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n    color: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n    color: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n    color: #9a6e3a;\n    /* This background color was intended by the author of this theme. */\n    background: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n    color: #07a;\n}\n\n.token.function,\n.token.class-name {\n    color: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n    color: #e90;\n}\n\n.token.important,\n.token.bold {\n    font-weight: bold;\n}\n.token.italic {\n    font-style: italic;\n}\n\n.token.entity {\n    cursor: help;\n}\n`\nexport default CodeHighlightingExample\n"
  },
  {
    "path": "site/examples/js/components/index.jsx",
    "content": "import { css, cx } from '@emotion/css'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nexport const Button = React.forwardRef(\n  ({ className, active, reversed, ...props }, ref) => (\n    <span\n      {...props}\n      ref={ref}\n      className={cx(\n        className,\n        css`\n          cursor: pointer;\n          color: ${reversed\n            ? active\n              ? 'white'\n              : '#aaa'\n            : active\n            ? 'black'\n            : '#ccc'};\n        `\n      )}\n    />\n  )\n)\nexport const Icon = React.forwardRef(({ className, ...props }, ref) => (\n  <span\n    {...props}\n    ref={ref}\n    className={cx(\n      'material-icons',\n      className,\n      css`\n        font-size: 18px;\n        vertical-align: text-bottom;\n      `\n    )}\n  />\n))\nexport const Instruction = React.forwardRef(({ className, ...props }, ref) => (\n  <div\n    {...props}\n    ref={ref}\n    className={cx(\n      className,\n      css`\n        white-space: pre-wrap;\n        margin: 0 -20px 10px;\n        padding: 10px 20px;\n        font-size: 14px;\n        background: #f8f8e8;\n      `\n    )}\n  />\n))\nexport const Menu = React.forwardRef(({ className, ...props }, ref) => (\n  <div\n    {...props}\n    data-test-id=\"menu\"\n    ref={ref}\n    className={cx(\n      className,\n      css`\n        & > * {\n          display: inline-block;\n        }\n\n        & > * + * {\n          margin-left: 15px;\n        }\n      `\n    )}\n  />\n))\nexport const Portal = ({ children }) => {\n  return typeof document === 'object'\n    ? ReactDOM.createPortal(children, document.body)\n    : null\n}\nexport const Toolbar = React.forwardRef(({ className, ...props }, ref) => (\n  <Menu\n    {...props}\n    ref={ref}\n    className={cx(\n      className,\n      css`\n        position: relative;\n        padding: 1px 18px 17px;\n        margin: 0 -20px;\n        border-bottom: 2px solid #eee;\n        margin-bottom: 20px;\n      `\n    )}\n  />\n))\n"
  },
  {
    "path": "site/examples/js/custom-placeholder.jsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, withReact } from 'slate-react'\n\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: '' }],\n  },\n]\nconst PlainTextExample = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        placeholder=\"Type something\"\n        renderPlaceholder={({ children, attributes }) => (\n          <div {...attributes}>\n            <p>{children}</p>\n            <pre>\n              Use the renderPlaceholder prop to customize rendering of the\n              placeholder\n            </pre>\n          </div>\n        )}\n      />\n    </Slate>\n  )\n}\nexport default PlainTextExample\n"
  },
  {
    "path": "site/examples/js/editable-voids.jsx",
    "content": "import { css } from '@emotion/css'\nimport React, { useMemo, useState } from 'react'\nimport { createEditor, Transforms } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, useSlateStatic, withReact } from 'slate-react'\nimport { Button, Icon, Toolbar } from './components'\nimport RichTextEditor from './richtext'\n\nconst EditableVoidsExample = () => {\n  const editor = useMemo(\n    () => withEditableVoids(withHistory(withReact(createEditor()))),\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <InsertEditableVoidButton />\n      </Toolbar>\n\n      <Editable\n        renderElement={props => <Element {...props} />}\n        placeholder=\"Enter some text...\"\n      />\n    </Slate>\n  )\n}\nconst withEditableVoids = editor => {\n  const { isVoid } = editor\n  editor.isVoid = element => {\n    return element.type === 'editable-void' ? true : isVoid(element)\n  }\n  return editor\n}\nconst insertEditableVoid = editor => {\n  const text = { text: '' }\n  const voidNode = {\n    type: 'editable-void',\n    children: [text],\n  }\n  Transforms.insertNodes(editor, voidNode)\n}\nconst Element = props => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'editable-void':\n      return <EditableVoid {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst unsetWidthStyle = css`\n  width: unset;\n`\nconst EditableVoid = ({ attributes, children, element }) => {\n  const [inputValue, setInputValue] = useState('')\n  return (\n    // Need contentEditable=false or Firefox has issues with certain input types.\n    <div {...attributes} contentEditable={false}>\n      <div\n        className={css`\n          box-shadow: 0 0 0 3px #ddd;\n          padding: 8px;\n        `}\n      >\n        <h4>Name:</h4>\n        <input\n          className={css`\n            margin: 8px 0;\n          `}\n          type=\"text\"\n          value={inputValue}\n          onChange={e => {\n            setInputValue(e.target.value)\n          }}\n        />\n        <h4>Left or right handed:</h4>\n        <input\n          className={unsetWidthStyle}\n          type=\"radio\"\n          name=\"handedness\"\n          value=\"left\"\n        />{' '}\n        Left\n        <br />\n        <input\n          className={unsetWidthStyle}\n          type=\"radio\"\n          name=\"handedness\"\n          value=\"right\"\n        />{' '}\n        Right\n        <h4>Tell us about yourself:</h4>\n        <div\n          className={css`\n            padding: 20px;\n            border: 2px solid #ddd;\n          `}\n        >\n          <RichTextEditor />\n        </div>\n      </div>\n      {children}\n    </div>\n  )\n}\nconst InsertEditableVoidButton = () => {\n  const editor = useSlateStatic()\n  return (\n    <Button\n      onMouseDown={event => {\n        event.preventDefault()\n        insertEditableVoid(editor)\n      }}\n    >\n      <Icon>add</Icon>\n    </Button>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In addition to nodes that contain editable text, you can insert void nodes, which can also contain editable elements, inputs, or an entire other Slate editor.',\n      },\n    ],\n  },\n  {\n    type: 'editable-void',\n    children: [{ text: '' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: '',\n      },\n    ],\n  },\n]\nexport default EditableVoidsExample\n"
  },
  {
    "path": "site/examples/js/embeds.jsx",
    "content": "import React, { useMemo } from 'react'\nimport { Transforms, createEditor } from 'slate'\nimport {\n  Slate,\n  Editable,\n  withReact,\n  useSlateStatic,\n  ReactEditor,\n} from 'slate-react'\n\nconst EmbedsExample = () => {\n  const editor = useMemo(() => withEmbeds(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={props => <Element {...props} />}\n        placeholder=\"Enter some text...\"\n      />\n    </Slate>\n  )\n}\nconst withEmbeds = editor => {\n  const { isVoid } = editor\n  editor.isVoid = element => (element.type === 'video' ? true : isVoid(element))\n  return editor\n}\nconst Element = props => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'video':\n      return <VideoElement {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst allowedSchemes = ['http:', 'https:']\nconst VideoElement = ({ attributes, children, element }) => {\n  const editor = useSlateStatic()\n  const { url } = element\n  const safeUrl = useMemo(() => {\n    let parsedUrl = null\n    try {\n      parsedUrl = new URL(url)\n      // eslint-disable-next-line no-empty\n    } catch {}\n    if (parsedUrl && allowedSchemes.includes(parsedUrl.protocol)) {\n      return parsedUrl.href\n    }\n    return 'about:blank'\n  }, [url])\n  return (\n    <div {...attributes}>\n      <div contentEditable={false}>\n        <div\n          style={{\n            padding: '75% 0 0 0',\n            position: 'relative',\n          }}\n        >\n          <iframe\n            src={`${safeUrl}?title=0&byline=0&portrait=0`}\n            frameBorder=\"0\"\n            style={{\n              position: 'absolute',\n              top: '0',\n              left: '0',\n              width: '100%',\n              height: '100%',\n            }}\n          />\n        </div>\n        <UrlInput\n          url={url}\n          onChange={val => {\n            const path = ReactEditor.findPath(editor, element)\n            const newProperties = {\n              url: val,\n            }\n            Transforms.setNodes(editor, newProperties, {\n              at: path,\n            })\n          }}\n        />\n      </div>\n      {children}\n    </div>\n  )\n}\nconst UrlInput = ({ url, onChange }) => {\n  const [value, setValue] = React.useState(url)\n  return (\n    <input\n      type=\"text\"\n      value={value}\n      onClick={e => e.stopPropagation()}\n      style={{\n        marginTop: '5px',\n        boxSizing: 'border-box',\n      }}\n      onChange={e => {\n        const newUrl = e.target.value\n        setValue(newUrl)\n        onChange(newUrl)\n      }}\n    />\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In addition to simple image nodes, you can actually create complex embedded nodes. For example, this one contains an input element that lets you change the video being rendered!',\n      },\n    ],\n  },\n  {\n    type: 'video',\n    url: 'https://player.vimeo.com/video/26689853',\n    children: [{ text: '' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Try it out! This editor is built to handle Vimeo embeds, but you could handle any type.',\n      },\n    ],\n  },\n]\nexport default EmbedsExample\n"
  },
  {
    "path": "site/examples/js/forced-layout.jsx",
    "content": "import React, { useCallback, useMemo } from 'react'\nimport { Editor, Node, Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, withReact } from 'slate-react'\n\nconst withLayout = editor => {\n  const { normalizeNode } = editor\n  editor.normalizeNode = ([node, path]) => {\n    if (path.length === 0) {\n      if (editor.children.length <= 1 && Editor.string(editor, [0, 0]) === '') {\n        const title = {\n          type: 'title',\n          children: [{ text: 'Untitled' }],\n        }\n        Transforms.insertNodes(editor, title, {\n          at: path.concat(0),\n          select: true,\n        })\n      }\n      if (editor.children.length < 2) {\n        const paragraph = {\n          type: 'paragraph',\n          children: [{ text: '' }],\n        }\n        Transforms.insertNodes(editor, paragraph, { at: path.concat(1) })\n      }\n      for (const [child, childPath] of Node.children(editor, path)) {\n        let type\n        const slateIndex = childPath[0]\n        const enforceType = type => {\n          if (Node.isElement(child) && child.type !== type) {\n            const newProperties = { type }\n            Transforms.setNodes(editor, newProperties, {\n              at: childPath,\n            })\n          }\n        }\n        switch (slateIndex) {\n          case 0:\n            type = 'title'\n            enforceType(type)\n            break\n          case 1:\n            type = 'paragraph'\n            enforceType(type)\n          default:\n            break\n        }\n      }\n    }\n    return normalizeNode([node, path])\n  }\n  return editor\n}\nconst ForcedLayoutExample = () => {\n  const renderElement = useCallback(props => <Element {...props} />, [])\n  const editor = useMemo(\n    () => withLayout(withHistory(withReact(createEditor()))),\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        placeholder=\"Enter a title…\"\n        spellCheck\n        autoFocus\n      />\n    </Slate>\n  )\n}\nconst Element = ({ attributes, children, element }) => {\n  switch (element.type) {\n    case 'title':\n      return <h2 {...attributes}>{children}</h2>\n    case 'paragraph':\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst initialValue = [\n  {\n    type: 'title',\n    children: [{ text: 'Enforce Your Layout!' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows how to enforce your layout with domain-specific constraints. This document will always have a title block at the top and at least one paragraph in the body. Try deleting them and see what happens!',\n      },\n    ],\n  },\n]\nexport default ForcedLayoutExample\n"
  },
  {
    "path": "site/examples/js/hovering-toolbar.jsx",
    "content": "import { css } from '@emotion/css'\nimport React, { useEffect, useMemo, useRef } from 'react'\nimport { Editor, Range, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, useFocused, useSlate, withReact } from 'slate-react'\nimport { Button, Icon, Menu, Portal } from './components'\n\nconst HoveringMenuExample = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <HoveringToolbar />\n      <Editable\n        renderLeaf={props => <Leaf {...props} />}\n        placeholder=\"Enter some text...\"\n        onDOMBeforeInput={event => {\n          switch (event.inputType) {\n            case 'formatBold':\n              event.preventDefault()\n              return toggleMark(editor, 'bold')\n            case 'formatItalic':\n              event.preventDefault()\n              return toggleMark(editor, 'italic')\n            case 'formatUnderline':\n              event.preventDefault()\n              return toggleMark(editor, 'underline')\n          }\n        }}\n      />\n    </Slate>\n  )\n}\nconst toggleMark = (editor, format) => {\n  const isActive = isMarkActive(editor, format)\n  if (isActive) {\n    Editor.removeMark(editor, format)\n  } else {\n    Editor.addMark(editor, format, true)\n  }\n}\nconst isMarkActive = (editor, format) => {\n  const marks = Editor.marks(editor)\n  return marks ? marks[format] === true : false\n}\nconst Leaf = ({ attributes, children, leaf }) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n  return <span {...attributes}>{children}</span>\n}\nconst HoveringToolbar = () => {\n  const ref = useRef(null)\n  const editor = useSlate()\n  const inFocus = useFocused()\n  useEffect(() => {\n    const el = ref.current\n    const { selection } = editor\n    if (!el) {\n      return\n    }\n    if (\n      !selection ||\n      !inFocus ||\n      Range.isCollapsed(selection) ||\n      Editor.string(editor, selection) === ''\n    ) {\n      el.removeAttribute('style')\n      return\n    }\n    const domSelection = window.getSelection()\n    const domRange = domSelection.getRangeAt(0)\n    const rect = domRange.getBoundingClientRect()\n    el.style.opacity = '1'\n    el.style.top = `${rect.top + window.pageYOffset - el.offsetHeight}px`\n    el.style.left = `${\n      rect.left + window.pageXOffset - el.offsetWidth / 2 + rect.width / 2\n    }px`\n  })\n  return (\n    <Portal>\n      <Menu\n        ref={ref}\n        className={css`\n          padding: 8px 7px 6px;\n          position: absolute;\n          z-index: 1;\n          top: -10000px;\n          left: -10000px;\n          margin-top: -6px;\n          opacity: 0;\n          background-color: #222;\n          border-radius: 4px;\n          transition: opacity 0.75s;\n        `}\n        onMouseDown={e => {\n          // prevent toolbar from taking focus away from editor\n          e.preventDefault()\n        }}\n      >\n        <FormatButton format=\"bold\" icon=\"format_bold\" />\n        <FormatButton format=\"italic\" icon=\"format_italic\" />\n        <FormatButton format=\"underline\" icon=\"format_underlined\" />\n      </Menu>\n    </Portal>\n  )\n}\nconst FormatButton = ({ format, icon }) => {\n  const editor = useSlate()\n  return (\n    <Button\n      reversed\n      active={isMarkActive(editor, format)}\n      onClick={() => toggleMark(editor, format)}\n    >\n      <Icon>{icon}</Icon>\n    </Button>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows how you can make a hovering menu appear above your content, which you can use to make text ',\n      },\n      { text: 'bold', bold: true },\n      { text: ', ' },\n      { text: 'italic', italic: true },\n      { text: ', or anything else you might want to do!' },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'Try it out yourself! Just ' },\n      { text: 'select any piece of text and the menu will appear', bold: true },\n      { text: '.' },\n    ],\n  },\n]\nexport default HoveringMenuExample\n"
  },
  {
    "path": "site/examples/js/huge-document.jsx",
    "content": "import { faker } from '@faker-js/faker'\nimport React, { StrictMode, useCallback, useEffect, useState } from 'react'\nimport { createEditor as slateCreateEditor } from 'slate'\nimport { Editable, Slate, withReact, useSelected } from 'slate-react'\n\nconst SUPPORTS_EVENT_TIMING =\n  typeof window !== 'undefined' && 'PerformanceEventTiming' in window\nconst SUPPORTS_LOAF_TIMING =\n  typeof window !== 'undefined' &&\n  'PerformanceLongAnimationFrameTiming' in window\nconst blocksOptions = [\n  2, 1000, 2500, 5000, 7500, 10000, 15000, 20000, 25000, 30000, 40000, 50000,\n  100000, 200000,\n]\nconst chunkSizeOptions = [3, 10, 100, 1000]\nconst searchParams =\n  typeof document === 'undefined'\n    ? null\n    : new URLSearchParams(document.location.search)\nconst parseNumber = (key, defaultValue) =>\n  parseInt(searchParams?.get(key) ?? '', 10) || defaultValue\nconst parseBoolean = (key, defaultValue) => {\n  const value = searchParams?.get(key)\n  if (value) return value === 'true'\n  return defaultValue\n}\nconst parseEnum = (key, options, defaultValue) => {\n  const value = searchParams?.get(key)\n  if (value && options.includes(value)) return value\n  return defaultValue\n}\nconst initialConfig = {\n  blocks: parseNumber('blocks', 10000),\n  chunking: parseBoolean('chunking', true),\n  chunkSize: parseNumber('chunk_size', 1000),\n  chunkDivs: parseBoolean('chunk_divs', true),\n  chunkOutlines: parseBoolean('chunk_outlines', false),\n  contentVisibilityMode: parseEnum(\n    'content_visibility',\n    ['none', 'element', 'chunk'],\n    'chunk'\n  ),\n  showSelectedHeadings: parseBoolean('selected_headings', false),\n  strictMode: parseBoolean('strict', false),\n}\nconst setSearchParams = config => {\n  if (searchParams) {\n    searchParams.set('blocks', config.blocks.toString())\n    searchParams.set('chunking', config.chunking ? 'true' : 'false')\n    searchParams.set('chunk_size', config.chunkSize.toString())\n    searchParams.set('chunk_divs', config.chunkDivs ? 'true' : 'false')\n    searchParams.set('chunk_outlines', config.chunkOutlines ? 'true' : 'false')\n    searchParams.set('content_visibility', config.contentVisibilityMode)\n    searchParams.set(\n      'selected_headings',\n      config.showSelectedHeadings ? 'true' : 'false'\n    )\n    searchParams.set('strict', config.strictMode ? 'true' : 'false')\n    history.replaceState({}, '', `?${searchParams.toString()}`)\n  }\n}\nconst cachedInitialValue = []\nconst getInitialValue = blocks => {\n  if (cachedInitialValue.length >= blocks) {\n    return cachedInitialValue.slice(0, blocks)\n  }\n  faker.seed(1)\n  for (let i = cachedInitialValue.length; i < blocks; i++) {\n    if (i % 100 === 0) {\n      const heading = {\n        type: 'heading-one',\n        children: [{ text: faker.lorem.sentence() }],\n      }\n      cachedInitialValue.push(heading)\n    } else {\n      const paragraph = {\n        type: 'paragraph',\n        children: [{ text: faker.lorem.paragraph() }],\n      }\n      cachedInitialValue.push(paragraph)\n    }\n  }\n  return cachedInitialValue.slice()\n}\nconst initialInitialValue =\n  typeof window === 'undefined' ? [] : getInitialValue(initialConfig.blocks)\nconst createEditor = config => {\n  const editor = withReact(slateCreateEditor())\n  editor.getChunkSize = node =>\n    config.chunking && node === editor ? config.chunkSize : null\n  return editor\n}\nconst HugeDocumentExample = () => {\n  const [rendering, setRendering] = useState(false)\n  const [config, baseSetConfig] = useState(initialConfig)\n  const [initialValue, setInitialValue] = useState(initialInitialValue)\n  const [editor, setEditor] = useState(() => createEditor(config))\n  const [editorVersion, setEditorVersion] = useState(0)\n  const setConfig = useCallback(\n    partialConfig => {\n      const newConfig = { ...config, ...partialConfig }\n      setRendering(true)\n      baseSetConfig(newConfig)\n      setSearchParams(newConfig)\n      setTimeout(() => {\n        setRendering(false)\n        setInitialValue(getInitialValue(newConfig.blocks))\n        setEditor(createEditor(newConfig))\n        setEditorVersion(n => n + 1)\n      })\n    },\n    [config]\n  )\n  const renderElement = useCallback(\n    props => (\n      <Element\n        {...props}\n        contentVisibility={config.contentVisibilityMode === 'element'}\n        showSelectedHeadings={config.showSelectedHeadings}\n      />\n    ),\n    [config.contentVisibilityMode, config.showSelectedHeadings]\n  )\n  const renderChunk = useCallback(\n    props => (\n      <Chunk\n        {...props}\n        contentVisibilityLowest={config.contentVisibilityMode === 'chunk'}\n        outline={config.chunkOutlines}\n      />\n    ),\n    [config.contentVisibilityMode, config.chunkOutlines]\n  )\n  const editable = rendering ? (\n    <div>Rendering&hellip;</div>\n  ) : (\n    <Slate key={editorVersion} editor={editor} initialValue={initialValue}>\n      <Editable\n        placeholder=\"Enter some text…\"\n        renderElement={renderElement}\n        renderChunk={config.chunkDivs ? renderChunk : undefined}\n        spellCheck\n        autoFocus\n      />\n    </Slate>\n  )\n  const editableWithStrictMode = config.strictMode ? (\n    <StrictMode>{editable}</StrictMode>\n  ) : (\n    editable\n  )\n  return (\n    <>\n      <PerformanceControls\n        editor={editor}\n        config={config}\n        setConfig={setConfig}\n      />\n\n      {editableWithStrictMode}\n    </>\n  )\n}\nconst Chunk = ({\n  attributes,\n  children,\n  lowest,\n  contentVisibilityLowest,\n  outline,\n}) => {\n  const style = {\n    contentVisibility: contentVisibilityLowest && lowest ? 'auto' : undefined,\n    border: outline ? '1px solid red' : undefined,\n    padding: outline ? 20 : undefined,\n    marginBottom: outline ? 20 : undefined,\n  }\n  return (\n    <div {...attributes} style={style}>\n      {children}\n    </div>\n  )\n}\nconst Heading = React.forwardRef(\n  ({ style: styleProp, showSelectedHeadings = false, ...props }, ref) => {\n    // Fine since the editor is remounted if the config changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const selected = showSelectedHeadings ? useSelected() : false\n    const style = { ...styleProp, color: selected ? 'green' : undefined }\n    return <h1 ref={ref} {...props} aria-selected={selected} style={style} />\n  }\n)\nconst Paragraph = 'p'\nconst Element = ({\n  attributes,\n  children,\n  element,\n  contentVisibility,\n  showSelectedHeadings,\n}) => {\n  const style = {\n    contentVisibility: contentVisibility ? 'auto' : undefined,\n  }\n  switch (element.type) {\n    case 'heading-one':\n      return (\n        <Heading\n          {...attributes}\n          style={style}\n          showSelectedHeadings={showSelectedHeadings}\n        >\n          {children}\n        </Heading>\n      )\n    default:\n      return (\n        <Paragraph {...attributes} style={style}>\n          {children}\n        </Paragraph>\n      )\n  }\n}\nconst PerformanceControls = ({ editor, config, setConfig }) => {\n  const [configurationOpen, setConfigurationOpen] = useState(true)\n  const [keyPressDurations, setKeyPressDurations] = useState([])\n  const [lastLongAnimationFrameDuration, setLastLongAnimationFrameDuration] =\n    useState(null)\n  const lastKeyPressDuration = keyPressDurations[0] ?? null\n  const averageKeyPressDuration =\n    keyPressDurations.length === 10\n      ? Math.round(keyPressDurations.reduce((total, d) => total + d) / 10)\n      : null\n  useEffect(() => {\n    if (!SUPPORTS_EVENT_TIMING) return\n    const observer = new PerformanceObserver(list => {\n      list.getEntries().forEach(entry => {\n        if (entry.name === 'keypress') {\n          const duration = Math.round(\n            // @ts-ignore Entry type is missing processingStart and processingEnd\n            entry.processingEnd - entry.processingStart\n          )\n          setKeyPressDurations(durations => [\n            duration,\n            ...durations.slice(0, 9),\n          ])\n        }\n      })\n    })\n    // @ts-ignore Options type is missing durationThreshold\n    observer.observe({ type: 'event', durationThreshold: 16 })\n    return () => observer.disconnect()\n  }, [])\n  useEffect(() => {\n    if (!SUPPORTS_LOAF_TIMING) return\n    const { apply } = editor\n    let afterOperation = false\n    editor.apply = operation => {\n      apply(operation)\n      afterOperation = true\n    }\n    const observer = new PerformanceObserver(list => {\n      list.getEntries().forEach(entry => {\n        if (afterOperation) {\n          setLastLongAnimationFrameDuration(Math.round(entry.duration))\n          afterOperation = false\n        }\n      })\n    })\n    // Register the observer for events\n    observer.observe({ type: 'long-animation-frame' })\n    return () => observer.disconnect()\n  }, [editor])\n  return (\n    <div className=\"performance-controls\">\n      <p>\n        <label>\n          Blocks:{' '}\n          <select\n            value={config.blocks}\n            onChange={event =>\n              setConfig({\n                blocks: parseInt(event.target.value, 10),\n              })\n            }\n          >\n            {blocksOptions.map(blocks => (\n              <option key={blocks} value={blocks}>\n                {blocks.toString().replace(/(\\d{3})$/, ',$1')}\n              </option>\n            ))}\n          </select>\n        </label>\n      </p>\n\n      <details\n        open={configurationOpen}\n        onToggle={event => setConfigurationOpen(event.currentTarget.open)}\n      >\n        <summary>Configuration</summary>\n\n        <p>\n          <label>\n            <input\n              type=\"checkbox\"\n              checked={config.chunking}\n              onChange={event =>\n                setConfig({\n                  chunking: event.target.checked,\n                })\n              }\n            />{' '}\n            Chunking enabled\n          </label>\n        </p>\n\n        {config.chunking && (\n          <>\n            <p>\n              <label>\n                <input\n                  type=\"checkbox\"\n                  checked={config.chunkDivs}\n                  onChange={event =>\n                    setConfig({\n                      chunkDivs: event.target.checked,\n                    })\n                  }\n                />{' '}\n                Render each chunk as a separate <code>&lt;div&gt;</code>\n              </label>\n            </p>\n\n            {config.chunkDivs && (\n              <p>\n                <label>\n                  <input\n                    type=\"checkbox\"\n                    checked={config.chunkOutlines}\n                    onChange={event =>\n                      setConfig({\n                        chunkOutlines: event.target.checked,\n                      })\n                    }\n                  />{' '}\n                  Outline each chunk\n                </label>\n              </p>\n            )}\n\n            <p>\n              <label>\n                Chunk size:{' '}\n                <select\n                  value={config.chunkSize}\n                  onChange={event =>\n                    setConfig({\n                      chunkSize: parseInt(event.target.value, 10),\n                    })\n                  }\n                >\n                  {chunkSizeOptions.map(chunkSize => (\n                    <option key={chunkSize} value={chunkSize}>\n                      {chunkSize}\n                    </option>\n                  ))}\n                </select>\n              </label>\n            </p>\n          </>\n        )}\n\n        <p>\n          <label>\n            Set <code>content-visibility: auto</code> on:{' '}\n            <select\n              value={config.contentVisibilityMode}\n              onChange={event =>\n                setConfig({\n                  contentVisibilityMode: event.target.value,\n                })\n              }\n            >\n              <option value=\"none\">None</option>\n              <option value=\"element\">Elements</option>\n              {config.chunking && config.chunkDivs && (\n                <option value=\"chunk\">Lowest chunks</option>\n              )}\n            </select>\n          </label>\n        </p>\n\n        <p>\n          <label>\n            <input\n              type=\"checkbox\"\n              checked={config.showSelectedHeadings}\n              onChange={event =>\n                setConfig({\n                  showSelectedHeadings: event.target.checked,\n                })\n              }\n            />{' '}\n            Call <code>useSelected</code> in each heading\n          </label>\n        </p>\n\n        <p>\n          <label>\n            <input\n              type=\"checkbox\"\n              checked={config.strictMode}\n              onChange={event =>\n                setConfig({\n                  strictMode: event.target.checked,\n                })\n              }\n            />{' '}\n            React strict mode (only works in localhost)\n          </label>\n        </p>\n      </details>\n\n      <details>\n        <summary>Statistics</summary>\n\n        <p>\n          Last keypress (ms):{' '}\n          {SUPPORTS_EVENT_TIMING\n            ? lastKeyPressDuration ?? '-'\n            : 'Not supported'}\n        </p>\n\n        <p>\n          Average of last 10 keypresses (ms):{' '}\n          {SUPPORTS_EVENT_TIMING\n            ? averageKeyPressDuration ?? '-'\n            : 'Not supported'}\n        </p>\n\n        <p>\n          Last long animation frame (ms):{' '}\n          {SUPPORTS_LOAF_TIMING\n            ? lastLongAnimationFrameDuration ?? '-'\n            : 'Not supported'}\n        </p>\n\n        {SUPPORTS_EVENT_TIMING && lastKeyPressDuration === null && (\n          <p>Events shorter than 16ms may not be detected.</p>\n        )}\n      </details>\n    </div>\n  )\n}\nexport default HugeDocumentExample\n"
  },
  {
    "path": "site/examples/js/iframe.jsx",
    "content": "import isHotkey from 'is-hotkey'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Editor, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, ReactEditor, Slate, useSlate, withReact } from 'slate-react'\nimport { Button, Icon, Toolbar } from './components'\n\nconst HOTKEYS = {\n  'mod+b': 'bold',\n  'mod+i': 'italic',\n  'mod+u': 'underline',\n  'mod+`': 'code',\n}\nconst IFrameExample = () => {\n  const renderElement = useCallback(\n    ({ attributes, children }) => <p {...attributes}>{children}</p>,\n    []\n  )\n  const renderLeaf = useCallback(props => <Leaf {...props} />, [])\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  const handleBlur = useCallback(() => ReactEditor.deselect(editor), [editor])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <MarkButton format=\"bold\" icon=\"format_bold\" />\n        <MarkButton format=\"italic\" icon=\"format_italic\" />\n        <MarkButton format=\"underline\" icon=\"format_underlined\" />\n        <MarkButton format=\"code\" icon=\"code\" />\n      </Toolbar>\n      <IFrame onBlur={handleBlur}>\n        <Editable\n          renderElement={renderElement}\n          renderLeaf={renderLeaf}\n          placeholder=\"Enter some rich text…\"\n          spellCheck\n          autoFocus\n          onKeyDown={event => {\n            for (const hotkey in HOTKEYS) {\n              if (isHotkey(hotkey, event)) {\n                event.preventDefault()\n                const mark = HOTKEYS[hotkey]\n                toggleMark(editor, mark)\n              }\n            }\n          }}\n        />\n      </IFrame>\n    </Slate>\n  )\n}\nconst toggleMark = (editor, format) => {\n  const isActive = isMarkActive(editor, format)\n  if (isActive) {\n    Editor.removeMark(editor, format)\n  } else {\n    Editor.addMark(editor, format, true)\n  }\n}\nconst isMarkActive = (editor, format) => {\n  const marks = Editor.marks(editor)\n  return marks ? marks[format] === true : false\n}\nconst Leaf = ({ attributes, children, leaf }) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n  if (leaf.code) {\n    children = <code>{children}</code>\n  }\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n  return <span {...attributes}>{children}</span>\n}\nconst MarkButton = ({ format, icon }) => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isMarkActive(editor, format)}\n      onMouseDown={event => {\n        event.preventDefault()\n        toggleMark(editor, format)\n      }}\n    >\n      <Icon>{icon}</Icon>\n    </Button>\n  )\n}\nconst IFrame = ({ children, ...props }) => {\n  const [iframeBody, setIframeBody] = useState(null)\n  const handleLoad = e => {\n    const iframe = e.target\n    if (!iframe.contentDocument) return\n    setIframeBody(iframe.contentDocument.body)\n  }\n  return (\n    <iframe srcDoc={`<!DOCTYPE html>`} {...props} onLoad={handleLoad}>\n      {iframeBody && createPortal(children, iframeBody)}\n    </iframe>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In this example, the document gets rendered into a controlled ',\n      },\n      { text: '<iframe>', code: true },\n      {\n        text: '. This is ',\n      },\n      {\n        text: 'particularly',\n        italic: true,\n      },\n      {\n        text: ' useful, when you need to separate the styles for your editor contents from the ones addressing your UI.',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This also the only reliable method to preview any ',\n      },\n      {\n        text: 'media queries',\n        bold: true,\n      },\n      {\n        text: ' in your CSS.',\n      },\n    ],\n  },\n]\nexport default IFrameExample\n"
  },
  {
    "path": "site/examples/js/images.jsx",
    "content": "import { css } from '@emotion/css'\nimport imageExtensions from 'image-extensions'\nimport isHotkey from 'is-hotkey'\nimport isUrl from 'is-url'\nimport React, { useMemo } from 'react'\nimport { Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  Slate,\n  useFocused,\n  useSelected,\n  useSlateStatic,\n  withReact,\n} from 'slate-react'\nimport { Button, Icon, Toolbar } from './components'\n\nconst ImagesExample = () => {\n  const editor = useMemo(\n    () => withImages(withHistory(withReact(createEditor()))),\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <InsertImageButton />\n      </Toolbar>\n      <Editable\n        onKeyDown={event => {\n          if (isHotkey('mod+a', event)) {\n            event.preventDefault()\n            Transforms.select(editor, [])\n          }\n        }}\n        renderElement={props => <Element {...props} />}\n        placeholder=\"Enter some text...\"\n      />\n    </Slate>\n  )\n}\nconst withImages = editor => {\n  const { insertData, isVoid } = editor\n  editor.isVoid = element => {\n    return element.type === 'image' ? true : isVoid(element)\n  }\n  editor.insertData = data => {\n    const text = data.getData('text/plain')\n    const { files } = data\n    if (files && files.length > 0) {\n      Array.from(files).forEach(file => {\n        const reader = new FileReader()\n        const [mime] = file.type.split('/')\n        if (mime === 'image') {\n          reader.addEventListener('load', () => {\n            const url = reader.result\n            insertImage(editor, url)\n          })\n          reader.readAsDataURL(file)\n        }\n      })\n    } else if (isImageUrl(text)) {\n      insertImage(editor, text)\n    } else {\n      insertData(data)\n    }\n  }\n  return editor\n}\nconst insertImage = (editor, url) => {\n  const text = { text: '' }\n  const image = { type: 'image', url, children: [text] }\n  Transforms.insertNodes(editor, image)\n  const paragraph = {\n    type: 'paragraph',\n    children: [{ text: '' }],\n  }\n  Transforms.insertNodes(editor, paragraph)\n}\nconst Element = props => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'image':\n      return <Image {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst Image = ({ attributes, children, element }) => {\n  const editor = useSlateStatic()\n  const path = ReactEditor.findPath(editor, element)\n  const selected = useSelected()\n  const focused = useFocused()\n  return (\n    <div {...attributes}>\n      {children}\n      <div\n        contentEditable={false}\n        className={css`\n          position: relative;\n        `}\n      >\n        <img\n          src={element.url}\n          className={css`\n            display: block;\n            max-width: 100%;\n            max-height: 20em;\n            box-shadow: ${selected && focused ? '0 0 0 3px #B4D5FF' : 'none'};\n          `}\n        />\n        <Button\n          active\n          onClick={() => Transforms.removeNodes(editor, { at: path })}\n          className={css`\n            display: ${selected && focused ? 'inline' : 'none'};\n            position: absolute;\n            top: 0.5em;\n            left: 0.5em;\n            background-color: white;\n          `}\n        >\n          <Icon>delete</Icon>\n        </Button>\n      </div>\n    </div>\n  )\n}\nconst InsertImageButton = () => {\n  const editor = useSlateStatic()\n  return (\n    <Button\n      onMouseDown={event => {\n        event.preventDefault()\n        const url = window.prompt('Enter the URL of the image:')\n        if (url && !isImageUrl(url)) {\n          alert('URL is not an image')\n          return\n        }\n        url && insertImage(editor, url)\n      }}\n    >\n      <Icon>image</Icon>\n    </Button>\n  )\n}\nconst isImageUrl = url => {\n  if (!url) return false\n  if (!isUrl(url)) return false\n  const ext = new URL(url).pathname.split('.').pop()\n  return imageExtensions.includes(ext)\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In addition to nodes that contain editable text, you can also create other types of nodes, like images or videos.',\n      },\n    ],\n  },\n  {\n    type: 'image',\n    url: 'https://source.unsplash.com/kFrdX5IeQzI',\n    children: [{ text: '' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows images in action. It features two ways to add images. You can either add an image via the toolbar icon above, or if you want in on a little secret, copy an image URL to your clipboard and paste it anywhere in the editor!',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'You can delete images with the cross in the top left. Try deleting this sheep:',\n      },\n    ],\n  },\n  {\n    type: 'image',\n    url: 'https://source.unsplash.com/zOwZKwZOZq8',\n    children: [{ text: '' }],\n  },\n]\nexport default ImagesExample\n"
  },
  {
    "path": "site/examples/js/inlines.jsx",
    "content": "import { css } from '@emotion/css'\nimport { isKeyHotkey } from 'is-hotkey'\nimport isUrl from 'is-url'\nimport React, { useMemo } from 'react'\nimport { createEditor, Editor, Node, Range, Transforms } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, useSelected, useSlate, withReact } from 'slate-react'\nimport * as SlateReact from 'slate-react'\nimport { Button, Icon, Toolbar } from './components'\n\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In addition to block nodes, you can create inline nodes. Here is a ',\n      },\n      {\n        type: 'link',\n        url: 'https://en.wikipedia.org/wiki/Hypertext',\n        children: [{ text: 'hyperlink' }],\n      },\n      {\n        text: ', and here is a more unusual inline: an ',\n      },\n      {\n        type: 'button',\n        children: [{ text: 'editable button' }],\n      },\n      {\n        text: '! Here is a read-only inline: ',\n      },\n      {\n        type: 'badge',\n        children: [{ text: 'Approved' }],\n      },\n      {\n        text: '.',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'There are two ways to add links. You can either add a link via the toolbar icon above, or if you want in on a little secret, copy a URL to your keyboard and paste it while a range of text is selected. ',\n      },\n      // The following is an example of an inline at the end of a block.\n      // This is an edge case that can cause issues.\n      {\n        type: 'link',\n        url: 'https://twitter.com/JustMissEmma/status/1448679899531726852',\n        children: [{ text: 'Finally, here is our favorite dog video.' }],\n      },\n      { text: '' },\n    ],\n  },\n]\nconst InlinesExample = () => {\n  const editor = useMemo(\n    () => withInlines(withHistory(withReact(createEditor()))),\n    []\n  )\n  const onKeyDown = event => {\n    const { selection } = editor\n    // Default left/right behavior is unit:'character'.\n    // This fails to distinguish between two cursor positions, such as\n    // <inline>foo<cursor/></inline> vs <inline>foo</inline><cursor/>.\n    // Here we modify the behavior to unit:'offset'.\n    // This lets the user step into and out of the inline without stepping over characters.\n    // You may wish to customize this further to only use unit:'offset' in specific cases.\n    if (selection && Range.isCollapsed(selection)) {\n      const { nativeEvent } = event\n      if (isKeyHotkey('left', nativeEvent)) {\n        event.preventDefault()\n        Transforms.move(editor, { unit: 'offset', reverse: true })\n        return\n      }\n      if (isKeyHotkey('right', nativeEvent)) {\n        event.preventDefault()\n        Transforms.move(editor, { unit: 'offset' })\n        return\n      }\n    }\n  }\n  return (\n    <SlateReact.Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <AddLinkButton />\n        <RemoveLinkButton />\n        <ToggleEditableButtonButton />\n      </Toolbar>\n      <Editable\n        renderElement={props => <Element {...props} />}\n        renderLeaf={props => <Text {...props} />}\n        placeholder=\"Enter some text...\"\n        onKeyDown={onKeyDown}\n      />\n    </SlateReact.Slate>\n  )\n}\nconst withInlines = editor => {\n  const { insertData, insertText, isInline, isElementReadOnly, isSelectable } =\n    editor\n  editor.isInline = element =>\n    ['link', 'button', 'badge'].includes(element.type) || isInline(element)\n  editor.isElementReadOnly = element =>\n    element.type === 'badge' || isElementReadOnly(element)\n  editor.isSelectable = element =>\n    element.type !== 'badge' && isSelectable(element)\n  editor.insertText = text => {\n    if (text && isUrl(text)) {\n      wrapLink(editor, text)\n    } else {\n      insertText(text)\n    }\n  }\n  editor.insertData = data => {\n    const text = data.getData('text/plain')\n    if (text && isUrl(text)) {\n      wrapLink(editor, text)\n    } else {\n      insertData(data)\n    }\n  }\n  return editor\n}\nconst insertLink = (editor, url) => {\n  if (editor.selection) {\n    wrapLink(editor, url)\n  }\n}\nconst insertButton = editor => {\n  if (editor.selection) {\n    wrapButton(editor)\n  }\n}\nconst isLinkActive = editor => {\n  const [link] = Editor.nodes(editor, {\n    match: n => Node.isElement(n) && n.type === 'link',\n  })\n  return !!link\n}\nconst isButtonActive = editor => {\n  const [button] = Editor.nodes(editor, {\n    match: n => Node.isElement(n) && n.type === 'button',\n  })\n  return !!button\n}\nconst unwrapLink = editor => {\n  Transforms.unwrapNodes(editor, {\n    match: n => Node.isElement(n) && n.type === 'link',\n  })\n}\nconst unwrapButton = editor => {\n  Transforms.unwrapNodes(editor, {\n    match: n => Node.isElement(n) && n.type === 'button',\n  })\n}\nconst wrapLink = (editor, url) => {\n  if (isLinkActive(editor)) {\n    unwrapLink(editor)\n  }\n  const { selection } = editor\n  const isCollapsed = selection && Range.isCollapsed(selection)\n  const link = {\n    type: 'link',\n    url,\n    children: isCollapsed ? [{ text: url }] : [],\n  }\n  if (isCollapsed) {\n    Transforms.insertNodes(editor, link)\n  } else {\n    Transforms.wrapNodes(editor, link, { split: true })\n    Transforms.collapse(editor, { edge: 'end' })\n  }\n}\nconst wrapButton = editor => {\n  if (isButtonActive(editor)) {\n    unwrapButton(editor)\n  }\n  const { selection } = editor\n  const isCollapsed = selection && Range.isCollapsed(selection)\n  const button = {\n    type: 'button',\n    children: isCollapsed ? [{ text: 'Edit me!' }] : [],\n  }\n  if (isCollapsed) {\n    Transforms.insertNodes(editor, button)\n  } else {\n    Transforms.wrapNodes(editor, button, { split: true })\n    Transforms.collapse(editor, { edge: 'end' })\n  }\n}\n// Put this at the start and end of an inline component to work around this Chromium bug:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\nconst InlineChromiumBugfix = () => (\n  <span\n    contentEditable={false}\n    className={css`\n      font-size: 0;\n    `}\n  >\n    {String.fromCodePoint(160) /* Non-breaking space */}\n  </span>\n)\nconst allowedSchemes = ['http:', 'https:', 'mailto:', 'tel:']\nconst LinkComponent = ({ attributes, children, element }) => {\n  const selected = useSelected()\n  const safeUrl = useMemo(() => {\n    let parsedUrl = null\n    try {\n      parsedUrl = new URL(element.url)\n      // eslint-disable-next-line no-empty\n    } catch {}\n    if (parsedUrl && allowedSchemes.includes(parsedUrl.protocol)) {\n      return parsedUrl.href\n    }\n    return 'about:blank'\n  }, [element.url])\n  return (\n    <a\n      {...attributes}\n      href={safeUrl}\n      className={\n        selected\n          ? css`\n              box-shadow: 0 0 0 3px #ddd;\n            `\n          : ''\n      }\n    >\n      <InlineChromiumBugfix />\n      {children}\n      <InlineChromiumBugfix />\n    </a>\n  )\n}\nconst EditableButtonComponent = ({ attributes, children }) => {\n  return (\n    /*\n      Note that this is not a true button, but a span with button-like CSS.\n      True buttons are display:inline-block, but Chrome and Safari\n      have a bad bug with display:inline-block inside contenteditable:\n      - https://bugs.webkit.org/show_bug.cgi?id=105898\n      - https://bugs.chromium.org/p/chromium/issues/detail?id=1088403\n      Worse, one cannot override the display property: https://github.com/w3c/csswg-drafts/issues/3226\n      The only current workaround is to emulate the appearance of a display:inline button using CSS.\n    */\n    <span\n      {...attributes}\n      onClick={ev => ev.preventDefault()}\n      // Margin is necessary to clearly show the cursor adjacent to the button\n      className={css`\n        margin: 0 0.1em;\n\n        background-color: #efefef;\n        padding: 2px 6px;\n        border: 1px solid #767676;\n        border-radius: 2px;\n        font-size: 0.9em;\n      `}\n    >\n      <InlineChromiumBugfix />\n      {children}\n      <InlineChromiumBugfix />\n    </span>\n  )\n}\nconst BadgeComponent = ({ attributes, children, element }) => {\n  const selected = useSelected()\n  return (\n    <span\n      {...attributes}\n      contentEditable={false}\n      className={css`\n        background-color: green;\n        color: white;\n        padding: 2px 6px;\n        border-radius: 2px;\n        font-size: 0.9em;\n        ${selected && 'box-shadow: 0 0 0 3px #ddd;'}\n      `}\n      data-playwright-selected={selected}\n    >\n      <InlineChromiumBugfix />\n      {children}\n      <InlineChromiumBugfix />\n    </span>\n  )\n}\nconst Element = props => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'link':\n      return <LinkComponent {...props} />\n    case 'button':\n      return <EditableButtonComponent {...props} />\n    case 'badge':\n      return <BadgeComponent {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst Text = props => {\n  const { attributes, children, leaf } = props\n  return (\n    <span\n      // The following is a workaround for a Chromium bug where,\n      // if you have an inline at the end of a block,\n      // clicking the end of a block puts the cursor inside the inline\n      // instead of inside the final {text: ''} node\n      // https://github.com/ianstormtaylor/slate/issues/4704#issuecomment-1006696364\n      className={\n        leaf.text === ''\n          ? css`\n              padding-left: 0.1px;\n            `\n          : undefined\n      }\n      {...attributes}\n    >\n      {children}\n    </span>\n  )\n}\nconst AddLinkButton = () => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isLinkActive(editor)}\n      onPointerDown={event => event.preventDefault()}\n      onClick={() => {\n        const url = window.prompt('Enter the URL of the link:')\n        if (!url) return\n        insertLink(editor, url)\n      }}\n    >\n      <Icon>link</Icon>\n    </Button>\n  )\n}\nconst RemoveLinkButton = () => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isLinkActive(editor)}\n      onPointerDown={event => event.preventDefault()}\n      onClick={() => {\n        if (isLinkActive(editor)) {\n          unwrapLink(editor)\n        }\n      }}\n    >\n      <Icon>link_off</Icon>\n    </Button>\n  )\n}\nconst ToggleEditableButtonButton = () => {\n  const editor = useSlate()\n  return (\n    <Button\n      active\n      onPointerDown={event => event.preventDefault()}\n      onClick={() => {\n        if (isButtonActive(editor)) {\n          unwrapButton(editor)\n        } else {\n          insertButton(editor)\n        }\n      }}\n    >\n      <Icon>smart_button</Icon>\n    </Button>\n  )\n}\nexport default InlinesExample\n"
  },
  {
    "path": "site/examples/js/markdown-preview.jsx",
    "content": "import { css } from '@emotion/css'\nimport Prism from 'prismjs'\nimport 'prismjs/components/prism-markdown'\nimport React, { useCallback, useMemo } from 'react'\nimport { Node, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, withReact } from 'slate-react'\n\nconst MarkdownPreviewExample = () => {\n  const renderLeaf = useCallback(props => <Leaf {...props} />, [])\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  const decorate = useCallback(([node, path]) => {\n    const ranges = []\n    if (!Node.isText(node)) {\n      return ranges\n    }\n    const getLength = token => {\n      if (typeof token === 'string') {\n        return token.length\n      } else if (typeof token.content === 'string') {\n        return token.content.length\n      } else {\n        return token.content.reduce((l, t) => l + getLength(t), 0)\n      }\n    }\n    const tokens = Prism.tokenize(node.text, Prism.languages.markdown)\n    let start = 0\n    for (const token of tokens) {\n      const length = getLength(token)\n      const end = start + length\n      if (typeof token !== 'string') {\n        ranges.push({\n          [token.type]: true,\n          anchor: { path, offset: start },\n          focus: { path, offset: end },\n        })\n      }\n      start = end\n    }\n    return ranges\n  }, [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        decorate={decorate}\n        renderLeaf={renderLeaf}\n        placeholder=\"Write some markdown...\"\n      />\n    </Slate>\n  )\n}\nconst Leaf = ({ attributes, children, leaf }) => {\n  return (\n    <span\n      {...attributes}\n      className={css`\n        font-weight: ${leaf.bold && 'bold'};\n        font-style: ${leaf.italic && 'italic'};\n        text-decoration: ${leaf.underlined && 'underline'};\n        ${leaf.title &&\n        css`\n          display: inline-block;\n          font-weight: bold;\n          font-size: 20px;\n          margin: 20px 0 10px 0;\n        `}\n        ${leaf.list &&\n        css`\n          padding-left: 10px;\n          font-size: 20px;\n          line-height: 10px;\n        `}\n        ${leaf.hr &&\n        css`\n          display: block;\n          text-align: center;\n          border-bottom: 2px solid #ddd;\n        `}\n        ${leaf.blockquote &&\n        css`\n          display: inline-block;\n          border-left: 2px solid #ddd;\n          padding-left: 10px;\n          color: #aaa;\n          font-style: italic;\n        `}\n        ${leaf.code &&\n        css`\n          font-family: monospace;\n          background-color: #eee;\n          padding: 3px;\n        `}\n      `}\n    >\n      {children}\n    </span>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Slate is flexible enough to add **decorations** that can format text based on its content. For example, this editor has **Markdown** preview decorations on it, to make it _dead_ simple to make an editor with built-in Markdown previewing.',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: '## Try it out!' }],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: 'Try it out for yourself!' }],\n  },\n]\nexport default MarkdownPreviewExample\n"
  },
  {
    "path": "site/examples/js/markdown-shortcuts.jsx",
    "content": "import React, { useCallback, useMemo } from 'react'\nimport { createEditor, Editor, Node, Point, Range, Transforms } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, ReactEditor, Slate, withReact } from 'slate-react'\n\nconst SHORTCUTS = {\n  '*': 'list-item',\n  '-': 'list-item',\n  '+': 'list-item',\n  '>': 'block-quote',\n  '#': 'heading-one',\n  '##': 'heading-two',\n  '###': 'heading-three',\n  '####': 'heading-four',\n  '#####': 'heading-five',\n  '######': 'heading-six',\n}\nconst MarkdownShortcutsExample = () => {\n  const renderElement = useCallback(props => <Element {...props} />, [])\n  const editor = useMemo(\n    () => withShortcuts(withReact(withHistory(createEditor()))),\n    []\n  )\n  const handleDOMBeforeInput = useCallback(\n    e => {\n      queueMicrotask(() => {\n        const pendingDiffs = ReactEditor.androidPendingDiffs(editor)\n        const scheduleFlush = pendingDiffs?.some(({ diff, path }) => {\n          if (!diff.text.endsWith(' ')) {\n            return false\n          }\n          const { text } = Node.leaf(editor, path)\n          const beforeText = text.slice(0, diff.start) + diff.text.slice(0, -1)\n          if (!(beforeText in SHORTCUTS)) {\n            return\n          }\n          const blockEntry = Editor.above(editor, {\n            at: path,\n            match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n          })\n          if (!blockEntry) {\n            return false\n          }\n          const [, blockPath] = blockEntry\n          return Editor.isStart(editor, Editor.start(editor, path), blockPath)\n        })\n        if (scheduleFlush) {\n          ReactEditor.androidScheduleFlush(editor)\n        }\n      })\n    },\n    [editor]\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        onDOMBeforeInput={handleDOMBeforeInput}\n        renderElement={renderElement}\n        placeholder=\"Write some markdown...\"\n        spellCheck\n        autoFocus\n      />\n    </Slate>\n  )\n}\nconst withShortcuts = editor => {\n  const { deleteBackward, insertText } = editor\n  editor.insertText = text => {\n    const { selection } = editor\n    if (text.endsWith(' ') && selection && Range.isCollapsed(selection)) {\n      const { anchor } = selection\n      const block = Editor.above(editor, {\n        match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      })\n      const path = block ? block[1] : []\n      const start = Editor.start(editor, path)\n      const range = { anchor, focus: start }\n      const beforeText = Editor.string(editor, range) + text.slice(0, -1)\n      const type = SHORTCUTS[beforeText]\n      if (type) {\n        Transforms.select(editor, range)\n        if (!Range.isCollapsed(range)) {\n          Transforms.delete(editor)\n        }\n        const newProperties = {\n          type,\n        }\n        Transforms.setNodes(editor, newProperties, {\n          match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n        })\n        if (type === 'list-item') {\n          const list = {\n            type: 'bulleted-list',\n            children: [],\n          }\n          Transforms.wrapNodes(editor, list, {\n            match: n => Node.isElement(n) && n.type === 'list-item',\n          })\n        }\n        return\n      }\n    }\n    insertText(text)\n  }\n  editor.deleteBackward = (...args) => {\n    const { selection } = editor\n    if (selection && Range.isCollapsed(selection)) {\n      const match = Editor.above(editor, {\n        match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      })\n      if (match) {\n        const [block, path] = match\n        const start = Editor.start(editor, path)\n        if (\n          Node.isElement(block) &&\n          block.type !== 'paragraph' &&\n          Point.equals(selection.anchor, start)\n        ) {\n          const newProperties = {\n            type: 'paragraph',\n          }\n          Transforms.setNodes(editor, newProperties)\n          if (block.type === 'list-item') {\n            Transforms.unwrapNodes(editor, {\n              match: n => Node.isElement(n) && n.type === 'bulleted-list',\n              split: true,\n            })\n          }\n          return\n        }\n      }\n      deleteBackward(...args)\n    }\n  }\n  return editor\n}\nconst Element = ({ attributes, children, element }) => {\n  switch (element.type) {\n    case 'block-quote':\n      return <blockquote {...attributes}>{children}</blockquote>\n    case 'bulleted-list':\n      return <ul {...attributes}>{children}</ul>\n    case 'heading-one':\n      return <h1 {...attributes}>{children}</h1>\n    case 'heading-two':\n      return <h2 {...attributes}>{children}</h2>\n    case 'heading-three':\n      return <h3 {...attributes}>{children}</h3>\n    case 'heading-four':\n      return <h4 {...attributes}>{children}</h4>\n    case 'heading-five':\n      return <h5 {...attributes}>{children}</h5>\n    case 'heading-six':\n      return <h6 {...attributes}>{children}</h6>\n    case 'list-item':\n      return <li {...attributes}>{children}</li>\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'The editor gives you full control over the logic you can add. For example, it\\'s fairly common to want to add markdown-like shortcuts to editors. So that, when you start a line with \"> \" you get a blockquote that looks like this:',\n      },\n    ],\n  },\n  {\n    type: 'block-quote',\n    children: [{ text: 'A wise quote.' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Order when you start a line with \"## \" you get a level-two heading, like this:',\n      },\n    ],\n  },\n  {\n    type: 'heading-two',\n    children: [{ text: 'Try it out!' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Try it out for yourself! Try starting a new line with \">\", \"-\", or \"#\"s.',\n      },\n    ],\n  },\n]\nexport default MarkdownShortcutsExample\n"
  },
  {
    "path": "site/examples/js/mentions.jsx",
    "content": "import React, {\n  Fragment,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport { Editor, Transforms, Range, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  Slate,\n  useFocused,\n  useSelected,\n  withReact,\n} from 'slate-react'\nimport { Portal } from './components'\nimport { IS_MAC } from './utils/environment'\n\nconst MentionExample = () => {\n  const ref = useRef(null)\n  const [target, setTarget] = useState(null)\n  const [index, setIndex] = useState(0)\n  const [search, setSearch] = useState('')\n  const renderElement = useCallback(props => <Element {...props} />, [])\n  const renderLeaf = useCallback(props => <Leaf {...props} />, [])\n  const editor = useMemo(\n    () => withMentions(withReact(withHistory(createEditor()))),\n    []\n  )\n  const chars = CHARACTERS.filter(c =>\n    c.toLowerCase().startsWith(search.toLowerCase())\n  ).slice(0, 10)\n  const onKeyDown = useCallback(\n    event => {\n      if (target && chars.length > 0) {\n        switch (event.key) {\n          case 'ArrowDown':\n            event.preventDefault()\n            const prevIndex = index >= chars.length - 1 ? 0 : index + 1\n            setIndex(prevIndex)\n            break\n          case 'ArrowUp':\n            event.preventDefault()\n            const nextIndex = index <= 0 ? chars.length - 1 : index - 1\n            setIndex(nextIndex)\n            break\n          case 'Tab':\n          case 'Enter':\n            event.preventDefault()\n            Transforms.select(editor, target)\n            insertMention(editor, chars[index])\n            setTarget(null)\n            break\n          case 'Escape':\n            event.preventDefault()\n            setTarget(null)\n            break\n        }\n      }\n    },\n    [chars, editor, index, target]\n  )\n  useEffect(() => {\n    if (target && chars.length > 0 && ref.current) {\n      const el = ref.current\n      const domRange = ReactEditor.toDOMRange(editor, target)\n      const rect = domRange.getBoundingClientRect()\n      el.style.top = `${rect.top + window.pageYOffset + 24}px`\n      el.style.left = `${rect.left + window.pageXOffset}px`\n    }\n  }, [chars.length, editor, index, search, target])\n  return (\n    <Slate\n      editor={editor}\n      initialValue={initialValue}\n      onChange={() => {\n        const { selection } = editor\n        if (selection && Range.isCollapsed(selection)) {\n          const [start] = Range.edges(selection)\n          const wordBefore = Editor.before(editor, start, { unit: 'word' })\n          const before = wordBefore && Editor.before(editor, wordBefore)\n          const beforeRange = before && Editor.range(editor, before, start)\n          const beforeText = beforeRange && Editor.string(editor, beforeRange)\n          const beforeMatch = beforeText && beforeText.match(/^@(\\w+)$/)\n          const after = Editor.after(editor, start)\n          const afterRange = Editor.range(editor, start, after)\n          const afterText = Editor.string(editor, afterRange)\n          const afterMatch = afterText.match(/^(\\s|$)/)\n          if (beforeMatch && afterMatch) {\n            setTarget(beforeRange)\n            setSearch(beforeMatch[1])\n            setIndex(0)\n            return\n          }\n        }\n        setTarget(null)\n      }}\n    >\n      <Editable\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        onKeyDown={onKeyDown}\n        placeholder=\"Enter some text...\"\n      />\n      {target && chars.length > 0 && (\n        <Portal>\n          <div\n            ref={ref}\n            style={{\n              top: '-9999px',\n              left: '-9999px',\n              position: 'absolute',\n              zIndex: 1,\n              padding: '3px',\n              background: 'white',\n              borderRadius: '4px',\n              boxShadow: '0 1px 5px rgba(0,0,0,.2)',\n            }}\n            data-cy=\"mentions-portal\"\n          >\n            {chars.map((char, i) => (\n              <div\n                key={char}\n                onClick={e => {\n                  Transforms.select(editor, target)\n                  insertMention(editor, char)\n                  setTarget(null)\n                }}\n                style={{\n                  padding: '1px 3px',\n                  borderRadius: '3px',\n                  cursor: 'pointer',\n                  background: i === index ? '#B4D5FF' : 'transparent',\n                }}\n              >\n                {char}\n              </div>\n            ))}\n          </div>\n        </Portal>\n      )}\n    </Slate>\n  )\n}\nconst withMentions = editor => {\n  const { isInline, isVoid, markableVoid } = editor\n  editor.isInline = element => {\n    return element.type === 'mention' ? true : isInline(element)\n  }\n  editor.isVoid = element => {\n    return element.type === 'mention' ? true : isVoid(element)\n  }\n  editor.markableVoid = element => {\n    return element.type === 'mention' || markableVoid(element)\n  }\n  return editor\n}\nconst insertMention = (editor, character) => {\n  const mention = {\n    type: 'mention',\n    character,\n    children: [{ text: '' }],\n  }\n  Transforms.insertNodes(editor, mention)\n  Transforms.move(editor)\n}\n// Borrow Leaf renderer from the Rich Text example.\n// In a real project you would get this via `withRichText(editor)` or similar.\nconst Leaf = ({ attributes, children, leaf }) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n  if (leaf.code) {\n    children = <code>{children}</code>\n  }\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n  return <span {...attributes}>{children}</span>\n}\nconst Element = props => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'mention':\n      return <Mention {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst Mention = ({ attributes, children, element }) => {\n  const selected = useSelected()\n  const focused = useFocused()\n  const style = {\n    padding: '3px 3px 2px',\n    margin: '0 1px',\n    verticalAlign: 'baseline',\n    display: 'inline-block',\n    borderRadius: '4px',\n    backgroundColor: '#eee',\n    fontSize: '0.9em',\n    boxShadow: selected && focused ? '0 0 0 2px #B4D5FF' : 'none',\n  }\n  // See if our empty text child has any styling marks applied and apply those\n  if (element.children[0].bold) {\n    style.fontWeight = 'bold'\n  }\n  if (element.children[0].italic) {\n    style.fontStyle = 'italic'\n  }\n  return (\n    <span\n      {...attributes}\n      contentEditable={false}\n      data-cy={`mention-${element.character.replace(' ', '-')}`}\n      style={style}\n    >\n      {/* Prevent Chromium from interrupting IME when moving the cursor */}\n      {/* 1. span + inline-block 2. div + contenteditable=false */}\n      <div contentEditable={false}>\n        {IS_MAC ? (\n          // Mac OS IME https://github.com/ianstormtaylor/slate/issues/3490\n          <Fragment>\n            {children}@{element.character}\n          </Fragment>\n        ) : (\n          // Others like Android https://github.com/ianstormtaylor/slate/pull/5360\n          <Fragment>\n            @{element.character}\n            {children}\n          </Fragment>\n        )}\n      </div>\n    </span>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows how you might implement a simple ',\n      },\n      {\n        text: '@-mentions',\n        bold: true,\n      },\n      {\n        text: ' feature that lets users autocomplete mentioning a user by their username. Which, in this case means Star Wars characters. The ',\n      },\n      {\n        text: 'mentions',\n        bold: true,\n      },\n      {\n        text: ' are rendered as ',\n      },\n      {\n        text: 'void inline elements',\n        code: true,\n      },\n      {\n        text: ' inside the document.',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'Try mentioning characters, like ' },\n      {\n        type: 'mention',\n        character: 'R2-D2',\n        children: [{ text: '', bold: true }],\n      },\n      { text: ' or ' },\n      {\n        type: 'mention',\n        character: 'Mace Windu',\n        children: [{ text: '' }],\n      },\n      { text: '!' },\n    ],\n  },\n]\nconst CHARACTERS = [\n  'Aayla Secura',\n  'Adi Gallia',\n  'Admiral Dodd Rancit',\n  'Admiral Firmus Piett',\n  'Admiral Gial Ackbar',\n  'Admiral Ozzel',\n  'Admiral Raddus',\n  'Admiral Terrinald Screed',\n  'Admiral Trench',\n  'Admiral U.O. Statura',\n  'Agen Kolar',\n  'Agent Kallus',\n  'Aiolin and Morit Astarte',\n  'Aks Moe',\n  'Almec',\n  'Alton Kastle',\n  'Amee',\n  'AP-5',\n  'Armitage Hux',\n  'Artoo',\n  'Arvel Crynyd',\n  'Asajj Ventress',\n  'Aurra Sing',\n  'AZI-3',\n  'Bala-Tik',\n  'Barada',\n  'Bargwill Tomder',\n  'Baron Papanoida',\n  'Barriss Offee',\n  'Baze Malbus',\n  'Bazine Netal',\n  'BB-8',\n  'BB-9E',\n  'Ben Quadinaros',\n  'Berch Teller',\n  'Beru Lars',\n  'Bib Fortuna',\n  'Biggs Darklighter',\n  'Black Krrsantan',\n  'Bo-Katan Kryze',\n  'Boba Fett',\n  'Bobbajo',\n  'Bodhi Rook',\n  'Borvo the Hutt',\n  'Boss Nass',\n  'Bossk',\n  'Breha Antilles-Organa',\n  'Bren Derlin',\n  'Brendol Hux',\n  'BT-1',\n  'C-3PO',\n  'C1-10P',\n  'Cad Bane',\n  'Caluan Ematt',\n  'Captain Gregor',\n  'Captain Phasma',\n  'Captain Quarsh Panaka',\n  'Captain Rex',\n  'Carlist Rieekan',\n  'Casca Panzoro',\n  'Cassian Andor',\n  'Cassio Tagge',\n  'Cham Syndulla',\n  'Che Amanwe Papanoida',\n  'Chewbacca',\n  'Chi Eekway Papanoida',\n  'Chief Chirpa',\n  'Chirrut Îmwe',\n  'Ciena Ree',\n  'Cin Drallig',\n  'Clegg Holdfast',\n  'Cliegg Lars',\n  'Coleman Kcaj',\n  'Coleman Trebor',\n  'Colonel Kaplan',\n  'Commander Bly',\n  'Commander Cody (CC-2224)',\n  'Commander Fil (CC-3714)',\n  'Commander Fox',\n  'Commander Gree',\n  'Commander Jet',\n  'Commander Wolffe',\n  'Conan Antonio Motti',\n  'Conder Kyl',\n  'Constable Zuvio',\n  'Cordé',\n  'Cpatain Typho',\n  'Crix Madine',\n  'Cut Lawquane',\n  'Dak Ralter',\n  'Dapp',\n  'Darth Bane',\n  'Darth Maul',\n  'Darth Tyranus',\n  'Daultay Dofine',\n  'Del Meeko',\n  'Delian Mors',\n  'Dengar',\n  'Depa Billaba',\n  'Derek Klivian',\n  'Dexter Jettster',\n  'Dineé Ellberger',\n  'DJ',\n  'Doctor Aphra',\n  'Doctor Evazan',\n  'Dogma',\n  'Dormé',\n  'Dr. Cylo',\n  'Droidbait',\n  'Droopy McCool',\n  'Dryden Vos',\n  'Dud Bolt',\n  'Ebe E. Endocott',\n  'Echuu Shen-Jon',\n  'Eeth Koth',\n  'Eighth Brother',\n  'Eirtaé',\n  'Eli Vanto',\n  'Ellé',\n  'Ello Asty',\n  'Embo',\n  'Eneb Ray',\n  'Enfys Nest',\n  'EV-9D9',\n  'Evaan Verlaine',\n  'Even Piell',\n  'Ezra Bridger',\n  'Faro Argyus',\n  'Feral',\n  'Fifth Brother',\n  'Finis Valorum',\n  'Finn',\n  'Fives',\n  'FN-1824',\n  'FN-2003',\n  'Fodesinbeed Annodue',\n  'Fulcrum',\n  'FX-7',\n  'GA-97',\n  'Galen Erso',\n  'Gallius Rax',\n  'Garazeb \"Zeb\" Orrelios',\n  'Gardulla the Hutt',\n  'Garrick Versio',\n  'Garven Dreis',\n  'Gavyn Sykes',\n  'Gideon Hask',\n  'Gizor Dellso',\n  'Gonk droid',\n  'Grand Inquisitor',\n  'Greeata Jendowanian',\n  'Greedo',\n  'Greer Sonnel',\n  'Grievous',\n  'Grummgar',\n  'Gungi',\n  'Hammerhead',\n  'Han Solo',\n  'Harter Kalonia',\n  'Has Obbit',\n  'Hera Syndulla',\n  'Hevy',\n  'Hondo Ohnaka',\n  'Huyang',\n  'Iden Versio',\n  'IG-88',\n  'Ima-Gun Di',\n  'Inquisitors',\n  'Inspector Thanoth',\n  'Jabba',\n  'Jacen Syndulla',\n  'Jan Dodonna',\n  'Jango Fett',\n  'Janus Greejatus',\n  'Jar Jar Binks',\n  'Jas Emari',\n  'Jaxxon',\n  'Jek Tono Porkins',\n  'Jeremoch Colton',\n  'Jira',\n  'Jobal Naberrie',\n  'Jocasta Nu',\n  'Joclad Danva',\n  'Joh Yowza',\n  'Jom Barell',\n  'Joph Seastriker',\n  'Jova Tarkin',\n  'Jubnuk',\n  'Jyn Erso',\n  'K-2SO',\n  'Kanan Jarrus',\n  'Karbin',\n  'Karina the Great',\n  'Kes Dameron',\n  'Ketsu Onyo',\n  'Ki-Adi-Mundi',\n  'King Katuunko',\n  'Kit Fisto',\n  'Kitster Banai',\n  'Klaatu',\n  'Klik-Klak',\n  'Korr Sella',\n  'Kylo Ren',\n  'L3-37',\n  'Lama Su',\n  'Lando Calrissian',\n  'Lanever Villecham',\n  'Leia Organa',\n  'Letta Turmond',\n  'Lieutenant Kaydel Ko Connix',\n  'Lieutenant Thire',\n  'Lobot',\n  'Logray',\n  'Lok Durd',\n  'Longo Two-Guns',\n  'Lor San Tekka',\n  'Lorth Needa',\n  'Lott Dod',\n  'Luke Skywalker',\n  'Lumat',\n  'Luminara Unduli',\n  'Lux Bonteri',\n  'Lyn Me',\n  'Lyra Erso',\n  'Mace Windu',\n  'Malakili',\n  'Mama the Hutt',\n  'Mars Guo',\n  'Mas Amedda',\n  'Mawhonic',\n  'Max Rebo',\n  'Maximilian Veers',\n  'Maz Kanata',\n  'ME-8D9',\n  'Meena Tills',\n  'Mercurial Swift',\n  'Mina Bonteri',\n  'Miraj Scintel',\n  'Mister Bones',\n  'Mod Terrik',\n  'Moden Canady',\n  'Mon Mothma',\n  'Moradmin Bast',\n  'Moralo Eval',\n  'Morley',\n  'Mother Talzin',\n  'Nahdar Vebb',\n  'Nahdonnis Praji',\n  'Nien Nunb',\n  'Niima the Hutt',\n  'Nines',\n  'Norra Wexley',\n  'Nute Gunray',\n  'Nuvo Vindi',\n  'Obi-Wan Kenobi',\n  'Odd Ball',\n  'Ody Mandrell',\n  'Omi',\n  'Onaconda Farr',\n  'Oola',\n  'OOM-9',\n  'Oppo Rancisis',\n  'Orn Free Taa',\n  'Oro Dassyne',\n  'Orrimarko',\n  'Osi Sobeck',\n  'Owen Lars',\n  'Pablo-Jill',\n  'Padmé Amidala',\n  'Pagetti Rook',\n  'Paige Tico',\n  'Paploo',\n  'Petty Officer Thanisson',\n  'Pharl McQuarrie',\n  'Plo Koon',\n  'Po Nudo',\n  'Poe Dameron',\n  'Poggle the Lesser',\n  'Pong Krell',\n  'Pooja Naberrie',\n  'PZ-4CO',\n  'Quarrie',\n  'Quay Tolsite',\n  'Queen Apailana',\n  'Queen Jamillia',\n  'Queen Neeyutnee',\n  'Qui-Gon Jinn',\n  'Quiggold',\n  'Quinlan Vos',\n  'R2-D2',\n  'R2-KT',\n  'R3-S6',\n  'R4-P17',\n  'R5-D4',\n  'RA-7',\n  'Rabé',\n  'Rako Hardeen',\n  'Ransolm Casterfo',\n  'Rappertunie',\n  'Ratts Tyerell',\n  'Raymus Antilles',\n  'Ree-Yees',\n  'Reeve Panzoro',\n  'Rey',\n  'Ric Olié',\n  'Riff Tamson',\n  'Riley',\n  'Rinnriyin Di',\n  'Rio Durant',\n  'Rogue Squadron',\n  'Romba',\n  'Roos Tarpals',\n  'Rose Tico',\n  'Rotta the Hutt',\n  'Rukh',\n  'Rune Haako',\n  'Rush Clovis',\n  'Ruwee Naberrie',\n  'Ryoo Naberrie',\n  'Sabé',\n  'Sabine Wren',\n  'Saché',\n  'Saelt-Marae',\n  'Saesee Tiin',\n  'Salacious B. Crumb',\n  'San Hill',\n  'Sana Starros',\n  'Sarco Plank',\n  'Sarkli',\n  'Satine Kryze',\n  'Savage Opress',\n  'Sebulba',\n  'Senator Organa',\n  'Sergeant Kreel',\n  'Seventh Sister',\n  'Shaak Ti',\n  'Shara Bey',\n  'Shmi Skywalker',\n  'Shu Mai',\n  'Sidon Ithano',\n  'Sifo-Dyas',\n  'Sim Aloo',\n  'Siniir Rath Velus',\n  'Sio Bibble',\n  'Sixth Brother',\n  'Slowen Lo',\n  'Sly Moore',\n  'Snaggletooth',\n  'Snap Wexley',\n  'Snoke',\n  'Sola Naberrie',\n  'Sora Bulq',\n  'Strono Tuggs',\n  'Sy Snootles',\n  'Tallissan Lintra',\n  'Tarfful',\n  'Tasu Leech',\n  'Taun We',\n  'TC-14',\n  'Tee Watt Kaa',\n  'Teebo',\n  'Teedo',\n  'Teemto Pagalies',\n  'Temiri Blagg',\n  'Tessek',\n  'Tey How',\n  'Thane Kyrell',\n  'The Bendu',\n  'The Smuggler',\n  'Thrawn',\n  'Tiaan Jerjerrod',\n  'Tion Medon',\n  'Tobias Beckett',\n  'Tulon Voidgazer',\n  'Tup',\n  'U9-C4',\n  'Unkar Plutt',\n  'Val Beckett',\n  'Vanden Willard',\n  'Vice Admiral Amilyn Holdo',\n  'Vober Dand',\n  'WAC-47',\n  'Wag Too',\n  'Wald',\n  'Walrus Man',\n  'Warok',\n  'Wat Tambor',\n  'Watto',\n  'Wedge Antilles',\n  'Wes Janson',\n  'Wicket W. Warrick',\n  'Wilhuff Tarkin',\n  'Wollivan',\n  'Wuher',\n  'Wullf Yularen',\n  'Xamuel Lennox',\n  'Yaddle',\n  'Yarael Poof',\n  'Yoda',\n  'Zam Wesell',\n  'Zev Senesca',\n  'Ziro the Hutt',\n  'Zuckuss',\n]\nexport default MentionExample\n"
  },
  {
    "path": "site/examples/js/paste-html.jsx",
    "content": "import { css } from '@emotion/css'\nimport React, { useCallback, useMemo } from 'react'\nimport { Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { jsx } from 'slate-hyperscript'\nimport {\n  Editable,\n  Slate,\n  useFocused,\n  useSelected,\n  withReact,\n} from 'slate-react'\n\nconst ELEMENT_TAGS = {\n  A: el => ({ type: 'link', url: el.getAttribute('href') }),\n  BLOCKQUOTE: () => ({ type: 'block-quote' }),\n  H1: () => ({ type: 'heading-one' }),\n  H2: () => ({ type: 'heading-two' }),\n  H3: () => ({ type: 'heading-three' }),\n  H4: () => ({ type: 'heading-four' }),\n  H5: () => ({ type: 'heading-five' }),\n  H6: () => ({ type: 'heading-six' }),\n  IMG: el => ({ type: 'image', url: el.getAttribute('src') }),\n  LI: () => ({ type: 'list-item' }),\n  OL: () => ({ type: 'numbered-list' }),\n  P: () => ({ type: 'paragraph' }),\n  PRE: () => ({ type: 'code-block' }),\n  UL: () => ({ type: 'bulleted-list' }),\n}\nconst TEXT_TAGS = {\n  CODE: () => ({ code: true }),\n  DEL: () => ({ strikethrough: true }),\n  EM: () => ({ italic: true }),\n  I: () => ({ italic: true }),\n  S: () => ({ strikethrough: true }),\n  STRONG: () => ({ bold: true }),\n  U: () => ({ underline: true }),\n}\nexport const deserialize = el => {\n  if (el.nodeType === 3) {\n    return el.textContent\n  } else if (el.nodeType !== 1) {\n    return null\n  } else if (el.nodeName === 'BR') {\n    return '\\n'\n  }\n  const { nodeName } = el\n  let parent = el\n  if (\n    nodeName === 'PRE' &&\n    el.childNodes[0] &&\n    el.childNodes[0].nodeName === 'CODE'\n  ) {\n    parent = el.childNodes[0]\n  }\n  let children = Array.from(parent.childNodes).map(deserialize).flat()\n  if (children.length === 0) {\n    children = [{ text: '' }]\n  }\n  if (el.nodeName === 'BODY') {\n    return jsx('fragment', {}, children)\n  }\n  if (ELEMENT_TAGS[nodeName]) {\n    const attrs = ELEMENT_TAGS[nodeName](el)\n    return jsx('element', attrs, children)\n  }\n  if (TEXT_TAGS[nodeName]) {\n    const attrs = TEXT_TAGS[nodeName]()\n    return children.map(child => jsx('text', attrs, child))\n  }\n  return children\n}\nconst PasteHtmlExample = () => {\n  const renderElement = useCallback(props => <Element {...props} />, [])\n  const renderLeaf = useCallback(props => <Leaf {...props} />, [])\n  const editor = useMemo(\n    () => withHtml(withReact(withHistory(createEditor()))),\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        placeholder=\"Paste in some HTML...\"\n      />\n    </Slate>\n  )\n}\nconst withHtml = editor => {\n  const { insertData, isInline, isVoid } = editor\n  editor.isInline = element => {\n    return element.type === 'link' ? true : isInline(element)\n  }\n  editor.isVoid = element => {\n    return element.type === 'image' ? true : isVoid(element)\n  }\n  editor.insertData = data => {\n    const html = data.getData('text/html')\n    if (html) {\n      const parsed = new DOMParser().parseFromString(html, 'text/html')\n      const fragment = deserialize(parsed.body)\n      Transforms.insertFragment(editor, fragment)\n      return\n    }\n    insertData(data)\n  }\n  return editor\n}\nconst Element = props => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    default:\n      return <p {...attributes}>{children}</p>\n    case 'block-quote':\n      return <blockquote {...attributes}>{children}</blockquote>\n    case 'code-block':\n      return (\n        <pre>\n          <code {...attributes}>{children}</code>\n        </pre>\n      )\n    case 'bulleted-list':\n      return <ul {...attributes}>{children}</ul>\n    case 'heading-one':\n      return <h1 {...attributes}>{children}</h1>\n    case 'heading-two':\n      return <h2 {...attributes}>{children}</h2>\n    case 'heading-three':\n      return <h3 {...attributes}>{children}</h3>\n    case 'heading-four':\n      return <h4 {...attributes}>{children}</h4>\n    case 'heading-five':\n      return <h5 {...attributes}>{children}</h5>\n    case 'heading-six':\n      return <h6 {...attributes}>{children}</h6>\n    case 'list-item':\n      return <li {...attributes}>{children}</li>\n    case 'numbered-list':\n      return <ol {...attributes}>{children}</ol>\n    case 'link':\n      return (\n        <SafeLink href={element.url} attributes={attributes}>\n          {children}\n        </SafeLink>\n      )\n    case 'image':\n      return <ImageElement {...props} />\n  }\n}\nconst allowedSchemes = ['http:', 'https:', 'mailto:', 'tel:']\nconst SafeLink = ({ children, href, attributes }) => {\n  const safeHref = useMemo(() => {\n    let parsedUrl = null\n    try {\n      parsedUrl = new URL(href)\n      // eslint-disable-next-line no-empty\n    } catch {}\n    if (parsedUrl && allowedSchemes.includes(parsedUrl.protocol)) {\n      return parsedUrl.href\n    }\n    return 'about:blank'\n  }, [href])\n  return (\n    <a href={safeHref} {...attributes}>\n      {children}\n    </a>\n  )\n}\nconst ImageElement = ({ attributes, children, element }) => {\n  const selected = useSelected()\n  const focused = useFocused()\n  return (\n    <div {...attributes}>\n      {children}\n      <img\n        src={element.url}\n        className={css`\n          display: block;\n          max-width: 100%;\n          max-height: 20em;\n          box-shadow: ${selected && focused ? '0 0 0 2px blue;' : 'none'};\n        `}\n      />\n    </div>\n  )\n}\nconst Leaf = ({ attributes, children, leaf }) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n  if (leaf.code) {\n    children = <code>{children}</code>\n  }\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n  if (leaf.strikethrough) {\n    children = <del>{children}</del>\n  }\n  return <span {...attributes}>{children}</span>\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: \"By default, pasting content into a Slate editor will use the clipboard's \",\n      },\n      { text: \"'text/plain'\", code: true },\n      {\n        text: \" data. That's okay for some use cases, but sometimes you want users to be able to paste in content and have it maintain its formatting. To do this, your editor needs to handle \",\n      },\n      { text: \"'text/html'\", code: true },\n      { text: ' data. ' },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: 'This is an example of doing exactly that!' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: \"Try it out for yourself! Copy and paste some rendered HTML rich text content (not the source code) from another site into this editor and it's formatting should be preserved.\",\n      },\n    ],\n  },\n]\nexport default PasteHtmlExample\n"
  },
  {
    "path": "site/examples/js/plaintext.jsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\nimport { withHistory } from 'slate-history'\n\nconst PlainTextExample = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable placeholder=\"Enter some plain text...\" />\n    </Slate>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'This is editable plain text, just like a <textarea>!' },\n    ],\n  },\n]\nexport default PlainTextExample\n"
  },
  {
    "path": "site/examples/js/read-only.jsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\n\nconst ReadOnlyExample = () => {\n  const editor = useMemo(() => withReact(createEditor()), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable readOnly placeholder=\"Enter some plain text...\" />\n    </Slate>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows what happens when the Editor is set to readOnly, it is not editable',\n      },\n    ],\n  },\n]\nexport default ReadOnlyExample\n"
  },
  {
    "path": "site/examples/js/richtext.jsx",
    "content": "import isHotkey from 'is-hotkey'\nimport React, { useCallback, useMemo } from 'react'\nimport { Editor, Node, Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, useSlate, withReact } from 'slate-react'\nimport { Button, Icon, Toolbar } from './components'\n\nconst HOTKEYS = {\n  'mod+b': 'bold',\n  'mod+i': 'italic',\n  'mod+u': 'underline',\n  'mod+`': 'code',\n}\nconst LIST_TYPES = ['numbered-list', 'bulleted-list']\nconst TEXT_ALIGN_TYPES = ['left', 'center', 'right', 'justify']\nconst RichTextExample = () => {\n  const renderElement = useCallback(props => <Element {...props} />, [])\n  const renderLeaf = useCallback(props => <Leaf {...props} />, [])\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <MarkButton format=\"bold\" icon=\"format_bold\" />\n        <MarkButton format=\"italic\" icon=\"format_italic\" />\n        <MarkButton format=\"underline\" icon=\"format_underlined\" />\n        <MarkButton format=\"code\" icon=\"code\" />\n        <BlockButton format=\"heading-one\" icon=\"looks_one\" />\n        <BlockButton format=\"heading-two\" icon=\"looks_two\" />\n        <BlockButton format=\"block-quote\" icon=\"format_quote\" />\n        <BlockButton format=\"numbered-list\" icon=\"format_list_numbered\" />\n        <BlockButton format=\"bulleted-list\" icon=\"format_list_bulleted\" />\n        <BlockButton format=\"left\" icon=\"format_align_left\" />\n        <BlockButton format=\"center\" icon=\"format_align_center\" />\n        <BlockButton format=\"right\" icon=\"format_align_right\" />\n        <BlockButton format=\"justify\" icon=\"format_align_justify\" />\n      </Toolbar>\n      <Editable\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        placeholder=\"Enter some rich text…\"\n        spellCheck\n        autoFocus\n        onKeyDown={event => {\n          for (const hotkey in HOTKEYS) {\n            if (isHotkey(hotkey, event)) {\n              event.preventDefault()\n              const mark = HOTKEYS[hotkey]\n              toggleMark(editor, mark)\n            }\n          }\n        }}\n      />\n    </Slate>\n  )\n}\nconst toggleBlock = (editor, format) => {\n  const isActive = isBlockActive(\n    editor,\n    format,\n    isAlignType(format) ? 'align' : 'type'\n  )\n  const isList = isListType(format)\n  Transforms.unwrapNodes(editor, {\n    match: n => Node.isElement(n) && isListType(n.type) && !isAlignType(format),\n    split: true,\n  })\n  let newProperties\n  if (isAlignType(format)) {\n    newProperties = {\n      align: isActive ? undefined : format,\n    }\n  } else {\n    newProperties = {\n      type: isActive ? 'paragraph' : isList ? 'list-item' : format,\n    }\n  }\n  Transforms.setNodes(editor, newProperties)\n  if (!isActive && isList) {\n    const block = { type: format, children: [] }\n    Transforms.wrapNodes(editor, block)\n  }\n}\nconst toggleMark = (editor, format) => {\n  const isActive = isMarkActive(editor, format)\n  if (isActive) {\n    Editor.removeMark(editor, format)\n  } else {\n    Editor.addMark(editor, format, true)\n  }\n}\nconst isBlockActive = (editor, format, blockType = 'type') => {\n  const { selection } = editor\n  if (!selection) return false\n  const [match] = Array.from(\n    Editor.nodes(editor, {\n      at: Editor.unhangRange(editor, selection),\n      match: n => {\n        if (Node.isElement(n)) {\n          if (blockType === 'align' && isAlignElement(n)) {\n            return n.align === format\n          }\n          return n.type === format\n        }\n        return false\n      },\n    })\n  )\n  return !!match\n}\nconst isMarkActive = (editor, format) => {\n  const marks = Editor.marks(editor)\n  return marks ? marks[format] === true : false\n}\nconst Element = ({ attributes, children, element }) => {\n  const style = {}\n  if (isAlignElement(element)) {\n    style.textAlign = element.align\n  }\n  switch (element.type) {\n    case 'block-quote':\n      return (\n        <blockquote style={style} {...attributes}>\n          {children}\n        </blockquote>\n      )\n    case 'bulleted-list':\n      return (\n        <ul style={style} {...attributes}>\n          {children}\n        </ul>\n      )\n    case 'heading-one':\n      return (\n        <h1 style={style} {...attributes}>\n          {children}\n        </h1>\n      )\n    case 'heading-two':\n      return (\n        <h2 style={style} {...attributes}>\n          {children}\n        </h2>\n      )\n    case 'list-item':\n      return (\n        <li style={style} {...attributes}>\n          {children}\n        </li>\n      )\n    case 'numbered-list':\n      return (\n        <ol style={style} {...attributes}>\n          {children}\n        </ol>\n      )\n    default:\n      return (\n        <p style={style} {...attributes}>\n          {children}\n        </p>\n      )\n  }\n}\nconst Leaf = ({ attributes, children, leaf }) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n  if (leaf.code) {\n    children = <code>{children}</code>\n  }\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n  return <span {...attributes}>{children}</span>\n}\nconst BlockButton = ({ format, icon }) => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isBlockActive(\n        editor,\n        format,\n        isAlignType(format) ? 'align' : 'type'\n      )}\n      onPointerDown={event => event.preventDefault()}\n      onClick={() => toggleBlock(editor, format)}\n      data-test-id={`block-button-${format}`}\n    >\n      <Icon>{icon}</Icon>\n    </Button>\n  )\n}\nconst MarkButton = ({ format, icon }) => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isMarkActive(editor, format)}\n      onPointerDown={event => event.preventDefault()}\n      onClick={() => toggleMark(editor, format)}\n    >\n      <Icon>{icon}</Icon>\n    </Button>\n  )\n}\nconst isAlignType = format => {\n  return TEXT_ALIGN_TYPES.includes(format)\n}\nconst isListType = format => {\n  return LIST_TYPES.includes(format)\n}\nconst isAlignElement = element => {\n  return 'align' in element\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'This is editable ' },\n      { text: 'rich', bold: true },\n      { text: ' text, ' },\n      { text: 'much', italic: true },\n      { text: ' better than a ' },\n      { text: '<textarea>', code: true },\n      { text: '!' },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: \"Since it's rich text, you can do things like turn a selection of text \",\n      },\n      { text: 'bold', bold: true },\n      {\n        text: ', or add a semantically rendered block quote in the middle of the page, like this:',\n      },\n    ],\n  },\n  {\n    type: 'block-quote',\n    children: [{ text: 'A wise quote.' }],\n  },\n  {\n    type: 'paragraph',\n    align: 'center',\n    children: [{ text: 'Try it out for yourself!' }],\n  },\n]\nexport default RichTextExample\n"
  },
  {
    "path": "site/examples/js/scroll-into-view.jsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\nimport { withHistory } from 'slate-history'\nimport { css } from '@emotion/css'\nimport range from 'lodash/range'\n/**\n * This is an example we can use to test the scrollIntoView functionality in\n * `Editable`. Keeping it here for now as we may need it to make sure it is\n * working properly after adding it.\n *\n * If all is good, we can remove this example.\n *\n * Note:\n * The example needs to be added to `[example].tsx` before it can be used.\n */\nconst ScrollIntoViewExample = () => {\n  return (\n    <div\n      className={css`\n        height: 320px;\n        overflow-y: scroll;\n      `}\n    >\n      <div\n        className={css`\n          height: 160px;\n          background: #e0e0e0;\n        `}\n      />\n      <div\n        className={css`\n          height: 320px;\n          overflow-y: scroll;\n        `}\n      >\n        <PlainTextEditor />\n      </div>\n      <div\n        className={css`\n          height: 160px;\n          background: #e0e0e0;\n        `}\n      />\n    </div>\n  )\n}\nconst PlainTextEditor = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable placeholder=\"Enter some plain text...\" />\n    </Slate>\n  )\n}\nconst initialValue = range(5).map(() => ({\n  type: 'paragraph',\n  children: [\n    {\n      text: `There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.`,\n    },\n  ],\n}))\nexport default ScrollIntoViewExample\n"
  },
  {
    "path": "site/examples/js/search-highlighting.jsx",
    "content": "import { css } from '@emotion/css'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { Node, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, withReact } from 'slate-react'\nimport { Icon, Toolbar } from './components'\n\nconst SearchHighlightingExample = () => {\n  const [search, setSearch] = useState('')\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  const decorate = useCallback(\n    ([node, path]) => {\n      const ranges = []\n      if (search && Node.isElement(node) && node.children.every(Node.isText)) {\n        const texts = node.children.map(it => it.text)\n        const str = texts.join('')\n        const length = search.length\n        let start = str.indexOf(search)\n        let index = 0\n        let iterated = 0\n        while (start !== -1) {\n          // Skip already iterated strings\n          while (\n            index < texts.length &&\n            start >= iterated + texts[index].length\n          ) {\n            iterated = iterated + texts[index].length\n            index++\n          }\n          // Find the index of array and relative position\n          let offset = start - iterated\n          let remaining = length\n          while (index < texts.length && remaining > 0) {\n            const currentText = texts[index]\n            const currentPath = [...path, index]\n            const taken = Math.min(remaining, currentText.length - offset)\n            ranges.push({\n              anchor: { path: currentPath, offset },\n              focus: { path: currentPath, offset: offset + taken },\n              highlight: true,\n            })\n            remaining = remaining - taken\n            if (remaining > 0) {\n              iterated = iterated + currentText.length\n              // Next block will be indexed from 0\n              offset = 0\n              index++\n            }\n          }\n          // Looking for next search block\n          start = str.indexOf(search, start + search.length)\n        }\n      }\n      return ranges\n    },\n    [search]\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <div\n          className={css`\n            position: relative;\n          `}\n        >\n          <Icon\n            className={css`\n              position: absolute;\n              top: 0.3em;\n              left: 0.4em;\n              color: #ccc;\n            `}\n          >\n            search\n          </Icon>\n          <input\n            type=\"search\"\n            placeholder=\"Search the text...\"\n            onChange={e => setSearch(e.target.value)}\n            className={css`\n              padding-left: 2.5em !important;\n              width: 100%;\n            `}\n          />\n        </div>\n      </Toolbar>\n      <Editable decorate={decorate} renderLeaf={props => <Leaf {...props} />} />\n    </Slate>\n  )\n}\nconst Leaf = ({ attributes, children, leaf }) => {\n  const highlightLeaf = leaf\n  return (\n    <span\n      {...attributes}\n      {...(highlightLeaf.highlight && { 'data-cy': 'search-highlighted' })}\n      className={css`\n        font-weight: ${highlightLeaf.bold && 'bold'};\n        background-color: ${highlightLeaf.highlight && '#ffeeba'};\n      `}\n    >\n      {children}\n    </span>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This is editable text that you can search. As you search, it looks for matching strings of text, and adds ',\n      },\n      { text: 'decorations', bold: true },\n      { text: ' to them in realtime.' },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'Try it out for yourself by typing in the search box above!' },\n    ],\n  },\n]\nexport default SearchHighlightingExample\n"
  },
  {
    "path": "site/examples/js/shadow-dom.jsx",
    "content": "import React, { useMemo, useRef, useEffect } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\nimport { withHistory } from 'slate-history'\n\nconst ShadowDOM = () => {\n  const container = useRef(null)\n  useEffect(() => {\n    if (container.current.shadowRoot) return\n    // Create a shadow DOM\n    const outerShadowRoot = container.current.attachShadow({ mode: 'open' })\n    const host = document.createElement('div')\n    outerShadowRoot.appendChild(host)\n    // Create a nested shadow DOM\n    const innerShadowRoot = host.attachShadow({ mode: 'open' })\n    const reactRoot = document.createElement('div')\n    innerShadowRoot.appendChild(reactRoot)\n    // Render the editor within the nested shadow DOM\n    const root = createRoot(reactRoot)\n    root.render(<ShadowEditor />)\n  })\n  return <div ref={container} data-cy=\"outer-shadow-root\" />\n}\nconst ShadowEditor = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable placeholder=\"Enter some plain text...\" />\n    </Slate>\n  )\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'This Editor is rendered within a nested Shadow DOM.' }],\n  },\n]\nexport default ShadowDOM\n"
  },
  {
    "path": "site/examples/js/styling.jsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\nimport { withHistory } from 'slate-history'\n\nconst StylingExample = () => {\n  const editor1 = useMemo(() => withHistory(withReact(createEditor())), [])\n  const editor2 = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <div style={{ display: 'flex', flexDirection: 'column', gap: '40px' }}>\n      <Slate\n        editor={editor1}\n        initialValue={[\n          {\n            type: 'paragraph',\n            children: [{ text: 'This editor is styled using the style prop.' }],\n          },\n        ]}\n      >\n        <Editable\n          style={{\n            backgroundColor: 'rgb(255, 230, 156)',\n            minHeight: '200px',\n            outline: 'rgb(0, 128, 0) solid 2px',\n          }}\n        />\n      </Slate>\n\n      <Slate\n        editor={editor2}\n        initialValue={[\n          {\n            type: 'paragraph',\n            children: [\n              { text: 'This editor is styled using the className prop.' },\n            ],\n          },\n        ]}\n      >\n        <Editable className=\"fancy\" disableDefaultStyles />\n      </Slate>\n    </div>\n  )\n}\nexport default StylingExample\n"
  },
  {
    "path": "site/examples/js/tables.jsx",
    "content": "import React, { useCallback, useMemo } from 'react'\nimport { Editor, Node, Point, Range, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, Slate, withReact } from 'slate-react'\nimport { css } from '@emotion/css'\n\nconst TablesExample = () => {\n  const renderElement = useCallback(props => <Element {...props} />, [])\n  const renderLeaf = useCallback(props => <Leaf {...props} />, [])\n  const editor = useMemo(\n    () => withTables(withHistory(withReact(createEditor()))),\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable renderElement={renderElement} renderLeaf={renderLeaf} />\n    </Slate>\n  )\n}\nconst withTables = editor => {\n  const { deleteBackward, deleteForward, insertBreak } = editor\n  editor.deleteBackward = unit => {\n    const { selection } = editor\n    if (selection && Range.isCollapsed(selection)) {\n      const [cell] = Editor.nodes(editor, {\n        match: n => Node.isElement(n) && n.type === 'table-cell',\n      })\n      if (cell) {\n        const [, cellPath] = cell\n        const start = Editor.start(editor, cellPath)\n        if (Point.equals(selection.anchor, start)) {\n          return\n        }\n      }\n    }\n    deleteBackward(unit)\n  }\n  editor.deleteForward = unit => {\n    const { selection } = editor\n    if (selection && Range.isCollapsed(selection)) {\n      const [cell] = Editor.nodes(editor, {\n        match: n => Node.isElement(n) && n.type === 'table-cell',\n      })\n      if (cell) {\n        const [, cellPath] = cell\n        const end = Editor.end(editor, cellPath)\n        if (Point.equals(selection.anchor, end)) {\n          return\n        }\n      }\n    }\n    deleteForward(unit)\n  }\n  editor.insertBreak = () => {\n    const { selection } = editor\n    if (selection) {\n      const [table] = Editor.nodes(editor, {\n        match: n => Node.isElement(n) && n.type === 'table',\n      })\n      if (table) {\n        return\n      }\n    }\n    insertBreak()\n  }\n  return editor\n}\nconst Element = ({ attributes, children, element }) => {\n  switch (element.type) {\n    case 'table':\n      return (\n        <table\n          className={css`\n            // avoid unexpected selection behavior on both sides of the table\n            position: relative;\n          `}\n        >\n          <tbody {...attributes}>{children}</tbody>\n        </table>\n      )\n    case 'table-row':\n      return <tr {...attributes}>{children}</tr>\n    case 'table-cell':\n      return <td {...attributes}>{children}</td>\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\nconst Leaf = ({ attributes, children, leaf }) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n  return <span {...attributes}>{children}</span>\n}\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Since the editor is based on a recursive tree model, similar to an HTML document, you can create complex nested structures, like tables:',\n      },\n    ],\n  },\n  {\n    type: 'table',\n    children: [\n      {\n        type: 'table-row',\n        children: [\n          {\n            type: 'table-cell',\n            children: [{ text: '' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: 'Human', bold: true }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: 'Dog', bold: true }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: 'Cat', bold: true }],\n          },\n        ],\n      },\n      {\n        type: 'table-row',\n        children: [\n          {\n            type: 'table-cell',\n            children: [{ text: '# of Feet', bold: true }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '2' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '4' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '4' }],\n          },\n        ],\n      },\n      {\n        type: 'table-row',\n        children: [\n          {\n            type: 'table-cell',\n            children: [{ text: '# of Lives', bold: true }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '1' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '1' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '9' }],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: \"This table is just a basic example of rendering a table, and it doesn't have fancy functionality. But you could augment it to add support for navigating with arrow keys, displaying table headers, adding column and rows, or even formulas if you wanted to get really crazy!\",\n      },\n    ],\n  },\n]\nexport default TablesExample\n"
  },
  {
    "path": "site/examples/js/utils/environment.js",
    "content": "export const IS_MAC =\n  typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent)\nexport const IS_ANDROID =\n  typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent)\n"
  },
  {
    "path": "site/examples/js/utils/normalize-tokens.js",
    "content": "/**\n * Copied from prism-react-renderer repo\n * https://github.com/FormidableLabs/prism-react-renderer/blob/master/src/utils/normalizeTokens.js\n * */\nconst newlineRe = /\\r\\n|\\r|\\n/\n// Empty lines need to contain a single empty token, denoted with { empty: true }\nconst normalizeEmptyLines = line => {\n  if (line.length === 0) {\n    line.push({\n      types: ['plain'],\n      content: '\\n',\n      empty: true,\n    })\n  } else if (line.length === 1 && line[0].content === '') {\n    line[0].content = '\\n'\n    line[0].empty = true\n  }\n}\nconst appendTypes = (types, add) => {\n  const typesSize = types.length\n  if (typesSize > 0 && types[typesSize - 1] === add) {\n    return types\n  }\n  return types.concat(add)\n}\n// Takes an array of Prism's tokens and groups them by line, turning plain\n// strings into tokens as well. Tokens can become recursive in some cases,\n// which means that their types are concatenated. Plain-string tokens however\n// are always of type \"plain\".\n// This is not recursive to avoid exceeding the call-stack limit, since it's unclear\n// how nested Prism's tokens can become\nexport const normalizeTokens = tokens => {\n  const typeArrStack = [[]]\n  const tokenArrStack = [tokens]\n  const tokenArrIndexStack = [0]\n  const tokenArrSizeStack = [tokens.length]\n  let i = 0\n  let stackIndex = 0\n  let currentLine = []\n  const acc = [currentLine]\n  while (stackIndex > -1) {\n    while (\n      (i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]\n    ) {\n      let content\n      let types = typeArrStack[stackIndex]\n      const tokenArr = tokenArrStack[stackIndex]\n      const token = tokenArr[i]\n      // Determine content and append type to types if necessary\n      if (typeof token === 'string') {\n        types = stackIndex > 0 ? types : ['plain']\n        content = token\n      } else {\n        types = appendTypes(types, token.type)\n        if (token.alias) {\n          types = appendTypes(types, token.alias)\n        }\n        content = token.content\n      }\n      // If token.content is an array, increase the stack depth and repeat this while-loop\n      if (typeof content !== 'string') {\n        stackIndex++\n        typeArrStack.push(types)\n        tokenArrStack.push(content)\n        tokenArrIndexStack.push(0)\n        tokenArrSizeStack.push(content.length)\n        continue\n      }\n      // Split by newlines\n      const splitByNewlines = content.split(newlineRe)\n      const newlineCount = splitByNewlines.length\n      currentLine.push({ types, content: splitByNewlines[0] })\n      // Create a new line for each string on a new line\n      for (let i = 1; i < newlineCount; i++) {\n        normalizeEmptyLines(currentLine)\n        acc.push((currentLine = []))\n        currentLine.push({ types, content: splitByNewlines[i] })\n      }\n    }\n    // Decreate the stack depth\n    stackIndex--\n    typeArrStack.pop()\n    tokenArrStack.pop()\n    tokenArrIndexStack.pop()\n    tokenArrSizeStack.pop()\n  }\n  normalizeEmptyLines(currentLine)\n  return acc\n}\n"
  },
  {
    "path": "site/examples/ts/android-tests.tsx",
    "content": "import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { Descendant, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, RenderLeafProps, Slate, withReact } from 'slate-react'\nimport { css } from '@emotion/css'\n\ninterface AndroidTestCase {\n  id: string\n  name: string\n  instructions: string\n  value: Descendant[]\n}\n\nconst TEST_CASES: AndroidTestCase[] = [\n  {\n    id: 'split-join',\n    name: 'Split/Join',\n    instructions:\n      'Hit enter twice then backspace twice in the following places:\\n- Before \"before\"\\n- Between the two \"d\"s in \"middle\"\\n- After \"after\"',\n    value: [\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'One ' },\n          { text: 'before', bold: true },\n          { text: ' two ' },\n          { text: 'middle', bold: true },\n          { text: ' three ' },\n          { text: 'after', bold: true },\n          { text: ' four' },\n        ],\n      },\n    ],\n  },\n  {\n    id: 'insert',\n    name: 'Insertion',\n    instructions:\n      'Enter text below each line of instruction, including mis-spelling \"wasnt\"',\n    value: [\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Type by tapping keys: ', bold: true },\n          { text: 'It wasnt me. No.' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Type using glide typing: ', bold: true },\n          { text: 'Yes Sam, I am.' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Type using voice input: ', bold: true },\n          { text: 'The quick brown fox jumps over the lazy dog' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: 'Write any two words using an IME', bold: true }],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n    ],\n  },\n  {\n    id: 'special',\n    name: 'Special',\n    instructions: 'Follow the instructions on each line',\n    value: [\n      {\n        type: 'paragraph',\n        children: [\n          {\n            text: 'Type \"it is\", move cursor to \"i|t\" and hit enter.',\n            bold: true,\n          },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          {\n            text: 'Move cursor to \"mid|dle\" and press space, backspace, space, backspace.',\n            bold: true,\n          },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: 'The middle word.' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          {\n            text: 'Place cursor in line below. Wait for caps on keyboard to show up. If not try again. Type \"It me. No.\" and check it doesn\\'t mangle on the last period.',\n            bold: true,\n          },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n    ],\n  },\n  {\n    id: 'empty',\n    name: 'Empty',\n    instructions:\n      'Type \"hello world\", press enter, \"hi\", press enter, \"bye\", and then backspace over everything',\n    value: [\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n    ],\n  },\n  {\n    id: 'remove',\n    name: 'Remove',\n    instructions:\n      'Select from ANCHOR to FOCUS and press backspace. Move cursor to end. Backspace over all remaining content.',\n    value: [\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Go and ' },\n          { text: 'select', bold: true },\n          { text: ' from this ANCHOR and then' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [{ text: 'go and select' }],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'to this FOCUS then press ' },\n          { text: 'backspace.', bold: true },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'After you have done that move selection to very end.' },\n        ],\n      },\n      {\n        type: 'paragraph',\n        children: [\n          { text: 'Then try ' },\n          { text: 'backspacing', bold: true },\n          { text: ' over all remaining text.' },\n        ],\n      },\n    ],\n  },\n  {\n    id: 'autocorrect',\n    name: 'Autocorrect',\n    instructions:\n      'Type \"Cant\" (make sure to misspell it), then press space to autocorrect it. Make sure the cursor position is correct (after the autocorrected word)',\n    value: [\n      {\n        type: 'paragraph',\n        children: [{ text: '' }],\n      },\n    ],\n  },\n]\n\nconst AndroidTestsExample = () => {\n  const [testId, setTestId] = useState(\n    () => window.location.hash.replace('#', '') || TEST_CASES[0].id\n  )\n\n  useEffect(() => {\n    window.history.replaceState({}, '', `#${testId}`)\n  }, [testId])\n\n  const testCase = TEST_CASES.find(({ id }) => id === testId)\n  if (!testCase) {\n    throw new Error(`Could not find test case '${testId}'`)\n  }\n\n  return (\n    <>\n      <label>\n        Test case:{' '}\n        <select value={testId} onChange={e => setTestId(e.target.value)}>\n          {TEST_CASES.map(({ name, id }) => (\n            <option key={id} value={id}>\n              {name}\n            </option>\n          ))}\n        </select>\n      </label>\n\n      <p\n        className={css`\n          font-weight: 600;\n          margin: 0.5rem 0;\n          white-space: pre-line;\n        `}\n      >\n        {testCase.instructions}\n      </p>\n\n      <TestCase key={testId} {...testCase} />\n    </>\n  )\n}\n\nconst TestCase = ({ value }: AndroidTestCase) => {\n  const renderLeaf = useCallback(\n    (props: RenderLeafProps) => <Leaf {...props} />,\n    []\n  )\n\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n\n  return (\n    <Slate editor={editor} initialValue={value}>\n      <Editable\n        renderLeaf={renderLeaf}\n        placeholder=\"Enter some text…\"\n        spellCheck\n      />\n    </Slate>\n  )\n}\n\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n\n  return <span {...attributes}>{children}</span>\n}\n\nexport default AndroidTestsExample\n"
  },
  {
    "path": "site/examples/ts/check-lists.tsx",
    "content": "import { css } from '@emotion/css'\nimport React, { ChangeEvent, useCallback, useMemo } from 'react'\nimport {\n  Descendant,\n  Editor,\n  Node,\n  Point,\n  Range,\n  Element as SlateElement,\n  Transforms,\n  createEditor,\n} from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  RenderElementProps,\n  Slate,\n  useReadOnly,\n  useSlateStatic,\n  withReact,\n} from 'slate-react'\nimport {\n  CheckListItemElement as CheckListItemType,\n  CustomEditor,\n  RenderElementPropsFor,\n} from './custom-types.d'\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'With Slate you can build complex block types that have their own embedded content and behaviors, like rendering checkboxes inside check list items!',\n      },\n    ],\n  },\n  {\n    type: 'check-list-item',\n    checked: true,\n    children: [{ text: 'Slide to the left.' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: true,\n    children: [{ text: 'Slide to the right.' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: false,\n    children: [{ text: 'Criss-cross.' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: true,\n    children: [{ text: 'Criss-cross!' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: false,\n    children: [{ text: 'Cha cha real smooth…' }],\n  },\n  {\n    type: 'check-list-item',\n    checked: false,\n    children: [{ text: \"Let's go to work!\" }],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: 'Try it out for yourself!' }],\n  },\n]\n\nconst CheckListsExample = () => {\n  const renderElement = useCallback(\n    (props: RenderElementProps) => <Element {...props} />,\n    []\n  )\n  const editor = useMemo(\n    () => withChecklists(withHistory(withReact(createEditor()))),\n    []\n  )\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        placeholder=\"Get to work…\"\n        spellCheck\n        autoFocus\n      />\n    </Slate>\n  )\n}\n\nconst withChecklists = (editor: CustomEditor) => {\n  const { deleteBackward } = editor\n\n  editor.deleteBackward = (...args) => {\n    const { selection } = editor\n\n    if (selection && Range.isCollapsed(selection)) {\n      const [match] = Editor.nodes(editor, {\n        match: n => Node.isElement(n) && n.type === 'check-list-item',\n      })\n\n      if (match) {\n        const [, path] = match\n        const start = Editor.start(editor, path)\n\n        if (Point.equals(selection.anchor, start)) {\n          const newProperties: Partial<SlateElement> = {\n            type: 'paragraph',\n          }\n          Transforms.setNodes(editor, newProperties, {\n            match: n => Node.isElement(n) && n.type === 'check-list-item',\n          })\n          return\n        }\n      }\n    }\n\n    deleteBackward(...args)\n  }\n\n  return editor\n}\n\nconst Element = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n\n  switch (element.type) {\n    case 'check-list-item':\n      return <CheckListItemElement {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst CheckListItemElement = ({\n  attributes,\n  children,\n  element,\n}: RenderElementPropsFor<CheckListItemType>) => {\n  const { checked } = element\n  const editor = useSlateStatic()\n  const readOnly = useReadOnly()\n  return (\n    <div\n      {...attributes}\n      className={css`\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n\n        & + & {\n          margin-top: 0;\n        }\n      `}\n    >\n      <span\n        contentEditable={false}\n        className={css`\n          margin-right: 0.75em;\n        `}\n      >\n        <input\n          type=\"checkbox\"\n          checked={checked}\n          onChange={(event: ChangeEvent<HTMLInputElement>) => {\n            const path = ReactEditor.findPath(editor, element)\n            const newProperties: Partial<SlateElement> = {\n              checked: event.target.checked,\n            }\n            Transforms.setNodes(editor, newProperties, { at: path })\n          }}\n        />\n      </span>\n      <span\n        contentEditable={!readOnly}\n        suppressContentEditableWarning\n        className={css`\n          flex: 1;\n          opacity: ${checked ? 0.666 : 1};\n          text-decoration: ${!checked ? 'none' : 'line-through'};\n\n          &:focus {\n            outline: none;\n          }\n        `}\n      >\n        {children}\n      </span>\n    </div>\n  )\n}\n\nexport default CheckListsExample\n"
  },
  {
    "path": "site/examples/ts/code-highlighting.tsx",
    "content": "import { css } from '@emotion/css'\nimport isHotkey from 'is-hotkey'\nimport Prism from 'prismjs'\nimport 'prismjs/components/prism-java'\nimport 'prismjs/components/prism-javascript'\nimport 'prismjs/components/prism-jsx'\nimport 'prismjs/components/prism-markdown'\nimport 'prismjs/components/prism-php'\nimport 'prismjs/components/prism-python'\nimport 'prismjs/components/prism-sql'\nimport 'prismjs/components/prism-tsx'\nimport 'prismjs/components/prism-typescript'\nimport React, { ChangeEvent, PointerEvent, useCallback, useState } from 'react'\nimport {\n  Editor,\n  Node,\n  NodeEntry,\n  Transforms,\n  createEditor,\n  DecoratedRange,\n} from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  RenderElementProps,\n  RenderLeafProps,\n  Slate,\n  useSlateStatic,\n  withReact,\n} from 'slate-react'\nimport { Button, Icon, Toolbar } from './components'\nimport {\n  CodeBlockElement,\n  CodeLineElement,\n  CustomEditor,\n  CustomElement,\n  CustomText,\n} from './custom-types.d'\nimport { normalizeTokens } from './utils/normalize-tokens'\n\nconst ParagraphType = 'paragraph'\nconst CodeBlockType = 'code-block'\nconst CodeLineType = 'code-line'\n\nconst CodeHighlightingExample = () => {\n  const [editor] = useState(() => withHistory(withReact(createEditor())))\n\n  const decorate = useDecorate()\n  const onKeyDown = useOnKeydown(editor)\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <ExampleToolbar />\n      <Editable\n        decorate={decorate}\n        renderElement={ElementWrapper}\n        renderLeaf={renderLeaf}\n        onKeyDown={onKeyDown}\n      />\n      <style>{prismThemeCss}</style>\n    </Slate>\n  )\n}\n\nconst ElementWrapper = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n  const editor = useSlateStatic()\n\n  if (element.type === CodeBlockType) {\n    const setLanguage = (language: string) => {\n      const path = ReactEditor.findPath(editor, element)\n      Transforms.setNodes(editor, { language }, { at: path })\n    }\n\n    return (\n      <div\n        {...attributes}\n        className={css(`\n        font-family: monospace;\n        font-size: 16px;\n        line-height: 20px;\n        margin-top: 0;\n        background: rgba(0, 20, 60, .03);\n        padding: 5px 13px;\n      `)}\n        style={{ position: 'relative' }}\n        spellCheck={false}\n      >\n        <LanguageSelect\n          value={element.language}\n          onChange={e => setLanguage(e.target.value)}\n        />\n        {children}\n      </div>\n    )\n  }\n\n  if (element.type === CodeLineType) {\n    return (\n      <div {...attributes} style={{ position: 'relative' }}>\n        {children}\n      </div>\n    )\n  }\n\n  const Tag = editor.isInline(element) ? 'span' : 'div'\n  return (\n    <Tag {...attributes} style={{ position: 'relative' }}>\n      {children}\n    </Tag>\n  )\n}\n\nconst ExampleToolbar = () => {\n  return (\n    <Toolbar>\n      <CodeBlockButton />\n    </Toolbar>\n  )\n}\n\nconst CodeBlockButton = () => {\n  const editor = useSlateStatic()\n  const handleClick = () => {\n    Transforms.wrapNodes(\n      editor,\n      { type: CodeBlockType, language: 'html', children: [] },\n      {\n        match: n => Node.isElement(n) && n.type === ParagraphType,\n        split: true,\n      }\n    )\n    Transforms.setNodes(\n      editor,\n      { type: CodeLineType },\n      { match: n => Node.isElement(n) && n.type === ParagraphType }\n    )\n  }\n\n  return (\n    <Button\n      data-test-id=\"code-block-button\"\n      active\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n        event.preventDefault()\n      }}\n      onClick={handleClick}\n    >\n      <Icon>code</Icon>\n    </Button>\n  )\n}\n\nconst renderLeaf = (props: RenderLeafProps) => {\n  const { attributes, children, leaf } = props\n  const { text, ...rest } = leaf\n\n  return (\n    <span {...attributes} className={Object.keys(rest).join(' ')}>\n      {children}\n    </span>\n  )\n}\n\nconst useDecorate = () => {\n  return useCallback(([node, path]: NodeEntry) => {\n    if (Node.isElement(node) && node.type === CodeBlockType) {\n      return decorateCodeBlock([node, path])\n    }\n\n    return []\n  }, [])\n}\n\nconst decorateCodeBlock = ([\n  block,\n  blockPath,\n]: NodeEntry<CodeBlockElement>): DecoratedRange[] => {\n  const text = block.children.map(line => Node.string(line)).join('\\n')\n  const tokens = Prism.tokenize(text, Prism.languages[block.language])\n  const normalizedTokens = normalizeTokens(tokens) // make tokens flat and grouped by line\n  const decorations: DecoratedRange[] = []\n\n  for (let index = 0; index < normalizedTokens.length; index++) {\n    const tokens = normalizedTokens[index]\n\n    let start = 0\n    for (const token of tokens) {\n      const length = token.content.length\n      if (!length) {\n        continue\n      }\n\n      const end = start + length\n\n      const path = [...blockPath, index, 0]\n\n      decorations.push({\n        anchor: { path, offset: start },\n        focus: { path, offset: end },\n        token: true,\n        ...Object.fromEntries(token.types.map(type => [type, true])),\n      })\n\n      start = end\n    }\n  }\n\n  return decorations\n}\n\nconst useOnKeydown = (editor: CustomEditor) => {\n  const onKeyDown: React.KeyboardEventHandler<HTMLDivElement> = useCallback(\n    e => {\n      if (isHotkey('tab', e)) {\n        // handle tab key, insert spaces\n        e.preventDefault()\n\n        Editor.insertText(editor, '  ')\n      }\n    },\n    [editor]\n  )\n\n  return onKeyDown\n}\n\ninterface LanguageSelectProps\n  extends React.SelectHTMLAttributes<HTMLSelectElement> {\n  value?: string\n  onChange: (event: ChangeEvent<HTMLSelectElement>) => void\n}\n\nconst LanguageSelect = (props: LanguageSelectProps) => {\n  return (\n    <select\n      data-test-id=\"language-select\"\n      contentEditable={false}\n      className={css`\n        position: absolute;\n        right: 5px;\n        top: 5px;\n        z-index: 1;\n      `}\n      {...props}\n    >\n      <option value=\"css\">CSS</option>\n      <option value=\"html\">HTML</option>\n      <option value=\"java\">Java</option>\n      <option value=\"javascript\">JavaScript</option>\n      <option value=\"jsx\">JSX</option>\n      <option value=\"markdown\">Markdown</option>\n      <option value=\"php\">PHP</option>\n      <option value=\"python\">Python</option>\n      <option value=\"sql\">SQL</option>\n      <option value=\"tsx\">TSX</option>\n      <option value=\"typescript\">TypeScript</option>\n    </select>\n  )\n}\n\nconst toChildren = (content: string): CustomText[] => [{ text: content }]\nconst toCodeLines = (content: string): CodeLineElement[] =>\n  content\n    .split('\\n')\n    .map(line => ({ type: CodeLineType, children: toChildren(line) }))\n\nconst initialValue: CustomElement[] = [\n  {\n    type: ParagraphType,\n    children: toChildren(\n      \"Here's one containing a single paragraph block with some text in it:\"\n    ),\n  },\n  {\n    type: CodeBlockType,\n    language: 'jsx',\n    children: toCodeLines(`// Add the initial value.\nconst initialValue = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'A line of text in a paragraph.' }]\n  }\n]\n\nconst App = () => {\n  const [editor] = useState(() => withReact(createEditor()))\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable />\n    </Slate>\n  )\n}`),\n  },\n  {\n    type: ParagraphType,\n    children: toChildren(\n      'If you are using TypeScript, you will also need to extend the Editor with ReactEditor and add annotations as per the documentation on TypeScript. The example below also includes the custom types required for the rest of this example.'\n    ),\n  },\n  {\n    type: CodeBlockType,\n    language: 'typescript',\n    children: toCodeLines(`// TypeScript users only add this code\nimport { BaseEditor, Descendant } from 'slate'\nimport { ReactEditor } from 'slate-react'\n\ntype CustomElement = { type: 'paragraph'; children: CustomText[] }\ntype CustomText = { text: string }\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: BaseEditor & ReactEditor\n    Element: CustomElement\n    Text: CustomText\n  }\n}`),\n  },\n  {\n    type: ParagraphType,\n    children: toChildren('There you have it!'),\n  },\n]\n\n// Prismjs theme stored as a string instead of emotion css function.\n// It is useful for copy/pasting different themes. Also lets keeping simpler Leaf implementation\n// In the real project better to use just css file\nconst prismThemeCss = `\n/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n    color: black;\n    background: none;\n    text-shadow: 0 1px white;\n    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n    font-size: 1em;\n    text-align: left;\n    white-space: pre;\n    word-spacing: normal;\n    word-break: normal;\n    word-wrap: normal;\n    line-height: 1.5;\n\n    -moz-tab-size: 4;\n    -o-tab-size: 4;\n    tab-size: 4;\n\n    -webkit-hyphens: none;\n    -moz-hyphens: none;\n    -ms-hyphens: none;\n    hyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n    text-shadow: none;\n    background: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n    text-shadow: none;\n    background: #b3d4fc;\n}\n\n@media print {\n    code[class*=\"language-\"],\n    pre[class*=\"language-\"] {\n        text-shadow: none;\n    }\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n    padding: 1em;\n    margin: .5em 0;\n    overflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n    background: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n    padding: .1em;\n    border-radius: .3em;\n    white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n    color: slategray;\n}\n\n.token.punctuation {\n    color: #999;\n}\n\n.token.namespace {\n    opacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n    color: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n    color: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n    color: #9a6e3a;\n    /* This background color was intended by the author of this theme. */\n    background: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n    color: #07a;\n}\n\n.token.function,\n.token.class-name {\n    color: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n    color: #e90;\n}\n\n.token.important,\n.token.bold {\n    font-weight: bold;\n}\n.token.italic {\n    font-style: italic;\n}\n\n.token.entity {\n    cursor: help;\n}\n`\n\nexport default CodeHighlightingExample\n"
  },
  {
    "path": "site/examples/ts/components/index.tsx",
    "content": "import { css, cx } from '@emotion/css'\nimport React, { PropsWithChildren, ReactNode, Ref } from 'react'\nimport ReactDOM from 'react-dom'\n\ninterface BaseProps {\n  className: string\n  [key: string]: unknown\n}\n\nexport const Button = React.forwardRef(\n  (\n    {\n      className,\n      active,\n      reversed,\n      ...props\n    }: PropsWithChildren<\n      {\n        active: boolean\n        reversed: boolean\n      } & BaseProps\n    >,\n    ref: Ref<HTMLButtonElement>\n  ) => (\n    <button\n      {...props}\n      ref={ref}\n      className={cx(\n        css`\n          border: none;\n          background: none;\n          padding: 0;\n          cursor: pointer;\n          color: ${reversed\n            ? active\n              ? 'white'\n              : '#aaa'\n            : active\n            ? 'black'\n            : '#ccc'};\n        `,\n        className\n      )}\n    />\n  )\n)\n\nexport const Icon = React.forwardRef(\n  (\n    { className, ...props }: PropsWithChildren<BaseProps>,\n    ref: Ref<HTMLSpanElement>\n  ) => (\n    <span\n      {...props}\n      ref={ref}\n      className={cx(\n        'material-icons',\n        className,\n        css`\n          font-size: 18px;\n          vertical-align: text-bottom;\n        `\n      )}\n    />\n  )\n)\n\nexport const Instruction = React.forwardRef(\n  (\n    { className, ...props }: PropsWithChildren<BaseProps>,\n    ref: Ref<HTMLDivElement>\n  ) => (\n    <div\n      {...props}\n      ref={ref}\n      className={cx(\n        className,\n        css`\n          white-space: pre-wrap;\n          margin: 0 -20px 10px;\n          padding: 10px 20px;\n          font-size: 14px;\n          background: #f8f8e8;\n        `\n      )}\n    />\n  )\n)\n\nexport const Menu = React.forwardRef(\n  (\n    { className, ...props }: PropsWithChildren<BaseProps>,\n    ref: Ref<HTMLDivElement>\n  ) => (\n    <div\n      {...props}\n      data-test-id=\"menu\"\n      ref={ref}\n      className={cx(\n        className,\n        css`\n          & > * {\n            display: inline-block;\n          }\n\n          & > * + * {\n            margin-left: 15px;\n          }\n        `\n      )}\n    />\n  )\n)\n\nexport const Portal = ({ children }: { children?: ReactNode }) => {\n  return typeof document === 'object'\n    ? ReactDOM.createPortal(children, document.body)\n    : null\n}\n\nexport const Toolbar = React.forwardRef(\n  (\n    { className, ...props }: PropsWithChildren<BaseProps>,\n    ref: Ref<HTMLDivElement>\n  ) => (\n    <Menu\n      {...props}\n      ref={ref}\n      className={cx(\n        className,\n        css`\n          position: relative;\n          padding: 1px 18px 17px;\n          margin: 0 -20px;\n          border-bottom: 2px solid #eee;\n          margin-bottom: 20px;\n        `\n      )}\n    />\n  )\n)\n"
  },
  {
    "path": "site/examples/ts/custom-placeholder.tsx",
    "content": "import React, { useMemo } from 'react'\nimport { Descendant, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, RenderPlaceholderProps, Slate, withReact } from 'slate-react'\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [{ text: '' }],\n  },\n]\n\nconst PlainTextExample = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        placeholder=\"Type something\"\n        renderPlaceholder={({\n          children,\n          attributes,\n        }: RenderPlaceholderProps) => (\n          <div {...attributes}>\n            <p>{children}</p>\n            <pre>\n              Use the renderPlaceholder prop to customize rendering of the\n              placeholder\n            </pre>\n          </div>\n        )}\n      />\n    </Slate>\n  )\n}\n\nexport default PlainTextExample\n"
  },
  {
    "path": "site/examples/ts/custom-types.d.ts",
    "content": "import { Descendant, BaseEditor, BaseRange, Range, Element } from 'slate'\nimport { ReactEditor } from 'slate-react'\nimport { HistoryEditor } from 'slate-history'\n\nexport type BlockQuoteElement = {\n  type: 'block-quote'\n  align?: string\n  children: Descendant[]\n}\n\nexport type BulletedListElement = {\n  type: 'bulleted-list'\n  align?: string\n  children: Descendant[]\n}\n\nexport type CheckListItemElement = {\n  type: 'check-list-item'\n  checked: boolean\n  children: Descendant[]\n}\n\nexport type EditableVoidElement = {\n  type: 'editable-void'\n  children: EmptyText[]\n}\n\nexport type HeadingElement = {\n  type: 'heading-one'\n  align?: string\n  children: Descendant[]\n}\n\nexport type HeadingTwoElement = {\n  type: 'heading-two'\n  align?: string\n  children: Descendant[]\n}\n\nexport type HeadingThreeElement = {\n  type: 'heading-three'\n  align?: string\n  children: Descendant[]\n}\n\nexport type HeadingFourElement = {\n  type: 'heading-four'\n  align?: string\n  children: Descendant[]\n}\n\nexport type HeadingFiveElement = {\n  type: 'heading-five'\n  align?: string\n  children: Descendant[]\n}\n\nexport type HeadingSixElement = {\n  type: 'heading-six'\n  align?: string\n  children: Descendant[]\n}\n\nexport type ImageElement = {\n  type: 'image'\n  url: string\n  children: EmptyText[]\n}\n\nexport type LinkElement = { type: 'link'; url: string; children: Descendant[] }\n\nexport type ButtonElement = { type: 'button'; children: Descendant[] }\n\nexport type BadgeElement = { type: 'badge'; children: Descendant[] }\n\nexport type ListItemElement = { type: 'list-item'; children: Descendant[] }\n\nexport type NumberedListItemElement = {\n  type: 'numbered-list'\n  children: Descendant[]\n}\n\nexport type MentionElement = {\n  type: 'mention'\n  character: string\n  children: CustomText[]\n}\n\nexport type ParagraphElement = {\n  type: 'paragraph'\n  align?: string\n  children: Descendant[]\n}\n\nexport type TableElement = { type: 'table'; children: TableRow[] }\n\nexport type TableCellElement = { type: 'table-cell'; children: CustomText[] }\n\nexport type TableRowElement = { type: 'table-row'; children: TableCell[] }\n\nexport type TitleElement = { type: 'title'; children: Descendant[] }\n\nexport type VideoElement = { type: 'video'; url: string; children: EmptyText[] }\n\nexport type CodeBlockElement = {\n  type: 'code-block'\n  language: string\n  children: Descendant[]\n}\n\nexport type CodeLineElement = {\n  type: 'code-line'\n  children: Descendant[]\n}\n\nexport type CustomElementWithAlign =\n  | ParagraphElement\n  | HeadingElement\n  | HeadingTwoElement\n  | HeadingThreeElement\n  | HeadingFourElement\n  | HeadingFiveElement\n  | HeadingSixElement\n  | BlockQuoteElement\n  | BulletedListElement\n\ntype CustomElement =\n  | BlockQuoteElement\n  | BulletedListElement\n  | CheckListItemElement\n  | EditableVoidElement\n  | HeadingElement\n  | HeadingTwoElement\n  | HeadingThreeElement\n  | HeadingFourElement\n  | HeadingFiveElement\n  | HeadingSixElement\n  | ImageElement\n  | LinkElement\n  | ButtonElement\n  | BadgeElement\n  | ListItemElement\n  | NumberedListItemElement\n  | MentionElement\n  | ParagraphElement\n  | TableElement\n  | TableRowElement\n  | TableCellElement\n  | TitleElement\n  | VideoElement\n  | CodeBlockElement\n  | CodeLineElement\n\nexport type CustomElementType = CustomElement['type']\n\nexport type CustomText = {\n  bold?: boolean\n  italic?: boolean\n  code?: boolean\n  underline?: boolean\n  strikethrough?: boolean\n  // MARKDOWN PREVIEW SPECIFIC LEAF\n  underlined?: boolean\n  title?: boolean\n  list?: boolean\n  hr?: boolean\n  blockquote?: boolean\n  text: string\n}\n\nexport type CustomTextKey = keyof Omit<CustomText, 'text'>\n\nexport type EmptyText = {\n  text: string\n}\n\nexport type RenderElementPropsFor<T> = RenderElementProps & {\n  element: T\n}\n\nexport type CustomEditor = BaseEditor &\n  ReactEditor &\n  HistoryEditor & {\n    nodeToDecorations?: Map<Element, Range[]>\n  }\n\ndeclare module 'slate' {\n  interface CustomTypes {\n    Editor: CustomEditor\n    Element: CustomElement\n    Text: CustomText\n    Range: BaseRange & {\n      [key: string]: unknown\n    }\n  }\n}\n"
  },
  {
    "path": "site/examples/ts/editable-voids.tsx",
    "content": "import { css } from '@emotion/css'\nimport React, { PointerEvent, useMemo, useState } from 'react'\nimport { createEditor, Descendant, Transforms } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  RenderElementProps,\n  Slate,\n  useSlateStatic,\n  withReact,\n} from 'slate-react'\n\nimport { Button, Icon, Toolbar } from './components'\nimport { CustomEditor, EditableVoidElement } from './custom-types.d'\nimport RichTextEditor from './richtext'\n\nconst EditableVoidsExample = () => {\n  const editor = useMemo(\n    () => withEditableVoids(withHistory(withReact(createEditor()))),\n    []\n  )\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <InsertEditableVoidButton />\n      </Toolbar>\n\n      <Editable\n        renderElement={props => <Element {...props} />}\n        placeholder=\"Enter some text...\"\n      />\n    </Slate>\n  )\n}\n\nconst withEditableVoids = (editor: CustomEditor) => {\n  const { isVoid } = editor\n\n  editor.isVoid = element => {\n    return element.type === 'editable-void' ? true : isVoid(element)\n  }\n\n  return editor\n}\n\nconst insertEditableVoid = (editor: CustomEditor) => {\n  const text = { text: '' }\n  const voidNode: EditableVoidElement = {\n    type: 'editable-void',\n    children: [text],\n  }\n  Transforms.insertNodes(editor, voidNode)\n}\n\nconst Element = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n\n  switch (element.type) {\n    case 'editable-void':\n      return <EditableVoid {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst unsetWidthStyle = css`\n  width: unset;\n`\n\nconst EditableVoid = ({\n  attributes,\n  children,\n  element,\n}: RenderElementProps) => {\n  const [inputValue, setInputValue] = useState('')\n\n  return (\n    // Need contentEditable=false or Firefox has issues with certain input types.\n    <div {...attributes} contentEditable={false}>\n      <div\n        className={css`\n          box-shadow: 0 0 0 3px #ddd;\n          padding: 8px;\n        `}\n      >\n        <h4>Name:</h4>\n        <input\n          className={css`\n            margin: 8px 0;\n          `}\n          type=\"text\"\n          value={inputValue}\n          onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n            setInputValue(e.target.value)\n          }}\n        />\n        <h4>Left or right handed:</h4>\n        <input\n          className={unsetWidthStyle}\n          type=\"radio\"\n          name=\"handedness\"\n          value=\"left\"\n        />{' '}\n        Left\n        <br />\n        <input\n          className={unsetWidthStyle}\n          type=\"radio\"\n          name=\"handedness\"\n          value=\"right\"\n        />{' '}\n        Right\n        <h4>Tell us about yourself:</h4>\n        <div\n          className={css`\n            padding: 20px;\n            border: 2px solid #ddd;\n          `}\n        >\n          <RichTextEditor />\n        </div>\n      </div>\n      {children}\n    </div>\n  )\n}\n\nconst InsertEditableVoidButton = () => {\n  const editor = useSlateStatic()\n  return (\n    <Button\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n        event.preventDefault()\n      }}\n      onClick={() => insertEditableVoid(editor)}\n    >\n      <Icon>add</Icon>\n    </Button>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In addition to nodes that contain editable text, you can insert void nodes, which can also contain editable elements, inputs, or an entire other Slate editor.',\n      },\n    ],\n  },\n  {\n    type: 'editable-void',\n    children: [{ text: '' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: '',\n      },\n    ],\n  },\n]\n\nexport default EditableVoidsExample\n"
  },
  {
    "path": "site/examples/ts/embeds.tsx",
    "content": "import React, { ChangeEvent, useMemo } from 'react'\nimport {\n  Transforms,\n  createEditor,\n  Element as SlateElement,\n  Descendant,\n} from 'slate'\nimport {\n  Slate,\n  Editable,\n  withReact,\n  useSlateStatic,\n  ReactEditor,\n  RenderElementProps,\n} from 'slate-react'\nimport {\n  CustomEditor,\n  RenderElementPropsFor,\n  VideoElement as VideoElementType,\n} from './custom-types.d'\n\nconst EmbedsExample = () => {\n  const editor = useMemo(() => withEmbeds(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={props => <Element {...props} />}\n        placeholder=\"Enter some text...\"\n      />\n    </Slate>\n  )\n}\n\nconst withEmbeds = (editor: CustomEditor) => {\n  const { isVoid } = editor\n  editor.isVoid = element => (element.type === 'video' ? true : isVoid(element))\n  return editor\n}\n\nconst Element = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'video':\n      return <VideoElement {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst allowedSchemes = ['http:', 'https:']\n\nconst VideoElement = ({\n  attributes,\n  children,\n  element,\n}: RenderElementPropsFor<VideoElementType>) => {\n  const editor = useSlateStatic()\n  const { url } = element\n\n  const safeUrl = useMemo(() => {\n    let parsedUrl: URL | null = null\n    try {\n      parsedUrl = new URL(url)\n      // eslint-disable-next-line no-empty\n    } catch {}\n    if (parsedUrl && allowedSchemes.includes(parsedUrl.protocol)) {\n      return parsedUrl.href\n    }\n    return 'about:blank'\n  }, [url])\n\n  return (\n    <div {...attributes}>\n      <div contentEditable={false}>\n        <div\n          style={{\n            padding: '75% 0 0 0',\n            position: 'relative',\n          }}\n        >\n          <iframe\n            src={`${safeUrl}?title=0&byline=0&portrait=0`}\n            frameBorder=\"0\"\n            style={{\n              position: 'absolute',\n              top: '0',\n              left: '0',\n              width: '100%',\n              height: '100%',\n            }}\n          />\n        </div>\n        <UrlInput\n          url={url}\n          onChange={val => {\n            const path = ReactEditor.findPath(editor, element)\n            const newProperties: Partial<SlateElement> = {\n              url: val,\n            }\n            Transforms.setNodes<SlateElement>(editor, newProperties, {\n              at: path,\n            })\n          }}\n        />\n      </div>\n      {children}\n    </div>\n  )\n}\n\ninterface UrlInputProps {\n  url: string\n  onChange: (url: string) => void\n}\n\nconst UrlInput = ({ url, onChange }: UrlInputProps) => {\n  const [value, setValue] = React.useState(url)\n  return (\n    <input\n      type=\"text\"\n      value={value}\n      onClick={(e: React.MouseEvent) => e.stopPropagation()}\n      style={{\n        marginTop: '5px',\n        boxSizing: 'border-box',\n      }}\n      onChange={(e: ChangeEvent<HTMLInputElement>) => {\n        const newUrl = e.target.value\n        setValue(newUrl)\n        onChange(newUrl)\n      }}\n    />\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In addition to simple image nodes, you can actually create complex embedded nodes. For example, this one contains an input element that lets you change the video being rendered!',\n      },\n    ],\n  },\n  {\n    type: 'video',\n    url: 'https://player.vimeo.com/video/26689853',\n    children: [{ text: '' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Try it out! This editor is built to handle Vimeo embeds, but you could handle any type.',\n      },\n    ],\n  },\n]\n\nexport default EmbedsExample\n"
  },
  {
    "path": "site/examples/ts/forced-layout.tsx",
    "content": "import React, { useCallback, useMemo } from 'react'\nimport {\n  Descendant,\n  Editor,\n  Node,\n  NodeEntry,\n  Element as SlateElement,\n  Transforms,\n  createEditor,\n} from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, RenderElementProps, Slate, withReact } from 'slate-react'\nimport {\n  CustomEditor,\n  CustomElementType,\n  ParagraphElement,\n  TitleElement,\n} from './custom-types.d'\n\nconst withLayout = (editor: CustomEditor) => {\n  const { normalizeNode } = editor\n\n  editor.normalizeNode = ([node, path]: NodeEntry) => {\n    if (path.length === 0) {\n      if (editor.children.length <= 1 && Editor.string(editor, [0, 0]) === '') {\n        const title: TitleElement = {\n          type: 'title',\n          children: [{ text: 'Untitled' }],\n        }\n        Transforms.insertNodes(editor, title, {\n          at: path.concat(0),\n          select: true,\n        })\n      }\n\n      if (editor.children.length < 2) {\n        const paragraph: ParagraphElement = {\n          type: 'paragraph',\n          children: [{ text: '' }],\n        }\n        Transforms.insertNodes(editor, paragraph, { at: path.concat(1) })\n      }\n\n      for (const [child, childPath] of Node.children(editor, path)) {\n        let type: CustomElementType\n        const slateIndex = childPath[0]\n        const enforceType = (type: CustomElementType) => {\n          if (Node.isElement(child) && child.type !== type) {\n            const newProperties: Partial<SlateElement> = { type }\n            Transforms.setNodes<SlateElement>(editor, newProperties, {\n              at: childPath,\n            })\n          }\n        }\n\n        switch (slateIndex) {\n          case 0:\n            type = 'title'\n            enforceType(type)\n            break\n          case 1:\n            type = 'paragraph'\n            enforceType(type)\n          default:\n            break\n        }\n      }\n    }\n\n    return normalizeNode([node, path])\n  }\n\n  return editor\n}\n\nconst ForcedLayoutExample = () => {\n  const renderElement = useCallback(\n    (props: RenderElementProps) => <Element {...props} />,\n    []\n  )\n  const editor = useMemo(\n    () => withLayout(withHistory(withReact(createEditor()))),\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        placeholder=\"Enter a title…\"\n        spellCheck\n        autoFocus\n      />\n    </Slate>\n  )\n}\n\nconst Element = ({ attributes, children, element }: RenderElementProps) => {\n  switch (element.type) {\n    case 'title':\n      return <h2 {...attributes}>{children}</h2>\n    case 'paragraph':\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'title',\n    children: [{ text: 'Enforce Your Layout!' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows how to enforce your layout with domain-specific constraints. This document will always have a title block at the top and at least one paragraph in the body. Try deleting them and see what happens!',\n      },\n    ],\n  },\n]\n\nexport default ForcedLayoutExample\n"
  },
  {
    "path": "site/examples/ts/hovering-toolbar.tsx",
    "content": "import { css } from '@emotion/css'\nimport React, { MouseEvent, useEffect, useMemo, useRef } from 'react'\nimport { Descendant, Editor, Range, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  RenderLeafProps,\n  Slate,\n  useFocused,\n  useSlate,\n  withReact,\n} from 'slate-react'\n\nimport { Button, Icon, Menu, Portal } from './components'\nimport { CustomEditor, CustomTextKey } from './custom-types.d'\n\nconst HoveringMenuExample = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <HoveringToolbar />\n      <Editable\n        renderLeaf={props => <Leaf {...props} />}\n        placeholder=\"Enter some text...\"\n        onDOMBeforeInput={(event: InputEvent) => {\n          switch (event.inputType) {\n            case 'formatBold':\n              event.preventDefault()\n              return toggleMark(editor, 'bold')\n            case 'formatItalic':\n              event.preventDefault()\n              return toggleMark(editor, 'italic')\n            case 'formatUnderline':\n              event.preventDefault()\n              return toggleMark(editor, 'underline')\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n\nconst toggleMark = (editor: CustomEditor, format: CustomTextKey) => {\n  const isActive = isMarkActive(editor, format)\n\n  if (isActive) {\n    Editor.removeMark(editor, format)\n  } else {\n    Editor.addMark(editor, format, true)\n  }\n}\n\nconst isMarkActive = (editor: CustomEditor, format: CustomTextKey) => {\n  const marks = Editor.marks(editor)\n  return marks ? marks[format] === true : false\n}\n\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n\n  return <span {...attributes}>{children}</span>\n}\n\nconst HoveringToolbar = () => {\n  const ref = useRef<HTMLDivElement | null>(null)\n  const editor = useSlate()\n  const inFocus = useFocused()\n\n  useEffect(() => {\n    const el = ref.current\n    const { selection } = editor\n\n    if (!el) {\n      return\n    }\n\n    if (\n      !selection ||\n      !inFocus ||\n      Range.isCollapsed(selection) ||\n      Editor.string(editor, selection) === ''\n    ) {\n      el.removeAttribute('style')\n      return\n    }\n\n    const domSelection = window.getSelection()\n    const domRange = domSelection!.getRangeAt(0)\n    const rect = domRange.getBoundingClientRect()\n    el.style.opacity = '1'\n    el.style.top = `${rect.top + window.pageYOffset - el.offsetHeight}px`\n    el.style.left = `${\n      rect.left + window.pageXOffset - el.offsetWidth / 2 + rect.width / 2\n    }px`\n  })\n\n  return (\n    <Portal>\n      <Menu\n        ref={ref}\n        className={css`\n          padding: 8px 7px 6px;\n          position: absolute;\n          z-index: 1;\n          top: -10000px;\n          left: -10000px;\n          margin-top: -6px;\n          opacity: 0;\n          background-color: #222;\n          border-radius: 4px;\n          transition: opacity 0.75s;\n        `}\n        onMouseDown={(e: MouseEvent) => {\n          // prevent toolbar from taking focus away from editor\n          e.preventDefault()\n        }}\n      >\n        <FormatButton format=\"bold\" icon=\"format_bold\" />\n        <FormatButton format=\"italic\" icon=\"format_italic\" />\n        <FormatButton format=\"underline\" icon=\"format_underlined\" />\n      </Menu>\n    </Portal>\n  )\n}\n\ninterface FormatButtonProps {\n  format: CustomTextKey\n  icon: string\n}\n\nconst FormatButton = ({ format, icon }: FormatButtonProps) => {\n  const editor = useSlate()\n  return (\n    <Button\n      reversed\n      active={isMarkActive(editor, format)}\n      onClick={() => toggleMark(editor, format)}\n    >\n      <Icon>{icon}</Icon>\n    </Button>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows how you can make a hovering menu appear above your content, which you can use to make text ',\n      },\n      { text: 'bold', bold: true },\n      { text: ', ' },\n      { text: 'italic', italic: true },\n      { text: ', or anything else you might want to do!' },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'Try it out yourself! Just ' },\n      { text: 'select any piece of text and the menu will appear', bold: true },\n      { text: '.' },\n    ],\n  },\n]\n\nexport default HoveringMenuExample\n"
  },
  {
    "path": "site/examples/ts/huge-document.tsx",
    "content": "import { faker } from '@faker-js/faker'\nimport React, {\n  CSSProperties,\n  Dispatch,\n  StrictMode,\n  useCallback,\n  useEffect,\n  useState,\n} from 'react'\nimport { createEditor as slateCreateEditor, Descendant, Editor } from 'slate'\nimport {\n  Editable,\n  RenderElementProps,\n  RenderChunkProps,\n  Slate,\n  withReact,\n  useSelected,\n} from 'slate-react'\n\nimport { HeadingElement, ParagraphElement } from './custom-types.d'\n\nconst SUPPORTS_EVENT_TIMING =\n  typeof window !== 'undefined' && 'PerformanceEventTiming' in window\n\nconst SUPPORTS_LOAF_TIMING =\n  typeof window !== 'undefined' &&\n  'PerformanceLongAnimationFrameTiming' in window\n\ninterface Config {\n  blocks: number\n  chunking: boolean\n  chunkSize: number\n  chunkDivs: boolean\n  chunkOutlines: boolean\n  contentVisibilityMode: 'none' | 'element' | 'chunk'\n  showSelectedHeadings: boolean\n  strictMode: boolean\n}\n\nconst blocksOptions = [\n  2, 1000, 2500, 5000, 7500, 10000, 15000, 20000, 25000, 30000, 40000, 50000,\n  100000, 200000,\n]\n\nconst chunkSizeOptions = [3, 10, 100, 1000]\n\nconst searchParams =\n  typeof document === 'undefined'\n    ? null\n    : new URLSearchParams(document.location.search)\n\nconst parseNumber = (key: string, defaultValue: number) =>\n  parseInt(searchParams?.get(key) ?? '', 10) || defaultValue\n\nconst parseBoolean = (key: string, defaultValue: boolean) => {\n  const value = searchParams?.get(key)\n  if (value) return value === 'true'\n  return defaultValue\n}\n\nconst parseEnum = <T extends string>(\n  key: string,\n  options: T[],\n  defaultValue: T\n): T => {\n  const value = searchParams?.get(key) as T | null | undefined\n  if (value && options.includes(value)) return value\n  return defaultValue\n}\n\nconst initialConfig: Config = {\n  blocks: parseNumber('blocks', 10000),\n  chunking: parseBoolean('chunking', true),\n  chunkSize: parseNumber('chunk_size', 1000),\n  chunkDivs: parseBoolean('chunk_divs', true),\n  chunkOutlines: parseBoolean('chunk_outlines', false),\n  contentVisibilityMode: parseEnum(\n    'content_visibility',\n    ['none', 'element', 'chunk'],\n    'chunk'\n  ),\n  showSelectedHeadings: parseBoolean('selected_headings', false),\n  strictMode: parseBoolean('strict', false),\n}\n\nconst setSearchParams = (config: Config) => {\n  if (searchParams) {\n    searchParams.set('blocks', config.blocks.toString())\n    searchParams.set('chunking', config.chunking ? 'true' : 'false')\n    searchParams.set('chunk_size', config.chunkSize.toString())\n    searchParams.set('chunk_divs', config.chunkDivs ? 'true' : 'false')\n    searchParams.set('chunk_outlines', config.chunkOutlines ? 'true' : 'false')\n    searchParams.set('content_visibility', config.contentVisibilityMode)\n    searchParams.set(\n      'selected_headings',\n      config.showSelectedHeadings ? 'true' : 'false'\n    )\n    searchParams.set('strict', config.strictMode ? 'true' : 'false')\n    history.replaceState({}, '', `?${searchParams.toString()}`)\n  }\n}\n\nconst cachedInitialValue: Descendant[] = []\n\nconst getInitialValue = (blocks: number) => {\n  if (cachedInitialValue.length >= blocks) {\n    return cachedInitialValue.slice(0, blocks)\n  }\n\n  faker.seed(1)\n\n  for (let i = cachedInitialValue.length; i < blocks; i++) {\n    if (i % 100 === 0) {\n      const heading: HeadingElement = {\n        type: 'heading-one',\n        children: [{ text: faker.lorem.sentence() }],\n      }\n      cachedInitialValue.push(heading)\n    } else {\n      const paragraph: ParagraphElement = {\n        type: 'paragraph',\n        children: [{ text: faker.lorem.paragraph() }],\n      }\n      cachedInitialValue.push(paragraph)\n    }\n  }\n\n  return cachedInitialValue.slice()\n}\n\nconst initialInitialValue =\n  typeof window === 'undefined' ? [] : getInitialValue(initialConfig.blocks)\n\nconst createEditor = (config: Config) => {\n  const editor = withReact(slateCreateEditor())\n\n  editor.getChunkSize = node =>\n    config.chunking && node === editor ? config.chunkSize : null\n\n  return editor\n}\n\nconst HugeDocumentExample = () => {\n  const [rendering, setRendering] = useState(false)\n  const [config, baseSetConfig] = useState<Config>(initialConfig)\n  const [initialValue, setInitialValue] = useState(initialInitialValue)\n  const [editor, setEditor] = useState(() => createEditor(config))\n  const [editorVersion, setEditorVersion] = useState(0)\n\n  const setConfig = useCallback(\n    (partialConfig: Partial<Config>) => {\n      const newConfig = { ...config, ...partialConfig }\n\n      setRendering(true)\n      baseSetConfig(newConfig)\n      setSearchParams(newConfig)\n\n      setTimeout(() => {\n        setRendering(false)\n        setInitialValue(getInitialValue(newConfig.blocks))\n        setEditor(createEditor(newConfig))\n        setEditorVersion(n => n + 1)\n      })\n    },\n    [config]\n  )\n\n  const renderElement = useCallback(\n    (props: RenderElementProps) => (\n      <Element\n        {...props}\n        contentVisibility={config.contentVisibilityMode === 'element'}\n        showSelectedHeadings={config.showSelectedHeadings}\n      />\n    ),\n    [config.contentVisibilityMode, config.showSelectedHeadings]\n  )\n\n  const renderChunk = useCallback(\n    (props: RenderChunkProps) => (\n      <Chunk\n        {...props}\n        contentVisibilityLowest={config.contentVisibilityMode === 'chunk'}\n        outline={config.chunkOutlines}\n      />\n    ),\n    [config.contentVisibilityMode, config.chunkOutlines]\n  )\n\n  const editable = rendering ? (\n    <div>Rendering&hellip;</div>\n  ) : (\n    <Slate key={editorVersion} editor={editor} initialValue={initialValue}>\n      <Editable\n        placeholder=\"Enter some text…\"\n        renderElement={renderElement}\n        renderChunk={config.chunkDivs ? renderChunk : undefined}\n        spellCheck\n        autoFocus\n      />\n    </Slate>\n  )\n\n  const editableWithStrictMode = config.strictMode ? (\n    <StrictMode>{editable}</StrictMode>\n  ) : (\n    editable\n  )\n\n  return (\n    <>\n      <PerformanceControls\n        editor={editor}\n        config={config}\n        setConfig={setConfig}\n      />\n\n      {editableWithStrictMode}\n    </>\n  )\n}\n\nconst Chunk = ({\n  attributes,\n  children,\n  lowest,\n  contentVisibilityLowest,\n  outline,\n}: RenderChunkProps & {\n  contentVisibilityLowest: boolean\n  outline: boolean\n}) => {\n  const style: CSSProperties = {\n    contentVisibility: contentVisibilityLowest && lowest ? 'auto' : undefined,\n    border: outline ? '1px solid red' : undefined,\n    padding: outline ? 20 : undefined,\n    marginBottom: outline ? 20 : undefined,\n  }\n\n  return (\n    <div {...attributes} style={style}>\n      {children}\n    </div>\n  )\n}\n\nconst Heading = React.forwardRef<\n  HTMLHeadingElement,\n  React.ComponentProps<'h1'> & { showSelectedHeadings: boolean }\n>(({ style: styleProp, showSelectedHeadings = false, ...props }, ref) => {\n  // Fine since the editor is remounted if the config changes\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  const selected = showSelectedHeadings ? useSelected() : false\n  const style = { ...styleProp, color: selected ? 'green' : undefined }\n  return <h1 ref={ref} {...props} aria-selected={selected} style={style} />\n})\n\nconst Paragraph = 'p'\n\nconst Element = ({\n  attributes,\n  children,\n  element,\n  contentVisibility,\n  showSelectedHeadings,\n}: RenderElementProps & {\n  contentVisibility: boolean\n  showSelectedHeadings: boolean\n}) => {\n  const style: CSSProperties = {\n    contentVisibility: contentVisibility ? 'auto' : undefined,\n  }\n\n  switch (element.type) {\n    case 'heading-one':\n      return (\n        <Heading\n          {...attributes}\n          style={style}\n          showSelectedHeadings={showSelectedHeadings}\n        >\n          {children}\n        </Heading>\n      )\n    default:\n      return (\n        <Paragraph {...attributes} style={style}>\n          {children}\n        </Paragraph>\n      )\n  }\n}\n\nconst PerformanceControls = ({\n  editor,\n  config,\n  setConfig,\n}: {\n  editor: Editor\n  config: Config\n  setConfig: Dispatch<Partial<Config>>\n}) => {\n  const [configurationOpen, setConfigurationOpen] = useState(true)\n  const [keyPressDurations, setKeyPressDurations] = useState<number[]>([])\n  const [lastLongAnimationFrameDuration, setLastLongAnimationFrameDuration] =\n    useState<number | null>(null)\n\n  const lastKeyPressDuration: number | null = keyPressDurations[0] ?? null\n\n  const averageKeyPressDuration =\n    keyPressDurations.length === 10\n      ? Math.round(keyPressDurations.reduce((total, d) => total + d) / 10)\n      : null\n\n  useEffect(() => {\n    if (!SUPPORTS_EVENT_TIMING) return\n\n    const observer = new PerformanceObserver(list => {\n      list.getEntries().forEach(entry => {\n        if (entry.name === 'keypress') {\n          const duration = Math.round(\n            // @ts-ignore Entry type is missing processingStart and processingEnd\n            entry.processingEnd - entry.processingStart\n          )\n          setKeyPressDurations(durations => [\n            duration,\n            ...durations.slice(0, 9),\n          ])\n        }\n      })\n    })\n\n    // @ts-ignore Options type is missing durationThreshold\n    observer.observe({ type: 'event', durationThreshold: 16 })\n\n    return () => observer.disconnect()\n  }, [])\n\n  useEffect(() => {\n    if (!SUPPORTS_LOAF_TIMING) return\n\n    const { apply } = editor\n    let afterOperation = false\n\n    editor.apply = operation => {\n      apply(operation)\n      afterOperation = true\n    }\n\n    const observer = new PerformanceObserver(list => {\n      list.getEntries().forEach(entry => {\n        if (afterOperation) {\n          setLastLongAnimationFrameDuration(Math.round(entry.duration))\n          afterOperation = false\n        }\n      })\n    })\n\n    // Register the observer for events\n    observer.observe({ type: 'long-animation-frame' })\n\n    return () => observer.disconnect()\n  }, [editor])\n\n  return (\n    <div className=\"performance-controls\">\n      <p>\n        <label>\n          Blocks:{' '}\n          <select\n            value={config.blocks}\n            onChange={event =>\n              setConfig({\n                blocks: parseInt(event.target.value, 10),\n              })\n            }\n          >\n            {blocksOptions.map(blocks => (\n              <option key={blocks} value={blocks}>\n                {blocks.toString().replace(/(\\d{3})$/, ',$1')}\n              </option>\n            ))}\n          </select>\n        </label>\n      </p>\n\n      <details\n        open={configurationOpen}\n        onToggle={event => setConfigurationOpen(event.currentTarget.open)}\n      >\n        <summary>Configuration</summary>\n\n        <p>\n          <label>\n            <input\n              type=\"checkbox\"\n              checked={config.chunking}\n              onChange={event =>\n                setConfig({\n                  chunking: event.target.checked,\n                })\n              }\n            />{' '}\n            Chunking enabled\n          </label>\n        </p>\n\n        {config.chunking && (\n          <>\n            <p>\n              <label>\n                <input\n                  type=\"checkbox\"\n                  checked={config.chunkDivs}\n                  onChange={event =>\n                    setConfig({\n                      chunkDivs: event.target.checked,\n                    })\n                  }\n                />{' '}\n                Render each chunk as a separate <code>&lt;div&gt;</code>\n              </label>\n            </p>\n\n            {config.chunkDivs && (\n              <p>\n                <label>\n                  <input\n                    type=\"checkbox\"\n                    checked={config.chunkOutlines}\n                    onChange={event =>\n                      setConfig({\n                        chunkOutlines: event.target.checked,\n                      })\n                    }\n                  />{' '}\n                  Outline each chunk\n                </label>\n              </p>\n            )}\n\n            <p>\n              <label>\n                Chunk size:{' '}\n                <select\n                  value={config.chunkSize}\n                  onChange={event =>\n                    setConfig({\n                      chunkSize: parseInt(event.target.value, 10),\n                    })\n                  }\n                >\n                  {chunkSizeOptions.map(chunkSize => (\n                    <option key={chunkSize} value={chunkSize}>\n                      {chunkSize}\n                    </option>\n                  ))}\n                </select>\n              </label>\n            </p>\n          </>\n        )}\n\n        <p>\n          <label>\n            Set <code>content-visibility: auto</code> on:{' '}\n            <select\n              value={config.contentVisibilityMode}\n              onChange={event =>\n                setConfig({\n                  contentVisibilityMode: event.target.value as any,\n                })\n              }\n            >\n              <option value=\"none\">None</option>\n              <option value=\"element\">Elements</option>\n              {config.chunking && config.chunkDivs && (\n                <option value=\"chunk\">Lowest chunks</option>\n              )}\n            </select>\n          </label>\n        </p>\n\n        <p>\n          <label>\n            <input\n              type=\"checkbox\"\n              checked={config.showSelectedHeadings}\n              onChange={event =>\n                setConfig({\n                  showSelectedHeadings: event.target.checked,\n                })\n              }\n            />{' '}\n            Call <code>useSelected</code> in each heading\n          </label>\n        </p>\n\n        <p>\n          <label>\n            <input\n              type=\"checkbox\"\n              checked={config.strictMode}\n              onChange={event =>\n                setConfig({\n                  strictMode: event.target.checked,\n                })\n              }\n            />{' '}\n            React strict mode (only works in localhost)\n          </label>\n        </p>\n      </details>\n\n      <details>\n        <summary>Statistics</summary>\n\n        <p>\n          Last keypress (ms):{' '}\n          {SUPPORTS_EVENT_TIMING\n            ? lastKeyPressDuration ?? '-'\n            : 'Not supported'}\n        </p>\n\n        <p>\n          Average of last 10 keypresses (ms):{' '}\n          {SUPPORTS_EVENT_TIMING\n            ? averageKeyPressDuration ?? '-'\n            : 'Not supported'}\n        </p>\n\n        <p>\n          Last long animation frame (ms):{' '}\n          {SUPPORTS_LOAF_TIMING\n            ? lastLongAnimationFrameDuration ?? '-'\n            : 'Not supported'}\n        </p>\n\n        {SUPPORTS_EVENT_TIMING && lastKeyPressDuration === null && (\n          <p>Events shorter than 16ms may not be detected.</p>\n        )}\n      </details>\n    </div>\n  )\n}\n\nexport default HugeDocumentExample\n"
  },
  {
    "path": "site/examples/ts/iframe.tsx",
    "content": "import isHotkey from 'is-hotkey'\nimport React, { PointerEvent, useCallback, useMemo, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Editor, createEditor, Descendant } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  RenderElementProps,\n  RenderLeafProps,\n  Slate,\n  useSlate,\n  withReact,\n} from 'slate-react'\n\nimport { Button, Icon, Toolbar } from './components'\nimport { CustomEditor, CustomTextKey } from './custom-types.d'\n\nconst HOTKEYS: Record<string, CustomTextKey> = {\n  'mod+b': 'bold',\n  'mod+i': 'italic',\n  'mod+u': 'underline',\n  'mod+`': 'code',\n}\n\nconst IFrameExample = () => {\n  const renderElement = useCallback(\n    ({ attributes, children }: RenderElementProps) => (\n      <p {...attributes}>{children}</p>\n    ),\n    []\n  )\n  const renderLeaf = useCallback(\n    (props: RenderLeafProps) => <Leaf {...props} />,\n    []\n  )\n  const editor = useMemo(\n    () => withHistory(withReact(createEditor())) as CustomEditor,\n    []\n  )\n\n  const handleBlur = useCallback(() => ReactEditor.deselect(editor), [editor])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <MarkButton format=\"bold\" icon=\"format_bold\" />\n        <MarkButton format=\"italic\" icon=\"format_italic\" />\n        <MarkButton format=\"underline\" icon=\"format_underlined\" />\n        <MarkButton format=\"code\" icon=\"code\" />\n      </Toolbar>\n      <IFrame onBlur={handleBlur}>\n        <Editable\n          renderElement={renderElement}\n          renderLeaf={renderLeaf}\n          placeholder=\"Enter some rich text…\"\n          spellCheck\n          autoFocus\n          onKeyDown={event => {\n            for (const hotkey in HOTKEYS) {\n              if (isHotkey(hotkey, event as any)) {\n                event.preventDefault()\n                const mark = HOTKEYS[hotkey]\n                toggleMark(editor, mark)\n              }\n            }\n          }}\n        />\n      </IFrame>\n    </Slate>\n  )\n}\n\nconst toggleMark = (editor: CustomEditor, format: CustomTextKey) => {\n  const isActive = isMarkActive(editor, format)\n  if (isActive) {\n    Editor.removeMark(editor, format)\n  } else {\n    Editor.addMark(editor, format, true)\n  }\n}\n\nconst isMarkActive = (editor: CustomEditor, format: CustomTextKey) => {\n  const marks = Editor.marks(editor)\n  return marks ? marks[format] === true : false\n}\n\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n\n  if (leaf.code) {\n    children = <code>{children}</code>\n  }\n\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n\n  return <span {...attributes}>{children}</span>\n}\n\ninterface MarkButtonProps {\n  format: CustomTextKey\n  icon: string\n}\n\nconst MarkButton = ({ format, icon }: MarkButtonProps) => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isMarkActive(editor, format)}\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n        event.preventDefault()\n      }}\n      onClick={() => toggleMark(editor, format)}\n    >\n      <Icon>{icon}</Icon>\n    </Button>\n  )\n}\n\ninterface IFrameProps extends React.IframeHTMLAttributes<HTMLIFrameElement> {\n  children: React.ReactNode\n}\n\nconst IFrame = ({ children, ...props }: IFrameProps) => {\n  const [iframeBody, setIframeBody] = useState<HTMLElement | null>(null)\n  const handleLoad = (e: React.SyntheticEvent<HTMLIFrameElement>) => {\n    const iframe = e.target as HTMLIFrameElement\n    if (!iframe.contentDocument) return\n    setIframeBody(iframe.contentDocument.body)\n  }\n  return (\n    <iframe srcDoc={`<!DOCTYPE html>`} {...props} onLoad={handleLoad}>\n      {iframeBody && createPortal(children, iframeBody)}\n    </iframe>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In this example, the document gets rendered into a controlled ',\n      },\n      { text: '<iframe>', code: true },\n      {\n        text: '. This is ',\n      },\n      {\n        text: 'particularly',\n        italic: true,\n      },\n      {\n        text: ' useful, when you need to separate the styles for your editor contents from the ones addressing your UI.',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This also the only reliable method to preview any ',\n      },\n      {\n        text: 'media queries',\n        bold: true,\n      },\n      {\n        text: ' in your CSS.',\n      },\n    ],\n  },\n]\n\nexport default IFrameExample\n"
  },
  {
    "path": "site/examples/ts/images.tsx",
    "content": "import { css } from '@emotion/css'\nimport imageExtensions from 'image-extensions'\nimport isHotkey from 'is-hotkey'\nimport isUrl from 'is-url'\nimport React, { PointerEvent, useMemo } from 'react'\nimport { Descendant, Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  RenderElementProps,\n  Slate,\n  useFocused,\n  useSelected,\n  useSlateStatic,\n  withReact,\n} from 'slate-react'\n\nimport { Button, Icon, Toolbar } from './components'\nimport {\n  CustomEditor,\n  ImageElement,\n  ParagraphElement,\n  RenderElementPropsFor,\n} from './custom-types.d'\n\nconst ImagesExample = () => {\n  const editor = useMemo(\n    () => withImages(withHistory(withReact(createEditor()))) as CustomEditor,\n    []\n  )\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <InsertImageButton />\n      </Toolbar>\n      <Editable\n        onKeyDown={event => {\n          if (isHotkey('mod+a', event)) {\n            event.preventDefault()\n            Transforms.select(editor, [])\n          }\n        }}\n        renderElement={(props: RenderElementProps) => <Element {...props} />}\n        placeholder=\"Enter some text...\"\n      />\n    </Slate>\n  )\n}\n\nconst withImages = (editor: CustomEditor) => {\n  const { insertData, isVoid } = editor\n\n  editor.isVoid = element => {\n    return element.type === 'image' ? true : isVoid(element)\n  }\n\n  editor.insertData = data => {\n    const text = data.getData('text/plain')\n    const { files } = data\n\n    if (files && files.length > 0) {\n      Array.from(files).forEach(file => {\n        const reader = new FileReader()\n        const [mime] = file.type.split('/')\n\n        if (mime === 'image') {\n          reader.addEventListener('load', () => {\n            const url = reader.result\n            insertImage(editor, url as string)\n          })\n\n          reader.readAsDataURL(file)\n        }\n      })\n    } else if (isImageUrl(text)) {\n      insertImage(editor, text)\n    } else {\n      insertData(data)\n    }\n  }\n\n  return editor\n}\n\nconst insertImage = (editor: CustomEditor, url: string) => {\n  const text = { text: '' }\n  const image: ImageElement = { type: 'image', url, children: [text] }\n  Transforms.insertNodes(editor, image)\n  const paragraph: ParagraphElement = {\n    type: 'paragraph',\n    children: [{ text: '' }],\n  }\n  Transforms.insertNodes(editor, paragraph)\n}\n\nconst Element = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n\n  switch (element.type) {\n    case 'image':\n      return <Image {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst Image = ({\n  attributes,\n  children,\n  element,\n}: RenderElementPropsFor<ImageElement>) => {\n  const editor = useSlateStatic()\n  const path = ReactEditor.findPath(editor, element)\n  const selected = useSelected()\n  const focused = useFocused()\n  return (\n    <div {...attributes}>\n      {children}\n      <div\n        contentEditable={false}\n        className={css`\n          position: relative;\n        `}\n      >\n        <img\n          src={element.url}\n          className={css`\n            display: block;\n            max-width: 100%;\n            max-height: 20em;\n            box-shadow: ${selected && focused ? '0 0 0 3px #B4D5FF' : 'none'};\n          `}\n        />\n        <Button\n          active\n          onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n            event.preventDefault()\n          }}\n          onClick={() => Transforms.removeNodes(editor, { at: path })}\n          className={css`\n            display: ${selected && focused ? 'inline' : 'none'};\n            position: absolute;\n            top: 0.5em;\n            left: 0.5em;\n            background-color: white;\n          `}\n        >\n          <Icon>delete</Icon>\n        </Button>\n      </div>\n    </div>\n  )\n}\n\nconst InsertImageButton = () => {\n  const editor = useSlateStatic()\n  return (\n    <Button\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) =>\n        event.preventDefault()\n      }\n      onClick={() => {\n        const url = window.prompt('Enter the URL of the image:')\n        if (url && !isImageUrl(url)) {\n          alert('URL is not an image')\n          return\n        }\n        url && insertImage(editor, url)\n      }}\n    >\n      <Icon>image</Icon>\n    </Button>\n  )\n}\n\nconst isImageUrl = (url: string): boolean => {\n  if (!url) return false\n  if (!isUrl(url)) return false\n  const ext = new URL(url).pathname.split('.').pop()\n  return imageExtensions.includes(ext!)\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In addition to nodes that contain editable text, you can also create other types of nodes, like images or videos.',\n      },\n    ],\n  },\n  {\n    type: 'image',\n    url: 'https://source.unsplash.com/kFrdX5IeQzI',\n    children: [{ text: '' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows images in action. It features two ways to add images. You can either add an image via the toolbar icon above, or if you want in on a little secret, copy an image URL to your clipboard and paste it anywhere in the editor!',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'You can delete images with the cross in the top left. Try deleting this sheep:',\n      },\n    ],\n  },\n  {\n    type: 'image',\n    url: 'https://source.unsplash.com/zOwZKwZOZq8',\n    children: [{ text: '' }],\n  },\n]\n\nexport default ImagesExample\n"
  },
  {
    "path": "site/examples/ts/inlines.tsx",
    "content": "import { css } from '@emotion/css'\nimport { isKeyHotkey } from 'is-hotkey'\nimport isUrl from 'is-url'\nimport React, { PointerEvent, useMemo } from 'react'\nimport {\n  createEditor,\n  Descendant,\n  Editor,\n  Node,\n  Range,\n  Transforms,\n} from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  RenderElementProps,\n  RenderLeafProps,\n  useSelected,\n  useSlate,\n  withReact,\n} from 'slate-react'\nimport * as SlateReact from 'slate-react'\n\nimport { Button, Icon, Toolbar } from './components'\nimport {\n  BadgeElement,\n  ButtonElement,\n  CustomEditor,\n  CustomElement,\n  LinkElement,\n  RenderElementPropsFor,\n} from './custom-types.d'\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'In addition to block nodes, you can create inline nodes. Here is a ',\n      },\n      {\n        type: 'link',\n        url: 'https://en.wikipedia.org/wiki/Hypertext',\n        children: [{ text: 'hyperlink' }],\n      },\n      {\n        text: ', and here is a more unusual inline: an ',\n      },\n      {\n        type: 'button',\n        children: [{ text: 'editable button' }],\n      },\n      {\n        text: '! Here is a read-only inline: ',\n      },\n      {\n        type: 'badge',\n        children: [{ text: 'Approved' }],\n      },\n      {\n        text: '.',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'There are two ways to add links. You can either add a link via the toolbar icon above, or if you want in on a little secret, copy a URL to your keyboard and paste it while a range of text is selected. ',\n      },\n      // The following is an example of an inline at the end of a block.\n      // This is an edge case that can cause issues.\n      {\n        type: 'link',\n        url: 'https://twitter.com/JustMissEmma/status/1448679899531726852',\n        children: [{ text: 'Finally, here is our favorite dog video.' }],\n      },\n      { text: '' },\n    ],\n  },\n]\nconst InlinesExample = () => {\n  const editor = useMemo(\n    () => withInlines(withHistory(withReact(createEditor()))) as CustomEditor,\n    []\n  )\n\n  const onKeyDown: React.KeyboardEventHandler<HTMLInputElement> = event => {\n    const { selection } = editor\n\n    // Default left/right behavior is unit:'character'.\n    // This fails to distinguish between two cursor positions, such as\n    // <inline>foo<cursor/></inline> vs <inline>foo</inline><cursor/>.\n    // Here we modify the behavior to unit:'offset'.\n    // This lets the user step into and out of the inline without stepping over characters.\n    // You may wish to customize this further to only use unit:'offset' in specific cases.\n    if (selection && Range.isCollapsed(selection)) {\n      const { nativeEvent } = event\n      if (isKeyHotkey('left', nativeEvent)) {\n        event.preventDefault()\n        Transforms.move(editor, { unit: 'offset', reverse: true })\n        return\n      }\n      if (isKeyHotkey('right', nativeEvent)) {\n        event.preventDefault()\n        Transforms.move(editor, { unit: 'offset' })\n        return\n      }\n    }\n  }\n\n  return (\n    <SlateReact.Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <AddLinkButton />\n        <RemoveLinkButton />\n        <ToggleEditableButtonButton />\n      </Toolbar>\n      <Editable\n        renderElement={props => <Element {...props} />}\n        renderLeaf={props => <Text {...props} />}\n        placeholder=\"Enter some text...\"\n        onKeyDown={onKeyDown}\n      />\n    </SlateReact.Slate>\n  )\n}\n\nconst withInlines = (editor: CustomEditor) => {\n  const { insertData, insertText, isInline, isElementReadOnly, isSelectable } =\n    editor\n\n  editor.isInline = (element: CustomElement) =>\n    ['link', 'button', 'badge'].includes(element.type) || isInline(element)\n\n  editor.isElementReadOnly = (element: CustomElement) =>\n    element.type === 'badge' || isElementReadOnly(element)\n\n  editor.isSelectable = (element: CustomElement) =>\n    element.type !== 'badge' && isSelectable(element)\n\n  editor.insertText = text => {\n    if (text && isUrl(text)) {\n      wrapLink(editor, text)\n    } else {\n      insertText(text)\n    }\n  }\n\n  editor.insertData = data => {\n    const text = data.getData('text/plain')\n\n    if (text && isUrl(text)) {\n      wrapLink(editor, text)\n    } else {\n      insertData(data)\n    }\n  }\n\n  return editor\n}\n\nconst insertLink = (editor: CustomEditor, url: string) => {\n  if (editor.selection) {\n    wrapLink(editor, url)\n  }\n}\n\nconst insertButton = (editor: CustomEditor) => {\n  if (editor.selection) {\n    wrapButton(editor)\n  }\n}\n\nconst isLinkActive = (editor: CustomEditor): boolean => {\n  const [link] = Editor.nodes(editor, {\n    match: n => Node.isElement(n) && n.type === 'link',\n  })\n  return !!link\n}\n\nconst isButtonActive = (editor: CustomEditor): boolean => {\n  const [button] = Editor.nodes(editor, {\n    match: n => Node.isElement(n) && n.type === 'button',\n  })\n  return !!button\n}\n\nconst unwrapLink = (editor: CustomEditor) => {\n  Transforms.unwrapNodes(editor, {\n    match: n => Node.isElement(n) && n.type === 'link',\n  })\n}\n\nconst unwrapButton = (editor: CustomEditor) => {\n  Transforms.unwrapNodes(editor, {\n    match: n => Node.isElement(n) && n.type === 'button',\n  })\n}\n\nconst wrapLink = (editor: CustomEditor, url: string) => {\n  if (isLinkActive(editor)) {\n    unwrapLink(editor)\n  }\n\n  const { selection } = editor\n  const isCollapsed = selection && Range.isCollapsed(selection)\n  const link: LinkElement = {\n    type: 'link',\n    url,\n    children: isCollapsed ? [{ text: url }] : [],\n  }\n\n  if (isCollapsed) {\n    Transforms.insertNodes(editor, link)\n  } else {\n    Transforms.wrapNodes(editor, link, { split: true })\n    Transforms.collapse(editor, { edge: 'end' })\n  }\n}\n\nconst wrapButton = (editor: CustomEditor) => {\n  if (isButtonActive(editor)) {\n    unwrapButton(editor)\n  }\n\n  const { selection } = editor\n  const isCollapsed = selection && Range.isCollapsed(selection)\n  const button: ButtonElement = {\n    type: 'button',\n    children: isCollapsed ? [{ text: 'Edit me!' }] : [],\n  }\n\n  if (isCollapsed) {\n    Transforms.insertNodes(editor, button)\n  } else {\n    Transforms.wrapNodes(editor, button, { split: true })\n    Transforms.collapse(editor, { edge: 'end' })\n  }\n}\n\n// Put this at the start and end of an inline component to work around this Chromium bug:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\nconst InlineChromiumBugfix = () => (\n  <span\n    contentEditable={false}\n    className={css`\n      font-size: 0;\n    `}\n  >\n    {String.fromCodePoint(160) /* Non-breaking space */}\n  </span>\n)\n\nconst allowedSchemes = ['http:', 'https:', 'mailto:', 'tel:']\n\nconst LinkComponent = ({\n  attributes,\n  children,\n  element,\n}: RenderElementPropsFor<LinkElement>) => {\n  const selected = useSelected()\n  const safeUrl = useMemo(() => {\n    let parsedUrl: URL | null = null\n    try {\n      parsedUrl = new URL(element.url)\n      // eslint-disable-next-line no-empty\n    } catch {}\n    if (parsedUrl && allowedSchemes.includes(parsedUrl.protocol)) {\n      return parsedUrl.href\n    }\n    return 'about:blank'\n  }, [element.url])\n\n  return (\n    <a\n      {...attributes}\n      href={safeUrl}\n      className={\n        selected\n          ? css`\n              box-shadow: 0 0 0 3px #ddd;\n            `\n          : ''\n      }\n    >\n      <InlineChromiumBugfix />\n      {children}\n      <InlineChromiumBugfix />\n    </a>\n  )\n}\n\nconst EditableButtonComponent = ({\n  attributes,\n  children,\n}: RenderElementProps) => {\n  return (\n    /*\n      Note that this is not a true button, but a span with button-like CSS.\n      True buttons are display:inline-block, but Chrome and Safari\n      have a bad bug with display:inline-block inside contenteditable:\n      - https://bugs.webkit.org/show_bug.cgi?id=105898\n      - https://bugs.chromium.org/p/chromium/issues/detail?id=1088403\n      Worse, one cannot override the display property: https://github.com/w3c/csswg-drafts/issues/3226\n      The only current workaround is to emulate the appearance of a display:inline button using CSS.\n    */\n    <span\n      {...attributes}\n      onClick={ev => ev.preventDefault()}\n      // Margin is necessary to clearly show the cursor adjacent to the button\n      className={css`\n        margin: 0 0.1em;\n\n        background-color: #efefef;\n        padding: 2px 6px;\n        border: 1px solid #767676;\n        border-radius: 2px;\n        font-size: 0.9em;\n      `}\n    >\n      <InlineChromiumBugfix />\n      {children}\n      <InlineChromiumBugfix />\n    </span>\n  )\n}\n\nconst BadgeComponent = ({\n  attributes,\n  children,\n  element,\n}: RenderElementProps) => {\n  const selected = useSelected()\n\n  return (\n    <span\n      {...attributes}\n      contentEditable={false}\n      className={css`\n        background-color: green;\n        color: white;\n        padding: 2px 6px;\n        border-radius: 2px;\n        font-size: 0.9em;\n        ${selected && 'box-shadow: 0 0 0 3px #ddd;'}\n      `}\n      data-playwright-selected={selected}\n    >\n      <InlineChromiumBugfix />\n      {children}\n      <InlineChromiumBugfix />\n    </span>\n  )\n}\n\nconst Element = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'link':\n      return <LinkComponent {...props} />\n    case 'button':\n      return <EditableButtonComponent {...props} />\n    case 'badge':\n      return <BadgeComponent {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst Text = (props: RenderLeafProps) => {\n  const { attributes, children, leaf } = props\n  return (\n    <span\n      // The following is a workaround for a Chromium bug where,\n      // if you have an inline at the end of a block,\n      // clicking the end of a block puts the cursor inside the inline\n      // instead of inside the final {text: ''} node\n      // https://github.com/ianstormtaylor/slate/issues/4704#issuecomment-1006696364\n      className={\n        leaf.text === ''\n          ? css`\n              padding-left: 0.1px;\n            `\n          : undefined\n      }\n      {...attributes}\n    >\n      {children}\n    </span>\n  )\n}\n\nconst AddLinkButton = () => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isLinkActive(editor)}\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) =>\n        event.preventDefault()\n      }\n      onClick={() => {\n        const url = window.prompt('Enter the URL of the link:')\n        if (!url) return\n        insertLink(editor, url)\n      }}\n    >\n      <Icon>link</Icon>\n    </Button>\n  )\n}\n\nconst RemoveLinkButton = () => {\n  const editor = useSlate()\n\n  return (\n    <Button\n      active={isLinkActive(editor)}\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) =>\n        event.preventDefault()\n      }\n      onClick={() => {\n        if (isLinkActive(editor)) {\n          unwrapLink(editor)\n        }\n      }}\n    >\n      <Icon>link_off</Icon>\n    </Button>\n  )\n}\n\nconst ToggleEditableButtonButton = () => {\n  const editor = useSlate()\n  return (\n    <Button\n      active\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) =>\n        event.preventDefault()\n      }\n      onClick={() => {\n        if (isButtonActive(editor)) {\n          unwrapButton(editor)\n        } else {\n          insertButton(editor)\n        }\n      }}\n    >\n      <Icon>smart_button</Icon>\n    </Button>\n  )\n}\n\nexport default InlinesExample\n"
  },
  {
    "path": "site/examples/ts/markdown-preview.tsx",
    "content": "import { css } from '@emotion/css'\nimport Prism from 'prismjs'\nimport 'prismjs/components/prism-markdown'\nimport React, { useCallback, useMemo } from 'react'\nimport { Descendant, Node, NodeEntry, Range, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, RenderLeafProps, Slate, withReact } from 'slate-react'\nimport { CustomEditor } from './custom-types.d'\n\nconst MarkdownPreviewExample = () => {\n  const renderLeaf = useCallback(\n    (props: RenderLeafProps) => <Leaf {...props} />,\n    []\n  )\n  const editor = useMemo(\n    () => withHistory(withReact(createEditor())) as CustomEditor,\n    []\n  )\n  const decorate = useCallback(([node, path]: NodeEntry) => {\n    const ranges: Range[] = []\n\n    if (!Node.isText(node)) {\n      return ranges\n    }\n\n    const getLength = (token: string | Prism.Token): number => {\n      if (typeof token === 'string') {\n        return token.length\n      } else if (typeof token.content === 'string') {\n        return token.content.length\n      } else {\n        return (token.content as Prism.Token[]).reduce(\n          (l, t) => l + getLength(t),\n          0\n        )\n      }\n    }\n\n    const tokens = Prism.tokenize(node.text, Prism.languages.markdown)\n    let start = 0\n\n    for (const token of tokens) {\n      const length = getLength(token)\n      const end = start + length\n\n      if (typeof token !== 'string') {\n        ranges.push({\n          [token.type]: true,\n          anchor: { path, offset: start },\n          focus: { path, offset: end },\n        })\n      }\n\n      start = end\n    }\n\n    return ranges\n  }, [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        decorate={decorate}\n        renderLeaf={renderLeaf}\n        placeholder=\"Write some markdown...\"\n      />\n    </Slate>\n  )\n}\n\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  return (\n    <span\n      {...attributes}\n      className={css`\n        font-weight: ${leaf.bold && 'bold'};\n        font-style: ${leaf.italic && 'italic'};\n        text-decoration: ${leaf.underlined && 'underline'};\n        ${leaf.title &&\n        css`\n          display: inline-block;\n          font-weight: bold;\n          font-size: 20px;\n          margin: 20px 0 10px 0;\n        `}\n        ${leaf.list &&\n        css`\n          padding-left: 10px;\n          font-size: 20px;\n          line-height: 10px;\n        `}\n        ${leaf.hr &&\n        css`\n          display: block;\n          text-align: center;\n          border-bottom: 2px solid #ddd;\n        `}\n        ${leaf.blockquote &&\n        css`\n          display: inline-block;\n          border-left: 2px solid #ddd;\n          padding-left: 10px;\n          color: #aaa;\n          font-style: italic;\n        `}\n        ${leaf.code &&\n        css`\n          font-family: monospace;\n          background-color: #eee;\n          padding: 3px;\n        `}\n      `}\n    >\n      {children}\n    </span>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Slate is flexible enough to add **decorations** that can format text based on its content. For example, this editor has **Markdown** preview decorations on it, to make it _dead_ simple to make an editor with built-in Markdown previewing.',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: '## Try it out!' }],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: 'Try it out for yourself!' }],\n  },\n]\n\nexport default MarkdownPreviewExample\n"
  },
  {
    "path": "site/examples/ts/markdown-shortcuts.tsx",
    "content": "import React, { useCallback, useMemo } from 'react'\nimport {\n  createEditor,\n  Descendant,\n  Editor,\n  Element as SlateElement,\n  Node,\n  Point,\n  Range,\n  Transforms,\n} from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  RenderElementProps,\n  Slate,\n  withReact,\n} from 'slate-react'\n\nimport {\n  BulletedListElement,\n  CustomEditor,\n  CustomElementType,\n} from './custom-types.d'\n\nconst SHORTCUTS: Record<string, CustomElementType> = {\n  '*': 'list-item',\n  '-': 'list-item',\n  '+': 'list-item',\n  '>': 'block-quote',\n  '#': 'heading-one',\n  '##': 'heading-two',\n  '###': 'heading-three',\n  '####': 'heading-four',\n  '#####': 'heading-five',\n  '######': 'heading-six',\n} as const\n\nconst MarkdownShortcutsExample = () => {\n  const renderElement = useCallback(\n    (props: RenderElementProps) => <Element {...props} />,\n    []\n  )\n  const editor = useMemo(\n    () => withShortcuts(withReact(withHistory(createEditor()))) as CustomEditor,\n    []\n  )\n\n  const handleDOMBeforeInput = useCallback(\n    (e: InputEvent) => {\n      queueMicrotask(() => {\n        const pendingDiffs = ReactEditor.androidPendingDiffs(editor)\n\n        const scheduleFlush = pendingDiffs?.some(({ diff, path }) => {\n          if (!diff.text.endsWith(' ')) {\n            return false\n          }\n\n          const { text } = Node.leaf(editor, path)\n          const beforeText = text.slice(0, diff.start) + diff.text.slice(0, -1)\n          if (!(beforeText in SHORTCUTS)) {\n            return\n          }\n\n          const blockEntry = Editor.above(editor, {\n            at: path,\n            match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n          })\n          if (!blockEntry) {\n            return false\n          }\n\n          const [, blockPath] = blockEntry\n          return Editor.isStart(editor, Editor.start(editor, path), blockPath)\n        })\n\n        if (scheduleFlush) {\n          ReactEditor.androidScheduleFlush(editor)\n        }\n      })\n    },\n    [editor]\n  )\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        onDOMBeforeInput={handleDOMBeforeInput}\n        renderElement={renderElement}\n        placeholder=\"Write some markdown...\"\n        spellCheck\n        autoFocus\n      />\n    </Slate>\n  )\n}\n\nconst withShortcuts = (editor: CustomEditor) => {\n  const { deleteBackward, insertText } = editor\n\n  editor.insertText = text => {\n    const { selection } = editor\n\n    if (text.endsWith(' ') && selection && Range.isCollapsed(selection)) {\n      const { anchor } = selection\n      const block = Editor.above(editor, {\n        match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      })\n      const path = block ? block[1] : []\n      const start = Editor.start(editor, path)\n      const range = { anchor, focus: start }\n      const beforeText = Editor.string(editor, range) + text.slice(0, -1)\n      const type = SHORTCUTS[beforeText]\n\n      if (type) {\n        Transforms.select(editor, range)\n\n        if (!Range.isCollapsed(range)) {\n          Transforms.delete(editor)\n        }\n\n        const newProperties: Partial<SlateElement> = {\n          type,\n        }\n        Transforms.setNodes<SlateElement>(editor, newProperties, {\n          match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n        })\n\n        if (type === 'list-item') {\n          const list: BulletedListElement = {\n            type: 'bulleted-list',\n            children: [],\n          }\n          Transforms.wrapNodes(editor, list, {\n            match: n => Node.isElement(n) && n.type === 'list-item',\n          })\n        }\n\n        return\n      }\n    }\n\n    insertText(text)\n  }\n\n  editor.deleteBackward = (...args) => {\n    const { selection } = editor\n\n    if (selection && Range.isCollapsed(selection)) {\n      const match = Editor.above(editor, {\n        match: n => Node.isElement(n) && Editor.isBlock(editor, n),\n      })\n\n      if (match) {\n        const [block, path] = match\n        const start = Editor.start(editor, path)\n\n        if (\n          Node.isElement(block) &&\n          block.type !== 'paragraph' &&\n          Point.equals(selection.anchor, start)\n        ) {\n          const newProperties: Partial<SlateElement> = {\n            type: 'paragraph',\n          }\n          Transforms.setNodes(editor, newProperties)\n\n          if (block.type === 'list-item') {\n            Transforms.unwrapNodes(editor, {\n              match: n => Node.isElement(n) && n.type === 'bulleted-list',\n              split: true,\n            })\n          }\n\n          return\n        }\n      }\n\n      deleteBackward(...args)\n    }\n  }\n\n  return editor\n}\n\nconst Element = ({ attributes, children, element }: RenderElementProps) => {\n  switch (element.type) {\n    case 'block-quote':\n      return <blockquote {...attributes}>{children}</blockquote>\n    case 'bulleted-list':\n      return <ul {...attributes}>{children}</ul>\n    case 'heading-one':\n      return <h1 {...attributes}>{children}</h1>\n    case 'heading-two':\n      return <h2 {...attributes}>{children}</h2>\n    case 'heading-three':\n      return <h3 {...attributes}>{children}</h3>\n    case 'heading-four':\n      return <h4 {...attributes}>{children}</h4>\n    case 'heading-five':\n      return <h5 {...attributes}>{children}</h5>\n    case 'heading-six':\n      return <h6 {...attributes}>{children}</h6>\n    case 'list-item':\n      return <li {...attributes}>{children}</li>\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'The editor gives you full control over the logic you can add. For example, it\\'s fairly common to want to add markdown-like shortcuts to editors. So that, when you start a line with \"> \" you get a blockquote that looks like this:',\n      },\n    ],\n  },\n  {\n    type: 'block-quote',\n    children: [{ text: 'A wise quote.' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Order when you start a line with \"## \" you get a level-two heading, like this:',\n      },\n    ],\n  },\n  {\n    type: 'heading-two',\n    children: [{ text: 'Try it out!' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Try it out for yourself! Try starting a new line with \">\", \"-\", or \"#\"s.',\n      },\n    ],\n  },\n]\n\nexport default MarkdownShortcutsExample\n"
  },
  {
    "path": "site/examples/ts/mentions.tsx",
    "content": "import React, {\n  Fragment,\n  KeyboardEvent,\n  MouseEvent,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport {\n  Editor,\n  Transforms,\n  Range,\n  createEditor,\n  Descendant,\n  Element as SlateElement,\n} from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  ReactEditor,\n  RenderElementProps,\n  RenderLeafProps,\n  Slate,\n  useFocused,\n  useSelected,\n  withReact,\n} from 'slate-react'\n\nimport { Portal } from './components'\nimport {\n  CustomEditor,\n  MentionElement,\n  RenderElementPropsFor,\n} from './custom-types.d'\nimport { IS_MAC } from './utils/environment'\n\nconst MentionExample = () => {\n  const ref = useRef<HTMLDivElement | null>(null)\n  const [target, setTarget] = useState<Range | null>(null)\n  const [index, setIndex] = useState(0)\n  const [search, setSearch] = useState('')\n  const renderElement = useCallback(\n    (props: RenderElementProps) => <Element {...props} />,\n    []\n  )\n  const renderLeaf = useCallback(\n    (props: RenderLeafProps) => <Leaf {...props} />,\n    []\n  )\n  const editor = useMemo(\n    () => withMentions(withReact(withHistory(createEditor()))) as CustomEditor,\n    []\n  )\n\n  const chars = CHARACTERS.filter(c =>\n    c.toLowerCase().startsWith(search.toLowerCase())\n  ).slice(0, 10)\n\n  const onKeyDown = useCallback(\n    (event: KeyboardEvent<HTMLDivElement>) => {\n      if (target && chars.length > 0) {\n        switch (event.key) {\n          case 'ArrowDown':\n            event.preventDefault()\n            const prevIndex = index >= chars.length - 1 ? 0 : index + 1\n            setIndex(prevIndex)\n            break\n          case 'ArrowUp':\n            event.preventDefault()\n            const nextIndex = index <= 0 ? chars.length - 1 : index - 1\n            setIndex(nextIndex)\n            break\n          case 'Tab':\n          case 'Enter':\n            event.preventDefault()\n            Transforms.select(editor, target)\n            insertMention(editor, chars[index])\n            setTarget(null)\n            break\n          case 'Escape':\n            event.preventDefault()\n            setTarget(null)\n            break\n        }\n      }\n    },\n    [chars, editor, index, target]\n  )\n\n  useEffect(() => {\n    if (target && chars.length > 0 && ref.current) {\n      const el = ref.current\n      const domRange = ReactEditor.toDOMRange(editor, target)\n      const rect = domRange.getBoundingClientRect()\n      el.style.top = `${rect.top + window.pageYOffset + 24}px`\n      el.style.left = `${rect.left + window.pageXOffset}px`\n    }\n  }, [chars.length, editor, index, search, target])\n\n  return (\n    <Slate\n      editor={editor}\n      initialValue={initialValue}\n      onChange={() => {\n        const { selection } = editor\n\n        if (selection && Range.isCollapsed(selection)) {\n          const [start] = Range.edges(selection)\n          const wordBefore = Editor.before(editor, start, { unit: 'word' })\n          const before = wordBefore && Editor.before(editor, wordBefore)\n          const beforeRange = before && Editor.range(editor, before, start)\n          const beforeText = beforeRange && Editor.string(editor, beforeRange)\n          const beforeMatch = beforeText && beforeText.match(/^@(\\w+)$/)\n          const after = Editor.after(editor, start)\n          const afterRange = Editor.range(editor, start, after)\n          const afterText = Editor.string(editor, afterRange)\n          const afterMatch = afterText.match(/^(\\s|$)/)\n\n          if (beforeMatch && afterMatch) {\n            setTarget(beforeRange)\n            setSearch(beforeMatch[1])\n            setIndex(0)\n            return\n          }\n        }\n\n        setTarget(null)\n      }}\n    >\n      <Editable\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        onKeyDown={onKeyDown}\n        placeholder=\"Enter some text...\"\n      />\n      {target && chars.length > 0 && (\n        <Portal>\n          <div\n            ref={ref}\n            style={{\n              top: '-9999px',\n              left: '-9999px',\n              position: 'absolute',\n              zIndex: 1,\n              padding: '3px',\n              background: 'white',\n              borderRadius: '4px',\n              boxShadow: '0 1px 5px rgba(0,0,0,.2)',\n            }}\n            data-cy=\"mentions-portal\"\n          >\n            {chars.map((char, i) => (\n              <div\n                key={char}\n                onClick={(e: MouseEvent) => {\n                  Transforms.select(editor, target)\n                  insertMention(editor, char)\n                  setTarget(null)\n                }}\n                style={{\n                  padding: '1px 3px',\n                  borderRadius: '3px',\n                  cursor: 'pointer',\n                  background: i === index ? '#B4D5FF' : 'transparent',\n                }}\n              >\n                {char}\n              </div>\n            ))}\n          </div>\n        </Portal>\n      )}\n    </Slate>\n  )\n}\n\nconst withMentions = (editor: CustomEditor) => {\n  const { isInline, isVoid, markableVoid } = editor\n\n  editor.isInline = (element: SlateElement) => {\n    return element.type === 'mention' ? true : isInline(element)\n  }\n\n  editor.isVoid = (element: SlateElement) => {\n    return element.type === 'mention' ? true : isVoid(element)\n  }\n\n  editor.markableVoid = (element: SlateElement) => {\n    return element.type === 'mention' || markableVoid(element)\n  }\n\n  return editor\n}\n\nconst insertMention = (editor: CustomEditor, character: string) => {\n  const mention: MentionElement = {\n    type: 'mention',\n    character,\n    children: [{ text: '' }],\n  }\n  Transforms.insertNodes(editor, mention)\n  Transforms.move(editor)\n}\n\n// Borrow Leaf renderer from the Rich Text example.\n// In a real project you would get this via `withRichText(editor)` or similar.\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n\n  if (leaf.code) {\n    children = <code>{children}</code>\n  }\n\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n\n  return <span {...attributes}>{children}</span>\n}\n\nconst Element = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n  switch (element.type) {\n    case 'mention':\n      return <Mention {...props} />\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst Mention = ({\n  attributes,\n  children,\n  element,\n}: RenderElementPropsFor<MentionElement>) => {\n  const selected = useSelected()\n  const focused = useFocused()\n  const style: React.CSSProperties = {\n    padding: '3px 3px 2px',\n    margin: '0 1px',\n    verticalAlign: 'baseline',\n    display: 'inline-block',\n    borderRadius: '4px',\n    backgroundColor: '#eee',\n    fontSize: '0.9em',\n    boxShadow: selected && focused ? '0 0 0 2px #B4D5FF' : 'none',\n  }\n  // See if our empty text child has any styling marks applied and apply those\n  if (element.children[0].bold) {\n    style.fontWeight = 'bold'\n  }\n  if (element.children[0].italic) {\n    style.fontStyle = 'italic'\n  }\n  return (\n    <span\n      {...attributes}\n      contentEditable={false}\n      data-cy={`mention-${element.character.replace(' ', '-')}`}\n      style={style}\n    >\n      {/* Prevent Chromium from interrupting IME when moving the cursor */}\n      {/* 1. span + inline-block 2. div + contenteditable=false */}\n      <div contentEditable={false}>\n        {IS_MAC ? (\n          // Mac OS IME https://github.com/ianstormtaylor/slate/issues/3490\n          <Fragment>\n            {children}@{element.character}\n          </Fragment>\n        ) : (\n          // Others like Android https://github.com/ianstormtaylor/slate/pull/5360\n          <Fragment>\n            @{element.character}\n            {children}\n          </Fragment>\n        )}\n      </div>\n    </span>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows how you might implement a simple ',\n      },\n      {\n        text: '@-mentions',\n        bold: true,\n      },\n      {\n        text: ' feature that lets users autocomplete mentioning a user by their username. Which, in this case means Star Wars characters. The ',\n      },\n      {\n        text: 'mentions',\n        bold: true,\n      },\n      {\n        text: ' are rendered as ',\n      },\n      {\n        text: 'void inline elements',\n        code: true,\n      },\n      {\n        text: ' inside the document.',\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'Try mentioning characters, like ' },\n      {\n        type: 'mention',\n        character: 'R2-D2',\n        children: [{ text: '', bold: true }],\n      },\n      { text: ' or ' },\n      {\n        type: 'mention',\n        character: 'Mace Windu',\n        children: [{ text: '' }],\n      },\n      { text: '!' },\n    ],\n  },\n]\n\nconst CHARACTERS = [\n  'Aayla Secura',\n  'Adi Gallia',\n  'Admiral Dodd Rancit',\n  'Admiral Firmus Piett',\n  'Admiral Gial Ackbar',\n  'Admiral Ozzel',\n  'Admiral Raddus',\n  'Admiral Terrinald Screed',\n  'Admiral Trench',\n  'Admiral U.O. Statura',\n  'Agen Kolar',\n  'Agent Kallus',\n  'Aiolin and Morit Astarte',\n  'Aks Moe',\n  'Almec',\n  'Alton Kastle',\n  'Amee',\n  'AP-5',\n  'Armitage Hux',\n  'Artoo',\n  'Arvel Crynyd',\n  'Asajj Ventress',\n  'Aurra Sing',\n  'AZI-3',\n  'Bala-Tik',\n  'Barada',\n  'Bargwill Tomder',\n  'Baron Papanoida',\n  'Barriss Offee',\n  'Baze Malbus',\n  'Bazine Netal',\n  'BB-8',\n  'BB-9E',\n  'Ben Quadinaros',\n  'Berch Teller',\n  'Beru Lars',\n  'Bib Fortuna',\n  'Biggs Darklighter',\n  'Black Krrsantan',\n  'Bo-Katan Kryze',\n  'Boba Fett',\n  'Bobbajo',\n  'Bodhi Rook',\n  'Borvo the Hutt',\n  'Boss Nass',\n  'Bossk',\n  'Breha Antilles-Organa',\n  'Bren Derlin',\n  'Brendol Hux',\n  'BT-1',\n  'C-3PO',\n  'C1-10P',\n  'Cad Bane',\n  'Caluan Ematt',\n  'Captain Gregor',\n  'Captain Phasma',\n  'Captain Quarsh Panaka',\n  'Captain Rex',\n  'Carlist Rieekan',\n  'Casca Panzoro',\n  'Cassian Andor',\n  'Cassio Tagge',\n  'Cham Syndulla',\n  'Che Amanwe Papanoida',\n  'Chewbacca',\n  'Chi Eekway Papanoida',\n  'Chief Chirpa',\n  'Chirrut Îmwe',\n  'Ciena Ree',\n  'Cin Drallig',\n  'Clegg Holdfast',\n  'Cliegg Lars',\n  'Coleman Kcaj',\n  'Coleman Trebor',\n  'Colonel Kaplan',\n  'Commander Bly',\n  'Commander Cody (CC-2224)',\n  'Commander Fil (CC-3714)',\n  'Commander Fox',\n  'Commander Gree',\n  'Commander Jet',\n  'Commander Wolffe',\n  'Conan Antonio Motti',\n  'Conder Kyl',\n  'Constable Zuvio',\n  'Cordé',\n  'Cpatain Typho',\n  'Crix Madine',\n  'Cut Lawquane',\n  'Dak Ralter',\n  'Dapp',\n  'Darth Bane',\n  'Darth Maul',\n  'Darth Tyranus',\n  'Daultay Dofine',\n  'Del Meeko',\n  'Delian Mors',\n  'Dengar',\n  'Depa Billaba',\n  'Derek Klivian',\n  'Dexter Jettster',\n  'Dineé Ellberger',\n  'DJ',\n  'Doctor Aphra',\n  'Doctor Evazan',\n  'Dogma',\n  'Dormé',\n  'Dr. Cylo',\n  'Droidbait',\n  'Droopy McCool',\n  'Dryden Vos',\n  'Dud Bolt',\n  'Ebe E. Endocott',\n  'Echuu Shen-Jon',\n  'Eeth Koth',\n  'Eighth Brother',\n  'Eirtaé',\n  'Eli Vanto',\n  'Ellé',\n  'Ello Asty',\n  'Embo',\n  'Eneb Ray',\n  'Enfys Nest',\n  'EV-9D9',\n  'Evaan Verlaine',\n  'Even Piell',\n  'Ezra Bridger',\n  'Faro Argyus',\n  'Feral',\n  'Fifth Brother',\n  'Finis Valorum',\n  'Finn',\n  'Fives',\n  'FN-1824',\n  'FN-2003',\n  'Fodesinbeed Annodue',\n  'Fulcrum',\n  'FX-7',\n  'GA-97',\n  'Galen Erso',\n  'Gallius Rax',\n  'Garazeb \"Zeb\" Orrelios',\n  'Gardulla the Hutt',\n  'Garrick Versio',\n  'Garven Dreis',\n  'Gavyn Sykes',\n  'Gideon Hask',\n  'Gizor Dellso',\n  'Gonk droid',\n  'Grand Inquisitor',\n  'Greeata Jendowanian',\n  'Greedo',\n  'Greer Sonnel',\n  'Grievous',\n  'Grummgar',\n  'Gungi',\n  'Hammerhead',\n  'Han Solo',\n  'Harter Kalonia',\n  'Has Obbit',\n  'Hera Syndulla',\n  'Hevy',\n  'Hondo Ohnaka',\n  'Huyang',\n  'Iden Versio',\n  'IG-88',\n  'Ima-Gun Di',\n  'Inquisitors',\n  'Inspector Thanoth',\n  'Jabba',\n  'Jacen Syndulla',\n  'Jan Dodonna',\n  'Jango Fett',\n  'Janus Greejatus',\n  'Jar Jar Binks',\n  'Jas Emari',\n  'Jaxxon',\n  'Jek Tono Porkins',\n  'Jeremoch Colton',\n  'Jira',\n  'Jobal Naberrie',\n  'Jocasta Nu',\n  'Joclad Danva',\n  'Joh Yowza',\n  'Jom Barell',\n  'Joph Seastriker',\n  'Jova Tarkin',\n  'Jubnuk',\n  'Jyn Erso',\n  'K-2SO',\n  'Kanan Jarrus',\n  'Karbin',\n  'Karina the Great',\n  'Kes Dameron',\n  'Ketsu Onyo',\n  'Ki-Adi-Mundi',\n  'King Katuunko',\n  'Kit Fisto',\n  'Kitster Banai',\n  'Klaatu',\n  'Klik-Klak',\n  'Korr Sella',\n  'Kylo Ren',\n  'L3-37',\n  'Lama Su',\n  'Lando Calrissian',\n  'Lanever Villecham',\n  'Leia Organa',\n  'Letta Turmond',\n  'Lieutenant Kaydel Ko Connix',\n  'Lieutenant Thire',\n  'Lobot',\n  'Logray',\n  'Lok Durd',\n  'Longo Two-Guns',\n  'Lor San Tekka',\n  'Lorth Needa',\n  'Lott Dod',\n  'Luke Skywalker',\n  'Lumat',\n  'Luminara Unduli',\n  'Lux Bonteri',\n  'Lyn Me',\n  'Lyra Erso',\n  'Mace Windu',\n  'Malakili',\n  'Mama the Hutt',\n  'Mars Guo',\n  'Mas Amedda',\n  'Mawhonic',\n  'Max Rebo',\n  'Maximilian Veers',\n  'Maz Kanata',\n  'ME-8D9',\n  'Meena Tills',\n  'Mercurial Swift',\n  'Mina Bonteri',\n  'Miraj Scintel',\n  'Mister Bones',\n  'Mod Terrik',\n  'Moden Canady',\n  'Mon Mothma',\n  'Moradmin Bast',\n  'Moralo Eval',\n  'Morley',\n  'Mother Talzin',\n  'Nahdar Vebb',\n  'Nahdonnis Praji',\n  'Nien Nunb',\n  'Niima the Hutt',\n  'Nines',\n  'Norra Wexley',\n  'Nute Gunray',\n  'Nuvo Vindi',\n  'Obi-Wan Kenobi',\n  'Odd Ball',\n  'Ody Mandrell',\n  'Omi',\n  'Onaconda Farr',\n  'Oola',\n  'OOM-9',\n  'Oppo Rancisis',\n  'Orn Free Taa',\n  'Oro Dassyne',\n  'Orrimarko',\n  'Osi Sobeck',\n  'Owen Lars',\n  'Pablo-Jill',\n  'Padmé Amidala',\n  'Pagetti Rook',\n  'Paige Tico',\n  'Paploo',\n  'Petty Officer Thanisson',\n  'Pharl McQuarrie',\n  'Plo Koon',\n  'Po Nudo',\n  'Poe Dameron',\n  'Poggle the Lesser',\n  'Pong Krell',\n  'Pooja Naberrie',\n  'PZ-4CO',\n  'Quarrie',\n  'Quay Tolsite',\n  'Queen Apailana',\n  'Queen Jamillia',\n  'Queen Neeyutnee',\n  'Qui-Gon Jinn',\n  'Quiggold',\n  'Quinlan Vos',\n  'R2-D2',\n  'R2-KT',\n  'R3-S6',\n  'R4-P17',\n  'R5-D4',\n  'RA-7',\n  'Rabé',\n  'Rako Hardeen',\n  'Ransolm Casterfo',\n  'Rappertunie',\n  'Ratts Tyerell',\n  'Raymus Antilles',\n  'Ree-Yees',\n  'Reeve Panzoro',\n  'Rey',\n  'Ric Olié',\n  'Riff Tamson',\n  'Riley',\n  'Rinnriyin Di',\n  'Rio Durant',\n  'Rogue Squadron',\n  'Romba',\n  'Roos Tarpals',\n  'Rose Tico',\n  'Rotta the Hutt',\n  'Rukh',\n  'Rune Haako',\n  'Rush Clovis',\n  'Ruwee Naberrie',\n  'Ryoo Naberrie',\n  'Sabé',\n  'Sabine Wren',\n  'Saché',\n  'Saelt-Marae',\n  'Saesee Tiin',\n  'Salacious B. Crumb',\n  'San Hill',\n  'Sana Starros',\n  'Sarco Plank',\n  'Sarkli',\n  'Satine Kryze',\n  'Savage Opress',\n  'Sebulba',\n  'Senator Organa',\n  'Sergeant Kreel',\n  'Seventh Sister',\n  'Shaak Ti',\n  'Shara Bey',\n  'Shmi Skywalker',\n  'Shu Mai',\n  'Sidon Ithano',\n  'Sifo-Dyas',\n  'Sim Aloo',\n  'Siniir Rath Velus',\n  'Sio Bibble',\n  'Sixth Brother',\n  'Slowen Lo',\n  'Sly Moore',\n  'Snaggletooth',\n  'Snap Wexley',\n  'Snoke',\n  'Sola Naberrie',\n  'Sora Bulq',\n  'Strono Tuggs',\n  'Sy Snootles',\n  'Tallissan Lintra',\n  'Tarfful',\n  'Tasu Leech',\n  'Taun We',\n  'TC-14',\n  'Tee Watt Kaa',\n  'Teebo',\n  'Teedo',\n  'Teemto Pagalies',\n  'Temiri Blagg',\n  'Tessek',\n  'Tey How',\n  'Thane Kyrell',\n  'The Bendu',\n  'The Smuggler',\n  'Thrawn',\n  'Tiaan Jerjerrod',\n  'Tion Medon',\n  'Tobias Beckett',\n  'Tulon Voidgazer',\n  'Tup',\n  'U9-C4',\n  'Unkar Plutt',\n  'Val Beckett',\n  'Vanden Willard',\n  'Vice Admiral Amilyn Holdo',\n  'Vober Dand',\n  'WAC-47',\n  'Wag Too',\n  'Wald',\n  'Walrus Man',\n  'Warok',\n  'Wat Tambor',\n  'Watto',\n  'Wedge Antilles',\n  'Wes Janson',\n  'Wicket W. Warrick',\n  'Wilhuff Tarkin',\n  'Wollivan',\n  'Wuher',\n  'Wullf Yularen',\n  'Xamuel Lennox',\n  'Yaddle',\n  'Yarael Poof',\n  'Yoda',\n  'Zam Wesell',\n  'Zev Senesca',\n  'Ziro the Hutt',\n  'Zuckuss',\n]\n\nexport default MentionExample\n"
  },
  {
    "path": "site/examples/ts/paste-html.tsx",
    "content": "import { css } from '@emotion/css'\nimport React, { useCallback, useMemo } from 'react'\nimport { Descendant, Transforms, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { jsx } from 'slate-hyperscript'\nimport {\n  Editable,\n  RenderElementProps,\n  RenderLeafProps,\n  Slate,\n  useFocused,\n  useSelected,\n  withReact,\n} from 'slate-react'\n\nimport {\n  CustomEditor,\n  CustomElement,\n  CustomElementType,\n  ImageElement as ImageElementType,\n  RenderElementPropsFor,\n} from './custom-types.d'\n\ninterface ElementAttributes {\n  type: CustomElementType\n  url?: string\n}\n\nconst ELEMENT_TAGS: Record<string, (el: HTMLElement) => ElementAttributes> = {\n  A: el => ({ type: 'link', url: el.getAttribute('href')! }),\n  BLOCKQUOTE: () => ({ type: 'block-quote' }),\n  H1: () => ({ type: 'heading-one' }),\n  H2: () => ({ type: 'heading-two' }),\n  H3: () => ({ type: 'heading-three' }),\n  H4: () => ({ type: 'heading-four' }),\n  H5: () => ({ type: 'heading-five' }),\n  H6: () => ({ type: 'heading-six' }),\n  IMG: el => ({ type: 'image', url: el.getAttribute('src')! }),\n  LI: () => ({ type: 'list-item' }),\n  OL: () => ({ type: 'numbered-list' }),\n  P: () => ({ type: 'paragraph' }),\n  PRE: () => ({ type: 'code-block' }),\n  UL: () => ({ type: 'bulleted-list' }),\n}\n\n// COMPAT: `B` is omitted here because Google Docs uses `<b>` in weird ways.\ninterface TextAttributes {\n  code?: boolean\n  strikethrough?: boolean\n  italic?: boolean\n  bold?: boolean\n  underline?: boolean\n}\n\nconst TEXT_TAGS: Record<string, () => TextAttributes> = {\n  CODE: () => ({ code: true }),\n  DEL: () => ({ strikethrough: true }),\n  EM: () => ({ italic: true }),\n  I: () => ({ italic: true }),\n  S: () => ({ strikethrough: true }),\n  STRONG: () => ({ bold: true }),\n  U: () => ({ underline: true }),\n}\n\nexport const deserialize = (el: HTMLElement | ChildNode): any => {\n  if (el.nodeType === 3) {\n    return el.textContent\n  } else if (el.nodeType !== 1) {\n    return null\n  } else if (el.nodeName === 'BR') {\n    return '\\n'\n  }\n\n  const { nodeName } = el\n  let parent = el\n\n  if (\n    nodeName === 'PRE' &&\n    el.childNodes[0] &&\n    el.childNodes[0].nodeName === 'CODE'\n  ) {\n    parent = el.childNodes[0]\n  }\n  let children = Array.from(parent.childNodes).map(deserialize).flat()\n\n  if (children.length === 0) {\n    children = [{ text: '' }]\n  }\n\n  if (el.nodeName === 'BODY') {\n    return jsx('fragment', {}, children)\n  }\n\n  if (ELEMENT_TAGS[nodeName]) {\n    const attrs = ELEMENT_TAGS[nodeName](el as HTMLElement)\n    return jsx('element', attrs, children)\n  }\n\n  if (TEXT_TAGS[nodeName]) {\n    const attrs = TEXT_TAGS[nodeName]()\n    return children.map(child => jsx('text', attrs, child))\n  }\n\n  return children\n}\n\nconst PasteHtmlExample = () => {\n  const renderElement = useCallback(\n    (props: RenderElementProps) => <Element {...props} />,\n    []\n  )\n  const renderLeaf = useCallback(\n    (props: RenderLeafProps) => <Leaf {...props} />,\n    []\n  )\n  const editor = useMemo(\n    () => withHtml(withReact(withHistory(createEditor()))) as CustomEditor,\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        placeholder=\"Paste in some HTML...\"\n      />\n    </Slate>\n  )\n}\n\nconst withHtml = (editor: CustomEditor) => {\n  const { insertData, isInline, isVoid } = editor\n\n  editor.isInline = (element: CustomElement) => {\n    return element.type === 'link' ? true : isInline(element)\n  }\n\n  editor.isVoid = (element: CustomElement) => {\n    return element.type === 'image' ? true : isVoid(element)\n  }\n\n  editor.insertData = data => {\n    const html = data.getData('text/html')\n\n    if (html) {\n      const parsed = new DOMParser().parseFromString(html, 'text/html')\n      const fragment = deserialize(parsed.body)\n      Transforms.insertFragment(editor, fragment)\n      return\n    }\n\n    insertData(data)\n  }\n\n  return editor\n}\n\nconst Element = (props: RenderElementProps) => {\n  const { attributes, children, element } = props\n\n  switch (element.type) {\n    default:\n      return <p {...attributes}>{children}</p>\n    case 'block-quote':\n      return <blockquote {...attributes}>{children}</blockquote>\n    case 'code-block':\n      return (\n        <pre>\n          <code {...attributes}>{children}</code>\n        </pre>\n      )\n    case 'bulleted-list':\n      return <ul {...attributes}>{children}</ul>\n    case 'heading-one':\n      return <h1 {...attributes}>{children}</h1>\n    case 'heading-two':\n      return <h2 {...attributes}>{children}</h2>\n    case 'heading-three':\n      return <h3 {...attributes}>{children}</h3>\n    case 'heading-four':\n      return <h4 {...attributes}>{children}</h4>\n    case 'heading-five':\n      return <h5 {...attributes}>{children}</h5>\n    case 'heading-six':\n      return <h6 {...attributes}>{children}</h6>\n    case 'list-item':\n      return <li {...attributes}>{children}</li>\n    case 'numbered-list':\n      return <ol {...attributes}>{children}</ol>\n    case 'link':\n      return (\n        <SafeLink href={element.url} attributes={attributes}>\n          {children}\n        </SafeLink>\n      )\n    case 'image':\n      return <ImageElement {...props} />\n  }\n}\n\nconst allowedSchemes = ['http:', 'https:', 'mailto:', 'tel:']\n\ninterface SafeLinkProps {\n  attributes: Record<string, unknown>\n  children: React.ReactNode\n  href: string\n}\n\nconst SafeLink = ({ children, href, attributes }: SafeLinkProps) => {\n  const safeHref = useMemo(() => {\n    let parsedUrl: URL | null = null\n    try {\n      parsedUrl = new URL(href)\n      // eslint-disable-next-line no-empty\n    } catch {}\n    if (parsedUrl && allowedSchemes.includes(parsedUrl.protocol)) {\n      return parsedUrl.href\n    }\n    return 'about:blank'\n  }, [href])\n\n  return (\n    <a href={safeHref} {...attributes}>\n      {children}\n    </a>\n  )\n}\n\nconst ImageElement = ({\n  attributes,\n  children,\n  element,\n}: RenderElementPropsFor<ImageElementType>) => {\n  const selected = useSelected()\n  const focused = useFocused()\n  return (\n    <div {...attributes}>\n      {children}\n      <img\n        src={element.url}\n        className={css`\n          display: block;\n          max-width: 100%;\n          max-height: 20em;\n          box-shadow: ${selected && focused ? '0 0 0 2px blue;' : 'none'};\n        `}\n      />\n    </div>\n  )\n}\n\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n\n  if (leaf.code) {\n    children = <code>{children}</code>\n  }\n\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n\n  if (leaf.strikethrough) {\n    children = <del>{children}</del>\n  }\n\n  return <span {...attributes}>{children}</span>\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: \"By default, pasting content into a Slate editor will use the clipboard's \",\n      },\n      { text: \"'text/plain'\", code: true },\n      {\n        text: \" data. That's okay for some use cases, but sometimes you want users to be able to paste in content and have it maintain its formatting. To do this, your editor needs to handle \",\n      },\n      { text: \"'text/html'\", code: true },\n      { text: ' data. ' },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [{ text: 'This is an example of doing exactly that!' }],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: \"Try it out for yourself! Copy and paste some rendered HTML rich text content (not the source code) from another site into this editor and it's formatting should be preserved.\",\n      },\n    ],\n  },\n]\n\nexport default PasteHtmlExample\n"
  },
  {
    "path": "site/examples/ts/plaintext.tsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor, Descendant } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\nimport { withHistory } from 'slate-history'\n\nconst PlainTextExample = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable placeholder=\"Enter some plain text...\" />\n    </Slate>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'This is editable plain text, just like a <textarea>!' },\n    ],\n  },\n]\n\nexport default PlainTextExample\n"
  },
  {
    "path": "site/examples/ts/read-only.tsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor, Descendant } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\n\nconst ReadOnlyExample = () => {\n  const editor = useMemo(() => withReact(createEditor()), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable readOnly placeholder=\"Enter some plain text...\" />\n    </Slate>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This example shows what happens when the Editor is set to readOnly, it is not editable',\n      },\n    ],\n  },\n]\n\nexport default ReadOnlyExample\n"
  },
  {
    "path": "site/examples/ts/richtext.tsx",
    "content": "import isHotkey from 'is-hotkey'\nimport React, { KeyboardEvent, PointerEvent, useCallback, useMemo } from 'react'\nimport {\n  Descendant,\n  Editor,\n  Node,\n  Element as SlateElement,\n  Transforms,\n  createEditor,\n} from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  RenderElementProps,\n  RenderLeafProps,\n  Slate,\n  useSlate,\n  withReact,\n} from 'slate-react'\nimport { Button, Icon, Toolbar } from './components'\nimport {\n  CustomEditor,\n  CustomElement,\n  CustomElementType,\n  CustomElementWithAlign,\n  CustomTextKey,\n} from './custom-types.d'\n\nconst HOTKEYS: Record<string, CustomTextKey> = {\n  'mod+b': 'bold',\n  'mod+i': 'italic',\n  'mod+u': 'underline',\n  'mod+`': 'code',\n}\n\nconst LIST_TYPES = ['numbered-list', 'bulleted-list'] as const\nconst TEXT_ALIGN_TYPES = ['left', 'center', 'right', 'justify'] as const\n\ntype AlignType = (typeof TEXT_ALIGN_TYPES)[number]\ntype ListType = (typeof LIST_TYPES)[number]\ntype CustomElementFormat = CustomElementType | AlignType | ListType\n\nconst RichTextExample = () => {\n  const renderElement = useCallback(\n    (props: RenderElementProps) => <Element {...props} />,\n    []\n  )\n  const renderLeaf = useCallback(\n    (props: RenderLeafProps) => <Leaf {...props} />,\n    []\n  )\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <MarkButton format=\"bold\" icon=\"format_bold\" />\n        <MarkButton format=\"italic\" icon=\"format_italic\" />\n        <MarkButton format=\"underline\" icon=\"format_underlined\" />\n        <MarkButton format=\"code\" icon=\"code\" />\n        <BlockButton format=\"heading-one\" icon=\"looks_one\" />\n        <BlockButton format=\"heading-two\" icon=\"looks_two\" />\n        <BlockButton format=\"block-quote\" icon=\"format_quote\" />\n        <BlockButton format=\"numbered-list\" icon=\"format_list_numbered\" />\n        <BlockButton format=\"bulleted-list\" icon=\"format_list_bulleted\" />\n        <BlockButton format=\"left\" icon=\"format_align_left\" />\n        <BlockButton format=\"center\" icon=\"format_align_center\" />\n        <BlockButton format=\"right\" icon=\"format_align_right\" />\n        <BlockButton format=\"justify\" icon=\"format_align_justify\" />\n      </Toolbar>\n      <Editable\n        renderElement={renderElement}\n        renderLeaf={renderLeaf}\n        placeholder=\"Enter some rich text…\"\n        spellCheck\n        autoFocus\n        onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n          for (const hotkey in HOTKEYS) {\n            if (isHotkey(hotkey, event as any)) {\n              event.preventDefault()\n              const mark = HOTKEYS[hotkey]\n              toggleMark(editor, mark)\n            }\n          }\n        }}\n      />\n    </Slate>\n  )\n}\n\nconst toggleBlock = (editor: CustomEditor, format: CustomElementFormat) => {\n  const isActive = isBlockActive(\n    editor,\n    format,\n    isAlignType(format) ? 'align' : 'type'\n  )\n  const isList = isListType(format)\n\n  Transforms.unwrapNodes(editor, {\n    match: n => Node.isElement(n) && isListType(n.type) && !isAlignType(format),\n    split: true,\n  })\n  let newProperties: Partial<SlateElement>\n  if (isAlignType(format)) {\n    newProperties = {\n      align: isActive ? undefined : format,\n    }\n  } else {\n    newProperties = {\n      type: isActive ? 'paragraph' : isList ? 'list-item' : format,\n    }\n  }\n  Transforms.setNodes<SlateElement>(editor, newProperties)\n\n  if (!isActive && isList) {\n    const block = { type: format, children: [] }\n    Transforms.wrapNodes(editor, block)\n  }\n}\n\nconst toggleMark = (editor: CustomEditor, format: CustomTextKey) => {\n  const isActive = isMarkActive(editor, format)\n\n  if (isActive) {\n    Editor.removeMark(editor, format)\n  } else {\n    Editor.addMark(editor, format, true)\n  }\n}\n\nconst isBlockActive = (\n  editor: CustomEditor,\n  format: CustomElementFormat,\n  blockType: 'type' | 'align' = 'type'\n) => {\n  const { selection } = editor\n  if (!selection) return false\n\n  const [match] = Array.from(\n    Editor.nodes(editor, {\n      at: Editor.unhangRange(editor, selection),\n      match: n => {\n        if (Node.isElement(n)) {\n          if (blockType === 'align' && isAlignElement(n)) {\n            return n.align === format\n          }\n          return n.type === format\n        }\n        return false\n      },\n    })\n  )\n\n  return !!match\n}\n\nconst isMarkActive = (editor: CustomEditor, format: CustomTextKey) => {\n  const marks = Editor.marks(editor)\n  return marks ? marks[format] === true : false\n}\n\nconst Element = ({ attributes, children, element }: RenderElementProps) => {\n  const style: React.CSSProperties = {}\n  if (isAlignElement(element)) {\n    style.textAlign = element.align as AlignType\n  }\n  switch (element.type) {\n    case 'block-quote':\n      return (\n        <blockquote style={style} {...attributes}>\n          {children}\n        </blockquote>\n      )\n    case 'bulleted-list':\n      return (\n        <ul style={style} {...attributes}>\n          {children}\n        </ul>\n      )\n    case 'heading-one':\n      return (\n        <h1 style={style} {...attributes}>\n          {children}\n        </h1>\n      )\n    case 'heading-two':\n      return (\n        <h2 style={style} {...attributes}>\n          {children}\n        </h2>\n      )\n    case 'list-item':\n      return (\n        <li style={style} {...attributes}>\n          {children}\n        </li>\n      )\n    case 'numbered-list':\n      return (\n        <ol style={style} {...attributes}>\n          {children}\n        </ol>\n      )\n    default:\n      return (\n        <p style={style} {...attributes}>\n          {children}\n        </p>\n      )\n  }\n}\n\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n\n  if (leaf.code) {\n    children = <code>{children}</code>\n  }\n\n  if (leaf.italic) {\n    children = <em>{children}</em>\n  }\n\n  if (leaf.underline) {\n    children = <u>{children}</u>\n  }\n\n  return <span {...attributes}>{children}</span>\n}\n\ninterface BlockButtonProps {\n  format: CustomElementFormat\n  icon: string\n}\n\nconst BlockButton = ({ format, icon }: BlockButtonProps) => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isBlockActive(\n        editor,\n        format,\n        isAlignType(format) ? 'align' : 'type'\n      )}\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) =>\n        event.preventDefault()\n      }\n      onClick={() => toggleBlock(editor, format)}\n      data-test-id={`block-button-${format}`}\n    >\n      <Icon>{icon}</Icon>\n    </Button>\n  )\n}\n\ninterface MarkButtonProps {\n  format: CustomTextKey\n  icon: string\n}\n\nconst MarkButton = ({ format, icon }: MarkButtonProps) => {\n  const editor = useSlate()\n  return (\n    <Button\n      active={isMarkActive(editor, format)}\n      onPointerDown={(event: PointerEvent<HTMLButtonElement>) =>\n        event.preventDefault()\n      }\n      onClick={() => toggleMark(editor, format)}\n    >\n      <Icon>{icon}</Icon>\n    </Button>\n  )\n}\n\nconst isAlignType = (format: CustomElementFormat): format is AlignType => {\n  return TEXT_ALIGN_TYPES.includes(format as AlignType)\n}\n\nconst isListType = (format: CustomElementFormat): format is ListType => {\n  return LIST_TYPES.includes(format as ListType)\n}\n\nconst isAlignElement = (\n  element: CustomElement\n): element is CustomElementWithAlign => {\n  return 'align' in element\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'This is editable ' },\n      { text: 'rich', bold: true },\n      { text: ' text, ' },\n      { text: 'much', italic: true },\n      { text: ' better than a ' },\n      { text: '<textarea>', code: true },\n      { text: '!' },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: \"Since it's rich text, you can do things like turn a selection of text \",\n      },\n      { text: 'bold', bold: true },\n      {\n        text: ', or add a semantically rendered block quote in the middle of the page, like this:',\n      },\n    ],\n  },\n  {\n    type: 'block-quote',\n    children: [{ text: 'A wise quote.' }],\n  },\n  {\n    type: 'paragraph',\n    align: 'center',\n    children: [{ text: 'Try it out for yourself!' }],\n  },\n]\n\nexport default RichTextExample\n"
  },
  {
    "path": "site/examples/ts/scroll-into-view.tsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor, Descendant } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\nimport { withHistory } from 'slate-history'\nimport { css } from '@emotion/css'\nimport range from 'lodash/range'\n\n/**\n * This is an example we can use to test the scrollIntoView functionality in\n * `Editable`. Keeping it here for now as we may need it to make sure it is\n * working properly after adding it.\n *\n * If all is good, we can remove this example.\n *\n * Note:\n * The example needs to be added to `[example].tsx` before it can be used.\n */\n\nconst ScrollIntoViewExample = () => {\n  return (\n    <div\n      className={css`\n        height: 320px;\n        overflow-y: scroll;\n      `}\n    >\n      <div\n        className={css`\n          height: 160px;\n          background: #e0e0e0;\n        `}\n      />\n      <div\n        className={css`\n          height: 320px;\n          overflow-y: scroll;\n        `}\n      >\n        <PlainTextEditor />\n      </div>\n      <div\n        className={css`\n          height: 160px;\n          background: #e0e0e0;\n        `}\n      />\n    </div>\n  )\n}\n\nconst PlainTextEditor = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable placeholder=\"Enter some plain text...\" />\n    </Slate>\n  )\n}\n\nconst initialValue: Descendant[] = range(5).map(() => ({\n  type: 'paragraph',\n  children: [\n    {\n      text: `There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.`,\n    },\n  ],\n}))\n\nexport default ScrollIntoViewExample\n"
  },
  {
    "path": "site/examples/ts/search-highlighting.tsx",
    "content": "import { css } from '@emotion/css'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { Descendant, Node, NodeEntry, Range, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport { Editable, RenderLeafProps, Slate, withReact } from 'slate-react'\n\nimport { Icon, Toolbar } from './components'\nimport { CustomEditor, CustomText } from './custom-types.d'\n\nconst SearchHighlightingExample = () => {\n  const [search, setSearch] = useState<string>('')\n  const editor = useMemo(\n    () => withHistory(withReact(createEditor())) as CustomEditor,\n    []\n  )\n  const decorate = useCallback(\n    ([node, path]: NodeEntry) => {\n      const ranges: Range[] = []\n      if (search && Node.isElement(node) && node.children.every(Node.isText)) {\n        const texts = node.children.map(it => it.text)\n        const str = texts.join('')\n        const length = search.length\n        let start = str.indexOf(search)\n        let index = 0\n        let iterated = 0\n        while (start !== -1) {\n          // Skip already iterated strings\n          while (\n            index < texts.length &&\n            start >= iterated + texts[index].length\n          ) {\n            iterated = iterated + texts[index].length\n            index++\n          }\n          // Find the index of array and relative position\n          let offset = start - iterated\n          let remaining = length\n          while (index < texts.length && remaining > 0) {\n            const currentText = texts[index]\n            const currentPath = [...path, index]\n            const taken = Math.min(remaining, currentText.length - offset)\n            ranges.push({\n              anchor: { path: currentPath, offset },\n              focus: { path: currentPath, offset: offset + taken },\n              highlight: true,\n            })\n            remaining = remaining - taken\n            if (remaining > 0) {\n              iterated = iterated + currentText.length\n              // Next block will be indexed from 0\n              offset = 0\n              index++\n            }\n          }\n          // Looking for next search block\n          start = str.indexOf(search, start + search.length)\n        }\n      }\n\n      return ranges\n    },\n    [search]\n  )\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Toolbar>\n        <div\n          className={css`\n            position: relative;\n          `}\n        >\n          <Icon\n            className={css`\n              position: absolute;\n              top: 0.3em;\n              left: 0.4em;\n              color: #ccc;\n            `}\n          >\n            search\n          </Icon>\n          <input\n            type=\"search\"\n            placeholder=\"Search the text...\"\n            onChange={e => setSearch(e.target.value)}\n            className={css`\n              padding-left: 2.5em !important;\n              width: 100%;\n            `}\n          />\n        </div>\n      </Toolbar>\n      <Editable\n        decorate={decorate}\n        renderLeaf={(props: RenderLeafProps) => <Leaf {...props} />}\n      />\n    </Slate>\n  )\n}\n\ninterface HighlightLeaf extends CustomText {\n  highlight?: boolean\n}\n\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  const highlightLeaf = leaf as HighlightLeaf\n  return (\n    <span\n      {...attributes}\n      {...(highlightLeaf.highlight && { 'data-cy': 'search-highlighted' })}\n      className={css`\n        font-weight: ${highlightLeaf.bold && 'bold'};\n        background-color: ${highlightLeaf.highlight && '#ffeeba'};\n      `}\n    >\n      {children}\n    </span>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'This is editable text that you can search. As you search, it looks for matching strings of text, and adds ',\n      },\n      { text: 'decorations', bold: true },\n      { text: ' to them in realtime.' },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      { text: 'Try it out for yourself by typing in the search box above!' },\n    ],\n  },\n]\n\nexport default SearchHighlightingExample\n"
  },
  {
    "path": "site/examples/ts/shadow-dom.tsx",
    "content": "import React, { useMemo, useRef, useEffect } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { createEditor, Descendant } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\nimport { withHistory } from 'slate-history'\n\nconst ShadowDOM = () => {\n  const container = useRef<HTMLDivElement>(null)\n\n  useEffect(() => {\n    if (container.current!.shadowRoot) return\n\n    // Create a shadow DOM\n    const outerShadowRoot = container.current!.attachShadow({ mode: 'open' })\n    const host = document.createElement('div')\n    outerShadowRoot.appendChild(host)\n\n    // Create a nested shadow DOM\n    const innerShadowRoot = host.attachShadow({ mode: 'open' })\n    const reactRoot = document.createElement('div')\n    innerShadowRoot.appendChild(reactRoot)\n\n    // Render the editor within the nested shadow DOM\n    const root = createRoot(reactRoot)\n    root.render(<ShadowEditor />)\n  })\n\n  return <div ref={container} data-cy=\"outer-shadow-root\" />\n}\n\nconst ShadowEditor = () => {\n  const editor = useMemo(() => withHistory(withReact(createEditor())), [])\n\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable placeholder=\"Enter some plain text...\" />\n    </Slate>\n  )\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [{ text: 'This Editor is rendered within a nested Shadow DOM.' }],\n  },\n]\n\nexport default ShadowDOM\n"
  },
  {
    "path": "site/examples/ts/styling.tsx",
    "content": "import React, { useMemo } from 'react'\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact } from 'slate-react'\nimport { withHistory } from 'slate-history'\n\nconst StylingExample = () => {\n  const editor1 = useMemo(() => withHistory(withReact(createEditor())), [])\n  const editor2 = useMemo(() => withHistory(withReact(createEditor())), [])\n\n  return (\n    <div style={{ display: 'flex', flexDirection: 'column', gap: '40px' }}>\n      <Slate\n        editor={editor1}\n        initialValue={[\n          {\n            type: 'paragraph',\n            children: [{ text: 'This editor is styled using the style prop.' }],\n          },\n        ]}\n      >\n        <Editable\n          style={{\n            backgroundColor: 'rgb(255, 230, 156)',\n            minHeight: '200px',\n            outline: 'rgb(0, 128, 0) solid 2px',\n          }}\n        />\n      </Slate>\n\n      <Slate\n        editor={editor2}\n        initialValue={[\n          {\n            type: 'paragraph',\n            children: [\n              { text: 'This editor is styled using the className prop.' },\n            ],\n          },\n        ]}\n      >\n        <Editable className=\"fancy\" disableDefaultStyles />\n      </Slate>\n    </div>\n  )\n}\n\nexport default StylingExample\n"
  },
  {
    "path": "site/examples/ts/tables.tsx",
    "content": "import React, { useCallback, useMemo } from 'react'\nimport { Descendant, Editor, Node, Point, Range, createEditor } from 'slate'\nimport { withHistory } from 'slate-history'\nimport {\n  Editable,\n  RenderElementProps,\n  RenderLeafProps,\n  Slate,\n  withReact,\n} from 'slate-react'\nimport { CustomEditor } from './custom-types.d'\nimport { css } from '@emotion/css'\n\nconst TablesExample = () => {\n  const renderElement = useCallback(\n    (props: RenderElementProps) => <Element {...props} />,\n    []\n  )\n  const renderLeaf = useCallback(\n    (props: RenderLeafProps) => <Leaf {...props} />,\n    []\n  )\n  const editor = useMemo(\n    () => withTables(withHistory(withReact(createEditor()))) as CustomEditor,\n    []\n  )\n  return (\n    <Slate editor={editor} initialValue={initialValue}>\n      <Editable renderElement={renderElement} renderLeaf={renderLeaf} />\n    </Slate>\n  )\n}\n\nconst withTables = (editor: CustomEditor) => {\n  const { deleteBackward, deleteForward, insertBreak } = editor\n\n  editor.deleteBackward = (unit: 'character' | 'word' | 'line' | 'block') => {\n    const { selection } = editor\n\n    if (selection && Range.isCollapsed(selection)) {\n      const [cell] = Editor.nodes(editor, {\n        match: n => Node.isElement(n) && n.type === 'table-cell',\n      })\n\n      if (cell) {\n        const [, cellPath] = cell\n        const start = Editor.start(editor, cellPath)\n\n        if (Point.equals(selection.anchor, start)) {\n          return\n        }\n      }\n    }\n\n    deleteBackward(unit)\n  }\n\n  editor.deleteForward = unit => {\n    const { selection } = editor\n\n    if (selection && Range.isCollapsed(selection)) {\n      const [cell] = Editor.nodes(editor, {\n        match: n => Node.isElement(n) && n.type === 'table-cell',\n      })\n\n      if (cell) {\n        const [, cellPath] = cell\n        const end = Editor.end(editor, cellPath)\n\n        if (Point.equals(selection.anchor, end)) {\n          return\n        }\n      }\n    }\n\n    deleteForward(unit)\n  }\n\n  editor.insertBreak = () => {\n    const { selection } = editor\n\n    if (selection) {\n      const [table] = Editor.nodes(editor, {\n        match: n => Node.isElement(n) && n.type === 'table',\n      })\n\n      if (table) {\n        return\n      }\n    }\n\n    insertBreak()\n  }\n\n  return editor\n}\n\nconst Element = ({ attributes, children, element }: RenderElementProps) => {\n  switch (element.type) {\n    case 'table':\n      return (\n        <table\n          className={css`\n            // avoid unexpected selection behavior on both sides of the table\n            position: relative;\n          `}\n        >\n          <tbody {...attributes}>{children}</tbody>\n        </table>\n      )\n    case 'table-row':\n      return <tr {...attributes}>{children}</tr>\n    case 'table-cell':\n      return <td {...attributes}>{children}</td>\n    default:\n      return <p {...attributes}>{children}</p>\n  }\n}\n\nconst Leaf = ({ attributes, children, leaf }: RenderLeafProps) => {\n  if (leaf.bold) {\n    children = <strong>{children}</strong>\n  }\n\n  return <span {...attributes}>{children}</span>\n}\n\nconst initialValue: Descendant[] = [\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: 'Since the editor is based on a recursive tree model, similar to an HTML document, you can create complex nested structures, like tables:',\n      },\n    ],\n  },\n  {\n    type: 'table',\n    children: [\n      {\n        type: 'table-row',\n        children: [\n          {\n            type: 'table-cell',\n            children: [{ text: '' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: 'Human', bold: true }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: 'Dog', bold: true }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: 'Cat', bold: true }],\n          },\n        ],\n      },\n      {\n        type: 'table-row',\n        children: [\n          {\n            type: 'table-cell',\n            children: [{ text: '# of Feet', bold: true }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '2' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '4' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '4' }],\n          },\n        ],\n      },\n      {\n        type: 'table-row',\n        children: [\n          {\n            type: 'table-cell',\n            children: [{ text: '# of Lives', bold: true }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '1' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '1' }],\n          },\n          {\n            type: 'table-cell',\n            children: [{ text: '9' }],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    type: 'paragraph',\n    children: [\n      {\n        text: \"This table is just a basic example of rendering a table, and it doesn't have fancy functionality. But you could augment it to add support for navigating with arrow keys, displaying table headers, adding column and rows, or even formulas if you wanted to get really crazy!\",\n      },\n    ],\n  },\n]\n\nexport default TablesExample\n"
  },
  {
    "path": "site/examples/ts/utils/environment.ts",
    "content": "export const IS_MAC =\n  typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent)\n\nexport const IS_ANDROID =\n  typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent)\n"
  },
  {
    "path": "site/examples/ts/utils/normalize-tokens.ts",
    "content": "/**\n * Copied from prism-react-renderer repo\n * https://github.com/FormidableLabs/prism-react-renderer/blob/master/src/utils/normalizeTokens.js\n * */\n\nimport Prism from 'prismjs'\n\ntype PrismToken = Prism.Token\ntype Token = {\n  types: string[]\n  content: string\n  empty?: boolean\n}\n\nconst newlineRe = /\\r\\n|\\r|\\n/\n\n// Empty lines need to contain a single empty token, denoted with { empty: true }\nconst normalizeEmptyLines = (line: Token[]) => {\n  if (line.length === 0) {\n    line.push({\n      types: ['plain'],\n      content: '\\n',\n      empty: true,\n    })\n  } else if (line.length === 1 && line[0].content === '') {\n    line[0].content = '\\n'\n    line[0].empty = true\n  }\n}\n\nconst appendTypes = (types: string[], add: string[] | string): string[] => {\n  const typesSize = types.length\n  if (typesSize > 0 && types[typesSize - 1] === add) {\n    return types\n  }\n\n  return types.concat(add)\n}\n\n// Takes an array of Prism's tokens and groups them by line, turning plain\n// strings into tokens as well. Tokens can become recursive in some cases,\n// which means that their types are concatenated. Plain-string tokens however\n// are always of type \"plain\".\n// This is not recursive to avoid exceeding the call-stack limit, since it's unclear\n// how nested Prism's tokens can become\nexport const normalizeTokens = (\n  tokens: Array<PrismToken | string>\n): Token[][] => {\n  const typeArrStack: string[][] = [[]]\n  const tokenArrStack = [tokens]\n  const tokenArrIndexStack = [0]\n  const tokenArrSizeStack = [tokens.length]\n\n  let i = 0\n  let stackIndex = 0\n  let currentLine: Token[] = []\n\n  const acc = [currentLine]\n\n  while (stackIndex > -1) {\n    while (\n      (i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]\n    ) {\n      let content\n      let types = typeArrStack[stackIndex]\n\n      const tokenArr = tokenArrStack[stackIndex]\n      const token = tokenArr[i]\n\n      // Determine content and append type to types if necessary\n      if (typeof token === 'string') {\n        types = stackIndex > 0 ? types : ['plain']\n        content = token\n      } else {\n        types = appendTypes(types, token.type)\n        if (token.alias) {\n          types = appendTypes(types, token.alias)\n        }\n\n        content = token.content\n      }\n\n      // If token.content is an array, increase the stack depth and repeat this while-loop\n      if (typeof content !== 'string') {\n        stackIndex++\n        typeArrStack.push(types)\n        tokenArrStack.push(content as PrismToken[])\n        tokenArrIndexStack.push(0)\n        tokenArrSizeStack.push(content.length)\n        continue\n      }\n\n      // Split by newlines\n      const splitByNewlines = content.split(newlineRe)\n      const newlineCount = splitByNewlines.length\n\n      currentLine.push({ types, content: splitByNewlines[0] })\n\n      // Create a new line for each string on a new line\n      for (let i = 1; i < newlineCount; i++) {\n        normalizeEmptyLines(currentLine)\n        acc.push((currentLine = []))\n        currentLine.push({ types, content: splitByNewlines[i] })\n      }\n    }\n\n    // Decreate the stack depth\n    stackIndex--\n    typeArrStack.pop()\n    tokenArrStack.pop()\n    tokenArrIndexStack.pop()\n    tokenArrSizeStack.pop()\n  }\n\n  normalizeEmptyLines(currentLine)\n  return acc\n}\n"
  },
  {
    "path": "site/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.\n"
  },
  {
    "path": "site/next.config.js",
    "content": "/**\n * @type {import('next').NextConfig}\n */\nconst nextConfig = {\n  output: 'export',\n  webpack: config => {\n    config.module.rules.push({\n      test: /\\.js$/,\n      enforce: 'pre',\n      exclude: [/node_modules[\\\\\\/]@next/, /node_modules[\\\\\\/]next/],\n      use: [\n        {\n          loader: require.resolve('source-map-loader'),\n        },\n      ],\n    })\n    return config\n  },\n  // https://answers.netlify.com/t/basic-nextjs-website-failing-to-build-with-exit-code-129/120273/2\n  experimental: {\n    cpus: 1,\n  },\n}\n\nmodule.exports = nextConfig\n"
  },
  {
    "path": "site/pages/_app.tsx",
    "content": "import React, { useState, ErrorInfo } from 'react'\nimport { AppProps } from 'next/app'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { Roboto } from 'next/font/google'\nimport { ExampleLayout, Warning } from '../components/ExampleLayout'\n\nconst roboto = Roboto({\n  weight: ['400', '700'],\n  style: ['normal', 'italic'],\n  subsets: ['latin', 'latin-ext'],\n  display: 'swap',\n})\n\nfunction ErrorFallback({\n  error,\n  resetErrorBoundary,\n}: {\n  error: Error\n  resetErrorBoundary: () => void\n}) {\n  return (\n    <Warning>\n      <p>An error was thrown by one of the example's React components!</p>\n      <pre>\n        <code>{error.stack}</code>\n      </pre>\n      <button onClick={resetErrorBoundary}>Try again</button>\n    </Warning>\n  )\n}\n\nexport default function App({ Component, pageProps }: AppProps) {\n  const [error, setError] = useState<Error | undefined>(undefined)\n  const [stackTrace, setStackTrace] = useState<ErrorInfo | undefined>(undefined)\n  return (\n    <div className={roboto.className}>\n      <ErrorBoundary\n        FallbackComponent={ErrorFallback}\n        onError={(error, stackTrace) => {\n          setError(error)\n          setStackTrace(stackTrace)\n        }}\n      >\n        <ExampleLayout\n          exampleName={pageProps.exampleName}\n          examplePath={pageProps.examplePath}\n          error={error}\n          stackTrace={stackTrace}\n        >\n          <Component {...pageProps} />\n        </ExampleLayout>\n      </ErrorBoundary>\n    </div>\n  )\n}\n"
  },
  {
    "path": "site/pages/_document.tsx",
    "content": "import React from 'react'\nimport { Html, Head, Main, NextScript } from 'next/document'\n\nexport default function Document() {\n  return (\n    <Html lang=\"en\">\n      <Head>\n        <meta\n          name=\"description\"\n          content=\"Slate is a completely customizable framework for building rich text editors. Learn how to build powerful editors with React and TypeScript.\"\n        />\n        <link rel=\"icon\" href=\"/favicon.ico\" />\n        <link rel=\"stylesheet\" href=\"/index.css\" />\n        <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n        <link\n          rel=\"preconnect\"\n          href=\"https://fonts.gstatic.com\"\n          crossOrigin=\"\"\n        />\n        <link\n          rel=\"stylesheet\"\n          href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\n        />\n      </Head>\n      <body>\n        <Main />\n        <NextScript />\n      </body>\n    </Html>\n  )\n}\n"
  },
  {
    "path": "site/pages/api/index.ts",
    "content": "import { readdirSync } from 'fs'\nimport { join } from 'path'\n\nconst examplePath = join(process.cwd(), 'examples/ts')\n\nexport function getAllExamples() {\n  const slugs = readdirSync(examplePath)\n  return slugs\n    .filter(name => name.match(/.tsx$/))\n    .map(n => n.replace(/.tsx$/, ''))\n}\n"
  },
  {
    "path": "site/pages/examples/[example].tsx",
    "content": "import React from 'react'\nimport Head from 'next/head'\nimport dynamic from 'next/dynamic'\n\n// node\nimport { getAllExamples } from '../api'\nimport {\n  ComponentLoader,\n  HugeDocumentLoader,\n} from '../../components/ComponentLoader'\nimport { EXAMPLE_NAMES_AND_PATHS } from '../../constants/examples'\n\ntype ExampleTuple = [name: string, component: React.ComponentType, path: string]\n\nconst EXAMPLES: ExampleTuple[] = EXAMPLE_NAMES_AND_PATHS.map(([name, path]) => [\n  name,\n  path === 'huge-document'\n    ? dynamic(() => import('../../examples/ts/huge-document'), {\n        loading: HugeDocumentLoader,\n      })\n    : dynamic(() => import(`../../examples/ts/${path}`), {\n        loading: ComponentLoader,\n      }),\n  path,\n])\n\nconst ExamplePage = ({ example }: { example: string }) => {\n  const EXAMPLE = EXAMPLES.find(e => e[2] === example)\n  const [name, Component, path] = EXAMPLE!\n\n  return (\n    <>\n      <Head>\n        <title>Slate Examples - {name}</title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n      </Head>\n      <Component />\n    </>\n  )\n}\n\n// Disable SSR because it results in a double rendering which makes debugging\n// examples more challenging. No idea how any of this works.\nconst NoSsrExamplePage = dynamic(() => Promise.resolve(ExamplePage), {\n  ssr: false,\n})\n\nexport async function getStaticPaths() {\n  const paths = getAllExamples()\n\n  return {\n    paths: paths.map(path => ({\n      params: {\n        example: path,\n      },\n    })),\n    fallback: false,\n  }\n}\n\nexport async function getStaticProps({\n  params,\n}: {\n  params: { example: string }\n}) {\n  const EXAMPLE = EXAMPLES.find(e => e[2] === params.example)\n  const [name, , path] = EXAMPLE || [params.example, null, params.example]\n  return {\n    props: {\n      example: params.example,\n      exampleName: name,\n      examplePath: path,\n    },\n  }\n}\n\nexport default NoSsrExamplePage\n"
  },
  {
    "path": "site/pages/examples/index.tsx",
    "content": "import { useEffect } from 'react'\nimport { useRouter } from 'next/router'\n\nconst Example = () => {\n  const router = useRouter()\n\n  useEffect(() => {\n    router.replace(`/examples/richtext`)\n  })\n\n  return null\n}\n\nexport default Example\n"
  },
  {
    "path": "site/pages/index.tsx",
    "content": "import { useEffect } from 'react'\nimport { useRouter } from 'next/router'\n\nconst Home = () => {\n  const router = useRouter()\n\n  useEffect(() => {\n    router.replace(`/examples`)\n  })\n\n  return null\n}\n\nexport default Home\n"
  },
  {
    "path": "site/public/CNAME",
    "content": "slatejs.org\n"
  },
  {
    "path": "site/public/index.css",
    "content": "html,\ninput,\ntextarea {\n  font-family: 'Roboto', sans-serif;\n  line-height: 1.4;\n  background: #eee;\n}\n\nbody {\n  margin: 0;\n}\n\nh1 {\n  margin-top: 0;\n}\n\np {\n  margin: 0;\n}\n\npre {\n  padding: 10px;\n  background-color: #eee;\n  white-space: pre-wrap;\n}\n\n:not(pre) > code {\n  font-family: monospace;\n  background-color: #eee;\n  padding: 3px;\n}\n\nimg {\n  max-width: 100%;\n  max-height: 20em;\n}\n\nblockquote {\n  border-left: 2px solid #ddd;\n  margin-left: 0;\n  margin-right: 0;\n  padding-left: 10px;\n  color: #aaa;\n  font-style: italic;\n}\n\nblockquote[dir='rtl'] {\n  border-left: none;\n  padding-left: 0;\n  padding-right: 10px;\n  border-right: 2px solid #ddd;\n}\n\ntable {\n  border-collapse: collapse;\n}\n\ntd {\n  padding: 10px;\n  border: 2px solid #ddd;\n}\n\ninput[type='text'],\ninput[type='search'] {\n  box-sizing: border-box;\n  font-size: 0.85em;\n  width: 100%;\n  padding: 0.5em;\n  border: 2px solid #ddd;\n  background: #fafafa;\n}\n\ninput[type='text']:focus,\ninput[type='search']:focus {\n  outline: 0;\n  border-color: blue;\n}\n\niframe {\n  width: 100%;\n  border: 1px solid #eee;\n}\n\ndetails > summary {\n  user-select: none;\n}\n\n[data-slate-editor] > * + *,\n[data-slate-chunk] > * + * {\n  margin-top: 1em;\n}\n\n.fancy {\n  background-color: rgb(218, 225, 255);\n  padding: 40px;\n  font-size: 20px;\n  min-height: 150px;\n  outline: 3px dashed rgb(0, 94, 128);\n  border-radius: 20px;\n  outline-offset: -20px;\n  white-space: pre-wrap;\n}\n\n.performance-controls {\n  padding: 20px;\n  margin: -20px -20px 20px -20px;\n  background-color: white;\n  position: sticky;\n  top: 0;\n  z-index: 1;\n  border-bottom: 1px solid lightgrey;\n  max-height: 50vh;\n  overflow-y: auto;\n}\n\n.performance-controls > * {\n  margin-top: 10px;\n}\n\n.performance-controls > details > :not(summary) {\n  margin-left: 10px;\n}\n\n.performance-controls p {\n  margin-top: 5px;\n}\n\n.example-header {\n  align-items: center;\n  background: #000;\n  color: #aaa;\n  display: flex;\n  height: 42px;\n  position: relative;\n  z-index: 3; /* To appear above the underlay */\n}\n\n.example-title {\n  margin-left: 1em;\n}\n\n.example-link-list {\n  margin-left: auto;\n  margin-right: 1em;\n}\n\n.example-link {\n  margin-left: 1em;\n  color: #aaa;\n  text-decoration: none;\n}\n\n.example-link:hover {\n  color: #fff;\n  text-decoration: underline;\n}\n\n.example-pill {\n  background: #333;\n  border-radius: 9999px;\n  color: #aaa;\n  padding: 0.2em 0.5em;\n}\n\n.example-tab-list {\n  background-color: #222;\n  display: flex;\n  flex-direction: column;\n  overflow: auto;\n  padding-top: 0.2em;\n  position: absolute;\n  transition:\n    width 0.2s,\n    visibility 0.2s;\n  white-space: nowrap;\n  max-height: 70vh;\n  z-index: 3; /* To appear above the underlay */\n}\n\n.example-tab-list.visible {\n  width: 200px;\n  visibility: visible;\n}\n\n.example-tab-list.hidden {\n  width: 0;\n  visibility: hidden;\n}\n\n.example-tab-list-underlay {\n  background-color: rgba(200, 200, 200, 0.8);\n  height: 100%;\n  top: 0;\n  position: fixed;\n  width: 100%;\n  z-index: 2;\n}\n\n.example-tab-list-underlay.visible {\n  display: block;\n}\n\n.example-tab-list-underlay.hidden {\n  display: none;\n}\n\n.example-tab-button {\n  margin-left: 0.8em;\n  background: none;\n  border: none;\n  cursor: pointer;\n  padding: 0;\n}\n\n.example-tab-button:hover {\n  cursor: pointer;\n}\n\n.example-tab-button .material-icons {\n  color: #aaa;\n  font-size: 24px;\n}\n\n.example-tab {\n  display: inline-block;\n  margin-bottom: 0.2em;\n  padding: 0.2em 1em;\n  border-radius: 0.2em;\n  text-decoration: none;\n  color: #777;\n  background: transparent;\n}\n\n.example-tab.active {\n  color: white;\n  background: #333;\n}\n\n.example-tab:hover {\n  background: #333;\n}\n\n.example-page-header {\n  align-items: center;\n  background-color: #555;\n  color: #ddd;\n  display: flex;\n  height: 42px;\n  position: relative;\n  z-index: 3; /* To appear above the underlay */\n}\n\n.example-page-title {\n  margin-left: 1em;\n}\n\n.example-content {\n  max-width: 42em;\n  margin: 20px auto;\n  padding: 20px;\n  background: #fff;\n}\n\n.example-warning {\n  max-width: 42em;\n  margin: 20px auto;\n  padding: 20px;\n  background: #fffae0;\n}\n\n.example-warning > pre {\n  background: #fbf1bd;\n  white-space: pre;\n  overflow-x: scroll;\n  margin-bottom: 0;\n}\n\n.flex-center {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n@keyframes spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n\n.loading-container {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 40px;\n  max-width: 42em;\n}\n\n.spinner {\n  border: 3px solid rgba(0, 0, 0, 0.1);\n  border-top: 3px solid #667eea;\n  border-radius: 50%;\n  animation: spin 1s linear infinite;\n}\n\n.loading-text {\n  margin: 0;\n  color: #666;\n  font-weight: 300;\n}\n\n.loading-spinner {\n  min-height: 150px;\n}\n\n.loading-spinner .spinner {\n  width: 40px;\n  height: 40px;\n  margin-bottom: 16px;\n}\n\n.loading-spinner p {\n  font-size: 14px;\n}\n\n.huge-loader-container {\n  min-height: 80vh;\n}\n\n.huge-loader-container .spinner {\n  width: 50px;\n  height: 50px;\n  margin-bottom: 20px;\n}\n\n.huge-title {\n  font-size: 24px;\n  letter-spacing: 0.5px;\n  color: #333;\n}\n\n.huge-subtitle {\n  margin: 8px 0 0 0;\n  font-size: 14px;\n  color: #666;\n}\n"
  },
  {
    "path": "site/tsconfig.example.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"lib\": [\"dom\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"downlevelIteration\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"rootDir\": \"./examples/ts\",\n    \"outDir\": \"./examples/js\"\n  },\n  \"include\": [\"examples/ts/**/*.ts\", \"examples/ts/**/*.tsx\"]\n}\n"
  },
  {
    "path": "site/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"downlevelIteration\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\"]\n}\n"
  },
  {
    "path": "support/fixtures.js",
    "content": "import fs from 'fs'\nimport { basename, extname, resolve } from 'path'\n\nexport const fixtures = (...args) => {\n  let fn = args.pop()\n  let options = { skip: false }\n\n  if (typeof fn !== 'function') {\n    options = fn\n    fn = args.pop()\n  }\n\n  const path = resolve(...args)\n  const files = fs.readdirSync(path)\n  const dir = basename(path)\n  const d = options.skip ? describe.skip : describe\n\n  d(dir, () => {\n    for (const file of files) {\n      const p = resolve(path, file)\n      const stat = fs.statSync(p)\n\n      if (stat.isDirectory()) {\n        fixtures(path, file, fn)\n      }\n      if (\n        stat.isFile() &&\n        (file.endsWith('.js') ||\n          file.endsWith('.tsx') ||\n          file.endsWith('.ts')) &&\n        !file.endsWith('custom-types.ts') &&\n        !file.endsWith('type-guards.ts') &&\n        !file.startsWith('.') &&\n        // Ignoring `index.js` files allows us to use the fixtures directly\n        // from the top-level directory itself, instead of only children.\n        file !== 'index.js'\n      ) {\n        const name = basename(file, extname(file))\n\n        // This needs to be a non-arrow function to use `this.skip()`.\n        it(`${name} `, function () {\n          const module = require(p)\n\n          if (module.skip) {\n            this.skip()\n            return\n          }\n\n          fn({ name, path, module })\n        })\n      }\n    }\n  })\n}\n\nfixtures.skip = (...args) => {\n  fixtures(...args, { skip: true })\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"files\": [],\n  \"references\": [\n    { \"path\": \"./packages/slate\" },\n    { \"path\": \"./packages/slate-history\" },\n    { \"path\": \"./packages/slate-hyperscript\" },\n    { \"path\": \"./packages/slate-react\" }\n  ]\n}\n"
  }
]