diff --git a/.gitbook/assets/ENSGuidelines_01_OnlyDomain_2x.jpg b/.gitbook/assets/ENSGuidelines_01_OnlyDomain_2x.jpg deleted file mode 100644 index f4caaa93e..000000000 Binary files a/.gitbook/assets/ENSGuidelines_01_OnlyDomain_2x.jpg and /dev/null differ diff --git a/.gitbook/assets/ENSGuidelines_02_NameAndAddress_2x.jpg b/.gitbook/assets/ENSGuidelines_02_NameAndAddress_2x.jpg deleted file mode 100644 index f9109ba3f..000000000 Binary files a/.gitbook/assets/ENSGuidelines_02_NameAndAddress_2x.jpg and /dev/null differ diff --git a/.gitbook/assets/ENSGuidelines_02b_NameAndAddressClear.jpg b/.gitbook/assets/ENSGuidelines_02b_NameAndAddressClear.jpg deleted file mode 100644 index a2d7434ca..000000000 Binary files a/.gitbook/assets/ENSGuidelines_02b_NameAndAddressClear.jpg and /dev/null differ diff --git a/.gitbook/assets/ENSGuidelines_03_Expanded1.jpg b/.gitbook/assets/ENSGuidelines_03_Expanded1.jpg deleted file mode 100644 index 60ceea3a3..000000000 Binary files a/.gitbook/assets/ENSGuidelines_03_Expanded1.jpg and /dev/null differ diff --git a/.gitbook/assets/ENSGuidelines_03_Expanded2Simple_justATooltip2.jpg b/.gitbook/assets/ENSGuidelines_03_Expanded2Simple_justATooltip2.jpg deleted file mode 100644 index 9c6024175..000000000 Binary files a/.gitbook/assets/ENSGuidelines_03_Expanded2Simple_justATooltip2.jpg and /dev/null differ diff --git a/.gitbook/assets/ENS_Map.png b/.gitbook/assets/ENS_Map.png deleted file mode 100644 index c3a383daa..000000000 Binary files a/.gitbook/assets/ENS_Map.png and /dev/null differ diff --git a/.gitbook/assets/Screenshot 2021-05-19 at 17.54.17.png b/.gitbook/assets/Screenshot 2021-05-19 at 17.54.17.png deleted file mode 100644 index b6c71b22d..000000000 Binary files a/.gitbook/assets/Screenshot 2021-05-19 at 17.54.17.png and /dev/null differ diff --git a/.gitbook/assets/diagram (1).png b/.gitbook/assets/diagram (1).png deleted file mode 100644 index 2c186a8e7..000000000 Binary files a/.gitbook/assets/diagram (1).png and /dev/null differ diff --git a/.gitbook/assets/diagram.png b/.gitbook/assets/diagram.png deleted file mode 100644 index 2c186a8e7..000000000 Binary files a/.gitbook/assets/diagram.png and /dev/null differ diff --git a/.gitbook/assets/dnssec_sha (1).png b/.gitbook/assets/dnssec_sha (1).png deleted file mode 100644 index 376ba7a38..000000000 Binary files a/.gitbook/assets/dnssec_sha (1).png and /dev/null differ diff --git a/.gitbook/assets/dnssec_sha.png b/.gitbook/assets/dnssec_sha.png deleted file mode 100644 index 376ba7a38..000000000 Binary files a/.gitbook/assets/dnssec_sha.png and /dev/null differ diff --git a/.gitbook/assets/dnssec_step1 (1).png b/.gitbook/assets/dnssec_step1 (1).png deleted file mode 100644 index ee71ab02b..000000000 Binary files a/.gitbook/assets/dnssec_step1 (1).png and /dev/null differ diff --git a/.gitbook/assets/dnssec_step1.png b/.gitbook/assets/dnssec_step1.png deleted file mode 100644 index ee71ab02b..000000000 Binary files a/.gitbook/assets/dnssec_step1.png and /dev/null differ diff --git a/.gitbook/assets/dnssec_step2 (1).png b/.gitbook/assets/dnssec_step2 (1).png deleted file mode 100644 index e55837c57..000000000 Binary files a/.gitbook/assets/dnssec_step2 (1).png and /dev/null differ diff --git a/.gitbook/assets/dnssec_step2.png b/.gitbook/assets/dnssec_step2.png deleted file mode 100644 index e55837c57..000000000 Binary files a/.gitbook/assets/dnssec_step2.png and /dev/null differ diff --git a/.gitbook/assets/dnssec_step3 (1).png b/.gitbook/assets/dnssec_step3 (1).png deleted file mode 100644 index 7a416f9d7..000000000 Binary files a/.gitbook/assets/dnssec_step3 (1).png and /dev/null differ diff --git a/.gitbook/assets/dnssec_step3.png b/.gitbook/assets/dnssec_step3.png deleted file mode 100644 index 7a416f9d7..000000000 Binary files a/.gitbook/assets/dnssec_step3.png and /dev/null differ diff --git a/.gitbook/assets/dnssec_step4 (1).png b/.gitbook/assets/dnssec_step4 (1).png deleted file mode 100644 index 61d8eb35f..000000000 Binary files a/.gitbook/assets/dnssec_step4 (1).png and /dev/null differ diff --git a/.gitbook/assets/dnssec_step4.png b/.gitbook/assets/dnssec_step4.png deleted file mode 100644 index 61d8eb35f..000000000 Binary files a/.gitbook/assets/dnssec_step4.png and /dev/null differ diff --git a/.gitbook/assets/ens-architecture (1).png b/.gitbook/assets/ens-architecture (1).png deleted file mode 100644 index 131fdde71..000000000 Binary files a/.gitbook/assets/ens-architecture (1).png and /dev/null differ diff --git a/.gitbook/assets/ens-architecture.png b/.gitbook/assets/ens-architecture.png deleted file mode 100644 index 131fdde71..000000000 Binary files a/.gitbook/assets/ens-architecture.png and /dev/null differ diff --git a/.gitbook/assets/ensguidelines_01_onlydomain_2x.jpg b/.gitbook/assets/ensguidelines_01_onlydomain_2x.jpg deleted file mode 100644 index f4caaa93e..000000000 Binary files a/.gitbook/assets/ensguidelines_01_onlydomain_2x.jpg and /dev/null differ diff --git a/.gitbook/assets/ensguidelines_02_nameandaddress_2x.jpg b/.gitbook/assets/ensguidelines_02_nameandaddress_2x.jpg deleted file mode 100644 index f9109ba3f..000000000 Binary files a/.gitbook/assets/ensguidelines_02_nameandaddress_2x.jpg and /dev/null differ diff --git a/.gitbook/assets/ensguidelines_02b_nameandaddressclear.jpg b/.gitbook/assets/ensguidelines_02b_nameandaddressclear.jpg deleted file mode 100644 index a2d7434ca..000000000 Binary files a/.gitbook/assets/ensguidelines_02b_nameandaddressclear.jpg and /dev/null differ diff --git a/.gitbook/assets/ensguidelines_03_expanded1.jpg b/.gitbook/assets/ensguidelines_03_expanded1.jpg deleted file mode 100644 index 60ceea3a3..000000000 Binary files a/.gitbook/assets/ensguidelines_03_expanded1.jpg and /dev/null differ diff --git a/.gitbook/assets/ensguidelines_03_expanded2simple_justatooltip2.jpg b/.gitbook/assets/ensguidelines_03_expanded2simple_justatooltip2.jpg deleted file mode 100644 index 9c6024175..000000000 Binary files a/.gitbook/assets/ensguidelines_03_expanded2simple_justatooltip2.jpg and /dev/null differ diff --git a/.gitbook/assets/owasp_w600 (1).png b/.gitbook/assets/owasp_w600 (1).png deleted file mode 100644 index 1ec7454ec..000000000 Binary files a/.gitbook/assets/owasp_w600 (1).png and /dev/null differ diff --git a/.gitbook/assets/owasp_w600.png b/.gitbook/assets/owasp_w600.png deleted file mode 100644 index 1ec7454ec..000000000 Binary files a/.gitbook/assets/owasp_w600.png and /dev/null differ diff --git a/.gitbook/assets/screenshot-2021-05-19-at-17.54.17.png b/.gitbook/assets/screenshot-2021-05-19-at-17.54.17.png deleted file mode 100644 index b6c71b22d..000000000 Binary files a/.gitbook/assets/screenshot-2021-05-19-at-17.54.17.png and /dev/null differ diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..e703d75b6 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,6 @@ +docs/ @lucemans +.github/ @lucemans +app/ @lucemans @svemat01 + +docs/ensip/ @arachnid +docs/ensip/index @lucemans diff --git a/.github/actions/install/action.yml b/.github/actions/install/action.yml new file mode 100644 index 000000000..9cd66cad5 --- /dev/null +++ b/.github/actions/install/action.yml @@ -0,0 +1,24 @@ +name: Install Tools & Dependencies +description: Installs pnpm, Node.js & package dependencies + +runs: + using: composite + steps: + - name: Setup PNPM + uses: pnpm/action-setup@v2.4.0 + with: + run_install: false + standalone: true + package_json_file: app/package.json + version: 8 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 19 + cache: pnpm + cache-dependency-path: 'app' + + - name: Install dependencies + run: cd app && pnpm install + shell: bash diff --git a/.github/development.md b/.github/development.md new file mode 100644 index 000000000..eb94e00d9 --- /dev/null +++ b/.github/development.md @@ -0,0 +1,25 @@ +# Development Guide + +## 🏠 Use node version + +Ensure you are on the right version of NodeJS. To see the active version, check [the .nvmrc file](../app/.nvmrc). + +``` +nvm use +``` + +## 🏃 Running the project + +To run the project, run: + +```sh +pnpm dev +``` + +## 🏗️ Building the project + +To build the project, run: + +```sh +pnpm build +``` diff --git a/.github/readme.png b/.github/readme.png new file mode 100644 index 000000000..dd6016802 Binary files /dev/null and b/.github/readme.png differ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..1ed29888d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,65 @@ +name: 🔎 + +on: + push: + branches: [master,main] + merge_group: + pull_request: + branches: [master,main] + +# Automatically cancel in-progress actions on the same branch +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }} + cancel-in-progress: true + +env: + NODE_OPTIONS: "--max_old_space_size=8192" + +jobs: + typecheck: + name: 🟦 Typescript + runs-on: ubuntu-20.04 + env: + FORCE_COLOR: true + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Install Tools & Dependencies + uses: ./.github/actions/install + + - name: Run typecheck + working-directory: ./app + run: pnpm run typecheck + eslint: + name: 👕 Linting + runs-on: ubuntu-20.04 + env: + FORCE_COLOR: true + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install Tools & Dependencies + uses: ./.github/actions/install + + - name: Run eslint + working-directory: ./app + run: pnpm run lint + build: + name: 🛠️ Build + runs-on: ubuntu-20.04 + env: + FORCE_COLOR: true + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install Tools & Dependencies + uses: ./.github/actions/install + + - name: Build + working-directory: ./app + run: pnpm run build diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..6144575b7 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,64 @@ +name: 🚚 Deploy + +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+-?[0-9]+" + +env: + NODE_OPTIONS: "--max_old_space_size=8192" + +jobs: + deploy: + runs-on: ubuntu-20.04 + permissions: + contents: write + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Install Tools & Dependencies + uses: ./.github/actions/install + + - name: Build + working-directory: ./app + run: pnpm run build + env: + TALLY_API_KEY: ${{ secrets.TALLY_API_KEY }} + + - name: Prepare tag + id: prepare_tag + if: startsWith(github.ref, 'refs/tags/') + run: | + TAG_NAME="${GITHUB_REF##refs/tags/}" + echo "::set-output name=tag_name::${TAG_NAME}" + echo "::set-output name=deploy_tag_name::deploy-${TAG_NAME}" + + - name: Edgeserver Upload + uses: lvkdotsh/edgeserver-action@v0.1.2-pre.4 + with: + app_id: "207908995888658940" + server: https://api.edgeserver.io + token: ${{ secrets.EDGESERVER_TOKEN }} + directory: app/out + + - uses: oven-sh/setup-bun@v1 + + - name: Install dependencies + run: bun install + working-directory: app/scripts + shell: bash + + - name: Build search.json + run: bun run build-search + working-directory: app/scripts + shell: bash + + - name: Index search.json + shell: bash + run: | + curl --silent -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${{secrets.SEARCH_TOKEN}}" -d @app/out/search.json https://search.v3x.systems/indexes/ens-docs/documents?primaryKey=id diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..575e0dc1b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,54 @@ +# Welcome to ENS docs contributing guide + +Thank you for investing your time in contributing to our documentation! Any contribution you make will be reflected on [docs.ens.domains](https://docs.ens.domains) :sparkles:. + +In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. + +## Getting started + +This guide will walk you through the process of contributing to the ENS docs. If you are new to GitHub, you can checkout this [GitHub tutorial](https://guides.github.com/activities/hello-world/) to get started. + +### Issues + +#### Create a new issue + +If you spot a problem with the docs, [search if an issue already exists](https://github.com/ensdomains/docs-v2/issues). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/ensdomains/docs-v2/issues/new). + +#### Solve an issue + +Scan through our [existing issues](https://github.com/ensdomains/docs-v2/issues) to find one that interests you. You can narrow down the search using `labels` as filters. As a general rule, we don't assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix. + +### Make Changes + +#### Make changes in the UI + +Click **Make a contribution** at the bottom of any docs page to make small changes such as a typo, sentence fix, or a broken link. This takes you to the `.md` file where you can make your changes and [create a pull request](#pull-request) for a review. + +#### Make changes locally + +1. Fork the repository. + +2. (Optional) If you are making any code changes. Install or update to **Node.js**, or run `nvm use` if using [Node Version Manager](https://nvm.sh). For more information, see [the development guide](.github/development.md). + +3. Create a working branch and start with your changes! + +### Commit your update + +Commit the changes once you are happy with them. Upon creating a Pull Request your code will automatically be tested :zap:. + +### Pull Request + +When you're finished with the changes, create a pull request, also known as a PR. +- Fill the "Ready for review" template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request. +- Don't forget to [link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if you are solving one. +- Enable the checkbox to [allow maintainer edits](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork) so the branch can be updated for a merge. +Once you submit your PR, a Docs team member will review your proposal. We may ask questions or request additional information. +- We may ask for changes to be made before a PR can be merged, either using [suggested changes](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request) or pull request comments. You can apply suggested changes directly through the UI. You can make any other changes in your fork, then commit them to your branch. +- As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations). +- If you run into any merge issues, checkout this [git tutorial](https://github.com/skills/resolve-merge-conflicts) to help you resolve merge conflicts and other issues. + +### Your PR is merged! + +Congratulations :tada::tada: The ENS team thanks you :sparkles:. + +Once your PR is merged, your contributions will be publicly visible on the [ENS Docs](https://docs.ens.domains). diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..0e259d42c --- /dev/null +++ b/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/README.md b/README.md index d394703ad..b91921d16 100644 --- a/README.md +++ b/README.md @@ -1,73 +1,15 @@ -# Introduction +[![readme](./.github/readme.png)](https://docs.ens.domains/?ref=github-banner) The Ethereum Name Service (ENS) is a distributed, open, and extensible naming system based on the Ethereum blockchain. -ENS’s job is to map human-readable names like ‘alice.eth’ to machine-readable identifiers such as Ethereum addresses, other cryptocurrency addresses, content hashes, and metadata. ENS also supports ‘reverse resolution’, making it possible to associate metadata such as canonical names or interface descriptions with Ethereum addresses. +## 🗒️ Documentation -ENS has similar goals to DNS, the Internet’s Domain Name Service, but has significantly different architecture due to the capabilities and constraints provided by the Ethereum blockchain. Like DNS, ENS operates on a system of dot-separated hierarchical names called domains, with the owner of a domain having full control over subdomains. +The ENS documentation is available at [docs.ens.domains](https://docs.ens.domains/?ref=ens-docs-github). This repository contains the source code for the documentation, as well as the markdown files that make up its contents. -Top-level domains, like ‘.eth’ and ‘.test’, are owned by smart contracts called registrars, which specify rules governing the allocation of their subdomains. Anyone may, by following the rules imposed by these registrar contracts, obtain ownership of a domain for their own use. ENS also supports importing in DNS names already owned by the user for use on ENS. +## 📖 Contributing -Because of the hierarchal nature of ENS, anyone who owns a domain at any level may configure subdomains - for themselves or others - as desired. For instance, if Alice owns 'alice.eth', she can create 'pay.alice.eth' and configure it as she wishes. +We welcome contributions to the ENS documentation. If you would like to contribute, please read the [contributing guidelines](./CONTRIBUTING.md). All content is written in mdx, and [markdown files can be found here](./docs). -ENS is deployed on the Ethereum main network and on several test networks. If you use a library such as the [ensjs](https://www.npmjs.com/package/@ensdomains/ensjs) Javascript library, or an end-user application, it will automatically detect the network you are interacting with and use the ENS deployment on that network. +## 📄 License -You can try ENS out for yourself now by using the [ENS Manager App](https://app.ens.domains), or by using any of the many ENS enabled applications on [our homepage](https://ens.domains). - -## ENS Architecture - -ENS has two principal components: the [registry](contract-api-reference/ens.md), and [resolvers](contract-api-reference/publicresolver.md). - -![](<.gitbook/assets/ens-architecture (1).png>) - -The ENS registry consists of a single smart contract that maintains a list of all domains and subdomains, and stores three critical pieces of information about each: - -> * The owner of the domain -> * The resolver for the domain -> * The caching time-to-live for all records under the domain - -The owner of a domain may be either an external account (a user) or a smart contract. A registrar is simply a smart contract that owns a domain and issues subdomains of that domain to users that follow some set of rules defined in the contract. - -Owners of domains in the ENS registry may: - -> * Set the resolver and TTL for the domain -> * Transfer ownership of the domain to another address -> * Change the ownership of subdomains - -The ENS registry is deliberately straightforward and exists only to map from a name to the resolver responsible for it. - -Resolvers are responsible for the actual process of translating names into addresses. Any contract that implements the relevant standards may act as a resolver in ENS. General-purpose resolver implementations are offered for users whose requirements are straightforward, such as serving an infrequently changed address for a name. - -Each record type - cryptocurrency address, IPFS content hash, and so forth - defines a method or methods that a resolver must implement in order to provide records of that kind. New record types may be defined at any time via the EIP standardization process, with no need to make changes to the ENS registry or to existing resolvers in order to support them. - -Resolving a name in ENS is a two-step process: First, ask the registry what resolver is responsible for the name, and second, ask that resolver for the answer to your query. - -![](https://lh5.googleusercontent.com/\_OPPzaxTxKggx9HuxloeWtK8ggEfIIBKRCEA6BKMwZdzAfUpIY6cz7NK5CFmiuw7TwknbhFNVRCJsswHLqkxUEJ5KdRzpeNbyg8\_H9d2RZdG28kgipT64JyPZUP--bAizozaDcxCq34) - -In the above example, we're trying to find the Ethereum address pointed to by 'foo.eth'. First, we ask the registry which resolver is responsible for 'foo.eth'. Then, we query that resolver for the address of 'foo.eth'. - -### Namehash - -Resource constraints in smart contracts make interacting directly with human-readable names inefficient, so ENS works purely with fixed length 256-bit cryptographic hashes. In order to derive the hash from a name while still preserving its hierarchal properties, a process called Namehash is used. For example, the namehash of 'alice.eth' is _0x787192fc5378cc32aa956ddfdedbf26b24e8d78e40109add0eea2c1a012c3dec_; this is the representation of names that is used exclusively inside ENS. - -Namehash is a recursive process that can generate a unique hash for any valid domain name. Starting with the namehash of any domain - for example, 'alice.eth' - it's possible to derive the namehash of any subdomain - for example 'iam.alice.eth' - without having to know or handle the original human-readable name. It is this property that makes it possible for ENS to provide a hierarchal system, without having to deal with human-readable text strings internally. - -Before being hashed with namehash, names are first normalized, using a process called UTS-46 normalization. This ensures that upper- and lower-case names are treated equivalently, and that invalid characters are prohibited. Anything that hashes and resolves a name **must** first normalize it, to ensure that all users get a consistent view of ENS. - -For details on how namehash and normalization works, see the developer documentation on [name processing](contract-api-reference/name-processing.md). - -## Getting Started - -ENS has documentation for a variety of audiences, including dapp developers and contract developers, as well as reference documentation. - -#### I'm a dapp developer and want to add ENS support to my dapp - -Check out the dapp developer guide, starting with [ENS Enabling your Dapp](dapp-developer-guide/ens-enabling-your-dapp.md). You'll want to choose one of the many available [ENS Libraries](dapp-developer-guide/ens-libraries.md) to get started working with ENS. - -#### I'm a contract developer and want to interact with ENS from my contract code - -Check out the Contract Developer Guide, starting with [Resolving Names On-chain](contract-developer-guide/resolving-names-on-chain.md). You can also [write your own resolver](contract-developer-guide/writing-a-resolver.md) (to customise the process of looking up names), or your own [registrar](contract-developer-guide/writing-a-registrar.md) (to customise the process of registering new names). - -#### I want reference documentation for the ENS smart contracts - -Check out the Contract API Reference. We have reference documentation for ENS's core contract, the [registry](contract-api-reference/ens.md), for [resolvers](contract-api-reference/publicresolver.md), and for commonly-used registrars such as the [Test registrar](contract-api-reference/testregistrar.md), [reverse registrar](contract-api-reference/reverseregistrar.md), and the [.eth registrar](contract-api-reference/.eth-permanent-registrar/). +Please check the license information from the [LICENSE](./LICENSE) file. diff --git a/SUMMARY.md b/SUMMARY.md deleted file mode 100644 index d61d87d3b..000000000 --- a/SUMMARY.md +++ /dev/null @@ -1,70 +0,0 @@ -# Table of contents - -* [Introduction](README.md) -* [Terminology](terminology.md) -* [Frequently Asked Questions](frequently-asked-questions.md) -* [ENS Deployments](ens-deployments.md) -* [Registrar Frequently Asked Questions](permanent-registrar-faq.md) -* [Deploying ENS on a Private Chain](deploying-ens-on-a-private-chain.md) -* [DNS Registrar guide](dns-registrar-guide.md) -* [Bug Bounty Program](bug-bounty-program.md) -* [ENS Improvement Proposals](ens-improvement-proposals/README.md) - * [ENSIP-1: ENS](ens-improvement-proposals/ensip-1-ens.md) - * [ENSIP-2: Initial Hash Registrar](ens-improvement-proposals/ensip-2-initial-hash-registrar.md) - * [ENSIP-3: Reverse Resolution](ens-improvement-proposals/ensip-3-reverse-resolution.md) - * [ENSIP-4: Support for contract ABIs](ens-improvement-proposals/ensip-4-support-for-contract-abis.md) - * [ENSIP-5: Text Records](ens-improvement-proposals/ensip-5-text-records.md) - * [ENSIP-6: DNS-in-ENS](ens-improvement-proposals/ensip-6-dns-in-ens.md) - * [ENSIP-7: Contenthash field](ens-improvement-proposals/ensip-7-contenthash-field.md) - * [ENSIP-8: Interface Discovery](ens-improvement-proposals/ensip-8-interface-discovery.md) - * [ENSIP-9: Multichain Address Resolution](ens-improvement-proposals/ensip-9-multichain-address-resolution.md) - * [ENSIP-10: Wildcard Resolution](ens-improvement-proposals/ensip-10-wildcard-resolution.md) - * [ENSIP-11: EVM compatible Chain Address Resolution](ens-improvement-proposals/ensip-11-evmchain-address-resolution.md) - * [ENSIP-12: Avatar Text Records](ens-improvement-proposals/ensip-12-avatar-text-records.md) - * [ENSIP-13: SAFE Authentication for ENS](ens-improvement-proposals/ensip-13-secondary-authentication-for-ens.md) - * [ENSIP-14: On-chain Source Parameter](ens-improvement-proposals/ensip-14-platform-source-parameter.md) - * [ENSIP-15: Normalization Standard](ens-improvement-proposals/ensip-15-normalization-standard.md) - * [ENSIP-16: Offchain Metadata](ens-improvement-proposals/ensip-16-offchain-metadata.md) - -## Dapp Developer Guide - -* [Quickstart](dapp-developer-guide/quickstart.md) -* [ENS Enabling your DApp](dapp-developer-guide/ens-enabling-your-dapp.md) -* [ENS Libraries](dapp-developer-guide/ens-libraries.md) -* [Working with ENS](dapp-developer-guide/working-with-ens.md) -* [Resolving Names](dapp-developer-guide/resolving-names.md) -* [Managing Names](dapp-developer-guide/managing-names.md) -* [Registering & Renewing Names](dapp-developer-guide/registering-and-renewing-names.md) -* [ENS Front-End Design Guidelines](dapp-developer-guide/front-end-design-guidelines.md) -* [ENS as NFT](dapp-developer-guide/ens-as-nft.md) -* [ENS Layer2 and offchain data support](dapp-developer-guide/ens-l2-offchain.md) -* [ENS Data guide](dapp-developer-guide/ens-data-guide.md) - -## Contract API Reference - -* [ENS Contracts Overview](contract-api-reference/ENS-Contracts-Overview.md) -* [Name Processing](contract-api-reference/name-processing.md) -* [Registry](contract-api-reference/ens.md) -* [ReverseRegistrar](contract-api-reference/reverseregistrar.md) -* [TestRegistrar](contract-api-reference/testregistrar.md) -* [PublicResolver](contract-api-reference/publicresolver.md) -* [.eth Permanent Registrar](contract-api-reference/.eth-permanent-registrar/README.md) - * [Registrar](contract-api-reference/.eth-permanent-registrar/registrar.md) - * [Controller](contract-api-reference/.eth-permanent-registrar/controller.md) -* [DNS Registrar](contract-api-reference/dns-registrar.md) -* [Subgraph](contract-api-reference/subgraph/subgraphdata.md) - * [Entities](contract-api-reference/subgraph/entities.md) - * [Query Examples](contract-api-reference/subgraph/queries.md) - -## Contract Developer Guide - -* [Resolving Names On-chain](contract-developer-guide/resolving-names-on-chain.md) -* [Writing a Resolver](contract-developer-guide/writing-a-resolver.md) -* [Writing a Registrar](contract-developer-guide/writing-a-registrar.md) -* [ENS Discussion Forum](https://discuss.ens.domains) -* [ENS Support Chat](https://chat.ens.domains) - -## ENS Migration (February 2020) - -* [Guide for DApp Developers](ens-migration-february-2020/guide-for-dapp-developers.md) -* [Technical Description](ens-migration-february-2020/technical-description.md) diff --git a/app/.eslintrc.json b/app/.eslintrc.json new file mode 100644 index 000000000..d72b3caeb --- /dev/null +++ b/app/.eslintrc.json @@ -0,0 +1,23 @@ +{ + "root": true, + "extends": ["plugin:v3xlabs/recommended", "plugin:tailwindcss/recommended"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2021 + }, + "ignorePatterns": ["!**/*"], + "plugins": ["v3xlabs", "tailwindcss"], + "env": { + "node": true, + "browser": true + }, + "rules": { + "sonarjs/cognitive-complexity": ["warn", 20], + "tailwindcss/no-custom-classname": "off" + }, + "settings": { + "tailwindcss": { + "config": "./tailwind.config.js" + } + } +} diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 000000000..786197641 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,12 @@ +.env +node_modules +.next/ +out/ +.DS_Store +*.pem +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* +.env*.local +.env diff --git a/app/.nvmrc b/app/.nvmrc new file mode 100644 index 000000000..62ccda57f --- /dev/null +++ b/app/.nvmrc @@ -0,0 +1 @@ +v19 diff --git a/app/.prettierrc b/app/.prettierrc new file mode 100644 index 000000000..97313f179 --- /dev/null +++ b/app/.prettierrc @@ -0,0 +1,5 @@ +{ + "tabWidth": 4, + "useTabs": false, + "singleQuote": true +} diff --git a/app/app/[...slug]/page.tsx b/app/app/[...slug]/page.tsx new file mode 100644 index 000000000..085593999 --- /dev/null +++ b/app/app/[...slug]/page.tsx @@ -0,0 +1,80 @@ +import { getPageBySlug } from 'data/get_page'; +import { getAllPageSlugs } from 'data/get_pages'; +import { ResolvingMetadata } from 'next'; + +import { ClientOnly } from '@/ClientOnly'; +import { Layout } from '@/layout/PageLayout'; +import { redirectToIndex } from '@/layout/RouteCheck'; +import { createMetadata } from '@/lib/metadata'; + +type PageProperties = { + params: { slug: string[] }; +}; + +export const generateMetadata = async ( + { params }: PageProperties, + parent: ResolvingMetadata +) => { + const { + pageProperties: { meta }, + } = await getPageBySlug(params.slug.join('/')); + const parentMetadata = await parent; + + return createMetadata( + { + title: `${meta.title} | ENS Docs`, + description: meta.description, + path: params.slug.join('/'), + }, + parentMetadata, + { + openGraph: { + type: 'article', + title: meta.title, + description: meta.description, + images: `/opengraph/${params.slug.join('/')}.png`, + tags: ['ENS', 'Ethereum Name Service', '.eth'], + authors: meta.contributors?.map( + (contributor) => 'https://github.com/' + contributor + ), + }, + twitter: { + card: 'summary_large_image', + }, + authors: meta.contributors?.map((contributor) => ({ + name: contributor, + url: 'https://github.com/' + contributor, + })), + } + ); +}; + +// eslint-disable-next-line unicorn/prevent-abbreviations +export async function generateStaticParams() { + const pages = await getAllPageSlugs(); + + return pages.map((slug) => ({ + slug: slug.split('/'), + })); +} + +const Page = async ({ params }: PageProperties) => { + console.log('🖥️ -> ' + params.slug.join('/')); + + if (params.slug.length == 1 && params.slug[0] == 'index') { + return ; + } + + const { Page, pageProperties } = await getPageBySlug(params.slug.join('/')); + + return ( + + + + ); +}; + +export default Page; diff --git a/app/app/content-metadata.json/route.ts b/app/app/content-metadata.json/route.ts new file mode 100644 index 000000000..e21de6cf9 --- /dev/null +++ b/app/app/content-metadata.json/route.ts @@ -0,0 +1,44 @@ +import { getPageBySlug } from 'data/get_page'; +import { getAllPageSlugs } from 'data/get_pages'; +import { NextResponse } from 'next/server'; + +import { navigation } from '../../src/config/navigation'; + +const { protocol } = navigation; + +export async function GET() { + if (process.env.NODE_ENV !== 'production') return NextResponse.json([]); + + console.log('🔍 Generating Search Index'); + + const slugs = await getAllPageSlugs(); + + const posts = await Promise.all( + slugs.map(async (slug) => { + const tag = + protocol.find((section) => { + if (slug == 'index' && section.name == 'Intro') return true; + + if (slug == 'dissapeared') return false; + + return section.activePattern.test(`/${slug}`); + })?.name || ''; + const { pageProperties } = await getPageBySlug(slug); + + return { + pageProperties, + slug, + tag, + }; + }) + ); + + const data = posts.map((post) => ({ + ...post.pageProperties.meta, + id: post.slug.replace('/', '--').replace(/[^\w-]/g, ''), + slug: post.slug, + tag: post.tag, + })); + + return NextResponse.json(data); +} diff --git a/app/app/globals.css b/app/app/globals.css new file mode 100644 index 000000000..a6c11ae9b --- /dev/null +++ b/app/app/globals.css @@ -0,0 +1,388 @@ +:root.dark { + --shiki-color-text: theme('colors.ens.dark.text.primary'); + --shiki-color-background: theme('colors.ens.dark.background.primary'); + --shiki-token-constant: theme('colors.ens.dark.blue.primary'); + --shiki-token-string: theme('colors.ens.dark.green.primary'); + --shiki-token-comment: theme('colors.ens.dark.text.secondary'); + --shiki-token-keyword: theme('colors.ens.dark.blue.primary'); + --shiki-token-parameter: theme('colors.ens.dark.pink.light'); + --shiki-token-function: theme('colors.ens.dark.orange.primary'); + --shiki-token-string-expression: theme('colors.ens.dark.pink.primary'); + --shiki-token-punctuation: theme('colors.ens.dark.text.disabled'); +} + +:root { + --shiki-color-text: #0969da; + --shiki-color-background: #afb8c133; + --shiki-token-constant: #0044ff; + --shiki-token-string: #0a3069; + --shiki-token-comment: #6e7781; + --shiki-token-keyword: #cf222e; + --shiki-token-parameter: #0a3069; + --shiki-token-function: #6639ba; + --shiki-token-string-expression: #0a3069; + --shiki-token-punctuation: #6e7781; + --shiki-token-link: #0969da; +} + +/* @font-face { + font-family: 'Satoshi'; + font-style: normal; + font-weight: normal; + font-display: swap; + src: url('/fonts/sans-serif/Satoshi-Medium.otf') format('opentype'); +} +@font-face { + font-family: 'Satoshi'; + font-style: normal; + font-weight: bold; + font-display: swap; + src: url('/fonts/sans-serif/Satoshi-Bold.otf') format('opentype'); +} +@font-face { + font-family: 'Satoshi'; + font-display: swap; + src: url('/fonts/sans-serif/Satoshi-Variable.ttf') format('truetype'); +} */ + +@font-face { + font-family: 'Inter'; + font-display: swap; + src: url('/fonts/sans-serif/inter/Inter-VariableFont_slnt,wght.ttf') + format('truetype'); +} + +@media (min-width: 768px) { + :root { + font-size: 16px; + } +} + +@tailwind base; +@tailwind components; +@tailwind utilities; + +.card { + @apply overflow-hidden rounded-lg bg-ens-light-grey-surface dark:bg-ens-dark-grey-surface shadow-sm dark:shadow-md ring-1 ring-black/10 dark:ring-white/10; +} + +.card1 { + @apply rounded-2xl bg-ens-light-background-primary dark:bg-ens-dark-background-primary border border-ens-light-border dark:border-ens-dark-border; +} +.card2 { + @apply rounded-2xl bg-ens-light-background-secondary dark:bg-ens-dark-background-secondary border border-ens-light-border dark:border-ens-dark-border; +} + +.card:not(.no-margin) { + @apply my-6; +} + +html body { + font-family: 'Inter', 'Satoshi', sans-serif; +} + +h1, h2, h3, h4 { + font-family: 'Satoshi', sans-serif; +} + +.font-satoshi { + font-family: 'Satoshi', sans-serif; +} + +.prose { + /* max-width: 720px; */ + /* width: 720px; */ +} + +/* @media (max-width: 1400px) { + .prose > * { + margin-left: 0; + } +} */ + +.prose > p + p { + /* @apply !mt-0 mb-0; */ +} + +.prose { + @apply text-ens-light-text-primary dark:text-ens-dark-text-primary; +} + +.prose h1, +.prose h2, +.prose h3, +.prose h4 { + @apply text-ens-light-text-primary dark:text-ens-dark-text-primary; +} + +html.dark { + color-scheme: dark; +} + +.scrollbar::-webkit-scrollbar { + @apply bg-transparent w-2; +} + +.scrollbar::-webkit-scrollbar-track { + background: transparent; +} + +.scrollbar:hover::-webkit-scrollbar-thumb { + @apply bg-zinc-900/10 rounded-full dark:bg-zinc-200/10; +} + +pre { + @apply bg-ens-light-background-secondary/20 dark:bg-ens-dark-background-secondary/20; + @apply text-ens-light-text-primary dark:text-ens-dark-text-primary overflow-x-auto p-4 text-xs; +} + +pre > code { + counter-reset: line; +} +pre > code > span:not(:last-child)::before { + content: counter(line); + counter-increment: line; + user-select: none; + + @apply inline-block text-right w-8; + @apply text-ens-light-text-secondary dark:text-ens-dark-text-secondary; + + padding-right: 0.5em; + margin-right: 1em; +} + +.mermaid { + @apply flex items-center justify-center; +} + +svg[role~='graphics-document'] { + @apply w-full border block; +} + +.focus-code { + @apply w-full; +} + +.focus-code::before { + content: ''; + @apply absolute left-0 right-0 h-[24px] bg-ens-light-blue-400/5; +} + +/* @media (min-width: 1650px) { + .pagedetails_wrapper { + @apply inset-x-0 top-16 w-full absolute; + } + .pagedetails { + margin-left: calc(50% - min(50%, 33rem)); + margin-right: calc(50% - min(50%, 33rem)); + } + .pagedetails_inner { + @apply absolute left-full px-4 h-[100px] !w-72; + } +} + +.pagedetails_wrapper { +} + +.pagedetails { + @apply relative w-full max-w-[900px]; + @apply mt-4; +} + +.pagedetails_inner { + @apply w-full h-fit space-y-4; +} */ + +.hlem em { + @apply bg-neutral-300/25 underline; +} + +.hlem:last-child { + @apply rounded-b-2xl; +} + +.hidable-code + * { + display: none; +} + +.hidable-code.hidden ~ * { + display: block; +} +.hidable-code.hidden ~ *.hidden { + display: none; +} +.ReactModal__Content { + opacity: 0; + transform: translateY(32px); + scale: 0.9; + transition: all 200ms ease-in-out; +} + +.ReactModal__Content--after-open { + opacity: 1; + scale: 1; + transform: translateY(0px); +} + +.ReactModal__Content--before-close { + opacity: 0; + scale: 0.95; + transform: translateY(32px); +} + +.breadcrumb { +} + +.breadcrumb ul { + display: flex; + flex-wrap: wrap; + list-style: none; + margin: 0; + padding: 0; +} + +.breadcrumb li:first-child { + padding-left: 0; +} + +.breadcrumb li:not(:last-child)::after { + display: inline-block; + padding-left: 0.5rem; + content: '/'; +} + +table { + border-collapse: separate; + border-width: 0; + border-spacing: 0; + @apply rounded-lg overflow-hidden border border-ens-light-border dark:border-ens-dark-border; +} + +thead { + @apply bg-ens-light-background-secondary dark:bg-ens-dark-background-secondary; + + display: table-header-group; + vertical-align: middle; +} + +thead tr { + display: table-row; + vertical-align: inherit; + @apply rounded-t-xl border overflow-hidden border-ens-light-border dark:border-ens-dark-border; +} + +thead th { + @apply p-4 last:border-r-0 border-b border-r text-ens-light-text-primary dark:text-ens-dark-text-primary border-ens-light-border dark:border-ens-dark-border; +} + +tbody { + @apply bg-ens-light-background-secondary/20 dark:bg-ens-dark-background-secondary/20; +} + +tbody tr { +} + +tbody td { + @apply p-4 border-b border-ens-light-border dark:border-ens-dark-border; +} + +tbody tr:last-child td { + @apply border-b-0; +} + +.btn { + @apply inline-flex justify-center gap-0.5 overflow-hidden text-sm font-medium transition; + @apply hover:-translate-y-[1px]; + @apply active:translate-y-0; +} + +.btn-blue-primary { + @apply bg-ens-light-blue-primary dark:bg-ens-dark-blue-primary; + @apply text-ens-light-text-accent dark:text-ens-dark-text-accent; + @apply hover:bg-ens-light-blue-bright dark:hover:bg-ens-dark-blue-bright hover:text-ens-light-text-accent hover:dark:text-ens-dark-text-accent; + @apply active:bg-ens-light-blue-bright dark:active:bg-ens-dark-blue-bright; /* */ + @apply focus:ring focus:ring-offset-2 focus:ring-ens-light-blue-bright dark:focus:ring-ens-dark-blue-bright focus:outline-none; /* */ + @apply rounded-lg py-2.5 px-5; +} + +.btn-blue-surface { + @apply bg-ens-light-blue-surface dark:bg-ens-dark-blue-surface; + @apply text-ens-light-blue-dim dark:text-ens-dark-blue-dim; + @apply hover:bg-ens-light-blue-light dark:hover:bg-ens-dark-blue-light; + @apply active:bg-ens-light-blue-bright dark:active:bg-ens-dark-blue-bright; /* */ + @apply focus:ring focus:ring-offset-2 focus:ring-ens-light-blue-bright dark:focus:ring-ens-dark-blue-bright focus:outline-none; /* */ + @apply rounded-lg py-2.5 px-5; +} + +.btn-red-primary { + @apply bg-ens-light-red-primary dark:bg-ens-dark-red-primary; + @apply text-ens-light-text-accent dark:text-ens-dark-text-accent; + @apply hover:bg-ens-light-red-bright dark:hover:bg-ens-dark-red-bright hover:text-ens-light-text-accent hover:dark:text-ens-dark-text-accent; + @apply active:bg-ens-light-red-bright dark:active:bg-ens-dark-red-bright; /* */ + @apply focus:ring focus:ring-offset-2 focus:ring-ens-light-red-bright dark:focus:ring-ens-dark-red-bright focus:outline-none; /* */ + @apply rounded-lg py-2.5 px-5; +} + +.btn-disabled { + @apply bg-ens-light-background-disabled dark:bg-ens-dark-background-disabled; + @apply text-ens-light-text-disabled dark:text-ens-dark-text-disabled; + @apply rounded-lg py-2.5 px-5; +} + +.input { + @apply block w-full border border-ens-light-border dark:border-ens-dark-border; + @apply outline-none; + @apply focus:ring focus:ring-offset-2 focus:ring-ens-light-blue-bright dark:focus:ring-ens-dark-blue-bright focus:outline-none; /* */ + @apply rounded-lg py-2 px-5; +} + +.helper-green { + @apply flex items-center gap-2 text-ens-light-text-primary dark:text-ens-dark-text-primary rounded-lg p-4 bg-ens-light-green-surface dark:bg-ens-dark-green-surface border border-ens-light-green-primary dark:border-ens-dark-green-primary; +} + +.helper-green svg { + @apply text-ens-light-green-primary dark:text-ens-dark-green-primary text-2xl; +} + +.tag { + @apply inline-flex items-center justify-center gap-1 rounded-2xl px-3 py-0.5 w-fit text-sm h-fit; +} + +.tag-blue { + @apply text-ens-light-blue-primary dark:text-ens-dark-blue-primary bg-ens-light-blue-surface dark:bg-ens-dark-blue-surface; +} + +.tag-yellow { + @apply text-ens-light-yellow-active dark:text-ens-dark-yellow-active bg-ens-light-yellow-surface dark:bg-ens-dark-yellow-surface; +} + +.tag-grey { + @apply text-ens-light-text-secondary dark:text-ens-dark-text-secondary bg-ens-light-grey-surface dark:bg-ens-dark-grey-surface; +} + +.tag-purple { + @apply text-ens-light-purple-active dark:text-ens-dark-purple-active bg-ens-light-purple-surface dark:bg-ens-dark-purple-surface; +} + +.gh-repo { + @apply mt-0 mb-0; +} + +.ReactModal__Overlay { + @apply bg-ens-light-grey-active/20 dark:bg-ens-dark-grey-active/20; +} + +label.label { + @apply text-ens-light-text-secondary px-2 font-bold; +} + +.card1.card-green { + @apply rounded-2xl bg-ens-light-green-surface dark:bg-ens-dark-green-surface border border-ens-light-green-primary dark:border-ens-dark-green-primary text-ens-light-green-primary dark:text-ens-dark-green-primary; +} +.card1.card-red { + @apply rounded-2xl bg-ens-light-red-surface dark:bg-ens-dark-red-surface border border-ens-light-red-primary dark:border-ens-dark-red-primary text-ens-light-red-primary dark:text-ens-dark-red-primary; +} + +.card1::scrollbar { + @apply rounded-tr-xl overflow-hidden; +} \ No newline at end of file diff --git a/app/app/layout.tsx b/app/app/layout.tsx new file mode 100644 index 000000000..ea74d7fe2 --- /dev/null +++ b/app/app/layout.tsx @@ -0,0 +1,40 @@ +import './globals.css'; +import 'focus-visible'; +import '@ens-tools/thorin-core/style.css'; + +import { Theme } from './theme'; + +export const metadata = { + title: 'ENS Documentation', + description: 'Documentation for the ENS protocol.', +}; + +export default function RootLayout(properties) { + const { children } = properties; + + return ( + + + + + + {children} + + + + + + ); +} diff --git a/app/app/not-found.tsx b/app/app/not-found.tsx new file mode 100644 index 000000000..f3bb08fc1 --- /dev/null +++ b/app/app/not-found.tsx @@ -0,0 +1,33 @@ +import Image from 'next/image'; + +import { Button } from '@/components/Button'; +import { Layout } from '@/layout/PageLayout'; + +export default function NotFound() { + return ( + +
+ Shrug +

Article Not Found

+

It doesn't look like this page exists...

+ +
+
+ ); +} diff --git a/app/app/opengraph/[...slug]/route.tsx b/app/app/opengraph/[...slug]/route.tsx new file mode 100644 index 000000000..299bf0847 --- /dev/null +++ b/app/app/opengraph/[...slug]/route.tsx @@ -0,0 +1,318 @@ +import { getPageBySlug } from 'data/get_page'; +import { getAllPageSlugs } from 'data/get_pages'; +import { ImageResponse } from 'next/og'; +import { NextRequest } from 'next/server'; +import { readFile } from 'node:fs/promises'; + +// Route segment config +// export const runtime = 'nodejs'; +// export const runtime = 'edge'; +// export const dynamic = 'error'; +// eslint-disable-next-line unicorn/prevent-abbreviations +// export const dynamicParams = false; +// export const revalidate = false; + +// eslint-disable-next-line unicorn/prevent-abbreviations +// export async function generateStaticParams() { +// const pages = ['a/b']; + +// return pages.map((slug) => ({ +// slug: slug.split('/'), +// })); +// } + +// export async function generateImageMetadata({ +// params, +// }: { +// params: { slug: string }; +// }) { +// // const images = await getOGImages(params.id); +// const images = [{ text: 'Other text' }, { text: 'O:' + params.slug }]; + +// return images.map((image, index) => ({ +// id: index, +// size: { width: 1600, height: 840 }, +// alt: image.text, +// contentType: 'image/png', +// })); +// } + +// Font +// const interSemiBold = fetch( +// new URL('public/Inter-SemiBold.ttf', import.meta.url) +// ).then((response) => response.arrayBuffer()); + +// eslint-disable-next-line unicorn/prevent-abbreviations +export async function generateStaticParams() { + if (process.env.NODE_ENV !== 'production') return []; + + const pages = await getAllPageSlugs(); + + // return []; + + // TODO: Uncomment + return pages.map((slug) => ({ + slug: (slug + '.png').split('/'), + })); +} + +const fontScale = (length: number) => { + // Max font size: 128 + const max = 100; + // Min font size: 32 + const min = 32; + + // Max length: 30 + // Min length: 3 + + return Math.max( + min, + Math.min(max, Math.round(max - (max - min) * (length / 40))) + ); +}; + +const satoshiFont = readFile('public/fonts/sans-serif/Satoshi-Bold.otf'); + +// const satoshiFont = fetch( +// new URL(, import.meta.url) +// ).then((response) => response.arrayBuffer()); + +// Image generation +export async function GET(request: NextRequest) { + // ex: /opengraph/web/siwe.png + const { pathname } = request.nextUrl; + + console.log('🖼️ -> ' + pathname); + + // ex web/siwe (remove final .png, and remove /opengraph/) + const slug = pathname.slice(11, -4); + + const page = await getPageBySlug(slug); + + const [[avatars, moreAvatars], [authors, moreAuthors]] = (() => { + if (!page.pageProperties.meta?.contributors) + return [ + [[], 0], + [[], 0], + ]; + + const v = [...page.pageProperties.meta.contributors].reverse(); + const s1 = v.slice(0, 5).reverse(); + const s2 = v.slice(0, 3); + + // grab first 5 contributors + return [ + [s1, v.length - s1.length], + [s2, v.length - s2.length], + ]; + })(); + + return new ImageResponse( + ( + // ImageResponse JSX element +
+
+
+
+ + + + + + + + + + + + + + + + {/* */} +
+
+ {page.pageProperties.meta.title} +
+
+
+ {avatars.map((key, index) => ( +
0 ? '-1.5rem' : '0', + }} + > + +
+ ))} + {moreAvatars > 0 && ( +
+ + {moreAvatars} +
+ )} +
+
+ {authors.join(', ')} + {moreAuthors > 0 && ', ...'} +
+
+
+
+
+ ), + // ImageResponse options + { + // ...size, + width: 1200, + height: 630, + emoji: 'twemoji', + fonts: [ + { + name: 'Satoshi', + data: await satoshiFont, + style: 'normal', + weight: 400, + }, + ], + } + ); +} diff --git a/app/app/page.tsx b/app/app/page.tsx new file mode 100644 index 000000000..ff6f79caa --- /dev/null +++ b/app/app/page.tsx @@ -0,0 +1,44 @@ +import { getPageBySlug } from 'data/get_page'; +import { ResolvingMetadata } from 'next'; + +import { Layout } from '@/layout/PageLayout'; +import { createMetadata } from '@/lib/metadata'; + +export const generateMetadata = async (_x: any, parent: ResolvingMetadata) => { + const { + pageProperties: { meta }, + } = await getPageBySlug('index'); + const parentMetadata = await parent; + + return createMetadata( + { + title: 'ENS Documentation', + description: meta.description, + path: '/', + }, + parentMetadata, + { + twitter: { + card: 'summary_large_image', + }, + openGraph: { + type: 'article', + images: '/opengraph.png', + }, + } + ); +}; + +export default async function Page() { + const { Page, pageProperties } = await getPageBySlug('index'); + + return ( + + + + ); +} diff --git a/app/app/sitemap.ts b/app/app/sitemap.ts new file mode 100644 index 000000000..3d4bd5b1e --- /dev/null +++ b/app/app/sitemap.ts @@ -0,0 +1,45 @@ +import { glob } from 'glob'; +import { MetadataRoute } from 'next'; +import { join } from 'node:path'; +import simpleGit from 'simple-git'; + +const SLUG_IGNORE = new Set(['dissapeared']); + +const processSlugs = (slug: string) => { + return slug.replace('index', ''); +}; + +const getGitLastUpdatedTimeStamp = async (slug: string) => { + const git = simpleGit({ + baseDir: process.cwd().replace(/\/app$/, ''), + }); + const lastUpdatedTimeStamp = await git.log({ + file: process.cwd().replace(/\/app$/, '') + `/docs/${slug}`, + }); + + return new Date(lastUpdatedTimeStamp.latest.date); +}; + +export default async function sitemap(): Promise { + const files = await glob('**/*.mdx', { + cwd: join(process.cwd(), '../docs'), + }); + + const routes = await Promise.all( + files.map(async (file) => { + const slug = file.replace(/(\/index)?\.mdx$/, ''); + const lastUpdated = await getGitLastUpdatedTimeStamp(file); + + if (SLUG_IGNORE.has(slug)) { + return; + } + + return { + url: 'https://docs.ens.domains/' + processSlugs(slug), + lastModified: lastUpdated, + }; + }) + ); + + return routes.filter(Boolean); +} diff --git a/app/app/theme.tsx b/app/app/theme.tsx new file mode 100644 index 000000000..116115829 --- /dev/null +++ b/app/app/theme.tsx @@ -0,0 +1,37 @@ +'use client'; + +import '@ens-tools/thorin-core'; + +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { ThemeProvider } from 'next-themes'; +import { goerli, mainnet, sepolia } from 'viem/chains'; +import { createConfig, http, WagmiProvider } from 'wagmi'; +import { injected } from 'wagmi/connectors'; + +const config = createConfig({ + chains: [mainnet, goerli, sepolia], + connectors: [injected({})], + transports: { + [mainnet.id]: http(), + [goerli.id]: http(), + [sepolia.id]: http(), + }, +}); + +declare module 'wagmi' { + interface Register { + config: typeof config; + } +} + +const queryClient = new QueryClient(); + +export const Theme = ({ children }) => { + return ( + + + {children} + + + ); +}; diff --git a/app/data/get_page.tsx b/app/data/get_page.tsx new file mode 100644 index 000000000..3c3774402 --- /dev/null +++ b/app/data/get_page.tsx @@ -0,0 +1,59 @@ +import { MDXProps } from 'mdx/types'; +import { notFound } from 'next/navigation'; +import { existsSync } from 'node:fs'; +import { join } from 'node:path'; +import { cache, ReactNode } from 'react'; + +import { + MdxPageProps as MdxPageProperties, + mdxPagePropsSchema as mdxPagePropertiesSchema, +} from '../src/lib/mdxPageProps'; + +const contentDirectory = join(process.cwd(), '../docs'); + +const _getPageBySlug = async ( + // ex 'index' or 'web' or 'web/quickstart' + slug: string +): Promise<{ + Page: (_properties: MDXProps) => ReactNode; + pageProperties: MdxPageProperties; +}> => { + console.log('🔍 -> ' + slug); + + const potentialPaths = [slug, slug + '/index']; + let foundPath: string | undefined; + + for (const path of potentialPaths) { + const exists = existsSync(join(contentDirectory, path + '.mdx')); + + if (exists) { + foundPath = path; + break; + } + } + + if (!foundPath) { + console.warn('Tried to find page by slug but couldnt find:', slug); + + return notFound(); + } + + const file = await import('../../docs/' + foundPath + '.mdx'); + + const { default: Page, ...rawPageProperties } = + file as MdxPageProperties & { + default: (_properties: MDXProps) => ReactNode; + }; + + const pageProperties = mdxPagePropertiesSchema.parse(rawPageProperties); + + if (!pageProperties.meta.title || pageProperties.meta.title == '') + pageProperties.meta.title = pageProperties.title; + + return { + pageProperties, + Page, + }; +}; + +export const getPageBySlug = cache(_getPageBySlug); diff --git a/app/data/get_pages.ts b/app/data/get_pages.ts new file mode 100644 index 000000000..731986931 --- /dev/null +++ b/app/data/get_pages.ts @@ -0,0 +1,15 @@ +import { glob } from 'glob'; +import { join } from 'node:path'; +import { cache } from 'react'; + +const contentDirectory = join(process.cwd(), '../docs'); + +const _getAllPageSlugs = async () => { + console.log('🧹 GLOBBING DA FILES'); + + const files = await glob('**/*.mdx', { cwd: contentDirectory }); + + return files.map((file) => file.replace(/(\/index)?\.mdx$/, '')); +}; + +export const getAllPageSlugs = cache(_getAllPageSlugs); diff --git a/app/jsconfig.json b/app/jsconfig.json new file mode 100644 index 000000000..2c8ee2bb0 --- /dev/null +++ b/app/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + } +} diff --git a/app/local/data/blockchain_explorers.ts b/app/local/data/blockchain_explorers.ts new file mode 100644 index 000000000..370179abb --- /dev/null +++ b/app/local/data/blockchain_explorers.ts @@ -0,0 +1,46 @@ +import { goerli, holesky, mainnet, sepolia } from 'viem/chains'; + +type BlockchainExplorer = { + name: string; + contract_url?: string; + account_url?: string; + name_url?: string; +}; + +export const BLOCKCHAIN_EXPLORERS: Record = { + [mainnet.id]: [ + { + name: 'Etherscan', + account_url: 'https://etherscan.io/address/%ADDRESS%', + contract_url: 'https://etherscan.io/address/%ADDRESS%', + name_url: 'https://etherscan.io/name-lookup-search?id=%NAME%', + }, + ], + [goerli.id]: [ + { + name: 'Etherscan', + account_url: 'https://ropsten.etherscan.io/address/%ADDRESS%', + contract_url: 'https://ropsten.etherscan.io/address/%ADDRESS%', + name_url: + 'https://ropsten.etherscan.io/name-lookup-search?id=%NAME%', + }, + ], + [sepolia.id]: [ + { + name: 'Etherscan', + account_url: 'https://sepolia.etherscan.io/address/%ADDRESS%', + contract_url: 'https://sepolia.etherscan.io/address/%ADDRESS%', + name_url: + 'https://sepolia.etherscan.io/name-lookup-search?id=%NAME%', + }, + ], + [holesky.id]: [ + { + name: 'Etherscan', + account_url: 'https://holesky.etherscan.io/address/%ADDRESS%', + contract_url: 'https://holesky.etherscan.io/address/%ADDRESS%', + name_url: + 'https://holesky.etherscan.io/name-lookup-search?id=%NAME%', + }, + ], +}; diff --git a/app/local/data/deployments.ts b/app/local/data/deployments.ts new file mode 100644 index 000000000..041e965b3 --- /dev/null +++ b/app/local/data/deployments.ts @@ -0,0 +1,154 @@ +/* eslint-disable sonarjs/no-duplicate-string */ +import { goerli, holesky, mainnet, sepolia } from 'viem/chains'; + +import { DeploymentData } from '@/content/extras/deployments/deployment'; + +type Deployment = { + name: string; + slug: string; + id: number; + contracts: DeploymentData[]; +}; + +export const DEPLOYMENTS: Deployment[] = [ + { + name: 'Mainnet', + slug: 'mainnet', + id: mainnet.id, + contracts: [ + { + name: 'Registry', + path: 'ENSRegistry', + }, + { + name: 'Base Registrar', + path: 'BaseRegistrarImplementation', + }, + { + name: 'ETH Registrar Controller', + path: 'ETHRegistrarController', + }, + { + name: 'DNS Registrar', + path: 'DNSRegistrar', + }, + { + name: 'Reverse Registrar', + path: 'ReverseRegistrar', + }, + { + name: 'Name Wrapper', + path: 'NameWrapper', + }, + { + name: 'Public Resolver', + path: 'PublicResolver', + }, + ], + }, + { + name: 'Goerli', + slug: 'goerli', + id: goerli.id, + contracts: [ + { + name: 'Registry', + path: 'ENSRegistry', + }, + { + name: 'Base Registrar', + path: 'BaseRegistrarImplementation', + }, + { + name: 'ETH Registrar Controller', + path: 'ETHRegistrarController', + }, + { + name: 'DNS Registrar', + path: 'DNSRegistrar', + }, + { + name: 'Reverse Registrar', + path: 'ReverseRegistrar', + }, + { + name: 'Name Wrapper', + path: 'NameWrapper', + }, + { + name: 'Public Resolver', + path: 'PublicResolver', + }, + ], + }, + { + name: 'Sepolia', + slug: 'sepolia', + id: sepolia.id, + contracts: [ + { + name: 'Registry', + path: 'ENSRegistry', + }, + { + name: 'Base Registrar', + path: 'BaseRegistrarImplementation', + }, + { + name: 'ETH Registrar Controller', + path: 'ETHRegistrarController', + }, + { + name: 'DNS Registrar', + path: 'DNSRegistrar', + }, + { + name: 'Reverse Registrar', + path: 'ReverseRegistrar', + }, + { + name: 'Name Wrapper', + path: 'NameWrapper', + }, + { + name: 'Public Resolver', + path: 'PublicResolver', + }, + ], + }, + { + name: 'Holesky', + slug: 'holesky', + id: holesky.id, + contracts: [ + { + name: 'Registry', + path: 'ENSRegistry', + }, + { + name: 'Base Registrar', + path: 'BaseRegistrarImplementation', + }, + { + name: 'ETH Registrar Controller', + path: 'ETHRegistrarController', + }, + { + name: 'DNS Registrar', + path: 'DNSRegistrar', + }, + { + name: 'Reverse Registrar', + path: 'ReverseRegistrar', + }, + { + name: 'Name Wrapper', + path: 'NameWrapper', + }, + { + name: 'Public Resolver', + path: 'PublicResolver', + }, + ], + }, +]; diff --git a/app/local/data/resolver.ts b/app/local/data/resolver.ts new file mode 100644 index 000000000..3a3cd3ded --- /dev/null +++ b/app/local/data/resolver.ts @@ -0,0 +1,134 @@ +/* eslint-disable sonarjs/no-duplicate-string */ + +type ResolverMethod = { + name: string; + interface: string; + usage: string; + seeMore: string; + output?: string; + event?: string; +}; + +export const PUBLIC_RESOLVER_SUPPORTS = [ + // 'addr', + // 'addr.reverse', + // 'contenthash', + // 'contenthash.set', + // 'multicoin', + // 'multicoin.set', + // 'text', + // 'text.set', + // 'ABI', + // 'ABI.set', + // 'pubkey', + // 'pubkey.set', + // 'name', + // 'name.set', + // 'multicall', +]; + +export const resolver_methods: ResolverMethod[] = [ + { + name: 'addr(bytes32 node) view returns (address)', + interface: '0x3b3b57de', + usage: 'Read Ethereum Address', + seeMore: 'ENSIP-1 / EIP-137', + output: 'Ethereum address or the zero address if no address is set.', + }, + { + name: 'addr(bytes32 node, uint coinType) view returns (byte memory)', + interface: '0xf1cb7e06', + usage: 'Read Multicoin Address', + seeMore: + 'ENSIP-9 / [EIP-2304](https://eips.ethereum.org/EIPS/eip-2304)', + output: 'Cryptocurrency address in its native binary format. For example, the Bitcoin address `1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa` base58check decodes to the 21 bytes `0062e907b15cbf27d5425399ebf6f0fb50ebb88f18` then scriptPubkey encodes to 25 bytes `76a91462e907b15cbf27d5425399ebf6f0fb50ebb88f1888ac` whereas the BNB address `bnb1grpf0955h0ykzq3ar5nmum7y6gdfl6lxfn46h2` Bech32 decodes to the binary representation `40c2979694bbc961023d1d27be6fc4d21a9febe6`. A zero-length string ("") will be returned if the specified coin type is not set.', + }, + { + name: 'contenthash(bytes32 node) view returns (bytes memory)', + interface: '0xbc1c58d1', + usage: 'Read Content Hash', + seeMore: 'ENSIP-7 / EIP-1577', + }, + { + name: 'text(bytes32 node, string key) view returns (string memory)', + interface: '0x59d1d43c', + usage: 'Read Text Record', + seeMore: 'ENSIP-5 / EIP-634', + output: 'The value of the text record associated with key, or the empty string if no such record exists.', + }, + { + name: 'ABI(bytes32 node, uint256 contentTypes) view returns (uint256, bytes memory)', + interface: '0x2203ab56', + usage: 'Read Contract ABI', + seeMore: 'ENSIP-4 / EIP-205', + output: 'ABI returns a two-tuple of the content type ID and the ABI data. If no data of the appropriate content type ID was found, 0 is returned for the content type ID, and the ABI data will be the empty string.', + }, + { + name: 'pubkey(bytes32 node) view returns (bytes32 x, bytes32 y)', + interface: '0xc8690233', + usage: 'Read Public Key', + seeMore: 'ENSIP- / EIP-619', + output: 'The ECDSA SECP256k1 public key for node, as a 2-tuple (x, y). If no public key is set, (0, 0) is returned.', + }, + { + name: 'name(bytes32 node) view returns (string memory)', + interface: '0x691f3431', + usage: 'Read Name (for reverse records)', + seeMore: 'Implemented by Public Resolver', + }, + { + name: 'setAddr(bytes32 node, address addr)', + interface: '0x3b3b57de', + usage: 'Write Ethereum Adress', + seeMore: 'Implemented by Public Resolver', + event: 'event AddrChanged(bytes32 indexed node, address a);', + }, + { + name: 'setAddr(bytes32 node, uint coinType, bytes calldata a)', + interface: '0x8b95dd71', + usage: 'Set Multicoin Address', + seeMore: 'Implemented by Public Resolver', + event: 'event AddressChanged(bytes32 indexed node, uint coinType, bytes newAddress);', + }, + { + name: 'setContenthash(bytes32 node, bytes calldata hash)', + interface: '0x304e6ade', + usage: 'Write Content Hash', + seeMore: 'Implemented by Public Resolver', + event: 'event ContenthashChanged(bytes32 indexed node, bytes hash);', + }, + { + name: 'setText(bytes32 node, string calldata key, string calldata value)', + interface: '0xa4d3fbb2', + usage: 'Write Text Record', + seeMore: 'Implemented by Public Resolver', + event: 'event TextChanged(bytes32 indexed node, string indexed indexedKey, string key);', + }, + { + name: 'setABI(bytes32 node, uint256 contentType, bytes calldata data)', + interface: '0x623195b0', + usage: 'Write Contract ABI', + seeMore: 'Implemented by Public Resolver', + event: 'event ABIChanged(bytes32 indexed node, uint256 indexed contentType);', + }, + { + name: 'setPubkey(bytes32 node, bytes32 x, bytes32 y)', + interface: '0x29cd62ea', + usage: 'Write Public Key', + seeMore: 'Implemented by Public Resolver', + event: 'event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);', + }, + { + name: 'setName(bytes32 node, string calldata name)', + interface: '0x77372213', + usage: 'Write Name (for reverse records)', + seeMore: 'Implemented by Public Resolver', + event: 'event NameChanged(bytes32 indexed node, string name);', + }, + { + name: 'multicall(bytes[] calldata data) view returns (bytes[] memory results)', + interface: '0xac9650d8', + usage: 'Batch Read/Write', + seeMore: 'Implemented by Public Resolver', + }, +]; diff --git a/app/local/data/tlds.ts b/app/local/data/tlds.ts new file mode 100644 index 000000000..9f89e5b32 --- /dev/null +++ b/app/local/data/tlds.ts @@ -0,0 +1,2538 @@ +const SHOW_ALL = false; + +export const TLDs = !(process.env.NODE_ENV == 'production' || SHOW_ALL) + ? ['eth', 'com', 'box'] + : [ + 'eth', + 'at', + 'be', + 'biz', + 'cc', + // 'co.at', + // 'co.uk', + 'com', + // 'com.cn', + 'de', + 'info', + 'net', + // 'net.cn', + 'nu', + 'org', + // 'org.cn', + // 'org.uk', + 'it', + 'nl', + 'se', + 'cn', + 'ws', + 'vg', + 'tc', + 'ms', + 'gs', + 'bz', + 'ag', + 'tv', + 'tk', + 'fm', + // 'idv.tw', + // 'com.tw', + // 'org.tw', + 'jp', + 'la', + // 'com.pl', + // 'net.pl', + // 'org.pl', + // 'info.pl', + // 'biz.pl', + 'pl', + 'ac', + 'io', + 'sh', + 'in', + // 'co.in', + // 'firm.in', + // 'gen.in', + // 'ind.in', + // 'net.in', + // 'org.in', + // 'club.tw', + // 'ebiz.tw', + // 'game.tw', + 'ru', + 'eu', + 'es', + // 'com.es', + // 'nom.es', + // 'org.es', + 'mobi', + 'mn', + 'vc', + 'im', + // 'com.vc', + // 'net.vc', + // 'org.vc', + 'name', + // 'com.mx', + // 'me.uk', + 'asia', + 'cz', + 'fr', + 'me', + 'tel', + 'ch', + 'li', + 'am', + 'cx', + 'hn', + 'lc', + 'mu', + 'nf', + // 'co.nz', + // 'net.nz', + // 'org.nz', + 'ph', + 'pk', + 'tl', + 'tm', + 'lu', + 'pe', + 'dk', + 'tw', + 'pt', + // 'com.pt', + 'us', + // 'com.pk', + // 'com.br', + 'mx', + 'cm', + 'ae', + 'sk', + 'ir', + // 'ltd.uk', + 'gr', + 'ro', + 'lt', + // 'us.com', + 'hu', + 'si', + 'lv', + 'ie', + 'sr', + // 'com.gr', + 'aero', + // 'co.il', + // 'org.il', + // 'no.com', + 'ba', + 'bg', + // 'co.nl', + // 'co.za', + // 'com.ar', + // 'com.bo', + // 'com.pa', + // 'com.tr', + // 'com.uy', + // 'com.ve', + // 'gen.tr', + 'ly', + // 'co.id', + // 'co.th', + // 'com.sa', + 'ee', + 'fi', + 'hr', + 'no', + 'ua', + 'ca', + // 'co.jp', + // 'com.lb', + // 'com.my', + // 'tm.fr', + 'travel', + 'co', + 'kr', + 'sg', + // 'com.sg', + // 'co.kr', + 'af', + // 'com.af', + // 'net.af', + // 'org.af', + 'so', + // 'com.so', + // 'net.so', + // 'org.so', + // 'com.py', + 'bo', + 'gy', + 'ec', + // 'com.co', + // 'nom.co', + // 'net.co', + 'cat', + 'xxx', + // 'com.ng', + // 'co.ag', + // 'nom.ag', + 'ai', + // 'com.ai', + // 'net.ai', + // 'off.ai', + // 'org.ai', + 'al', + // 'com.al', + // 'net.al', + // 'org.al', + 'aq', + 'as', + 'bb', + // 'com.bb', + // 'net.bb', + // 'org.bb', + 'bi', + 'bm', + // 'com.bm', + // 'net.bm', + // 'org.bm', + 'bs', + 'bt', + // 'com.bt', + // 'net.bt', + 'by', + 'cd', + 'cg', + // 'co.cr', + 'cr', + // 'com.cu', + 'cu', + // 'com.cy', + 'dj', + // 'com.dm', + 'dm', + // 'net.dm', + // 'org.dm', + // 'com.do', + 'do', + // 'net.do', + // 'org.do', + // 'com.ec', + // 'info.ec', + // 'biz.fj', + // 'com.fj', + // 'info.fj', + // 'name.fj', + // 'net.fj', + // 'org.fj', + // 'pro.fj', + // 'nom.fr', + // 'prd.fr', + // 'presse.fr', + // 'co.gg', + 'gg', + // 'net.gg', + // 'org.gg', + // 'com.gi', + 'gi', + // 'ltd.gi', + // 'org.gi', + 'gm', + // 'com.gp', + 'gp', + // 'net.gp', + // 'com.gt', + 'hm', + // 'com.hr', + // 'or.id', + // 'web.id', + // 'co.ir', + 'is', + // 'co.je', + 'je', + // 'net.je', + // 'org.je', + 'jobs', + // 'com.kg', + 'kg', + // 'net.kg', + // 'org.kg', + 'kz', + // 'net.lb', + // 'org.lb', + // 'co.lc', + // 'co.ls', + // 'org.ls', + // 'com.lv', + // 'net.lv', + 'mc', + 'mp', + // 'com.mt', + // 'net.mt', + // 'org.mt', + 'mw', + 'my', + // 'net.my', + // 'org.my', + // 'co.na', + // 'com.na', + 'na', + // 'org.na', + // 'net.ng', + // 'org.ng', + // 'com.ni', + // 'net.ni', + // 'nom.ni', + // 'org.ni', + // 'co.om', + // 'com.om', + // 'net.om', + // 'org.om', + // 'at.pr', + // 'biz.pr', + // 'ch.pr', + // 'com.pr', + // 'de.pr', + // 'eu.pr', + // 'fr.pr', + // 'info.pr', + // 'isla.pr', + // 'it.pr', + // 'name.pr', + // 'net.pr', + // 'nl.pr', + // 'org.pr', + 'pr', + // 'pro.pr', + // 'uk.pr', + // 'aca.pro', + // 'bar.pro', + // 'cpa.pro', + // 'eng.pro', + // 'jur.pro', + // 'law.pro', + // 'med.pro', + 'pro', + // 'com.ps', + // 'net.ps', + // 'org.ps', + 'ps', + // 'co.rs', + 'rs', + 'rw', + // 'net.sa', + // 'org.sa', + // 'pub.sa', + // 'com.sb', + // 'net.sb', + // 'org.sb', + 'sl', + 'st', + // 'com.sv', + // 'in.th', + 'to', + // 'bbs.tr', + // 'biz.tr', + // 'info.tr', + // 'name.tr', + // 'tel.tr', + // 'web.tr', + // 'co.tt', + // 'com.tt', + // 'net.tt', + // 'org.tt', + 'tt', + // 'com.ua', + // 'co.ug', + 'ug', + // 'co.ve', + // 'co.vi', + 'vu', + // 'com.ph', + // 'net.ph', + // 'org.ph', + // 'ac.vn', + // 'biz.vn', + // 'com.vn', + // 'edu.vn', + // 'gov.vn', + // 'health.vn', + // 'info.vn', + // 'int.vn', + // 'name.vn', + // 'net.vn', + // 'org.vn', + // 'pro.vn', + 'vn', + // 'com.au', + // 'net.au', + // 'org.au', + // 'or.at', + 're', + 'yt', + 'pm', + 'wf', + 'tf', + // 'ar.com', + // 'de.com', + // 'eu.com', + // 'kr.com', + // 'qc.com', + // 'ae.org', + // 'br.com', + // 'cn.com', + // 'hu.com', + // 'jpn.com', + // 'ru.com', + // 'sa.com', + // 'se.com', + // 'uk.com', + // 'uy.com', + // 'gb.net', + // 'se.net', + // 'uk.net', + // 'gb.com', + // 'za.com', + 'gd', + 'uy', + 'cl', + 'sx', + // 'edu.es', + 'amsterdam', + 'app', + 'barcelona', + 'blog', + 'forum', + 'london', + 'nyc', + 'paris', + 'shop', + 'site', + 'web', + 'click', + 'cloud', + 'data', + 'digital', + 'domains', + 'dot', + 'download', + 'foo', + 'host', + 'hosting', + 'idn', + 'link', + 'mail', + 'network', + 'onl', + 'online', + 'search', + 'software', + 'storage', + 'stream', + 'webcam', + 'webs', + 'website', + 'wiki', + 'yun', + // 'xn--80asehdb', + // 'xn--80aswg', + // 'xn--ngbc5azd', + // 'xn--4gbrim', + // 'xn--mgbt3dhd', + // 'xn--c2br7g', + // 'xn--q9jyb4c', + // 'xn--rhqv96g', + // 'xn--fiq228c5hs', + // 'xn--vuq861b', + // 'xn--3ds443g', + // 'xn--pssy2u', + // 'xn--9krt00a', + // 'xn--ses554g', + // 'xn--5tzm5g', + // 'xn--io0a7i', + 'agency', + 'auction', + 'associates', + 'bargains', + 'bid', + 'blackfriday', + 'box', + 'business', + 'buy', + 'cheap', + 'claims', + 'cleaning', + 'company', + 'comsec', + 'contact', + 'coupon', + 'coupons', + 'deal', + 'deals', + 'delivery', + 'discount', + 'ecom', + 'enterprises', + 'equipment', + 'events', + 'florist', + 'flowers', + 'forsale', + 'foundation', + 'furniture', + 'gdn', + 'gift', + 'gifts', + 'glass', + 'holdings', + 'hot', + 'industries', + 'institute', + 'kaufen', + 'lighting', + 'limited', + 'market', + 'ooo', + 'partners', + 'parts', + 'plumbing', + 'qpon', + 'repair', + 'review', + 'reviews', + 'services', + 'sale', + 'save', + 'shopping', + 'store', + 'supplies', + 'supply', + 'tienda', + 'tires', + 'trade', + 'ventures', + 'work', + // 'xn--j1aef', + // 'xn--9dbq2a', + // 'xn--mgbab2bd', + // 'xn--fhbei', + // 'xn--11b4c3d', + // 'xn--42c2d9a', + // 'xn--tckwe', + // 'xn--vhquv', + // 'xn--55qx5d', + // 'xn--czru2d', + // 'xn--czrs0t', + // 'xn--czr694b', + // 'xn--3pxu8k', + // 'xn--hxt814e', + // 'xn--3bst00m', + // 'xn--c1yn36f', + // 'xn--g2xx48c', + // 'xn--t60b56a', + // 'xn--mk1bu44c', + 'abudhabi', + 'africa', + 'alsace', + 'aquitaine', + 'arab', + 'bayern', + 'berlin', + 'boston', + 'brussels', + 'budapest', + 'bzh', + 'capetown', + 'cologne', + 'corsica', + 'country', + 'cymru', + 'dubai', + 'durban', + 'eus', + 'frl', + 'gal', + 'gcc', + 'gent', + 'hamburg', + 'ist', + 'istanbul', + 'joburg', + 'koeln', + 'kyoto', + 'lat', + 'madrid', + 'melbourne', + 'miami', + 'moscow', + 'nagoya', + 'nrw', + 'okinawa', + 'osaka', + 'persiangulf', + 'quebec', + 'roma', + 'ruhr', + 'ryukyu', + 'saarland', + 'scot', + 'swiss', + 'sydney', + 'taipei', + 'tirol', + 'tokyo', + 'vegas', + 'vlaanderen', + 'wales', + 'wien', + 'yokohama', + // 'xn--80adxhks', + // 'xn--mgbca7dzdo', + // 'xn--ngbrx', + // 'xn--1qqw23a', + // 'xn--xhq521b', + // 'xn--6rtwn', + // 'xn--mxtq1m', + // 'xn--fes124c', + 'actor', + 'adult', + 'art', + 'audio', + 'band', + 'bet', + 'bingo', + 'broadway', + 'cam', + 'cards', + 'casino', + 'dance', + 'film', + 'gallery', + 'game', + 'games', + 'guitars', + 'hiphop', + 'juegos', + 'lotto', + 'mov', + 'movie', + 'music', + 'poker', + 'porn', + 'productions', + 'radio', + 'sex', + 'show', + 'theater', + 'tickets', + 'toys', + 'tube', + 'video', + // 'xn--45q11c', + // 'xn--fjq720a', + // 'xn--unup4y', + 'boo', + 'buzz', + 'care', + 'chat', + 'club', + 'community', + 'dad', + 'date', + 'dating', + 'email', + 'family', + 'fan', + 'fans', + 'fun', + 'group', + 'lol', + 'love', + 'meet', + 'meme', + 'memorial', + 'mobile', + 'mom', + 'party', + 'phone', + 'ping', + 'ren', + 'report', + 'rip', + 'rsvp', + 'sexy', + 'singles', + 'social', + 'soy', + 'wed', + 'wedding', + 'weibo', + 'xihuan', + // 'xn--6qq986b3xl', + // 'xn--kput3i', + // 'xn--efvy88h', + // 'xn--6frz82g', + 'charity', + 'gives', + 'ngo', + 'ong', + // 'xn--c1avg', + // 'xn--i1b6b1a6a2e', + // 'xn--55qw42g', + // 'xn--30rr7y', + // 'xn--nqv7f', + // 'xn--tqq33ed31aqia', + 'airforce', + 'army', + 'baby', + 'bible', + 'black', + 'blue', + 'christmas', + 'church', + 'democrat', + 'desi', + 'dog', + 'faith', + 'gay', + 'gop', + 'horse', + 'indians', + 'ink', + 'irish', + 'islam', + 'ismaili', + 'kid', + 'kids', + 'kim', + 'kiwi', + 'latino', + 'lgbt', + 'men', + 'moe', + 'navy', + 'nowruz', + 'pars', + 'pet', + 'pets', + 'pink', + 'red', + 'republican', + 'rich', + 'shia', + 'tatar', + 'thai', + // 'xn--d1acj3b', + // 'xn--p1acf', + 'clinic', + 'dds', + 'dental', + 'dentist', + 'diet', + 'doctor', + 'fit', + 'fitness', + 'health', + 'healthcare', + 'hiv', + 'hospital', + 'med', + 'medical', + 'pharmacy', + 'physio', + 'rehab', + 'spa', + 'surgery', + 'yoga', + // 'xn--nyqy26a', + 'bar', + 'beer', + 'bio', + 'cafe', + 'catering', + 'coffee', + 'cooking', + 'eat', + 'farm', + 'fish', + 'food', + 'halal', + 'kitchen', + 'kosher', + 'menu', + 'organic', + 'pizza', + 'pub', + 'recipes', + 'rest', + 'restaurant', + 'vodka', + 'wine', + // 'xn--imr513n', + 'abogado', + 'accountant', + 'accountants', + 'archi', + 'architect', + 'attorney', + 'career', + 'careers', + 'consulting', + 'cpa', + 'design', + 'docs', + 'engineer', + 'engineering', + 'esq', + 'expert', + 'graphics', + 'law', + 'lawyer', + 'legal', + 'management', + 'marketing', + 'studio', + 'training', + 'vet', + // 'xn--otu796d', + 'beauty', + 'boutique', + 'clothing', + 'diamonds', + 'fashion', + 'hair', + 'jewelry', + 'luxe', + 'luxury', + 'moda', + 'salon', + 'shoes', + 'tattoo', + // 'xn--9et52u', + 'academy', + 'camera', + 'college', + 'computer', + 'degree', + 'education', + 'mba', + 'phd', + 'prof', + 'scholarships', + 'school', + 'schule', + 'shiksha', + 'university', + 'baseball', + 'basketball', + 'bike', + 'boats', + 'camp', + 'coach', + 'cricket', + 'fishing', + 'football', + 'futbol', + 'golf', + 'hockey', + 'play', + 'racing', + 'rodeo', + 'rugby', + 'run', + 'ski', + 'soccer', + 'sport', + 'sports', + 'surf', + 'tennis', + 'bom', + 'center', + 'city', + 'codes', + 'cool', + 'day', + 'direct', + 'directory', + 'diy', + 'earth', + 'eco', + 'energy', + 'exposed', + 'express', + 'fail', + 'feedback', + 'final', + 'free', + 'fyi', + 'garden', + 'global', + 'gratis', + 'green', + 'gripe', + 'guide', + 'guru', + 'help', + 'here', + 'how', + 'icu', + 'ing', + 'international', + 'jetzt', + 'life', + 'live', + 'living', + 'new', + 'ninja', + 'now', + 'one', + 'pid', + 'place', + 'plus', + 'rocks', + 'science', + 'solar', + 'solutions', + 'space', + 'spot', + 'style', + 'sucks', + 'support', + 'systems', + 'tax', + 'team', + 'tech', + 'technology', + 'tips', + 'today', + 'tools', + 'top', + 'town', + 'uno', + 'vip', + 'vision', + 'vote', + 'voting', + 'voto', + 'wang', + 'watch', + 'win', + 'works', + 'world', + 'wow', + 'wtf', + 'xyz', + 'zip', + 'zone', + 'bank', + 'broker', + 'capital', + 'cash', + 'credit', + 'creditcard', + 'estate', + 'exchange', + 'finance', + 'financial', + 'fund', + 'gold', + 'insurance', + 'insure', + 'investments', + 'lease', + 'lifeinsurance', + 'loan', + 'loans', + 'money', + 'mortgage', + 'pay', + 'reit', + 'trading', + 'versicherung', + 'apartments', + 'casa', + 'condos', + 'haus', + 'home', + 'house', + 'immo', + 'immobilien', + 'land', + 'maison', + 'mls', + 'properties', + 'property', + 'realestate', + 'realty', + 'rent', + 'rentals', + 'villas', + 'corp', + 'gmbh', + 'inc', + 'llc', + 'llp', + 'ltd', + 'ltda', + 'sarl', + 'srl', + 'cab', + 'cruises', + 'flights', + 'fly', + 'holiday', + 'hotel', + 'map', + 'reise', + 'reisen', + 'taxi', + 'tour', + 'tours', + 'vacations', + 'viajes', + 'voyage', + 'ads', + 'book', + 'media', + 'news', + 'photo', + 'photography', + 'photos', + 'pics', + 'pictures', + 'press', + 'auto', + 'car', + 'cars', + 'limo', + 'moto', + 'vin', + 'anquan', + 'safety', + 'secure', + 'security', + 'build', + 'builders', + 'construction', + 'contractors', + // 'hu.net', + // 'jp.net', + // 'gr.com', + // 'us.org', + 'pw', + // 'in.net', + // 'africa.com', + // 'kiwi.nz', + 'ceo', + // 'mex.com', + 'best', + 'uk', + // 'com.pe', + // 'net.pe', + // 'org.pe', + // 'co.com', + // 'id.au', + 'ng', + // 'web.za', + // 'org.za', + // 'net.za', + 'nz', + 'ml', + // 'co.gy', + // 'com.gy', + // 'net.gy', + // 'org.pt', + 'whoswho', + 'rio', + // 'org.mx', + // 'net.mx', + // 'edu.mx', + // 'gob.mx', + 'qa', + 'coop', + 'sc', + // 'com.sc', + // 'net.sc', + // 'org.sc', + // 'com.de', + // 'com.se', + // 'za.bz', + 'markets', + // 'com.gh', + 'courses', + 'cw', + 'dev', + 'md', + 'study', + // 'xn--fiqs8s', + 'su', + // 'xn--p1ai', + 'gt', + // 'net.gt', + // 'org.gt', + // 'ind.gt', + // 'org.gh', + 'cfd', + 'spreadbetting', + 'forex', + 'mk', + // 'com.mk', + // 'org.mk', + // 'net.mk', + // 'inf.mk', + // 'edu.mk', + // 'xn--d1alf', + 'sa', + 'gl', + // 'co.gl', + // 'com.gl', + // 'net.gl', + // 'org.gl', + // 'co.ke', + // 'info.ke', + // 'ne.ke', + 'lk', + // 'co.no', + 'theatre', + 'protection', + // 'com.ro', + 'ma', + 'krd', + 'ky', + // 'com.ky', + // 'net.ky', + // 'org.ky', + // 'arts.ro', + // 'firm.ro', + // 'info.ro', + // 'nom.ro', + // 'nt.ro', + // 'org.ro', + // 'rec.ro', + // 'store.ro', + // 'tm.ro', + // 'www.ro', + 'yachts', + 'homes', + 'motorcycles', + 'tn', + // 'com.tn', + 'ht', + 'abarth', + 'abbvie', + 'abc', + 'able', + 'acer', + 'aetna', + 'afamilycompany', + 'africamagic', + 'agakhan', + 'aigo', + 'airbus', + 'airtel', + 'akdn', + 'alcon', + 'alfaromeo', + 'alibaba', + 'alipay', + 'allstate', + 'ally', + 'alstom', + 'americanexpress', + 'americanfamily', + 'amex', + 'amfam', + 'analytics', + 'android', + 'anz', + 'aol', + 'aramco', + 'asda', + 'athleta', + 'audible', + 'auspost', + 'author', + 'autos', + 'avianca', + 'aws', + 'baidu', + 'banamex', + 'bananarepublic', + 'barefoot', + 'bauhaus', + 'bbt', + 'bcg', + 'bcn', + 'bestbuy', + 'bharti', + 'blanco', + 'blockbuster', + 'bnl', + 'bofa', + 'bond', + 'booking', + 'bosch', + 'bostik', + 'bot', + 'cal', + 'call', + 'calvinklein', + 'cancerresearch', + 'capitalone', + 'caravan', + 'case', + 'caseih', + 'catholic', + 'cbre', + 'cbs', + 'changiairport', + 'channel', + 'chase', + 'chintai', + 'chrome', + 'chrysler', + 'circle', + 'cisco', + 'citadel', + 'citi', + 'citic', + 'cityeats', + 'clinique', + 'comcast', + 'compare', + 'cookingchannel', + 'creditunion', + 'cruise', + 'cyou', + 'datsun', + 'dclk', + 'dealer', + 'delta', + 'dhl', + 'discover', + 'dish', + 'dodge', + 'doha', + 'dotafrica', + 'drive', + 'dtv', + 'duck', + 'dunlop', + 'duns', + 'dupont', + 'dvr', + 'dwg', + 'emerson', + 'epost', + 'ericsson', + 'erni', + 'esurance', + 'etisalat', + 'eurovision', + 'everbank', + 'extraspace', + 'fairwinds', + 'farmers', + 'fast', + 'fedex', + 'ferrari', + 'ferrero', + 'fiat', + 'fidelity', + 'fido', + 'fire', + 'firmdale', + 'flickr', + 'flir', + 'foodnetwork', + 'ford', + 'frontdoor', + 'frontier', + 'ftr', + 'fujitsu', + 'fujixerox', + 'gallo', + 'gallup', + 'gap', + 'gbiz', + 'george', + 'ggee', + 'giving', + 'glade', + 'gle', + 'globo', + 'gmail', + 'gmo', + 'gmx', + 'godaddy', + 'goldpoint', + 'goo', + 'goodhands', + 'goodyear', + 'goog', + 'got', + 'grainger', + 'grocery', + 'guardian', + 'gucci', + 'guge', + 'hangout', + 'hbo', + 'hdfc', + 'hdfcbank', + 'helsinki', + 'hgtv', + 'hisamitsu', + 'hitachi', + 'hkt', + 'homedepot', + 'homegoods', + 'homesense', + 'honeywell', + 'hoteis', + 'hoteles', + 'hotels', + 'hsbc', + 'htc', + 'hughes', + 'hyatt', + 'icbc', + 'ieee', + 'ifm', + 'iinet', + 'ikano', + 'imamat', + 'imdb', + 'infiniti', + 'intel', + 'intuit', + 'iselect', + 'itv', + 'iveco', + 'jcb', + 'jcp', + 'jeep', + 'jio', + 'jmp', + 'jnj', + 'jot', + 'joy', + 'jpmorgan', + 'jprs', + 'juniper', + 'kerryhotels', + 'kerrylogisitics', + 'kerryproperties', + 'kfh', + 'kinder', + 'kindle', + 'kpmg', + 'kred', + 'kuokgroup', + 'kyknet', + 'lacaixa', + 'ladbrokes', + 'lamer', + 'lancia', + 'lancome', + 'lanxess', + 'lasalle', + 'lds', + 'lefrak', + 'lego', + 'lifestyle', + 'like', + 'lilly', + 'lincoln', + 'lipsy', + 'locker', + 'locus', + 'loft', + 'lotte', + 'lpl', + 'lplfinancial', + 'lundbeck', + 'macys', + 'makeup', + 'mango', + 'marshalls', + 'maserati', + 'mattel', + 'mcd', + 'mcdonalds', + 'mckinsey', + 'meo', + 'merck', + 'merckmsd', + 'metlife', + 'mint', + 'mit', + 'mitsubishi', + 'mlb', + 'mma', + 'mnet', + 'mobily', + 'moi', + 'monash', + 'monster', + 'mopar', + 'mormon', + 'movistar', + 'msd', + 'mtn', + 'mtpc', + 'mutual', + 'mutuelle', + 'mzansimagic', + 'nab', + 'nationwide', + 'natura', + 'nba', + 'netflix', + 'newholland', + 'next', + 'nextdirect', + 'nexus', + 'nfl', + 'nhk', + 'nike', + 'nissan', + 'northwesternmutual', + 'nowtv', + 'observer', + 'off', + 'office', + 'olayan', + 'olayangroup', + 'oldnavy', + 'ollo', + 'onyourside', + 'open', + 'orientexpress', + 'origins', + 'ott', + 'ovh', + 'page', + 'pamperedchef', + 'panasonic', + 'passagens', + 'payu', + 'pccw', + 'pfizer', + 'pin', + 'pioneer', + 'pitney', + 'pnc', + 'pohl', + 'politie', + 'pramerica', + 'praxi', + 'prime', + 'prod', + 'progressive', + 'promo', + 'pru', + 'prudential', + 'pwc', + 'quest', + 'qvc', + 'raid', + 'ram', + 'read', + 'realtor', + 'reliance', + 'rexroth', + 'richardli', + 'rightathome', + 'ril', + 'rmit', + 'rogers', + 'room', + 'safe', + 'safeway', + 'sakura', + 'samsclub', + 'sap', + 'sapo', + 'sas', + 'sbi', + 'scjohnson', + 'seek', + 'select', + 'ses', + 'sfr', + 'shangrila', + 'shaw', + 'shouji', + 'showtime', + 'shriram', + 'silk', + 'sina', + 'skin', + 'sling', + 'smart', + 'smile', + 'sohu', + 'song', + 'srt', + 'staples', + 'star', + 'statebank', + 'stockholm', + 'supersport', + 'suzuki', + 'swiftcover', + 'talk', + 'taobao', + 'target', + 'tata', + 'tci', + 'tdk', + 'telecity', + 'telefonica', + 'teva', + 'thd', + 'theguardian', + 'tiaa', + 'tiffany', + 'tjmaxx', + 'tjx', + 'tkmaxx', + 'tmall', + 'total', + 'transunion', + 'travelchannel', + 'travelers', + 'trust', + 'tui', + 'tunes', + 'tushu', + 'tvs', + 'ubank', + 'uconnect', + 'ultrabook', + 'unicom', + 'ups', + 'vana', + 'vanguard', + 'verisign', + // 'xn--vermgensberater-ctb', + // 'xn--vermgensberatung-pwb', + 'vig', + 'viking', + 'virgin', + 'visa', + 'vivo', + 'volvo', + 'vuelos', + 'walmart', + 'wanggou', + 'warman', + 'watches', + 'weather', + 'weatherchannel', + 'winners', + 'wolterskluwer', + 'woodside', + 'wtc', + 'xerox', + 'xfinity', + 'yahoo', + 'yamaxun', + 'yodobashi', + 'you', + 'youtube', + 'zappos', + 'zara', + 'zero', + 'zippo', + 'zuerich', + // 'xn--80aqecdr1a', + // 'xn--mgbaakc7dvf', + // 'xn--mgba3a3ejt', + // 'xn--mgba7c0bbn0a', + // 'xn--ngbe9e0a', + // 'xn--mgbi4ecexp', + // 'xn--mgbb9fbpob', + // 'xn--qcka1pmc', + // 'xn--gckr3f0f', + // 'xn--cck2b3b', + // 'xn--1ck2e1b', + // 'xn--bck1b9a5dre4c', + // 'xn--eckvdtc9d', + // 'xn--4gq48lf9j', + // 'xn--fiQ64B', + // 'xn--w4rs40l', + // 'xn--w4r85el8fhu5dnra', + // 'xn--3oq18vl8pn36a', + // 'xn--tiq49xqyj', + // 'xn--fct429k', + // 'xn--estv75g', + // 'xn--kpu716f', + // 'xn--zfr164b', + // 'xn--rovu88b', + // 'xn--pbt977c', + // 'xn--8y0a063a', + // 'xn--jlq61u9w7b', + // 'xn--flw351e', + // 'xn--gk3at1e', + // 'xn--fzys8d69uvgm', + // 'xn--jvr189m', + // 'xn--5su34j936bgsg', + // 'xn--e1a4c', + // 'com.ag', + // 'net.ag', + // 'org.ag', + // 'com.lc', + // 'net.lc', + // 'org.lc', + // 'p.lc', + // 'l.lc', + // 'co.bz', + // 'com.bz', + // 'net.bz', + // 'aaa.pro', + // 'acct.pro', + // 'avocat.pro', + // 'recht.pro', + // 'org.lv', + // 'edu.lv', + // 'asn.lv', + // 'conf.lv', + // 'id.lv', + // 'aid.pl', + // 'agro.pl', + // 'atm.pl', + // 'auto.pl', + // 'edu.pl', + // 'gmina.pl', + // 'gsm.pl', + // 'mail.pl', + // 'miasta.pl', + // 'media.pl', + // 'mil.pl', + // 'nieruchomosci.pl', + // 'nom.pl', + // 'pc.pl', + // 'powiat.pl', + // 'priv.pl', + // 'realestate.pl', + // 'rel.pl', + // 'sex.pl', + // 'shop.pl', + // 'sklep.pl', + // 'sos.pl', + // 'szkola.pl', + // 'targi.pl', + // 'tm.pl', + // 'tourism.pl', + // 'travel.pl', + // 'turystyka.pl', + // 'augustow.pl', + // 'babia-gora.pl', + // 'bedzin.pl', + // 'beskidy.pl', + // 'bialowieza.pl', + // 'bialystok.pl', + // 'bielawa.pl', + // 'bieszczady.pl', + // 'boleslawiec.pl', + // 'bydgoszcz.pl', + // 'bytom.pl', + // 'cieszyn.pl', + // 'czeladz.pl', + // 'czest.pl', + // 'dlugoleka.pl', + // 'elblag.pl', + // 'elk.pl', + // 'glogow.pl', + // 'gniezno.pl', + // 'gorlice.pl', + // 'grajewo.pl', + // 'ilawa.pl', + // 'jaworzno.pl', + // 'jelenia-gora.pl', + // 'jgora.pl', + // 'kalisz.pl', + // 'kazimierz-dolny.pl', + // 'karpacz.pl', + // 'kartuzy.pl', + // 'kaszuby.pl', + // 'katowice.pl', + // 'kepno.pl', + // 'ketrzyn.pl', + // 'klodzko.pl', + // 'kobierzyce.pl', + // 'kolobrzeg.pl', + // 'konin.pl', + // 'konskowola.pl', + // 'kutno.pl', + // 'lapy.pl', + // 'lebork.pl', + // 'legnica.pl', + // 'lezajsk.pl', + // 'limanowa.pl', + // 'lomza.pl', + // 'lowicz.pl', + // 'lubin.pl', + // 'lukow.pl', + // 'malbork.pl', + // 'malopolska.pl', + // 'mazowsze.pl', + // 'mazury.pl', + // 'mielec.pl', + // 'mielno.pl', + // 'mragowo.pl', + // 'naklo.pl', + // 'nowaruda.pl', + // 'nysa.pl', + // 'olawa.pl', + // 'olecko.pl', + // 'olkusz.pl', + // 'olsztyn.pl', + // 'opoczno.pl', + // 'opole.pl', + // 'ostroda.pl', + // 'ostroleka.pl', + // 'ostrowiec.pl', + // 'ostrowwlkp.pl', + // 'pila.pl', + // 'pisz.pl', + // 'podhale.pl', + // 'podlasie.pl', + // 'polkowice.pl', + // 'pomorze.pl', + // 'pomorskie.pl', + // 'prochowice.pl', + // 'pruszkow.pl', + // 'przeworsk.pl', + // 'pulawy.pl', + // 'radom.pl', + // 'rawa-maz.pl', + // 'rybnik.pl', + // 'rzeszow.pl', + // 'sanok.pl', + // 'sejny.pl', + // 'slask.pl', + // 'slupsk.pl', + // 'sosnowiec.pl', + // 'stalowa-wola.pl', + // 'skoczow.pl', + // 'starachowice.pl', + // 'stargard.pl', + // 'suwalki.pl', + // 'swidnica.pl', + // 'swiebodzin.pl', + // 'swinoujscie.pl', + // 'szczecin.pl', + // 'szczytno.pl', + // 'tarnobrzeg.pl', + // 'tgory.pl', + // 'turek.pl', + // 'tychy.pl', + // 'ustka.pl', + // 'walbrzych.pl', + // 'warmia.pl', + // 'warszawa.pl', + // 'waw.pl', + // 'wegrow.pl', + // 'wielun.pl', + // 'wlocl.pl', + // 'wloclawek.pl', + // 'wodzislaw.pl', + // 'wolomin.pl', + // 'wroclaw.pl', + // 'zachpomor.pl', + // 'zagan.pl', + // 'zarow.pl', + // 'zgora.pl', + // 'zgorzelec.pl', + // 'radio.fm', + // 'radio.am', + // 'edu.gh', + // 'gov.gh', + // 'co.ao', + // 'it.ao', + 'bw', + // 'co.bw', + 'cv', + // 'com.et', + 'gq', + 'gw', + // 'ac.ke', + // 'go.ke', + // 'sc.ke', + // 'co.mw', + // 'com.mw', + // 'co.mz', + // 'co.rw', + // 'org.rw', + // 'net.sg', + // 'com.tl', + // 'ac.tz', + // 'co.tz', + // 'go.tz', + // 'hotel.tz', + // 'info.tz', + // 'me.tz', + // 'mil.tz', + // 'mobi.tz', + // 'ne.tz', + // 'or.tz', + // 'sc.tz', + // 'tv.tz', + 'id', + 'cf', + 'sv', + 'ki', + // 'com.cm', + // 'co.cm', + // 'net.cm', + // 'com.lk', + // 'edu.lk', + // 'org.lk', + // 'ah.cn', + // 'bj.cn', + // 'cq.cn', + // 'fj.cn', + // 'gd.cn', + // 'gs.cn', + // 'gx.cn', + // 'gz.cn', + // 'ha.cn', + // 'hb.cn', + // 'he.cn', + // 'hi.cn', + // 'hk.cn', + // 'hl.cn', + // 'hn.cn', + // 'jl.cn', + // 'js.cn', + // 'jx.cn', + // 'ln.cn', + // 'mo.cn', + // 'nm.cn', + // 'nx.cn', + // 'qh.cn', + // 'sc.cn', + // 'sd.cn', + // 'sh.cn', + // 'sn.cn', + // 'sx.cn', + // 'tj.cn', + // 'tw.cn', + // 'xj.cn', + // 'xz.cn', + // 'yn.cn', + // 'zj.cn', + // 'co.hu', + // 'adult.ht', + // 'com.ht', + // 'info.ht', + // 'net.ht', + // 'org.ht', + 'ni', + 'ge', + // 'com.ge', + // 'net.ge', + // 'org.ge', + // 'abr.it', + // 'abruzzo.it', + // 'ag.it', + // 'agrigento.it', + // 'al.it', + // 'alessandria.it', + // 'alto-adige.it', + // 'altoadige.it', + // 'an.it', + // 'ancona.it', + // 'andria-barletta-trani.it', + // 'andria-trani-barletta.it', + // 'andriabarlettatrani.it', + // 'andriatranibarletta.it', + // 'ao.it', + // 'aosta-valley.it', + // 'aosta.it', + // 'aostavalley.it', + // 'aoste.it', + // 'ap.it', + // 'aq.it', + // 'aquila.it', + // 'ar.it', + // 'arezzo.it', + // 'ascoli-piceno.it', + // 'ascolipiceno.it', + // 'asti.it', + // 'at.it', + // 'av.it', + // 'avellino.it', + // 'ba.it', + // 'balsan-sudtirol.it', + // 'balsan-suedtirol.it', + // // 'xn--balsan-sdtirol-nsb.it', + // 'balsan.it', + // 'bari.it', + // 'barletta-trani-andria.it', + // 'barlettatraniandria.it', + // 'bas.it', + // 'basilicata.it', + // 'belluno.it', + // 'benevento.it', + // 'bergamo.it', + // 'bg.it', + // 'bi.it', + // 'biella.it', + // 'bl.it', + // 'bn.it', + // 'bo.it', + // 'bologna.it', + // 'bolzano-altoadige.it', + // 'bolzano.it', + // 'bozen-sudtirol.it', + // 'bozen-suedtirol.it', + // // 'xn--bozen-sdtirol-2ob.it', + // 'bozen.it', + // 'br.it', + // 'brescia.it', + // 'brindisi.it', + // 'bs.it', + // 'bt.it', + // 'bulsan-sudtirol.it', + // 'bulsan-suedtirol.it', + // // 'xn--bulsan-sdtirol-nsb.it', + // 'bulsan.it', + // 'bz.it', + // 'ca.it', + // 'cagliari.it', + // 'cal.it', + // 'calabria.it', + // 'caltanissetta.it', + // 'cam.it', + // 'campania.it', + // 'campidano-medio.it', + // 'campidanomedio.it', + // 'campobasso.it', + // 'carbonia-iglesias.it', + // 'carboniaiglesias.it', + // 'carrara-massa.it', + // 'carraramassa.it', + // 'caserta.it', + // 'catania.it', + // 'catanzaro.it', + // 'cb.it', + // 'ce.it', + // 'cesena-forli.it', + // // 'xn--cesena-forl-mcb.it', + // 'cesenaforli.it', + // // 'xn--cesenaforl-i8a.it', + // 'ch.it', + // 'chieti.it', + // 'ci.it', + // 'cl.it', + // 'cn.it', + // 'co.it', + // 'como.it', + // 'cosenza.it', + // 'cr.it', + // 'cremona.it', + // 'crotone.it', + // 'cs.it', + // 'ct.it', + // 'cuneo.it', + // 'cz.it', + // 'dell-ogliastra.it', + // 'dellogliastra.it', + // 'emilia-romagna.it', + // 'emiliaromagna.it', + // 'emr.it', + // 'en.it', + // 'enna.it', + // 'fc.it', + // 'fe.it', + // 'fermo.it', + // 'ferrara.it', + // 'fg.it', + // 'fi.it', + // 'firenze.it', + // 'florence.it', + // 'fm.it', + // 'foggia.it', + // 'forli-cesena.it', + // 'forlicesena.it', + // // 'xn--forl-cesena-fcb.it', + // // 'xn--forlcesena-c8a.it', + // 'fr.it', + // 'friuli-v-giulia.it', + // 'friuli-ve-giulia.it', + // 'friuli-vegiulia.it', + // 'friuli-venezia-giulia.it', + // 'friuli-veneziagiulia.it', + // 'friuli-vgiulia.it', + // 'friuliv-giulia.it', + // 'friulive-giulia.it', + // 'friulivegiulia.it', + // 'friulivenezia-giulia.it', + // 'friuliveneziagiulia.it', + // 'friulivgiulia.it', + // 'frosinone.it', + // 'fvg.it', + // 'ge.it', + // 'genoa.it', + // 'genova.it', + // 'go.it', + // 'gorizia.it', + // 'gr.it', + // 'grosseto.it', + // 'iglesias-carbonia.it', + // 'iglesiascarbonia.it', + // 'im.it', + // 'imperia.it', + // 'is.it', + // 'isernia.it', + // 'kr.it', + // 'la-spezia.it', + // 'laquila.it', + // 'laspezia.it', + // 'latina.it', + // 'laz.it', + // 'lazio.it', + // 'lc.it', + // 'le.it', + // 'lecce.it', + // 'lecco.it', + // 'li.it', + // 'lig.it', + // 'liguria.it', + // 'livorno.it', + // 'lo.it', + // 'lodi.it', + // 'lom.it', + // 'lombardia.it', + // 'lombardy.it', + // 'lt.it', + // 'lu.it', + // 'lucania.it', + // 'lucca.it', + // 'macerata.it', + // 'mantova.it', + // 'mar.it', + // 'marche.it', + // 'massa-carrara.it', + // 'massacarrara.it', + // 'matera.it', + // 'mb.it', + // 'mc.it', + // 'me.it', + // 'medio-campidano.it', + // 'mediocampidano.it', + // 'messina.it', + // 'mi.it', + // 'milan.it', + // 'milano.it', + // 'mn.it', + // 'mo.it', + // 'modena.it', + // 'mol.it', + // 'molise.it', + // 'monza-brianza.it', + // 'monza-e-della-brianza.it', + // 'monza.it', + // 'monzabrianza.it', + // 'monzaebrianza.it', + // 'monzaedellabrianza.it', + // 'ms.it', + // 'mt.it', + // 'na.it', + // 'naples.it', + // 'napoli.it', + // 'no.it', + // 'novara.it', + // 'nu.it', + // 'nuoro.it', + // 'og.it', + // 'ogliastra.it', + // 'olbia-tempio.it', + // 'olbiatempio.it', + // 'or.it', + // 'oristano.it', + // 'ot.it', + // 'pa.it', + // 'padova.it', + // 'padua.it', + // 'palermo.it', + // 'parma.it', + // 'pavia.it', + // 'pc.it', + // 'pd.it', + // 'pe.it', + // 'perugia.it', + // 'pesaro-urbino.it', + // 'pesarourbino.it', + // 'pescara.it', + // 'pg.it', + // 'pi.it', + // 'piacenza.it', + // 'piedmont.it', + // 'piemonte.it', + // 'pisa.it', + // 'pistoia.it', + // 'pmn.it', + // 'pn.it', + // 'po.it', + // 'pordenone.it', + // 'potenza.it', + // 'pr.it', + // 'prato.it', + // 'pt.it', + // 'pu.it', + // 'pug.it', + // 'puglia.it', + // 'pv.it', + // 'pz.it', + // 'ra.it', + // 'ragusa.it', + // 'ravenna.it', + // 'rc.it', + // 're.it', + // 'reggio-calabria.it', + // 'reggio-emilia.it', + // 'reggiocalabria.it', + // 'reggioemilia.it', + // 'rg.it', + // 'ri.it', + // 'rieti.it', + // 'rimini.it', + // 'rm.it', + // 'rn.it', + // 'ro.it', + // 'roma.it', + // 'rome.it', + // 'rovigo.it', + // 'sa.it', + // 'salerno.it', + // 'sar.it', + // 'sardegna.it', + // 'sardinia.it', + // 'sassari.it', + // 'savona.it', + // 'si.it', + // 'sic.it', + // 'sicilia.it', + // 'sicily.it', + // 'siena.it', + // 'siracusa.it', + // 'so.it', + // 'sondrio.it', + // 'sp.it', + // 'sr.it', + // 'ss.it', + // 'suedtirol.it', + // 'sv.it', + // // 'xn--sdtirol-n2a.it', + // 'ta.it', + // 'taa.it', + // 'taranto.it', + // 'te.it', + // 'tempio-olbia.it', + // 'tempioolbia.it', + // 'teramo.it', + // 'terni.it', + // 'tn.it', + // 'to.it', + // 'torino.it', + // 'tos.it', + // 'toscana.it', + // 'tp.it', + // 'tr.it', + // 'trani-andria-barletta.it', + // 'trani-barletta-andria.it', + // 'traniandriabarletta.it', + // 'tranibarlettaandria.it', + // 'trapani.it', + // 'trentin-sud-tirol.it', + // 'trentin-sudtirol.it', + // 'trentin-sued-tirol.it', + // 'trentin-suedtirol.it', + // // 'xn--trentin-sd-tirol-rzb.it', + // // 'xn--trentin-sdtirol-7vb.it', + // 'trentino-a-adige.it', + // 'trentino-aadige.it', + // 'trentino-alto-adige.it', + // 'trentino-altoadige.it', + // 'trentino-s-tirol.it', + // 'trentino-stirol.it', + // 'trentino-sud-tirol.it', + // 'trentino-sudtirol.it', + // 'trentino-sued-tirol.it', + // 'trentino-suedtirol.it', + // // 'xn--trentino-sd-tirol-c3b.it', + // // 'xn--trentino-sdtirol-szb.it', + // 'trentino.it', + // 'trentinoa-adige.it', + // 'trentinoaadige.it', + // 'trentinoalto-adige.it', + // 'trentinoaltoadige.it', + // 'trentinos-tirol.it', + // 'trentinostirol.it', + // 'trentinosud-tirol.it', + // 'trentinosudtirol.it', + // 'trentinosued-tirol.it', + // 'trentinosuedtirol.it', + // // 'xn--trentinosd-tirol-rzb.it', + // // 'xn--trentinosdtirol-7vb.it', + // 'trentinsud-tirol.it', + // 'trentinsudtirol.it', + // 'trentinsued-tirol.it', + // 'trentinsuedtirol.it', + // // 'xn--trentinsd-tirol-6vb.it', + // // 'xn--trentinsdtirol-nsb.it', + // 'trento.it', + // 'treviso.it', + // 'trieste.it', + // 'ts.it', + // 'turin.it', + // 'tuscany.it', + // 'tv.it', + // 'ud.it', + // 'udine.it', + // 'umb.it', + // 'umbria.it', + // 'urbino-pesaro.it', + // 'urbinopesaro.it', + // 'va.it', + // 'val-d-aosta.it', + // 'val-daosta.it', + // 'vald-aosta.it', + // 'valdaosta.it', + // 'valle-aosta.it', + // 'valle-d-aosta.it', + // 'valle-daosta.it', + // 'valleaosta.it', + // 'valled-aosta.it', + // 'valledaosta.it', + // 'vallee-aoste.it', + // 'vallee-d-aoste.it', + // 'valleeaoste.it', + // 'valleedaoste.it', + // // 'xn--valle-aoste-ebb.it', + // // 'xn--valle-d-aoste-ehb.it', + // // 'xn--valleaoste-e7a.it', + // // 'xn--valledaoste-ebb.it', + // 'vao.it', + // 'varese.it', + // 'vb.it', + // 'vc.it', + // 'vda.it', + // 've.it', + // 'ven.it', + // 'veneto.it', + // 'venezia.it', + // 'venice.it', + // 'verbania.it', + // 'vercelli.it', + // 'verona.it', + // 'vi.it', + // 'vibo-valentia.it', + // 'vibovalentia.it', + // 'vicenza.it', + // 'viterbo.it', + // 'vr.it', + // 'vs.it', + // 'vt.it', + // 'vv.it', + 'mt', + // 'com.kw', + // 'xn--qxa6a', + // 'abc.br', + // 'belem.br', + // 'blog.br', + // 'esp.br', + // 'far.br', + // 'floripa.br', + // 'ind.br', + // 'jampa.br', + // 'macapa.br', + // 'net.br', + // 'poa.br', + // 'recife.br', + // 'rio.br', + // 'sjc.br', + // 'tur.br', + // 'tv.br', + // 'vix.br', + 'ar', + // 'net.gr', + // 'org.gr', + // 'edu.gr', + // 'xn--qxam', + // 'xn--2scrj9c', + // 'xn--3hcrj9c', + // 'xn--45br5cyl', + // 'xn--45brj9c', + // // 'xn--d9b2bf3g1k.xn--s9brj9c', + // // 'xn--fhbed7t1n.xn--mgbbh1a71e', + // 'xn--fpcrj9c3d', + // 'xn--gecrj9c', + // // 'xn--goc1b4ch5i8a.xn--fpcrj9c3d', + // 'xn--h2breg3eve', + // 'xn--h2brj9c', + // 'xn--h2brj9c8c', + // // 'xn--hdc1b4ch5i.xn--gecrj9c', + // // 'xn--i1b1b4ch5i.xn--h2brj9c', + // 'xn--mgbbh1a', + // 'xn--mgbbh1a71e', + // 'xn--mgbgu82a', + // // 'xn--p5b2bfp5fh3fra.xn--45brj9c', + // 'xn--rvc1e0am3e', + // 'xn--s9brj9c', + // // 'xn--vlccpku2dp3h.xn--xkc2dl3a5ee0h', + // 'xn--xkc2dl3a5ee0h', + // 'asso.fr', + // 'gob.es', + 'ad', + // 'net.ar', + // 'asn.au', + // 'info.au', + 'aw', + // 'com.aw', + 'ax', + 'az', + // 'com.az', + // 'net.az', + // 'org.az', + // 'com.bd', + // 'net.bd', + // 'org.bd', + 'bf', + 'bh', + // 'com.bh', + // 'co.bi', + // 'com.bi', + // 'edu.bi', + // 'info.bi', + // 'mo.bi', + // 'or.bi', + // 'org.bi', + 'bj', + // 'co.bj', + // 'com.bj', + // 'eco.bj', + // 'info.bj', + // 'net.bj', + // 'org.bj', + // 'com.bn', + // 'net.bo', + // 'org.bo', + // 'emp.br', + // 'org.br', + // 'com.bs', + // 'net.bs', + // 'org.bs', + // 'net.bw', + // 'org.bw', + // 'com.by', + // 'net.by', + 'ci', + // 'co.ci', + // 'com.ci', + // 'co.ck', + // 'ac.cn', + // 'com.cv', + // 'com.cw', + // 'net.cw', + // 'org.cw', + // 'biz.cy', + 'cy', + // 'net.cy', + // 'org.cy', + // 'co.dm', + // 'com.dz', + 'dz', + // 'fin.ec', + // 'med.ec', + // 'net.ec', + // 'pro.ec', + // 'co.ee', + // 'com.ee', + // 'fie.ee', + // 'med.ee', + // 'pri.ee', + // 'com.eg', + 'eg', + 'et', + // 'co.fk', + 'fo', + 'ga', + 'gf', + // 'edu.gl', + // 'com.gn', + // 'com.gu', + 'gu', + // 'com.hn', + // 'edu.hn', + // 'net.hn', + // 'org.hn', + // 'info.hu', + // 'co.im', + // 'com.im', + // 'net.im', + // 'org.im', + 'iq', + // 'com.jm', + // 'com.jo', + 'jo', + 'ke', + // 'me.ke', + // 'mobi.ke', + // 'or.ke', + // 'com.kh', + // 'com.ki', + // 'net.ki', + // 'org.ki', + // 'com.km', + 'km', + // 'com.kn', + 'kn', + // 'ne.kr', + // 'or.kr', + // 'pe.kr', + // 're.kr', + // 'seoul.kr', + // 'com.kz', + // 'org.kz', + // 'com.lr', + 'ls', + // 'or.ls', + // 'com.ly', + // 'co.ma', + // 'net.ma', + // 'org.ma', + // 'tm.mc', + // 'co.mg', + // 'com.mg', + 'mg', + // 'net.mg', + // 'org.mg', + // 'com.ml', + // 'biz.mm', + // 'com.mm', + // 'org.mm', + // 'com.mo', + 'mo', + 'mq', + 'mr', + // 'co.ms', + // 'com.ms', + // 'org.ms', + // 'ac.mu', + // 'co.mu', + // 'com.mu', + // 'net.mu', + // 'or.mu', + // 'org.mu', + 'museum', + // 'com.mv', + // 'net.mz', + // 'org.mz', + 'nc', + 'ne', + // 'com.nf', + // 'net.nf', + // 'org.nf', + // 'edu.ng', + // 'gov.ng', + // 'i.ng', + // 'mobi.ng', + // 'name.ng', + // 'sch.ng', + // 'ac.ni', + // 'co.ni', + // 'priv.no', + // 'com.np', + // 'com.nr', + 'nr', + 'om', + 'pa', + // 'nom.pe', + 'pf', + // 'com.pg', + // 'net.pk', + // 'org.pk', + // 'co.pn', + // 'net.pn', + // 'org.pn', + 'pn', + // 'com.qa', + // 'co.ro', + // 'org.rs', + // 'com.ru', + // 'net.ru', + // 'org.ru', + // 'pp.ru', + // 'ac.rw', + // 'net.rw', + 'sb', + // 'com.sd', + 'sd', + // 'org.sg', + 'sm', + // 'com.sn', + 'sn', + // 'biz.ss', + // 'com.ss', + // 'me.ss', + // 'net.ss', + // 'com.sy', + // 'co.sz', + 'td', + 'tg', + // 'net.th', + // 'com.tj', + 'tj', + // 'net.tr', + // 'org.tr', + // 'tv.tr', + // 'biz.tt', + // 'info.tt', + // 'jobs.tt', + // 'mobi.tt', + // 'name.tt', + // 'net.tw', + // 'donetsk.ua', + // 'in.ua', + // 'kiev.ua', + // 'net.ua', + // 'org.ua', + // 'com.ug', + // 'or.ug', + // 'co.uz', + // 'com.uz', + // 'org.uz', + 'uz', + // 'com.vi', + 'vi', + // 'com.vu', + // 'edu.vu', + // 'net.vu', + // 'org.vu', + // 'com.ws', + // 'net.ws', + // 'org.ws', + // 'xn--3e0b707e', + // 'xn--80ao21a', + // 'xn--90a3ac', + // 'xn--90ais', + // 'xn--j1amh', + // 'xn--j6w193g', + // 'xn--kpry57d', + // 'xn--mgbaam7a8h', + // 'xn--node', + // 'xn--o3cw4h', + // 'xn--wgbl6a', + // 'xn--ygbi2ammx', + // 'com.ye', + // 'co.zm', + // 'com.zm', + // 'org.zm', + 'zm', + // 'co.zw', + // 'org.zw', + ]; diff --git a/app/mdx-components.tsx b/app/mdx-components.tsx new file mode 100644 index 000000000..4cb554ee2 --- /dev/null +++ b/app/mdx-components.tsx @@ -0,0 +1,14 @@ +import type { MDXComponents } from 'mdx/types'; + +import { contentComponents } from '@/content'; + +/** + * This file needs to be named `mdx-components.ts` and needs to stay in this directory. + * Moving it will cause the project to fail to build. Thank you next. + */ +export function useMDXComponents(components: MDXComponents): MDXComponents { + return { + ...contentComponents, + ...components, + }; +} diff --git a/app/mdx/recma.mjs b/app/mdx/recma.mjs new file mode 100644 index 000000000..a6b7756b2 --- /dev/null +++ b/app/mdx/recma.mjs @@ -0,0 +1,132 @@ +import { mdxAnnotations } from 'mdx-annotations'; +// import recmaNextjsStaticProps from 'recma-nextjs-static-props'; +import { simpleGit } from 'simple-git'; + +const cwd = process.cwd().replace(/\/app$/, ''); + +/** + * @type {import('unified').Plugin<[], import('estree').Program>} + */ +const recmaExportFilepath = () => { + return (tree, file) => { + const relativePath = file.path.replace(cwd, ''); + + tree.body.push({ + type: 'ExportNamedDeclaration', + declaration: { + type: 'VariableDeclaration', + kind: 'const', + declarations: [ + { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'filepath', + }, + init: { + type: 'Literal', + value: relativePath, + }, + }, + ], + }, + }); + }; +}; + +/** @type {import('simple-git').SimpleGit} */ +let git; + +/** + * @type {import('unified').Plugin<[], import('estree').Program>} + */ +const recmaExportCommit = () => { + return async (tree, file) => { + const filePath = file.path; + + if (!git) git = simpleGit(); + + const log = await git + .log({ + file: filePath, + maxCount: 1, + format: { hash: '%h', date: '%at' }, + }) + .then((log) => { + if (log.total === 0) return; + + return { + hash: log.latest.hash, + date: Number(log.latest.date) * 1000, + }; + }) + .catch((error) => { + console.error(error); + }); + + if (!log) return; + + tree.body.push({ + type: 'ExportNamedDeclaration', + declaration: { + type: 'VariableDeclaration', + kind: 'const', + declarations: [ + { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'commit', + }, + init: { + type: 'ObjectExpression', + properties: [ + { + type: 'Property', + key: { + type: 'Identifier', + name: 'hash', + }, + value: { + type: 'Literal', + value: log.hash, + }, + kind: 'init', + }, + { + type: 'Property', + key: { + type: 'Identifier', + name: 'date', + }, + value: { + type: 'Literal', + value: log.date, + }, + kind: 'init', + }, + ], + }, + }, + ], + }, + }); + }; +}; + +export const recmaPlugins = [ + /** + * Add support for annotations to MDX. + * An annotation is a JavaScript object associated with an MDX node. The object properties are passed to the resulting JSX element as props. + * @see https://www.npmjs.com/package/mdx-annotations + */ + mdxAnnotations.recma, + /** + * Add an `export const filepath` to MDX with the relative path to the file. + */ + recmaExportFilepath, + /** + * Add an `export const commit` to MDX with the latest commit hash and date. + */ + recmaExportCommit, +]; diff --git a/app/mdx/rehype.mjs b/app/mdx/rehype.mjs new file mode 100644 index 000000000..71036dd67 --- /dev/null +++ b/app/mdx/rehype.mjs @@ -0,0 +1,230 @@ +import { slugifyWithCounter } from '@sindresorhus/slugify'; +import * as acorn from 'acorn'; +import { toString } from 'mdast-util-to-string'; +import { mdxAnnotations } from 'mdx-annotations'; +import rehypeMdxTitle from 'rehype-mdx-title'; +import shiki from 'shiki'; +import { visit } from 'unist-util-visit'; + +/** + * @type {import('unified').Plugin[]} + */ +function rehypeMermaidWrapper() { + return (tree) => { + visit(tree, 'element', (node, _nodeIndex, parentNode) => { + if ( + node.tagName === 'svg' && + node.properties.role === 'graphics-document document' + ) { + const mermaidDiv = { + type: 'element', + tagName: 'div', + properties: { + className: ['mermaid'], + }, + children: [node], + }; + + parentNode.children.splice(_nodeIndex, 1, mermaidDiv); + } + }); + }; +} + +function rehypeParseCodeBlocks() { + return (tree) => { + visit(tree, 'element', (node, _nodeIndex, parentNode) => { + if (node.tagName === 'code' && node.properties.className) { + parentNode.properties.language = + node.properties.className[0]?.replace(/^language-/, ''); + } + }); + }; +} + +let highlighter; + +function rehypeShiki() { + return async (tree) => { + // lightHighlighter = + // lightHighlighter ?? + // (await shiki.getHighlighter({ theme: 'min-light' })); + highlighter = + highlighter ?? + (await shiki.getHighlighter({ theme: 'css-variables' })); + + visit(tree, 'element', (node) => { + if ( + node.tagName === 'pre' && + node.children[0]?.tagName === 'code' + ) { + const codeNode = node.children[0]; + const textNode = codeNode.children[0]; + + node.properties.code = textNode.value; + node.properties.meta = codeNode?.data?.meta; + + if (node.properties.language) { + const lightTokens = highlighter.codeToThemedTokens( + textNode.value, + node.properties.language + ); + + const renderLight = shiki.renderToHtml(lightTokens, { + elements: { + pre: ({ children }) => children, + code: ({ children }) => children, + line: ({ children }) => `${children}`, + }, + }); + + textNode.value = renderLight; + } + } + }); + }; +} + +function rehypeSlugify() { + return (tree) => { + const slugify = slugifyWithCounter(); + + visit(tree, 'element', (node) => { + if ( + ['h2', 'h3', 'h4'].includes(node.tagName) && + !node.properties.id + ) { + node.properties.id = slugify(toString(node)); + } + }); + }; +} + +function rehypeAddMDXExports(getExports) { + return (tree) => { + const exports = Object.entries(getExports(tree)); + + for (const [name, value] of exports) { + for (const node of tree.children) { + if ( + node.type === 'mdxjsEsm' && + new RegExp(`export\\s+const\\s+${name}\\s*=`).test( + node.value + ) + ) { + return; + } + } + + const exportString = `export const ${name} = ${value}`; + + tree.children.push({ + type: 'mdxjsEsm', + value: exportString, + data: { + estree: acorn.parse(exportString, { + sourceType: 'module', + ecmaVersion: 'latest', + }), + }, + }); + } + }; +} + +function getSections(node) { + const sections = []; + + for (const child of node.children ?? []) { + if ( + child.type === 'element' && + ['h2', 'h3', 'h4'].includes(child.tagName) + ) { + const indent = ['h2', 'h3', 'h4'].indexOf(child.tagName); + + sections.push( + `{title: ${JSON.stringify( + toString(child) + )}, navtitle: ${JSON.stringify( + child.properties.navtitle ?? '' + )}, id: ${JSON.stringify( + child.properties.id + )}, indent: '${indent}', ...${child.properties.annotation}}` + ); + } else if (child.children) { + sections.push(...getSections(child)); + } + } + + return sections; +} + +/** + * @type {import('unified').Plugin[]} + */ +const rehypeExportContent = () => { + return (tree) => { + const test = toString(tree, { + includeHtml: false, + }).replace(/\n/g, ' '); + + const exportString = `export const plainContent = ${JSON.stringify( + test + )}`; + + tree.children.push({ + type: 'mdxjsEsm', + value: exportString, + data: { + estree: acorn.parse(exportString, { + sourceType: 'module', + ecmaVersion: 'latest', + }), + }, + }); + }; +}; + +export const rehypePlugins = [ + /** + * Add support for annotations to MDX. + * An annotation is a JavaScript object associated with an MDX node. The object properties are passed to the resulting JSX element as props. + * @see https://www.npmjs.com/package/mdx-annotations + */ + mdxAnnotations.rehype, + rehypeExportContent, + /** + * Add support for mermaid diagrams to MDX. + */ + // [rehypeMermaid({ browser: 'chromium' }), { strategy: 'inline-svg' }], + /** + * Wraps all mermaid segments in a div with class="mermaid" + */ + rehypeMermaidWrapper, + /** + * Parse code blocks to add the language to the properties + */ + rehypeParseCodeBlocks, + /** + * Add syntax highlighting to code blocks + */ + rehypeShiki, + /** + * Add an id to h2 elements + */ + rehypeSlugify, + /** + * Adds export const title = '...'; to the top of the MDX file from the first h1 element + * @see https://github.com/remcohaszing/rehype-mdx-title + */ + rehypeMdxTitle, + /** + * Adds export const sections = [{...}, {...}, ...]; to the top of the MDX file from the h2 elements + */ + [ + rehypeAddMDXExports, + (tree) => ({ + sections: `[${getSections(tree).join(',')}]`, + }), + ], +]; diff --git a/app/mdx/remark.mjs b/app/mdx/remark.mjs new file mode 100644 index 000000000..4f64e9e7f --- /dev/null +++ b/app/mdx/remark.mjs @@ -0,0 +1,17 @@ +import { mdxAnnotations } from 'mdx-annotations'; +// import mdxmermaid from 'mdx-mermaid'; +import gfm from 'remark-gfm'; + +export const remarkPlugins = [ + /** + * Add support for annotations to MDX. + * An annotation is a JavaScript object associated with an MDX node. The object properties are passed to the resulting JSX element as props. + * @see https://www.npmjs.com/package/mdx-annotations + */ + mdxAnnotations.remark, + /** + * Add support for GitHub Flavored Markdown. + */ + gfm, + // [mdxmermaid, { output: 'svg' }], +]; diff --git a/app/next-env.d.ts b/app/next-env.d.ts new file mode 100644 index 000000000..4f11a03dc --- /dev/null +++ b/app/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/app/next.config.mjs b/app/next.config.mjs new file mode 100644 index 000000000..02a0d0c39 --- /dev/null +++ b/app/next.config.mjs @@ -0,0 +1,34 @@ +/* eslint-disable sonarjs/no-duplicate-string */ +import nextMDX from '@next/mdx'; + +import { recmaPlugins } from './mdx/recma.mjs'; +import { rehypePlugins } from './mdx/rehype.mjs'; +import { remarkPlugins } from './mdx/remark.mjs'; + +/** @type {import('@next/mdx').NextMDXOptions} */ +const mdxOptions = { + options: { + remarkPlugins, + rehypePlugins, + recmaPlugins, + // providerImportSource: '@mdx-js/react', + }, +}; + +/** @type {import('next').NextConfig} */ +const nextConfig = { + output: 'export', + reactStrictMode: true, + pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'mdx'], + experimental: { + // scrollRestoration: process.env.NODE_ENV === 'production', + // mdxRs: true, + }, + images: { + unoptimized: true, + }, +}; + +const withMDX = nextMDX(mdxOptions); + +export default withMDX(nextConfig); diff --git a/app/package.json b/app/package.json new file mode 100644 index 000000000..aeb10cad0 --- /dev/null +++ b/app/package.json @@ -0,0 +1,83 @@ +{ + "name": "@ensdomains/docs", + "version": "2.0.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint -c .eslintrc.json --ext .jsx,.tsx ./src", + "typecheck": "tsc --noEmit" + }, + "browserslist": "defaults, not ie <= 11", + "dependencies": { + "@ens-tools/format": "^0.0.2", + "@ens-tools/thorin-core": "0.0.3", + "@ens-tools/thorin-react": "0.0.3", + "@ensdomains/thorin": "^0.6.44", + "@headlessui/react": "^1.7.18", + "@mdx-js/loader": "^3.0.0", + "@mdx-js/react": "^3.0.0", + "@next/mdx": "^14.1.0", + "@sindresorhus/slugify": "^2.2.1", + "@tailwindcss/typography": "^0.5.10", + "@tanstack/react-query": "^5.18.1", + "@types/react-modal": "^3.16.3", + "@yaireo/relative-time": "^1.0.4", + "acorn": "^8.11.3", + "autoprefixer": "^10.4.17", + "clsx": "^2.1.0", + "connectkit": "^1.7.1", + "deepmerge-ts": "^5.1.0", + "encoding": "^0.1.13", + "ens-tools": "^0.0.14", + "focus-visible": "^5.2.0", + "framer-motion": "11.0.3", + "glob": "^10.3.10", + "graphql-request": "^6.1.0", + "mdast-util-to-string": "^4.0.0", + "mdx-annotations": "^0.1.4", + "mdx-mermaid": "^2.0.0", + "mermaid": "^10.8.0", + "next-themes": "^0.2.1", + "pino-pretty": "^10.3.1", + "playwright": "^1.41.2", + "postcss-focus-visible": "^9.0.1", + "react-icons": "^5.0.1", + "react-modal": "^3.16.1", + "rehype-mdx-title": "^3.0.0", + "rehype-mermaidjs": "^2.0.0", + "remark-gfm": "^4.0.0", + "schema-dts": "^1.1.2", + "seedrandom": "^3.0.5", + "shiki": "^0.11.1", + "simple-git": "^3.22.0", + "siwe": "^2.1.4", + "swr": "^2.2.4", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0", + "use-debounce": "^10.0.0", + "viem": "^2.7.8", + "wagmi": "^2.5.6", + "zod": "^3.22.4", + "zustand": "^4.5.0" + }, + "devDependencies": { + "@types/mdx": "^2.0.11", + "@types/node": "20.11.17", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", + "@types/seedrandom": "^3.0.8", + "@typescript-eslint/parser": "^6.21.0", + "eslint": "8.56.0", + "eslint-config-next": "14.1.0", + "eslint-plugin-tailwindcss": "^3.14.2", + "eslint-plugin-v3xlabs": "^1.6.2", + "next": "14.1.0", + "prettier": "^3.2.5", + "react": "18.2.0", + "react-dom": "18.2.0", + "tailwindcss": "^3.4.1", + "typescript": "^5.3.3" + } +} diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml new file mode 100644 index 000000000..bc84ce33e --- /dev/null +++ b/app/pnpm-lock.yaml @@ -0,0 +1,14074 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@ens-tools/format': + specifier: ^0.0.2 + version: 0.0.2 + '@ens-tools/thorin-core': + specifier: 0.0.3 + version: 0.0.3(@wagmi/connectors@4.1.14)(@wagmi/core@2.6.4)(rollup@4.11.0)(viem@2.7.8) + '@ens-tools/thorin-react': + specifier: 0.0.3 + version: 0.0.3(@types/react@18.2.55)(@wagmi/connectors@4.1.14)(@wagmi/core@2.6.4)(rollup@4.11.0)(viem@2.7.8) + '@ensdomains/thorin': + specifier: ^0.6.44 + version: 0.6.44(react-dom@18.2.0)(react-transition-state@1.1.5)(react@18.2.0)(styled-components@5.3.11) + '@headlessui/react': + specifier: ^1.7.18 + version: 1.7.18(react-dom@18.2.0)(react@18.2.0) + '@mdx-js/loader': + specifier: ^3.0.0 + version: 3.0.0(webpack@5.90.1) + '@mdx-js/react': + specifier: ^3.0.0 + version: 3.0.0(@types/react@18.2.55)(react@18.2.0) + '@next/mdx': + specifier: ^14.1.0 + version: 14.1.0(@mdx-js/loader@3.0.0)(@mdx-js/react@3.0.0) + '@sindresorhus/slugify': + specifier: ^2.2.1 + version: 2.2.1 + '@tailwindcss/typography': + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@3.4.1) + '@tanstack/react-query': + specifier: ^5.18.1 + version: 5.18.1(react@18.2.0) + '@types/react-modal': + specifier: ^3.16.3 + version: 3.16.3 + '@yaireo/relative-time': + specifier: ^1.0.4 + version: 1.0.4 + acorn: + specifier: ^8.11.3 + version: 8.11.3 + autoprefixer: + specifier: ^10.4.17 + version: 10.4.17(postcss@8.4.35) + clsx: + specifier: ^2.1.0 + version: 2.1.0 + connectkit: + specifier: ^1.7.1 + version: 1.7.1(@babel/core@7.23.9)(@tanstack/react-query@5.18.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@2.7.8)(wagmi@2.5.6) + deepmerge-ts: + specifier: ^5.1.0 + version: 5.1.0 + encoding: + specifier: ^0.1.13 + version: 0.1.13 + ens-tools: + specifier: ^0.0.14 + version: 0.0.14(@wagmi/core@2.6.4)(ethers@5.7.2)(react@18.2.0)(swr@2.2.4)(wagmi@2.5.6) + focus-visible: + specifier: ^5.2.0 + version: 5.2.0 + framer-motion: + specifier: 11.0.3 + version: 11.0.3(react-dom@18.2.0)(react@18.2.0) + glob: + specifier: ^10.3.10 + version: 10.3.10 + graphql-request: + specifier: ^6.1.0 + version: 6.1.0(encoding@0.1.13)(graphql@16.8.1) + mdast-util-to-string: + specifier: ^4.0.0 + version: 4.0.0 + mdx-annotations: + specifier: ^0.1.4 + version: 0.1.4 + mdx-mermaid: + specifier: ^2.0.0 + version: 2.0.0(encoding@0.1.13)(mermaid@10.8.0)(react@18.2.0)(unist-util-visit@5.0.0) + mermaid: + specifier: ^10.8.0 + version: 10.8.0 + next-themes: + specifier: ^0.2.1 + version: 0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0) + pino-pretty: + specifier: ^10.3.1 + version: 10.3.1 + playwright: + specifier: ^1.41.2 + version: 1.41.2 + postcss-focus-visible: + specifier: ^9.0.1 + version: 9.0.1(postcss@8.4.35) + react-icons: + specifier: ^5.0.1 + version: 5.0.1(react@18.2.0) + react-modal: + specifier: ^3.16.1 + version: 3.16.1(react-dom@18.2.0)(react@18.2.0) + rehype-mdx-title: + specifier: ^3.0.0 + version: 3.0.0 + rehype-mermaidjs: + specifier: ^2.0.0 + version: 2.0.0 + remark-gfm: + specifier: ^4.0.0 + version: 4.0.0 + schema-dts: + specifier: ^1.1.2 + version: 1.1.2(typescript@5.3.3) + seedrandom: + specifier: ^3.0.5 + version: 3.0.5 + shiki: + specifier: ^0.11.1 + version: 0.11.1 + simple-git: + specifier: ^3.22.0 + version: 3.22.0 + siwe: + specifier: ^2.1.4 + version: 2.1.4(ethers@5.7.2) + swr: + specifier: ^2.2.4 + version: 2.2.4(react@18.2.0) + unified: + specifier: ^11.0.4 + version: 11.0.4 + unist-util-visit: + specifier: ^5.0.0 + version: 5.0.0 + use-debounce: + specifier: ^10.0.0 + version: 10.0.0(react@18.2.0) + viem: + specifier: ^2.7.8 + version: 2.7.8(typescript@5.3.3)(zod@3.22.4) + wagmi: + specifier: ^2.5.6 + version: 2.5.6(@tanstack/react-query@5.18.1)(@types/react@18.2.55)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + zod: + specifier: ^3.22.4 + version: 3.22.4 + zustand: + specifier: ^4.5.0 + version: 4.5.0(@types/react@18.2.55)(react@18.2.0) + +devDependencies: + '@types/mdx': + specifier: ^2.0.11 + version: 2.0.11 + '@types/node': + specifier: 20.11.17 + version: 20.11.17 + '@types/react': + specifier: ^18.2.55 + version: 18.2.55 + '@types/react-dom': + specifier: ^18.2.19 + version: 18.2.19 + '@types/seedrandom': + specifier: ^3.0.8 + version: 3.0.8 + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: + specifier: 8.56.0 + version: 8.56.0 + eslint-config-next: + specifier: 14.1.0 + version: 14.1.0(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-tailwindcss: + specifier: ^3.14.2 + version: 3.14.2(tailwindcss@3.4.1) + eslint-plugin-v3xlabs: + specifier: ^1.6.2 + version: 1.6.2(eslint@8.56.0)(typescript@5.3.3) + next: + specifier: 14.1.0 + version: 14.1.0(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + prettier: + specifier: ^3.2.5 + version: 3.2.5 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1 + typescript: + specifier: ^5.3.3 + version: 5.3.3 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@adraffy/ens-normalize@1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: false + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) + '@babel/types': 7.23.9 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: false + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: false + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9): + resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: false + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false + + /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9): + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: false + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: false + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: false + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: false + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: false + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + dev: false + + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) + '@babel/types': 7.23.9 + transitivePeerDependencies: + - supports-color + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + dev: false + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9): + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.9): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + dev: false + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + dev: false + + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + dev: false + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9): + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: false + + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.23.9 + dev: false + + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: false + + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: false + + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/types': 7.23.9 + dev: false + + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: false + + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-runtime@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: false + + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + dev: false + + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/preset-env@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) + core-js-compat: 3.35.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-flow@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) + dev: false + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.9 + esutils: 2.0.3 + dev: false + + /@babel/preset-typescript@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) + dev: false + + /@babel/register@7.23.7(@babel/core@7.23.9): + resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + dev: false + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: false + + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + + /@babel/traverse@7.23.9(supports-color@5.5.0): + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + debug: 4.3.4(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@braintree/sanitize-url@6.0.4: + resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} + dev: false + + /@coinbase/wallet-sdk@3.9.1: + resolution: {integrity: sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==} + dependencies: + bn.js: 5.2.1 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 7.1.0 + eth-json-rpc-filters: 6.0.1 + eventemitter3: 5.0.1 + keccak: 3.0.4 + preact: 10.19.4 + sha.js: 2.4.11 + transitivePeerDependencies: + - supports-color + dev: false + + /@emotion/babel-plugin@11.11.0: + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/runtime': 7.23.9 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + dev: false + + /@emotion/cache@11.11.0: + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + dev: false + + /@emotion/hash@0.9.1: + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + dev: false + + /@emotion/is-prop-valid@0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + requiresBuild: true + dependencies: + '@emotion/memoize': 0.7.4 + dev: false + optional: true + + /@emotion/is-prop-valid@1.2.1: + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + dependencies: + '@emotion/memoize': 0.8.1 + dev: false + + /@emotion/memoize@0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true + dev: false + optional: true + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + dev: false + + /@emotion/react@11.11.3(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + '@types/react': 18.2.55 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + dev: false + + /@emotion/serialize@1.1.3: + resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.3 + dev: false + + /@emotion/sheet@1.2.2: + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + dev: false + + /@emotion/styled@11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@emotion/babel-plugin': 11.11.0 + '@emotion/is-prop-valid': 1.2.1 + '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0) + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@types/react': 18.2.55 + react: 18.2.0 + dev: false + + /@emotion/stylis@0.8.5: + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + dev: false + + /@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false + + /@emotion/unitless@0.8.1: + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + dev: false + + /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + dev: false + + /@emotion/utils@1.2.1: + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + dev: false + + /@emotion/weak-memoize@0.3.1: + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + dev: false + + /@ens-tools/format@0.0.2: + resolution: {integrity: sha512-hgIznthtDRaxtmuGsvv51RpL840daIk619nBG90lTWFGnrfzKWaKNo98QA/n+7WWd//47Bvy/3unv0VVgQaggA==} + dev: false + + /@ens-tools/thorin-core@0.0.3(@wagmi/connectors@4.1.14)(@wagmi/core@2.6.4)(rollup@4.11.0)(viem@2.7.8): + resolution: {integrity: sha512-uyAZItLi6Wml8uVQZHUQy3OzGXHWcFIRQ161Tw9wwk1uiqgUGLzpaIDD7hMaxTjzsB8hZdwr0M9xk4ElR9HxsQ==} + peerDependencies: + '@wagmi/connectors': ^4.1.14 + '@wagmi/core': ^2.6.5 + viem: 2.x + dependencies: + '@rollup/plugin-commonjs': 25.0.7(rollup@4.11.0) + '@rollup/plugin-json': 6.1.0(rollup@4.11.0) + '@wagmi/connectors': 4.1.14(@types/react@18.2.55)(@wagmi/core@2.6.4)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + '@wagmi/core': 2.6.4(@types/react@18.2.55)(react@18.2.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + lit: 3.1.2 + rollup-plugin-peer-deps-external: 2.2.4(rollup@4.11.0) + viem: 2.7.8(typescript@5.3.3)(zod@3.22.4) + transitivePeerDependencies: + - rollup + dev: false + + /@ens-tools/thorin-react@0.0.3(@types/react@18.2.55)(@wagmi/connectors@4.1.14)(@wagmi/core@2.6.4)(rollup@4.11.0)(viem@2.7.8): + resolution: {integrity: sha512-2BLUTtlxw9G88k1JHU7Rt10/auKmBzihVR378egtHVY7ffzm8AICrohCRm9wCGSqK1aTorFX3xB9txLSAMIPZA==} + peerDependencies: + '@wagmi/connectors': ^4.1.14 + '@wagmi/core': ^2.6.5 + viem: 2.x + dependencies: + '@ens-tools/thorin-core': 0.0.3(@wagmi/connectors@4.1.14)(@wagmi/core@2.6.4)(rollup@4.11.0)(viem@2.7.8) + '@lit/react': 1.0.3(@types/react@18.2.55) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.11.0) + '@rollup/plugin-json': 6.1.0(rollup@4.11.0) + '@wagmi/connectors': 4.1.14(@types/react@18.2.55)(@wagmi/core@2.6.4)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + '@wagmi/core': 2.6.4(@types/react@18.2.55)(react@18.2.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + lit: 3.1.2 + react: 18.2.0 + rollup-plugin-peer-deps-external: 2.2.4(rollup@4.11.0) + viem: 2.7.8(typescript@5.3.3)(zod@3.22.4) + transitivePeerDependencies: + - '@types/react' + - rollup + dev: false + + /@ensdomains/thorin@0.6.44(react-dom@18.2.0)(react-transition-state@1.1.5)(react@18.2.0)(styled-components@5.3.11): + resolution: {integrity: sha512-MoW0csfH/ql1q85IrWQvAFU/7gTlhM7GWBbSCN7uFN/v5hUr+f+C8zON/17QM9UT7bhigCur48DeL172eqiIMA==} + peerDependencies: + react: ^17 + react-dom: ^17 + react-transition-state: ^1.1.4 + styled-components: ^5.3.3 + dependencies: + clsx: 1.2.1 + focus-visible: 5.2.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-state: 1.1.5(react-dom@18.2.0)(react@18.2.0) + styled-components: 5.3.11(@babel/core@7.23.9)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + ts-pattern: 4.3.0 + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@5.5.0) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@ethereumjs/common@3.2.0: + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + dependencies: + '@ethereumjs/util': 8.1.0 + crc-32: 1.2.2 + dev: false + + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /@ethereumjs/tx@4.2.0: + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/common': 3.2.0 + '@ethereumjs/rlp': 4.0.1 + '@ethereumjs/util': 8.1.0 + ethereum-cryptography: 2.1.3 + dev: false + + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.3 + micro-ftch: 0.3.1 + dev: false + + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + dev: false + + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: false + + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + dev: false + + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + dev: false + + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: false + + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + dev: false + + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + dev: false + + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + dev: false + + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + dev: false + + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + dev: false + + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + dev: false + + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + dev: false + + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + dev: false + + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + dev: false + + /@ethersproject/solidity@5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + dev: false + + /@ethersproject/units@5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@fortawesome/fontawesome-free@6.5.1: + resolution: {integrity: sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw==} + engines: {node: '>=6'} + requiresBuild: true + dev: false + + /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.8.1 + dev: false + + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: false + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@headlessui/react@1.7.18(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + dependencies: + '@tanstack/react-virtual': 3.0.4(react-dom@18.2.0)(react@18.2.0) + client-only: 0.0.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true + + /@ioredis/commands@1.2.0: + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + + /@isaacs/ttlcache@1.4.1: + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + dev: false + + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + dev: false + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + jest-mock: 29.7.0 + dev: false + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.11.17 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: false + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: false + + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.11.17 + '@types/yargs': 15.0.19 + chalk: 4.1.2 + dev: false + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.11.17 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: false + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.22 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@kwsites/file-exists@1.1.1: + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + dependencies: + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@kwsites/promise-deferred@1.1.1: + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + dev: false + + /@lit-labs/ssr-dom-shim@1.2.0: + resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + dev: false + + /@lit/react@1.0.3(@types/react@18.2.55): + resolution: {integrity: sha512-RGoPMrAPbFjQFXFbfmYdotw000DyChehTim+d562HRXvFGw//KxouI8jNOcc3Kw/1uqUA1SJqXFtKKxK0NUrww==} + peerDependencies: + '@types/react': 17 || 18 + dependencies: + '@types/react': 18.2.55 + dev: false + + /@lit/reactive-element@1.6.3: + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + dev: false + + /@lit/reactive-element@2.0.4: + resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + dev: false + + /@mdx-js/loader@3.0.0(webpack@5.90.1): + resolution: {integrity: sha512-9kLv83YtgxpoXVYHaf0ygx1dmhCffo0MQCv6KtNG67jy/JlBK/2Q0dSWfuuyStP3jnZKABHfbjv8zsiT1buu6A==} + peerDependencies: + webpack: '>=5' + dependencies: + '@mdx-js/mdx': 3.0.0 + source-map: 0.7.4 + webpack: 5.90.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@mdx-js/mdx@3.0.0: + resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==} + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.4 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.11 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + source-map: 0.7.4 + unified: 11.0.4 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@mdx-js/react@3.0.0(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + dependencies: + '@types/mdx': 2.0.11 + '@types/react': 18.2.55 + react: 18.2.0 + dev: false + + /@metamask/eth-json-rpc-provider@1.0.1: + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/json-rpc-engine': 7.3.2 + '@metamask/safe-event-emitter': 3.0.0 + '@metamask/utils': 5.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/json-rpc-engine@7.3.2: + resolution: {integrity: sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/rpc-errors': 6.1.0 + '@metamask/safe-event-emitter': 3.0.0 + '@metamask/utils': 8.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/object-multiplex@1.3.0: + resolution: {integrity: sha512-czcQeVYdSNtabd+NcYQnrM69MciiJyd1qvKH8WM2Id3C0ZiUUX5Xa/MK+/VUk633DBhVOwdNzAKIQ33lGyA+eQ==} + engines: {node: '>=12.0.0'} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + readable-stream: 2.3.8 + dev: false + + /@metamask/onboarding@1.0.1: + resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + dependencies: + bowser: 2.11.0 + dev: false + + /@metamask/post-message-stream@6.2.0: + resolution: {integrity: sha512-WunZ0bruClF862mvbKQGETn5SM0XKGmocPMQR1Ew6sYix9/FDzeoZnoI8RkXk01E+70FCdxhTE/r8kk5SFOuTw==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/utils': 5.0.2 + readable-stream: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/providers@10.2.1: + resolution: {integrity: sha512-p2TXw2a1Nb8czntDGfeIYQnk4LLVbd5vlcb3GY//lylYlKdSqp+uUTegCvxiFblRDOT68jsY8Ib1VEEzVUOolA==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/object-multiplex': 1.3.0 + '@metamask/safe-event-emitter': 2.0.0 + '@types/chrome': 0.0.136 + detect-browser: 5.3.0 + eth-rpc-errors: 4.0.3 + extension-port-stream: 2.1.1 + fast-deep-equal: 2.0.1 + is-stream: 2.0.1 + json-rpc-engine: 6.1.0 + json-rpc-middleware-stream: 4.2.3 + pump: 3.0.0 + webextension-polyfill-ts: 0.25.0 + dev: false + + /@metamask/rpc-errors@6.1.0: + resolution: {integrity: sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/utils': 8.3.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/safe-event-emitter@2.0.0: + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + dev: false + + /@metamask/safe-event-emitter@3.0.0: + resolution: {integrity: sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==} + engines: {node: '>=12.0.0'} + dev: false + + /@metamask/sdk-communication-layer@0.14.3(encoding@0.1.13): + resolution: {integrity: sha512-yjSbj8y7fFbQXv2HBzUX6D9C8BimkCYP6BDV7hdw53W8b/GlYCtXVxUFajQ9tuO1xPTRjR/xt/dkdr2aCi6WGw==} + dependencies: + bufferutil: 4.0.8 + cross-fetch: 3.1.8(encoding@0.1.13) + date-fns: 2.30.0 + eciesjs: 0.3.18 + eventemitter2: 6.4.9 + socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3) + utf-8-validate: 6.0.3 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@metamask/sdk-install-modal-web@0.14.1(@types/react@18.2.55)(react-native@0.73.4): + resolution: {integrity: sha512-emT8HKbnfVwGhPxyUfMja6DWzvtJvDEBQxqCVx93H0HsyrrOzOC43iGCAosslw6o5h7gOfRKLqWmK8V7jQAS2Q==} + dependencies: + '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0) + i18next: 22.5.1 + qr-code-styling: 1.6.0-rc.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react-native + dev: false + + /@metamask/sdk@0.14.3(@types/react@18.2.55)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0): + resolution: {integrity: sha512-BYLs//nY2wioVSih78gOQI6sLIYY3vWkwVqXGYUgkBV+bi49bv+9S0m+hZ2cwiRaxfMYtKs0KvhAQ8weiYwDrg==} + peerDependencies: + react: ^18.2.0 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-native: + optional: true + dependencies: + '@metamask/onboarding': 1.0.1 + '@metamask/post-message-stream': 6.2.0 + '@metamask/providers': 10.2.1 + '@metamask/sdk-communication-layer': 0.14.3(encoding@0.1.13) + '@metamask/sdk-install-modal-web': 0.14.1(@types/react@18.2.55)(react-native@0.73.4) + '@react-native-async-storage/async-storage': 1.21.0(react-native@0.73.4) + '@types/dom-screen-wake-lock': 1.0.3 + bowser: 2.11.0 + cross-fetch: 4.0.0(encoding@0.1.13) + eciesjs: 0.3.18 + eth-rpc-errors: 4.0.3 + eventemitter2: 6.4.9 + extension-port-stream: 2.1.1 + i18next: 22.5.1 + i18next-browser-languagedetector: 7.2.0 + obj-multiplex: 1.0.0 + pump: 3.0.0 + qrcode-terminal-nooctal: 0.12.1 + react: 18.2.0 + react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0) + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(encoding@0.1.13)(react@18.2.0) + react-native-webview: 11.26.1(react-native@0.73.4)(react@18.2.0) + readable-stream: 2.3.8 + rollup-plugin-visualizer: 5.12.0(rollup@4.11.0) + socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3) + util: 0.12.5 + uuid: 8.3.2 + transitivePeerDependencies: + - '@types/react' + - bufferutil + - encoding + - react-dom + - rollup + - supports-color + - utf-8-validate + dev: false + + /@metamask/utils@5.0.2: + resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} + engines: {node: '>=14.0.0'} + dependencies: + '@ethereumjs/tx': 4.2.0 + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@5.5.0) + semver: 7.6.0 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/utils@8.3.0: + resolution: {integrity: sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==} + engines: {node: '>=16.0.0'} + dependencies: + '@ethereumjs/tx': 4.2.0 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@5.5.0) + pony-cause: 2.1.10 + semver: 7.6.0 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@motionone/animation@10.17.0: + resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} + dependencies: + '@motionone/easing': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/dom@10.12.0: + resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} + dependencies: + '@motionone/animation': 10.17.0 + '@motionone/generators': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@motionone/dom@10.17.0: + resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} + dependencies: + '@motionone/animation': 10.17.0 + '@motionone/generators': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@motionone/easing@10.17.0: + resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} + dependencies: + '@motionone/utils': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/generators@10.17.0: + resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} + dependencies: + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/svelte@10.16.4: + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + dependencies: + '@motionone/dom': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/types@10.17.0: + resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} + dev: false + + /@motionone/utils@10.17.0: + resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} + dependencies: + '@motionone/types': 10.17.0 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@motionone/vue@10.16.4: + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + dependencies: + '@motionone/dom': 10.17.0 + tslib: 2.6.2 + dev: false + + /@next/env@14.1.0: + resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} + + /@next/eslint-plugin-next@14.1.0: + resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} + dependencies: + glob: 10.3.10 + dev: true + + /@next/mdx@14.1.0(@mdx-js/loader@3.0.0)(@mdx-js/react@3.0.0): + resolution: {integrity: sha512-YLYsViq91+H8+3oCtK1iuMWdeN14K70Hy6/tYScY+nfo5bQ84A/A+vA6UdNC9MkbWQ/373hQubx2p4JvUjlb2Q==} + peerDependencies: + '@mdx-js/loader': '>=0.15.0' + '@mdx-js/react': '>=0.15.0' + peerDependenciesMeta: + '@mdx-js/loader': + optional: true + '@mdx-js/react': + optional: true + dependencies: + '@mdx-js/loader': 3.0.0(webpack@5.90.1) + '@mdx-js/react': 3.0.0(@types/react@18.2.55)(react@18.2.0) + source-map: 0.7.4 + dev: false + + /@next/swc-darwin-arm64@14.1.0: + resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@next/swc-darwin-x64@14.1.0: + resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@next/swc-linux-arm64-gnu@14.1.0: + resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-arm64-musl@14.1.0: + resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-x64-gnu@14.1.0: + resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-x64-musl@14.1.0: + resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-win32-arm64-msvc@14.1.0: + resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@next/swc-win32-ia32-msvc@14.1.0: + resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@next/swc-win32-x64-msvc@14.1.0: + resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + dependencies: + '@noble/hashes': 1.3.2 + dev: false + + /@noble/curves@1.3.0: + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + dependencies: + '@noble/hashes': 1.3.3 + dev: false + + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: false + + /@noble/hashes@1.3.3: + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + /@parcel/watcher-android-arm64@2.4.0: + resolution: {integrity: sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-darwin-arm64@2.4.0: + resolution: {integrity: sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-darwin-x64@2.4.0: + resolution: {integrity: sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-freebsd-x64@2.4.0: + resolution: {integrity: sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm-glibc@2.4.0: + resolution: {integrity: sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm64-glibc@2.4.0: + resolution: {integrity: sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm64-musl@2.4.0: + resolution: {integrity: sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-x64-glibc@2.4.0: + resolution: {integrity: sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-x64-musl@2.4.0: + resolution: {integrity: sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-wasm@2.4.0: + resolution: {integrity: sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA==} + engines: {node: '>= 10.0.0'} + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.5 + napi-wasm: 1.1.0 + dev: false + bundledDependencies: + - napi-wasm + + /@parcel/watcher-win32-arm64@2.4.0: + resolution: {integrity: sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-win32-ia32@2.4.0: + resolution: {integrity: sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-win32-x64@2.4.0: + resolution: {integrity: sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher@2.4.0: + resolution: {integrity: sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==} + engines: {node: '>= 10.0.0'} + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.5 + node-addon-api: 7.1.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.0 + '@parcel/watcher-darwin-arm64': 2.4.0 + '@parcel/watcher-darwin-x64': 2.4.0 + '@parcel/watcher-freebsd-x64': 2.4.0 + '@parcel/watcher-linux-arm-glibc': 2.4.0 + '@parcel/watcher-linux-arm64-glibc': 2.4.0 + '@parcel/watcher-linux-arm64-musl': 2.4.0 + '@parcel/watcher-linux-x64-glibc': 2.4.0 + '@parcel/watcher-linux-x64-musl': 2.4.0 + '@parcel/watcher-win32-arm64': 2.4.0 + '@parcel/watcher-win32-ia32': 2.4.0 + '@parcel/watcher-win32-x64': 2.4.0 + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + optional: true + + /@react-native-async-storage/async-storage@1.21.0(react-native@0.73.4): + resolution: {integrity: sha512-JL0w36KuFHFCvnbOXRekqVAUplmOyT/OuCQkogo6X98MtpSaJOKEAeZnYO8JB0U/RIEixZaGI5px73YbRm/oag==} + peerDependencies: + react-native: ^0.0.0-0 || >=0.60 <1.0 + dependencies: + merge-options: 3.0.4 + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(encoding@0.1.13)(react@18.2.0) + dev: false + + /@react-native-community/cli-clean@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A==} + dependencies: + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + chalk: 4.1.2 + execa: 5.1.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-config@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ==} + dependencies: + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + chalk: 4.1.2 + cosmiconfig: 5.2.1 + deepmerge: 4.3.1 + glob: 7.2.3 + joi: 17.12.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-debugger-ui@12.3.2: + resolution: {integrity: sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q==} + dependencies: + serve-static: 1.15.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@react-native-community/cli-doctor@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg==} + dependencies: + '@react-native-community/cli-config': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + chalk: 4.1.2 + command-exists: 1.2.9 + deepmerge: 4.3.1 + envinfo: 7.11.1 + execa: 5.1.1 + hermes-profile-transformer: 0.0.6 + ip: 1.1.8 + node-stream-zip: 1.15.0 + ora: 5.4.1 + semver: 7.6.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + yaml: 2.3.4 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-hermes@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA==} + dependencies: + '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + chalk: 4.1.2 + hermes-profile-transformer: 0.0.6 + ip: 1.1.8 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-platform-android@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg==} + dependencies: + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + chalk: 4.1.2 + execa: 5.1.1 + fast-xml-parser: 4.3.4 + glob: 7.2.3 + logkitty: 0.7.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-platform-ios@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg==} + dependencies: + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + chalk: 4.1.2 + execa: 5.1.1 + fast-xml-parser: 4.3.4 + glob: 7.2.3 + ora: 5.4.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-plugin-metro@12.3.2: + resolution: {integrity: sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g==} + dev: false + + /@react-native-community/cli-server-api@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q==} + dependencies: + '@react-native-community/cli-debugger-ui': 12.3.2 + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + compression: 1.7.4 + connect: 3.7.0 + errorhandler: 1.5.1 + nocache: 3.0.4 + pretty-format: 26.6.2 + serve-static: 1.15.0 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native-community/cli-tools@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ==} + dependencies: + appdirsjs: 1.2.7 + chalk: 4.1.2 + find-up: 5.0.0 + mime: 2.6.0 + node-fetch: 2.7.0(encoding@0.1.13) + open: 6.4.0 + ora: 5.4.1 + semver: 7.6.0 + shell-quote: 1.8.1 + sudo-prompt: 9.2.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-types@12.3.2: + resolution: {integrity: sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog==} + dependencies: + joi: 17.12.1 + dev: false + + /@react-native-community/cli@12.3.2(encoding@0.1.13): + resolution: {integrity: sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ==} + engines: {node: '>=18'} + hasBin: true + dependencies: + '@react-native-community/cli-clean': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-config': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-debugger-ui': 12.3.2 + '@react-native-community/cli-doctor': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-hermes': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-plugin-metro': 12.3.2 + '@react-native-community/cli-server-api': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-types': 12.3.2 + chalk: 4.1.2 + commander: 9.5.0 + deepmerge: 4.3.1 + execa: 5.1.1 + find-up: 4.1.0 + fs-extra: 8.1.0 + graceful-fs: 4.2.11 + prompts: 2.4.2 + semver: 7.6.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native/assets-registry@0.73.1: + resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} + engines: {node: '>=18'} + dev: false + + /@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.23.9): + resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} + engines: {node: '>=18'} + dependencies: + '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9) + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + dev: false + + /@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9): + resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.23.9 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) + '@babel/template': 7.23.9 + '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.23.9) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.23.9) + react-refresh: 0.14.0 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + dev: false + + /@react-native/codegen@0.73.3(@babel/preset-env@7.23.9): + resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/parser': 7.23.9 + '@babel/preset-env': 7.23.9(@babel/core@7.23.9) + flow-parser: 0.206.0 + glob: 7.2.3 + invariant: 2.2.4 + jscodeshift: 0.14.0(@babel/preset-env@7.23.9) + mkdirp: 0.5.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@react-native/community-cli-plugin@0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(encoding@0.1.13): + resolution: {integrity: sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ==} + engines: {node: '>=18'} + dependencies: + '@react-native-community/cli-server-api': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native/dev-middleware': 0.73.7(encoding@0.1.13) + '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9) + chalk: 4.1.2 + execa: 5.1.1 + metro: 0.80.5(encoding@0.1.13) + metro-config: 0.80.5(encoding@0.1.13) + metro-core: 0.80.5 + node-fetch: 2.7.0(encoding@0.1.13) + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native/debugger-frontend@0.73.3: + resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==} + engines: {node: '>=18'} + dev: false + + /@react-native/dev-middleware@0.73.7(encoding@0.1.13): + resolution: {integrity: sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==} + engines: {node: '>=18'} + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.73.3 + chrome-launcher: 0.15.2 + chromium-edge-launcher: 1.0.0 + connect: 3.7.0 + debug: 2.6.9 + node-fetch: 2.7.0(encoding@0.1.13) + open: 7.4.2 + serve-static: 1.15.0 + temp-dir: 2.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@react-native/gradle-plugin@0.73.4: + resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==} + engines: {node: '>=18'} + dev: false + + /@react-native/js-polyfills@0.73.1: + resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} + engines: {node: '>=18'} + dev: false + + /@react-native/metro-babel-transformer@0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9): + resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.23.9 + '@react-native/babel-preset': 0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9) + hermes-parser: 0.15.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + dev: false + + /@react-native/normalize-colors@0.73.2: + resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} + dev: false + + /@react-native/virtualized-lists@0.73.4(react-native@0.73.4): + resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} + engines: {node: '>=18'} + peerDependencies: + react-native: '*' + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(encoding@0.1.13)(react@18.2.0) + dev: false + + /@rollup/plugin-commonjs@25.0.7(rollup@4.11.0): + resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.30.7 + rollup: 4.11.0 + dev: false + + /@rollup/plugin-json@6.1.0(rollup@4.11.0): + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.11.0) + rollup: 4.11.0 + dev: false + + /@rollup/pluginutils@5.1.0(rollup@4.11.0): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 4.11.0 + dev: false + + /@rollup/rollup-android-arm-eabi@4.11.0: + resolution: {integrity: sha512-BV+u2QSfK3i1o6FucqJh5IK9cjAU6icjFFhvknzFgu472jzl0bBojfDAkJLBEsHFMo+YZg6rthBvBBt8z12IBQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-android-arm64@4.11.0: + resolution: {integrity: sha512-0ij3iw7sT5jbcdXofWO2NqDNjSVVsf6itcAkV2I6Xsq4+6wjW1A8rViVB67TfBEan7PV2kbLzT8rhOVWLI2YXw==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-darwin-arm64@4.11.0: + resolution: {integrity: sha512-yPLs6RbbBMupArf6qv1UDk6dzZvlH66z6NLYEwqTU0VHtss1wkI4UYeeMS7TVj5QRVvaNAWYKP0TD/MOeZ76Zg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-darwin-x64@4.11.0: + resolution: {integrity: sha512-OvqIgwaGAwnASzXaZEeoJY3RltOFg+WUbdkdfoluh2iqatd090UeOG3A/h0wNZmE93dDew9tAtXgm3/+U/B6bw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.11.0: + resolution: {integrity: sha512-X17s4hZK3QbRmdAuLd2EE+qwwxL8JxyVupEqAkxKPa/IgX49ZO+vf0ka69gIKsaYeo6c1CuwY3k8trfDtZ9dFg==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.11.0: + resolution: {integrity: sha512-673Lu9EJwxVB9NfYeA4AdNu0FOHz7g9t6N1DmT7bZPn1u6bTF+oZjj+fuxUcrfxWXE0r2jxl5QYMa9cUOj9NFg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm64-musl@4.11.0: + resolution: {integrity: sha512-yFW2msTAQNpPJaMmh2NpRalr1KXI7ZUjlN6dY/FhWlOclMrZezm5GIhy3cP4Ts2rIAC+IPLAjNibjp1BsxCVGg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.11.0: + resolution: {integrity: sha512-kKT9XIuhbvYgiA3cPAGntvrBgzhWkGpBMzuk1V12Xuoqg7CI41chye4HU0vLJnGf9MiZzfNh4I7StPeOzOWJfA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-x64-gnu@4.11.0: + resolution: {integrity: sha512-6q4ESWlyTO+erp1PSCmASac+ixaDv11dBk1fqyIuvIUc/CmRAX2Zk+2qK1FGo5q7kyDcjHCFVwgGFCGIZGVwCA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-x64-musl@4.11.0: + resolution: {integrity: sha512-vIAQUmXeMLmaDN78HSE4Kh6xqof2e3TJUKr+LPqXWU4NYNON0MDN9h2+t4KHrPAQNmU3w1GxBQ/n01PaWFwa5w==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.11.0: + resolution: {integrity: sha512-LVXo9dDTGPr0nezMdqa1hK4JeoMZ02nstUxGYY/sMIDtTYlli1ZxTXBYAz3vzuuvKO4X6NBETciIh7N9+abT1g==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.11.0: + resolution: {integrity: sha512-xZVt6K70Gr3I7nUhug2dN6VRR1ibot3rXqXS3wo+8JP64t7djc3lBFyqO4GiVrhNaAIhUCJtwQ/20dr0h0thmQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-x64-msvc@4.11.0: + resolution: {integrity: sha512-f3I7h9oTg79UitEco9/2bzwdciYkWr8pITs3meSDSlr1TdvQ7IxkQaaYN2YqZXX5uZhiYL+VuYDmHwNzhx+HOg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@rushstack/eslint-patch@1.7.2: + resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} + dev: true + + /@safe-global/safe-apps-provider@0.18.1(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} + dependencies: + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.3.3)(zod@3.22.4) + events: 3.3.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /@safe-global/safe-apps-sdk@8.1.0(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} + dependencies: + '@safe-global/safe-gateway-typescript-sdk': 3.15.0 + viem: 1.21.4(typescript@5.3.3)(zod@3.22.4) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /@safe-global/safe-gateway-typescript-sdk@3.15.0: + resolution: {integrity: sha512-zAzhPgUwzdp89ZrZwCAOImUyAQMQE0LQKcK4vLO5eMbfAcNOxz5g4eVdBRBRa+kVXxjyW5wii58ZlGaYUVBa7g==} + engines: {node: '>=16'} + dev: false + + /@scure/base@1.1.5: + resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + dev: false + + /@scure/bip32@1.3.2: + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + dependencies: + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.5 + dev: false + + /@scure/bip32@1.3.3: + resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + dev: false + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.5 + dev: false + + /@scure/bip39@1.2.2: + resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + dependencies: + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + dev: false + + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + dev: false + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: false + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: false + + /@sindresorhus/slugify@2.2.1: + resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==} + engines: {node: '>=12'} + dependencies: + '@sindresorhus/transliterate': 1.6.0 + escape-string-regexp: 5.0.0 + dev: false + + /@sindresorhus/transliterate@1.6.0: + resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} + engines: {node: '>=12'} + dependencies: + escape-string-regexp: 5.0.0 + dev: false + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: false + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: false + + /@socket.io/component-emitter@3.1.0: + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + dev: false + + /@spruceid/siwe-parser@2.0.2: + resolution: {integrity: sha512-9WuA0ios2537cWYu39MMeH0O2KdrMKgKlOBUTWRTXQjCYu5B+mHCA0JkCbFaJ/0EjxoVIcYCXIW/DoPEpw+PqA==} + dependencies: + '@noble/hashes': 1.3.3 + apg-js: 4.3.0 + uri-js: 4.4.1 + valid-url: 1.0.9 + dev: false + + /@stablelib/aead@1.0.1: + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + dev: false + + /@stablelib/binary@1.0.1: + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + dependencies: + '@stablelib/int': 1.0.1 + dev: false + + /@stablelib/bytes@1.0.1: + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + dev: false + + /@stablelib/chacha20poly1305@1.0.1: + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + dependencies: + '@stablelib/aead': 1.0.1 + '@stablelib/binary': 1.0.1 + '@stablelib/chacha': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/poly1305': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/chacha@1.0.1: + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/constant-time@1.0.1: + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + dev: false + + /@stablelib/ed25519@1.0.3: + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + dependencies: + '@stablelib/random': 1.0.2 + '@stablelib/sha512': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/hash@1.0.1: + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + dev: false + + /@stablelib/hkdf@1.0.1: + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + dependencies: + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/hmac@1.0.1: + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/int@1.0.1: + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + dev: false + + /@stablelib/keyagreement@1.0.1: + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + dependencies: + '@stablelib/bytes': 1.0.1 + dev: false + + /@stablelib/poly1305@1.0.1: + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/random@1.0.2: + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/sha256@1.0.1: + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/sha512@1.0.1: + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/wipe@1.0.1: + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + dev: false + + /@stablelib/x25519@1.0.3: + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + dependencies: + '@stablelib/keyagreement': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + dev: false + + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + dependencies: + tslib: 2.6.2 + + /@tailwindcss/typography@0.5.10(tailwindcss@3.4.1): + resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.1 + dev: false + + /@tanstack/query-core@5.18.1: + resolution: {integrity: sha512-fYhrG7bHgSNbnkIJF2R4VUXb4lF7EBiQjKkDc5wOlB7usdQOIN4LxxHpDxyE3qjqIst1WBGvDtL48T0sHJGKCw==} + dev: false + + /@tanstack/react-query@5.18.1(react@18.2.0): + resolution: {integrity: sha512-PdI07BbsahZ+04PxSuDQsQvBWe008eWFk/YYWzt8fvzt2sALUM0TpAJa/DFpqa7+SSo7j1EQR6Jx6znXNHyaXw==} + peerDependencies: + react: ^18.0.0 + dependencies: + '@tanstack/query-core': 5.18.1 + react: 18.2.0 + dev: false + + /@tanstack/react-virtual@3.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tiqKW/e2MJVCr7/pRUXulpkyxllaOclkHNfhKTo4pmHjJIqnhMfwIjc1Q1R0Un3PI3kQywywu/791c8z9u0qeA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@tanstack/virtual-core': 3.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@tanstack/virtual-core@3.0.0: + resolution: {integrity: sha512-SYXOBTjJb05rXa2vl55TTwO40A6wKu0R5i1qQwhJYNDIqaIGF7D0HsLw+pJAyi2OvntlEIVusx3xtbbgSUi6zg==} + dev: false + + /@types/acorn@4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + requiresBuild: true + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/chrome@0.0.136: + resolution: {integrity: sha512-XDEiRhLkMd+SB7Iw3ZUIj/fov3wLd4HyTdLltVszkgl1dBfc3Rb7oPMVZ2Mz2TLqnF7Ow+StbR8E7r9lqpb4DA==} + dependencies: + '@types/filesystem': 0.0.35 + '@types/har-format': 1.2.15 + dev: false + + /@types/d3-scale-chromatic@3.0.3: + resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==} + dev: false + + /@types/d3-scale@4.0.8: + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} + dependencies: + '@types/d3-time': 3.0.3 + dev: false + + /@types/d3-time@3.0.3: + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + dev: false + + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + dev: false + + /@types/dom-screen-wake-lock@1.0.3: + resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} + dev: false + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.2 + '@types/estree': 1.0.5 + dev: false + + /@types/eslint@8.56.2: + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: false + + /@types/estree-jsx@1.0.4: + resolution: {integrity: sha512-5idy3hvI9lAMqsyilBM+N+boaCf1MgoefbDxN6KEO5aK17TOHwFAYT9sjxzeKAiIWRUBgLxmZ9mPcnzZXtTcRQ==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: false + + /@types/filesystem@0.0.35: + resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==} + dependencies: + '@types/filewriter': 0.0.33 + dev: false + + /@types/filewriter@0.0.33: + resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} + dev: false + + /@types/har-format@1.2.15: + resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} + dev: false + + /@types/hast@2.3.10: + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + dev: false + optional: true + + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: false + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: false + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: false + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + dev: false + + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /@types/mdx@2.0.11: + resolution: {integrity: sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==} + + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + requiresBuild: true + dev: false + + /@types/node@20.11.17: + resolution: {integrity: sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==} + dependencies: + undici-types: 5.26.5 + + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true + + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + dev: false + + /@types/prop-types@15.7.11: + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + + /@types/react-dom@18.2.19: + resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==} + dependencies: + '@types/react': 18.2.55 + dev: true + + /@types/react-modal@3.16.3: + resolution: {integrity: sha512-xXuGavyEGaFQDgBv4UVm8/ZsG+qxeQ7f77yNrW3n+1J6XAstUy5rYHeIHPh1KzsGc6IkCIdu6lQ2xWzu1jBTLg==} + dependencies: + '@types/react': 18.2.55 + dev: false + + /@types/react@18.2.55: + resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + + /@types/scheduler@0.16.8: + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + + /@types/secp256k1@4.0.6: + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + dependencies: + '@types/node': 20.11.17 + dev: false + + /@types/seedrandom@3.0.8: + resolution: {integrity: sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ==} + dev: true + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + dev: true + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: false + + /@types/trusted-types@2.0.7: + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + dev: false + + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: false + + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + dev: false + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: false + + /@types/yargs@15.0.19: + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: false + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: false + + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + requiresBuild: true + dependencies: + '@types/node': 20.11.17 + dev: false + optional: true + + /@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.0 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + eslint: 8.56.0 + eslint-scope: 5.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + /@wagmi/connectors@4.1.13(@types/react@18.2.55)(@wagmi/core@2.6.4)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4): + resolution: {integrity: sha512-icllYbAHyXBChZK1FdVobCdZFSJQO5NQWAxv5C8P/qJrXdQPeDIQtmdcschB6h0cqfU9zjSSOkmEBZBAcOT2TQ==} + peerDependencies: + '@wagmi/core': 2.6.4 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@coinbase/wallet-sdk': 3.9.1 + '@metamask/sdk': 0.14.3(@types/react@18.2.55)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0) + '@safe-global/safe-apps-provider': 0.18.1(typescript@5.3.3)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.3.3)(zod@3.22.4) + '@wagmi/core': 2.6.4(@types/react@18.2.55)(react@18.2.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + '@walletconnect/ethereum-provider': 2.11.1(@types/react@18.2.55)(encoding@0.1.13)(react@18.2.0) + '@walletconnect/modal': 2.6.2(@types/react@18.2.55)(react@18.2.0) + typescript: 5.3.3 + viem: 2.7.8(typescript@5.3.3)(zod@3.22.4) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - react + - react-dom + - react-native + - rollup + - supports-color + - utf-8-validate + - zod + dev: false + + /@wagmi/connectors@4.1.14(@types/react@18.2.55)(@wagmi/core@2.6.4)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4): + resolution: {integrity: sha512-e8I89FsNBtzhIilU3nqmgMR9xvSgCfmkWLz9iCKBTqyitbK5EJU7WTEtjjYFm1v2J//JeAwaA2XEKtG9BLR9jQ==} + peerDependencies: + '@wagmi/core': 2.6.5 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@coinbase/wallet-sdk': 3.9.1 + '@metamask/sdk': 0.14.3(@types/react@18.2.55)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0) + '@safe-global/safe-apps-provider': 0.18.1(typescript@5.3.3)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.3.3)(zod@3.22.4) + '@wagmi/core': 2.6.4(@types/react@18.2.55)(react@18.2.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + '@walletconnect/ethereum-provider': 2.11.1(@types/react@18.2.55)(encoding@0.1.13)(react@18.2.0) + '@walletconnect/modal': 2.6.2(@types/react@18.2.55)(react@18.2.0) + typescript: 5.3.3 + viem: 2.7.8(typescript@5.3.3)(zod@3.22.4) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - react + - react-dom + - react-native + - rollup + - supports-color + - utf-8-validate + - zod + dev: false + + /@wagmi/core@2.6.4(@types/react@18.2.55)(react@18.2.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4): + resolution: {integrity: sha512-+p2vbztAaAOehwr8lh/oS3mzsJBByJssRqIYTpexC75O68HWeHgSixGLJOUFrVUwfn++/vuU5nj0Ye5PnJ3m6g==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + typescript: + optional: true + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.5(typescript@5.3.3)(zod@3.22.4) + typescript: 5.3.3 + viem: 2.7.8(typescript@5.3.3)(zod@3.22.4) + zustand: 4.4.1(@types/react@18.2.55)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - utf-8-validate + - zod + dev: false + + /@walletconnect/core@2.11.1(encoding@0.1.13): + resolution: {integrity: sha512-T57Vd7YdbHPsy3tthBuwrhaZNafN0+PqjISFRNeJy/bsKdXxpJg2hGSARuOTpCO7V6VcaatqlaSMuG3DrnG5rA==} + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.0.1 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.1 + '@walletconnect/utils': 2.11.1 + events: 3.3.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + lodash.isequal: 4.5.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@walletconnect/environment@1.0.1: + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/ethereum-provider@2.11.1(@types/react@18.2.55)(encoding@0.1.13)(react@18.2.0): + resolution: {integrity: sha512-UfQH0ho24aa2M1xYmanbJv2ggQPebKmQytp2j20QEvURJ2R0v7YKWZ+0PfwOs6o6cuGw6gGxy/0WQXQRZSAsfg==} + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/modal': 2.6.2(@types/react@18.2.55)(react@18.2.0) + '@walletconnect/sign-client': 2.11.1(encoding@0.1.13) + '@walletconnect/types': 2.11.1 + '@walletconnect/universal-provider': 2.11.1(encoding@0.1.13) + '@walletconnect/utils': 2.11.1 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - react + - supports-color + - utf-8-validate + dev: false + + /@walletconnect/events@1.0.1: + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + dev: false + + /@walletconnect/heartbeat@1.2.1: + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + dev: false + + /@walletconnect/jsonrpc-http-connection@1.0.7(encoding@0.1.13): + resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.1.8(encoding@0.1.13) + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + dev: false + + /@walletconnect/jsonrpc-provider@1.0.13: + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + tslib: 1.14.1 + dev: false + + /@walletconnect/jsonrpc-types@1.0.3: + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + dev: false + + /@walletconnect/jsonrpc-utils@1.0.8: + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + dependencies: + '@walletconnect/environment': 1.0.1 + '@walletconnect/jsonrpc-types': 1.0.3 + tslib: 1.14.1 + dev: false + + /@walletconnect/jsonrpc-ws-connection@1.0.14: + resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@walletconnect/keyvaluestorage@1.1.1: + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + dependencies: + '@walletconnect/safe-json': 1.0.2 + idb-keyval: 6.2.1 + unstorage: 1.10.1(idb-keyval@6.2.1) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + dev: false + + /@walletconnect/logger@2.0.1: + resolution: {integrity: sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==} + dependencies: + pino: 7.11.0 + tslib: 1.14.1 + dev: false + + /@walletconnect/modal-core@2.6.2(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + dependencies: + valtio: 1.11.2(@types/react@18.2.55)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + dev: false + + /@walletconnect/modal-ui@2.6.2(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + dependencies: + '@walletconnect/modal-core': 2.6.2(@types/react@18.2.55)(react@18.2.0) + lit: 2.8.0 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@types/react' + - react + dev: false + + /@walletconnect/modal@2.6.2(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + dependencies: + '@walletconnect/modal-core': 2.6.2(@types/react@18.2.55)(react@18.2.0) + '@walletconnect/modal-ui': 2.6.2(@types/react@18.2.55)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + dev: false + + /@walletconnect/relay-api@1.0.9: + resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} + dependencies: + '@walletconnect/jsonrpc-types': 1.0.3 + tslib: 1.14.1 + dev: false + + /@walletconnect/relay-auth@1.0.4: + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + dependencies: + '@stablelib/ed25519': 1.0.3 + '@stablelib/random': 1.0.2 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + uint8arrays: 3.1.1 + dev: false + + /@walletconnect/safe-json@1.0.2: + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/sign-client@2.11.1(encoding@0.1.13): + resolution: {integrity: sha512-s3oKSx6/F5X2WmkV1jfJImBFACf9Km5HpTb+n5q+mobJVpUQw/clvoVyIrNNppLhm1V1S/ylHXh0qCrDppDpCA==} + dependencies: + '@walletconnect/core': 2.11.1(encoding@0.1.13) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.0.1 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.1 + '@walletconnect/utils': 2.11.1 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@walletconnect/time@1.0.2: + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/types@2.11.1: + resolution: {integrity: sha512-UbdbX+d6MOK0AXKxt5imV3KvAcLVpZUHylaRDIP5ffwVylM/p4DHnKppil1Qq5N+IGDr3RsUwLGFkKjqsQYRKw==} + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.0.1 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + dev: false + + /@walletconnect/universal-provider@2.11.1(encoding@0.1.13): + resolution: {integrity: sha512-BJvPYByIfbBYF4x8mqDV79ebQX0tD54pp8itsqrHWn0qKZeJyIH8sQ69yY0GnbJrzoFS3ZLULdC0yDxWDeuRGw==} + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.0.1 + '@walletconnect/sign-client': 2.11.1(encoding@0.1.13) + '@walletconnect/types': 2.11.1 + '@walletconnect/utils': 2.11.1 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@walletconnect/utils@2.11.1: + resolution: {integrity: sha512-wRFDHN86dZ05mCET1H3912odIeQa8j7cZKxl1FlWRpV2YsILj9HCYSX6Uq2brwO02Kv2vryke44G1r8XI/LViA==} + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.1 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + dev: false + + /@walletconnect/window-getters@1.0.1: + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/window-metadata@1.0.1: + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + dependencies: + '@walletconnect/window-getters': 1.0.1 + tslib: 1.14.1 + dev: false + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: false + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: false + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: false + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: false + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: false + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: false + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: false + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: false + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: false + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: false + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false + + /@yaireo/relative-time@1.0.4: + resolution: {integrity: sha512-ILW0k/xtOsnnzLZg+3tk+A9HtTOYu4GI4bG1epBxJ/borIZgGDRMD8kVjzitGyKbV0LOsOchIMZdsAaQxRgImA==} + engines: {node: '>=12.0.0'} + dev: false + + /abitype@0.9.8(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: + typescript: 5.3.3 + zod: 3.22.4 + dev: false + + /abitype@1.0.0(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: + typescript: 5.3.3 + zod: 3.22.4 + dev: false + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: false + + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: false + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + /aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + dev: false + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + requiresBuild: true + dependencies: + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + dev: false + + /ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + dependencies: + colorette: 1.4.0 + slice-ansi: 2.1.0 + strip-ansi: 5.2.0 + dev: false + + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: false + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /apg-js@4.3.0: + resolution: {integrity: sha512-8U8MULS+JocCnm11bfrVS4zxtAcE3uOiCAI21SnjDrV9LNhMSGwTGGeko3QfyK1JLWwT7KebFqJMB2puzfdFMQ==} + dev: false + + /appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + dev: false + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: false + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + is-array-buffer: 3.0.4 + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.filter@1.0.3: + resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /array.prototype.findlastindex@1.2.4: + resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.2 + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true + + /ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + dev: false + + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + dev: false + + /astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + requiresBuild: true + dev: false + + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: false + + /async-mutex@0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + dependencies: + tslib: 2.6.2 + dev: false + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: false + + /autoprefixer@10.4.17(postcss@8.4.35): + resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.3 + caniuse-lite: 1.0.30001585 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: false + + /available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} + engines: {node: '>= 0.4'} + + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /babel-core@7.0.0-bridge.0(@babel/core@7.23.9): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + dev: false + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.23.9 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + dev: false + + /babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9): + resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9): + resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + core-js-compat: 3.35.1 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9): + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-styled-components@2.1.4(@babel/core@7.23.9)(styled-components@5.3.11): + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(@babel/core@7.23.9)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@babel/core' + dev: false + + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.23.9): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + dependencies: + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + transitivePeerDependencies: + - '@babel/core' + dev: false + + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + dev: false + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + requiresBuild: true + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false + + /bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: false + + /browserslist@4.22.3: + resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001585 + electron-to-chromium: 1.4.663 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.3) + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: false + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + requiresBuild: true + dev: false + optional: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + requiresBuild: true + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.8.0 + dev: false + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: false + + /call-bind@1.0.6: + resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 + + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + dependencies: + callsites: 2.0.0 + dev: false + + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + dependencies: + caller-callsite: 2.0.0 + dev: false + + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: false + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: false + + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: false + + /caniuse-lite@1.0.30001585: + resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} + + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + requiresBuild: true + dev: false + + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + requiresBuild: true + dev: false + + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + requiresBuild: true + dev: false + + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + requiresBuild: true + dev: false + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + requiresBuild: true + dev: false + optional: true + + /chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + dependencies: + '@types/node': 20.11.17 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + dev: false + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: false + + /chromium-edge-launcher@1.0.0: + resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} + dependencies: + '@types/node': 20.11.17 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: false + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + /citty@0.1.5: + resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} + dependencies: + consola: 3.2.3 + dev: false + + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: false + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: false + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + /clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + dependencies: + execa: 8.0.1 + is-wsl: 3.1.0 + is64bit: 2.0.0 + dev: false + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: false + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: false + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: false + + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + dev: false + + /cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + dev: false + + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: false + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: false + + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false + + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: false + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: false + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: false + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /connectkit@1.7.1(@babel/core@7.23.9)(@tanstack/react-query@5.18.1)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@2.7.8)(wagmi@2.5.6): + resolution: {integrity: sha512-4w4KQADXm6CdbJPH3Q9pUO0YNjXnCQ0+vUpzQvlxDYSpZg48jDmRxcXSg2jgRPlacn32ZMh1RTIuiUsy1iOJiw==} + engines: {node: '>=12.4'} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: 17.x || 18.x + react-dom: 17.x || 18.x + viem: 2.x + wagmi: 2.x + dependencies: + '@tanstack/react-query': 5.18.1(react@18.2.0) + buffer: 6.0.3 + detect-browser: 5.3.0 + framer-motion: 6.5.1(react-dom@18.2.0)(react@18.2.0) + qrcode: 1.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-state: 1.1.5(react-dom@18.2.0)(react@18.2.0) + react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) + resize-observer-polyfill: 1.5.1 + styled-components: 5.3.11(@babel/core@7.23.9)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + viem: 2.7.8(typescript@5.3.3)(zod@3.22.4) + wagmi: 2.5.6(@tanstack/react-query@5.18.1)(@types/react@18.2.55)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + transitivePeerDependencies: + - '@babel/core' + - react-is + dev: false + + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: false + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: false + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + /cookie-es@1.0.0: + resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} + dev: false + + /core-js-compat@3.35.1: + resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} + dependencies: + browserslist: 4.22.3 + dev: false + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + + /cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + dependencies: + layout-base: 1.0.2 + dev: false + + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + dev: false + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: false + + /cross-fetch@3.1.5(encoding@0.1.13): + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + requiresBuild: true + dependencies: + node-fetch: 2.6.7(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + optional: true + + /cross-fetch@3.1.8(encoding@0.1.13): + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /cross-fetch@4.0.0(encoding@0.1.13): + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crossws@0.1.1: + resolution: {integrity: sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ==} + dev: false + + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: false + + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + dev: false + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /cytoscape-cose-bilkent@4.1.0(cytoscape@3.28.1): + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + dependencies: + cose-base: 1.0.3 + cytoscape: 3.28.1 + dev: false + + /cytoscape@3.28.1: + resolution: {integrity: sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==} + engines: {node: '>=0.10'} + dependencies: + heap: 0.2.7 + lodash: 4.17.21 + dev: false + + /d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + dependencies: + internmap: 1.0.1 + dev: false + + /d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false + + /d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + dev: false + + /d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + dev: false + + /d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + dependencies: + delaunator: 5.0.1 + dev: false + + /d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + dev: false + + /d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + dev: false + + /d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + dev: false + + /d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + dev: false + + /d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + dependencies: + d3-dsv: 3.0.1 + dev: false + + /d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + dev: false + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + dev: false + + /d3-geo@3.1.0: + resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + dev: false + + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: false + + /d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + dev: false + + /d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + dev: false + + /d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + dev: false + + /d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + dev: false + + /d3-scale-chromatic@3.0.0: + resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + dev: false + + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + dev: false + + /d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + dev: false + + /d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + dependencies: + d3-path: 1.0.9 + dev: false + + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + dependencies: + d3-time: 3.1.0 + dev: false + + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + dev: false + + /d3-transition@3.0.1(d3-selection@3.0.0): + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + dev: false + + /d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + dev: false + + /d3@7.8.5: + resolution: {integrity: sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.0 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.0.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + dev: false + + /dagre-d3-es@7.0.10: + resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} + dependencies: + d3: 7.8.5 + lodash-es: 4.17.21 + dev: false + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.23.9 + dev: false + + /dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + dev: false + + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: false + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4(supports-color@5.5.0): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 5.5.0 + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: false + + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: false + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: false + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge-ts@5.1.0: + resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} + engines: {node: '>=16.0.0'} + dev: false + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: false + + /define-data-property@1.1.2: + resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: false + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.2 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dev: false + + /delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dependencies: + robust-predicates: 3.0.2 + dev: false + + /denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + dev: false + + /denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + dev: false + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false + + /deprecated-react-native-prop-types@5.0.0: + resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==} + engines: {node: '>=18'} + dependencies: + '@react-native/normalize-colors': 0.73.2 + invariant: 2.2.4 + prop-types: 15.8.1 + dev: false + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + /destr@2.0.2: + resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} + dev: false + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false + + /detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + dev: false + + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: false + + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: false + + /devtools-protocol@0.0.1045489: + resolution: {integrity: sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==} + requiresBuild: true + dev: false + optional: true + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + /diff@5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + requiresBuild: true + dev: false + + /dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + dev: false + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dompurify@3.0.8: + resolution: {integrity: sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==} + dev: false + + /duplexify@4.1.2: + resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + /eciesjs@0.3.18: + resolution: {integrity: sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw==} + dependencies: + '@types/secp256k1': 4.0.6 + futoin-hkdf: 1.5.3 + secp256k1: 5.0.0 + dev: false + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false + + /electron-to-chromium@1.4.663: + resolution: {integrity: sha512-P4B6wnMUV2aLvqmny1RPlAQPUBTY+skNw4WLX0cVxYQVEzmLQ2h7K2Knc69szclEjcRW63Uj06IXQwOG7GbInQ==} + + /elkjs@0.9.1: + resolution: {integrity: sha512-JWKDyqAdltuUcyxaECtYG6H4sqysXSLeoXuGUBfRNESMTkj+w+qdb0jya8Z/WI0jVd03WQtCGhS6FOFtlhD5FQ==} + dev: false + + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + /encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + dev: false + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + dev: false + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: false + + /engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4(supports-color@5.5.0) + engine.io-parser: 5.2.2 + ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + xmlhttprequest-ssl: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /engine.io-parser@5.2.2: + resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} + engines: {node: '>=10.0.0'} + dev: false + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + /ens-tools@0.0.14(@wagmi/core@2.6.4)(ethers@5.7.2)(react@18.2.0)(swr@2.2.4)(wagmi@2.5.6): + resolution: {integrity: sha512-jmRjgAoH8MR+AanT4L9IXEhLB9Ztzue7wFeZOThwheKislb4cbfjUggh6zCbk3ekyKMjB0dMC4m3vHzH3VYNag==} + peerDependencies: + '@wagmi/core': ^0.10.10 + ethers: ^5 + react: ^18.2.0 + swr: ^2.1.5 + wagmi: ^0.12.12 + dependencies: + '@wagmi/core': 2.6.4(@types/react@18.2.55)(react@18.2.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + ethers: 5.7.2 + react: 18.2.0 + swr: 2.2.4(react@18.2.0) + wagmi: 2.5.6(@tanstack/react-query@5.18.1)(@types/react@18.2.55)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + dev: false + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + requiresBuild: true + dev: false + + /envinfo@7.11.1: + resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + dev: false + + /errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + dependencies: + accepts: 1.3.8 + escape-html: 1.0.3 + dev: false + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.1 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.14 + dev: true + + /es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.0 + dev: true + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + dev: false + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: false + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + + /eslint-config-next@14.1.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 14.1.0 + '@rushstack/eslint-patch': 1.7.2 + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) + typescript: 5.3.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-config-prettier@8.10.0(eslint@8.56.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4(supports-color@5.5.0) + enhanced-resolve: 5.15.0 + eslint: 8.56.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + debug: 3.2.7 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.4 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.2 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jest@27.2.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.23.9 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.15 + eslint: 8.56.0 + hasown: 2.0.0 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + dev: true + + /eslint-plugin-prefer-arrow@1.2.3(eslint@8.56.0): + resolution: {integrity: sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==} + peerDependencies: + eslint: '>=2.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@2.8.8): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.56.0 + eslint-config-prettier: 8.10.0(eslint@8.56.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.56.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.3 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.56.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-plugin-simple-import-sort@7.0.0(eslint@8.56.0): + resolution: {integrity: sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==} + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-sonarjs@0.11.0(eslint@8.56.0): + resolution: {integrity: sha512-ei/WuZiL0wP+qx2KrxKyZs3+eDbxiGAhFSm3GKCOOAUkg+G2ny6TSXDB2j67tvyqHefi+eoQsAgGQvz+nEtIBw==} + engines: {node: '>=12'} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0|| ^8.0.0 + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-tailwindcss@3.14.2(tailwindcss@3.4.1): + resolution: {integrity: sha512-fNzdf4poZP2yQC0xC2prQxMuArMSb5mnellLQvwb9HC3NcLzxs+0IVKWIg1BqUqyui0c+bbjMmhWcKUWK67SLQ==} + engines: {node: '>=12.13.0'} + peerDependencies: + tailwindcss: ^3.4.0 + dependencies: + fast-glob: 3.3.2 + postcss: 8.4.35 + tailwindcss: 3.4.1 + dev: true + + /eslint-plugin-unicorn@41.0.1(eslint@8.56.0): + resolution: {integrity: sha512-gF5vo2dIj0YdNMQ/IMegiBkQdQ22GBFFVpdkJP+0og3w7XD4ypea0xQVRv6iofkLVR2w0phAdikcnU01ybd4Ow==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=8.8.0' + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + ci-info: 3.9.0 + clean-regexp: 1.0.0 + eslint: 8.56.0 + eslint-utils: 3.0.0(eslint@8.56.0) + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + safe-regex: 2.1.1 + semver: 7.6.0 + strip-indent: 3.0.0 + dev: true + + /eslint-plugin-unused-imports@2.0.0(eslint@8.56.0): + resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + eslint: 8.56.0 + eslint-rule-composer: 0.3.0 + dev: true + + /eslint-plugin-v3xlabs@1.6.2(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-qs3u31mjJMbQgaNPCxazd7AWqyELBvrfYTwi0UGTjOwRfmR1GeUvNQNLi63QfWSWxJ9XIvh5fb3lYhWONliXsA==} + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint-config-prettier: 8.10.0(eslint@8.56.0) + eslint-plugin-jest: 27.2.1(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-prefer-arrow: 1.2.3(eslint@8.56.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@2.8.8) + eslint-plugin-simple-import-sort: 7.0.0(eslint@8.56.0) + eslint-plugin-sonarjs: 0.11.0(eslint@8.56.0) + eslint-plugin-unicorn: 41.0.1(eslint@8.56.0) + eslint-plugin-unused-imports: 2.0.0(eslint@8.56.0) + prettier: 2.8.8 + transitivePeerDependencies: + - '@typescript-eslint/eslint-plugin' + - eslint + - jest + - supports-color + - typescript + dev: true + + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@8.56.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@5.5.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-util-attach-comments@2.1.1: + resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + requiresBuild: true + dependencies: + '@types/estree': 1.0.5 + dev: false + optional: true + + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + dependencies: + '@types/estree-jsx': 1.0.4 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + dev: false + + /estree-util-is-identifier-name@2.1.0: + resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} + requiresBuild: true + dev: false + optional: true + + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false + + /estree-util-to-js@1.2.0: + resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} + requiresBuild: true + dependencies: + '@types/estree-jsx': 1.0.4 + astring: 1.8.6 + source-map: 0.7.4 + dev: false + optional: true + + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + dependencies: + '@types/estree-jsx': 1.0.4 + astring: 1.8.6 + source-map: 0.7.4 + dev: false + + /estree-util-visit@1.2.1: + resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + dependencies: + '@types/estree-jsx': 1.0.4 + '@types/unist': 2.0.10 + dev: false + + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + dependencies: + '@types/estree-jsx': 1.0.4 + '@types/unist': 3.0.2 + dev: false + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: false + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false + + /eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/eth-json-rpc-provider': 1.0.1 + '@metamask/safe-event-emitter': 3.0.0 + '@metamask/utils': 5.0.2 + json-rpc-random-id: 1.0.1 + pify: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/safe-event-emitter': 3.0.0 + async-mutex: 0.2.6 + eth-query: 2.1.2 + json-rpc-engine: 6.1.0 + pify: 5.0.0 + dev: false + + /eth-query@2.1.2: + resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + dependencies: + json-rpc-random-id: 1.0.1 + xtend: 4.0.2 + dev: false + + /eth-rpc-errors@4.0.3: + resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + dependencies: + fast-safe-stringify: 2.1.1 + dev: false + + /ethereum-cryptography@2.1.3: + resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + '@scure/bip32': 1.3.3 + '@scure/bip39': 1.2.2 + dev: false + + /ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + + /eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + dev: false + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: false + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: false + + /exenv@1.2.2: + resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} + dev: false + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + + /extension-port-stream@2.1.1: + resolution: {integrity: sha512-qknp5o5rj2J9CRKfVB8KJr+uXQlrojNZzdESUPhKYLXf97TPcGf6qWWKmpsNNtUyOdzFhab1ON0jzouNxHHvow==} + engines: {node: '>=12.0.0'} + dependencies: + webextension-polyfill: 0.10.0 + dev: false + + /extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + requiresBuild: true + dependencies: + debug: 4.3.4(supports-color@5.5.0) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /fast-copy@3.0.1: + resolution: {integrity: sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==} + dev: false + + /fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-redact@3.3.0: + resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} + engines: {node: '>=6'} + dev: false + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: false + + /fast-xml-parser@4.3.4: + resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: false + + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + requiresBuild: true + dependencies: + pend: 1.2.0 + dev: false + optional: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: false + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: false + + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: false + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + dev: false + + /flow-parser@0.206.0: + resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} + engines: {node: '>=0.4.0'} + dev: false + + /focus-visible@5.2.0: + resolution: {integrity: sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==} + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: false + + /framer-motion@11.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6x2poQpIWBdbZwLd73w6cKZ1I9IEPIU94C6/Swp1Zt3LJ+sB5bPe1E2wC6EH5hSISXNkMJ4afH7AdwS7MrtkWw==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + dev: false + + /framer-motion@6.5.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} + peerDependencies: + react: '>=16.8 || ^17.0.0 || ^18.0.0' + react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' + dependencies: + '@motionone/dom': 10.12.0 + framesync: 6.0.1 + hey-listen: 1.0.8 + popmotion: 11.0.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + style-value-types: 5.0.0 + tslib: 2.6.2 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + dev: false + + /framesync@6.0.1: + resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} + dependencies: + tslib: 2.6.2 + dev: false + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + requiresBuild: true + dev: false + optional: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /futoin-hkdf@1.5.3: + resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} + engines: {node: '>=8'} + dev: false + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: false + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + + /get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + dev: false + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + pump: 3.0.0 + dev: false + optional: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: false + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: false + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: false + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /graphql-request@6.1.0(encoding@0.1.13)(graphql@16.8.1): + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: 14 - 16 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + cross-fetch: 3.1.8(encoding@0.1.13) + graphql: 16.8.1 + transitivePeerDependencies: + - encoding + dev: false + + /graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + dev: false + + /h3@1.10.1: + resolution: {integrity: sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg==} + dependencies: + cookie-es: 1.0.0 + defu: 6.1.4 + destr: 2.0.2 + iron-webcrypto: 1.0.0 + ohash: 1.1.3 + radix3: 1.1.0 + ufo: 1.4.0 + uncrypto: 0.1.3 + unenv: 1.9.0 + dev: false + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.4 + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /hast-util-from-dom@5.0.0: + resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} + dependencies: + '@types/hast': 3.0.4 + hastscript: 8.0.0 + web-namespaces: 2.0.1 + dev: false + + /hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} + dependencies: + '@types/hast': 3.0.4 + hast-util-from-dom: 5.0.0 + hast-util-from-html: 2.0.1 + unist-util-remove-position: 5.0.0 + dev: false + + /hast-util-from-html@1.0.2: + resolution: {integrity: sha512-LhrTA2gfCbLOGJq2u/asp4kwuG0y6NhWTXiPKP+n0qNukKy7hc10whqqCFfyvIA1Q5U5d0sp9HhNim9gglEH4A==} + requiresBuild: true + dependencies: + '@types/hast': 2.3.10 + hast-util-from-parse5: 7.1.2 + parse5: 7.1.2 + vfile: 5.3.7 + vfile-message: 3.1.4 + dev: false + optional: true + + /hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.1 + parse5: 7.1.2 + vfile: 6.0.1 + vfile-message: 4.0.2 + dev: false + + /hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + requiresBuild: true + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.10 + hastscript: 7.2.0 + property-information: 6.4.1 + vfile: 5.3.7 + vfile-location: 4.1.0 + web-namespaces: 2.0.1 + dev: false + optional: true + + /hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.4.1 + vfile: 6.0.1 + vfile-location: 5.0.2 + web-namespaces: 2.0.1 + dev: false + + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + requiresBuild: true + dependencies: + '@types/hast': 2.3.10 + dev: false + optional: true + + /hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /hast-util-to-estree@2.3.3: + resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} + requiresBuild: true + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.4 + '@types/hast': 2.3.10 + '@types/unist': 2.0.10 + comma-separated-tokens: 2.0.3 + estree-util-attach-comments: 2.1.1 + estree-util-is-identifier-name: 2.1.0 + hast-util-whitespace: 2.0.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdxjs-esm: 1.3.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 4.0.4 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.4 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.5 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /hast-util-to-text@4.0.0: + resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + dev: false + + /hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + requiresBuild: true + dev: false + optional: true + + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + requiresBuild: true + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + dev: false + optional: true + + /hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + dev: false + + /heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + dev: false + + /help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + dev: false + + /hermes-estree@0.15.0: + resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} + dev: false + + /hermes-estree@0.18.2: + resolution: {integrity: sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ==} + dev: false + + /hermes-parser@0.15.0: + resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} + dependencies: + hermes-estree: 0.15.0 + dev: false + + /hermes-parser@0.18.2: + resolution: {integrity: sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==} + dependencies: + hermes-estree: 0.18.2 + dev: false + + /hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} + dependencies: + source-map: 0.7.4 + dev: false + + /hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + dev: false + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + dependencies: + void-elements: 3.1.0 + dev: false + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: false + + /http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: false + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + requiresBuild: true + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: false + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: false + + /i18next-browser-languagedetector@7.2.0: + resolution: {integrity: sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==} + dependencies: + '@babel/runtime': 7.23.9 + dev: false + + /i18next@22.5.1: + resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} + dependencies: + '@babel/runtime': 7.23.9 + dev: false + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + + /idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + dev: false + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + dependencies: + queue: 6.0.2 + dev: false + + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + requiresBuild: true + dev: false + + /inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + dev: false + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.0 + side-channel: 1.0.5 + dev: true + + /internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + dev: false + + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false + + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /ioredis@5.3.2: + resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} + engines: {node: '>=12.22.0'} + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.3.4(supports-color@5.5.0) + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /ip@1.1.8: + resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + dev: false + + /iron-webcrypto@1.0.0: + resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} + dev: false + + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + requiresBuild: true + dev: false + + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + requiresBuild: true + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: false + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + has-tostringtag: 1.0.2 + dev: false + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + get-intrinsic: 1.2.4 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + has-tostringtag: 1.0.2 + dev: true + + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + requiresBuild: true + dev: false + optional: true + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + requiresBuild: true + dev: false + + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + dev: false + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: false + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.6 + dev: true + + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: false + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + requiresBuild: true + dev: false + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: false + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: false + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: false + + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + has-tostringtag: 1.0.2 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.6 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.14 + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: false + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.6 + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.6 + get-intrinsic: 1.2.4 + dev: true + + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: false + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: false + + /is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + dependencies: + is-inside-container: 1.0.0 + dev: false + + /is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + dependencies: + system-architecture: 0.1.0 + dev: false + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: false + + /isomorphic-unfetch@3.1.0(encoding@0.1.13): + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + dev: false + + /isows@1.0.3(ws@8.13.0): + resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.13.0 + dev: false + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.5 + set-function-name: 2.0.1 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: false + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: false + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + jest-util: 29.7.0 + dev: false + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: false + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: false + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.11.17 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.11.17 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + + /joi@17.12.1: + resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + dev: false + + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: false + + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: false + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + dev: false + + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + dev: false + + /jscodeshift@0.14.0(@babel/preset-env@7.23.9): + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/preset-env': 7.23.9(@babel/core@7.23.9) + '@babel/preset-flow': 7.23.3(@babel/core@7.23.9) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/register': 7.23.7(@babel/core@7.23.9) + babel-core: 7.0.0-bridge.0(@babel/core@7.23.9) + chalk: 4.1.2 + flow-parser: 0.206.0 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.21.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: false + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-rpc-engine@6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} + dependencies: + '@metamask/safe-event-emitter': 2.0.0 + eth-rpc-errors: 4.0.3 + dev: false + + /json-rpc-middleware-stream@4.2.3: + resolution: {integrity: sha512-4iFb0yffm5vo3eFKDbQgke9o17XBcLQ2c3sONrXSbcOLzP8LTojqo8hRGVgtJShhm5q4ZDSNq039fAx9o65E1w==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/safe-event-emitter': 3.0.0 + json-rpc-engine: 6.1.0 + readable-stream: 2.3.8 + dev: false + + /json-rpc-random-id@1.0.1: + resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + dev: false + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: false + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.1.7 + dev: true + + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.0 + readable-stream: 3.6.2 + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + dev: false + + /khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + dev: false + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: false + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: false + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + requiresBuild: true + dev: false + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + dev: false + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: false + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + dependencies: + debug: 2.6.9 + marky: 1.2.5 + transitivePeerDependencies: + - supports-color + dev: false + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /listhen@1.6.0: + resolution: {integrity: sha512-z0RcEXVX5oTpY1bO02SKoTU/kmZSrFSngNNzHRM6KICR17PTq7ANush6AE6ztGJwJD4RLpBrVHd9GnV51J7s3w==} + hasBin: true + dependencies: + '@parcel/watcher': 2.4.0 + '@parcel/watcher-wasm': 2.4.0 + citty: 0.1.5 + clipboardy: 4.0.0 + consola: 3.2.3 + crossws: 0.1.1 + defu: 6.1.4 + get-port-please: 3.1.2 + h3: 1.10.1 + http-shutdown: 1.2.2 + jiti: 1.21.0 + mlly: 1.5.0 + node-forge: 1.3.1 + pathe: 1.1.2 + std-env: 3.7.0 + ufo: 1.4.0 + untun: 0.1.3 + uqr: 0.1.2 + dev: false + + /lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 + dev: false + + /lit-element@4.0.4: + resolution: {integrity: sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit/reactive-element': 2.0.4 + lit-html: 3.1.2 + dev: false + + /lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + dependencies: + '@types/trusted-types': 2.0.7 + dev: false + + /lit-html@3.1.2: + resolution: {integrity: sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==} + dependencies: + '@types/trusted-types': 2.0.7 + dev: false + + /lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + dependencies: + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 + dev: false + + /lit@3.1.2: + resolution: {integrity: sha512-VZx5iAyMtX7CV4K8iTLdCkMaYZ7ipjJZ0JcSdJ0zIdGxxyurjIn7yuuSxNBD7QmjvcNJwr0JS4cAdAtsy7gZ6w==} + dependencies: + '@lit/reactive-element': 2.0.4 + lit-element: 4.0.4 + lit-html: 3.1.2 + dev: false + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: false + + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: false + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: false + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + + /lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + dev: false + + /lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + dev: false + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: false + + /logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + dependencies: + ansi-fragments: 0.2.1 + dayjs: 1.11.10 + yargs: 15.4.1 + dev: false + + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: false + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: false + + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + dev: false + + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false + + /marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + dev: false + + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + dependencies: + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + dependencies: + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + dev: false + + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-expression@1.3.2: + resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} + requiresBuild: true + dependencies: + '@types/estree-jsx': 1.0.4 + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + dependencies: + '@types/estree-jsx': 1.0.4 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-jsx@2.1.4: + resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} + requiresBuild: true + dependencies: + '@types/estree-jsx': 1.0.4 + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + ccount: 2.0.1 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 4.0.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /mdast-util-mdx-jsx@3.0.0: + resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + dependencies: + '@types/estree-jsx': 1.0.4 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx@2.0.1: + resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} + requiresBuild: true + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdx-jsx: 2.1.4 + mdast-util-mdxjs-esm: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdxjs-esm@1.3.1: + resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} + requiresBuild: true + dependencies: + '@types/estree-jsx': 1.0.4 + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + dependencies: + '@types/estree-jsx': 1.0.4 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + requiresBuild: true + dependencies: + '@types/mdast': 3.0.15 + unist-util-is: 5.2.1 + dev: false + optional: true + + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 + dev: false + + /mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + dev: false + + /mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + requiresBuild: true + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + dev: false + optional: true + + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: false + + /mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + requiresBuild: true + dependencies: + '@types/mdast': 3.0.15 + dev: false + + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + dependencies: + '@types/mdast': 4.0.3 + dev: false + + /mdx-annotations@0.1.4: + resolution: {integrity: sha512-SUYBUXP1qbgr0nRFFnUBg4HxxTbYyl5rE38fLTaIm0naPK+EhmKa0wRlUdgTMlMBj5gdCMwP1n7+L47JIHHWUQ==} + dependencies: + acorn: 8.11.3 + estree-util-visit: 1.2.1 + unist-util-visit: 4.1.2 + dev: false + + /mdx-mermaid@2.0.0(encoding@0.1.13)(mermaid@10.8.0)(react@18.2.0)(unist-util-visit@5.0.0): + resolution: {integrity: sha512-vmkh4yg/EgkhAWxdFsyol5Tgk9aTnM16njgGIYk3R3SdbejPt8YV+HRYycAOstR1TJefMNAmjAyqkRjukLP7qg==} + peerDependencies: + mermaid: '>=8.11.0' + react: ^16.8.4 || ^17.0.0 || ^18.0.0 + unist-util-visit: ^4.1.0 + dependencies: + mermaid: 10.8.0 + react: 18.2.0 + unist-util-visit: 5.0.0 + optionalDependencies: + estree-util-to-js: 1.2.0 + estree-util-visit: 1.2.1 + hast-util-from-html: 1.0.2 + hast-util-to-estree: 2.3.3 + mdast-util-from-markdown: 1.3.1 + mdast-util-mdx: 2.0.1 + micromark-extension-mdxjs: 1.0.1 + puppeteer: 18.2.1(encoding@0.1.13) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + dev: false + + /merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + dependencies: + is-plain-obj: 2.1.0 + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: false + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /mermaid-isomorphic@2.1.1: + resolution: {integrity: sha512-iShQaYYfGYakKs6fbwVjaTAaTVYm02aIvq8QZJFZMEJ18it2YMhW7QF23jLc1SgXHfVLbeWVoQ27jar2X8KP9g==} + dependencies: + '@fortawesome/fontawesome-free': 6.5.1 + mermaid: 10.8.0 + playwright-core: 1.41.2 + transitivePeerDependencies: + - supports-color + dev: false + + /mermaid@10.8.0: + resolution: {integrity: sha512-9CzfSreRjdDJxX796+jW4zjEq0DVw5xVF0nWsqff8OTbrt+ml0TZ5PyYUjjUZJa2NYxYJZZXewEquxGiM8qZEA==} + dependencies: + '@braintree/sanitize-url': 6.0.4 + '@types/d3-scale': 4.0.8 + '@types/d3-scale-chromatic': 3.0.3 + cytoscape: 3.28.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.28.1) + d3: 7.8.5 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.10 + dayjs: 1.11.10 + dompurify: 3.0.8 + elkjs: 0.9.1 + khroma: 2.1.0 + lodash-es: 4.17.21 + mdast-util-from-markdown: 1.3.1 + non-layered-tidy-tree-layout: 2.0.2 + stylis: 4.3.1 + ts-dedent: 2.2.0 + uuid: 9.0.1 + web-worker: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-babel-transformer@0.80.5: + resolution: {integrity: sha512-sxH6hcWCorhTbk4kaShCWsadzu99WBL4Nvq4m/sDTbp32//iGuxtAnUK+ZV+6IEygr2u9Z0/4XoZ8Sbcl71MpA==} + engines: {node: '>=18'} + dependencies: + '@babel/core': 7.23.9 + hermes-parser: 0.18.2 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-cache-key@0.80.5: + resolution: {integrity: sha512-fr3QLZUarsB3tRbVcmr34kCBsTHk0Sh9JXGvBY/w3b2lbre+Lq5gtgLyFElHPecGF7o4z1eK9r3ubxtScHWcbA==} + engines: {node: '>=18'} + dev: false + + /metro-cache@0.80.5: + resolution: {integrity: sha512-2u+dQ4PZwmC7eZo9uMBNhQQMig9f+w4QWBZwXCdVy/RYOHM0eObgGdMEOwODo73uxie82T9lWzxr3aZOZ+Nqtw==} + engines: {node: '>=18'} + dependencies: + metro-core: 0.80.5 + rimraf: 3.0.2 + dev: false + + /metro-config@0.80.5(encoding@0.1.13): + resolution: {integrity: sha512-elqo/lwvF+VjZ1OPyvmW/9hSiGlmcqu+rQvDKw5F5WMX48ZC+ySTD1WcaD7e97pkgAlJHVYqZ98FCjRAYOAFRQ==} + engines: {node: '>=18'} + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + jest-validate: 29.7.0 + metro: 0.80.5(encoding@0.1.13) + metro-cache: 0.80.5 + metro-core: 0.80.5 + metro-runtime: 0.80.5 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro-core@0.80.5: + resolution: {integrity: sha512-vkLuaBhnZxTVpaZO8ZJVEHzjaqSXpOdpAiztSZ+NDaYM6jEFgle3/XIbLW91jTSf2+T8Pj5yB1G7KuOX+BcVwg==} + engines: {node: '>=18'} + dependencies: + lodash.throttle: 4.1.1 + metro-resolver: 0.80.5 + dev: false + + /metro-file-map@0.80.5: + resolution: {integrity: sha512-bKCvJ05drjq6QhQxnDUt3I8x7bTcHo3IIKVobEr14BK++nmxFGn/BmFLRzVBlghM6an3gqwpNEYxS5qNc+VKcg==} + engines: {node: '>=18'} + dependencies: + anymatch: 3.1.3 + debug: 2.6.9 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.5 + node-abort-controller: 3.1.1 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-minify-terser@0.80.5: + resolution: {integrity: sha512-S7oZLLcab6YXUT6jYFX/ZDMN7Fq6xBGGAG8liMFU1UljX6cTcEC2u+UIafYgCLrdVexp/+ClxrIetVPZ5LtL/g==} + engines: {node: '>=18'} + dependencies: + terser: 5.27.0 + dev: false + + /metro-resolver@0.80.5: + resolution: {integrity: sha512-haJ/Hveio3zv/Fr4eXVdKzjUeHHDogYok7OpRqPSXGhTXisNXB+sLN7CpcUrCddFRUDLnVaqQOYwhYsFndgUwA==} + engines: {node: '>=18'} + dev: false + + /metro-runtime@0.80.5: + resolution: {integrity: sha512-L0syTWJUdWzfUmKgkScr6fSBVTh6QDr8eKEkRtn40OBd8LPagrJGySBboWSgbyn9eIb4ayW3Y347HxgXBSAjmg==} + engines: {node: '>=18'} + dependencies: + '@babel/runtime': 7.23.9 + dev: false + + /metro-source-map@0.80.5: + resolution: {integrity: sha512-DwSF4l03mKPNqCtyQ6K23I43qzU1BViAXnuH81eYWdHglP+sDlPpY+/7rUahXEo6qXEHXfAJgVoo1sirbXbmsQ==} + engines: {node: '>=18'} + dependencies: + '@babel/traverse': 7.23.9(supports-color@5.5.0) + '@babel/types': 7.23.9 + invariant: 2.2.4 + metro-symbolicate: 0.80.5 + nullthrows: 1.1.1 + ob1: 0.80.5 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-symbolicate@0.80.5: + resolution: {integrity: sha512-IsM4mTYvmo9JvIqwEkCZ5+YeDVPST78Q17ZgljfLdHLSpIivOHp9oVoiwQ/YGbLx0xRHRIS/tKiXueWBnj3UWA==} + engines: {node: '>=18'} + hasBin: true + dependencies: + invariant: 2.2.4 + metro-source-map: 0.80.5 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-transform-plugins@0.80.5: + resolution: {integrity: sha512-7IdlTqK/k5+qE3RvIU5QdCJUPk4tHWEqgVuYZu8exeW+s6qOJ66hGIJjXY/P7ccucqF+D4nsbAAW5unkoUdS6g==} + engines: {node: '>=18'} + dependencies: + '@babel/core': 7.23.9 + '@babel/generator': 7.23.6 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-transform-worker@0.80.5(encoding@0.1.13): + resolution: {integrity: sha512-Q1oM7hfP+RBgAtzRFBDjPhArELUJF8iRCZ8OidqCpYzQJVGuJZ7InSnIf3hn1JyqiUQwv2f1LXBO78i2rAjzyA==} + engines: {node: '>=18'} + dependencies: + '@babel/core': 7.23.9 + '@babel/generator': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + metro: 0.80.5(encoding@0.1.13) + metro-babel-transformer: 0.80.5 + metro-cache: 0.80.5 + metro-cache-key: 0.80.5 + metro-minify-terser: 0.80.5 + metro-source-map: 0.80.5 + metro-transform-plugins: 0.80.5 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro@0.80.5(encoding@0.1.13): + resolution: {integrity: sha512-OE/CGbOgbi8BlTN1QqJgKOBaC27dS0JBQw473JcivrpgVnqIsluROA7AavEaTVUrB9wPUZvoNVDROn5uiM2jfw==} + engines: {node: '>=18'} + hasBin: true + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/core': 7.23.9 + '@babel/generator': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) + '@babel/types': 7.23.9 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + graceful-fs: 4.2.11 + hermes-parser: 0.18.2 + image-size: 1.1.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.80.5 + metro-cache: 0.80.5 + metro-cache-key: 0.80.5 + metro-config: 0.80.5(encoding@0.1.13) + metro-core: 0.80.5 + metro-file-map: 0.80.5 + metro-resolver: 0.80.5 + metro-runtime: 0.80.5 + metro-source-map: 0.80.5 + metro-symbolicate: 0.80.5 + metro-transform-plugins: 0.80.5 + metro-transform-worker: 0.80.5(encoding@0.1.13) + mime-types: 2.1.35 + node-fetch: 2.7.0(encoding@0.1.13) + nullthrows: 1.1.1 + rimraf: 3.0.2 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + throat: 5.0.0 + ws: 7.5.9 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false + + /micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + requiresBuild: true + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-mdx-expression@1.0.8: + resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} + requiresBuild: true + dependencies: + '@types/estree': 1.0.5 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + optional: true + + /micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-mdx-jsx@1.0.5: + resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} + requiresBuild: true + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + estree-util-is-identifier-name: 2.1.0 + micromark-factory-mdx-expression: 1.0.9 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: false + optional: true + + /micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-extension-mdx-md@1.0.1: + resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} + requiresBuild: true + dependencies: + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-mdxjs-esm@1.0.5: + resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} + requiresBuild: true + dependencies: + '@types/estree': 1.0.5 + micromark-core-commonmark: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: false + optional: true + + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-extension-mdxjs@1.0.1: + resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} + requiresBuild: true + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + micromark-extension-mdx-expression: 1.0.8 + micromark-extension-mdx-jsx: 1.0.5 + micromark-extension-mdx-md: 1.0.1 + micromark-extension-mdxjs-esm: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-mdx-expression@1.0.9: + resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} + requiresBuild: true + dependencies: + '@types/estree': 1.0.5 + micromark-util-character: 1.2.0 + micromark-util-events-to-acorn: 1.2.3 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: false + optional: true + + /micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + requiresBuild: true + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + requiresBuild: true + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + requiresBuild: true + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + requiresBuild: true + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + requiresBuild: true + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + requiresBuild: true + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + requiresBuild: true + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + requiresBuild: true + dev: false + + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: false + + /micromark-util-events-to-acorn@1.2.3: + resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} + requiresBuild: true + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 2.0.10 + estree-util-visit: 1.2.1 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + vfile-message: 3.1.4 + dev: false + optional: true + + /micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + requiresBuild: true + dev: false + + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false + + /micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + requiresBuild: true + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + requiresBuild: true + dependencies: + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + requiresBuild: true + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + requiresBuild: true + dev: false + + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: false + + /micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + requiresBuild: true + dev: false + + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false + + /micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + requiresBuild: true + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@5.5.0) + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@5.5.0) + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: false + + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: false + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: false + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + dev: false + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + /mipd@0.0.5(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.3.3 + viem: 1.21.4(typescript@5.3.3)(zod@3.22.4) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: false + + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + requiresBuild: true + dev: false + optional: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false + + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.4.0 + dev: false + + /motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + dependencies: + '@motionone/animation': 10.17.0 + '@motionone/dom': 10.17.0 + '@motionone/svelte': 10.16.4 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + '@motionone/vue': 10.16.4 + dev: false + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + dev: false + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /napi-wasm@1.1.0: + resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + + /next-themes@0.2.1(next@14.1.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} + peerDependencies: + next: '*' + react: '*' + react-dom: '*' + dependencies: + next: 14.1.0(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /next@14.1.0(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.1.0 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001585 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.23.9)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.1.0 + '@next/swc-darwin-x64': 14.1.0 + '@next/swc-linux-arm64-gnu': 14.1.0 + '@next/swc-linux-arm64-musl': 14.1.0 + '@next/swc-linux-x64-gnu': 14.1.0 + '@next/swc-linux-x64-musl': 14.1.0 + '@next/swc-win32-arm64-msvc': 14.1.0 + '@next/swc-win32-ia32-msvc': 14.1.0 + '@next/swc-win32-x64-msvc': 14.1.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + /nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + dev: false + + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: false + + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: false + + /node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + dev: false + + /node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} + dev: false + + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + dependencies: + minimatch: 3.1.2 + dev: false + + /node-fetch-native@1.6.2: + resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} + dev: false + + /node-fetch@2.6.7(encoding@0.1.13): + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + requiresBuild: true + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + encoding: 0.1.13 + whatwg-url: 5.0.0 + dev: false + optional: true + + /node-fetch@2.7.0(encoding@0.1.13): + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + encoding: 0.1.13 + whatwg-url: 5.0.0 + dev: false + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false + + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + dev: false + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: false + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + /node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + dev: false + + /non-layered-tidy-tree-layout@2.0.2: + resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} + dev: false + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: false + + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: false + + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + dev: false + + /ob1@0.80.5: + resolution: {integrity: sha512-zYDMnnNrFi/1Tqh0vo3PE4p97Tpl9/4MP2k2ECvkbLOZzQuAYZJLTUYVLZb7hJhbhjT+JJxAwBGS8iu5hCSd1w==} + engines: {node: '>=18'} + dev: false + + /obj-multiplex@1.0.0: + resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + readable-stream: 2.3.8 + dev: false + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.2: + resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} + dependencies: + array.prototype.filter: 1.0.3 + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-errors: 1.3.0 + dev: true + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /ofetch@1.3.3: + resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} + dependencies: + destr: 2.0.2 + node-fetch-native: 1.6.2 + ufo: 1.4.0 + dev: false + + /ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + dev: false + + /on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + dev: false + + /on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + dev: false + + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: false + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: false + + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + dependencies: + is-wsl: 1.1.0 + dev: false + + /open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: false + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: false + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: false + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: false + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + dependencies: + '@types/unist': 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: false + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: false + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: false + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: false + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: false + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: false + + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + requiresBuild: true + dev: false + optional: true + + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + dev: false + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: false + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: false + + /pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + dev: false + + /pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + dependencies: + duplexify: 4.1.2 + split2: 4.2.0 + dev: false + + /pino-abstract-transport@1.1.0: + resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + dev: false + + /pino-pretty@10.3.1: + resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==} + hasBin: true + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.1 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.1.0 + pump: 3.0.0 + readable-stream: 4.5.2 + secure-json-parse: 2.7.0 + sonic-boom: 3.8.0 + strip-json-comments: 3.1.1 + dev: false + + /pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + dev: false + + /pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.3.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + dev: false + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: false + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.5.0 + pathe: 1.1.2 + dev: false + + /playwright-core@1.41.2: + resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} + engines: {node: '>=16'} + hasBin: true + dev: false + + /playwright@1.41.2: + resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright-core: 1.41.2 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + + /pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + dev: false + + /pony-cause@2.1.10: + resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==} + engines: {node: '>=12.0.0'} + dev: false + + /popmotion@11.0.3: + resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} + dependencies: + framesync: 6.0.1 + hey-listen: 1.0.8 + style-value-types: 5.0.0 + tslib: 2.6.2 + dev: false + + /postcss-focus-visible@9.0.1(postcss@8.4.35): + resolution: {integrity: sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.15 + dev: false + + /postcss-import@15.1.0(postcss@8.4.35): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + /postcss-js@4.0.1(postcss@8.4.35): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.35 + + /postcss-load-config@4.0.2(postcss@8.4.35): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.0.0 + postcss: 8.4.35 + yaml: 2.3.4 + + /postcss-nested@6.0.1(postcss@8.4.35): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.15 + + /postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /preact@10.19.4: + resolution: {integrity: sha512-dwaX5jAh0Ga8uENBX1hSOujmKWgx9RtL80KaKUFLc6jb4vCEAc3EeZ0rnQO/FO4VgjfPMfoLFWnNG8bHuZ9VLw==} + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + dev: false + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: false + + /process-nextick-args@1.0.7: + resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} + dev: false + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + + /process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + dev: false + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + requiresBuild: true + dev: false + optional: true + + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + dev: false + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: false + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /property-information@6.4.1: + resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} + dev: false + + /proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + dev: false + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + requiresBuild: true + dev: false + optional: true + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + requiresBuild: true + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + /puppeteer-core@18.2.1(encoding@0.1.13): + resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} + engines: {node: '>=14.1.0'} + requiresBuild: true + dependencies: + cross-fetch: 3.1.5(encoding@0.1.13) + debug: 4.3.4(supports-color@5.5.0) + devtools-protocol: 0.0.1045489 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.1 + proxy-from-env: 1.1.0 + rimraf: 3.0.2 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + ws: 8.9.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + optional: true + + /puppeteer@18.2.1(encoding@0.1.13): + resolution: {integrity: sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==} + engines: {node: '>=14.1.0'} + deprecated: < 21.5.0 is no longer supported + requiresBuild: true + dependencies: + https-proxy-agent: 5.0.1 + progress: 2.0.3 + proxy-from-env: 1.1.0 + puppeteer-core: 18.2.1(encoding@0.1.13) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + optional: true + + /qr-code-styling@1.6.0-rc.1: + resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} + dependencies: + qrcode-generator: 1.4.4 + dev: false + + /qrcode-generator@1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + dev: false + + /qrcode-terminal-nooctal@0.12.1: + resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} + hasBin: true + dev: false + + /qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + dev: false + + /query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + dev: false + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + dev: false + + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: false + + /radix3@1.1.0: + resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} + dev: false + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false + + /react-devtools-core@4.28.5: + resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} + dependencies: + shell-quote: 1.8.1 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0): + resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.23.9 + html-parse-stringify: 3.0.1 + i18next: 22.5.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(encoding@0.1.13)(react@18.2.0) + dev: false + + /react-icons@5.0.1(react@18.2.0): + resolution: {integrity: sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: false + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: false + + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + + /react-modal@3.16.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==} + engines: {node: '>=8'} + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 + react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 + dependencies: + exenv: 1.2.2 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + warning: 4.0.3 + dev: false + + /react-native-webview@11.26.1(react-native@0.73.4)(react@18.2.0): + resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} + peerDependencies: + react: '*' + react-native: '*' + dependencies: + escape-string-regexp: 2.0.0 + invariant: 2.2.4 + react: 18.2.0 + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(encoding@0.1.13)(react@18.2.0) + dev: false + + /react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(encoding@0.1.13)(react@18.2.0): + resolution: {integrity: sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + react: 18.2.0 + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native-community/cli': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 12.3.2(encoding@0.1.13) + '@react-native/assets-registry': 0.73.1 + '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9) + '@react-native/community-cli-plugin': 0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(encoding@0.1.13) + '@react-native/gradle-plugin': 0.73.4 + '@react-native/js-polyfills': 0.73.1 + '@react-native/normalize-colors': 0.73.2 + '@react-native/virtualized-lists': 0.73.4(react-native@0.73.4) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + base64-js: 1.5.1 + chalk: 4.1.2 + deprecated-react-native-prop-types: 5.0.0 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-runtime: 0.80.5 + metro-source-map: 0.80.5 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 26.6.2 + promise: 8.3.0 + react: 18.2.0 + react-devtools-core: 4.28.5 + react-refresh: 0.14.0 + react-shallow-renderer: 16.15.0(react@18.2.0) + regenerator-runtime: 0.13.11 + scheduler: 0.24.0-canary-efb381bbf-20230505 + stacktrace-parser: 0.1.10 + whatwg-fetch: 3.6.20 + ws: 6.2.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: false + + /react-shallow-renderer@16.15.0(react@18.2.0): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + object-assign: 4.1.1 + react: 18.2.0 + react-is: 18.2.0 + dev: false + + /react-transition-state@1.1.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ITY2mZqc2dWG2eitJkYNdcSFW8aKeOlkL2A/vowRrLL8GH3J6Re/SpD/BLvQzrVOTqjsP0b5S9N10vgNNzwMUQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-use-measure@2.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==} + peerDependencies: + react: '>=16.13' + react-dom: '>=16.13' + dependencies: + debounce: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream@2.3.3: + resolution: {integrity: sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 1.0.7 + safe-buffer: 5.1.2 + string_decoder: 1.0.3 + util-deprecate: 1.0.2 + dev: false + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + dev: false + + /real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + dev: false + + /recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.15.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.2 + dev: false + + /redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + dev: false + + /redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + dependencies: + redis-errors: 1.2.0 + dev: false + + /reflect.getprototypeof@1.0.5: + resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: false + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: false + + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.9 + dev: false + + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: false + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: false + + /rehype-mdx-title@3.0.0: + resolution: {integrity: sha512-3Cg676fEyQ6SvPz57nMqpzU09kgh7QAMOnjiYZHuhEHa9jjEuaR8ftlUyCeyKD4uGyzg7aa5pYEgaNDO0Au+Fg==} + dependencies: + '@types/hast': 3.0.4 + estree-util-is-identifier-name: 3.0.0 + hast-util-to-string: 3.0.0 + unified: 11.0.4 + unist-util-visit-parents: 6.0.1 + dev: false + + /rehype-mermaidjs@2.0.0: + resolution: {integrity: sha512-QY8uiV31GZd/devc/3vzGOrTkNI5vktEXvRmArqw1oBSeFe1EWnfXXH/5J83Had8kG6Z/2xiLWvL/pJ/rgIr9g==} + deprecated: This package was renamed to rehype-mermaid + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.0 + mermaid-isomorphic: 2.1.1 + mini-svg-data-uri: 1.4.4 + space-separated-tokens: 2.0.2 + unified: 11.0.4 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-mdx@3.0.0: + resolution: {integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==} + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.1.0 + unified: 11.0.4 + vfile: 6.0.1 + dev: false + + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + dev: false + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: false + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: false + + /resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false + + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: false + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + dev: false + + /rollup-plugin-peer-deps-external@2.2.4(rollup@4.11.0): + resolution: {integrity: sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==} + peerDependencies: + rollup: '*' + dependencies: + rollup: 4.11.0 + dev: false + + /rollup-plugin-visualizer@5.12.0(rollup@4.11.0): + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + rollup: 4.11.0 + source-map: 0.7.4 + yargs: 17.7.2 + dev: false + + /rollup@4.11.0: + resolution: {integrity: sha512-2xIbaXDXjf3u2tajvA5xROpib7eegJ9Y/uPlSFhXLNpK9ampCczXAhLEb5yLzJyG3LAdI1NWtNjDXiLyniNdjQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.11.0 + '@rollup/rollup-android-arm64': 4.11.0 + '@rollup/rollup-darwin-arm64': 4.11.0 + '@rollup/rollup-darwin-x64': 4.11.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.11.0 + '@rollup/rollup-linux-arm64-gnu': 4.11.0 + '@rollup/rollup-linux-arm64-musl': 4.11.0 + '@rollup/rollup-linux-riscv64-gnu': 4.11.0 + '@rollup/rollup-linux-x64-gnu': 4.11.0 + '@rollup/rollup-linux-x64-musl': 4.11.0 + '@rollup/rollup-win32-arm64-msvc': 4.11.0 + '@rollup/rollup-win32-ia32-msvc': 4.11.0 + '@rollup/rollup-win32-x64-msvc': 4.11.0 + fsevents: 2.3.3 + dev: false + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + mri: 1.2.0 + dev: false + + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.6 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + + /safe-regex@2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.27 + dev: true + + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: false + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + + /scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /schema-dts@1.1.2(typescript@5.3.3): + resolution: {integrity: sha512-MpNwH0dZJHinVxk9bT8XUdjKTxMYrA5bLtrrGmFA6PTLwlOKnhi67XoRd6/ty+Djt6ZC0slR57qFhZDNMI6DhQ==} + peerDependencies: + typescript: '>=4.1.0' + dependencies: + typescript: 5.3.3 + dev: false + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + + /scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + dev: false + + /secp256k1@5.0.0: + resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} + engines: {node: '>=14.0.0'} + requiresBuild: true + dependencies: + elliptic: 6.5.4 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.0 + dev: false + + /secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + dev: false + + /seedrandom@3.0.5: + resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} + dev: false + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + dev: false + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: false + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: false + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false + + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.2 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.2 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: false + + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false + + /shiki@0.11.1: + resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + dependencies: + jsonc-parser: 3.2.1 + vscode-oniguruma: 1.7.0 + vscode-textmate: 6.0.0 + dev: false + + /side-channel@1.0.5: + resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: false + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + /simple-git@3.22.0: + resolution: {integrity: sha512-6JujwSs0ac82jkGjMHiCnTifvf1crOiY/+tfs/Pqih6iow7VrpNKRRNdWm6RtaXpvvv/JGNYhlUtLhGFqHF+Yw==} + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: false + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: false + + /siwe@2.1.4(ethers@5.7.2): + resolution: {integrity: sha512-Dke1Qqa3mgiLm3vjqw/+SQ7dl8WV/Pfk3AlQBF94cBFydTYhztngqYrikzE3X5UTsJ6565dfVbQptszsuYZNYg==} + peerDependencies: + ethers: ^5.6.8 || ^6.0.8 + dependencies: + '@spruceid/siwe-parser': 2.0.2 + '@stablelib/random': 1.0.2 + ethers: 5.7.2 + uri-js: 4.4.1 + valid-url: 1.0.9 + dev: false + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + dev: false + + /socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4(supports-color@5.5.0) + engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3) + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: false + + /sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + dependencies: + atomic-sleep: 1.0.0 + dev: false + + /sonic-boom@3.8.0: + resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} + dependencies: + atomic-sleep: 1.0.0 + dev: false + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: false + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: false + + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-exceptions@2.4.0: + resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.4.0 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: true + + /split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: false + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: false + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: false + + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: false + + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + dev: false + + /standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + dev: false + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false + + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: false + + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + dev: false + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + /strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.5 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.6 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string_decoder@1.0.3: + resolution: {integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==} + dependencies: + safe-buffer: 5.1.2 + dev: false + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + requiresBuild: true + dependencies: + safe-buffer: 5.2.1 + dev: false + + /stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + requiresBuild: true + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: false + + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: false + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: false + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + dependencies: + inline-style-parser: 0.1.1 + dev: false + + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + dependencies: + inline-style-parser: 0.2.2 + dev: false + + /style-value-types@5.0.0: + resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} + dependencies: + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /styled-components@5.3.11(@babel/core@7.23.9)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/traverse': 7.23.9(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.2.1 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.4(@babel/core@7.23.9)(styled-components@5.3.11) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + shallowequal: 1.1.0 + supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' + dev: false + + /styled-jsx@5.1.1(@babel/core@7.23.9)(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.23.9 + client-only: 0.0.1 + react: 18.2.0 + + /stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + dev: false + + /stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} + dev: false + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 10.3.10 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + /sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + dev: false + + /superstruct@1.0.3: + resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} + engines: {node: '>=14.0.0'} + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: false + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /swr@2.2.4(react@18.2.0): + resolution: {integrity: sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + dependencies: + client-only: 0.0.1 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + dev: false + + /tailwindcss@3.4.1: + resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.35 + postcss-import: 15.1.0(postcss@8.4.35) + postcss-js: 4.0.1(postcss@8.4.35) + postcss-load-config: 4.0.2(postcss@8.4.35) + postcss-nested: 6.0.1(postcss@8.4.35) + postcss-selector-parser: 6.0.15 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + requiresBuild: true + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + optional: true + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + optional: true + + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: false + + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + dependencies: + rimraf: 2.6.3 + dev: false + + /terser-webpack-plugin@5.3.10(webpack@5.90.1): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.90.1 + dev: false + + /terser@5.27.0: + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: false + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + + /thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + dependencies: + real-require: 0.1.0 + dev: false + + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + dev: false + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: false + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + requiresBuild: true + dev: false + optional: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: false + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false + + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + dev: false + + /ts-api-utils@1.2.1(typescript@5.3.3): + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + + /ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + dev: false + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + /ts-pattern@4.3.0: + resolution: {integrity: sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==} + dev: false + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tsutils@3.21.0(typescript@5.3.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.3.3 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: false + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: false + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /typed-array-buffer@1.0.1: + resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.6 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.13 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.6 + for-each: 0.3.3 + is-typed-array: 1.1.13 + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + dev: false + + /uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + dependencies: + multiformats: 9.9.0 + dev: false + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.6 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + requiresBuild: true + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: false + optional: true + + /uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + dev: false + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + /unenv@1.9.0: + resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + dependencies: + consola: 3.2.3 + defu: 6.1.4 + mime: 3.0.0 + node-fetch-native: 1.6.2 + pathe: 1.1.2 + dev: false + + /unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + dev: false + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: false + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: false + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: false + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: false + + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.1 + dev: false + + /unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: false + + /unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + dependencies: + '@types/unist': 2.0.10 + dev: false + + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-position-from-estree@1.1.2: + resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + dev: false + optional: true + + /unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + dev: false + optional: true + + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-remove-position@4.0.2: + resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + unist-util-visit: 4.1.2 + dev: false + optional: true + + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + dependencies: + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 + dev: false + + /unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + dev: false + + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + dev: false + + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: false + + /unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: false + + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false + + /unstorage@1.10.1(idb-keyval@6.2.1): + resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} + peerDependencies: + '@azure/app-configuration': ^1.4.1 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^3.3.2 + '@azure/keyvault-secrets': ^4.7.0 + '@azure/storage-blob': ^12.16.0 + '@capacitor/preferences': ^5.0.6 + '@netlify/blobs': ^6.2.0 + '@planetscale/database': ^1.11.0 + '@upstash/redis': ^1.23.4 + '@vercel/kv': ^0.2.3 + idb-keyval: ^6.2.1 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + dependencies: + anymatch: 3.1.3 + chokidar: 3.6.0 + destr: 2.0.2 + h3: 1.10.1 + idb-keyval: 6.2.1 + ioredis: 5.3.2 + listhen: 1.6.0 + lru-cache: 10.2.0 + mri: 1.2.0 + node-fetch-native: 1.6.2 + ofetch: 1.3.3 + ufo: 1.4.0 + transitivePeerDependencies: + - supports-color + dev: false + + /untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + dependencies: + citty: 0.1.5 + consola: 3.2.3 + pathe: 1.1.2 + dev: false + + /update-browserslist-db@1.0.13(browserslist@4.22.3): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.3 + escalade: 3.1.2 + picocolors: 1.0.0 + + /uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + dev: false + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + + /use-debounce@10.0.0(react@18.2.0): + resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==} + engines: {node: '>= 16.0.0'} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + dev: false + + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /utf-8-validate@6.0.3: + resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.8.0 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.14 + dev: false + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + + /uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + requiresBuild: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: false + + /valid-url@1.0.9: + resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} + dev: false + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /valtio@1.11.2(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: + '@types/react': 18.2.55 + proxy-compare: 2.5.1 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false + + /vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + vfile: 5.3.7 + dev: false + optional: true + + /vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + dependencies: + '@types/unist': 3.0.2 + vfile: 6.0.1 + dev: false + + /vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 3.0.3 + dev: false + optional: true + + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + dev: false + + /vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + dev: false + optional: true + + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + dev: false + + /viem@1.21.4(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 0.9.8(typescript@5.3.3)(zod@3.22.4) + isows: 1.0.3(ws@8.13.0) + typescript: 5.3.3 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: false + + /viem@2.7.8(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-5r5pkBDBmihCvMx4b3MqtP0FoZCRWE2ML1DssU80+vhJQur0PKd4yHdLbbvoiGGVD6bYiA394juhfdSvXIGgFA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.3.3)(zod@3.22.4) + isows: 1.0.3(ws@8.13.0) + typescript: 5.3.3 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: false + + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + dev: false + + /void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + dev: false + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: false + + /vscode-textmate@6.0.0: + resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} + dev: false + + /wagmi@2.5.6(@tanstack/react-query@5.18.1)(@types/react@18.2.55)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4): + resolution: {integrity: sha512-Fi5Ju7N0Pd4EOxSBiyl/sVd2Iquf3w2ED4USalfIm0v1DbyEEIIT90AX2Mhzn/Ty9UnB3MTSO2/wFjj5VzZFTw==} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@tanstack/react-query': 5.18.1(react@18.2.0) + '@wagmi/connectors': 4.1.13(@types/react@18.2.55)(@wagmi/core@2.6.4)(encoding@0.1.13)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(rollup@4.11.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + '@wagmi/core': 2.6.4(@types/react@18.2.55)(react@18.2.0)(typescript@5.3.3)(viem@2.7.8)(zod@3.22.4) + react: 18.2.0 + typescript: 5.3.3 + use-sync-external-store: 1.2.0(react@18.2.0) + viem: 2.7.8(typescript@5.3.3)(zod@3.22.4) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - immer + - react-dom + - react-native + - rollup + - supports-color + - utf-8-validate + - zod + dev: false + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: false + + /warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: false + + /web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: false + + /web-worker@1.3.0: + resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} + dev: false + + /webextension-polyfill-ts@0.25.0: + resolution: {integrity: sha512-ikQhwwHYkpBu00pFaUzIKY26I6L87DeRI+Q6jBT1daZUNuu8dSrg5U9l/ZbqdaQ1M/TTSPKeAa3kolP5liuedw==} + deprecated: This project has moved to @types/webextension-polyfill + dependencies: + webextension-polyfill: 0.7.0 + dev: false + + /webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + dev: false + + /webextension-polyfill@0.7.0: + resolution: {integrity: sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw==} + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false + + /webpack@5.90.1: + resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.3 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.90.1) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: false + + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.14 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: false + + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: false + + /ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: false + + /ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + bufferutil: 4.0.8 + utf-8-validate: 6.0.3 + dev: false + + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /ws@8.9.0: + resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==} + engines: {node: '>=10.0.0'} + requiresBuild: true + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + optional: true + + /xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + dev: false + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: false + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: false + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: false + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: false + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: false + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: false + + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + requiresBuild: true + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: false + optional: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false + + /zustand@4.4.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + dependencies: + '@types/react': 18.2.55 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /zustand@4.5.0(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + dependencies: + '@types/react': 18.2.55 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false diff --git a/app/postcss.config.js b/app/postcss.config.js new file mode 100644 index 000000000..952b664c8 --- /dev/null +++ b/app/postcss.config.js @@ -0,0 +1,9 @@ +module.exports = { + plugins: { + tailwindcss: {}, + 'postcss-focus-visible': { + replaceWith: '[data-focus-visible-added]', + }, + autoprefixer: {}, + }, +}; diff --git a/app/public/Inter-SemiBold.ttf b/app/public/Inter-SemiBold.ttf new file mode 100644 index 000000000..c6aeeb16a Binary files /dev/null and b/app/public/Inter-SemiBold.ttf differ diff --git a/app/public/content/dao/proposals/1.9-1.png b/app/public/content/dao/proposals/1.9-1.png new file mode 100644 index 000000000..af2016d2f Binary files /dev/null and b/app/public/content/dao/proposals/1.9-1.png differ diff --git a/app/public/content/dao/proposals/2.2.1-1.png b/app/public/content/dao/proposals/2.2.1-1.png new file mode 100644 index 000000000..d0c5bf9a8 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.1-1.png differ diff --git a/app/public/content/dao/proposals/2.2.1-2.png b/app/public/content/dao/proposals/2.2.1-2.png new file mode 100644 index 000000000..a3cf82d39 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.1-2.png differ diff --git a/app/public/content/dao/proposals/2.2.1-3.png b/app/public/content/dao/proposals/2.2.1-3.png new file mode 100644 index 000000000..e99c8aaf7 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.1-3.png differ diff --git a/app/public/content/dao/proposals/2.2.1-4.png b/app/public/content/dao/proposals/2.2.1-4.png new file mode 100644 index 000000000..a6de99e8f Binary files /dev/null and b/app/public/content/dao/proposals/2.2.1-4.png differ diff --git a/app/public/content/dao/proposals/2.2.1-5.png b/app/public/content/dao/proposals/2.2.1-5.png new file mode 100644 index 000000000..a54ef0987 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.1-5.png differ diff --git a/app/public/content/dao/proposals/2.2.2-1.png b/app/public/content/dao/proposals/2.2.2-1.png new file mode 100644 index 000000000..29a7baecc Binary files /dev/null and b/app/public/content/dao/proposals/2.2.2-1.png differ diff --git a/app/public/content/dao/proposals/2.2.2-2.png b/app/public/content/dao/proposals/2.2.2-2.png new file mode 100644 index 000000000..aadd3d14e Binary files /dev/null and b/app/public/content/dao/proposals/2.2.2-2.png differ diff --git a/app/public/content/dao/proposals/2.2.2-3.png b/app/public/content/dao/proposals/2.2.2-3.png new file mode 100644 index 000000000..2f51dcc45 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.2-3.png differ diff --git a/app/public/content/dao/proposals/2.2.2-4.png b/app/public/content/dao/proposals/2.2.2-4.png new file mode 100644 index 000000000..9a0a29a81 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.2-4.png differ diff --git a/app/public/content/dao/proposals/2.2.2-5.png b/app/public/content/dao/proposals/2.2.2-5.png new file mode 100644 index 000000000..c94666cf1 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.2-5.png differ diff --git a/app/public/content/dao/proposals/2.2.2-6.png b/app/public/content/dao/proposals/2.2.2-6.png new file mode 100644 index 000000000..99f055f62 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.2-6.png differ diff --git a/app/public/content/dao/proposals/2.2.3-1.png b/app/public/content/dao/proposals/2.2.3-1.png new file mode 100644 index 000000000..db8dd0097 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.3-1.png differ diff --git a/app/public/content/dao/proposals/2.2.3-2.png b/app/public/content/dao/proposals/2.2.3-2.png new file mode 100644 index 000000000..b0a2ab903 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.3-2.png differ diff --git a/app/public/content/dao/proposals/2.2.3-3.png b/app/public/content/dao/proposals/2.2.3-3.png new file mode 100644 index 000000000..df8740de2 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.3-3.png differ diff --git a/app/public/content/dao/proposals/2.2.3-4.jpeg b/app/public/content/dao/proposals/2.2.3-4.jpeg new file mode 100644 index 000000000..cd86e591a Binary files /dev/null and b/app/public/content/dao/proposals/2.2.3-4.jpeg differ diff --git a/app/public/content/dao/proposals/2.2.3-4.png b/app/public/content/dao/proposals/2.2.3-4.png new file mode 100644 index 000000000..9917c7a46 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.3-4.png differ diff --git a/app/public/content/dao/proposals/2.2.3-5.png b/app/public/content/dao/proposals/2.2.3-5.png new file mode 100644 index 000000000..9917c7a46 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.3-5.png differ diff --git a/app/public/content/dao/proposals/2.2.3-6.png b/app/public/content/dao/proposals/2.2.3-6.png new file mode 100644 index 000000000..082f30397 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.3-6.png differ diff --git a/app/public/content/dao/proposals/2.2.3-7.png b/app/public/content/dao/proposals/2.2.3-7.png new file mode 100644 index 000000000..4dcbb0ab0 Binary files /dev/null and b/app/public/content/dao/proposals/2.2.3-7.png differ diff --git a/app/public/content/home/grid_link_1.png b/app/public/content/home/grid_link_1.png new file mode 100644 index 000000000..4caabd31a Binary files /dev/null and b/app/public/content/home/grid_link_1.png differ diff --git a/app/public/content/home/grid_link_2.png b/app/public/content/home/grid_link_2.png new file mode 100644 index 000000000..185f29ad7 Binary files /dev/null and b/app/public/content/home/grid_link_2.png differ diff --git a/app/public/content/home/grid_link_3.png b/app/public/content/home/grid_link_3.png new file mode 100644 index 000000000..dab45862b Binary files /dev/null and b/app/public/content/home/grid_link_3.png differ diff --git a/app/public/content/home/grid_link_4.png b/app/public/content/home/grid_link_4.png new file mode 100644 index 000000000..12a2fa711 Binary files /dev/null and b/app/public/content/home/grid_link_4.png differ diff --git a/app/public/content/learn/ccip/1.png b/app/public/content/learn/ccip/1.png new file mode 100644 index 000000000..f5b2e52bb Binary files /dev/null and b/app/public/content/learn/ccip/1.png differ diff --git a/app/public/content/learn/contracts.svg b/app/public/content/learn/contracts.svg new file mode 100644 index 000000000..d3417e1b1 --- /dev/null +++ b/app/public/content/learn/contracts.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/content/learn/dnssec/argent-logo.svg b/app/public/content/learn/dnssec/argent-logo.svg new file mode 100644 index 000000000..e1df07cd7 --- /dev/null +++ b/app/public/content/learn/dnssec/argent-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/public/content/learn/dnssec/coinbase-wallet-logo.svg b/app/public/content/learn/dnssec/coinbase-wallet-logo.svg new file mode 100644 index 000000000..255438d3b --- /dev/null +++ b/app/public/content/learn/dnssec/coinbase-wallet-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/public/content/learn/dnssec/dnssec_1.png b/app/public/content/learn/dnssec/dnssec_1.png new file mode 100644 index 000000000..adcf2a828 Binary files /dev/null and b/app/public/content/learn/dnssec/dnssec_1.png differ diff --git a/app/public/content/learn/dnssec/dnssec_2.png b/app/public/content/learn/dnssec/dnssec_2.png new file mode 100644 index 000000000..17843c7a4 Binary files /dev/null and b/app/public/content/learn/dnssec/dnssec_2.png differ diff --git a/app/public/content/learn/dnssec/lens-logo.svg b/app/public/content/learn/dnssec/lens-logo.svg new file mode 100644 index 000000000..6073f4e81 --- /dev/null +++ b/app/public/content/learn/dnssec/lens-logo.svg @@ -0,0 +1 @@ + diff --git a/app/public/content/learn/immunefi.svg b/app/public/content/learn/immunefi.svg new file mode 100644 index 000000000..f9a5f65aa --- /dev/null +++ b/app/public/content/learn/immunefi.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/public/content/namewrapper/namewrapper-expiry-subnames.jpg b/app/public/content/namewrapper/namewrapper-expiry-subnames.jpg new file mode 100644 index 000000000..31daa30f1 Binary files /dev/null and b/app/public/content/namewrapper/namewrapper-expiry-subnames.jpg differ diff --git a/app/public/content/namewrapper/namewrapper-overview-subnames.jpg b/app/public/content/namewrapper/namewrapper-overview-subnames.jpg new file mode 100644 index 000000000..98726386f Binary files /dev/null and b/app/public/content/namewrapper/namewrapper-overview-subnames.jpg differ diff --git a/app/public/content/namewrapper/namewrapper-overview-wrapped.jpg b/app/public/content/namewrapper/namewrapper-overview-wrapped.jpg new file mode 100644 index 000000000..1365f657e Binary files /dev/null and b/app/public/content/namewrapper/namewrapper-overview-wrapped.jpg differ diff --git a/app/public/content/namewrapper/namewrapper-state-diagram.png b/app/public/content/namewrapper/namewrapper-state-diagram.png new file mode 100644 index 000000000..12b9f3774 Binary files /dev/null and b/app/public/content/namewrapper/namewrapper-state-diagram.png differ diff --git a/app/public/content/resolution/flow1.png b/app/public/content/resolution/flow1.png new file mode 100644 index 000000000..8d981755f Binary files /dev/null and b/app/public/content/resolution/flow1.png differ diff --git a/app/public/content/web/reverse/example1.png b/app/public/content/web/reverse/example1.png new file mode 100644 index 000000000..3379f57a1 Binary files /dev/null and b/app/public/content/web/reverse/example1.png differ diff --git a/app/public/edgerc.json b/app/public/edgerc.json new file mode 100644 index 000000000..d88d23445 --- /dev/null +++ b/app/public/edgerc.json @@ -0,0 +1,449 @@ +{ + "config": { + "routing": { + "trailing_slash": "never" + }, + "redirects": [ + { + "pattern": "^/namewrapper$", + "destination": "/wrapper/overview" + }, + { + "pattern": "^/(tools?|sdks?)$", + "destination": "/web/libraries" + }, + { + "pattern": "^/quickstart$", + "destination": "/web/quickstart" + }, + { + "pattern": "^/ccip$", + "destination": "/learn/ccip" + }, + { + "pattern": "^/(frequently-asked-questions|faqs)$", + "destination": "/faq" + }, + { + "pattern": "^/ens-deployments$", + "destination": "/learn/deployments" + }, + { + "pattern": "^/permanent-registrar-faq$", + "destination": "/registry/eth" + }, + { + "pattern": "^/deploying-ens-on-a-private-chain$", + "destination": "/disappeared" + }, + { + "pattern": "^/dns-registrar-guide$", + "destination": "/disappeared" + }, + { + "pattern": "^/bug-bounty-program$", + "destination": "/bugs" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-1-ens$", + "destination": "/ensip/1" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-2-initial-hash-registrar$", + "destination": "/ensip/2" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-3-reverse-resolution$", + "destination": "/ensip/3" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-4-support-for-contract-abis$", + "destination": "/ensip/4" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-5-text-records$", + "destination": "/ensip/5" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-6-dns-in-ens$", + "destination": "/ensip/6" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-7-contenthash-field$", + "destination": "/ensip/7" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-8-interface-discovery$", + "destination": "/ensip/8" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-9-multichain-address-resolution$", + "destination": "/ensip/9" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-10-wildcard-resolution$", + "destination": "/ensip/10" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-11-evmchain-address-resolution$", + "destination": "/ensip/11" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-12-avatar-text-records$", + "destination": "/ensip/12" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-13-secondary-authentication-for-ens$", + "destination": "/ensip/13" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-14-platform-pattern-parameter$", + "destination": "/ensip/14" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-15-normalization-standard$", + "destination": "/ensip/15" + }, + { + "pattern": "^/ens-improvement-proposals/ensip-16-offchain-metadata$", + "destination": "/ensip/16" + }, + { + "pattern": "^/dapp-developer-guide/quickstart$", + "destination": "/web/quickstart" + }, + { + "pattern": "^/dapp-developer-guide/ens-enabling-your-dapp$", + "destination": "/web/quickstart" + }, + { + "pattern": "^/dapp-developer-guide/ens-libraries$", + "destination": "/web/libraries" + }, + { + "pattern": "^/dapp-developer-guide/working-with-ens$", + "destination": "/web/libraries" + }, + { + "pattern": "^/dapp-developer-guide/resolving-names$", + "destination": "/web/resolution" + }, + { + "pattern": "^/dapp-developer-guide/managing-names$", + "destination": "/resolvers/interacting" + }, + { + "pattern": "^/dapp-developer-guide/registering-and-renewing-names$", + "destination": "/registry/eth" + }, + { + "pattern": "^/dapp-developer-guide/front-end-design-guidelines$", + "destination": "/web/design" + }, + { + "pattern": "^/dapp-developer-guide/ens-as-nft$", + "destination": "/registry/eth" + }, + { + "pattern": "^/dapp-developer-guide/ens-l2-offchain$", + "destination": "/learn/ccip" + }, + { + "pattern": "^/dapp-developer-guide/ens-data-guide$", + "destination": "/web/libraries" + }, + { + "pattern": "^/contract-api-reference/ens-contracts-overview$", + "destination": "/contracts" + }, + { + "pattern": "^/contract-api-reference/name-processing$", + "destination": "/resolution/names" + }, + { + "pattern": "^/contract-api-reference/ens$", + "destination": "/registry/ens" + }, + { + "pattern": "^/contract-api-reference/reverseregistrar$", + "destination": "/registry/reverse" + }, + { + "pattern": "^/contract-api-reference/testregistrar$", + "destination": "/registry/test" + }, + { + "pattern": "^/contract-api-reference/publicresolver$", + "destination": "/resolvers/public" + }, + { + "pattern": "^/contract-api-reference/.eth-permanent-registrar$", + "destination": "/registry/eth" + }, + { + "pattern": "^/contract-api-reference/.eth-permanent-registrar/registrar$", + "destination": "/registry/eth" + }, + { + "pattern": "^/contract-api-reference/.eth-permanent-registrar/controller$", + "destination": "/registry/eth" + }, + { + "pattern": "^/contract-api-reference/subgraphdata$", + "destination": "/web/subgraph" + }, + { + "pattern": "^/contract-api-reference/dns-registrar$", + "destination": "/registry/dns" + }, + { + "pattern": "^//contract-api-reference/subgraphdata$", + "destination": "/web/subgraph" + }, + { + "pattern": "^/contract-api-reference/subgraphdata/entities$", + "destination": "/web/subgraph" + }, + { + "pattern": "^/contract-api-reference/subgraphdata/queries$", + "destination": "/web/subgraph" + }, + { + "pattern": "^/contract-developer-guide/resolving-names-on-chain$", + "destination": "/disappeared" + }, + { + "pattern": "^/contract-developer-guide/writing-a-resolver$", + "destination": "/resolvers/writing" + }, + { + "pattern": "^/contract-developer-guide/writing-a-registrar$", + "destination": "/registry/writing" + }, + { + "pattern": "^/ens-migration-february-2020/guide-for-dapp-developers$", + "destination": "/disappeared" + }, + { + "pattern": "^/ens-migration-february-2020/technical-description$", + "destination": "/disappeared" + }, + { + "pattern": "^/v/governance/$", + "destination": "/dao" + }, + { + "pattern": "^/v/governance/stewards$", + "destination": "/dao/stewards" + }, + { + "pattern": "^/v/governance/stewards/active-working-group-rules$", + "destination": "/dao/wg/rules" + }, + { + "pattern": "^/v/governance/process$", + "destination": "/dao/governance/process" + }, + { + "pattern": "^/v/governance/process/moderator-checklists$", + "destination": "/dao/governance/moderator" + }, + { + "pattern": "^/v/governance/ens-dao-constitution$", + "destination": "/dao/constitution" + }, + { + "pattern": "^/v/governance/the-ens-foundation$", + "destination": "/dao/foundation" + }, + { + "pattern": "^/v/governance/governance-proposals$", + "destination": "/dao/proposals" + }, + { + "pattern": "^/v/governance/governance-proposals/term-0$", + "destination": "/dao/proposals" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1$", + "destination": "/dao/proposals" + }, + { + "pattern": "^/v/governance/governance-proposals/term-2$", + "destination": "/dao/proposals" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3$", + "destination": "/dao/proposals" + }, + { + "pattern": "^/v/governance/governance-proposals/term-0/ep1-social-proposal-transfer-ens-treasury-and-contract-ownership$", + "destination": "/dao/proposals/0.1" + }, + { + "pattern": "^/v/governance/governance-proposals/term-0/ep2-executable-retrospective-airdrop-for-accounts-that-owned-another-accounts-primary-ens-1$", + "destination": "/dao/proposals/0.2" + }, + { + "pattern": "^/v/governance/governance-proposals/term-0/ep3-social-amend-airdrop-proposal-to-include-accidentally-returned-funds$", + "destination": "/dao/proposals/0.3" + }, + { + "pattern": "^/v/governance/governance-proposals/term-0/ep4-social-proposal-creation-of-foundational-working-groups-and-working-group-rules$", + "destination": "/dao/proposals/0.4" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep5-executable-set-the-temporary-premium-start-price-to-usd100-000$", + "destination": "/dao/proposals/1.1" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep6.1-social-removal-of-brantly-millegan-as-director-of-the-ens-foundation$", + "destination": "/dao/proposals/1.2.1" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep6.2-social-election-of-a-new-director-of-the-ens-foundation$", + "destination": "/dao/proposals/1.2.2" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep7.1-executable-q1-and-q2-2022-meta-governance-wg-budget$", + "destination": "/dao/proposals/1.3.1" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep7.2-executable-q1-and-q2-2022-ens-ecosystem-wg-budget$", + "destination": "/dao/proposals/1.3.2" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep7.3-executable-q1-and-q2-2022-community-wg-budget$", + "destination": "/dao/proposals/1.3.3" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep7.4-executable-q1-and-q2-2022-public-goods-wg-budget$", + "destination": "/dao/proposals/1.3.4" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep8-executable-reimburse-true-names-for-expenses-and-tax-obligations-incurred-for-the-dao$", + "destination": "/dao/proposals/1.4" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep9-executable-change-to-exponential-premium-price-oracle$", + "destination": "/dao/proposals/1.5" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep10-executable-a-dao-governed-identity-server$", + "destination": "/dao/proposals/1.6" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep11-executable-end-airdrop$", + "destination": "/dao/proposals/1.7" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep12-working-group-rules$", + "destination": "/dao/proposals/1.8" + }, + { + "pattern": "^/v/governance/governance-proposals/term-1/ep13-protocol-guild-pilot$", + "destination": "/dao/proposals/1.9" + }, + { + "pattern": "^/v/governance/governance-proposals/term-2/ep14-funding-true-names-ltd$", + "destination": "/dao/proposals/2.1" + }, + { + "pattern": "^/v/governance/governance-proposals/term-2/ep16.1-executable-q3-and-q4-2022-meta-governance-wg-budget$", + "destination": "/dao/proposals/2.2.1" + }, + { + "pattern": "^/v/governance/governance-proposals/term-2/ep16.2-executable-q3-and-q4-2022-ens-ecosystem-wg-budget$", + "destination": "/dao/proposals/2.2.2" + }, + { + "pattern": "^/v/governance/governance-proposals/term-2/ep16.3-executable-q3-and-q4-2022-public-goods-wg-budget$", + "destination": "/dao/proposals/2.2.3" + }, + { + "pattern": "^/v/governance/governance-proposals/term-2/ep2.2.4-social-ens-endaoment-rfp$", + "destination": "/dao/proposals/2.2.4" + }, + { + "pattern": "^/v/governance/governance-proposals/term-2/social-ep2.2.5-selection-of-an-ens-endowment-fund-manager$", + "destination": "/dao/proposals/2.2.5" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.1.1-social-q1-q2-2023-funding-request-ens-ecosystem-working-group$", + "destination": "/dao/proposals/3.1.1" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.1.2-social-q1-q2-2023-funding-request-meta-governance-working-group$", + "destination": "/dao/proposals/3.1.2" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.1.3-social-q1-q2-2023-funding-request-public-goods-working-group$", + "destination": "/dao/proposals/3.1.3" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.2-executable-q1-q2-2023-working-group-funding$", + "destination": "/dao/proposals/3.2" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.3-executable-sell-eth-to-usdc$", + "destination": "/dao/proposals/3.3" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.4-fund-the-endowment$", + "destination": "/dao/proposals/3.4" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.5-executable-activate-new-eth-controller-and-reverse-registrar$", + "destination": "/dao/proposals/3.5" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.6-social-election-of-new-ens-foundation-director$", + "destination": "/dao/proposals/3.6" + }, + { + "pattern": "^/v/governance/governance-proposals/term-3/ep3.7-social-approval-of-ens-name-normalization-standard-ensip-15$", + "destination": "/dao/proposals/3.7" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.1-executable-approve-further-actions-and-strategies-for-the-endowment$", + "destination": "/dao/proposals/4.1" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.2-executable-fund-the-endowment-second-tranche$", + "destination": "/dao/proposals/4.2" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.3-executabe-refund-invalid-names$", + "destination": "/dao/proposals/4.3" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.4-ens-working-group-budget-proposals$", + "destination": "/dao/proposals/4.4" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.5-executable-endowment-permissions-to-karpatkey-update-3$", + "destination": "/dao/proposals/4.5" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.6-executable-october-2023-working-group-funding$", + "destination": "/dao/proposals/4.6" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.7-create-service-provider-streams$", + "destination": "/dao/proposals/4.7" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.8-social-extend-stewards-terms$", + "destination": "/dao/proposals/4.8" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.9-social-select-providers-for-ep4.7-streams$", + "destination": "/dao/proposals/4.9" + }, + { + "pattern": "^/v/governance/governance-proposals/term-4/ep4.10-social-transfer-ens-root-key-ownership-to-the-ens-dao$", + "destination": "/dao/proposals/4.10" + } + ] + } +} diff --git a/app/public/ens/dao/ens_logo_dao.png b/app/public/ens/dao/ens_logo_dao.png new file mode 100644 index 000000000..676d8d2e8 Binary files /dev/null and b/app/public/ens/dao/ens_logo_dao.png differ diff --git a/app/public/ens/dao/ens_logo_dao.svg b/app/public/ens/dao/ens_logo_dao.svg new file mode 100644 index 000000000..1d67d1117 --- /dev/null +++ b/app/public/ens/dao/ens_logo_dao.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/ens/dao/ens_mark_dao.png b/app/public/ens/dao/ens_mark_dao.png new file mode 100644 index 000000000..10ca4de79 Binary files /dev/null and b/app/public/ens/dao/ens_mark_dao.png differ diff --git a/app/public/ens/dao/ens_mark_dao.svg b/app/public/ens/dao/ens_mark_dao.svg new file mode 100644 index 000000000..270305e16 --- /dev/null +++ b/app/public/ens/dao/ens_mark_dao.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/app/public/ens/dao/token.png b/app/public/ens/dao/token.png new file mode 100644 index 000000000..11eff63ba Binary files /dev/null and b/app/public/ens/dao/token.png differ diff --git a/app/public/ens/dao/token.svg b/app/public/ens/dao/token.svg new file mode 100644 index 000000000..83ce6b2ae --- /dev/null +++ b/app/public/ens/dao/token.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/public/ens/dark/ens_logo_dark.png b/app/public/ens/dark/ens_logo_dark.png new file mode 100644 index 000000000..6a147d34b Binary files /dev/null and b/app/public/ens/dark/ens_logo_dark.png differ diff --git a/app/public/ens/dark/ens_logo_dark.svg b/app/public/ens/dark/ens_logo_dark.svg new file mode 100644 index 000000000..a2f9e6408 --- /dev/null +++ b/app/public/ens/dark/ens_logo_dark.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/app/public/ens/dark/ens_mark_dark.png b/app/public/ens/dark/ens_mark_dark.png new file mode 100644 index 000000000..64888a4d2 Binary files /dev/null and b/app/public/ens/dark/ens_mark_dark.png differ diff --git a/app/public/ens/dark/ens_mark_dark.svg b/app/public/ens/dark/ens_mark_dark.svg new file mode 100644 index 000000000..b825189bd --- /dev/null +++ b/app/public/ens/dark/ens_mark_dark.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/public/ens/ecosystem/ens_logo_ecosystem.png b/app/public/ens/ecosystem/ens_logo_ecosystem.png new file mode 100644 index 000000000..c6744907d Binary files /dev/null and b/app/public/ens/ecosystem/ens_logo_ecosystem.png differ diff --git a/app/public/ens/ecosystem/ens_logo_ecosystem.svg b/app/public/ens/ecosystem/ens_logo_ecosystem.svg new file mode 100644 index 000000000..c22f0c2b4 --- /dev/null +++ b/app/public/ens/ecosystem/ens_logo_ecosystem.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/ens/ecosystem/ens_mark_ecosystem.png b/app/public/ens/ecosystem/ens_mark_ecosystem.png new file mode 100644 index 000000000..246265905 Binary files /dev/null and b/app/public/ens/ecosystem/ens_mark_ecosystem.png differ diff --git a/app/public/ens/ecosystem/ens_mark_ecosystem.svg b/app/public/ens/ecosystem/ens_mark_ecosystem.svg new file mode 100644 index 000000000..e9b6c81da --- /dev/null +++ b/app/public/ens/ecosystem/ens_mark_ecosystem.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/app/public/ens/light/ens_logo_light.png b/app/public/ens/light/ens_logo_light.png new file mode 100644 index 000000000..45ef0a139 Binary files /dev/null and b/app/public/ens/light/ens_logo_light.png differ diff --git a/app/public/ens/light/ens_logo_light.svg b/app/public/ens/light/ens_logo_light.svg new file mode 100644 index 000000000..93a166ee1 --- /dev/null +++ b/app/public/ens/light/ens_logo_light.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/app/public/ens/light/ens_mark_light.png b/app/public/ens/light/ens_mark_light.png new file mode 100644 index 000000000..c0eb90b86 Binary files /dev/null and b/app/public/ens/light/ens_mark_light.png differ diff --git a/app/public/ens/light/ens_mark_light.svg b/app/public/ens/light/ens_mark_light.svg new file mode 100644 index 000000000..4c7054799 --- /dev/null +++ b/app/public/ens/light/ens_mark_light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/public/ens/primary/ens_logo_primary.png b/app/public/ens/primary/ens_logo_primary.png new file mode 100644 index 000000000..42391c8f6 Binary files /dev/null and b/app/public/ens/primary/ens_logo_primary.png differ diff --git a/app/public/ens/primary/ens_logo_primary.svg b/app/public/ens/primary/ens_logo_primary.svg new file mode 100644 index 000000000..b389d19cd --- /dev/null +++ b/app/public/ens/primary/ens_logo_primary.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/ens/primary/ens_mark_primary.png b/app/public/ens/primary/ens_mark_primary.png new file mode 100644 index 000000000..fa4ea253b Binary files /dev/null and b/app/public/ens/primary/ens_mark_primary.png differ diff --git a/app/public/ens/primary/ens_mark_primary.svg b/app/public/ens/primary/ens_mark_primary.svg new file mode 100644 index 000000000..81cce2c11 --- /dev/null +++ b/app/public/ens/primary/ens_mark_primary.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/app/public/favicon.ico b/app/public/favicon.ico new file mode 100644 index 000000000..4878b35dc Binary files /dev/null and b/app/public/favicon.ico differ diff --git a/app/public/fonts/sans-serif/Satoshi-Bold.otf b/app/public/fonts/sans-serif/Satoshi-Bold.otf new file mode 100644 index 000000000..677ab5fe1 Binary files /dev/null and b/app/public/fonts/sans-serif/Satoshi-Bold.otf differ diff --git a/app/public/fonts/sans-serif/Satoshi-Medium.otf b/app/public/fonts/sans-serif/Satoshi-Medium.otf new file mode 100644 index 000000000..3513a83bb Binary files /dev/null and b/app/public/fonts/sans-serif/Satoshi-Medium.otf differ diff --git a/app/public/fonts/sans-serif/Satoshi-Variable.ttf b/app/public/fonts/sans-serif/Satoshi-Variable.ttf new file mode 100644 index 000000000..976e85cb5 Binary files /dev/null and b/app/public/fonts/sans-serif/Satoshi-Variable.ttf differ diff --git a/app/public/fonts/sans-serif/inter/Inter-VariableFont_slnt,wght.ttf b/app/public/fonts/sans-serif/inter/Inter-VariableFont_slnt,wght.ttf new file mode 100644 index 000000000..ec3164efa Binary files /dev/null and b/app/public/fonts/sans-serif/inter/Inter-VariableFont_slnt,wght.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-Black.ttf b/app/public/fonts/sans-serif/inter/static/Inter-Black.ttf new file mode 100644 index 000000000..5aecf7dc4 Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-Black.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-Bold.ttf b/app/public/fonts/sans-serif/inter/static/Inter-Bold.ttf new file mode 100644 index 000000000..8e82c70d1 Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-Bold.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-ExtraBold.ttf b/app/public/fonts/sans-serif/inter/static/Inter-ExtraBold.ttf new file mode 100644 index 000000000..cb4b8217f Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-ExtraBold.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-ExtraLight.ttf b/app/public/fonts/sans-serif/inter/static/Inter-ExtraLight.ttf new file mode 100644 index 000000000..64aee30a4 Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-ExtraLight.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-Light.ttf b/app/public/fonts/sans-serif/inter/static/Inter-Light.ttf new file mode 100644 index 000000000..9e265d890 Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-Light.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-Medium.ttf b/app/public/fonts/sans-serif/inter/static/Inter-Medium.ttf new file mode 100644 index 000000000..b53fb1c4a Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-Medium.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-Regular.ttf b/app/public/fonts/sans-serif/inter/static/Inter-Regular.ttf new file mode 100644 index 000000000..8d4eebf20 Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-Regular.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-SemiBold.ttf b/app/public/fonts/sans-serif/inter/static/Inter-SemiBold.ttf new file mode 100644 index 000000000..c6aeeb16a Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-SemiBold.ttf differ diff --git a/app/public/fonts/sans-serif/inter/static/Inter-Thin.ttf b/app/public/fonts/sans-serif/inter/static/Inter-Thin.ttf new file mode 100644 index 000000000..7aed55d56 Binary files /dev/null and b/app/public/fonts/sans-serif/inter/static/Inter-Thin.ttf differ diff --git a/app/public/icons/legacy/logo.svg b/app/public/icons/legacy/logo.svg new file mode 100644 index 000000000..a7aed1bc8 --- /dev/null +++ b/app/public/icons/legacy/logo.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/icons/legacy/logos/connectkit.png b/app/public/icons/legacy/logos/connectkit.png new file mode 100644 index 000000000..f3a62cb57 Binary files /dev/null and b/app/public/icons/legacy/logos/connectkit.png differ diff --git a/app/public/icons/legacy/logos/ensjs.svg b/app/public/icons/legacy/logos/ensjs.svg new file mode 100644 index 000000000..fa60c024c --- /dev/null +++ b/app/public/icons/legacy/logos/ensjs.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/icons/legacy/logos/ethers.svg b/app/public/icons/legacy/logos/ethers.svg new file mode 100644 index 000000000..d87f9ef87 --- /dev/null +++ b/app/public/icons/legacy/logos/ethers.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/public/icons/legacy/logos/family.png b/app/public/icons/legacy/logos/family.png new file mode 100644 index 000000000..a935ce1a2 Binary files /dev/null and b/app/public/icons/legacy/logos/family.png differ diff --git a/app/public/icons/legacy/logos/go.svg b/app/public/icons/legacy/logos/go.svg new file mode 100644 index 000000000..7f7b19de5 --- /dev/null +++ b/app/public/icons/legacy/logos/go.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/app/public/icons/legacy/logos/javascript.svg b/app/public/icons/legacy/logos/javascript.svg new file mode 100644 index 000000000..9650ca78e --- /dev/null +++ b/app/public/icons/legacy/logos/javascript.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/public/icons/legacy/logos/kethereum.png b/app/public/icons/legacy/logos/kethereum.png new file mode 100644 index 000000000..8d60a8ab6 Binary files /dev/null and b/app/public/icons/legacy/logos/kethereum.png differ diff --git a/app/public/icons/legacy/logos/kotlin.svg b/app/public/icons/legacy/logos/kotlin.svg new file mode 100644 index 000000000..3480717db --- /dev/null +++ b/app/public/icons/legacy/logos/kotlin.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/icons/legacy/logos/node.svg b/app/public/icons/legacy/logos/node.svg new file mode 100644 index 000000000..1d09de22b --- /dev/null +++ b/app/public/icons/legacy/logos/node.svg @@ -0,0 +1,4 @@ + + + diff --git a/app/public/icons/legacy/logos/nuget.svg b/app/public/icons/legacy/logos/nuget.svg new file mode 100644 index 000000000..1765dcc92 --- /dev/null +++ b/app/public/icons/legacy/logos/nuget.svg @@ -0,0 +1,21 @@ + + + + nuget + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/app/public/icons/legacy/logos/php.svg b/app/public/icons/legacy/logos/php.svg new file mode 100644 index 000000000..0a9ac462a --- /dev/null +++ b/app/public/icons/legacy/logos/php.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/app/public/icons/legacy/logos/python.svg b/app/public/icons/legacy/logos/python.svg new file mode 100644 index 000000000..9bceb587a --- /dev/null +++ b/app/public/icons/legacy/logos/python.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/app/public/icons/legacy/logos/rainbow.svg b/app/public/icons/legacy/logos/rainbow.svg new file mode 100644 index 000000000..c16f942ef --- /dev/null +++ b/app/public/icons/legacy/logos/rainbow.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/icons/legacy/logos/react.svg b/app/public/icons/legacy/logos/react.svg new file mode 100644 index 000000000..ea77a618d --- /dev/null +++ b/app/public/icons/legacy/logos/react.svg @@ -0,0 +1,9 @@ + + React Logo + + + + + + + diff --git a/app/public/icons/legacy/logos/ruby.svg b/app/public/icons/legacy/logos/ruby.svg new file mode 100644 index 000000000..b22a5bf10 --- /dev/null +++ b/app/public/icons/legacy/logos/ruby.svg @@ -0,0 +1,4 @@ + + + diff --git a/app/public/icons/legacy/logos/typescript.svg b/app/public/icons/legacy/logos/typescript.svg new file mode 100644 index 000000000..a46d53d49 --- /dev/null +++ b/app/public/icons/legacy/logos/typescript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/public/icons/legacy/logos/verified.svg b/app/public/icons/legacy/logos/verified.svg new file mode 100644 index 000000000..216daecba --- /dev/null +++ b/app/public/icons/legacy/logos/verified.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/public/icons/legacy/logos/wagmi.svg b/app/public/icons/legacy/logos/wagmi.svg new file mode 100644 index 000000000..78e1e2f2c --- /dev/null +++ b/app/public/icons/legacy/logos/wagmi.svg @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/public/icons/legacy/logos/walletconnect.svg b/app/public/icons/legacy/logos/walletconnect.svg new file mode 100644 index 000000000..f8921d8e7 --- /dev/null +++ b/app/public/icons/legacy/logos/walletconnect.svg @@ -0,0 +1,12 @@ + + + + WalletConnect + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/app/public/icons/legacy/logos/web3j.png b/app/public/icons/legacy/logos/web3j.png new file mode 100644 index 000000000..ec031cb32 Binary files /dev/null and b/app/public/icons/legacy/logos/web3j.png differ diff --git a/app/public/icons/legacy/logos/web3js.svg b/app/public/icons/legacy/logos/web3js.svg new file mode 100644 index 000000000..6bd9f9b6e --- /dev/null +++ b/app/public/icons/legacy/logos/web3js.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/app/public/icons/legacy/mark.svg b/app/public/icons/legacy/mark.svg new file mode 100644 index 000000000..f021f6efd --- /dev/null +++ b/app/public/icons/legacy/mark.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/public/icons/legacy/mark_dao.svg b/app/public/icons/legacy/mark_dao.svg new file mode 100644 index 000000000..ea65035b3 --- /dev/null +++ b/app/public/icons/legacy/mark_dao.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/public/icons/libraries/ethers.svg b/app/public/icons/libraries/ethers.svg new file mode 100644 index 000000000..e224357fb --- /dev/null +++ b/app/public/icons/libraries/ethers.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/public/icons/libraries/family.svg b/app/public/icons/libraries/family.svg new file mode 100644 index 000000000..2ecd992da --- /dev/null +++ b/app/public/icons/libraries/family.svg @@ -0,0 +1 @@ + diff --git a/app/public/icons/libraries/go.svg b/app/public/icons/libraries/go.svg new file mode 100644 index 000000000..bccf226b6 --- /dev/null +++ b/app/public/icons/libraries/go.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/icons/libraries/javascript.png b/app/public/icons/libraries/javascript.png new file mode 100644 index 000000000..9f148627c Binary files /dev/null and b/app/public/icons/libraries/javascript.png differ diff --git a/app/public/icons/libraries/rainbow.svg b/app/public/icons/libraries/rainbow.svg new file mode 100644 index 000000000..c16f942ef --- /dev/null +++ b/app/public/icons/libraries/rainbow.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/public/icons/libraries/react.svg b/app/public/icons/libraries/react.svg new file mode 100644 index 000000000..ea77a618d --- /dev/null +++ b/app/public/icons/libraries/react.svg @@ -0,0 +1,9 @@ + + React Logo + + + + + + + diff --git a/app/public/icons/libraries/rust.svg b/app/public/icons/libraries/rust.svg new file mode 100644 index 000000000..dd830c261 --- /dev/null +++ b/app/public/icons/libraries/rust.svg @@ -0,0 +1,57 @@ + + + \ No newline at end of file diff --git a/app/public/icons/libraries/typescript.png b/app/public/icons/libraries/typescript.png new file mode 100644 index 000000000..4284f7577 Binary files /dev/null and b/app/public/icons/libraries/typescript.png differ diff --git a/app/public/icons/libraries/viem.svg b/app/public/icons/libraries/viem.svg new file mode 100644 index 000000000..9b2d2fe51 --- /dev/null +++ b/app/public/icons/libraries/viem.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/public/icons/libraries/wagmi.svg b/app/public/icons/libraries/wagmi.svg new file mode 100644 index 000000000..19c5fcaf7 --- /dev/null +++ b/app/public/icons/libraries/wagmi.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/public/icons/multicoin/bitcoin.svg b/app/public/icons/multicoin/bitcoin.svg new file mode 100644 index 000000000..3a9d68095 --- /dev/null +++ b/app/public/icons/multicoin/bitcoin.svg @@ -0,0 +1 @@ + diff --git a/app/public/icons/multicoin/ethereum.svg b/app/public/icons/multicoin/ethereum.svg new file mode 100644 index 000000000..66e817cac --- /dev/null +++ b/app/public/icons/multicoin/ethereum.svg @@ -0,0 +1 @@ + diff --git a/app/public/icons/snapshot.png b/app/public/icons/snapshot.png new file mode 100644 index 000000000..d39c8c72e Binary files /dev/null and b/app/public/icons/snapshot.png differ diff --git a/app/public/icons/stackblitz.svg b/app/public/icons/stackblitz.svg new file mode 100644 index 000000000..a00d56a09 --- /dev/null +++ b/app/public/icons/stackblitz.svg @@ -0,0 +1 @@ + diff --git a/app/public/icons/tally.ico b/app/public/icons/tally.ico new file mode 100644 index 000000000..9b0be420c Binary files /dev/null and b/app/public/icons/tally.ico differ diff --git a/app/public/icons/tally.svg b/app/public/icons/tally.svg new file mode 100644 index 000000000..1046ed19b --- /dev/null +++ b/app/public/icons/tally.svg @@ -0,0 +1 @@ + diff --git a/app/public/logo.svg b/app/public/logo.svg new file mode 100644 index 000000000..690dd26b9 --- /dev/null +++ b/app/public/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/app/public/nick.eth.png b/app/public/nick.eth.png new file mode 100644 index 000000000..ece856131 Binary files /dev/null and b/app/public/nick.eth.png differ diff --git a/app/public/opengraph.png b/app/public/opengraph.png new file mode 100644 index 000000000..0e57bc1fe Binary files /dev/null and b/app/public/opengraph.png differ diff --git a/app/public/robots.txt b/app/public/robots.txt new file mode 100644 index 000000000..d07f49956 --- /dev/null +++ b/app/public/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Allow: / +Sitemap: https://docs.ens.domains/sitemap.xml diff --git a/app/public/shrug.png b/app/public/shrug.png new file mode 100644 index 000000000..f85c5d8d1 Binary files /dev/null and b/app/public/shrug.png differ diff --git a/app/scripts/.gitignore b/app/scripts/.gitignore new file mode 100644 index 000000000..468f82a1a --- /dev/null +++ b/app/scripts/.gitignore @@ -0,0 +1,175 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/app/scripts/bun.lockb b/app/scripts/bun.lockb new file mode 100755 index 000000000..a25e916a1 Binary files /dev/null and b/app/scripts/bun.lockb differ diff --git a/app/scripts/package.json b/app/scripts/package.json new file mode 100644 index 000000000..d20b80d22 --- /dev/null +++ b/app/scripts/package.json @@ -0,0 +1,19 @@ +{ + "name": "@ensdomains/docs-internal-scripts", + "module": "index.ts", + "type": "module", + "scripts": { + "build-search": "bun run search-builder.bun.ts" + }, + "devDependencies": { + "@types/bun": "latest", + "@types/html-to-text": "^9.0.4" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "html-to-text": "^9.0.5", + "node-html-parser": "^6.1.12" + } +} diff --git a/app/scripts/search-builder.bun.ts b/app/scripts/search-builder.bun.ts new file mode 100644 index 000000000..69ac7eaaf --- /dev/null +++ b/app/scripts/search-builder.bun.ts @@ -0,0 +1,76 @@ +import { Glob } from 'bun'; +import { convert } from 'html-to-text'; +import { join } from 'node:path'; + +// Find all html files in the docs output directory +const glob = new Glob('**/*.html'); + +// Path to import.meta.url +// eslint-disable-next-line unicorn/prevent-abbreviations +const docsOutputDir = new URL('../out', import.meta.url).pathname; + +console.log('========================='); +console.log(docsOutputDir); + +type ContentMetadata = { + title: string; + description: string; + emoji: string; + showDetailsSection: boolean; + contributors: string[]; + id: string; + slug: string; + tag: string; +}; + +// eslint-disable-next-line no-undef +const metadata = await Bun.file( + join(docsOutputDir, 'content-metadata.json') +).json(); + +const content: Record = {}; + +const ignoredSlugs = new Set(['404']); + +for await (const path of glob.scan({ + cwd: docsOutputDir, + absolute: true, +})) { + const slug = path + .replace(docsOutputDir, '') + .replace(/(? h1', format: 'skip' }, + ], + baseElements: { + selectors: ['article'], + }, + }); + + content[slug] = parsed.replace(/\n/g, ' '); + + console.log(slug, '🔍', path); +} + +const out = metadata.map((meta) => ({ + ...meta, + content: content[meta.slug], +})); + +// eslint-disable-next-line no-undef +Bun.write(join(docsOutputDir, 'search.json'), JSON.stringify(out)); +console.log('Done!'); diff --git a/app/scripts/tsconfig.json b/app/scripts/tsconfig.json new file mode 100644 index 000000000..5b93e038e --- /dev/null +++ b/app/scripts/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "lib": ["ESNext"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + /* Linting */ + "skipLibCheck": true, + "strict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true + }, +} diff --git a/app/src/ClientOnly.tsx b/app/src/ClientOnly.tsx new file mode 100644 index 000000000..37fdabae9 --- /dev/null +++ b/app/src/ClientOnly.tsx @@ -0,0 +1,17 @@ +'use client'; + +import { FC, ReactNode, useEffect, useState } from 'react'; + +export const ClientOnly: FC<{ child: () => ReactNode }> = ({ child }) => { + const [visible, setVisible] = useState(false); + + useEffect(() => { + if (typeof window !== 'undefined') { + setTimeout(() => { + setVisible(true); + }, 1); + } + }, []); + + return visible ? child() : undefined; +}; diff --git a/app/src/components/Button.tsx b/app/src/components/Button.tsx new file mode 100644 index 000000000..dc21ff857 --- /dev/null +++ b/app/src/components/Button.tsx @@ -0,0 +1,119 @@ +/* eslint-disable sonarjs/no-duplicate-string */ +import clsx from 'clsx'; +import Link from 'next/link'; +import { FC, PropsWithChildren } from 'react'; + +import { cx } from '@/lib/cx'; + +const ArrowIcon: FC = (properties) => { + return ( + + ); +}; + +const variantStyles = { + primary: 'btn-blue-primary', + disabled: 'btn-disabled', + red: 'btn-red-primary', + secondary: 'btn-blue-surface', + green: 'rounded-lg py-1 px-3 bg-green-400/10 text-green-600 ring-1 ring-inset ring-green-400/20 hover:bg-green-400/10 hover:text-green-300 hover:ring-green-300', + filled: 'rounded-lg bg-zinc-900 py-1 px-3 text-white hover:bg-zinc-700 dark:bg-ens-light-blue-500 dark:text-white dark:hover:bg-ens-light-blue-400', + outline: + 'rounded-lg py-1 px-3 text-zinc-700 ring-1 ring-inset ring-zinc-900/10 hover:bg-zinc-900/2.5 hover:text-zinc-900 dark:text-zinc-400 dark:ring-white/10 dark:hover:bg-white/5 dark:hover:text-white', + text: 'text-ens-light-blue-500 hover:text-ens-light-blue-600 dark:text-ens-light-blue-400 dark:hover:text-ens-light-blue-500', +}; + +type HrefProperties = { + href: string; + target?: string; +}; + +type ButtonProperties = { + onClick: () => void; +}; + +export const Button: FC< + { + variant?: string; + className?: string; + arrow?: 'left' | 'right'; + disabled?: boolean; + width?: 'full' | string; + } & (HrefProperties | ButtonProperties) & + PropsWithChildren +> = ({ + variant = 'primary', + disabled = false, + className, + children, + arrow, + ...properties +}) => { + const Component = properties['href'] ? Link : 'button'; + + const newVariant = disabled ? 'disabled' : variant; + + className = clsx('btn', variantStyles[newVariant], className); + + const arrowIcon = ( + + ); + + return ( + // @ts-ignore + + {arrow === 'left' && arrowIcon} + {children} + {arrow === 'right' && arrowIcon} + {/* @ts-ignore */} + + ); + + // const arrowIcon = ( + // + // ); + + // return ( + // + // {arrow === 'left' && arrowIcon} + // {children} + // {arrow === 'right' && arrowIcon} + // + // ); +}; diff --git a/app/src/components/ConnectKits.tsx b/app/src/components/ConnectKits.tsx new file mode 100644 index 000000000..4ec786a1c --- /dev/null +++ b/app/src/components/ConnectKits.tsx @@ -0,0 +1,223 @@ +import { ReactNode } from 'react'; +import { FaReact, FaSwift } from 'react-icons/fa'; +import { SiRemix } from 'react-icons/si'; +import { + TbBrandAndroid, + TbBrandFlutter, + TbBrandJavascript, + TbBrandNextjs, + TbBrandVite, + TbBrandVue, +} from 'react-icons/tb'; + +import { cx } from '@/lib/cx'; + +import { Button } from './Button'; + +type Template = { + name: string; + url: string; + icon?: ReactNode; +}; + +type Kit = { + name: string; + creator: string; + creator_url: string; + logo: string; + url: string; + demo?: string; + templates?: Template[]; +}; + +export const kits: Kit[] = [ + { + name: 'ConnectKit', + creator: 'Family', + creator_url: 'https://family.co', + logo: '/icons/legacy/logos/connectkit.png', + url: 'https://docs.family.co/connectkit/try-it-out', + demo: 'https://docs.family.co/connectkit/try-it-out', + templates: [ + { + name: 'Create React App', + url: 'https://github.com/family/connectkit/tree/main/examples/cra', + icon: , + }, + { + name: 'Vite + React', + url: 'https://github.com/family/connectkit/tree/main/examples/vite', + icon: , + }, + { + name: 'Next.js', + url: 'https://github.com/family/connectkit/tree/main/examples/nextjs', + icon: , + }, + { + name: 'Next.js + Siwe', + url: 'https://github.com/family/connectkit/tree/main/examples/nextjs-siwe', + icon: , + }, + ], + }, + { + name: 'Rainbowkit', + creator: 'Rainbow', + creator_url: 'https://rainbow.me', + logo: '/icons/legacy/logos/rainbow.svg', + url: 'https://www.rainbowkit.com/docs/introduction', + demo: 'https://rainbowkit-demo.vercel.app/', + templates: [ + { + name: 'Create React App', + url: 'https://codesandbox.io/p/sandbox/github/rainbow-me/rainbowkit/tree/main/examples/with-create-react-app', + icon: , + }, + { + name: 'Vite + React', + url: 'https://codesandbox.io/p/sandbox/github/rainbow-me/rainbowkit/tree/main/examples/with-vite', + icon: , + }, + { + name: 'Next.js', + url: 'https://codesandbox.io/p/sandbox/github/rainbow-me/rainbowkit/tree/main/examples/with-next', + icon: , + }, + { + name: 'Next.js App Router', + url: 'https://codesandbox.io/p/sandbox/github/rainbow-me/rainbowkit/tree/main/examples/with-next-app', + icon: , + }, + { + name: 'Remix', + url: 'https://codesandbox.io/p/sandbox/github/rainbow-me/rainbowkit/tree/main/examples/with-remix', + icon: , + }, + ], + }, + { + name: 'Web3Modalv2', + creator: 'WalletConnect', + creator_url: 'https://walletconnect.org', + logo: '/icons/legacy/logos/walletconnect.svg', + url: 'https://docs.walletconnect.com/2.0/web3modal/about', + demo: 'https://lab.web3modal.com/', + templates: [ + { + name: 'React', + url: 'https://docs.walletconnect.com/web3modal/react/about', + icon: , + }, + { + name: 'Vue', + url: 'https://docs.walletconnect.com/web3modal/vue/about', + icon: , + }, + { + name: 'Javascript', + url: 'https://docs.walletconnect.com/web3modal/javascript/about', + icon: , + }, + { + name: 'Flutter', + url: 'https://docs.walletconnect.com/web3modal/flutter/about', + icon: , + }, + { + name: 'Android', + url: 'https://docs.walletconnect.com/web3modal/android/about', + icon: , + }, + { + name: 'iOS', + url: 'https://docs.walletconnect.com/web3modal/ios/about', + icon: , + }, + ], + }, +]; + +export const ConnectKits = () => { + return ( +
+
+
+ {kits.map((library) => ( +
+
+
+
+ {library.name} +
+
+
+ {library.name} +
+ + by{' '} + + {library.creator} + + +
+
+
+
+ +
+
+
+ {library.demo && ( + + )} +
+
+
+ ))} +
+
+
+ ); +}; diff --git a/app/src/components/GridPattern.tsx b/app/src/components/GridPattern.tsx new file mode 100644 index 000000000..bc9869c2c --- /dev/null +++ b/app/src/components/GridPattern.tsx @@ -0,0 +1,49 @@ +import { useId } from 'react'; + +export const GridPattern = ({ + width, + height, + x, + y, + squares, + ...properties +}) => { + const patternId = useId(); + + return ( + + ); +}; diff --git a/app/src/components/Guides.tsx b/app/src/components/Guides.tsx new file mode 100644 index 000000000..731a063a9 --- /dev/null +++ b/app/src/components/Guides.tsx @@ -0,0 +1,90 @@ +import { Button } from '@/components/Button'; +import { Heading } from '@/components/mdx/heading'; + +const guides = [ + { + href: '/forward-resolution', + name: 'Forward Resolution', + description: + 'Learn how to go from name to address, fetch records, and more.', + }, + { + href: '/reverse-resolution', + name: 'Reverse Resolution', + description: + 'Learn how to go from address to name, using the Reverse Registrar.', + }, + { + href: '/writing-a-resolver', + name: 'Writing a Resolver', + description: + 'Learn how to write a resolver to resolve on-chain names and subnames.', + }, + { + href: '/ccip', + name: 'Cross Chain Interoperability', + description: + 'Explore the CCIP, the protocol that allows your ENS resolvers to be off-chain or on other chains.', + }, + { + href: '/dns', + name: 'DNSSEC', + description: + 'Discover the DNSSEC functionality and use your DNS name in the world of ENS.', + }, + // { + // href: '/pagination', + // name: 'Pagination', + // description: 'Understand how to work with paginated responses.', + // }, + // { + // href: '/errors', + // name: 'Errors', + // description: + // 'Read about the different types of errors returned by the API.', + // }, + // { + // href: '/webhooks', + // name: 'Webhooks', + // description: + // 'Learn how to programmatically configure webhooks for your app.', + // }, + { + href: '/quickstart-dapp', + name: 'Identity in your dApps', + description: + 'Learn how to programmatically configure webhooks for your app.', + }, +]; + +export function Guides() { + return ( +
+ + Guides + +
+ {guides.map((guide) => ( +
+

+ {guide.name} +

+

+ {guide.description} +

+

+ +

+
+ ))} +
+
+ ); +} diff --git a/app/src/components/Libraries.tsx b/app/src/components/Libraries.tsx new file mode 100644 index 000000000..dc929787b --- /dev/null +++ b/app/src/components/Libraries.tsx @@ -0,0 +1,200 @@ +import Link from 'next/link'; +import { ReactNode } from 'react'; +import { FaJava, FaReact, FaRust } from 'react-icons/fa'; +import { SiDelphi, SiKotlin, SiNuget } from 'react-icons/si'; +import { TbBrandGolang, TbBrandJavascript } from 'react-icons/tb'; + +type Language = { + name: string; + logo: ReactNode | string; + libraries: Library[]; +}; + +type Library = { + name: string; + description: string; + href: string; + logo?: string; + official?: boolean; +}; + +export const ensLibraries: Language[] = [ + { + name: 'React', + logo: , + libraries: [ + { + href: 'https://wagmi.sh/', + name: 'Wagmi', + description: '', + logo: '/icons/legacy/logos/wagmi.svg', + }, + ], + }, + { + name: 'JavaScript', + logo: , + libraries: [ + { + href: 'https://viem.sh/', + name: 'Viem', + description: '', + logo: '/icons/legacy/logos/viem.svg', + }, + { + href: 'https://docs.ethers.org/', + name: 'Ethers', + description: '', + logo: '/icons/legacy/logos/ethers.svg', + }, + { + href: 'https://github.com/ensdomains/ensjs-v3', + name: 'ENSjs', + description: '', + logo: '/icons/legacy/logos/ensjs.svg', + official: true, + }, + { + href: 'https://web3js.readthedocs.io/', + name: 'Web3.js', + description: '', + logo: '/icons/legacy/logos/web3js.svg', + }, + ], + }, + { + name: 'Rust', + logo: , + libraries: [ + { + href: 'https://ethers.rs/', + name: 'Ethers.rs', + description: '', + logo: undefined, + }, + { + href: 'https://github.com/alloy-rs/', + name: 'Alloy', + description: '', + logo: undefined, + }, + ], + }, + { + name: 'NuGet', + logo: , + libraries: [ + { + href: 'https://github.com/Nethereum/Nethereum/', + name: 'Nethereum', + description: '', + logo: '/icons/legacy/logos/nuget.svg', + }, + ], + }, + { + name: 'Kotlin', + logo: , + libraries: [ + { + href: 'https://github.com/komputing/KEthereum', + name: 'KEthereum', + description: '', + logo: '/icons/legacy/logos/kethereum.png', + }, + ], + }, + { + name: 'Java', + logo: , + libraries: [ + { + href: 'https://docs.web3j.io/', + name: 'web3j', + description: '', + logo: '/icons/legacy/logos/web3j.png', + }, + ], + }, + { + name: 'Go', + logo: , + libraries: [ + { + href: 'https://github.com/wealdtech/go-ens', + name: 'go-ens', + description: '', + logo: '/icons/legacy/logos/go.svg', + }, + { + href: 'https://github.com/wealdtech/ethereal', + name: 'ethereal', + description: '', + logo: undefined, // - + }, + ], + }, + { + name: 'Delphi', + logo: , + libraries: [ + { + href: 'https://github.com/svanas/delphereum', + name: 'delphereum', + description: '', + logo: undefined, // - + }, + ], + }, +]; + +export function Libraries() { + return ( +
+
+ {ensLibraries.map((language) => ( +
+
+
+ {language.name} +
+
+
+ {language.libraries.map((library) => ( + +
+ {library.logo ? ( +
+ {library.name} +
+ ) : ( + language.logo + )} + {library.name} +
+ + ))} +
+
+ ))} +
+
+ ); +} diff --git a/app/src/components/Logo.tsx b/app/src/components/Logo.tsx new file mode 100644 index 000000000..99cb278c1 --- /dev/null +++ b/app/src/components/Logo.tsx @@ -0,0 +1,125 @@ +import { FC } from 'react'; + +export const Logo: FC = (properties) => { + return ( + <> + + + ); +}; + +export const HLogo: FC = (properties) => ( + <> + + +); diff --git a/app/src/components/ModeToggle.tsx b/app/src/components/ModeToggle.tsx new file mode 100644 index 000000000..3b022b3d2 --- /dev/null +++ b/app/src/components/ModeToggle.tsx @@ -0,0 +1,39 @@ +import { MoonIcon } from '@/components/icons/MoonIcon'; +import { SunIcon } from '@/components/icons/SunIcon'; + +function disableTransitionsTemporarily() { + document.documentElement.classList.add('[&_*]:!transition-none'); + window.setTimeout(() => { + document.documentElement.classList.remove('[&_*]:!transition-none'); + }, 0); +} + +function toggleMode() { + disableTransitionsTemporarily(); + + const darkModeMediaQuery = window.matchMedia( + '(prefers-color-scheme: dark)' + ); + const isSystemDarkMode = darkModeMediaQuery.matches; + const isDarkMode = document.documentElement.classList.toggle('dark'); + + if (isDarkMode === isSystemDarkMode) { + delete window.localStorage.isDarkMode; + } else { + window.localStorage.isDarkMode = isDarkMode; + } +} + +export function ModeToggle() { + return ( + + ); +} diff --git a/app/src/components/Resources.jsx b/app/src/components/Resources.jsx new file mode 100644 index 000000000..4b60fd0ed --- /dev/null +++ b/app/src/components/Resources.jsx @@ -0,0 +1,159 @@ +'use client'; +import { motion, useMotionTemplate, useMotionValue } from 'framer-motion'; +import Link from 'next/link'; + +import { GridPattern } from '@/components/GridPattern'; +import { ChatBubbleIcon } from '@/components/icons/ChatBubbleIcon'; +import { EnvelopeIcon } from '@/components/icons/EnvelopeIcon'; +import { UserIcon } from '@/components/icons/UserIcon'; +import { UsersIcon } from '@/components/icons/UsersIcon'; +import { Heading } from '@/components/mdx/heading'; + +const resources = [ + { + href: 'https://chat.ens.domains/', + name: 'Discord', + description: + 'Chat with us on discord, get support, and have a good time.', + icon: ChatBubbleIcon, + pattern: { + y: -6, + squares: [ + [-1, 2], + [1, 3], + ], + }, + }, + { + href: '/messages', + name: 'Messages', + description: + 'Learn about the message model and how to create, retrieve, update, delete, and list messages.', + icon: EnvelopeIcon, + pattern: { + y: 32, + squares: [ + [0, 2], + [1, 4], + ], + }, + }, + { + href: 'https://discuss.ens.domains/', + name: 'Forum', + description: + 'Learn about the latest happening in DAO governance. Join the conversation, and govern!', + icon: UsersIcon, + pattern: { + y: 22, + squares: [[0, 1]], + }, + }, + { + href: '/contacts', + name: 'Contact Us', + description: + 'Reach out to us if you need help integrating, have questions, or want to collaborate.', + icon: UserIcon, + pattern: { + x: 0, + }, + }, +]; + +function ResourceIcon({ icon: Icon }) { + return ( +
+ +
+ ); +} + +function ResourcePattern({ mouseX, mouseY, ...gridProperties }) { + const maskImage = useMotionTemplate`radial-gradient(180px at ${mouseX}px ${mouseY}px, white, transparent)`; + const style = { maskImage, WebkitMaskImage: maskImage }; + + return ( +
+
+ +
+ + + + +
+ ); +} + +function Resource({ resource }) { + const mouseX = useMotionValue(0); + const mouseY = useMotionValue(0); + + function onMouseMove({ currentTarget, clientX, clientY }) { + const { left, top } = currentTarget.getBoundingClientRect(); + + mouseX.set(clientX - left); + mouseY.set(clientY - top); + } + + return ( +
+ +
+
+ +

+ + + {resource.name} + +

+

+ {resource.description} +

+
+
+ ); +} + +export function Resources() { + return ( +
+ + Resources + +
+ {resources.map((resource) => ( + + ))} +
+
+ ); +} diff --git a/app/src/components/SectionProvider.tsx b/app/src/components/SectionProvider.tsx new file mode 100644 index 000000000..d421d59b9 --- /dev/null +++ b/app/src/components/SectionProvider.tsx @@ -0,0 +1,145 @@ +'use client'; +import { + createContext, + RefObject, + useContext, + useEffect, + useLayoutEffect, + useState, +} from 'react'; +import { createStore, StoreApi, useStore } from 'zustand'; + +import { remToPx } from '@/lib/remToPx'; + +export const createSectionStore = (sections) => { + return createStore<{ + sections: { + id: string; + headingRef: RefObject; + offsetRem: number; + }[]; + visibleSections: string[]; + setVisibleSections: (_visibleSections: string[]) => void; + registerHeading: ({ + id, + ref, + offsetRem, + }: { + id: string; + ref: RefObject; + offsetRem: number; + }) => void; + }>((set) => ({ + sections, + visibleSections: [], + setVisibleSections: (visibleSections) => + set((state) => + state.visibleSections.join(',') === visibleSections.join(',') + ? {} + : { visibleSections } + ), + registerHeading: ({ id, ref, offsetRem }) => + set((state) => { + return { + sections: state.sections.map((section) => { + if (section.id === id) { + return { + ...section, + headingRef: ref, + offsetRem, + }; + } + + return section; + }), + }; + }), + })); +}; + +function useVisibleSections(sectionStore: StoreApi) { + const setVisibleSections = useStore( + sectionStore, + (s) => s.setVisibleSections + ); + const sections = useStore(sectionStore, (s) => s.sections); + + useEffect(() => { + function checkVisibleSections() { + const { innerHeight, scrollY } = window; + const newVisibleSections = []; + + for ( + let sectionIndex = 0; + sectionIndex < sections.length; + sectionIndex++ + ) { + const { id, headingRef, offsetRem } = sections[sectionIndex]; + const offset = remToPx(offsetRem); + const top = + headingRef?.current?.getBoundingClientRect().top + scrollY; + + if (sectionIndex === 0 && top - offset > scrollY) { + newVisibleSections.push('_top'); + } + + const nextSection = sections[sectionIndex + 1]; + const bottom = + (nextSection?.headingRef?.current?.getBoundingClientRect() + .top ?? Number.POSITIVE_INFINITY) + + scrollY - + remToPx(nextSection?.offsetRem ?? 0); + + if ( + (top > scrollY && top < scrollY + innerHeight) || + (bottom > scrollY && bottom < scrollY + innerHeight) || + (top <= scrollY && bottom >= scrollY + innerHeight) + ) { + newVisibleSections.push(id); + } + } + + setVisibleSections(newVisibleSections); + } + + const raf = window.requestAnimationFrame(() => checkVisibleSections()); + + window.addEventListener('scroll', checkVisibleSections, { + passive: true, + }); + window.addEventListener('resize', checkVisibleSections); + + return () => { + window.cancelAnimationFrame(raf); + window.removeEventListener('scroll', checkVisibleSections); + window.removeEventListener('resize', checkVisibleSections); + }; + }, [setVisibleSections, sections]); +} + +const SectionStoreContext = createContext(undefined); + +const useIsomorphicLayoutEffect = + typeof window === 'undefined' ? useEffect : useLayoutEffect; + +export function SectionProvider({ sections, children }) { + const [sectionStore] = useState(() => createSectionStore(sections)); + + useVisibleSections(sectionStore); + + useIsomorphicLayoutEffect(() => { + sectionStore.setState({ sections }); + }, [sectionStore, sections]); + + return ( + + {children} + + ); +} + +export function useSectionStore(selector) { + const store = useContext(SectionStoreContext); + + return useStore(store, selector); +} diff --git a/app/src/components/SmallCopy.tsx b/app/src/components/SmallCopy.tsx new file mode 100644 index 000000000..fe1f7929e --- /dev/null +++ b/app/src/components/SmallCopy.tsx @@ -0,0 +1,20 @@ +'use client'; + +import { FC } from 'react'; +import { FiCopy } from 'react-icons/fi'; + +export const SmallCopy: FC<{ data: string; className?: string }> = ({ + data, + className, +}) => { + return ( + + ); +}; diff --git a/app/src/components/Tag.tsx b/app/src/components/Tag.tsx new file mode 100644 index 000000000..0c688e0e6 --- /dev/null +++ b/app/src/components/Tag.tsx @@ -0,0 +1,53 @@ +import clsx from 'clsx'; + +const variantStyles = { + medium: 'rounded-lg px-1.5 ring-1 ring-inset', +}; + +const colorStyles = { + emerald: { + small: 'text-ens-light-blue-500 dark:text-ens-light-blue-400', + medium: 'ring-ens-300 dark:ring-ens-400/30 bg-ens-light-blue-400/10 text-ens-light-blue-500 dark:text-ens-light-blue-400', + }, + sky: { + small: 'text-sky-500', + medium: 'ring-sky-300 bg-sky-400/10 text-sky-500 dark:ring-sky-400/30 dark:bg-sky-400/10 dark:text-sky-400', + }, + amber: { + small: 'text-amber-500', + medium: 'ring-amber-300 bg-amber-400/10 text-amber-500 dark:ring-amber-400/30 dark:bg-amber-400/10 dark:text-amber-400', + }, + rose: { + small: 'text-red-500 dark:text-rose-500', + medium: 'ring-rose-200 bg-rose-50 text-red-500 dark:ring-rose-500/20 dark:bg-rose-400/10 dark:text-rose-400', + }, + zinc: { + small: 'text-zinc-400 dark:text-zinc-500', + medium: 'ring-zinc-200 bg-zinc-50 text-zinc-500 dark:ring-zinc-500/20 dark:bg-zinc-400/10 dark:text-zinc-400', + }, +}; + +const valueColorMap = { + get: 'emerald', + post: 'sky', + put: 'amber', + delete: 'rose', +}; + +export const Tag = ({ + children, + variant = 'medium', + color = valueColorMap[children.toLowerCase()] ?? 'emerald', +}) => { + return ( + + {children} + + ); +}; diff --git a/app/src/components/Timestamp.tsx b/app/src/components/Timestamp.tsx new file mode 100644 index 000000000..19104265d --- /dev/null +++ b/app/src/components/Timestamp.tsx @@ -0,0 +1,9 @@ +'use client'; +import RelativeTime from '@yaireo/relative-time'; +import { FC } from 'react'; + +const format = new RelativeTime(); + +export const TimeSince: FC<{ date: number }> = ({ date }) => ( + <>{format.from(new Date(date))} +); diff --git a/app/src/components/TruncatedAddress.tsx b/app/src/components/TruncatedAddress.tsx new file mode 100644 index 000000000..b65ce9871 --- /dev/null +++ b/app/src/components/TruncatedAddress.tsx @@ -0,0 +1,12 @@ +'use client'; + +import { formatAddress } from 'ens-tools'; +import { FC } from 'react'; + +export const TruncatedAddress: FC<{ address?: string }> = ({ address }) => { + try { + return <>{formatAddress(address)}; + } catch (error) { + return <>{'FAILED TO TRUNCATE ADDRESS' + JSON.stringify(error)}; + } +}; diff --git a/app/src/components/contribute/ContributorsSection.tsx b/app/src/components/contribute/ContributorsSection.tsx new file mode 100644 index 000000000..616957c37 --- /dev/null +++ b/app/src/components/contribute/ContributorsSection.tsx @@ -0,0 +1,56 @@ +import { FC } from 'react'; +import { FiExternalLink } from 'react-icons/fi'; + +export const ContributorsSection: FC<{ + contributors?: string[]; + expandSingle?: boolean; +}> = ({ contributors, expandSingle }) => { + if (!contributors || contributors.length === 0) return <>; + + return ( +
+ {contributors.length === 1 && expandSingle && ( + + {contributors[0]} + + {contributors[0]} + + + + )} + {contributors.length > (expandSingle ? 1 : 0) && + contributors.map((contributor) => ( + + {contributor} + + + + {contributor} + + + + + + ))} +
+ ); +}; diff --git a/app/src/components/icons/BellIcon.tsx b/app/src/components/icons/BellIcon.tsx new file mode 100644 index 000000000..39be5384d --- /dev/null +++ b/app/src/components/icons/BellIcon.tsx @@ -0,0 +1,17 @@ +export const BellIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/BoltIcon.tsx b/app/src/components/icons/BoltIcon.tsx new file mode 100644 index 000000000..9a872283f --- /dev/null +++ b/app/src/components/icons/BoltIcon.tsx @@ -0,0 +1,11 @@ +export const BoltIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/BookIcon.tsx b/app/src/components/icons/BookIcon.tsx new file mode 100644 index 000000000..62d2ad892 --- /dev/null +++ b/app/src/components/icons/BookIcon.tsx @@ -0,0 +1,17 @@ +export const BookIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/CalendarIcon.tsx b/app/src/components/icons/CalendarIcon.tsx new file mode 100644 index 000000000..7d2cb922f --- /dev/null +++ b/app/src/components/icons/CalendarIcon.tsx @@ -0,0 +1,23 @@ +export const CalendarIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/CartIcon.tsx b/app/src/components/icons/CartIcon.tsx new file mode 100644 index 000000000..23b1e081b --- /dev/null +++ b/app/src/components/icons/CartIcon.tsx @@ -0,0 +1,15 @@ +export const CartIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/ChatBubbleIcon.tsx b/app/src/components/icons/ChatBubbleIcon.tsx new file mode 100644 index 000000000..2da57c7d8 --- /dev/null +++ b/app/src/components/icons/ChatBubbleIcon.tsx @@ -0,0 +1,17 @@ +export const ChatBubbleIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/CheckIcon.tsx b/app/src/components/icons/CheckIcon.tsx new file mode 100644 index 000000000..cb07bbdb1 --- /dev/null +++ b/app/src/components/icons/CheckIcon.tsx @@ -0,0 +1,17 @@ +export const CheckIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/ChevronRightLeftIcon.tsx b/app/src/components/icons/ChevronRightLeftIcon.tsx new file mode 100644 index 000000000..724837995 --- /dev/null +++ b/app/src/components/icons/ChevronRightLeftIcon.tsx @@ -0,0 +1,17 @@ +export const ChevronRightLeftIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/ClipboardIcon.tsx b/app/src/components/icons/ClipboardIcon.tsx new file mode 100644 index 000000000..85eb2a3ca --- /dev/null +++ b/app/src/components/icons/ClipboardIcon.tsx @@ -0,0 +1,33 @@ +export const ClipboardIcon = (properties) => { + return ( + + ); +}; + +// function ClipboardIcon(properties) { +// return ( +// +// ); +// } diff --git a/app/src/components/icons/CogIcon.tsx b/app/src/components/icons/CogIcon.tsx new file mode 100644 index 000000000..a1397c4f5 --- /dev/null +++ b/app/src/components/icons/CogIcon.tsx @@ -0,0 +1,19 @@ +export const CogIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/CopyIcon.tsx b/app/src/components/icons/CopyIcon.tsx new file mode 100644 index 000000000..23d7aeb13 --- /dev/null +++ b/app/src/components/icons/CopyIcon.tsx @@ -0,0 +1,17 @@ +export const CopyIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/DocumentIcon.tsx b/app/src/components/icons/DocumentIcon.tsx new file mode 100644 index 000000000..2093927ca --- /dev/null +++ b/app/src/components/icons/DocumentIcon.tsx @@ -0,0 +1,17 @@ +export const DocumentIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/EnvelopeIcon.tsx b/app/src/components/icons/EnvelopeIcon.tsx new file mode 100644 index 000000000..b6f6fdd55 --- /dev/null +++ b/app/src/components/icons/EnvelopeIcon.tsx @@ -0,0 +1,17 @@ +export const EnvelopeIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/FaceSmileIcon.tsx b/app/src/components/icons/FaceSmileIcon.tsx new file mode 100644 index 000000000..a5cc6f38d --- /dev/null +++ b/app/src/components/icons/FaceSmileIcon.tsx @@ -0,0 +1,17 @@ +export const FaceSmileIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/FolderIcon.tsx b/app/src/components/icons/FolderIcon.tsx new file mode 100644 index 000000000..e47b62900 --- /dev/null +++ b/app/src/components/icons/FolderIcon.tsx @@ -0,0 +1,22 @@ +export const FolderIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/InfoIcon.tsx b/app/src/components/icons/InfoIcon.tsx new file mode 100644 index 000000000..a34313a48 --- /dev/null +++ b/app/src/components/icons/InfoIcon.tsx @@ -0,0 +1,15 @@ +export const InfoIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/LinkIcon.tsx b/app/src/components/icons/LinkIcon.tsx new file mode 100644 index 000000000..c1ea9a50a --- /dev/null +++ b/app/src/components/icons/LinkIcon.tsx @@ -0,0 +1,12 @@ +export const LinkIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/ListIcon.tsx b/app/src/components/icons/ListIcon.tsx new file mode 100644 index 000000000..53190aed1 --- /dev/null +++ b/app/src/components/icons/ListIcon.tsx @@ -0,0 +1,17 @@ +export const ListIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/MagnifyingGlassIcon.tsx b/app/src/components/icons/MagnifyingGlassIcon.tsx new file mode 100644 index 000000000..71b393c0e --- /dev/null +++ b/app/src/components/icons/MagnifyingGlassIcon.tsx @@ -0,0 +1,13 @@ +export const MagnifyingGlassIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/MapPinIcon.tsx b/app/src/components/icons/MapPinIcon.tsx new file mode 100644 index 000000000..622f96d03 --- /dev/null +++ b/app/src/components/icons/MapPinIcon.tsx @@ -0,0 +1,19 @@ +export const MapPinIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/MenuIcon.tsx b/app/src/components/icons/MenuIcon.tsx new file mode 100644 index 000000000..cbd3d9ffb --- /dev/null +++ b/app/src/components/icons/MenuIcon.tsx @@ -0,0 +1,13 @@ +export const MenuIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/MoonIcon.tsx b/app/src/components/icons/MoonIcon.tsx new file mode 100644 index 000000000..4ca7d102a --- /dev/null +++ b/app/src/components/icons/MoonIcon.tsx @@ -0,0 +1,5 @@ +export const MoonIcon = (properties) => ( + +); diff --git a/app/src/components/icons/PackageIcon.tsx b/app/src/components/icons/PackageIcon.tsx new file mode 100644 index 000000000..248c4d985 --- /dev/null +++ b/app/src/components/icons/PackageIcon.tsx @@ -0,0 +1,16 @@ +export const PackageIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/PaperAirplaneIcon.tsx b/app/src/components/icons/PaperAirplaneIcon.tsx new file mode 100644 index 000000000..6105ee83d --- /dev/null +++ b/app/src/components/icons/PaperAirplaneIcon.tsx @@ -0,0 +1,17 @@ +export const PaperAirplaneIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/PaperClipIcon.tsx b/app/src/components/icons/PaperClipIcon.tsx new file mode 100644 index 000000000..6e5b12667 --- /dev/null +++ b/app/src/components/icons/PaperClipIcon.tsx @@ -0,0 +1,12 @@ +export const PaperClipIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/ShapesIcon.tsx b/app/src/components/icons/ShapesIcon.tsx new file mode 100644 index 000000000..47d242f51 --- /dev/null +++ b/app/src/components/icons/ShapesIcon.tsx @@ -0,0 +1,17 @@ +export const ShapesIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/ShirtIcon.tsx b/app/src/components/icons/ShirtIcon.tsx new file mode 100644 index 000000000..a4514994d --- /dev/null +++ b/app/src/components/icons/ShirtIcon.tsx @@ -0,0 +1,11 @@ +export const ShirtIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/SquaresPlusIcon.tsx b/app/src/components/icons/SquaresPlusIcon.tsx new file mode 100644 index 000000000..efa82db75 --- /dev/null +++ b/app/src/components/icons/SquaresPlusIcon.tsx @@ -0,0 +1,17 @@ +export const SquaresPlusIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/SunIcon.tsx b/app/src/components/icons/SunIcon.tsx new file mode 100644 index 000000000..e5d4b09da --- /dev/null +++ b/app/src/components/icons/SunIcon.tsx @@ -0,0 +1,9 @@ +export const SunIcon = (properties) => ( + +); diff --git a/app/src/components/icons/TagIcon.tsx b/app/src/components/icons/TagIcon.tsx new file mode 100644 index 000000000..ff0f89427 --- /dev/null +++ b/app/src/components/icons/TagIcon.tsx @@ -0,0 +1,19 @@ +export const TagIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/UserIcon.tsx b/app/src/components/icons/UserIcon.tsx new file mode 100644 index 000000000..db600377b --- /dev/null +++ b/app/src/components/icons/UserIcon.tsx @@ -0,0 +1,24 @@ +export const UserIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/UsersIcon.tsx b/app/src/components/icons/UsersIcon.tsx new file mode 100644 index 000000000..1531d7866 --- /dev/null +++ b/app/src/components/icons/UsersIcon.tsx @@ -0,0 +1,28 @@ +export const UsersIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/icons/XIcon.tsx b/app/src/components/icons/XIcon.tsx new file mode 100644 index 000000000..5547dc917 --- /dev/null +++ b/app/src/components/icons/XIcon.tsx @@ -0,0 +1,13 @@ +export const XIcon = (properties) => { + return ( + + ); +}; diff --git a/app/src/components/mdx/Col.tsx b/app/src/components/mdx/Col.tsx new file mode 100644 index 000000000..f74b5addc --- /dev/null +++ b/app/src/components/mdx/Col.tsx @@ -0,0 +1,14 @@ +import clsx from 'clsx'; + +export const Col = ({ children, sticky = false }) => { + return ( +
:first-child]:mt-0 [&>:last-child]:mb-0', + sticky && 'xl:sticky xl:top-24' + )} + > + {children} +
+ ); +}; diff --git a/app/src/components/mdx/EmbedLink.tsx b/app/src/components/mdx/EmbedLink.tsx new file mode 100644 index 000000000..532b5609c --- /dev/null +++ b/app/src/components/mdx/EmbedLink.tsx @@ -0,0 +1,33 @@ +import Link from 'next/link'; +import { FC } from 'react'; +import { FiChevronRight } from 'react-icons/fi'; + +export const EmbedLink: FC<{ + title: string; + href: string; + tag?: string; + description: string; + target?: string; +}> = ({ title, href, description, target, tag }) => { + return ( + +
+ + {title} + {description} + + + {tag && ( + + {tag} + + )} + +
+ + ); +}; diff --git a/app/src/components/mdx/Note.tsx b/app/src/components/mdx/Note.tsx new file mode 100644 index 000000000..3fa5defe3 --- /dev/null +++ b/app/src/components/mdx/Note.tsx @@ -0,0 +1,12 @@ +import { InfoIcon } from '../icons/InfoIcon'; + +export const Note = ({ children }) => { + return ( +
+ +
+ {children} +
+
+ ); +}; diff --git a/app/src/components/mdx/Properties.tsx b/app/src/components/mdx/Properties.tsx new file mode 100644 index 000000000..9b320ce1d --- /dev/null +++ b/app/src/components/mdx/Properties.tsx @@ -0,0 +1,9 @@ +export const Properties = ({ children }) => { + return ( +
+
    + {children} +
+
+ ); +}; diff --git a/app/src/components/mdx/Property.tsx b/app/src/components/mdx/Property.tsx new file mode 100644 index 000000000..ed44f10e6 --- /dev/null +++ b/app/src/components/mdx/Property.tsx @@ -0,0 +1,20 @@ +export const Property = ({ name, type, children }) => { + return ( +
  • +
    +
    Name
    +
    + {name} +
    +
    Type
    +
    + {type} +
    +
    Description
    +
    + {children} +
    +
    +
  • + ); +}; diff --git a/app/src/components/mdx/Prose.tsx b/app/src/components/mdx/Prose.tsx new file mode 100644 index 000000000..4a2e8f552 --- /dev/null +++ b/app/src/components/mdx/Prose.tsx @@ -0,0 +1,15 @@ +import clsx from 'clsx'; +import { FC } from 'react'; + +export const Prose: FC<{ + as?: 'article'; + className?: string; + children?: any; +}> = ({ className, ...properties }) => { + return ( +
    + ); +}; diff --git a/app/src/components/mdx/Row.tsx b/app/src/components/mdx/Row.tsx new file mode 100644 index 000000000..333b9963b --- /dev/null +++ b/app/src/components/mdx/Row.tsx @@ -0,0 +1,7 @@ +export const Row = ({ children }) => { + return ( +
    + {children} +
    + ); +}; diff --git a/app/src/components/mdx/heading/Anchor.tsx b/app/src/components/mdx/heading/Anchor.tsx new file mode 100644 index 000000000..ae4056c29 --- /dev/null +++ b/app/src/components/mdx/heading/Anchor.tsx @@ -0,0 +1,35 @@ +import Link from 'next/link'; + +export const AnchorIcon = (properties) => { + return ( + + ); +}; + +export const Anchor = ({ id, inView, children }) => { + return ( +
    + {children} + + {inView && ( +
    +
    + +
    +
    + )} + +
    + ); +}; diff --git a/app/src/components/mdx/heading/Eyebrow.tsx b/app/src/components/mdx/heading/Eyebrow.tsx new file mode 100644 index 000000000..fbf342c85 --- /dev/null +++ b/app/src/components/mdx/heading/Eyebrow.tsx @@ -0,0 +1,19 @@ +import { Tag } from '@/components/Tag'; + +export const Eyebrow = ({ tag, label }) => { + if (!tag && !label) { + return; + } + + return ( +
    + {tag && {tag}} + {tag && label && ( + + )} + {label && ( + {label} + )} +
    + ); +}; diff --git a/app/src/components/mdx/heading/h2.tsx b/app/src/components/mdx/heading/h2.tsx new file mode 100644 index 000000000..db6e8c67e --- /dev/null +++ b/app/src/components/mdx/heading/h2.tsx @@ -0,0 +1,13 @@ +import { Heading } from '.'; + +export const h2 = function H2(properties) { + return ; +}; + +export const h3 = function H2(properties) { + return ; +}; + +export const h4 = function H2(properties) { + return ; +}; diff --git a/app/src/components/mdx/heading/index.tsx b/app/src/components/mdx/heading/index.tsx new file mode 100644 index 000000000..93668496e --- /dev/null +++ b/app/src/components/mdx/heading/index.tsx @@ -0,0 +1,77 @@ +'use client'; +import { useInView } from 'framer-motion'; +import { FC, PropsWithChildren, useEffect, useRef } from 'react'; + +import { useSectionStore } from '@/components/SectionProvider'; +import { cx } from '@/lib/cx'; +import { remToPx } from '@/lib/remToPx'; + +import { Anchor } from './Anchor'; +import { Eyebrow } from './Eyebrow'; + +export const Heading: FC< + PropsWithChildren & { + level?: 2 | 3 | 4 | 5 | 6; + id: string; + tag?: string; + label?: string; + anchor?: boolean; + className?: string; + } +> = ({ level = 2, children, id, tag, label, anchor = true, ...properties }) => { + const Component = `h${level}` as any as FC< + PropsWithChildren & { ref: any; id: any; className: any } + >; + const reference = useRef(); + const registerHeading = useSectionStore((s) => s.registerHeading) as (_v: { + id: string; + ref: any; + offsetRem: number; + }) => void; + + const inView = useInView(reference, { + margin: `${remToPx(-3.5)}px 0px 0px 0px`, + amount: 'all', + }); + + useEffect(() => { + if (level === 2) { + registerHeading({ + id, + ref: reference, + offsetRem: tag || label ? 8 : 6, + }); + } + }); + + return ( + <> + + {anchor ? ( + + {children} + + ) : ( + children + )} +
    + +
    + + ) as any + } + {...properties} + /> + + ); +}; diff --git a/app/src/components/wip/WIP.tsx b/app/src/components/wip/WIP.tsx new file mode 100644 index 000000000..8c831768c --- /dev/null +++ b/app/src/components/wip/WIP.tsx @@ -0,0 +1,27 @@ +import { FC } from 'react'; + +export const WIP: FC<{ missing?: string[] }> = ({ missing }) => { + return ( +
    +
    +

    + 🚧 This page is work in progress 🚧 +

    +

    + 🏗️👷This page is still under construction. Check back at a + later date to see more! +

    + {missing && ( +
    +
    This page is still missing:
    +
      + {missing.map((m, index) => ( +
    • - {m}
    • + ))} +
    +
    + )} +
    +
    + ); +}; diff --git a/app/src/config/languages.ts b/app/src/config/languages.ts new file mode 100644 index 000000000..d0d1f46cd --- /dev/null +++ b/app/src/config/languages.ts @@ -0,0 +1,114 @@ +import { configureLanguages } from '@/content/prose/code/types/language'; + +export const LanguagePresets = configureLanguages({ + typescript: { + icon: '/icons/libraries/typescript.png', + name: 'Typescript', + language: 'typescript', + fallback: ['javascript'], + }, + javascript: { + icon: '/icons/libraries/javascript.png', + name: 'Javascript', + language: 'javascript', + fallback: [], + }, + 'ethers-v5': { + icon: '/icons/libraries/ethers.svg', + language: 'typescript', + name: 'Ethers.js v5', + fallback: ['typescript', 'javascript'], + }, + viem: { + icon: '/icons/libraries/viem.svg', + language: 'typescript', + name: 'Viem', + fallback: ['typescript', 'javascript'], + }, + 'ethers-rs': { + icon: '/icons/libraries/rust.svg', + name: 'Ethers.rs', + language: 'rust', + }, + 'go-ens': { + icon: '/icons/libraries/go.svg', + name: 'Go', + language: 'go', + }, + 'alchemy-sdk': { + icon: '/icons/libraries/alchemy.svg', + name: 'Alchemy SDK', + language: 'typescript', + fallback: ['typescript', 'javascript'], + }, + react: { + icon: '/icons/libraries/react.svg', + name: 'React', + language: 'typescript', + fallback: ['typescript'], + }, + wagmi: { + icon: '/icons/libraries/wagmi.svg', + name: 'Wagmi', + language: 'typescript', + fallback: ['enstools', 'react', 'viem', 'typescript', 'javascript'], + }, + ensjs: { + icon: '/icons/libraries/ensjs.svg', + name: 'ENSjs v3', + language: 'typescript', + fallback: ['wagmi', 'react', 'viem', 'typescript', 'javascript'], + }, + rainbowkit: { + icon: '/icons/libraries/rainbow.svg', + name: 'Rainbowkit', + language: 'typescript', + fallback: [ + 'enstools', + 'wagmi', + 'react', + 'viem', + 'typescript', + 'javascript', + ], + }, + connectkit: { + icon: '/icons/libraries/family.svg', + name: 'Connectkit', + language: 'typescript', + fallback: [ + 'enstools', + 'wagmi', + 'react', + 'viem', + 'typescript', + 'javascript', + ], + }, + enstools: { + icon: '/icons/libraries/family.svg', + name: 'ENS Tools', + language: 'typescript', + fallback: ['wagmi', 'react', 'viem', 'typescript', 'javascript'], + }, + web3py: { + icon: '', + name: 'Web3.py', + language: 'python', + fallback: [], + }, + solidity: { + icon: '/icons/libraries/solidity.svg', + name: 'Solidity', + language: 'solidity', + fallback: [], + }, + nethereum: { + icon: '/icons/libraries/nethereum.svg', + name: 'Nethereum', + language: 'csharp', + fallback: [], + }, +}); + +export type languages = keyof typeof LanguagePresets; diff --git a/app/src/config/navigation.ts b/app/src/config/navigation.ts new file mode 100644 index 000000000..8f8d29994 --- /dev/null +++ b/app/src/config/navigation.ts @@ -0,0 +1,42 @@ +import { ReactNode } from 'react'; + +import { navigation as protocolNavigation } from './navigation/protocol'; + +export type SectionData = { + name: string; + href: string; + icon: ReactNode; + activePattern?: RegExp; + links: routeGroup[]; +}; + +export const isSectionData = (element: any): element is SectionData => { + return (element as SectionData).name !== undefined; +}; + +export type routeLink = { + title: string; + href: string; + icon?: string; + external?: boolean; + wip?: number | boolean; + design_wip?: boolean; +}; + +export type routeGroup = { + title: string; + icon?: string; + links: routeElement[]; +}; + +export type routeElement = routeGroup | routeLink; +export const isRouteLink = (element: routeElement): element is routeLink => { + return (element as routeLink).href !== undefined; +}; +export const isRouteGroup = (element: routeElement): element is routeGroup => { + return (element as routeGroup).links !== undefined; +}; + +export const navigation = { + protocol: protocolNavigation, +}; diff --git a/app/src/config/navigation/protocol.ts b/app/src/config/navigation/protocol.ts new file mode 100644 index 000000000..1173c4ed6 --- /dev/null +++ b/app/src/config/navigation/protocol.ts @@ -0,0 +1,677 @@ +/* eslint-disable sonarjs/no-duplicate-string */ +import { SectionData } from '../navigation'; + +export const navigation: SectionData[] = [ + { + name: 'Intro', + href: '/learn/protocol', + icon: '🏠', + activePattern: /^\/((learn|terminology|changelog|bugs|faq)(\/.*)?)?$/, + links: [ + { + title: 'Learn', + icon: '🧑‍🎓', + links: [ + { + title: 'The Protocol', + href: '/learn/protocol', + icon: '📖', + }, + { + title: 'Deployments', + href: '/learn/deployments', + icon: '📰', + }, + { + title: 'Resolution', + href: '/learn/resolution', + icon: '🔍', + }, + { title: 'DNS Names', href: '/learn/dns', icon: '🌐' }, + { + title: 'Layer 2 & Offchain', + icon: '🔗', + href: '/learn/ccip', + }, + ], + }, + { + title: 'Other', + icon: '📰', + links: [ + { + title: 'Frequently Asked Questions', + href: '/faq', + icon: '📓', + }, + { + title: 'Terminology', + href: '/terminology', + icon: '📓', + }, + { + title: 'Bug Bounties', + href: '/bugs', + icon: '🪲', + }, + // { + // title: 'Changelog', + // href: '/changelog', + // wip: 5, + // icon: '📝', + // }, + ], + }, + ], + }, + { + name: 'Using ENS', + href: '/web', + icon: '📖', + activePattern: /^\/web(\/.*)?/, + links: [ + { + title: '', + links: [ + { + title: 'Getting Started', + href: '/web', + icon: '👋', + }, + ], + }, + { + title: 'Web & Querying', + icon: '🌐', + links: [ + { + title: 'Quickstart', + href: '/web/quickstart', + icon: '⚡', + }, + { + title: 'Tools and Libraries', + href: '/web/libraries', + icon: '🛠️', + }, + { + title: 'Address Lookup', + href: '/web/resolution', + icon: '🔍', + }, + { + title: 'Text Records', + href: '/web/records', + icon: '🔍', + }, + { title: 'Avatars', href: '/web/avatars', icon: '🔍' }, + { + title: 'Primary Names', + href: '/web/reverse', + icon: '🔍', + }, + { + title: 'Multichain', + href: '/web/multichain', + icon: '⛓️', + }, + { + title: 'List Names', + href: '/web/enumerate', + icon: '🔍', + }, + ], + }, + { + title: 'Advanced', + icon: '⚙️', + links: [ + { + title: 'Naming Smart-contracts', + href: '/web/naming-contracts', + }, + { + title: 'Issuing Subdomains', + href: '/web/subdomains', + }, + { + title: 'Subgraph', + href: '/web/subgraph', + }, + // { + // title: 'Sign In With Ethereum (SIWE)', + // href: '/web/siwe', + // wip: 80, + // icon: '✍️', + // }, + ], + }, + { + title: 'Design', + icon: '🖼️', + links: [ + // { + // title: 'Guidelines', + // href: '/web/design', + // }, + { + title: 'Thorin', + href: 'https://thorin.ens.domains/', + external: true, + }, + { + title: 'Media kit', + href: 'https://github.com/ensdomains/media-kit', + external: true, + }, + ], + }, + ], + }, + { + name: 'Smart Contracts', + href: '/contracts', + icon: '⚙️', + activePattern: + /^\/(resolvers|contracts|wrapper|registry|resolution|dns)(\/.*)?/, + links: [ + { + title: '', + links: [ + { + title: 'Welcome', + href: '/contracts', + icon: '👋', + }, + ], + }, + { + title: 'Resolution', + icon: '🌐', + links: [ + { + title: 'Resolution Process', + href: '/resolution', + wip: true, + icon: '✨', + }, + { + title: 'Name Processing', + href: '/resolution/names', + icon: '⚙️', + }, + ], + }, + { + title: 'Resolvers', + icon: '🗺️', + links: [ + { + title: 'Start Here', + href: '/resolvers/quickstart', + icon: '✨', + }, + { + title: 'Public Resolver', + href: '/resolvers/public', + wip: 55, + icon: '🏛️', + }, + { + title: 'Writing your own resolver', + href: '/resolvers/writing', + wip: 45, + icon: '✍️', + }, + { + title: 'Interacting with a resolver', + href: '/resolvers/interacting', + wip: 55, + icon: '👉', + }, + { + title: 'Cross Chain Resolvers', + href: '/resolvers/ccip', + icon: '⛓️', + }, + { + title: 'Interface Reference', + href: '/resolvers/interfaces', + wip: 70, + icon: '✍️', + }, + ], + }, + { + title: 'Registries', + icon: '🏛️', + links: [ + { + title: 'The Registry', + href: '/registry/ens', + icon: '🗒️', + }, + { + title: 'ETH Registrar', + href: '/registry/eth', + icon: '🗒️', + }, + { + title: 'DNS Registrar', + href: '/registry/dns', + icon: '🗒️', + }, + { + title: 'TLDs List', + href: '/dns/tlds', + }, + // { + // title: 'Test Registrar', + // href: '/registry/test', + // wip: true, + // icon: '🗒️', + // }, + { + title: 'Reverse Registrar', + href: '/registry/reverse', + icon: '🗒️', + }, + // { + // title: 'Authoring a registry', + // wip: true, + // href: '/registry/writing', + // icon: '✍️', + // }, + ], + }, + { + title: 'Namewrapper', + icon: '🎁', + links: [ + { + title: 'Overview', + href: '/wrapper/overview', + icon: '📰', + }, + { + title: 'Wrapped States', + href: '/wrapper/states', + icon: '🗒️', + }, + { + title: 'Fuses', + href: '/wrapper/fuses', + icon: '🧨', + }, + { + title: 'Expiry', + href: '/wrapper/expiry', + icon: '🕰️', + }, + { + title: 'Contract Details', + href: '/wrapper/contracts', + icon: '🔍', + }, + { + title: 'Use-Cases', + href: '/wrapper/usecases', + icon: '✨', + }, + ], + }, + ], + }, + { + name: 'Governance', + href: '/dao', + icon: '🏛️', + activePattern: /^\/(dao|governance)(\/.*)?/, + links: [ + { + title: '', + links: [{ title: '👋 Welcome', href: '/dao' }], + }, + { + title: '🧑‍🎓 The interesting bits', + links: [ + { + title: '📜 Constitution', + href: '/dao/constitution', + }, + { title: '🏛️ Foundation', href: '/dao/foundation' }, + { title: '🪂 Airdrop', href: '/dao/airdrop' }, + ], + }, + { + title: '🔗 Links', + links: [ + { + title: 'Discourse', + href: 'https://discuss.ens.domains', + external: true, + }, + { + title: 'Snapshot', + href: 'https://snapshot.org/#/ens.eth', + external: true, + }, + { + title: 'Tally', + href: 'https://www.withtally.com/governance/ens', + external: true, + }, + { + title: 'Sybil', + href: 'https://sybil.org/#/delegates/ens', + external: true, + }, + ], + }, + // { + // title: 'Governance Process', + // links: [ + // { + // title: 'Governance Process', + // href: '/dao/governance/process', + // }, + // { + // title: 'Moderator Checklist', + // href: '/dao/governance/moderator', + // }, + // ], + // }, + { + title: '🧠 Good to know', + links: [ + { + title: 'Submit Proposal', + href: '/dao/proposals/submit', + }, + { + title: 'DAO Stewards', + href: '/dao/stewards', + }, + // { + // title: 'Voting Procedure', + // href: '/dao/proposals/voting', + // }, + { + title: 'Working Group Rules', + href: '/dao/wg/rules', + }, + ], + }, + { + title: '📖 Proposals Term 4', + links: [ + { + title: '4.10 - [Social] Transfer ENS Root Key Ownership to the ENS DAO', + href: '/dao/proposals/4.10', + }, + { + title: '4.9 - [Social] Select providers for EP4.7 streams', + href: '/dao/proposals/4.9', + }, + { + title: '4.8 - [Social] Amend working groups rules to extend to a full year', + href: '/dao/proposals/4.8', + }, + { + title: '4.7 - [Social] Create Service Provider Streams', + href: '/dao/proposals/4.7', + }, + { + title: '4.6 - [Executable] October 2023 Working Group Funding', + href: '/dao/proposals/4.6', + }, + { + title: '4.5 - [Executable] Endowment permissions to karpatkey - Update #3', + href: '/dao/proposals/4.5', + }, + { + title: '4.4 - [Executable] ENS Working Group Budget Proposals', + href: '/dao/proposals/4.4', + }, + { + title: '4.3 - [Executable] Refund Invalid .eth Names', + href: '/dao/proposals/4.3', + }, + { + title: '4.2 - [Executable] Fund the Endowment (second tranche)', + href: '/dao/proposals/4.2', + }, + { + title: '4.1 - [Executable] Approve further actions and strategies for the Endowment', + href: '/dao/proposals/4.1', + }, + ], + }, + { + title: '📙 Proposals Term 3', + links: [ + { + title: '3.7 - [Social] Approval of ENS Name Normalization Standard (ENSIP-15)', + href: '/dao/proposals/3.7', + }, + { + title: '3.6 - [Social] Election of new ENS Foundation director', + href: '/dao/proposals/3.6', + }, + { + title: '3.5 - [Executable] Activate new .eth Controller and Reverse Registrar', + href: '/dao/proposals/3.5', + }, + { + title: '3.4 - [Executable] Fund the Endowment (first tranche)', + href: '/dao/proposals/3.4', + }, + { + title: '3.3 - [Executable] Sell ETH to USDC', + href: '/dao/proposals/3.3', + }, + { + title: '3.2 - [Executable] Q1/Q2 2023 Working Group Funding', + href: '/dao/proposals/3.2', + }, + { + title: '3.1.3 - [Social] Q1/Q2 2023 Funding Request: Public Goods Working Group', + href: '/dao/proposals/3.1.3', + }, + { + title: '3.1.2- [Social] Q1/Q2 2023 Funding Request: Meta-Governance Working Group', + href: '/dao/proposals/3.1.2', + }, + { + title: '3.1.1 - [Social] Q1/Q2 2023 Funding Request: ENS Ecosystem Working Group', + href: '/dao/proposals/3.1.1', + }, + ], + }, + { + title: '📙 Proposals Term 2', + links: [ + { + title: '2.2.5 - [Social] Selection of an ENS endowment fund manager', + href: '/dao/proposals/2.2.5', + }, + { + title: '2.2.4 - [Social] ENS Endaoment RFP', + href: '/dao/proposals/2.2.4', + }, + { + title: '2.2.3 - [Executable] Q3 & Q4 2022 Public Goods WG Budget', + href: '/dao/proposals/2.2.3', + }, + { + title: '2.2.2 - [Executable] Q3 & Q4 2022 Ecosystem WG Budget', + href: '/dao/proposals/2.2.2', + }, + { + title: '2.2.1 - [Executable] Q3 & Q4 2022 Meta-Governance WG Budget', + href: '/dao/proposals/2.2.1', + }, + { + title: '2.1 - [Executable] Funding True Names Ltd', + href: '/dao/proposals/2.1', + }, + ], + }, + { + title: '📗 Proposals Term 1', + links: [ + { + title: '1.9 - [Executable] Fund the Protocol Guild pilot with 200,000 $ENS', + href: '/dao/proposals/1.9', + }, + { + title: '1.8 - [Social] Working Group Rules', + href: '/dao/proposals/1.8', + }, + { + title: '1.7 - [Executable] End the $ENS and EP2 airdrops', + href: '/dao/proposals/1.7', + }, + { + title: '1.6 - [Executable] A DAO-Governed Identity Server', + href: '/dao/proposals/1.6', + }, + { + title: '1.5 - [Executable] Change to Exponential Premium Price Oracle', + href: '/dao/proposals/1.5', + }, + { + title: '1.4 - [Executable] Reimburse True Names for expenses and tax obligations incurred for the DAO', + href: '/dao/proposals/1.4', + }, + { + title: '1.3.4 - [Executable] Q1 & Q2 2022 Public Goods WG Budget', + href: '/dao/proposals/1.3.4', + }, + { + title: '1.3.3 - [Executable] Q1 & Q2 2022 Community WG Budget', + href: '/dao/proposals/1.3.3', + }, + { + title: '1.3.2 - [Executable] Q1 & Q2 2022 ENS Ecosystem WG Budget', + href: '/dao/proposals/1.3.2', + }, + { + title: '1.3.1 - [Executable] Q1 & Q2 2022 Meta-Governance WG Budget', + href: '/dao/proposals/1.3.1', + }, + { + title: '1.2.2 - [Social] Election of a new Director of The ENS Foundation', + href: '/dao/proposals/1.2.2', + }, + { + title: '1.2.1 - [Social] Removal of Brantly Millegan as Director of the ENS Foundation', + href: '/dao/proposals/1.2.1', + }, + { + title: '1.1 - [Executable] Set the temporary premium start price to $100,000', + href: '/dao/proposals/1.1', + }, + ], + }, + { + title: '📘 Proposals Term 0', + links: [ + { + title: '0.4 - [Social] Proposal: Creation of Foundational Working Groups and Working Group Rules', + href: '/dao/proposals/0.4', + }, + { + title: '0.3 - [Social] Amend airdrop proposal to include accidentally returned funds', + href: '/dao/proposals/0.3', + }, + { + title: '0.2 - [Executable] Retrospective airdrop for accounts that owned another account’s primary ENS 1', + href: '/dao/proposals/0.2', + }, + { + title: '0.1 - [Social] Proposal: Transfer ENS Treasury and Contract Ownership', + href: '/dao/proposals/0.1', + }, + ], + }, + ], + }, + { + name: 'Improvement Proposals', + href: '/ensip', + icon: '📜', + activePattern: /^\/(standards|ensip)(\/.*)?/, + links: [ + { + title: '', + links: [{ title: 'Welcome', href: '/ensip', icon: '👋' }], + }, + { + title: 'Improvement Proposals (ENSIPs)', + icon: '📖', + links: [ + { + title: 'Explained', + href: '/ensip', + icon: '🧑‍🏫', + }, + { title: '1 - ENS', href: '/ensip/1' }, + { title: '2 - Hash Registrar', href: '/ensip/2' }, + { + title: '3 - Reverse Resolution', + href: '/ensip/3', + }, + { title: '4 - Contract ABIs', href: '/ensip/4' }, + { title: '5 - Text Records', href: '/ensip/5' }, + { title: '6 - DNS-in-ENS', href: '/ensip/6' }, + { title: '7 - Contenthash', href: '/ensip/7' }, + { + title: '8 - Interface Discovery', + href: '/ensip/8', + }, + { + title: '9 - Multichain Addresses', + href: '/ensip/9', + }, + { + title: '10 - Wildcard Resolution', + href: '/ensip/10', + }, + { + title: '11 - EVM Compatible Chain Address', + href: '/ensip/11', + }, + { + title: '12 - Avatar Text Records', + href: '/ensip/12', + }, + { + title: '13 - SAFE Authentication', + href: '/ensip/13', + }, + { + title: '14 - On-chain Source Parameter', + href: '/ensip/14', + }, + { + title: '15 - ENS Name Normalization Standard', + href: '/ensip/15', + }, + { + title: '16 - Offchain Metadata', + href: '/ensip/16', + }, + ], + }, + ], + }, + // TODO: Uncomment this + // { + // name: 'Learn', + // href: '/learn/protocol', + // icon: '🎓', + // activePattern: /^\/learn(\/.*)?/, + // links: [], + // }, +]; diff --git a/app/src/content/demos/LiveDemo.tsx b/app/src/content/demos/LiveDemo.tsx new file mode 100644 index 000000000..2a360b1f0 --- /dev/null +++ b/app/src/content/demos/LiveDemo.tsx @@ -0,0 +1,73 @@ +import { FC } from 'react'; +import { goerli, mainnet, sepolia } from 'viem/chains'; + +import { DemoBorder } from './border/Border'; +import { ETHRegistryDemo } from './ethregistry/ETHRegistryDemo'; +import { ETHRegistryRenewDemo } from './ethregistryrenew/ETHRegistryRenewDemo'; +import { ListNamesDemo } from './listnames/ListNamesDemo'; +import { NameLookupDemo } from './namelookup/NameLookup'; +import { ResolverTestDemo } from './resolvertest'; +import { ReverseSetNameForDemo } from './reverse-set-name-for/ReverseSetNameForDemo'; +import { SendTransactionDemo } from './send-transaction/SendTransaction'; +import { SiweDemo } from './siwe/SiweDemo'; + +const demos = { + ethregistry: { + title: 'Register a name', + wallet: true, + chains: new Set([mainnet.id, goerli.id, sepolia.id]), + component: ETHRegistryDemo, + }, + ethregistry_renew: { + title: 'Renew a name', + wallet: true, + chains: new Set([mainnet.id, goerli.id, sepolia.id]), + component: ETHRegistryRenewDemo, + }, + name_lookup: { + title: 'Name Lookup', + wallet: false, + component: NameLookupDemo, + }, + siwe: { + title: 'SIWE', + wallet: true, + component: SiweDemo, + }, + resolver_test: { + title: 'Resolver Test', + wallet: true, + component: ResolverTestDemo, + }, + send_transaction: { + title: 'Send Transaction', + wallet: true, + component: SendTransactionDemo, + }, + reversesetnamefordemo: { + title: 'Reverse Set Name For', + wallet: true, + chains: new Set([mainnet.id, goerli.id]), + component: ReverseSetNameForDemo, + }, + listnamesdemo: { + title: 'List Names', + wallet: true, + chains: new Set([mainnet.id, goerli.id]), + component: ListNamesDemo, + }, +}; + +export const LiveDemo: FC<{ id?: string }> = ({ id }) => { + const demo = demos[id]; + + return ( + + {demo.component && } + + ); +}; diff --git a/app/src/content/demos/border/Border.tsx b/app/src/content/demos/border/Border.tsx new file mode 100644 index 000000000..53e636958 --- /dev/null +++ b/app/src/content/demos/border/Border.tsx @@ -0,0 +1,23 @@ +import { FC, PropsWithChildren } from 'react'; + +import { BorderConnection } from './BorderConnection'; + +export const DemoBorder: FC< + PropsWithChildren<{ + showConnect: boolean; + title: string; + chains?: Set; + }> +> = ({ children, showConnect, title, chains }) => { + return ( +
    +
    +
    {title}
    +
    {showConnect && }
    +
    +
    + {children} +
    +
    + ); +}; diff --git a/app/src/content/demos/border/BorderConnection.tsx b/app/src/content/demos/border/BorderConnection.tsx new file mode 100644 index 000000000..6e1397fbc --- /dev/null +++ b/app/src/content/demos/border/BorderConnection.tsx @@ -0,0 +1,37 @@ +'use client'; + +import { FC, useState } from 'react'; +import { FaWallet } from 'react-icons/fa6'; +import { useAccount } from 'wagmi'; + +import { Button } from '@/components/Button'; +import { ConnectModal } from '@/wallet/ConnectModal'; + +import { ChainSwitcher } from './ChainSwitcher'; + +export const BorderConnection: FC<{ chains?: Set }> = ({ chains }) => { + const { isConnected } = useAccount(); + const [isOpen, setIsOpen] = useState(false); + + return ( +
    + setIsOpen(false)} /> + {!isConnected && ( + + )} + {isConnected && ( +
    + + +
    + )} +
    + ); +}; diff --git a/app/src/content/demos/border/ChainSwitcher.tsx b/app/src/content/demos/border/ChainSwitcher.tsx new file mode 100644 index 000000000..96062c84b --- /dev/null +++ b/app/src/content/demos/border/ChainSwitcher.tsx @@ -0,0 +1,73 @@ +/* eslint-disable unicorn/no-nested-ternary */ +import { FC } from 'react'; +import { goerli, holesky, mainnet, sepolia } from 'viem/chains'; +import { + useAccount, + useChainId, + useConnect, + useDisconnect, + useSwitchChain, +} from 'wagmi'; + +export const ChainSwitcher: FC<{ available?: Set }> = ({ + available = new Set([5]), +}) => { + const { chains, error, switchChain } = useSwitchChain(); + const chainId = useChainId(); + const { isConnected, address, connector } = useAccount(); + const { connect, connectors } = useConnect(); + const { disconnectAsync } = useDisconnect(); + + const illegalChain = chainId && !available.has(chainId); + + return ( +
    + {illegalChain && ( +
    +
    Chain not available
    +
    + )} + +
    + ); +}; diff --git a/app/src/content/demos/call/EthCall.tsx b/app/src/content/demos/call/EthCall.tsx new file mode 100644 index 000000000..e14efb12a --- /dev/null +++ b/app/src/content/demos/call/EthCall.tsx @@ -0,0 +1,50 @@ +import clsx from 'clsx'; +import { FC, PropsWithChildren, ReactNode } from 'react'; + +type AllProperties = { + call: ReactNode; + description?: string; +}; + +type EthCallProperties = { + type?: 'call'; +}; + +type EthTransactionProperties = { + type?: 'transaction'; + gas: string; +}; + +export const EthCall: FC< + PropsWithChildren< + AllProperties & (EthCallProperties | EthTransactionProperties) + > +> = ({ type = 'call', call, children, description }) => { + const is_transaction = type == 'transaction'; + + return ( +
    +
    +
    +
    + {is_transaction ? 'Transaction' : 'ETH Call'} +
    +
    +
    + {description} +
    +
    + {call} +
    + {children} +
    +
    + ); +}; diff --git a/app/src/content/demos/ethregistry/ETHRegistryABI.ts b/app/src/content/demos/ethregistry/ETHRegistryABI.ts new file mode 100644 index 000000000..ebea97318 --- /dev/null +++ b/app/src/content/demos/ethregistry/ETHRegistryABI.ts @@ -0,0 +1,382 @@ +export const ETHRegistrarABI = [ + { + inputs: [ + { + internalType: 'contract BaseRegistrarImplementation', + name: '_base', + type: 'address', + }, + { + internalType: 'contract IPriceOracle', + name: '_prices', + type: 'address', + }, + { + internalType: 'uint256', + name: '_minCommitmentAge', + type: 'uint256', + }, + { + internalType: 'uint256', + name: '_maxCommitmentAge', + type: 'uint256', + }, + { + internalType: 'contract ReverseRegistrar', + name: '_reverseRegistrar', + type: 'address', + }, + { + internalType: 'contract INameWrapper', + name: '_nameWrapper', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + inputs: [ + { internalType: 'bytes32', name: 'commitment', type: 'bytes32' }, + ], + name: 'CommitmentTooNew', + type: 'error', + }, + { + inputs: [ + { internalType: 'bytes32', name: 'commitment', type: 'bytes32' }, + ], + name: 'CommitmentTooOld', + type: 'error', + }, + { + inputs: [ + { internalType: 'uint256', name: 'duration', type: 'uint256' }, + ], + name: 'DurationTooShort', + type: 'error', + }, + { inputs: [], name: 'InsufficientValue', type: 'error' }, + { inputs: [], name: 'MaxCommitmentAgeTooHigh', type: 'error' }, + { inputs: [], name: 'MaxCommitmentAgeTooLow', type: 'error' }, + { + inputs: [{ internalType: 'string', name: 'name', type: 'string' }], + name: 'NameNotAvailable', + type: 'error', + }, + { inputs: [], name: 'ResolverRequiredWhenDataSupplied', type: 'error' }, + { + inputs: [ + { internalType: 'bytes32', name: 'commitment', type: 'bytes32' }, + ], + name: 'UnexpiredCommitmentExists', + type: 'error', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'name', + type: 'string', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'label', + type: 'bytes32', + }, + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'baseCost', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'premium', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'expires', + type: 'uint256', + }, + ], + name: 'NameRegistered', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'name', + type: 'string', + }, + { + indexed: true, + internalType: 'bytes32', + name: 'label', + type: 'bytes32', + }, + { + indexed: false, + internalType: 'uint256', + name: 'cost', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'expires', + type: 'uint256', + }, + ], + name: 'NameRenewed', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'previousOwner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'OwnershipTransferred', + type: 'event', + }, + { + inputs: [], + name: 'MIN_REGISTRATION_DURATION', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ internalType: 'string', name: 'name', type: 'string' }], + name: 'available', + outputs: [{ internalType: 'bool', name: '', type: 'bool' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'bytes32', name: 'commitment', type: 'bytes32' }, + ], + name: 'commit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], + name: 'commitments', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'string', name: 'name', type: 'string' }, + { internalType: 'address', name: 'owner', type: 'address' }, + { internalType: 'uint256', name: 'duration', type: 'uint256' }, + { internalType: 'bytes32', name: 'secret', type: 'bytes32' }, + { internalType: 'address', name: 'resolver', type: 'address' }, + { internalType: 'bytes[]', name: 'data', type: 'bytes[]' }, + { internalType: 'bool', name: 'reverseRecord', type: 'bool' }, + { + internalType: 'uint16', + name: 'ownerControlledFuses', + type: 'uint16', + }, + ], + name: 'makeCommitment', + outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'maxCommitmentAge', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'minCommitmentAge', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'nameWrapper', + outputs: [ + { + internalType: 'contract INameWrapper', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [{ internalType: 'address', name: '', type: 'address' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'prices', + outputs: [ + { + internalType: 'contract IPriceOracle', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: '_token', type: 'address' }, + { internalType: 'address', name: '_to', type: 'address' }, + { internalType: 'uint256', name: '_amount', type: 'uint256' }, + ], + name: 'recoverFunds', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { internalType: 'string', name: 'name', type: 'string' }, + { internalType: 'address', name: 'owner', type: 'address' }, + { internalType: 'uint256', name: 'duration', type: 'uint256' }, + { internalType: 'bytes32', name: 'secret', type: 'bytes32' }, + { internalType: 'address', name: 'resolver', type: 'address' }, + { internalType: 'bytes[]', name: 'data', type: 'bytes[]' }, + { internalType: 'bool', name: 'reverseRecord', type: 'bool' }, + { + internalType: 'uint16', + name: 'ownerControlledFuses', + type: 'uint16', + }, + ], + name: 'register', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { internalType: 'string', name: 'name', type: 'string' }, + { internalType: 'uint256', name: 'duration', type: 'uint256' }, + ], + name: 'renew', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { internalType: 'string', name: 'name', type: 'string' }, + { internalType: 'uint256', name: 'duration', type: 'uint256' }, + ], + name: 'rentPrice', + outputs: [ + { + components: [ + { internalType: 'uint256', name: 'base', type: 'uint256' }, + { + internalType: 'uint256', + name: 'premium', + type: 'uint256', + }, + ], + internalType: 'struct IPriceOracle.Price', + name: 'price', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'reverseRegistrar', + outputs: [ + { + internalType: 'contract ReverseRegistrar', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'bytes4', name: 'interfaceID', type: 'bytes4' }, + ], + name: 'supportsInterface', + outputs: [{ internalType: 'bool', name: '', type: 'bool' }], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: 'newOwner', type: 'address' }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [{ internalType: 'string', name: 'name', type: 'string' }], + name: 'valid', + outputs: [{ internalType: 'bool', name: '', type: 'bool' }], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; diff --git a/app/src/content/demos/ethregistry/ETHRegistryDemo.tsx b/app/src/content/demos/ethregistry/ETHRegistryDemo.tsx new file mode 100644 index 000000000..0191bc328 --- /dev/null +++ b/app/src/content/demos/ethregistry/ETHRegistryDemo.tsx @@ -0,0 +1,90 @@ +'use client'; + +import { useState } from 'react'; +import { FiClock } from 'react-icons/fi'; +import { useAccount, useChainId } from 'wagmi'; + +import { ClientOnly } from '@/ClientOnly'; + +import { DurationField } from './inputs/DurationField'; +import { GenerateSecret } from './inputs/GenerateSecret'; +import { LabelField } from './inputs/LabelField'; +import { OwnerField } from './inputs/OwnerField'; +import { ResolverField } from './inputs/ResolverField'; +import { AvailabilityCheck } from './stage/AvailabilityCheck'; +import { CommitmentCheck } from './stage/CommitmentCheck'; +import { RentPriceCheck } from './stage/RentPriceCheck'; +import { MakeCommit } from './transactions/MakeCommit'; +import { RegisterName } from './transactions/RegisterName'; + +const title = 'Register a Name (Live Demo)'; + +const Demo = () => { + const { address } = useAccount(); + const chainId = useChainId(); + + /* User Configurable Values */ + const [label, setLabel] = useState('testname123456'); + const [owner, setOwner] = useState( + '0x225f137127d9067788314bc7fcc1f36746a3c3B5' + ); + const [resolver, setResolver] = useState( + '0x225f137127d9067788314bc7fcc1f36746a3c3B5' + ); + const [duration, setDuration] = useState(60 * 60 * 24 * 365); + const [secret, setSecret] = useState( + '0x0000000000000000000000000000000000000000000000000000000000000000' + ); + + /* State Values */ + const [available, setAvailable] = useState(false); + const [commithash, setCommithash] = useState(''); + // eslint-disable-next-line unicorn/no-useless-undefined + const [rentPrice, setRentPrice] = useState(undefined); + + const { isConnected } = useAccount(); + + return ( +
    +
    + {!isConnected &&
    Please Connect Wallet
    } + + + + + + + + +
    + + Wait 60 seconds. +
    + + +
    +
    + ); +}; + +export const ETHRegistryDemo = () => { + return } />; +}; diff --git a/app/src/content/demos/ethregistry/hooks/isAvailable.ts b/app/src/content/demos/ethregistry/hooks/isAvailable.ts new file mode 100644 index 000000000..b9ae655bb --- /dev/null +++ b/app/src/content/demos/ethregistry/hooks/isAvailable.ts @@ -0,0 +1,28 @@ +import { goerli, mainnet, sepolia } from 'viem/chains'; +import { useChainId, useReadContract } from 'wagmi'; + +import { ETHRegistrarABI } from '../ETHRegistryABI'; + +const deployments = { + [goerli.id]: '0xCc5e7dB10E65EED1BBD105359e7268aa660f6734', + [mainnet.id]: '0x253553366Da8546fC250F225fe3d25d0C782303b', + [sepolia.id]: '0xFED6a969AaA60E4961FCD3EBF1A2e8913ac65B72', +}; + +export const useIsAvailable = (name: string) => { + const chainId = useChainId(); + + const { data, isLoading } = useReadContract({ + address: deployments[chainId] as `0x${string}`, + abi: ETHRegistrarABI, + functionName: 'available', + args: [name], + // enabled: !!name && name.length >= 3, + chainId, + }); + + return { + isAvailable: data as boolean, + isLoadingAvailability: isLoading, + }; +}; diff --git a/app/src/content/demos/ethregistry/hooks/useCommitment.ts b/app/src/content/demos/ethregistry/hooks/useCommitment.ts new file mode 100644 index 000000000..db67592cf --- /dev/null +++ b/app/src/content/demos/ethregistry/hooks/useCommitment.ts @@ -0,0 +1,41 @@ +import { goerli, mainnet, sepolia } from 'viem/chains'; +import { useChainId, useReadContract } from 'wagmi'; + +import { ETHRegistrarABI } from '../ETHRegistryABI'; + +const deployments = { + [goerli.id]: '0xCc5e7dB10E65EED1BBD105359e7268aa660f6734', + [mainnet.id]: '0x253553366Da8546fC250F225fe3d25d0C782303b', + [sepolia.id]: '0xFED6a969AaA60E4961FCD3EBF1A2e8913ac65B72', +}; + +export const useCommitment = ( + name: string, + owner: string, + duration: number, + secret: string, + resolver: string +) => { + const chainId = useChainId(); + + const { data, isLoading } = useReadContract({ + address: deployments[chainId] as `0x${string}`, + abi: ETHRegistrarABI, + functionName: 'makeCommitment', + args: [name, owner, duration, secret, resolver, [], false, 0], + // enabled: + // !!name && + // name.length >= 3 && + // !!owner && + // !!duration && + // duration > 0 && + // !!secret && + // !!resolver, + chainId, + }); + + return { + commithash: data as string, + isLoadingCommithash: isLoading, + }; +}; diff --git a/app/src/content/demos/ethregistry/hooks/useRentPrice.ts b/app/src/content/demos/ethregistry/hooks/useRentPrice.ts new file mode 100644 index 000000000..35458941f --- /dev/null +++ b/app/src/content/demos/ethregistry/hooks/useRentPrice.ts @@ -0,0 +1,28 @@ +import { goerli, mainnet, sepolia } from 'viem/chains'; +import { useChainId, useReadContract } from 'wagmi'; + +import { ETHRegistrarABI } from '../ETHRegistryABI'; + +const deployments = { + [goerli.id]: '0xCc5e7dB10E65EED1BBD105359e7268aa660f6734', + [mainnet.id]: '0x253553366Da8546fC250F225fe3d25d0C782303b', + [sepolia.id]: '0xFED6a969AaA60E4961FCD3EBF1A2e8913ac65B72', +}; + +export const useRentPrice = (name: string, duration: number) => { + const chainId = useChainId(); + + const { data, isLoading } = useReadContract({ + address: deployments[chainId] as `0x${string}`, + abi: ETHRegistrarABI, + functionName: 'rentPrice', + args: [name, duration], + // enabled: !!name && name.length >= 3 && !!duration && duration > 0, + chainId, + }); + + return { + rentPrice: data as { base: bigint; premium: bigint }, + isLoadingRentPrice: isLoading, + }; +}; diff --git a/app/src/content/demos/ethregistry/inputs/ChainField.tsx b/app/src/content/demos/ethregistry/inputs/ChainField.tsx new file mode 100644 index 000000000..9155cf800 --- /dev/null +++ b/app/src/content/demos/ethregistry/inputs/ChainField.tsx @@ -0,0 +1,65 @@ +/* eslint-disable unicorn/no-nested-ternary */ +import { FC } from 'react'; +import { goerli, holesky, mainnet, sepolia } from 'viem/chains'; +import { + useAccount, + useChainId, + useConnect, + useDisconnect, + useSwitchChain, +} from 'wagmi'; + +import { Button } from '@/components/Button'; + +export const ChainField: FC<{ available?: Set }> = ({ + available = new Set([5]), +}) => { + const { chains, error, switchChain } = useSwitchChain(); + const chainId = useChainId(); + const { isConnected, address, connector } = useAccount(); + const { connect, connectors } = useConnect(); + const { disconnectAsync } = useDisconnect(); + + return ( +
    + Chain (currently {chainId}) +
    + {( + [ + [mainnet.id, 'Mainnet'], + [goerli.id, 'Goerli'], + [sepolia.id, 'Sepolia'], + [holesky.id, 'Holesky'], + ] as [number, string][] + ).map(([id, name]) => { + const is_active = id === chainId; + const is_available = available.has(id); + const variant = is_active + ? 'primary' + : is_available + ? 'secondary' + : 'disabled'; + + return ( + + ); + })} +
    +
    + ); +}; diff --git a/app/src/content/demos/ethregistry/inputs/DurationField.tsx b/app/src/content/demos/ethregistry/inputs/DurationField.tsx new file mode 100644 index 000000000..66e2bdac1 --- /dev/null +++ b/app/src/content/demos/ethregistry/inputs/DurationField.tsx @@ -0,0 +1,53 @@ +import { FC } from 'react'; + +import { Button } from '@/components/Button'; + +export const DurationField: FC<{ + duration: number; + setDuration: (_duration: number) => void; +}> = ({ duration, setDuration }) => { + const id = 'duration'; + + return ( +
    + +
    + {( + [ + [60 * 60 * 24 * 30, '1 month'], + [60 * 60 * 24 * 365, '1 year'], + [60 * 60 * 24 * 365 * 2, '2 years'], + ] as [number, string][] + ).map(([time, name]) => ( + + ))} + { + try { + setDuration(Number(event.target.value)); + } catch (error) { + event.preventDefault(); + console.log(error); + } + }} + className="input max-w-sm" + placeholder="31536000" + /> +
    +
    + ); +}; diff --git a/app/src/content/demos/ethregistry/inputs/GenerateSecret.tsx b/app/src/content/demos/ethregistry/inputs/GenerateSecret.tsx new file mode 100644 index 000000000..9d91231f4 --- /dev/null +++ b/app/src/content/demos/ethregistry/inputs/GenerateSecret.tsx @@ -0,0 +1,33 @@ +import { FC } from 'react'; +import { FiRefreshCcw } from 'react-icons/fi'; + +import { Button } from '@/components/Button'; + +export const GenerateSecret: FC<{ + secret: string; + setSecret: (secret: string) => void; +}> = ({ secret, setSecret }) => { + return ( +
    +

    Secret (random bytes32):

    +
    + setSecret(event.target.value)} + className="input" + placeholder="0x0000000000000000000000000000000000000000000000000000000000000000" + /> + +
    +
    + ); +}; diff --git a/app/src/content/demos/ethregistry/inputs/LabelField.tsx b/app/src/content/demos/ethregistry/inputs/LabelField.tsx new file mode 100644 index 000000000..b2b839feb --- /dev/null +++ b/app/src/content/demos/ethregistry/inputs/LabelField.tsx @@ -0,0 +1,29 @@ +import { FC } from 'react'; + +export const LabelField: FC<{ + label: string; + setLabel: (_label: string) => void; +}> = ({ label, setLabel }) => { + const id = 'label'; // TODO: + + return ( +
    + +
    + setLabel(event.target.value)} + className="input" + placeholder="test123" + name="label" + /> +
    .eth
    +
    +
    + ); +}; diff --git a/app/src/content/demos/ethregistry/inputs/OwnerField.tsx b/app/src/content/demos/ethregistry/inputs/OwnerField.tsx new file mode 100644 index 000000000..46bfe2a99 --- /dev/null +++ b/app/src/content/demos/ethregistry/inputs/OwnerField.tsx @@ -0,0 +1,37 @@ +import { FC } from 'react'; +import { useAccount } from 'wagmi'; + +import { Button } from '@/components/Button'; + +export const OwnerField: FC<{ + owner: string; + setOwner: (_owner: string) => void; +}> = ({ owner, setOwner }) => { + const { address } = useAccount(); + + return ( +
    + +
    + setOwner(event.target.value)} + className="input" + placeholder="0x225f137127d9067788314bc7fcc1f36746a3c3B5" + /> + {address && ( + + )} +
    +
    + ); +}; diff --git a/app/src/content/demos/ethregistry/inputs/ResolverField.tsx b/app/src/content/demos/ethregistry/inputs/ResolverField.tsx new file mode 100644 index 000000000..44374ce72 --- /dev/null +++ b/app/src/content/demos/ethregistry/inputs/ResolverField.tsx @@ -0,0 +1,20 @@ +import { FC } from 'react'; + +export const ResolverField: FC<{ + resolver: string; + setResolver: (owner: string) => void; +}> = ({ resolver: owner, setResolver: setOwner }) => { + return ( +
    +

    Resolver (address):

    +
    + setOwner(event.target.value)} + className="input" + placeholder="0x225f137127d9067788314bc7fcc1f36746a3c3B5" + /> +
    +
    + ); +}; diff --git a/app/src/content/demos/ethregistry/stage/AvailabilityCheck.tsx b/app/src/content/demos/ethregistry/stage/AvailabilityCheck.tsx new file mode 100644 index 000000000..d39157afc --- /dev/null +++ b/app/src/content/demos/ethregistry/stage/AvailabilityCheck.tsx @@ -0,0 +1,56 @@ +import { FC, useEffect } from 'react'; +import { FiCheck, FiX } from 'react-icons/fi'; + +import { EthCall } from '../../call/EthCall'; +import { useIsAvailable } from '../hooks/isAvailable'; + +export const AvailabilityCheck: FC<{ + name: string; + setAvailable?: (_available: boolean) => void; +}> = ({ name, setAvailable }) => { + const { isAvailable, isLoadingAvailability } = useIsAvailable(name); + + useEffect(() => { + setAvailable(isAvailable); + }, [isAvailable]); + + return ( +
    + + + ETHRegistrarController + + .available( + + "{name}" + + ) +
    + } + > + {isLoadingAvailability ? ( +
    + Loading... +
    + ) : ( +
    + {isAvailable ? ( +
    + + Name is Available +
    + ) : ( +
    + + Name Taken +
    + )} +
    + )} + +
    + ); +}; diff --git a/app/src/content/demos/ethregistry/stage/CommitmentCheck.tsx b/app/src/content/demos/ethregistry/stage/CommitmentCheck.tsx new file mode 100644 index 000000000..298006f91 --- /dev/null +++ b/app/src/content/demos/ethregistry/stage/CommitmentCheck.tsx @@ -0,0 +1,89 @@ +import { FC, useEffect } from 'react'; +import { FiCheck, FiX } from 'react-icons/fi'; + +import { EthCall } from '../../call/EthCall'; +import { useCommitment } from '../hooks/useCommitment'; + +export const CommitmentCheck: FC<{ + name: string; + duration: number; + owner: string; + secret: string; + resolver: string; + setCommithash?: (_commithash: string) => void; +}> = ({ name, duration, owner, secret, resolver, setCommithash }) => { + const { commithash, isLoadingCommithash } = useCommitment( + name, + owner, + duration, + secret, + resolver + ); + + const isReady = + name && duration && owner && secret && resolver && !isLoadingCommithash; + + useEffect(() => { + if (isReady) { + setCommithash(commithash); + } else { + setCommithash(''); + } + }, [commithash, isReady, isLoadingCommithash]); + + return ( +
    + + + ETHRegistrarController + + .makeCommitment( + + "{name}" + + ,{' '} + + {owner} + + , + + {duration} + + , + + {secret} + + , + + {resolver} + + , [], false, 0 ) +
    + } + > + {isLoadingCommithash ? ( +
    + Loading... +
    + ) : ( +
    + {commithash ? ( +
    + + CommitHash: {commithash} +
    + ) : ( +
    + + Problem +
    + )} +
    + )} + + + ); +}; diff --git a/app/src/content/demos/ethregistry/stage/RentPriceCheck.tsx b/app/src/content/demos/ethregistry/stage/RentPriceCheck.tsx new file mode 100644 index 000000000..bd9394649 --- /dev/null +++ b/app/src/content/demos/ethregistry/stage/RentPriceCheck.tsx @@ -0,0 +1,62 @@ +import { FC, useEffect } from 'react'; +import { FiCheck, FiX } from 'react-icons/fi'; + +import { EthCall } from '../../call/EthCall'; +import { useRentPrice } from '../hooks/useRentPrice'; + +export const RentPriceCheck: FC<{ + name: string; + duration: number; + setRentPrice?: (_price: bigint | null) => void; +}> = ({ name, duration, setRentPrice }) => { + const { rentPrice, isLoadingRentPrice } = useRentPrice(name, duration); + + useEffect(() => { + if (isLoadingRentPrice || !rentPrice) { + // eslint-disable-next-line unicorn/no-null + setRentPrice?.(null); + } else { + setRentPrice?.((rentPrice?.base + rentPrice?.premium) as bigint); + } + }, [isLoadingRentPrice, rentPrice]); + + return ( +
    + + + ETHRegistrarController + + .rentPrice( + + "{name}" + + ,{' '} + + {duration} + + ) +
    + } + > +
    + {rentPrice ? ( +
    + + Rent Price: (Base:{' '} + {rentPrice?.base.toLocaleString()}, Premium:{' '} + {rentPrice?.premium.toLocaleString()}) +
    + ) : ( +
    + + Problem +
    + )} +
    + + + ); +}; diff --git a/app/src/content/demos/ethregistry/transactions/MakeCommit.tsx b/app/src/content/demos/ethregistry/transactions/MakeCommit.tsx new file mode 100644 index 000000000..702001be2 --- /dev/null +++ b/app/src/content/demos/ethregistry/transactions/MakeCommit.tsx @@ -0,0 +1,66 @@ +'use client'; + +import { FC } from 'react'; +import { FiX } from 'react-icons/fi'; +import { useEstimateGas, useWriteContract } from 'wagmi'; + +import { Button } from '@/components/Button'; + +import { EthCall } from '../../call/EthCall'; +import { ETHRegistrarABI } from '../ETHRegistryABI'; + +export const MakeCommit: FC<{ commithash: string }> = ({ commithash }) => { + const config = { + abi: ETHRegistrarABI, + to: '0xcc5e7db10e65eed1bbd105359e7268aa660f6734', + functionName: 'commit', + args: [commithash], + enabled: !!commithash, + }; + + const { data: gas, isError } = useEstimateGas(config); + + const { writeContract } = useWriteContract({}); + + return ( +
    + + + ETHRegistrarController + + .commit( + + "{commithash}" + + ) +
    + } + > +
    +
    {gas?.toString()} gas
    + +
    + {isError && ( +
    + + Problem +
    + )} + + + ); +}; diff --git a/app/src/content/demos/ethregistry/transactions/RegisterName.tsx b/app/src/content/demos/ethregistry/transactions/RegisterName.tsx new file mode 100644 index 000000000..95a594f07 --- /dev/null +++ b/app/src/content/demos/ethregistry/transactions/RegisterName.tsx @@ -0,0 +1,101 @@ +import { FC } from 'react'; +import { FiX } from 'react-icons/fi'; +import { formatEther } from 'viem'; +import { useEstimateGas, useSimulateContract, useWriteContract } from 'wagmi'; + +import { Button } from '@/components/Button'; + +import { EthCall } from '../../call/EthCall'; +import { ETHRegistrarABI } from '../ETHRegistryABI'; + +export const RegisterName: FC<{ + name: string; + duration: number; + owner: string; + secret: string; + resolver: string; + rentPrice: bigint; +}> = ({ name, duration, owner, secret, resolver, rentPrice }) => { + const isReady = + name && duration && owner && secret && resolver && rentPrice > 0; + + const config = { + abi: ETHRegistrarABI, + to: '0xcc5e7db10e65eed1bbd105359e7268aa660f6734', + functionName: 'register', + args: [name, owner, duration, secret, resolver, [], false, 0], + value: rentPrice, + enabled: isReady, + }; + + const { data: registerCallResult, writeContract } = useWriteContract({}); + const { data, isError } = useSimulateContract(config); + const { data: gas } = useEstimateGas(config); + + const rentPriceFormatted = formatEther(rentPrice || BigInt(0)); + + return ( +
    + + + ETHRegistrarController + + .register( + + "{name}" + + ,{' '} + + {owner} + + , + + {duration} + + , + + {secret} + + , + + {resolver} + + , [], false, 0 ) +
    + } + gas={gas?.toString()} + > +
    +
    {gas?.toString()} gas
    +
    {rentPriceFormatted} eth
    + +
    + {!isReady && ( +
    + + Not Ready +
    + )} + {isError && ( +
    + + Problem +
    + )} + + + ); +}; diff --git a/app/src/content/demos/ethregistryrenew/ETHRegistryRenewDemo.tsx b/app/src/content/demos/ethregistryrenew/ETHRegistryRenewDemo.tsx new file mode 100644 index 000000000..60e2aaa5a --- /dev/null +++ b/app/src/content/demos/ethregistryrenew/ETHRegistryRenewDemo.tsx @@ -0,0 +1,60 @@ +'use client'; + +import { useState } from 'react'; +import { useAccount, useChainId } from 'wagmi'; + +import { ClientOnly } from '@/ClientOnly'; + +import { DurationField } from '../ethregistry/inputs/DurationField'; +import { LabelField } from '../ethregistry/inputs/LabelField'; +import { RentPriceCheck } from '../ethregistry/stage/RentPriceCheck'; +import { RenewName } from './transactions/RenewName'; + +const Demo = () => { + const { address } = useAccount(); + const chainId = useChainId(); + + /* User Configurable Values */ + const [label, setLabel] = useState('testname123456'); + const [owner, setOwner] = useState( + '0x225f137127d9067788314bc7fcc1f36746a3c3B5' + ); + const [resolver, setResolver] = useState( + '0x225f137127d9067788314bc7fcc1f36746a3c3B5' + ); + const [duration, setDuration] = useState(60 * 60 * 24 * 365); + const [secret, setSecret] = useState( + '0x0000000000000000000000000000000000000000000000000000000000000000' + ); + + /* State Values */ + const [available, setAvailable] = useState(false); + const [commithash, setCommithash] = useState(''); + // eslint-disable-next-line unicorn/no-useless-undefined + const [rentPrice, setRentPrice] = useState(undefined); + + const { isConnected } = useAccount(); + + return ( +
    +
    + + + + +
    +
    + ); +}; + +export const ETHRegistryRenewDemo = () => { + return } />; +}; diff --git a/app/src/content/demos/ethregistryrenew/transactions/RenewName.tsx b/app/src/content/demos/ethregistryrenew/transactions/RenewName.tsx new file mode 100644 index 000000000..11a106ad0 --- /dev/null +++ b/app/src/content/demos/ethregistryrenew/transactions/RenewName.tsx @@ -0,0 +1,94 @@ +import { FC } from 'react'; +import { FiX } from 'react-icons/fi'; +import { formatEther } from 'viem'; +import { + useAccount, + useEstimateGas, + useSimulateContract, + useWriteContract, +} from 'wagmi'; + +import { Button } from '@/components/Button'; + +import { EthCall } from '../../call/EthCall'; +import { ETHRegistrarABI } from '../../ethregistry/ETHRegistryABI'; + +export const RenewName: FC<{ + name: string; + duration: number; + rentPrice: bigint; +}> = ({ name, duration, rentPrice }) => { + const isReady = name && duration && rentPrice > 0; + + const { address } = useAccount(); + + const { writeContract, isError: _isUserDecline } = useWriteContract(); + + const config = { + abi: ETHRegistrarABI, + from: address, + to: '0xcc5e7db10e65eed1bbd105359e7268aa660f6734', + functionName: 'renew', + args: [name, duration], + value: rentPrice, + enabled: isReady, + }; + + const { data: gas2, isError } = useSimulateContract(config); + const { data: gas } = useEstimateGas(config); + + console.log({ gas, gas2 }); + + const rentPriceFormatted = formatEther(rentPrice || BigInt(0)); + + return ( +
    + + + ETHRegistrarController + + .renew( + + "{name}" + + ,{' '} + + {duration} + + ) +
    + } + > +
    +
    {gas?.toString()} gas
    +
    {rentPriceFormatted} eth
    + +
    + {!isReady && ( +
    + + Not Ready +
    + )} + {isError && ( +
    + + Problem +
    + )} + + + ); +}; diff --git a/app/src/content/demos/index.ts b/app/src/content/demos/index.ts new file mode 100644 index 000000000..b5ee02c47 --- /dev/null +++ b/app/src/content/demos/index.ts @@ -0,0 +1,5 @@ +import { LiveDemo } from './LiveDemo'; + +export const demos = { + LiveDemo, +}; diff --git a/app/src/content/demos/listnames/ListNamesDemo.tsx b/app/src/content/demos/listnames/ListNamesDemo.tsx new file mode 100644 index 000000000..e85af2152 --- /dev/null +++ b/app/src/content/demos/listnames/ListNamesDemo.tsx @@ -0,0 +1,134 @@ +'use client'; + +import { useState } from 'react'; +import useSWR from 'swr'; +import { goerli, mainnet } from 'viem/chains'; +import { useAccount } from 'wagmi'; + +import { ClientOnly } from '@/ClientOnly'; +import { Button } from '@/components/Button'; +import { ProfileAvatar } from '@/content/prose/profile/ProfileAvatar'; + +import { OwnerField } from '../ethregistry/inputs/OwnerField'; + +const GRAPH_QL_URL = { + [mainnet.id]: 'https://api.thegraph.com/subgraphs/name/ensdomains/ens', + [goerli.id]: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensgoerli', +}; + +type SubgraphResponse = { + data: { + domains: { + name: string; + expiryDate?: string; + registration?: { expiryDate: string; registrationDate: string }; + }[]; + }; +}; + +const fetcher = async ([address, chainId]: [string, number]) => { + const url = GRAPH_QL_URL[chainId]; + + if (!url) throw new Error('Unsupported chain id'); + + const request = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query: ` + query { + domains(where: { owner: "${address}" }) { + name + expiryDate + registration { + expiryDate + registrationDate + } + } + } + `, + }), + }).then((result) => result.json() as Promise); + + return request.data.domains.sort((a, b) => { + // Sort by expiry date + if (a.expiryDate && b.expiryDate) { + return ( + Number.parseInt(b.expiryDate) - Number.parseInt(a.expiryDate) + ); + } + + return 0; + }); +}; + +const Demo = () => { + const { address, chainId } = useAccount(); + const [targetAddress, setAddress] = useState(address as string); + const { data, isLoading } = useSWR( + [targetAddress?.toLowerCase(), chainId], + fetcher + ); + + return ( +
    + +
    + +
    + + + +
    +
    +
    + +
    + {data?.length > 0 ? ( +
    + {data.map((domain) => ( +
    +
    + + {domain.name} + +
    +
    + +
    +
    + ))} +
    + ) : ( +
    + {isLoading ? ( +
    Loading...
    + ) : ( +
    No names found
    + )} +
    + )} +
    +
    +
    + ); +}; + +export const ListNamesDemo = () => { + return } />; +}; diff --git a/app/src/content/demos/namelookup/NameLookup.tsx b/app/src/content/demos/namelookup/NameLookup.tsx new file mode 100644 index 000000000..443ffbe81 --- /dev/null +++ b/app/src/content/demos/namelookup/NameLookup.tsx @@ -0,0 +1,74 @@ +'use client'; + +import { formatAddress } from '@ens-tools/format'; +import { FC, useState } from 'react'; +import { BiLoaderAlt } from 'react-icons/bi'; +import { useDebounce } from 'use-debounce'; + +import { useProfile } from './logic/useProfile'; +import { Chains } from './parts/chains'; +import { Records } from './parts/records'; + +export const NameLookupDemo: FC = () => { + const [temporaryName, setTemporaryName] = useState('luc.eth'); + const [name] = useDebounce(temporaryName, 120); + + const { data, isLoading, error } = useProfile({ name }); + + return ( +
    +
    +
    Find user
    + setTemporaryName(event.target.value)} + value={temporaryName} + /> +
    +
    + {isLoading && } + {!isLoading && ( + <> + {error &&
    Error {JSON.stringify(error)}
    } + {!data && ( +
    +
    Unknown Name 🤷‍♀️
    +
    + Try luc.eth +
    +
    + )} + {data && ( + <> +
    +
    + {data?.avatar && ( + Avatar + )} +
    +
    +
    + {data.name} +
    + +
    + {data?.address && + formatAddress(data.address)} +
    +
    +
    + + + + )} + + )} +
    +
    + ); +}; diff --git a/app/src/content/demos/namelookup/logic/fetch.ts b/app/src/content/demos/namelookup/logic/fetch.ts new file mode 100644 index 000000000..6f0b6c987 --- /dev/null +++ b/app/src/content/demos/namelookup/logic/fetch.ts @@ -0,0 +1,17 @@ +import { ENStateProfile } from './profile'; + +const ENSTATE_PUBLIC_INSTANCE = 'https://enstate.rs'; + +export const rawFetchEnstateProfile = async ( + name: string, + instance: string = ENSTATE_PUBLIC_INSTANCE +): Promise => { + const request = await fetch(instance + '/n/' + name); + + return request.json() as Promise; +}; + +export const swrFetchEnstateProfile = (instance?: string) => { + return async ([_enstate, name]: ['enstate', string]) => + rawFetchEnstateProfile(name, instance); +}; diff --git a/app/src/content/demos/namelookup/logic/profile.ts b/app/src/content/demos/namelookup/logic/profile.ts new file mode 100644 index 000000000..c5566d02a --- /dev/null +++ b/app/src/content/demos/namelookup/logic/profile.ts @@ -0,0 +1,36 @@ +export type SuggestedRecords = + | 'url' + | 'mail' + | 'name' + | 'email' + | 'header' + | 'avatar' + | 'location' + | 'timezone' + | 'language' + | 'pronouns' + | 'org.matrix' + | 'io.keybase' + | 'com.twitter' + | 'description' + | 'com.discord' + | 'org.telegram' + | 'com.linkedin' + | 'social.bluesky' + | 'social.mastadon' + | 'network.dm3.profile' + | 'network.dm3.deliveryService'; + +export type RecordType = SuggestedRecords | (string & {}); + +export type ENStateProfile = { + name: string; + address: string; // address + avatar: string; // url + display: string; // ens name + records: Record; + chains: Record; + fresh: number; // timestamp + resolver: string; // address of resolver + errors: Record; +}; diff --git a/app/src/content/demos/namelookup/logic/useProfile.ts b/app/src/content/demos/namelookup/logic/useProfile.ts new file mode 100644 index 000000000..dab135e39 --- /dev/null +++ b/app/src/content/demos/namelookup/logic/useProfile.ts @@ -0,0 +1,35 @@ +import useSWR from 'swr'; + +import { swrFetchEnstateProfile } from './fetch'; + +export type UseProfileParameters = { + /** + * The name of the profile to fetch. + * @example 'luc.eth' + */ + name: string; + /** + * URL of the enstate instance to use. + * WARNING, the default instance is provided as is, please use it respectfully. + * @default https://enstate.rs + */ + instance?: string; +}; + +// TODO: Naive approach, doesn't support extended character set +const isValidDomain = /^([\da-z-]{1,63}\.)+[\da-z-]{1,63}$/i; + +export const useProfile = ({ name, instance }: UseProfileParameters) => { + const { data, error, isLoading, isValidating, mutate } = useSWR( + isValidDomain.test(name) ? ['enstate', name] : undefined, + swrFetchEnstateProfile(instance) + ); + + return { + data, + error, + isLoading, + isValidating, + mutate, + }; +}; diff --git a/app/src/content/demos/namelookup/parts/chains.tsx b/app/src/content/demos/namelookup/parts/chains.tsx new file mode 100644 index 000000000..84682a15c --- /dev/null +++ b/app/src/content/demos/namelookup/parts/chains.tsx @@ -0,0 +1,52 @@ +import { formatAddress } from '@ens-tools/format'; +import { FC, Fragment } from 'react'; + +const multicoinIcons = { + btc: '/icons/multicoin/bitcoin.svg', + eth: '/icons/multicoin/ethereum.svg', +} as const; + +export const Chains: FC<{ chains?: Record }> = ({ chains }) => { + if (!chains) return <>; + + if (Object.keys(chains).length === 0) return <>; + + return ( +
    + {Object.keys(chains) + .sort((a, b) => b.length - a.length) + .map((chain) => ( + +
    + {multicoinIcons[chain] ? ( +
    +
    + {chain} +
    +
    + {chain} +
    +
    + ) : ( +
    + {chain} +
    + )} +
    +
    + {chain == 'eth' + ? formatAddress(chains[chain]) + : chains[chain]} +
    +
    + ))} +
    + ); +}; diff --git a/app/src/content/demos/namelookup/parts/records.tsx b/app/src/content/demos/namelookup/parts/records.tsx new file mode 100644 index 000000000..7602226df --- /dev/null +++ b/app/src/content/demos/namelookup/parts/records.tsx @@ -0,0 +1,69 @@ +import { FC, Fragment } from 'react'; +import { + FaClock, + FaDiscord, + FaGithub, + FaGlobe, + FaTelegram, + FaTwitter, +} from 'react-icons/fa'; + +import { RecordType } from '../logic/profile'; +const recordIcons = { + 'com.discord': , + 'com.github': , + 'com.twitter': , + 'org.telegram': , + url: , + timezone: , +} as const; + +export const Records: FC<{ records?: Record }> = ({ + records, +}) => { + if (!records) return <>; + + if (Object.keys(records).length === 0) return <>; + + return ( +
    + {Object.keys(records) + .sort((a, b) => b.length - a.length) + .map((record) => ( + +
    + {recordIcons[record] ? ( +
    +
    + {typeof recordIcons[record] === + 'string' ? ( + {record} + ) : ( + recordIcons[record] + )} +
    +
    + {record} +
    +
    + ) : ( +
    + {record} +
    + )} +
    +
    + {records[record]} +
    +
    + ))} +
    + ); +}; diff --git a/app/src/content/demos/resolvertest/index.tsx b/app/src/content/demos/resolvertest/index.tsx new file mode 100644 index 000000000..82e57637b --- /dev/null +++ b/app/src/content/demos/resolvertest/index.tsx @@ -0,0 +1,119 @@ +'use client'; + +import { useState } from 'react'; +import { encodeAbiParameters, labelhash } from 'viem'; +import { namehash, normalize } from 'viem/ens'; +import { useAccount, useChainId, useConnect, useReadContract } from 'wagmi'; + +import { ClientOnly } from '@/ClientOnly'; +import { Button } from '@/components/Button'; + +const RESOLVER_REGEX = /^0x[\dA-Fa-f]{40}$/; +const NAME_REGEX = /^[\w-]+$/; +const ALLOWED_METHODS = ['addr', 'text', 'contenthash', 'ttl']; + +// 0x9061b923000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009036c7563036574680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f1cb7e06e1e7bcf2ca33c28a806ee265cfedf02fedf1b124ca73b2203ca80cc7c91a02ad000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000 + +const Demo = () => { + const [resolver, setResolver] = useState( + '0xdCcB68ac05BB2Ee83F0873DCd0BF5F57E2968344' + ); + const [name, setName] = useState('luc.willbreak.eth'); + + const [method, setMethod] = useState('addr'); + const chainId = useChainId(); + + const { connect } = useConnect(); + + const { isConnected } = useAccount(); + + const a1 = labelhash(normalize(name)); + const a2 = + '0x3b3b57de' + + encodeAbiParameters( + [{ name: 'name', type: 'bytes32' }], + [namehash(normalize(name))] + ).replace('0x', ''); + + console.log({ a1, a2 }); + + const { data, refetch } = useReadContract({ + chainId, + address: resolver as `0x${string}`, + abi: [ + { + type: 'function', + inputs: [ + { + name: 'name', + type: 'bytes', + }, + { + name: 'data', + type: 'bytes', + }, + ], + name: 'resolve', + outputs: [{ name: 'result', type: 'bytes' }], + stateMutability: 'view', + }, + ], + functionName: 'resolve', + args: [a1, a2 as any], + }); + + if (!isConnected) { + return ( +
    + +
    + ); + } + + return ( +
    + {data && JSON.stringify(data)} +
    +
    {chainId}
    + setResolver(event.target.value)} + /> + setName(event.target.value)} + /> +
    +
    + +
    +
    + ); +}; + +export const ResolverTestDemo = () => { + return ( + ( +
    + {/* */} + This demo is in under construction +
    + )} + /> + ); +}; diff --git a/app/src/content/demos/reverse-set-name-for/ReverseSetNameForDemo.tsx b/app/src/content/demos/reverse-set-name-for/ReverseSetNameForDemo.tsx new file mode 100644 index 000000000..4719a4959 --- /dev/null +++ b/app/src/content/demos/reverse-set-name-for/ReverseSetNameForDemo.tsx @@ -0,0 +1,242 @@ +/* eslint-disable unicorn/no-nested-ternary */ +'use client'; + +import clsx from 'clsx'; +import { useState } from 'react'; +import { FiCheck, FiLoader, FiX } from 'react-icons/fi'; +import { mainnet, sepolia } from 'viem/chains'; +import { useAccount, useReadContract } from 'wagmi'; + +import { ALink } from '@/content/prose/link/ALink'; + +import { EthCall } from '../call/EthCall'; + +const REVERSE_REGISTRAR_ADDRESS = { + [mainnet.id]: '0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb', + [sepolia.id]: '', +}; + +export const ReverseSetNameForDemo = () => { + const { address: account, isConnected, chainId } = useAccount(); + + const [contractAddress, setContractAddress] = useState(''); + const [name, setName] = useState(''); + const [resolver, setResolver] = useState( + '0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63' + ); + const addr = contractAddress; + const owner = account; + + const { + data: ownsContractData, + error: ownsContractError, + isLoading: ownsContractLoading, + } = useReadContract({ + abi: [ + { + inputs: [], + name: 'owner', + outputs: [ + { internalType: 'address', name: '', type: 'address' }, + ], + stateMutability: 'view', + type: 'function', + constant: true, + }, + ] as const, + address: contractAddress as any, + functionName: 'owner', + args: [], + }); + + const ownsContract = ownsContractData === owner; + const supportsOwnable = ownsContractData !== undefined; + + return ( +
    +
    +
    + + { + setContractAddress(event.target.value); + }} + /> +
    +
    + + { + setName(event.target.value); + }} + /> +
    +
    + + { + event.preventDefault(); + }} + disabled + /> +
    +
    + + { + setResolver(event.target.value); + }} + /> +
    +
    +
    +
    +
    + {ownsContractLoading ? ( + + ) : supportsOwnable ? ( + + ) : ( + + )} + + Supports{' '} + + Ownable + + +
    +
    +
    +
    + {ownsContractLoading ? ( + + ) : ownsContract ? ( + + ) : ( + + )} +
    +
    User is owner of contract
    + {ownsContractData && !ownsContract && ( + + Owner is{' '} + + {ownsContractData} + + + )} +
    +
    +
    +
    + + + ReverseRegistrar + + .setNameForAddr( + + + + {addr || '
    '} + + ,{' '} + + + + {owner || ''} + + ,{' '} + + + + {resolver || ''} + + ,{' '} + + + + {name || ''} + + + + ) +
    + } + > + {/*
    +
    {gas?.toString()} gas
    +
    {rentPriceFormatted} eth
    + +
    + {!isReady && ( +
    + + Not Ready +
    + )} + {isError && ( +
    + + Problem +
    + )} */} + + + ); +}; diff --git a/app/src/content/demos/send-transaction/SendTransaction.tsx b/app/src/content/demos/send-transaction/SendTransaction.tsx new file mode 100644 index 000000000..736d9aebb --- /dev/null +++ b/app/src/content/demos/send-transaction/SendTransaction.tsx @@ -0,0 +1,74 @@ +'use client'; + +import { FC, useState } from 'react'; +import { useDebounce } from 'use-debounce'; +import { isAddress } from 'viem'; +import { useEnsAddress, useEnsAvatar } from 'wagmi'; + +import { Button } from '@/components/Button'; + +// TODO: make this look nice, for example https://ens-frontend-template.vercel.app/input +export const SendTransactionDemo: FC = () => { + const [input, setInput] = useState(''); + + const [debouncedInput] = useDebounce(input, 500); + + // Resolve potential ENS names (dot separated strings) + const { data: ensAddress, isLoading: ensAddressIsLoading } = useEnsAddress({ + name: debouncedInput.includes('.') ? debouncedInput : undefined, + chainId: 1, + }); + const { data: ensAvatar, isLoading: ensAvatarIsLoading } = useEnsAvatar({ + name: debouncedInput.includes('.') ? debouncedInput : undefined, + chainId: 1, + }); + + // Set the address (address if provided directly or resolved address from ENS name) + const address = + input !== debouncedInput + ? undefined + : // TODO: fix linting, it's competing with prettier here + // eslint-disable-next-line unicorn/no-nested-ternary + isAddress(debouncedInput) + ? debouncedInput + : ensAddress; + + return ( +
    + + setInput(event.target.value)} + /> + + {ensAddress && address && ( +
    + {ensAvatar && ( +
    + Avatar +
    + )} + {address} +
    + )} + + +
    + ); +}; diff --git a/app/src/content/demos/siwe/SiweDemo.tsx b/app/src/content/demos/siwe/SiweDemo.tsx new file mode 100644 index 000000000..ce6081db3 --- /dev/null +++ b/app/src/content/demos/siwe/SiweDemo.tsx @@ -0,0 +1,105 @@ +'use client'; + +import { formatAddress } from '@ens-tools/format'; +import { useEffect } from 'react'; +import { FaSignature, FaSpinner } from 'react-icons/fa'; +import { ImExit } from 'react-icons/im'; +import { SiweMessage } from 'siwe'; +import { + useAccount, + useConnect, + useDisconnect, + useEnsName, + useSignMessage, +} from 'wagmi'; + +import { ClientOnly } from '@/ClientOnly'; +import { Button } from '@/components/Button'; + +const Demo = () => { + const { address, isConnected } = useAccount(); + const { connect } = useConnect(); + const { disconnect } = useDisconnect(); + const { data: ensName } = useEnsName({ address }); + const { + data: signatureData, + signMessage, + isPending, + reset, + } = useSignMessage({}); + + useEffect(() => { + reset(); + }, [address]); + + return ( +
    + {isConnected ? ( + <> + +
    + + +
    + {signatureData && ( +
    + Signature Verified! +
    + )} + + ) : ( + + )} +
    + ); +}; + +export const SiweDemo = () => } />; diff --git a/app/src/content/extras/deployments/copy.tsx b/app/src/content/extras/deployments/copy.tsx new file mode 100644 index 000000000..bf34389bd --- /dev/null +++ b/app/src/content/extras/deployments/copy.tsx @@ -0,0 +1,19 @@ +'use client'; + +import { FC } from 'react'; +import { FiClipboard } from 'react-icons/fi'; + +import { Button } from '@/components/Button'; + +export const CopyButton: FC<{ text: string }> = ({ text }) => { + return ( + + ); +}; diff --git a/app/src/content/extras/deployments/deployment.tsx b/app/src/content/extras/deployments/deployment.tsx new file mode 100644 index 000000000..0d99ee51d --- /dev/null +++ b/app/src/content/extras/deployments/deployment.tsx @@ -0,0 +1,154 @@ +import Link from 'next/link'; +import { FC } from 'react'; +import { FiExternalLink } from 'react-icons/fi'; + +import { BLOCKCHAIN_EXPLORERS } from '#/data/blockchain_explorers'; +import { DEPLOYMENTS } from '#/data/deployments'; + +type githubDeploymentReturn = { + address: string; + abi: []; +}; + +export type DeploymentData = { + name: string; + address?: string; + path?: string; + branch?: string; +}; + +export const getGithubDeployment = async ( + branch: string = 'staging', + chain: string = 'mainnet', + path: string = 'ENSRegistry' +) => { + const url = `https://raw.githubusercontent.com/ensdomains/ens-contracts/${branch}/deployments/${chain}/${path}.json`; + + const response = await fetch(url); + + if (!response.ok) { + throw new Error(`Failed to fetch ${url}`); + } + + return (await response.json()) as githubDeploymentReturn; +}; + +export const ChainDeployments: FC = () => { + return ( +
    +
    + {DEPLOYMENTS.map((chain, index) => ( +
    + {chain.contracts.map( + withDeploymentData( + chain.slug, + (deployment, data) => ( +
    +
    +
    + {deployment.name} +
    +
    + {deployment.path && ( + + + ABI + + )} + {/* {deployment.path && ( + + + Source + + )} */} + {data?.address && + BLOCKCHAIN_EXPLORERS[ + chain.id + ][0].name && ( + + + { + BLOCKCHAIN_EXPLORERS[ + chain.id + ][0].name + } + + )} +
    +
    + +
    + ) + ) + )} +
    + ))} +
    +
    + ); +}; + +const withDeploymentData = ( + chain: string, + callback: (_deployment: DeploymentData, _data: githubDeploymentReturn) => K +) => { + return async (deployment: DeploymentData) => { + const data = deployment.path + ? await getGithubDeployment( + deployment.branch, + chain, + deployment.path + ) + : ({ + address: deployment.address, + abi: [], + } as githubDeploymentReturn); + + return callback(deployment, data); + }; +}; diff --git a/app/src/content/extras/dns/DNSUsageExamples.tsx b/app/src/content/extras/dns/DNSUsageExamples.tsx new file mode 100644 index 000000000..e7b671662 --- /dev/null +++ b/app/src/content/extras/dns/DNSUsageExamples.tsx @@ -0,0 +1,82 @@ +import { FiChevronRight } from 'react-icons/fi'; + +import { LinkCard } from '../linkcard/LinkCard'; + +export const DNSUsageExamples = () => { + return ( +
    + {[ + [ + 'Lens', + 'The Social Layer for Web3', + '.lens.xyz', + 'https://www.lens.xyz/', + '/content/learn/dnssec/lens-logo.svg', + 'rgb(255, 235, 184)', + 'rgb(39, 46, 41)', + ], + [ + 'Coinbase Wallet', + 'Self-custody crypto wallet built by Coinbase', + '.cb.id', + 'https://cb.id/', + '/content/learn/dnssec/coinbase-wallet-logo.svg', + 'rgb(20, 21, 25)', + 'rgb(88, 138, 245)', + ], + [ + 'Argent', + 'zk-sync & starknet powered smart-contract wallet', + '.argent.xyz', + 'https://www.argent.xyz/', + '/content/learn/dnssec/argent-logo.svg', + '#000', + '#FF875B', + ], + ].map( + ( + [title, description, domain, link, logo, bgColor, fgColor], + index + ) => ( + + ) + )} +
    +
    + And many more... + + See{' '} + + our integrations + + +
    + +
    + read more +
    +
    +
    +
    + ); +}; diff --git a/app/src/content/extras/home/QuickLink.tsx b/app/src/content/extras/home/QuickLink.tsx new file mode 100644 index 000000000..bd74ce319 --- /dev/null +++ b/app/src/content/extras/home/QuickLink.tsx @@ -0,0 +1,29 @@ +import Link from 'next/link'; +import { FC } from 'react'; + +export const QuickBannerLink: FC<{ + title: string; + description: string; + href: string; + image: string; +}> = ({ title, description, href, image }) => { + return ( + +
    + {image && } +
    +
    +
    +
    + {title} +
    +
    {description}
    +
    +
    + + ); +}; diff --git a/app/src/content/extras/icons/NotIcon.tsx b/app/src/content/extras/icons/NotIcon.tsx new file mode 100644 index 000000000..e28b7fb3d --- /dev/null +++ b/app/src/content/extras/icons/NotIcon.tsx @@ -0,0 +1,7 @@ +import { FiBookOpen, FiClock, FiHash } from 'react-icons/fi'; + +export const Icons = { + FiHash, + FiClock, + FiBookOpen, +}; diff --git a/app/src/content/extras/index.ts b/app/src/content/extras/index.ts new file mode 100644 index 000000000..853d786c6 --- /dev/null +++ b/app/src/content/extras/index.ts @@ -0,0 +1,21 @@ +import { ChainDeployments } from './deployments/deployment'; +import { DNSUsageExamples } from './dns/DNSUsageExamples'; +import { QuickBannerLink } from './home/QuickLink'; +import { Icons } from './icons/NotIcon'; +import { LinkCard } from './linkcard/LinkCard'; +import { SmartContractMap } from './smartcontractmap/SmartContractMap'; +import { DNSGrid } from './tld-list/DNSGrid'; +import { TLDList } from './tld-list/TLDList'; +import { Usertag } from './usertag/Usertag'; + +export const extras = { + DNSUsageExamples, + QuickBannerLink, + Usertag, + ChainDeployments, + TLDList, + DNSGrid, + SmartContractMap, + Icons, + LinkCard, +}; diff --git a/app/src/content/extras/linkcard/LinkCard.tsx b/app/src/content/extras/linkcard/LinkCard.tsx new file mode 100644 index 000000000..14b2b96c0 --- /dev/null +++ b/app/src/content/extras/linkcard/LinkCard.tsx @@ -0,0 +1,57 @@ +import { FiChevronRight } from 'react-icons/fi'; + +type Properties = { + title: string; + description: string; + domain?: string; + link: string; + logo: string; + bgColor: string; + fgColor: string; +}; + +export const LinkCard = ({ + title, + description, + domain, + link, + logo, + bgColor, + fgColor, +}: Properties) => { + return ( + +
    +
    + {title} +
    + {domain && ( +
    + {domain} +
    + )} +
    +
    {title}
    +
    {description}
    +
    +
    + read more +
    +
    +
    + ); +}; diff --git a/app/src/content/extras/smartcontractmap/SmartContractMap.tsx b/app/src/content/extras/smartcontractmap/SmartContractMap.tsx new file mode 100644 index 000000000..7050cd28c --- /dev/null +++ b/app/src/content/extras/smartcontractmap/SmartContractMap.tsx @@ -0,0 +1,122 @@ +/* eslint-disable jsx-a11y/no-static-element-interactions */ +'use client'; + +import { useState } from 'react'; + +import { Button } from '@/components/Button'; + +const width = 800; +const height = (9 / 16) * 800; + +export const SmartContractMap = () => { + const [[x, y], setLocation] = useState([0, 0]); + const [[dragX, dragY], setStartLocation] = useState([0, 0]); + const [dragging, setDragging] = useState(false); + + return ( +
    { + setDragging(true); + setStartLocation([event.clientX - x, event.clientY - y]); + }} + onMouseUp={() => setDragging(false)} + onMouseLeave={() => setDragging(false)} + onMouseMove={(event) => { + if (dragging) { + setLocation([ + Math.max(Math.min(event.clientX - dragX, 150), -200), + Math.max(Math.min(event.clientY - dragY, 150), -600), + ]); + } + }} + onScrollCapture={(event) => { + const x = event.detail; + + console.log(x); + }} + > +
    + event.preventDefault()} + /> +
    +
    +
    +
    addr
    +
    + .reverse +
    +
    + +
    +
    +
    +
    registrar
    +
    + .ens.eth +
    +
    + +
    +
    +
    +
    + dnsregistrar +
    +
    + .ens.eth +
    +
    + +
    +
    +
    +
    root
    +
    + .ens.eth +
    +
    + +
    +
    +
    +
    + ); +}; diff --git a/app/src/content/extras/tld-list/DNSGrid.tsx b/app/src/content/extras/tld-list/DNSGrid.tsx new file mode 100644 index 000000000..ad7fdb68f --- /dev/null +++ b/app/src/content/extras/tld-list/DNSGrid.tsx @@ -0,0 +1,58 @@ +export const DNSGrid = () => { + return ( +
    +
    + {[ + '.com', + '.xyz', + '.nl', + '.net', + '.org', + '.shop', + '.photos', + '.pizza', + '.cash', + '.money', + '.news', + '.info', + '.gold', + '.domains', + '.social', + '.de', + '.city', + '.lol', + '.rip', + '.company', + '.es', + '.network', + '.me', + '.us', + '.id', + '.fr', + '.space', + '.ninja', + '.tools', + '.wtf', + '.capital', + '.finance', + '.vision', + '.limo', + '.link', + '.uk', + '.world', + '.dev', + '.day', + '.fyi', + '.cool', + ].map((a) => ( + + {a} + + ))} + + and any other DNSSEC-compatible domain... + +
    +
    + ); +}; diff --git a/app/src/content/extras/tld-list/TLDList.tsx b/app/src/content/extras/tld-list/TLDList.tsx new file mode 100644 index 000000000..535aca47b --- /dev/null +++ b/app/src/content/extras/tld-list/TLDList.tsx @@ -0,0 +1,229 @@ +import clsx from 'clsx'; +import Link from 'next/link'; +import { FiExternalLink } from 'react-icons/fi'; +import { createPublicClient, http, namehash } from 'viem'; +import { mainnet } from 'viem/chains'; + +import { SmallCopy } from '@/components/SmallCopy'; +import { TLDs } from '#/data/tlds'; + +const ADDRESS_MAP = { + '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85': { + name: 'ETH Registrar', + color: 'text-ens-light-blue-primary dark:text-ens-dark-blue-primary', + surface: + 'bg-ens-light-blue-surface dark:bg-ens-dark-blue-surface border-ens-light-blue-surface dark:border-ens-dark-blue-surface', + }, + '0x58774Bb8acD458A640aF0B88238369A167546ef2': { + name: 'DNS Registrar', + color: 'text-ens-light-green-primary dark:text-ens-dark-green-primary', + surface: + 'bg-ens-light-green-surface dark:bg-ens-dark-green-surface border-ens-light-green-surface dark:border-ens-dark-green-surface', + }, + '0xB32cB5677a7C971689228EC835800432B339bA2B': { + name: 'DNS Registrar (Supports Gasless)', + color: 'text-ens-light-green-primary dark:text-ens-dark-green-primary', + surface: + 'bg-ens-light-green-surface dark:bg-ens-dark-green-surface border-ens-light-green-surface dark:border-ens-dark-green-surface', + }, + '0x828D6e836e586B53f1da3403FEda923AEd431019': { + name: '(Custom) Protocol.ART Registrar', + }, + '0x0b9BB06Ebf35A755998B60353546ae8A055554d2': { + name: '(Custom) Box Registrar', + }, + '0x04ebA57401184A97C919b0B6b4e8dDE263BCb920': { + name: '(Custom) HipHop Registrar', + }, + '0x1eb4b8506fca65e6B229E346dfBfd349956A66e3': { + name: '(Custom) Club Registrar', + }, + '0x56ca9514363F68d622931dce1566070f86Ce5550': { + name: '(Custom) Kred Registrar', + }, + '0xA86ba3b6d83139a49B649C05DBb69E0726DB69cf': { + name: '(Custom) Luxe Registrar', + }, +}; + +const classifyOwner = (owner_address: string) => { + if (!owner_address) return 1; + + if (owner_address === '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85') + return 10; + + if (owner_address === '0x58774Bb8acD458A640aF0B88238369A167546ef2') + return 3; + + if (ADDRESS_MAP[owner_address]) return 5; + + if (owner_address === '0x0000000000000000000000000000000000000000') + return 0; + + return 4; +}; + +const computeTLD = (owner_address: string) => { + if (!owner_address) return; + + if (ADDRESS_MAP[owner_address]) return ADDRESS_MAP[owner_address].name; + + if (owner_address === '0x0000000000000000000000000000000000000000') + return ( + + Unsupported TLD (or no domains imported yet) + + ); + + return owner_address; +}; + +export const TLDList = async () => { + const client = createPublicClient({ + chain: mainnet, + transport: http( + process.env.RPC_URL ?? '' //?? 'https://cloudflare-eth.com/rpc' + ), + }); + + const contract = { + address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e', + abi: [ + { + name: 'owner', + type: 'function', + stateMutability: 'view', + inputs: [{ name: 'node', type: 'bytes32' }], + outputs: [{ name: 'owner', type: 'address' }], + }, + ], + } as const; + + const chunks: string[][] = []; + + for (let index = 0; index < TLDs.length; index += 100) { + chunks.push(TLDs.slice(index, index + 100)); + } + + const results: [string[], any][] = []; + + for (const chunk of chunks) { + const result = await client.multicall({ + contracts: chunk.map( + (tld) => + ({ + ...contract, + args: [namehash(tld)], + functionName: 'owner', + } as any) + ), + } as any); + + results.push([chunk, result]); + } + + const unique_results: Record = {}; + + for (const [chunks, returned] of results) { + let index = 0; + + for (const _chunk in chunks) { + const result = returned[index].result as string; + + const v = unique_results[result] || 0; + + unique_results[result] = v + 1; + + index++; + } + } + + return ( +
    +

    Totals

    +
    + {Object.entries(unique_results) + .sort((a, b) => { + return classifyOwner(b[0]) - classifyOwner(a[0]); + }) + .map(([k, v]) => { + const entry = ADDRESS_MAP[k]; + + return ( +
    + + {v} + + - + {computeTLD(k)} +
    + ); + })} +
    +

    By Name

    + + + + + + + + + {results + .flatMap(([chunks, result]) => { + return chunks.map((chunk, index) => { + return { + result: result[index].result, + owner_index: classifyOwner( + result[index].result as string + ), + data: ADDRESS_MAP[ + result[index].result as string + ], + domain: chunk, + }; + }); + }) + .sort((a, b) => { + return b.owner_index - a.owner_index; + }) + .map((v) => { + return ( + + + + + ); + })} + +
    TLDController
    .{v.domain} +
    + {computeTLD(v.result as string)} +
    +
    + + {v.result as any} + + {v.result && ( + + )} + + + +
    +
    +
    + ); +}; diff --git a/app/src/content/extras/usertag/Usertag.tsx b/app/src/content/extras/usertag/Usertag.tsx new file mode 100644 index 000000000..9f45dfff5 --- /dev/null +++ b/app/src/content/extras/usertag/Usertag.tsx @@ -0,0 +1,28 @@ +import { FC } from 'react'; + +export type UsertagVariant = 'full' | 'small'; + +export const Usertag: FC<{ + name?: string; + image?: string; + variant?: UsertagVariant; +}> = ({ name = 'nick.eth', image = '/nick.eth.png', variant = 'full' }) => { + return ( +
    +
    + {variant == 'full' && ( +
    + +
    + )} +
    + {name} +
    +
    +
    + ); +}; diff --git a/app/src/content/index.ts b/app/src/content/index.ts new file mode 100644 index 000000000..84c471cf2 --- /dev/null +++ b/app/src/content/index.ts @@ -0,0 +1,19 @@ +import { MDXComponents } from 'mdx/types'; + +import { demos } from './demos'; +import { extras } from './extras'; +import { prose } from './prose'; + +/** + * Content Components + * This includes examples, demos, and other content that is not suitable for markdown. + * Names are transient and must match the name in the mdx file. + */ +export const contentComponents = { + // Links, Buttons, Images + ...prose, + // Interactive Demos + ...demos, + // Other Content + ...extras, +} as any as Record; diff --git a/app/src/content/prose/breadcrumbs/Breadcrumbs.tsx b/app/src/content/prose/breadcrumbs/Breadcrumbs.tsx new file mode 100644 index 000000000..021f0a113 --- /dev/null +++ b/app/src/content/prose/breadcrumbs/Breadcrumbs.tsx @@ -0,0 +1,143 @@ +'use client'; +import Link from 'next/link'; +import { usePathname } from 'next/navigation'; +import { BreadcrumbList, ListItem, WithContext } from 'schema-dts'; + +import { + isRouteLink, + isSectionData, + routeElement, + routeGroup, +} from '@/config/navigation'; +import { navigation } from '@/config/navigation/protocol'; + +const getPageAndGroup = ( + routes: routeGroup[] | undefined, + path: string +): routeElement[] | undefined => { + for (const group of routes ?? []) { + for (const link of group.links) { + if (isRouteLink(link) && link.href == path) { + return [group, link]; + } + } + } + + return undefined; +}; + +export const Breadcrumbs = () => { + const path = usePathname(); + + // Hide on homepage + if (path == '/') return; + + const section = navigation.find((section) => + section.activePattern.test(path) + ); + + const [group, page] = getPageAndGroup(section?.links, path) || [ + undefined, + undefined, + ]; + + const crumbs = [section, group, page].filter((a) => !!a); + + const crumbs2 = crumbs.map((crumb) => { + if (isSectionData(crumb)) { + return ( + + {crumb.name} + + ); + } + + if (isRouteLink(crumb)) { + return ( + + {crumb.title} + + ); + } + + return crumb.title; + }); + + const schema: WithContext = { + '@context': 'https://schema.org', + '@type': 'BreadcrumbList', + itemListElement: [ + { + '@type': 'ListItem', + position: 1, + name: 'Home', + item: '/', + }, + ...crumbs.map((crumb, index): ListItem => { + if (isSectionData(crumb)) { + return { + '@type': 'ListItem', + position: index + 2, + name: crumb.name, + item: crumb.href, + }; + } + + if (isRouteLink(crumb)) { + return { + '@type': 'ListItem', + position: index + 2, + name: crumb.title, + item: crumb.href, + }; + } + + return { + '@type': 'ListItem', + position: index + 2, + name: crumb.title, + }; + }), + ], + }; + + return ( +