├── .eslintignore ├── .eslintrc.cjs ├── .gitattributes ├── .github └── workflows │ └── publish.yml ├── .gitignore ├── .gitmodules ├── .parcelrc ├── .prettierignore ├── .prettierrc.json ├── CNAME ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── Taskfile.yaml ├── package.json ├── pnpm-lock.yaml ├── src └── lib.rs └── static ├── assets ├── dropdown.svg ├── favicons │ ├── favicon.png │ └── mstile-310x150.png ├── pest-logo.png └── pest-logo.svg ├── index.html ├── scripts ├── animation.ts ├── editor.ts └── shareButton.ts └── style.css /.eslintignore: -------------------------------------------------------------------------------- 1 | target 2 | pkg 3 | dist 4 | .task 5 | .parcel-cache 6 | book 7 | pnpm-lock.yaml 8 | static/codemirror 9 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | module.exports = { 3 | extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], 4 | parser: "@typescript-eslint/parser", 5 | plugins: ["@typescript-eslint"], 6 | root: true, 7 | }; 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: publish 2 | 3 | on: [push, pull_request] 4 | 5 | # Allow one concurrent deployment 6 | concurrency: 7 | group: pages 8 | cancel-in-progress: true 9 | 10 | jobs: 11 | lint: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | - uses: dtolnay/rust-toolchain@stable 16 | with: 17 | components: clippy 18 | - name: Run clippy 19 | run: cargo clippy --all-targets --all-features -- -D warnings 20 | checks: 21 | if: github.event_name != 'push' || github.ref != 'refs/heads/master' 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@v4 25 | with: 26 | submodules: recursive 27 | - name: Setup PNPM 28 | uses: pnpm/action-setup@v2 29 | with: 30 | version: 6.0.2 31 | - name: Install packages 32 | run: pnpm install 33 | - name: Lint 34 | run: pnpm run lint 35 | - name: Check format 36 | run: pnpm run format:check 37 | - name: Setup mdBook 38 | uses: peaceiris/actions-mdbook@v1 39 | with: 40 | mdbook-version: latest 41 | - name: Setup wasm-pack 42 | uses: jetli/wasm-pack-action@v0.4.0 43 | with: 44 | version: latest 45 | - name: Install Task 46 | uses: arduino/setup-task@v1 47 | with: 48 | repo-token: ${{ secrets.GITHUB_TOKEN }} 49 | - name: Run Build 50 | run: task 51 | gh-release: 52 | if: github.event_name == 'push' && github.ref == 'refs/heads/master' 53 | runs-on: ubuntu-latest 54 | 55 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 56 | permissions: 57 | contents: read 58 | pages: write 59 | id-token: write 60 | 61 | environment: 62 | name: github-pages 63 | url: ${{ steps.deployment.outputs.page_url }} 64 | 65 | steps: 66 | - uses: actions/checkout@v4 67 | with: 68 | submodules: recursive 69 | - name: Setup mdBook 70 | uses: peaceiris/actions-mdbook@v1 71 | with: 72 | mdbook-version: latest 73 | - name: Setup PNPM 74 | uses: pnpm/action-setup@v2 75 | with: 76 | version: 6.0.2 77 | - name: Install packages 78 | run: pnpm install 79 | - name: Lint 80 | run: pnpm run lint 81 | - name: Check format 82 | run: pnpm run format:check 83 | - name: Setup wasm-pack 84 | uses: jetli/wasm-pack-action@v0.4.0 85 | with: 86 | version: latest 87 | - name: Install Task 88 | uses: arduino/setup-task@v1 89 | with: 90 | repo-token: ${{ secrets.GITHUB_TOKEN }} 91 | - name: Run Build 92 | run: task 93 | - name: Setup Pages 94 | uses: actions/configure-pages@v4 95 | - name: Upload artifact 96 | uses: actions/upload-pages-artifact@v3 97 | with: 98 | path: dist 99 | - name: Deploy to GitHub Pages 100 | id: deployment 101 | uses: actions/deploy-pages@v4 102 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Rust 2 | /target 3 | **/*.rs.bk 4 | Cargo.lock 5 | 6 | # Web 7 | .task 8 | node_modules/ 9 | dist/ 10 | .parcel-cache -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "book"] 2 | path = book 3 | url = https://github.com/pest-parser/book 4 | -------------------------------------------------------------------------------- /.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@parcel/config-default", 3 | "transformers": { 4 | "raw:*": ["@parcel/transformer-raw"], 5 | }, 6 | "reporters": ["...", "parcel-reporter-static-files-copy"] 7 | } -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | target 2 | pkg 3 | dist 4 | .task 5 | .parcel-cache 6 | book 7 | pnpm-lock.yaml 8 | static/codemirror 9 | 10 | # We rely on HTML to be formatted exactly as-is 11 | *.html 12 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | pest.rs 2 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Dragoș Tiselice "] 3 | edition = "2021" 4 | name = "pest-site" 5 | version = "0.1.0" 6 | license = "MIT/Apache-2.0" 7 | 8 | [lib] 9 | crate-type = ["cdylib", "rlib"] 10 | 11 | [profile.release] 12 | lto = true 13 | 14 | [dependencies] 15 | pest = "2.8.0" 16 | pest_fmt = "0.2.5" 17 | pest_meta = { version = "2.8.0", features = ["grammar-extras"] } 18 | pest_vm = { version = "2.8.0", features = ["grammar-extras"] } 19 | serde-wasm-bindgen = "0.5" 20 | wasm-bindgen = "0.2" 21 | 22 | [dependencies.web-sys] 23 | features = [ 24 | "Window", 25 | "Document", 26 | "Text", 27 | "DomTokenList", 28 | "HtmlOptionElement", 29 | "HtmlSelectElement", 30 | "HtmlTextAreaElement", 31 | "HtmlCollection", 32 | "InputEvent", 33 | "Storage", 34 | ] 35 | version = "0.3" 36 | -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2018 Dragoș Tiselice 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any 2 | person obtaining a copy of this software and associated 3 | documentation files (the "Software"), to deal in the 4 | Software without restriction, including without 5 | limitation the rights to use, copy, modify, merge, 6 | publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software 8 | is furnished to do so, subject to the following 9 | conditions: 10 | 11 | The above copyright notice and this permission notice 12 | shall be included in all copies or substantial portions 13 | of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 16 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 17 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 18 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 19 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 22 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pest.rs 2 | 3 | This repo contains the source code for https://pest.rs 4 | 5 | ## Development Guide 6 | 7 | This project uses the following tools: 8 | 9 | - [Task](https://taskfile.dev/) 10 | - [wasm-pack](https://rustwasm.github.io/wasm-pack/) 11 | - [mdBook](https://rust-lang.github.io/mdBook/) 12 | - [pnpm](https://pnpm.io) 13 | 14 | The task file automatically installs dependencies, builds the book, and builds the internal pest-vm web-binding crate. 15 | 16 | Start Parcel development server: 17 | 18 | ```bash 19 | task dev 20 | ``` 21 | 22 | Then visit http://localhost:1234 23 | 24 | If you want to build the static site, run the main build task: 25 | 26 | ```bash 27 | task 28 | ``` 29 | 30 | Then go visit the `/dist` folder. 31 | -------------------------------------------------------------------------------- /Taskfile.yaml: -------------------------------------------------------------------------------- 1 | # https://taskfile.dev 2 | 3 | version: "3" 4 | 5 | tasks: 6 | book: 7 | dir: ./book 8 | cmds: 9 | - mdbook build 10 | 11 | clean: 12 | cmds: 13 | - mkdir -p dist/book 14 | - rm -rf dist/book/** 15 | 16 | pack: 17 | cmds: 18 | - wasm-pack build --target web 19 | generates: 20 | - pkg/** 21 | - target/** 22 | sources: 23 | - Cargo.toml 24 | - Cargo.lock 25 | - src/** 26 | 27 | default: 28 | deps: [clean, book, pack] 29 | cmds: 30 | - pnpm install 31 | - pnpm run build 32 | 33 | dev: 34 | deps: [clean, book, pack] 35 | cmds: 36 | - pnpm install 37 | - pnpm run start 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "start": "parcel static/index.html", 5 | "build": "parcel build static/index.html", 6 | "lint": "eslint .", 7 | "format": "prettier --write .", 8 | "format:check": "prettier --check ." 9 | }, 10 | "staticFiles": { 11 | "staticPath": "book/book", 12 | "distDir": "dist/book" 13 | }, 14 | "devDependencies": { 15 | "@parcel/config-default": "^2.14.2", 16 | "@parcel/transformer-raw": "^2.14.2", 17 | "@types/codemirror": "v5.60.9", 18 | "@typescript-eslint/eslint-plugin": "^6.2.0", 19 | "@typescript-eslint/parser": "^6.2.0", 20 | "codemirror": "^5.65.15", 21 | "eslint": "^8.46.0", 22 | "lz-string": "^1.5.0", 23 | "parcel": "^2.14.2", 24 | "parcel-reporter-static-files-copy": "^1.5.3", 25 | "prettier": "3.0.0", 26 | "sharp": "^0.33.5", 27 | "svgo": "^2.8.0", 28 | "split.js": "^1.6.5", 29 | "typescript": "^5.2.2" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@parcel/config-default': 12 | specifier: ^2.14.2 13 | version: 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(@swc/helpers@0.5.1)(srcset@4.0.0)(svgo@2.8.0) 14 | '@parcel/transformer-raw': 15 | specifier: ^2.14.2 16 | version: 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 17 | '@types/codemirror': 18 | specifier: v5.60.9 19 | version: 5.60.9 20 | '@typescript-eslint/eslint-plugin': 21 | specifier: ^6.2.0 22 | version: 6.2.0(@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.2.2))(eslint@8.46.0)(typescript@5.2.2) 23 | '@typescript-eslint/parser': 24 | specifier: ^6.2.0 25 | version: 6.2.0(eslint@8.46.0)(typescript@5.2.2) 26 | codemirror: 27 | specifier: ^5.65.15 28 | version: 5.65.15 29 | eslint: 30 | specifier: ^8.46.0 31 | version: 8.46.0 32 | lz-string: 33 | specifier: ^1.5.0 34 | version: 1.5.0 35 | parcel: 36 | specifier: ^2.14.2 37 | version: 2.14.2(@swc/helpers@0.5.1)(srcset@4.0.0)(svgo@2.8.0) 38 | parcel-reporter-static-files-copy: 39 | specifier: ^1.5.3 40 | version: 1.5.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 41 | prettier: 42 | specifier: 3.0.0 43 | version: 3.0.0 44 | sharp: 45 | specifier: ^0.33.5 46 | version: 0.33.5 47 | split.js: 48 | specifier: ^1.6.5 49 | version: 1.6.5 50 | svgo: 51 | specifier: ^2.8.0 52 | version: 2.8.0 53 | typescript: 54 | specifier: ^5.2.2 55 | version: 5.2.2 56 | 57 | packages: 58 | 59 | '@aashutoshrathi/word-wrap@1.2.6': 60 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 61 | engines: {node: '>=0.10.0'} 62 | 63 | '@babel/code-frame@7.18.6': 64 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 65 | engines: {node: '>=6.9.0'} 66 | 67 | '@babel/helper-validator-identifier@7.19.1': 68 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 69 | engines: {node: '>=6.9.0'} 70 | 71 | '@babel/highlight@7.18.6': 72 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 73 | engines: {node: '>=6.9.0'} 74 | 75 | '@emnapi/runtime@1.3.1': 76 | resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} 77 | 78 | '@eslint-community/eslint-utils@4.4.0': 79 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 80 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 81 | peerDependencies: 82 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 83 | 84 | '@eslint-community/regexpp@4.6.2': 85 | resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} 86 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 87 | 88 | '@eslint/eslintrc@2.1.1': 89 | resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} 90 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 91 | 92 | '@eslint/js@8.46.0': 93 | resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} 94 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 95 | 96 | '@humanwhocodes/config-array@0.11.10': 97 | resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} 98 | engines: {node: '>=10.10.0'} 99 | deprecated: Use @eslint/config-array instead 100 | 101 | '@humanwhocodes/module-importer@1.0.1': 102 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 103 | engines: {node: '>=12.22'} 104 | 105 | '@humanwhocodes/object-schema@1.2.1': 106 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 107 | deprecated: Use @eslint/object-schema instead 108 | 109 | '@img/sharp-darwin-arm64@0.33.5': 110 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 111 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 112 | cpu: [arm64] 113 | os: [darwin] 114 | 115 | '@img/sharp-darwin-x64@0.33.5': 116 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 117 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 118 | cpu: [x64] 119 | os: [darwin] 120 | 121 | '@img/sharp-libvips-darwin-arm64@1.0.4': 122 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 123 | cpu: [arm64] 124 | os: [darwin] 125 | 126 | '@img/sharp-libvips-darwin-x64@1.0.4': 127 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 128 | cpu: [x64] 129 | os: [darwin] 130 | 131 | '@img/sharp-libvips-linux-arm64@1.0.4': 132 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 133 | cpu: [arm64] 134 | os: [linux] 135 | 136 | '@img/sharp-libvips-linux-arm@1.0.5': 137 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 138 | cpu: [arm] 139 | os: [linux] 140 | 141 | '@img/sharp-libvips-linux-s390x@1.0.4': 142 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 143 | cpu: [s390x] 144 | os: [linux] 145 | 146 | '@img/sharp-libvips-linux-x64@1.0.4': 147 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 148 | cpu: [x64] 149 | os: [linux] 150 | 151 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 152 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 153 | cpu: [arm64] 154 | os: [linux] 155 | 156 | '@img/sharp-libvips-linuxmusl-x64@1.0.4': 157 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 158 | cpu: [x64] 159 | os: [linux] 160 | 161 | '@img/sharp-linux-arm64@0.33.5': 162 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 163 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 164 | cpu: [arm64] 165 | os: [linux] 166 | 167 | '@img/sharp-linux-arm@0.33.5': 168 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 169 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 170 | cpu: [arm] 171 | os: [linux] 172 | 173 | '@img/sharp-linux-s390x@0.33.5': 174 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 175 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 176 | cpu: [s390x] 177 | os: [linux] 178 | 179 | '@img/sharp-linux-x64@0.33.5': 180 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 181 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 182 | cpu: [x64] 183 | os: [linux] 184 | 185 | '@img/sharp-linuxmusl-arm64@0.33.5': 186 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 187 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 188 | cpu: [arm64] 189 | os: [linux] 190 | 191 | '@img/sharp-linuxmusl-x64@0.33.5': 192 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 193 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 194 | cpu: [x64] 195 | os: [linux] 196 | 197 | '@img/sharp-wasm32@0.33.5': 198 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 199 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 200 | cpu: [wasm32] 201 | 202 | '@img/sharp-win32-ia32@0.33.5': 203 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 204 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 205 | cpu: [ia32] 206 | os: [win32] 207 | 208 | '@img/sharp-win32-x64@0.33.5': 209 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 210 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 211 | cpu: [x64] 212 | os: [win32] 213 | 214 | '@lezer/common@0.15.12': 215 | resolution: {integrity: sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==} 216 | 217 | '@lezer/lr@0.15.8': 218 | resolution: {integrity: sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==} 219 | 220 | '@lmdb/lmdb-darwin-arm64@2.7.11': 221 | resolution: {integrity: sha512-r6+vYq2vKzE+vgj/rNVRMwAevq0+ZR9IeMFIqcSga+wMtMdXQ27KqQ7uS99/yXASg29bos7yHP3yk4x6Iio0lw==} 222 | cpu: [arm64] 223 | os: [darwin] 224 | 225 | '@lmdb/lmdb-darwin-arm64@2.8.5': 226 | resolution: {integrity: sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==} 227 | cpu: [arm64] 228 | os: [darwin] 229 | 230 | '@lmdb/lmdb-darwin-x64@2.7.11': 231 | resolution: {integrity: sha512-jhj1aB4K8ycRL1HOQT5OtzlqOq70jxUQEWRN9Gqh3TIDN30dxXtiHi6EWF516tzw6v2+3QqhDMJh8O6DtTGG8Q==} 232 | cpu: [x64] 233 | os: [darwin] 234 | 235 | '@lmdb/lmdb-darwin-x64@2.8.5': 236 | resolution: {integrity: sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==} 237 | cpu: [x64] 238 | os: [darwin] 239 | 240 | '@lmdb/lmdb-linux-arm64@2.7.11': 241 | resolution: {integrity: sha512-7xGEfPPbmVJWcY2Nzqo11B9Nfxs+BAsiiaY/OcT4aaTDdykKeCjvKMQJA3KXCtZ1AtiC9ljyGLi+BfUwdulY5A==} 242 | cpu: [arm64] 243 | os: [linux] 244 | 245 | '@lmdb/lmdb-linux-arm64@2.8.5': 246 | resolution: {integrity: sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==} 247 | cpu: [arm64] 248 | os: [linux] 249 | 250 | '@lmdb/lmdb-linux-arm@2.7.11': 251 | resolution: {integrity: sha512-dHfLFVSrw/v5X5lkwp0Vl7+NFpEeEYKfMG2DpdFJnnG1RgHQZngZxCaBagFoaJGykRpd2DYF1AeuXBFrAUAXfw==} 252 | cpu: [arm] 253 | os: [linux] 254 | 255 | '@lmdb/lmdb-linux-arm@2.8.5': 256 | resolution: {integrity: sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==} 257 | cpu: [arm] 258 | os: [linux] 259 | 260 | '@lmdb/lmdb-linux-x64@2.7.11': 261 | resolution: {integrity: sha512-vUKI3JrREMQsXX8q0Eq5zX2FlYCKWMmLiCyyJNfZK0Uyf14RBg9VtB3ObQ41b4swYh2EWaltasWVe93Y8+KDng==} 262 | cpu: [x64] 263 | os: [linux] 264 | 265 | '@lmdb/lmdb-linux-x64@2.8.5': 266 | resolution: {integrity: sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==} 267 | cpu: [x64] 268 | os: [linux] 269 | 270 | '@lmdb/lmdb-win32-x64@2.7.11': 271 | resolution: {integrity: sha512-BJwkHlSUgtB+Ei52Ai32M1AOMerSlzyIGA/KC4dAGL+GGwVMdwG8HGCOA2TxP3KjhbgDPMYkv7bt/NmOmRIFng==} 272 | cpu: [x64] 273 | os: [win32] 274 | 275 | '@lmdb/lmdb-win32-x64@2.8.5': 276 | resolution: {integrity: sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==} 277 | cpu: [x64] 278 | os: [win32] 279 | 280 | '@mischnic/json-sourcemap@0.1.0': 281 | resolution: {integrity: sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==} 282 | engines: {node: '>=12.0.0'} 283 | 284 | '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2': 285 | resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==} 286 | cpu: [arm64] 287 | os: [darwin] 288 | 289 | '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2': 290 | resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==} 291 | cpu: [x64] 292 | os: [darwin] 293 | 294 | '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2': 295 | resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==} 296 | cpu: [arm64] 297 | os: [linux] 298 | 299 | '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2': 300 | resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==} 301 | cpu: [arm] 302 | os: [linux] 303 | 304 | '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2': 305 | resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==} 306 | cpu: [x64] 307 | os: [linux] 308 | 309 | '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': 310 | resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==} 311 | cpu: [x64] 312 | os: [win32] 313 | 314 | '@nodelib/fs.scandir@2.1.5': 315 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 316 | engines: {node: '>= 8'} 317 | 318 | '@nodelib/fs.stat@2.0.5': 319 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 320 | engines: {node: '>= 8'} 321 | 322 | '@nodelib/fs.walk@1.2.8': 323 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 324 | engines: {node: '>= 8'} 325 | 326 | '@parcel/bundler-default@2.14.2': 327 | resolution: {integrity: sha512-nAUhIPN/7nULJxhRcIUKdtkb7y1WkoKcYXZZZcQzMUu0wFBhyicJzWOQk1zri4LrKJBW4P5JQ4xwdJitc2GGDA==} 328 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 329 | 330 | '@parcel/cache@2.14.2': 331 | resolution: {integrity: sha512-C3uGFSjDGgVbNMxi9WGTavGPQgyv+QP9bBD+kw1LvgoWIvjw21NqDD3PpJS5iDJusEr8b1YOt/j2ejWJmSq2FQ==} 332 | engines: {node: '>= 16.0.0'} 333 | peerDependencies: 334 | '@parcel/core': ^2.14.2 335 | 336 | '@parcel/cache@2.9.3': 337 | resolution: {integrity: sha512-Bj/H2uAJJSXtysG7E/x4EgTrE2hXmm7td/bc97K8M9N7+vQjxf7xb0ebgqe84ePVMkj4MVQSMEJkEucXVx4b0Q==} 338 | engines: {node: '>= 12.0.0'} 339 | peerDependencies: 340 | '@parcel/core': ^2.9.3 341 | 342 | '@parcel/codeframe@2.14.2': 343 | resolution: {integrity: sha512-sjXiM+XUWiq7OOeTDsWUaNvKkrcCA89w0lvLFFXbtxxDXVBnM8SERP8nosA95izKWEy3fA6LopCuPbfz9v7FmA==} 344 | engines: {node: '>= 16.0.0'} 345 | 346 | '@parcel/codeframe@2.9.3': 347 | resolution: {integrity: sha512-z7yTyD6h3dvduaFoHpNqur74/2yDWL++33rjQjIjCaXREBN6dKHoMGMizzo/i4vbiI1p9dDox2FIDEHCMQxqdA==} 348 | engines: {node: '>= 12.0.0'} 349 | 350 | '@parcel/compressor-raw@2.14.2': 351 | resolution: {integrity: sha512-u8fJO1M/BcaJ/Um7pq6/OstJd0Rrs532NHJDc9UQHhreDlrjB2W97vVVMyF0aL23ebzfP3Hta3WnH7Eg64gAJg==} 352 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 353 | 354 | '@parcel/config-default@2.14.2': 355 | resolution: {integrity: sha512-ntqWdRJTyEX48OWnUL6BXCE9tEuVejZfzmdy8FvzeXHnVkQE09d1g8cmerm3B1cN+DoRxKIyLi5Qq1nyI0V9Tw==} 356 | peerDependencies: 357 | '@parcel/core': ^2.14.2 358 | 359 | '@parcel/core@2.14.2': 360 | resolution: {integrity: sha512-VIgo7dgwY9nHJTnxaa86xxQmUX6K5pEAxfsjkFxOhrviTG+KAI5bOHQAbsY61ytTO/x+uSDEnMoIkR8TAIVc3Q==} 361 | engines: {node: '>= 16.0.0'} 362 | 363 | '@parcel/diagnostic@2.14.2': 364 | resolution: {integrity: sha512-xoq9gf08Pv4q3zJUJqG9zsA1IBIr328HsEJpRC7b7zDd8j6DVJjrWTYDWnBybHAMXQ34x1qjsTDyvJcGA7uyWA==} 365 | engines: {node: '>= 16.0.0'} 366 | 367 | '@parcel/diagnostic@2.9.3': 368 | resolution: {integrity: sha512-6jxBdyB3D7gP4iE66ghUGntWt2v64E6EbD4AetZk+hNJpgudOOPsKTovcMi/i7I4V0qD7WXSF4tvkZUoac0jwA==} 369 | engines: {node: '>= 12.0.0'} 370 | 371 | '@parcel/error-overlay@2.14.2': 372 | resolution: {integrity: sha512-/xFL4dVb5bh9L+31Zo3whI5RdhPDgSJNZ/yIPuITKiC7UWWEZpLdGvdCwP0EV3NVA4RauYJovkcgCgtkM61LBQ==} 373 | engines: {node: '>= 16.0.0'} 374 | 375 | '@parcel/events@2.14.2': 376 | resolution: {integrity: sha512-ZwHOicEfnr0DVlA2+I9HN/wAIOKqpjVe/kRLZfKA3N5R2xLB+Mx3e5zDMSi2kCxkkqW5Yg0qxSI9hy3kTNgM0A==} 377 | engines: {node: '>= 16.0.0'} 378 | 379 | '@parcel/events@2.9.3': 380 | resolution: {integrity: sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==} 381 | engines: {node: '>= 12.0.0'} 382 | 383 | '@parcel/feature-flags@2.14.2': 384 | resolution: {integrity: sha512-TqurCACfUVoCRNWYSNHdIStc8ibWl+ZHPZWKOpnZSnBOgYf0lppmeq1W/dHTeaBDCB57VZM9d0ucFd0Xd0SZlA==} 385 | engines: {node: '>= 16.0.0'} 386 | 387 | '@parcel/fs-search@2.9.3': 388 | resolution: {integrity: sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==} 389 | engines: {node: '>= 12.0.0'} 390 | 391 | '@parcel/fs@2.14.2': 392 | resolution: {integrity: sha512-SOKgXMGA4buLs56kEVqymdpysb9Lpmo7QQn9QRcSZYX0u+vkD5JORCK0SiO7etvPWFttXNKjdlYE9IvvrRweaQ==} 393 | engines: {node: '>= 16.0.0'} 394 | peerDependencies: 395 | '@parcel/core': ^2.14.2 396 | 397 | '@parcel/fs@2.9.3': 398 | resolution: {integrity: sha512-/PrRKgCRw22G7rNPSpgN3Q+i2nIkZWuvIOAdMG4KWXC4XLp8C9jarNaWd5QEQ75amjhQSl3oUzABzkdCtkKrgg==} 399 | engines: {node: '>= 12.0.0'} 400 | peerDependencies: 401 | '@parcel/core': ^2.9.3 402 | 403 | '@parcel/graph@3.4.2': 404 | resolution: {integrity: sha512-yMP3Adz/zSkxPtTu9rh8XELkYyJfhysnw8PFA9UJlfvVWZsyir0ZWQC6R6cchlVthpVRAn29VIBOy67vmcgqjg==} 405 | engines: {node: '>= 16.0.0'} 406 | 407 | '@parcel/hash@2.9.3': 408 | resolution: {integrity: sha512-qlH5B85XLzVAeijgKPjm1gQu35LoRYX/8igsjnN8vOlbc3O8BYAUIutU58fbHbtE8MJPbxQQUw7tkTjeoujcQQ==} 409 | engines: {node: '>= 12.0.0'} 410 | 411 | '@parcel/logger@2.14.2': 412 | resolution: {integrity: sha512-gnG/0J2mj1Ot/1XoKbTh0YdEt+vWnODc022FgG+df5+qBiPwonwsIThSv1feUHX2EqHCEtbpXJ+OzZdzXRH9yA==} 413 | engines: {node: '>= 16.0.0'} 414 | 415 | '@parcel/logger@2.9.3': 416 | resolution: {integrity: sha512-5FNBszcV6ilGFcijEOvoNVG6IUJGsnMiaEnGQs7Fvc1dktTjEddnoQbIYhcSZL63wEmzBZOgkT5yDMajJ/41jw==} 417 | engines: {node: '>= 12.0.0'} 418 | 419 | '@parcel/markdown-ansi@2.14.2': 420 | resolution: {integrity: sha512-9wSiT2C7kW9pcvh2PyiuN/jWvIkDWpZvlGpCGmFU87qYAJbOjsjC7cybqDbqVEMQUplFPs8RL5vcTGU88vrzvA==} 421 | engines: {node: '>= 16.0.0'} 422 | 423 | '@parcel/markdown-ansi@2.9.3': 424 | resolution: {integrity: sha512-/Q4X8F2aN8UNjAJrQ5NfK2OmZf6shry9DqetUSEndQ0fHonk78WKt6LT0zSKEBEW/bB/bXk6mNMsCup6L8ibjQ==} 425 | engines: {node: '>= 12.0.0'} 426 | 427 | '@parcel/namer-default@2.14.2': 428 | resolution: {integrity: sha512-4Om4hEOZCX08uWqNvh6M4AX6344rtt1YT0Yup7uuLw2N5H8dr0Xpy4SXLabD52SAoi57gG2B0yX8g7tV142QzQ==} 429 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 430 | 431 | '@parcel/node-resolver-core@3.0.3': 432 | resolution: {integrity: sha512-AjxNcZVHHJoNT/A99PKIdFtwvoze8PAiC3yz8E/dRggrDIOboUEodeQYV5Aq++aK76uz/iOP0tST2T8A5rhb1A==} 433 | engines: {node: '>= 12.0.0'} 434 | 435 | '@parcel/node-resolver-core@3.5.2': 436 | resolution: {integrity: sha512-cUSsfwd+Phatm5oeiJIzev6TojbDGL09/GUzoWKwpx3exT2VqcrFfHEt4GQLBUJsTf/bqk5FzyzK548ue09loQ==} 437 | engines: {node: '>= 16.0.0'} 438 | 439 | '@parcel/optimizer-css@2.14.2': 440 | resolution: {integrity: sha512-wg9BlMvBUo4kwKVuQ8ec/GlNyCMyx9Xg36Y8DBgj55sBHhk7M4/+C8yTGbxDlu6NU0+/Tx0yuypCe/Fq17wWaA==} 441 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 442 | 443 | '@parcel/optimizer-htmlnano@2.14.2': 444 | resolution: {integrity: sha512-Z9W8FMasZfRTI9rLTYgjxAABaZRG6zfPaMLQPXCv5KmDuQcrm9UcpGEuboFd7UCTA/ajPpFLWFZroRfmG9Ox1w==} 445 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 446 | 447 | '@parcel/optimizer-image@2.14.2': 448 | resolution: {integrity: sha512-pVEKAfpFRgjjmjU+mJ17uA9tycMinZz4v1J7TWo+nq0z5D4ifKSusTvhIEnY6aj2WZnYZKN8II2dCdT9OkOO2A==} 449 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 450 | peerDependencies: 451 | '@parcel/core': ^2.14.2 452 | 453 | '@parcel/optimizer-svgo@2.14.2': 454 | resolution: {integrity: sha512-2uU50h/wEEX8F2TdJKXN3zpGJqBGeraa9s5354WCC84TqJprb1ZMdweVpi2KZn+GjjOrjAxDKe3a8/Z6EavLmQ==} 455 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 456 | 457 | '@parcel/optimizer-swc@2.14.2': 458 | resolution: {integrity: sha512-oqzukZcW56+W/vfNBNDh9TvBJYMB038eXZg5Fz6pamY/vHLuaZT5G1P1/znpsVcVwAAvzK0fCJsfG3KQ6RxjgQ==} 459 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 460 | 461 | '@parcel/package-manager@2.14.2': 462 | resolution: {integrity: sha512-vagjbhRxYAfU1dQP5qAbBA9KpYROKDtqsa9YV5+5ni7HTkQR3PdSkjd9dIV/7UnsN9kiYHu/jhxTFM0cxjC3pw==} 463 | engines: {node: '>= 16.0.0'} 464 | peerDependencies: 465 | '@parcel/core': ^2.14.2 466 | 467 | '@parcel/package-manager@2.9.3': 468 | resolution: {integrity: sha512-NH6omcNTEupDmW4Lm1e4NUYBjdqkURxgZ4CNESESInHJe6tblVhNB8Rpr1ar7zDar7cly9ILr8P6N3Ei7bTEjg==} 469 | engines: {node: '>= 12.0.0'} 470 | peerDependencies: 471 | '@parcel/core': ^2.9.3 472 | 473 | '@parcel/packager-css@2.14.2': 474 | resolution: {integrity: sha512-WD2vTHWIc1ETCLgKslyC4lTKqCG9Rj//EUaGw8HW7krL8dAEAdIhEvUJWzzAHsyiyORcqo+as8QFT4Wf+Fx9Jg==} 475 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 476 | 477 | '@parcel/packager-html@2.14.2': 478 | resolution: {integrity: sha512-cWkUQGGcaMcag3MqzxurqP5Ffz3rmaF572cY828aEuTfdER1rXvA4VdTJxrYWbpILe2YBYxlZPtGQYKYV5rKSQ==} 479 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 480 | 481 | '@parcel/packager-js@2.14.2': 482 | resolution: {integrity: sha512-Yw9Le3UBb/vwOCyAr1gdOPTDUyLC2Ulx8IXpP/BM7XGoGu2k7xGtGRz//2ytH0N18Et9F/1FAw9CJxMRsd/abg==} 483 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 484 | 485 | '@parcel/packager-raw@2.14.2': 486 | resolution: {integrity: sha512-nDIh3FNiUhQR22U3RNcLt1N2vBc/OGwGRvqivs9yqqyiyUWX95cVcBwB9zkFH7Gd5u8R8w4u+zQP/IGSvA5gVQ==} 487 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 488 | 489 | '@parcel/packager-svg@2.14.2': 490 | resolution: {integrity: sha512-J+unuT121omswg0HIIRU3Ow4BeuZkos3WGwZI8RFZ5OFC4sdrCqoCEFllWKLeTMFmGrCJki0SGH6ZPRjf1hcaQ==} 491 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 492 | 493 | '@parcel/packager-wasm@2.14.2': 494 | resolution: {integrity: sha512-RlysqyEiyTEPXgesZWiWXT5va/Kn1Sh9hrFHq+3CQJvhDBMlPqNBCOq4W4swwge8DBLKOi3J5YVSSVZL6LZybQ==} 495 | engines: {node: '>=16.0.0', parcel: ^2.14.2} 496 | 497 | '@parcel/plugin@2.14.2': 498 | resolution: {integrity: sha512-iUL6eJFcJkMmvTpaav+SA4bR+MEG/d5+QO6MQFsl+jkGEohDCbJlm2kCjnhjY9Gu2UAl2GMC0k+DFb5R2v9HYg==} 499 | engines: {node: '>= 16.0.0'} 500 | 501 | '@parcel/plugin@2.9.3': 502 | resolution: {integrity: sha512-qN85Gqr2GMuxX1dT1mnuO9hOcvlEv1lrYrCxn7CJN2nUhbwcfG+LEvcrCzCOJ6XtIHm+ZBV9h9p7FfoPLvpw+g==} 503 | engines: {node: '>= 12.0.0'} 504 | 505 | '@parcel/profiler@2.14.2': 506 | resolution: {integrity: sha512-kNgEz7FDC1hb7gpA/Z3s9vp6NiAJ5tEvxGhRAV64CDx98Jd/FES5MJLZ7A0vDWMHqDChgtprCkh0u3KnWrXRqg==} 507 | engines: {node: '>= 16.0.0'} 508 | 509 | '@parcel/profiler@2.9.3': 510 | resolution: {integrity: sha512-pyHc9lw8VZDfgZoeZWZU9J0CVEv1Zw9O5+e0DJPDPHuXJYr72ZAOhbljtU3owWKAeW+++Q2AZWkbUGEOjI/e6g==} 511 | engines: {node: '>= 12.0.0'} 512 | 513 | '@parcel/reporter-cli@2.14.2': 514 | resolution: {integrity: sha512-qzsn8GXBsl6dc8rLdmFsVVYAvzzSP+q+c6dvxvspC5NMu9N/fE4zfeZ0ShLexsxlpjn/ipa7cJo0gZa6E8F8qg==} 515 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 516 | 517 | '@parcel/reporter-dev-server@2.14.2': 518 | resolution: {integrity: sha512-a5AY9+MImQAg4rJ60BlGtOf813JOlFABDpw6QJ85OEw5wp5a8BAbYUgxj7eX/gr8l2k8pSY5BZcSA9PUC3YFeg==} 519 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 520 | 521 | '@parcel/reporter-tracer@2.14.2': 522 | resolution: {integrity: sha512-zGtM2GYGpT9wrFTebrKcs7aMeCVLE+aHpfeI4dQDGFkYE5QTVswkpbZkqdhp8bVRcX+p6E8YQnRb88cJhpcDqA==} 523 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 524 | 525 | '@parcel/resolver-default@2.14.2': 526 | resolution: {integrity: sha512-HzfLPK1NUiYYuONlfPg92Lv0qfF/GtZ3hP4bNI7L0MI/eOtkd19dDxXADVaF4bTY2WmnL7m2pfaZ0+Y1+zuJuw==} 527 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 528 | 529 | '@parcel/runtime-browser-hmr@2.14.2': 530 | resolution: {integrity: sha512-YJrnc52/2RMx4FaT4rt/1SCZIux9l/v3YFc9v+jCl+NEpBhDou//GBI3RPRJ0EPUgFOwmj3IZ9uPzm5WxokhGA==} 531 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 532 | 533 | '@parcel/runtime-js@2.14.2': 534 | resolution: {integrity: sha512-CqcCiURZh7hPNXF+wudsPbEbGPpANHFvHdR3O6IkQxKoWluqu2EyOzS89j1jMU4wprIK91D4snVYuZjYERTh/w==} 535 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 536 | 537 | '@parcel/runtime-rsc@2.14.2': 538 | resolution: {integrity: sha512-d58QQ/MQBlL4jvjWw3CaCAHJtwhRVuhvm0g523yor3fgbG6Iu4KFea5t5yml1C86sXMCBxWpqKJI93+bQHK1sA==} 539 | engines: {node: '>= 12.0.0', parcel: ^2.14.2} 540 | 541 | '@parcel/runtime-service-worker@2.14.2': 542 | resolution: {integrity: sha512-atFl7z3DBH5nQeRW+rdt2JulZJVergEtAK4sWfSsUIbEiBaTiK2/v7Jjxm4UDF4laHFp6d5AGixIr9TxJl7x5w==} 543 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 544 | 545 | '@parcel/rust@2.14.2': 546 | resolution: {integrity: sha512-NPXebSTdhLttERkWgJZf/QRIIvQ8DpGby84T6FGM0pfFzocnHmuL/36J5xjquEncbSjFEVUBGomCpJNQLBwK9g==} 547 | engines: {node: '>= 16.0.0'} 548 | peerDependencies: 549 | napi-wasm: ^1.1.2 550 | peerDependenciesMeta: 551 | napi-wasm: 552 | optional: true 553 | 554 | '@parcel/source-map@2.1.1': 555 | resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} 556 | engines: {node: ^12.18.3 || >=14} 557 | 558 | '@parcel/transformer-babel@2.14.2': 559 | resolution: {integrity: sha512-tVGRmHRys71AQhm4vHf9RCSYiMj5C+c7Qr0dj4RRNy8uLY+NTCi/Zdvb3ZVN069DikP1T2TpGd57gALcqK6zDQ==} 560 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 561 | 562 | '@parcel/transformer-css@2.14.2': 563 | resolution: {integrity: sha512-Q7QOwty7R/VWx1wPhnOKY7CZb4GRK/GBJH9HP6vo/1+Zf5fm9jbYhItZb3tDl7ufKqZz5UfbJhBhybaETO6umg==} 564 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 565 | 566 | '@parcel/transformer-html@2.14.2': 567 | resolution: {integrity: sha512-6HGo7m/ARInEeXoYWCIYz1wtK9pJPbRkxdqZr/lSKQAbLsyTZQZx/GgnkgKRtsmcLp8vCffMI4Yul/2RPcTJ0A==} 568 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 569 | 570 | '@parcel/transformer-image@2.14.2': 571 | resolution: {integrity: sha512-av3JZ5sizv6cIspSusZErk6yGd23UpWGIbQJsIMFnxMF9miBgmN0er92d40LI9gIGyEcpWMBYyUPH2jHEQnaNg==} 572 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 573 | peerDependencies: 574 | '@parcel/core': ^2.14.2 575 | 576 | '@parcel/transformer-js@2.14.2': 577 | resolution: {integrity: sha512-8urpoFlRpFUHEwbOxXPbqmAI+bRjcg0ED6msuSbzVODIc4qsztVt48gXuSfEBfcQIfFJzDpRTh01GOYjMQQKRA==} 578 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 579 | peerDependencies: 580 | '@parcel/core': ^2.14.2 581 | 582 | '@parcel/transformer-json@2.14.2': 583 | resolution: {integrity: sha512-wcQrlDJAmCVZ1PHVKb1ayHWzfdqpCMN8TUoYA6kB1626K6wBv5FD9NqQZA4Fs5u8cVy/ZhtZ+LfogzS7wQSpwQ==} 584 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 585 | 586 | '@parcel/transformer-node@2.14.2': 587 | resolution: {integrity: sha512-Y2Wz4ziyqOwOe+6/yayKdvYhoz6AvfblY38upfjOCh8amZcmcXCZRxVf8uZAm5y2BvbVbWZTdNYaK0o+MDud5g==} 588 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 589 | 590 | '@parcel/transformer-postcss@2.14.2': 591 | resolution: {integrity: sha512-ny74JKyYDx0mW+6r7pkRrKRe/vxq+9l035dynTs4blBJloI1gwpelnpbK0kA9t13hb7So1XxkXphO90GRB202A==} 592 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 593 | 594 | '@parcel/transformer-posthtml@2.14.2': 595 | resolution: {integrity: sha512-U4Lt7j1EYkxiDiLpem05m1xSEebcpWU8VPdc4n4Y3P5NjbW3lFivMvIK30QRkjoDofpY2tiLFROrdNy8EFqe1A==} 596 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 597 | 598 | '@parcel/transformer-raw@2.14.2': 599 | resolution: {integrity: sha512-ufGaypQLRsnZBZqylaJQQ0W5PWre+dGVlnBBkuQYY9qVo2wvGfP0sPY+xKK2i6IFfegmigFKeigViDeSoo6Ldw==} 600 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 601 | 602 | '@parcel/transformer-react-refresh-wrap@2.14.2': 603 | resolution: {integrity: sha512-gSqqjxN6qEQQtloL2QNleL0RfU5TeZEHz9IAYxTgo/kpzLv8Oiz0T93CmutbzkF38uyjI1xKO0Qj8X+lGhO9zQ==} 604 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 605 | 606 | '@parcel/transformer-svg@2.14.2': 607 | resolution: {integrity: sha512-WFyh/JwAeJWwQX2NUrKGWolXrtL6Uu/BbrYAFvWIH9GHVlq24GofRDKnncrbtF8CJ4y3K7S5ztExLpirLQT0Tg==} 608 | engines: {node: '>= 16.0.0', parcel: ^2.14.2} 609 | 610 | '@parcel/types-internal@2.14.2': 611 | resolution: {integrity: sha512-ylh2LMQtPPhc20RtygT1Qpji6zK4fSdpnokWyImJG6GYLN5tqN7tS0F0o6nPo6/1ll+X11CxTa/MPO6g+NaphQ==} 612 | 613 | '@parcel/types@2.14.2': 614 | resolution: {integrity: sha512-15vSnfdjWB3fLkqGGZ0dEZVeHheH4XgtkSBnmwhgLN7LgigK1P9BwwN8/cN/tIKMP+YfcvjVpHCtaeKRGpje9A==} 615 | 616 | '@parcel/types@2.9.3': 617 | resolution: {integrity: sha512-NSNY8sYtRhvF1SqhnIGgGvJocyWt1K8Tnw5cVepm0g38ywtX6mwkBvMkmeehXkII4mSUn+frD9wGsydTunezvA==} 618 | 619 | '@parcel/utils@2.14.2': 620 | resolution: {integrity: sha512-jgDQrzPOU4IfWnYjRL2zGMbc439334ia1nRa13XcID3+oEp10HWTxw26PGhnYQ02mlOwxg8mtrb5ugZOL+dEIQ==} 621 | engines: {node: '>= 16.0.0'} 622 | 623 | '@parcel/utils@2.9.3': 624 | resolution: {integrity: sha512-cesanjtj/oLehW8Waq9JFPmAImhoiHX03ihc3JTWkrvJYSbD7wYKCDgPAM3JiRAqvh1LZ6P699uITrYWNoRLUg==} 625 | engines: {node: '>= 12.0.0'} 626 | 627 | '@parcel/watcher@2.1.0': 628 | resolution: {integrity: sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==} 629 | engines: {node: '>= 10.0.0'} 630 | 631 | '@parcel/workers@2.14.2': 632 | resolution: {integrity: sha512-tbM71fwlmwOL62v+B1cxnte0oS/D9sNVW2CxFZJROpi4jiBJYi2SWCJsQPNVbXYdnU2gzSbQX7ozX0CaE4f9Qw==} 633 | engines: {node: '>= 16.0.0'} 634 | peerDependencies: 635 | '@parcel/core': ^2.14.2 636 | 637 | '@parcel/workers@2.9.3': 638 | resolution: {integrity: sha512-zRrDuZJzTevrrwElYosFztgldhqW6G9q5zOeQXfVQFkkEJCNfg36ixeiofKRU8uu2x+j+T6216mhMNB6HiuY+w==} 639 | engines: {node: '>= 12.0.0'} 640 | peerDependencies: 641 | '@parcel/core': ^2.9.3 642 | 643 | '@swc/core-darwin-arm64@1.11.13': 644 | resolution: {integrity: sha512-loSERhLaQ9XDS+5Kdx8cLe2tM1G0HLit8MfehipAcsdctpo79zrRlkW34elOf3tQoVPKUItV0b/rTuhjj8NtHg==} 645 | engines: {node: '>=10'} 646 | cpu: [arm64] 647 | os: [darwin] 648 | 649 | '@swc/core-darwin-x64@1.11.13': 650 | resolution: {integrity: sha512-uSA4UwgsDCIysUPfPS8OrQTH2h9spO7IYFd+1NB6dJlVGUuR6jLKuMBOP1IeLeax4cGHayvkcwSJ3OvxHwgcZQ==} 651 | engines: {node: '>=10'} 652 | cpu: [x64] 653 | os: [darwin] 654 | 655 | '@swc/core-linux-arm-gnueabihf@1.11.13': 656 | resolution: {integrity: sha512-boVtyJzS8g30iQfe8Q46W5QE/cmhKRln/7NMz/5sBP/am2Lce9NL0d05NnFwEWJp1e2AMGHFOdRr3Xg1cDiPKw==} 657 | engines: {node: '>=10'} 658 | cpu: [arm] 659 | os: [linux] 660 | 661 | '@swc/core-linux-arm64-gnu@1.11.13': 662 | resolution: {integrity: sha512-+IK0jZ84zHUaKtwpV+T+wT0qIUBnK9v2xXD03vARubKF+eUqCsIvcVHXmLpFuap62dClMrhCiwW10X3RbXNlHw==} 663 | engines: {node: '>=10'} 664 | cpu: [arm64] 665 | os: [linux] 666 | 667 | '@swc/core-linux-arm64-musl@1.11.13': 668 | resolution: {integrity: sha512-+ukuB8RHD5BHPCUjQwuLP98z+VRfu+NkKQVBcLJGgp0/+w7y0IkaxLY/aKmrAS5ofCNEGqKL+AOVyRpX1aw+XA==} 669 | engines: {node: '>=10'} 670 | cpu: [arm64] 671 | os: [linux] 672 | 673 | '@swc/core-linux-x64-gnu@1.11.13': 674 | resolution: {integrity: sha512-q9H3WI3U3dfJ34tdv60zc8oTuWvSd5fOxytyAO9Pc5M82Hic3jjWaf2xBekUg07ubnMZpyfnv+MlD+EbUI3Llw==} 675 | engines: {node: '>=10'} 676 | cpu: [x64] 677 | os: [linux] 678 | 679 | '@swc/core-linux-x64-musl@1.11.13': 680 | resolution: {integrity: sha512-9aaZnnq2pLdTbAzTSzy/q8dr7Woy3aYIcQISmw1+Q2/xHJg5y80ZzbWSWKYca/hKonDMjIbGR6dp299I5J0aeA==} 681 | engines: {node: '>=10'} 682 | cpu: [x64] 683 | os: [linux] 684 | 685 | '@swc/core-win32-arm64-msvc@1.11.13': 686 | resolution: {integrity: sha512-n3QZmDewkHANcoHvtwvA6yJbmS4XJf0MBMmwLZoKDZ2dOnC9D/jHiXw7JOohEuzYcpLoL5tgbqmjxa3XNo9Oow==} 687 | engines: {node: '>=10'} 688 | cpu: [arm64] 689 | os: [win32] 690 | 691 | '@swc/core-win32-ia32-msvc@1.11.13': 692 | resolution: {integrity: sha512-wM+Nt4lc6YSJFthCx3W2dz0EwFNf++j0/2TQ0Js9QLJuIxUQAgukhNDVCDdq8TNcT0zuA399ALYbvj5lfIqG6g==} 693 | engines: {node: '>=10'} 694 | cpu: [ia32] 695 | os: [win32] 696 | 697 | '@swc/core-win32-x64-msvc@1.11.13': 698 | resolution: {integrity: sha512-+X5/uW3s1L5gK7wAo0E27YaAoidJDo51dnfKSfU7gF3mlEUuWH8H1bAy5OTt2mU4eXtfsdUMEVXSwhDlLtQkuA==} 699 | engines: {node: '>=10'} 700 | cpu: [x64] 701 | os: [win32] 702 | 703 | '@swc/core@1.11.13': 704 | resolution: {integrity: sha512-9BXdYz12Wl0zWmZ80PvtjBWeg2ncwJ9L5WJzjhN6yUTZWEV/AwAdVdJnIEp4pro3WyKmAaMxcVOSbhuuOZco5g==} 705 | engines: {node: '>=10'} 706 | peerDependencies: 707 | '@swc/helpers': '*' 708 | peerDependenciesMeta: 709 | '@swc/helpers': 710 | optional: true 711 | 712 | '@swc/counter@0.1.3': 713 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} 714 | 715 | '@swc/helpers@0.5.1': 716 | resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} 717 | 718 | '@swc/types@0.1.20': 719 | resolution: {integrity: sha512-/rlIpxwKrhz4BIplXf6nsEHtqlhzuNN34/k3kMAXH4/lvVoA3cdq+60aqVNnyvw2uITEaCi0WV3pxBe4dQqoXQ==} 720 | 721 | '@trysound/sax@0.2.0': 722 | resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} 723 | engines: {node: '>=10.13.0'} 724 | 725 | '@types/codemirror@5.60.9': 726 | resolution: {integrity: sha512-8RhLhlGo9bAkytFYKDzezorY2ojvGk+4xFEso/6Hc2oR1oE2P9lI+AEkbUW7cDlKcQAK5WJkJRBLTdjBE7xQPA==} 727 | 728 | '@types/estree@1.0.1': 729 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 730 | 731 | '@types/json-schema@7.0.12': 732 | resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} 733 | 734 | '@types/parse-json@4.0.0': 735 | resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} 736 | 737 | '@types/semver@7.5.0': 738 | resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} 739 | 740 | '@types/tern@0.23.4': 741 | resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==} 742 | 743 | '@typescript-eslint/eslint-plugin@6.2.0': 744 | resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} 745 | engines: {node: ^16.0.0 || >=18.0.0} 746 | peerDependencies: 747 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha 748 | eslint: ^7.0.0 || ^8.0.0 749 | typescript: '*' 750 | peerDependenciesMeta: 751 | typescript: 752 | optional: true 753 | 754 | '@typescript-eslint/parser@6.2.0': 755 | resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} 756 | engines: {node: ^16.0.0 || >=18.0.0} 757 | peerDependencies: 758 | eslint: ^7.0.0 || ^8.0.0 759 | typescript: '*' 760 | peerDependenciesMeta: 761 | typescript: 762 | optional: true 763 | 764 | '@typescript-eslint/scope-manager@6.2.0': 765 | resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} 766 | engines: {node: ^16.0.0 || >=18.0.0} 767 | 768 | '@typescript-eslint/type-utils@6.2.0': 769 | resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} 770 | engines: {node: ^16.0.0 || >=18.0.0} 771 | peerDependencies: 772 | eslint: ^7.0.0 || ^8.0.0 773 | typescript: '*' 774 | peerDependenciesMeta: 775 | typescript: 776 | optional: true 777 | 778 | '@typescript-eslint/types@6.2.0': 779 | resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} 780 | engines: {node: ^16.0.0 || >=18.0.0} 781 | 782 | '@typescript-eslint/typescript-estree@6.2.0': 783 | resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} 784 | engines: {node: ^16.0.0 || >=18.0.0} 785 | peerDependencies: 786 | typescript: '*' 787 | peerDependenciesMeta: 788 | typescript: 789 | optional: true 790 | 791 | '@typescript-eslint/utils@6.2.0': 792 | resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} 793 | engines: {node: ^16.0.0 || >=18.0.0} 794 | peerDependencies: 795 | eslint: ^7.0.0 || ^8.0.0 796 | 797 | '@typescript-eslint/visitor-keys@6.2.0': 798 | resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} 799 | engines: {node: ^16.0.0 || >=18.0.0} 800 | 801 | acorn-jsx@5.3.2: 802 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 803 | peerDependencies: 804 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 805 | 806 | acorn@8.10.0: 807 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 808 | engines: {node: '>=0.4.0'} 809 | hasBin: true 810 | 811 | ajv@6.12.6: 812 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 813 | 814 | ansi-regex@5.0.1: 815 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 816 | engines: {node: '>=8'} 817 | 818 | ansi-styles@3.2.1: 819 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 820 | engines: {node: '>=4'} 821 | 822 | ansi-styles@4.3.0: 823 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 824 | engines: {node: '>=8'} 825 | 826 | argparse@2.0.1: 827 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 828 | 829 | array-union@2.1.0: 830 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 831 | engines: {node: '>=8'} 832 | 833 | balanced-match@1.0.2: 834 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 835 | 836 | base-x@3.0.9: 837 | resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} 838 | 839 | boolbase@1.0.0: 840 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 841 | 842 | brace-expansion@1.1.11: 843 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 844 | 845 | braces@3.0.3: 846 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 847 | engines: {node: '>=8'} 848 | 849 | browserslist@4.21.5: 850 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} 851 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 852 | hasBin: true 853 | 854 | callsites@3.1.0: 855 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 856 | engines: {node: '>=6'} 857 | 858 | caniuse-lite@1.0.30001517: 859 | resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} 860 | 861 | chalk@2.4.2: 862 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 863 | engines: {node: '>=4'} 864 | 865 | chalk@4.1.2: 866 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 867 | engines: {node: '>=10'} 868 | 869 | chrome-trace-event@1.0.3: 870 | resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} 871 | engines: {node: '>=6.0'} 872 | 873 | clone@2.1.2: 874 | resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} 875 | engines: {node: '>=0.8'} 876 | 877 | codemirror@5.65.15: 878 | resolution: {integrity: sha512-YC4EHbbwQeubZzxLl5G4nlbLc1T21QTrKGaOal/Pkm9dVDMZXMH7+ieSPEOZCtO9I68i8/oteJKOxzHC2zR+0g==} 879 | 880 | color-convert@1.9.3: 881 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 882 | 883 | color-convert@2.0.1: 884 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 885 | engines: {node: '>=7.0.0'} 886 | 887 | color-name@1.1.3: 888 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 889 | 890 | color-name@1.1.4: 891 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 892 | 893 | color-string@1.9.1: 894 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 895 | 896 | color@4.2.3: 897 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 898 | engines: {node: '>=12.5.0'} 899 | 900 | commander@12.1.0: 901 | resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} 902 | engines: {node: '>=18'} 903 | 904 | commander@7.2.0: 905 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 906 | engines: {node: '>= 10'} 907 | 908 | concat-map@0.0.1: 909 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 910 | 911 | cosmiconfig@7.1.0: 912 | resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} 913 | engines: {node: '>=10'} 914 | 915 | cross-spawn@7.0.3: 916 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 917 | engines: {node: '>= 8'} 918 | 919 | css-select@4.3.0: 920 | resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} 921 | 922 | css-tree@1.1.3: 923 | resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} 924 | engines: {node: '>=8.0.0'} 925 | 926 | css-what@6.1.0: 927 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 928 | engines: {node: '>= 6'} 929 | 930 | csso@4.2.0: 931 | resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} 932 | engines: {node: '>=8.0.0'} 933 | 934 | debug@4.3.4: 935 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 936 | engines: {node: '>=6.0'} 937 | peerDependencies: 938 | supports-color: '*' 939 | peerDependenciesMeta: 940 | supports-color: 941 | optional: true 942 | 943 | deep-is@0.1.4: 944 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 945 | 946 | detect-libc@1.0.3: 947 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 948 | engines: {node: '>=0.10'} 949 | hasBin: true 950 | 951 | detect-libc@2.0.3: 952 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} 953 | engines: {node: '>=8'} 954 | 955 | dir-glob@3.0.1: 956 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 957 | engines: {node: '>=8'} 958 | 959 | doctrine@3.0.0: 960 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 961 | engines: {node: '>=6.0.0'} 962 | 963 | dom-serializer@1.4.1: 964 | resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} 965 | 966 | dom-serializer@2.0.0: 967 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 968 | 969 | domelementtype@2.3.0: 970 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 971 | 972 | domhandler@4.3.1: 973 | resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} 974 | engines: {node: '>= 4'} 975 | 976 | domhandler@5.0.3: 977 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 978 | engines: {node: '>= 4'} 979 | 980 | domutils@2.8.0: 981 | resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} 982 | 983 | domutils@3.2.2: 984 | resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} 985 | 986 | dotenv-expand@11.0.7: 987 | resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} 988 | engines: {node: '>=12'} 989 | 990 | dotenv@16.4.7: 991 | resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} 992 | engines: {node: '>=12'} 993 | 994 | electron-to-chromium@1.4.288: 995 | resolution: {integrity: sha512-8s9aJf3YiokIrR+HOQzNOGmEHFXVUQzXM/JaViVvKdCkNUjS+lEa/uT7xw3nDVG/IgfxiIwUGkwJ6AR1pTpYsQ==} 996 | 997 | entities@2.2.0: 998 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 999 | 1000 | entities@3.0.1: 1001 | resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} 1002 | engines: {node: '>=0.12'} 1003 | 1004 | entities@4.5.0: 1005 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1006 | engines: {node: '>=0.12'} 1007 | 1008 | error-ex@1.3.2: 1009 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1010 | 1011 | escalade@3.1.1: 1012 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1013 | engines: {node: '>=6'} 1014 | 1015 | escape-string-regexp@1.0.5: 1016 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1017 | engines: {node: '>=0.8.0'} 1018 | 1019 | escape-string-regexp@4.0.0: 1020 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1021 | engines: {node: '>=10'} 1022 | 1023 | eslint-scope@7.2.2: 1024 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1025 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1026 | 1027 | eslint-visitor-keys@3.4.2: 1028 | resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} 1029 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1030 | 1031 | eslint@8.46.0: 1032 | resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} 1033 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1034 | deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. 1035 | hasBin: true 1036 | 1037 | espree@9.6.1: 1038 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1039 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1040 | 1041 | esquery@1.5.0: 1042 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1043 | engines: {node: '>=0.10'} 1044 | 1045 | esrecurse@4.3.0: 1046 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1047 | engines: {node: '>=4.0'} 1048 | 1049 | estraverse@5.3.0: 1050 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1051 | engines: {node: '>=4.0'} 1052 | 1053 | esutils@2.0.3: 1054 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1055 | engines: {node: '>=0.10.0'} 1056 | 1057 | fast-deep-equal@3.1.3: 1058 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1059 | 1060 | fast-glob@3.3.1: 1061 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 1062 | engines: {node: '>=8.6.0'} 1063 | 1064 | fast-json-stable-stringify@2.1.0: 1065 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1066 | 1067 | fast-levenshtein@2.0.6: 1068 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1069 | 1070 | fastq@1.15.0: 1071 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1072 | 1073 | file-entry-cache@6.0.1: 1074 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1075 | engines: {node: ^10.12.0 || >=12.0.0} 1076 | 1077 | fill-range@7.1.1: 1078 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1079 | engines: {node: '>=8'} 1080 | 1081 | find-up@5.0.0: 1082 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1083 | engines: {node: '>=10'} 1084 | 1085 | flat-cache@3.0.4: 1086 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1087 | engines: {node: ^10.12.0 || >=12.0.0} 1088 | 1089 | flatted@3.2.7: 1090 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1091 | 1092 | fs.realpath@1.0.0: 1093 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1094 | 1095 | get-port@4.2.0: 1096 | resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} 1097 | engines: {node: '>=6'} 1098 | 1099 | glob-parent@5.1.2: 1100 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1101 | engines: {node: '>= 6'} 1102 | 1103 | glob-parent@6.0.2: 1104 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1105 | engines: {node: '>=10.13.0'} 1106 | 1107 | glob@7.2.3: 1108 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1109 | deprecated: Glob versions prior to v9 are no longer supported 1110 | 1111 | globals@13.20.0: 1112 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1113 | engines: {node: '>=8'} 1114 | 1115 | globby@11.1.0: 1116 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1117 | engines: {node: '>=10'} 1118 | 1119 | graphemer@1.4.0: 1120 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1121 | 1122 | has-flag@3.0.0: 1123 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1124 | engines: {node: '>=4'} 1125 | 1126 | has-flag@4.0.0: 1127 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1128 | engines: {node: '>=8'} 1129 | 1130 | htmlnano@2.0.3: 1131 | resolution: {integrity: sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==} 1132 | peerDependencies: 1133 | cssnano: ^5.0.11 1134 | postcss: ^8.3.11 1135 | purgecss: ^5.0.0 1136 | relateurl: ^0.2.7 1137 | srcset: 4.0.0 1138 | svgo: ^2.8.0 1139 | terser: ^5.10.0 1140 | uncss: ^0.17.3 1141 | peerDependenciesMeta: 1142 | cssnano: 1143 | optional: true 1144 | postcss: 1145 | optional: true 1146 | purgecss: 1147 | optional: true 1148 | relateurl: 1149 | optional: true 1150 | srcset: 1151 | optional: true 1152 | svgo: 1153 | optional: true 1154 | terser: 1155 | optional: true 1156 | uncss: 1157 | optional: true 1158 | 1159 | htmlparser2@7.2.0: 1160 | resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} 1161 | 1162 | htmlparser2@9.1.0: 1163 | resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} 1164 | 1165 | ignore@5.2.4: 1166 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1167 | engines: {node: '>= 4'} 1168 | 1169 | import-fresh@3.3.0: 1170 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1171 | engines: {node: '>=6'} 1172 | 1173 | imurmurhash@0.1.4: 1174 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1175 | engines: {node: '>=0.8.19'} 1176 | 1177 | inflight@1.0.6: 1178 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1179 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1180 | 1181 | inherits@2.0.4: 1182 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1183 | 1184 | is-arrayish@0.2.1: 1185 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1186 | 1187 | is-arrayish@0.3.2: 1188 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} 1189 | 1190 | is-extglob@2.1.1: 1191 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1192 | engines: {node: '>=0.10.0'} 1193 | 1194 | is-glob@4.0.3: 1195 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1196 | engines: {node: '>=0.10.0'} 1197 | 1198 | is-json@2.0.1: 1199 | resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} 1200 | 1201 | is-number@7.0.0: 1202 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1203 | engines: {node: '>=0.12.0'} 1204 | 1205 | is-path-inside@3.0.3: 1206 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1207 | engines: {node: '>=8'} 1208 | 1209 | isexe@2.0.0: 1210 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1211 | 1212 | js-tokens@4.0.0: 1213 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1214 | 1215 | js-yaml@4.1.0: 1216 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1217 | hasBin: true 1218 | 1219 | json-parse-even-better-errors@2.3.1: 1220 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1221 | 1222 | json-schema-traverse@0.4.1: 1223 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1224 | 1225 | json-stable-stringify-without-jsonify@1.0.1: 1226 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1227 | 1228 | json5@2.2.3: 1229 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1230 | engines: {node: '>=6'} 1231 | hasBin: true 1232 | 1233 | levn@0.4.1: 1234 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1235 | engines: {node: '>= 0.8.0'} 1236 | 1237 | lightningcss-darwin-arm64@1.29.3: 1238 | resolution: {integrity: sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==} 1239 | engines: {node: '>= 12.0.0'} 1240 | cpu: [arm64] 1241 | os: [darwin] 1242 | 1243 | lightningcss-darwin-x64@1.29.3: 1244 | resolution: {integrity: sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==} 1245 | engines: {node: '>= 12.0.0'} 1246 | cpu: [x64] 1247 | os: [darwin] 1248 | 1249 | lightningcss-freebsd-x64@1.29.3: 1250 | resolution: {integrity: sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==} 1251 | engines: {node: '>= 12.0.0'} 1252 | cpu: [x64] 1253 | os: [freebsd] 1254 | 1255 | lightningcss-linux-arm-gnueabihf@1.29.3: 1256 | resolution: {integrity: sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==} 1257 | engines: {node: '>= 12.0.0'} 1258 | cpu: [arm] 1259 | os: [linux] 1260 | 1261 | lightningcss-linux-arm64-gnu@1.29.3: 1262 | resolution: {integrity: sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==} 1263 | engines: {node: '>= 12.0.0'} 1264 | cpu: [arm64] 1265 | os: [linux] 1266 | 1267 | lightningcss-linux-arm64-musl@1.29.3: 1268 | resolution: {integrity: sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==} 1269 | engines: {node: '>= 12.0.0'} 1270 | cpu: [arm64] 1271 | os: [linux] 1272 | 1273 | lightningcss-linux-x64-gnu@1.29.3: 1274 | resolution: {integrity: sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==} 1275 | engines: {node: '>= 12.0.0'} 1276 | cpu: [x64] 1277 | os: [linux] 1278 | 1279 | lightningcss-linux-x64-musl@1.29.3: 1280 | resolution: {integrity: sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==} 1281 | engines: {node: '>= 12.0.0'} 1282 | cpu: [x64] 1283 | os: [linux] 1284 | 1285 | lightningcss-win32-arm64-msvc@1.29.3: 1286 | resolution: {integrity: sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==} 1287 | engines: {node: '>= 12.0.0'} 1288 | cpu: [arm64] 1289 | os: [win32] 1290 | 1291 | lightningcss-win32-x64-msvc@1.29.3: 1292 | resolution: {integrity: sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==} 1293 | engines: {node: '>= 12.0.0'} 1294 | cpu: [x64] 1295 | os: [win32] 1296 | 1297 | lightningcss@1.29.3: 1298 | resolution: {integrity: sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==} 1299 | engines: {node: '>= 12.0.0'} 1300 | 1301 | lines-and-columns@1.2.4: 1302 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1303 | 1304 | lmdb@2.7.11: 1305 | resolution: {integrity: sha512-x9bD4hVp7PFLUoELL8RglbNXhAMt5CYhkmss+CEau9KlNoilsTzNi9QDsPZb3KMpOGZXG6jmXhW3bBxE2XVztw==} 1306 | hasBin: true 1307 | 1308 | lmdb@2.8.5: 1309 | resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} 1310 | hasBin: true 1311 | 1312 | locate-path@6.0.0: 1313 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1314 | engines: {node: '>=10'} 1315 | 1316 | lodash.merge@4.6.2: 1317 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1318 | 1319 | lru-cache@6.0.0: 1320 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1321 | engines: {node: '>=10'} 1322 | 1323 | lz-string@1.5.0: 1324 | resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} 1325 | hasBin: true 1326 | 1327 | mdn-data@2.0.14: 1328 | resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} 1329 | 1330 | merge2@1.4.1: 1331 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1332 | engines: {node: '>= 8'} 1333 | 1334 | micromatch@4.0.5: 1335 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1336 | engines: {node: '>=8.6'} 1337 | 1338 | minimatch@3.1.2: 1339 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1340 | 1341 | ms@2.1.2: 1342 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1343 | 1344 | msgpackr-extract@3.0.2: 1345 | resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==} 1346 | hasBin: true 1347 | 1348 | msgpackr@1.11.2: 1349 | resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} 1350 | 1351 | msgpackr@1.8.5: 1352 | resolution: {integrity: sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==} 1353 | 1354 | natural-compare-lite@1.4.0: 1355 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 1356 | 1357 | natural-compare@1.4.0: 1358 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1359 | 1360 | node-addon-api@3.2.1: 1361 | resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} 1362 | 1363 | node-addon-api@4.3.0: 1364 | resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} 1365 | 1366 | node-addon-api@6.1.0: 1367 | resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} 1368 | 1369 | node-gyp-build-optional-packages@5.0.6: 1370 | resolution: {integrity: sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==} 1371 | hasBin: true 1372 | 1373 | node-gyp-build-optional-packages@5.0.7: 1374 | resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} 1375 | hasBin: true 1376 | 1377 | node-gyp-build-optional-packages@5.1.1: 1378 | resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} 1379 | hasBin: true 1380 | 1381 | node-gyp-build@4.6.0: 1382 | resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} 1383 | hasBin: true 1384 | 1385 | node-releases@2.0.10: 1386 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} 1387 | 1388 | nth-check@2.1.1: 1389 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 1390 | 1391 | nullthrows@1.1.1: 1392 | resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} 1393 | 1394 | once@1.4.0: 1395 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1396 | 1397 | optionator@0.9.3: 1398 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 1399 | engines: {node: '>= 0.8.0'} 1400 | 1401 | ordered-binary@1.4.0: 1402 | resolution: {integrity: sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==} 1403 | 1404 | ordered-binary@1.5.3: 1405 | resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} 1406 | 1407 | p-limit@3.1.0: 1408 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1409 | engines: {node: '>=10'} 1410 | 1411 | p-locate@5.0.0: 1412 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1413 | engines: {node: '>=10'} 1414 | 1415 | parcel-reporter-static-files-copy@1.5.3: 1416 | resolution: {integrity: sha512-Ukq2SyJYn3GFIPCLamXuQ+2t+0j54llujjOUoRjtmVvfsuGnJDEpMznADeIoKuQDvy0jpxtWzWkQvxqI/j+U4A==} 1417 | engines: {parcel: ^2.0.0-beta.1} 1418 | 1419 | parcel@2.14.2: 1420 | resolution: {integrity: sha512-dqB4/Oo8L7HfWyrxAQKnizQ/XzQM2iAY5fEaZUgS4wh+B3FE4LO5JVgobhVBBrIOoT02sV4gUEQhNJeU3raSuA==} 1421 | engines: {node: '>= 16.0.0'} 1422 | hasBin: true 1423 | 1424 | parent-module@1.0.1: 1425 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1426 | engines: {node: '>=6'} 1427 | 1428 | parse-json@5.2.0: 1429 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1430 | engines: {node: '>=8'} 1431 | 1432 | path-exists@4.0.0: 1433 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1434 | engines: {node: '>=8'} 1435 | 1436 | path-is-absolute@1.0.1: 1437 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1438 | engines: {node: '>=0.10.0'} 1439 | 1440 | path-key@3.1.1: 1441 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1442 | engines: {node: '>=8'} 1443 | 1444 | path-type@4.0.0: 1445 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1446 | engines: {node: '>=8'} 1447 | 1448 | picocolors@1.0.0: 1449 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1450 | 1451 | picomatch@2.3.1: 1452 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1453 | engines: {node: '>=8.6'} 1454 | 1455 | postcss-value-parser@4.2.0: 1456 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1457 | 1458 | posthtml-parser@0.11.0: 1459 | resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} 1460 | engines: {node: '>=12'} 1461 | 1462 | posthtml-parser@0.12.1: 1463 | resolution: {integrity: sha512-rYFmsDLfYm+4Ts2Oh4DCDSZPtdC1BLnRXAobypVzX9alj28KGl65dIFtgDY9zB57D0TC4Qxqrawuq/2et1P0GA==} 1464 | engines: {node: '>=16'} 1465 | 1466 | posthtml-render@3.0.0: 1467 | resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} 1468 | engines: {node: '>=12'} 1469 | 1470 | posthtml@0.16.6: 1471 | resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} 1472 | engines: {node: '>=12.0.0'} 1473 | 1474 | prelude-ls@1.2.1: 1475 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1476 | engines: {node: '>= 0.8.0'} 1477 | 1478 | prettier@3.0.0: 1479 | resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} 1480 | engines: {node: '>=14'} 1481 | hasBin: true 1482 | 1483 | punycode@2.3.0: 1484 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1485 | engines: {node: '>=6'} 1486 | 1487 | queue-microtask@1.2.3: 1488 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1489 | 1490 | react-refresh@0.9.0: 1491 | resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} 1492 | engines: {node: '>=0.10.0'} 1493 | 1494 | regenerator-runtime@0.14.1: 1495 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1496 | 1497 | resolve-from@4.0.0: 1498 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1499 | engines: {node: '>=4'} 1500 | 1501 | reusify@1.0.4: 1502 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1503 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1504 | 1505 | rimraf@3.0.2: 1506 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1507 | deprecated: Rimraf versions prior to v4 are no longer supported 1508 | hasBin: true 1509 | 1510 | run-parallel@1.2.0: 1511 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1512 | 1513 | safe-buffer@5.2.1: 1514 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1515 | 1516 | semver@7.5.4: 1517 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 1518 | engines: {node: '>=10'} 1519 | hasBin: true 1520 | 1521 | semver@7.7.1: 1522 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1523 | engines: {node: '>=10'} 1524 | hasBin: true 1525 | 1526 | sharp@0.33.5: 1527 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1528 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1529 | 1530 | shebang-command@2.0.0: 1531 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1532 | engines: {node: '>=8'} 1533 | 1534 | shebang-regex@3.0.0: 1535 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1536 | engines: {node: '>=8'} 1537 | 1538 | simple-swizzle@0.2.2: 1539 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} 1540 | 1541 | slash@3.0.0: 1542 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1543 | engines: {node: '>=8'} 1544 | 1545 | source-map@0.6.1: 1546 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1547 | engines: {node: '>=0.10.0'} 1548 | 1549 | split.js@1.6.5: 1550 | resolution: {integrity: sha512-mPTnGCiS/RiuTNsVhCm9De9cCAUsrNFFviRbADdKiiV+Kk8HKp/0fWu7Kr8pi3/yBmsqLFHuXGT9UUZ+CNLwFw==} 1551 | 1552 | srcset@4.0.0: 1553 | resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} 1554 | engines: {node: '>=12'} 1555 | 1556 | stable@0.1.8: 1557 | resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} 1558 | deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' 1559 | 1560 | strip-ansi@6.0.1: 1561 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1562 | engines: {node: '>=8'} 1563 | 1564 | strip-json-comments@3.1.1: 1565 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1566 | engines: {node: '>=8'} 1567 | 1568 | supports-color@5.5.0: 1569 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1570 | engines: {node: '>=4'} 1571 | 1572 | supports-color@7.2.0: 1573 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1574 | engines: {node: '>=8'} 1575 | 1576 | svgo@2.8.0: 1577 | resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} 1578 | engines: {node: '>=10.13.0'} 1579 | hasBin: true 1580 | 1581 | term-size@2.2.1: 1582 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 1583 | engines: {node: '>=8'} 1584 | 1585 | text-table@0.2.0: 1586 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1587 | 1588 | timsort@0.3.0: 1589 | resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} 1590 | 1591 | to-regex-range@5.0.1: 1592 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1593 | engines: {node: '>=8.0'} 1594 | 1595 | ts-api-utils@1.0.1: 1596 | resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} 1597 | engines: {node: '>=16.13.0'} 1598 | peerDependencies: 1599 | typescript: '>=4.2.0' 1600 | 1601 | tslib@2.5.0: 1602 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} 1603 | 1604 | type-check@0.4.0: 1605 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1606 | engines: {node: '>= 0.8.0'} 1607 | 1608 | type-fest@0.20.2: 1609 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1610 | engines: {node: '>=10'} 1611 | 1612 | typescript@5.2.2: 1613 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} 1614 | engines: {node: '>=14.17'} 1615 | hasBin: true 1616 | 1617 | update-browserslist-db@1.0.10: 1618 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 1619 | hasBin: true 1620 | peerDependencies: 1621 | browserslist: '>= 4.21.0' 1622 | 1623 | uri-js@4.4.1: 1624 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1625 | 1626 | utility-types@3.10.0: 1627 | resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} 1628 | engines: {node: '>= 4'} 1629 | 1630 | weak-lru-cache@1.2.2: 1631 | resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} 1632 | 1633 | which@2.0.2: 1634 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1635 | engines: {node: '>= 8'} 1636 | hasBin: true 1637 | 1638 | wrappy@1.0.2: 1639 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1640 | 1641 | xxhash-wasm@0.4.2: 1642 | resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==} 1643 | 1644 | yallist@4.0.0: 1645 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1646 | 1647 | yaml@1.10.2: 1648 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1649 | engines: {node: '>= 6'} 1650 | 1651 | yocto-queue@0.1.0: 1652 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1653 | engines: {node: '>=10'} 1654 | 1655 | snapshots: 1656 | 1657 | '@aashutoshrathi/word-wrap@1.2.6': {} 1658 | 1659 | '@babel/code-frame@7.18.6': 1660 | dependencies: 1661 | '@babel/highlight': 7.18.6 1662 | 1663 | '@babel/helper-validator-identifier@7.19.1': {} 1664 | 1665 | '@babel/highlight@7.18.6': 1666 | dependencies: 1667 | '@babel/helper-validator-identifier': 7.19.1 1668 | chalk: 2.4.2 1669 | js-tokens: 4.0.0 1670 | 1671 | '@emnapi/runtime@1.3.1': 1672 | dependencies: 1673 | tslib: 2.5.0 1674 | optional: true 1675 | 1676 | '@eslint-community/eslint-utils@4.4.0(eslint@8.46.0)': 1677 | dependencies: 1678 | eslint: 8.46.0 1679 | eslint-visitor-keys: 3.4.2 1680 | 1681 | '@eslint-community/regexpp@4.6.2': {} 1682 | 1683 | '@eslint/eslintrc@2.1.1': 1684 | dependencies: 1685 | ajv: 6.12.6 1686 | debug: 4.3.4 1687 | espree: 9.6.1 1688 | globals: 13.20.0 1689 | ignore: 5.2.4 1690 | import-fresh: 3.3.0 1691 | js-yaml: 4.1.0 1692 | minimatch: 3.1.2 1693 | strip-json-comments: 3.1.1 1694 | transitivePeerDependencies: 1695 | - supports-color 1696 | 1697 | '@eslint/js@8.46.0': {} 1698 | 1699 | '@humanwhocodes/config-array@0.11.10': 1700 | dependencies: 1701 | '@humanwhocodes/object-schema': 1.2.1 1702 | debug: 4.3.4 1703 | minimatch: 3.1.2 1704 | transitivePeerDependencies: 1705 | - supports-color 1706 | 1707 | '@humanwhocodes/module-importer@1.0.1': {} 1708 | 1709 | '@humanwhocodes/object-schema@1.2.1': {} 1710 | 1711 | '@img/sharp-darwin-arm64@0.33.5': 1712 | optionalDependencies: 1713 | '@img/sharp-libvips-darwin-arm64': 1.0.4 1714 | optional: true 1715 | 1716 | '@img/sharp-darwin-x64@0.33.5': 1717 | optionalDependencies: 1718 | '@img/sharp-libvips-darwin-x64': 1.0.4 1719 | optional: true 1720 | 1721 | '@img/sharp-libvips-darwin-arm64@1.0.4': 1722 | optional: true 1723 | 1724 | '@img/sharp-libvips-darwin-x64@1.0.4': 1725 | optional: true 1726 | 1727 | '@img/sharp-libvips-linux-arm64@1.0.4': 1728 | optional: true 1729 | 1730 | '@img/sharp-libvips-linux-arm@1.0.5': 1731 | optional: true 1732 | 1733 | '@img/sharp-libvips-linux-s390x@1.0.4': 1734 | optional: true 1735 | 1736 | '@img/sharp-libvips-linux-x64@1.0.4': 1737 | optional: true 1738 | 1739 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 1740 | optional: true 1741 | 1742 | '@img/sharp-libvips-linuxmusl-x64@1.0.4': 1743 | optional: true 1744 | 1745 | '@img/sharp-linux-arm64@0.33.5': 1746 | optionalDependencies: 1747 | '@img/sharp-libvips-linux-arm64': 1.0.4 1748 | optional: true 1749 | 1750 | '@img/sharp-linux-arm@0.33.5': 1751 | optionalDependencies: 1752 | '@img/sharp-libvips-linux-arm': 1.0.5 1753 | optional: true 1754 | 1755 | '@img/sharp-linux-s390x@0.33.5': 1756 | optionalDependencies: 1757 | '@img/sharp-libvips-linux-s390x': 1.0.4 1758 | optional: true 1759 | 1760 | '@img/sharp-linux-x64@0.33.5': 1761 | optionalDependencies: 1762 | '@img/sharp-libvips-linux-x64': 1.0.4 1763 | optional: true 1764 | 1765 | '@img/sharp-linuxmusl-arm64@0.33.5': 1766 | optionalDependencies: 1767 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 1768 | optional: true 1769 | 1770 | '@img/sharp-linuxmusl-x64@0.33.5': 1771 | optionalDependencies: 1772 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4 1773 | optional: true 1774 | 1775 | '@img/sharp-wasm32@0.33.5': 1776 | dependencies: 1777 | '@emnapi/runtime': 1.3.1 1778 | optional: true 1779 | 1780 | '@img/sharp-win32-ia32@0.33.5': 1781 | optional: true 1782 | 1783 | '@img/sharp-win32-x64@0.33.5': 1784 | optional: true 1785 | 1786 | '@lezer/common@0.15.12': {} 1787 | 1788 | '@lezer/lr@0.15.8': 1789 | dependencies: 1790 | '@lezer/common': 0.15.12 1791 | 1792 | '@lmdb/lmdb-darwin-arm64@2.7.11': 1793 | optional: true 1794 | 1795 | '@lmdb/lmdb-darwin-arm64@2.8.5': 1796 | optional: true 1797 | 1798 | '@lmdb/lmdb-darwin-x64@2.7.11': 1799 | optional: true 1800 | 1801 | '@lmdb/lmdb-darwin-x64@2.8.5': 1802 | optional: true 1803 | 1804 | '@lmdb/lmdb-linux-arm64@2.7.11': 1805 | optional: true 1806 | 1807 | '@lmdb/lmdb-linux-arm64@2.8.5': 1808 | optional: true 1809 | 1810 | '@lmdb/lmdb-linux-arm@2.7.11': 1811 | optional: true 1812 | 1813 | '@lmdb/lmdb-linux-arm@2.8.5': 1814 | optional: true 1815 | 1816 | '@lmdb/lmdb-linux-x64@2.7.11': 1817 | optional: true 1818 | 1819 | '@lmdb/lmdb-linux-x64@2.8.5': 1820 | optional: true 1821 | 1822 | '@lmdb/lmdb-win32-x64@2.7.11': 1823 | optional: true 1824 | 1825 | '@lmdb/lmdb-win32-x64@2.8.5': 1826 | optional: true 1827 | 1828 | '@mischnic/json-sourcemap@0.1.0': 1829 | dependencies: 1830 | '@lezer/common': 0.15.12 1831 | '@lezer/lr': 0.15.8 1832 | json5: 2.2.3 1833 | 1834 | '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2': 1835 | optional: true 1836 | 1837 | '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2': 1838 | optional: true 1839 | 1840 | '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2': 1841 | optional: true 1842 | 1843 | '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2': 1844 | optional: true 1845 | 1846 | '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2': 1847 | optional: true 1848 | 1849 | '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': 1850 | optional: true 1851 | 1852 | '@nodelib/fs.scandir@2.1.5': 1853 | dependencies: 1854 | '@nodelib/fs.stat': 2.0.5 1855 | run-parallel: 1.2.0 1856 | 1857 | '@nodelib/fs.stat@2.0.5': {} 1858 | 1859 | '@nodelib/fs.walk@1.2.8': 1860 | dependencies: 1861 | '@nodelib/fs.scandir': 2.1.5 1862 | fastq: 1.15.0 1863 | 1864 | '@parcel/bundler-default@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 1865 | dependencies: 1866 | '@parcel/diagnostic': 2.14.2 1867 | '@parcel/graph': 3.4.2 1868 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1869 | '@parcel/rust': 2.14.2 1870 | '@parcel/utils': 2.14.2 1871 | nullthrows: 1.1.1 1872 | transitivePeerDependencies: 1873 | - '@parcel/core' 1874 | - napi-wasm 1875 | 1876 | '@parcel/cache@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 1877 | dependencies: 1878 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 1879 | '@parcel/fs': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1880 | '@parcel/logger': 2.14.2 1881 | '@parcel/utils': 2.14.2 1882 | lmdb: 2.8.5 1883 | transitivePeerDependencies: 1884 | - napi-wasm 1885 | 1886 | '@parcel/cache@2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 1887 | dependencies: 1888 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 1889 | '@parcel/fs': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1890 | '@parcel/logger': 2.9.3 1891 | '@parcel/utils': 2.9.3 1892 | lmdb: 2.7.11 1893 | 1894 | '@parcel/codeframe@2.14.2': 1895 | dependencies: 1896 | chalk: 4.1.2 1897 | 1898 | '@parcel/codeframe@2.9.3': 1899 | dependencies: 1900 | chalk: 4.1.2 1901 | 1902 | '@parcel/compressor-raw@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 1903 | dependencies: 1904 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1905 | transitivePeerDependencies: 1906 | - '@parcel/core' 1907 | - napi-wasm 1908 | 1909 | '@parcel/config-default@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(@swc/helpers@0.5.1)(srcset@4.0.0)(svgo@2.8.0)': 1910 | dependencies: 1911 | '@parcel/bundler-default': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1912 | '@parcel/compressor-raw': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1913 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 1914 | '@parcel/namer-default': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1915 | '@parcel/optimizer-css': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1916 | '@parcel/optimizer-htmlnano': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(srcset@4.0.0)(svgo@2.8.0) 1917 | '@parcel/optimizer-image': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1918 | '@parcel/optimizer-svgo': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1919 | '@parcel/optimizer-swc': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(@swc/helpers@0.5.1) 1920 | '@parcel/packager-css': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1921 | '@parcel/packager-html': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1922 | '@parcel/packager-js': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1923 | '@parcel/packager-raw': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1924 | '@parcel/packager-svg': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1925 | '@parcel/packager-wasm': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1926 | '@parcel/reporter-dev-server': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1927 | '@parcel/resolver-default': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1928 | '@parcel/runtime-browser-hmr': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1929 | '@parcel/runtime-js': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1930 | '@parcel/runtime-rsc': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1931 | '@parcel/runtime-service-worker': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1932 | '@parcel/transformer-babel': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1933 | '@parcel/transformer-css': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1934 | '@parcel/transformer-html': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1935 | '@parcel/transformer-image': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1936 | '@parcel/transformer-js': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1937 | '@parcel/transformer-json': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1938 | '@parcel/transformer-node': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1939 | '@parcel/transformer-postcss': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1940 | '@parcel/transformer-posthtml': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1941 | '@parcel/transformer-raw': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1942 | '@parcel/transformer-react-refresh-wrap': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1943 | '@parcel/transformer-svg': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1944 | transitivePeerDependencies: 1945 | - '@swc/helpers' 1946 | - cssnano 1947 | - napi-wasm 1948 | - postcss 1949 | - purgecss 1950 | - relateurl 1951 | - srcset 1952 | - svgo 1953 | - terser 1954 | - uncss 1955 | 1956 | '@parcel/core@2.14.2(@swc/helpers@0.5.1)': 1957 | dependencies: 1958 | '@mischnic/json-sourcemap': 0.1.0 1959 | '@parcel/cache': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1960 | '@parcel/diagnostic': 2.14.2 1961 | '@parcel/events': 2.14.2 1962 | '@parcel/feature-flags': 2.14.2 1963 | '@parcel/fs': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1964 | '@parcel/graph': 3.4.2 1965 | '@parcel/logger': 2.14.2 1966 | '@parcel/package-manager': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(@swc/helpers@0.5.1) 1967 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1968 | '@parcel/profiler': 2.14.2 1969 | '@parcel/rust': 2.14.2 1970 | '@parcel/source-map': 2.1.1 1971 | '@parcel/types': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1972 | '@parcel/utils': 2.14.2 1973 | '@parcel/workers': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 1974 | base-x: 3.0.9 1975 | browserslist: 4.21.5 1976 | clone: 2.1.2 1977 | dotenv: 16.4.7 1978 | dotenv-expand: 11.0.7 1979 | json5: 2.2.3 1980 | msgpackr: 1.11.2 1981 | nullthrows: 1.1.1 1982 | semver: 7.7.1 1983 | transitivePeerDependencies: 1984 | - '@swc/helpers' 1985 | - napi-wasm 1986 | 1987 | '@parcel/diagnostic@2.14.2': 1988 | dependencies: 1989 | '@mischnic/json-sourcemap': 0.1.0 1990 | nullthrows: 1.1.1 1991 | 1992 | '@parcel/diagnostic@2.9.3': 1993 | dependencies: 1994 | '@mischnic/json-sourcemap': 0.1.0 1995 | nullthrows: 1.1.1 1996 | 1997 | '@parcel/error-overlay@2.14.2': {} 1998 | 1999 | '@parcel/events@2.14.2': {} 2000 | 2001 | '@parcel/events@2.9.3': {} 2002 | 2003 | '@parcel/feature-flags@2.14.2': {} 2004 | 2005 | '@parcel/fs-search@2.9.3': {} 2006 | 2007 | '@parcel/fs@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2008 | dependencies: 2009 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2010 | '@parcel/feature-flags': 2.14.2 2011 | '@parcel/rust': 2.14.2 2012 | '@parcel/types-internal': 2.14.2 2013 | '@parcel/utils': 2.14.2 2014 | '@parcel/watcher': 2.1.0 2015 | '@parcel/workers': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2016 | transitivePeerDependencies: 2017 | - napi-wasm 2018 | 2019 | '@parcel/fs@2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2020 | dependencies: 2021 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2022 | '@parcel/fs-search': 2.9.3 2023 | '@parcel/types': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2024 | '@parcel/utils': 2.9.3 2025 | '@parcel/watcher': 2.1.0 2026 | '@parcel/workers': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2027 | 2028 | '@parcel/graph@3.4.2': 2029 | dependencies: 2030 | '@parcel/feature-flags': 2.14.2 2031 | nullthrows: 1.1.1 2032 | 2033 | '@parcel/hash@2.9.3': 2034 | dependencies: 2035 | xxhash-wasm: 0.4.2 2036 | 2037 | '@parcel/logger@2.14.2': 2038 | dependencies: 2039 | '@parcel/diagnostic': 2.14.2 2040 | '@parcel/events': 2.14.2 2041 | 2042 | '@parcel/logger@2.9.3': 2043 | dependencies: 2044 | '@parcel/diagnostic': 2.9.3 2045 | '@parcel/events': 2.9.3 2046 | 2047 | '@parcel/markdown-ansi@2.14.2': 2048 | dependencies: 2049 | chalk: 4.1.2 2050 | 2051 | '@parcel/markdown-ansi@2.9.3': 2052 | dependencies: 2053 | chalk: 4.1.2 2054 | 2055 | '@parcel/namer-default@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2056 | dependencies: 2057 | '@parcel/diagnostic': 2.14.2 2058 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2059 | nullthrows: 1.1.1 2060 | transitivePeerDependencies: 2061 | - '@parcel/core' 2062 | - napi-wasm 2063 | 2064 | '@parcel/node-resolver-core@3.0.3(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2065 | dependencies: 2066 | '@mischnic/json-sourcemap': 0.1.0 2067 | '@parcel/diagnostic': 2.9.3 2068 | '@parcel/fs': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2069 | '@parcel/utils': 2.9.3 2070 | nullthrows: 1.1.1 2071 | semver: 7.7.1 2072 | transitivePeerDependencies: 2073 | - '@parcel/core' 2074 | 2075 | '@parcel/node-resolver-core@3.5.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2076 | dependencies: 2077 | '@mischnic/json-sourcemap': 0.1.0 2078 | '@parcel/diagnostic': 2.14.2 2079 | '@parcel/fs': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2080 | '@parcel/rust': 2.14.2 2081 | '@parcel/utils': 2.14.2 2082 | nullthrows: 1.1.1 2083 | semver: 7.7.1 2084 | transitivePeerDependencies: 2085 | - '@parcel/core' 2086 | - napi-wasm 2087 | 2088 | '@parcel/optimizer-css@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2089 | dependencies: 2090 | '@parcel/diagnostic': 2.14.2 2091 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2092 | '@parcel/source-map': 2.1.1 2093 | '@parcel/utils': 2.14.2 2094 | browserslist: 4.21.5 2095 | lightningcss: 1.29.3 2096 | nullthrows: 1.1.1 2097 | transitivePeerDependencies: 2098 | - '@parcel/core' 2099 | - napi-wasm 2100 | 2101 | '@parcel/optimizer-htmlnano@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(srcset@4.0.0)(svgo@2.8.0)': 2102 | dependencies: 2103 | '@parcel/diagnostic': 2.14.2 2104 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2105 | '@parcel/utils': 2.14.2 2106 | htmlnano: 2.0.3(srcset@4.0.0)(svgo@2.8.0) 2107 | nullthrows: 1.1.1 2108 | posthtml: 0.16.6 2109 | transitivePeerDependencies: 2110 | - '@parcel/core' 2111 | - cssnano 2112 | - napi-wasm 2113 | - postcss 2114 | - purgecss 2115 | - relateurl 2116 | - srcset 2117 | - svgo 2118 | - terser 2119 | - uncss 2120 | 2121 | '@parcel/optimizer-image@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2122 | dependencies: 2123 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2124 | '@parcel/diagnostic': 2.14.2 2125 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2126 | '@parcel/rust': 2.14.2 2127 | '@parcel/utils': 2.14.2 2128 | '@parcel/workers': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2129 | transitivePeerDependencies: 2130 | - napi-wasm 2131 | 2132 | '@parcel/optimizer-svgo@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2133 | dependencies: 2134 | '@parcel/diagnostic': 2.14.2 2135 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2136 | '@parcel/utils': 2.14.2 2137 | transitivePeerDependencies: 2138 | - '@parcel/core' 2139 | - napi-wasm 2140 | 2141 | '@parcel/optimizer-swc@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(@swc/helpers@0.5.1)': 2142 | dependencies: 2143 | '@parcel/diagnostic': 2.14.2 2144 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2145 | '@parcel/source-map': 2.1.1 2146 | '@parcel/utils': 2.14.2 2147 | '@swc/core': 1.11.13(@swc/helpers@0.5.1) 2148 | nullthrows: 1.1.1 2149 | transitivePeerDependencies: 2150 | - '@parcel/core' 2151 | - '@swc/helpers' 2152 | - napi-wasm 2153 | 2154 | '@parcel/package-manager@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(@swc/helpers@0.5.1)': 2155 | dependencies: 2156 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2157 | '@parcel/diagnostic': 2.14.2 2158 | '@parcel/fs': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2159 | '@parcel/logger': 2.14.2 2160 | '@parcel/node-resolver-core': 3.5.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2161 | '@parcel/types': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2162 | '@parcel/utils': 2.14.2 2163 | '@parcel/workers': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2164 | '@swc/core': 1.11.13(@swc/helpers@0.5.1) 2165 | semver: 7.7.1 2166 | transitivePeerDependencies: 2167 | - '@swc/helpers' 2168 | - napi-wasm 2169 | 2170 | '@parcel/package-manager@2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2171 | dependencies: 2172 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2173 | '@parcel/diagnostic': 2.9.3 2174 | '@parcel/fs': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2175 | '@parcel/logger': 2.9.3 2176 | '@parcel/node-resolver-core': 3.0.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2177 | '@parcel/types': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2178 | '@parcel/utils': 2.9.3 2179 | '@parcel/workers': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2180 | semver: 7.7.1 2181 | 2182 | '@parcel/packager-css@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2183 | dependencies: 2184 | '@parcel/diagnostic': 2.14.2 2185 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2186 | '@parcel/source-map': 2.1.1 2187 | '@parcel/utils': 2.14.2 2188 | lightningcss: 1.29.3 2189 | nullthrows: 1.1.1 2190 | transitivePeerDependencies: 2191 | - '@parcel/core' 2192 | - napi-wasm 2193 | 2194 | '@parcel/packager-html@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2195 | dependencies: 2196 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2197 | '@parcel/types': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2198 | '@parcel/utils': 2.14.2 2199 | nullthrows: 1.1.1 2200 | posthtml: 0.16.6 2201 | transitivePeerDependencies: 2202 | - '@parcel/core' 2203 | - napi-wasm 2204 | 2205 | '@parcel/packager-js@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2206 | dependencies: 2207 | '@parcel/diagnostic': 2.14.2 2208 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2209 | '@parcel/rust': 2.14.2 2210 | '@parcel/source-map': 2.1.1 2211 | '@parcel/types': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2212 | '@parcel/utils': 2.14.2 2213 | globals: 13.20.0 2214 | nullthrows: 1.1.1 2215 | transitivePeerDependencies: 2216 | - '@parcel/core' 2217 | - napi-wasm 2218 | 2219 | '@parcel/packager-raw@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2220 | dependencies: 2221 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2222 | transitivePeerDependencies: 2223 | - '@parcel/core' 2224 | - napi-wasm 2225 | 2226 | '@parcel/packager-svg@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2227 | dependencies: 2228 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2229 | '@parcel/types': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2230 | '@parcel/utils': 2.14.2 2231 | posthtml: 0.16.6 2232 | transitivePeerDependencies: 2233 | - '@parcel/core' 2234 | - napi-wasm 2235 | 2236 | '@parcel/packager-wasm@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2237 | dependencies: 2238 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2239 | transitivePeerDependencies: 2240 | - '@parcel/core' 2241 | - napi-wasm 2242 | 2243 | '@parcel/plugin@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2244 | dependencies: 2245 | '@parcel/types': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2246 | transitivePeerDependencies: 2247 | - '@parcel/core' 2248 | - napi-wasm 2249 | 2250 | '@parcel/plugin@2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2251 | dependencies: 2252 | '@parcel/types': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2253 | transitivePeerDependencies: 2254 | - '@parcel/core' 2255 | 2256 | '@parcel/profiler@2.14.2': 2257 | dependencies: 2258 | '@parcel/diagnostic': 2.14.2 2259 | '@parcel/events': 2.14.2 2260 | '@parcel/types-internal': 2.14.2 2261 | chrome-trace-event: 1.0.3 2262 | 2263 | '@parcel/profiler@2.9.3': 2264 | dependencies: 2265 | '@parcel/diagnostic': 2.9.3 2266 | '@parcel/events': 2.9.3 2267 | chrome-trace-event: 1.0.3 2268 | 2269 | '@parcel/reporter-cli@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2270 | dependencies: 2271 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2272 | '@parcel/types': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2273 | '@parcel/utils': 2.14.2 2274 | chalk: 4.1.2 2275 | term-size: 2.2.1 2276 | transitivePeerDependencies: 2277 | - '@parcel/core' 2278 | - napi-wasm 2279 | 2280 | '@parcel/reporter-dev-server@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2281 | dependencies: 2282 | '@parcel/codeframe': 2.14.2 2283 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2284 | '@parcel/source-map': 2.1.1 2285 | '@parcel/utils': 2.14.2 2286 | transitivePeerDependencies: 2287 | - '@parcel/core' 2288 | - napi-wasm 2289 | 2290 | '@parcel/reporter-tracer@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2291 | dependencies: 2292 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2293 | '@parcel/utils': 2.14.2 2294 | chrome-trace-event: 1.0.3 2295 | nullthrows: 1.1.1 2296 | transitivePeerDependencies: 2297 | - '@parcel/core' 2298 | - napi-wasm 2299 | 2300 | '@parcel/resolver-default@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2301 | dependencies: 2302 | '@parcel/node-resolver-core': 3.5.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2303 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2304 | transitivePeerDependencies: 2305 | - '@parcel/core' 2306 | - napi-wasm 2307 | 2308 | '@parcel/runtime-browser-hmr@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2309 | dependencies: 2310 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2311 | '@parcel/utils': 2.14.2 2312 | transitivePeerDependencies: 2313 | - '@parcel/core' 2314 | - napi-wasm 2315 | 2316 | '@parcel/runtime-js@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2317 | dependencies: 2318 | '@parcel/diagnostic': 2.14.2 2319 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2320 | '@parcel/utils': 2.14.2 2321 | nullthrows: 1.1.1 2322 | transitivePeerDependencies: 2323 | - '@parcel/core' 2324 | - napi-wasm 2325 | 2326 | '@parcel/runtime-rsc@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2327 | dependencies: 2328 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2329 | '@parcel/rust': 2.14.2 2330 | '@parcel/utils': 2.14.2 2331 | nullthrows: 1.1.1 2332 | transitivePeerDependencies: 2333 | - '@parcel/core' 2334 | - napi-wasm 2335 | 2336 | '@parcel/runtime-service-worker@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2337 | dependencies: 2338 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2339 | '@parcel/utils': 2.14.2 2340 | nullthrows: 1.1.1 2341 | transitivePeerDependencies: 2342 | - '@parcel/core' 2343 | - napi-wasm 2344 | 2345 | '@parcel/rust@2.14.2': {} 2346 | 2347 | '@parcel/source-map@2.1.1': 2348 | dependencies: 2349 | detect-libc: 1.0.3 2350 | 2351 | '@parcel/transformer-babel@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2352 | dependencies: 2353 | '@parcel/diagnostic': 2.14.2 2354 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2355 | '@parcel/source-map': 2.1.1 2356 | '@parcel/utils': 2.14.2 2357 | browserslist: 4.21.5 2358 | json5: 2.2.3 2359 | nullthrows: 1.1.1 2360 | semver: 7.7.1 2361 | transitivePeerDependencies: 2362 | - '@parcel/core' 2363 | - napi-wasm 2364 | 2365 | '@parcel/transformer-css@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2366 | dependencies: 2367 | '@parcel/diagnostic': 2.14.2 2368 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2369 | '@parcel/source-map': 2.1.1 2370 | '@parcel/utils': 2.14.2 2371 | browserslist: 4.21.5 2372 | lightningcss: 1.29.3 2373 | nullthrows: 1.1.1 2374 | transitivePeerDependencies: 2375 | - '@parcel/core' 2376 | - napi-wasm 2377 | 2378 | '@parcel/transformer-html@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2379 | dependencies: 2380 | '@parcel/diagnostic': 2.14.2 2381 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2382 | '@parcel/rust': 2.14.2 2383 | nullthrows: 1.1.1 2384 | posthtml: 0.16.6 2385 | posthtml-parser: 0.12.1 2386 | posthtml-render: 3.0.0 2387 | semver: 7.7.1 2388 | srcset: 4.0.0 2389 | transitivePeerDependencies: 2390 | - '@parcel/core' 2391 | - napi-wasm 2392 | 2393 | '@parcel/transformer-image@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2394 | dependencies: 2395 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2396 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2397 | '@parcel/utils': 2.14.2 2398 | '@parcel/workers': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2399 | nullthrows: 1.1.1 2400 | transitivePeerDependencies: 2401 | - napi-wasm 2402 | 2403 | '@parcel/transformer-js@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2404 | dependencies: 2405 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2406 | '@parcel/diagnostic': 2.14.2 2407 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2408 | '@parcel/rust': 2.14.2 2409 | '@parcel/source-map': 2.1.1 2410 | '@parcel/utils': 2.14.2 2411 | '@parcel/workers': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2412 | '@swc/helpers': 0.5.1 2413 | browserslist: 4.21.5 2414 | nullthrows: 1.1.1 2415 | regenerator-runtime: 0.14.1 2416 | semver: 7.7.1 2417 | transitivePeerDependencies: 2418 | - napi-wasm 2419 | 2420 | '@parcel/transformer-json@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2421 | dependencies: 2422 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2423 | json5: 2.2.3 2424 | transitivePeerDependencies: 2425 | - '@parcel/core' 2426 | - napi-wasm 2427 | 2428 | '@parcel/transformer-node@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2429 | dependencies: 2430 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2431 | transitivePeerDependencies: 2432 | - '@parcel/core' 2433 | - napi-wasm 2434 | 2435 | '@parcel/transformer-postcss@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2436 | dependencies: 2437 | '@parcel/diagnostic': 2.14.2 2438 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2439 | '@parcel/rust': 2.14.2 2440 | '@parcel/utils': 2.14.2 2441 | clone: 2.1.2 2442 | nullthrows: 1.1.1 2443 | postcss-value-parser: 4.2.0 2444 | semver: 7.7.1 2445 | transitivePeerDependencies: 2446 | - '@parcel/core' 2447 | - napi-wasm 2448 | 2449 | '@parcel/transformer-posthtml@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2450 | dependencies: 2451 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2452 | '@parcel/utils': 2.14.2 2453 | nullthrows: 1.1.1 2454 | posthtml: 0.16.6 2455 | posthtml-parser: 0.12.1 2456 | posthtml-render: 3.0.0 2457 | semver: 7.7.1 2458 | transitivePeerDependencies: 2459 | - '@parcel/core' 2460 | - napi-wasm 2461 | 2462 | '@parcel/transformer-raw@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2463 | dependencies: 2464 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2465 | transitivePeerDependencies: 2466 | - '@parcel/core' 2467 | - napi-wasm 2468 | 2469 | '@parcel/transformer-react-refresh-wrap@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2470 | dependencies: 2471 | '@parcel/error-overlay': 2.14.2 2472 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2473 | '@parcel/utils': 2.14.2 2474 | react-refresh: 0.9.0 2475 | transitivePeerDependencies: 2476 | - '@parcel/core' 2477 | - napi-wasm 2478 | 2479 | '@parcel/transformer-svg@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2480 | dependencies: 2481 | '@parcel/diagnostic': 2.14.2 2482 | '@parcel/plugin': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2483 | '@parcel/rust': 2.14.2 2484 | nullthrows: 1.1.1 2485 | posthtml: 0.16.6 2486 | posthtml-parser: 0.12.1 2487 | posthtml-render: 3.0.0 2488 | semver: 7.7.1 2489 | transitivePeerDependencies: 2490 | - '@parcel/core' 2491 | - napi-wasm 2492 | 2493 | '@parcel/types-internal@2.14.2': 2494 | dependencies: 2495 | '@parcel/diagnostic': 2.14.2 2496 | '@parcel/feature-flags': 2.14.2 2497 | '@parcel/source-map': 2.1.1 2498 | utility-types: 3.10.0 2499 | 2500 | '@parcel/types@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2501 | dependencies: 2502 | '@parcel/types-internal': 2.14.2 2503 | '@parcel/workers': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2504 | transitivePeerDependencies: 2505 | - '@parcel/core' 2506 | - napi-wasm 2507 | 2508 | '@parcel/types@2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2509 | dependencies: 2510 | '@parcel/cache': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2511 | '@parcel/diagnostic': 2.9.3 2512 | '@parcel/fs': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2513 | '@parcel/package-manager': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2514 | '@parcel/source-map': 2.1.1 2515 | '@parcel/workers': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2516 | utility-types: 3.10.0 2517 | transitivePeerDependencies: 2518 | - '@parcel/core' 2519 | 2520 | '@parcel/utils@2.14.2': 2521 | dependencies: 2522 | '@parcel/codeframe': 2.14.2 2523 | '@parcel/diagnostic': 2.14.2 2524 | '@parcel/logger': 2.14.2 2525 | '@parcel/markdown-ansi': 2.14.2 2526 | '@parcel/rust': 2.14.2 2527 | '@parcel/source-map': 2.1.1 2528 | chalk: 4.1.2 2529 | nullthrows: 1.1.1 2530 | transitivePeerDependencies: 2531 | - napi-wasm 2532 | 2533 | '@parcel/utils@2.9.3': 2534 | dependencies: 2535 | '@parcel/codeframe': 2.9.3 2536 | '@parcel/diagnostic': 2.9.3 2537 | '@parcel/hash': 2.9.3 2538 | '@parcel/logger': 2.9.3 2539 | '@parcel/markdown-ansi': 2.9.3 2540 | '@parcel/source-map': 2.1.1 2541 | chalk: 4.1.2 2542 | nullthrows: 1.1.1 2543 | 2544 | '@parcel/watcher@2.1.0': 2545 | dependencies: 2546 | is-glob: 4.0.3 2547 | micromatch: 4.0.5 2548 | node-addon-api: 3.2.1 2549 | node-gyp-build: 4.6.0 2550 | 2551 | '@parcel/workers@2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2552 | dependencies: 2553 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2554 | '@parcel/diagnostic': 2.14.2 2555 | '@parcel/logger': 2.14.2 2556 | '@parcel/profiler': 2.14.2 2557 | '@parcel/types-internal': 2.14.2 2558 | '@parcel/utils': 2.14.2 2559 | nullthrows: 1.1.1 2560 | transitivePeerDependencies: 2561 | - napi-wasm 2562 | 2563 | '@parcel/workers@2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1))': 2564 | dependencies: 2565 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 2566 | '@parcel/diagnostic': 2.9.3 2567 | '@parcel/logger': 2.9.3 2568 | '@parcel/profiler': 2.9.3 2569 | '@parcel/types': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 2570 | '@parcel/utils': 2.9.3 2571 | nullthrows: 1.1.1 2572 | 2573 | '@swc/core-darwin-arm64@1.11.13': 2574 | optional: true 2575 | 2576 | '@swc/core-darwin-x64@1.11.13': 2577 | optional: true 2578 | 2579 | '@swc/core-linux-arm-gnueabihf@1.11.13': 2580 | optional: true 2581 | 2582 | '@swc/core-linux-arm64-gnu@1.11.13': 2583 | optional: true 2584 | 2585 | '@swc/core-linux-arm64-musl@1.11.13': 2586 | optional: true 2587 | 2588 | '@swc/core-linux-x64-gnu@1.11.13': 2589 | optional: true 2590 | 2591 | '@swc/core-linux-x64-musl@1.11.13': 2592 | optional: true 2593 | 2594 | '@swc/core-win32-arm64-msvc@1.11.13': 2595 | optional: true 2596 | 2597 | '@swc/core-win32-ia32-msvc@1.11.13': 2598 | optional: true 2599 | 2600 | '@swc/core-win32-x64-msvc@1.11.13': 2601 | optional: true 2602 | 2603 | '@swc/core@1.11.13(@swc/helpers@0.5.1)': 2604 | dependencies: 2605 | '@swc/counter': 0.1.3 2606 | '@swc/types': 0.1.20 2607 | optionalDependencies: 2608 | '@swc/core-darwin-arm64': 1.11.13 2609 | '@swc/core-darwin-x64': 1.11.13 2610 | '@swc/core-linux-arm-gnueabihf': 1.11.13 2611 | '@swc/core-linux-arm64-gnu': 1.11.13 2612 | '@swc/core-linux-arm64-musl': 1.11.13 2613 | '@swc/core-linux-x64-gnu': 1.11.13 2614 | '@swc/core-linux-x64-musl': 1.11.13 2615 | '@swc/core-win32-arm64-msvc': 1.11.13 2616 | '@swc/core-win32-ia32-msvc': 1.11.13 2617 | '@swc/core-win32-x64-msvc': 1.11.13 2618 | '@swc/helpers': 0.5.1 2619 | 2620 | '@swc/counter@0.1.3': {} 2621 | 2622 | '@swc/helpers@0.5.1': 2623 | dependencies: 2624 | tslib: 2.5.0 2625 | 2626 | '@swc/types@0.1.20': 2627 | dependencies: 2628 | '@swc/counter': 0.1.3 2629 | 2630 | '@trysound/sax@0.2.0': {} 2631 | 2632 | '@types/codemirror@5.60.9': 2633 | dependencies: 2634 | '@types/tern': 0.23.4 2635 | 2636 | '@types/estree@1.0.1': {} 2637 | 2638 | '@types/json-schema@7.0.12': {} 2639 | 2640 | '@types/parse-json@4.0.0': {} 2641 | 2642 | '@types/semver@7.5.0': {} 2643 | 2644 | '@types/tern@0.23.4': 2645 | dependencies: 2646 | '@types/estree': 1.0.1 2647 | 2648 | '@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.2.2))(eslint@8.46.0)(typescript@5.2.2)': 2649 | dependencies: 2650 | '@eslint-community/regexpp': 4.6.2 2651 | '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.2.2) 2652 | '@typescript-eslint/scope-manager': 6.2.0 2653 | '@typescript-eslint/type-utils': 6.2.0(eslint@8.46.0)(typescript@5.2.2) 2654 | '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.2.2) 2655 | '@typescript-eslint/visitor-keys': 6.2.0 2656 | debug: 4.3.4 2657 | eslint: 8.46.0 2658 | graphemer: 1.4.0 2659 | ignore: 5.2.4 2660 | natural-compare: 1.4.0 2661 | natural-compare-lite: 1.4.0 2662 | semver: 7.5.4 2663 | ts-api-utils: 1.0.1(typescript@5.2.2) 2664 | optionalDependencies: 2665 | typescript: 5.2.2 2666 | transitivePeerDependencies: 2667 | - supports-color 2668 | 2669 | '@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.2.2)': 2670 | dependencies: 2671 | '@typescript-eslint/scope-manager': 6.2.0 2672 | '@typescript-eslint/types': 6.2.0 2673 | '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.2.2) 2674 | '@typescript-eslint/visitor-keys': 6.2.0 2675 | debug: 4.3.4 2676 | eslint: 8.46.0 2677 | optionalDependencies: 2678 | typescript: 5.2.2 2679 | transitivePeerDependencies: 2680 | - supports-color 2681 | 2682 | '@typescript-eslint/scope-manager@6.2.0': 2683 | dependencies: 2684 | '@typescript-eslint/types': 6.2.0 2685 | '@typescript-eslint/visitor-keys': 6.2.0 2686 | 2687 | '@typescript-eslint/type-utils@6.2.0(eslint@8.46.0)(typescript@5.2.2)': 2688 | dependencies: 2689 | '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.2.2) 2690 | '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.2.2) 2691 | debug: 4.3.4 2692 | eslint: 8.46.0 2693 | ts-api-utils: 1.0.1(typescript@5.2.2) 2694 | optionalDependencies: 2695 | typescript: 5.2.2 2696 | transitivePeerDependencies: 2697 | - supports-color 2698 | 2699 | '@typescript-eslint/types@6.2.0': {} 2700 | 2701 | '@typescript-eslint/typescript-estree@6.2.0(typescript@5.2.2)': 2702 | dependencies: 2703 | '@typescript-eslint/types': 6.2.0 2704 | '@typescript-eslint/visitor-keys': 6.2.0 2705 | debug: 4.3.4 2706 | globby: 11.1.0 2707 | is-glob: 4.0.3 2708 | semver: 7.7.1 2709 | ts-api-utils: 1.0.1(typescript@5.2.2) 2710 | optionalDependencies: 2711 | typescript: 5.2.2 2712 | transitivePeerDependencies: 2713 | - supports-color 2714 | 2715 | '@typescript-eslint/utils@6.2.0(eslint@8.46.0)(typescript@5.2.2)': 2716 | dependencies: 2717 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) 2718 | '@types/json-schema': 7.0.12 2719 | '@types/semver': 7.5.0 2720 | '@typescript-eslint/scope-manager': 6.2.0 2721 | '@typescript-eslint/types': 6.2.0 2722 | '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.2.2) 2723 | eslint: 8.46.0 2724 | semver: 7.7.1 2725 | transitivePeerDependencies: 2726 | - supports-color 2727 | - typescript 2728 | 2729 | '@typescript-eslint/visitor-keys@6.2.0': 2730 | dependencies: 2731 | '@typescript-eslint/types': 6.2.0 2732 | eslint-visitor-keys: 3.4.2 2733 | 2734 | acorn-jsx@5.3.2(acorn@8.10.0): 2735 | dependencies: 2736 | acorn: 8.10.0 2737 | 2738 | acorn@8.10.0: {} 2739 | 2740 | ajv@6.12.6: 2741 | dependencies: 2742 | fast-deep-equal: 3.1.3 2743 | fast-json-stable-stringify: 2.1.0 2744 | json-schema-traverse: 0.4.1 2745 | uri-js: 4.4.1 2746 | 2747 | ansi-regex@5.0.1: {} 2748 | 2749 | ansi-styles@3.2.1: 2750 | dependencies: 2751 | color-convert: 1.9.3 2752 | 2753 | ansi-styles@4.3.0: 2754 | dependencies: 2755 | color-convert: 2.0.1 2756 | 2757 | argparse@2.0.1: {} 2758 | 2759 | array-union@2.1.0: {} 2760 | 2761 | balanced-match@1.0.2: {} 2762 | 2763 | base-x@3.0.9: 2764 | dependencies: 2765 | safe-buffer: 5.2.1 2766 | 2767 | boolbase@1.0.0: {} 2768 | 2769 | brace-expansion@1.1.11: 2770 | dependencies: 2771 | balanced-match: 1.0.2 2772 | concat-map: 0.0.1 2773 | 2774 | braces@3.0.3: 2775 | dependencies: 2776 | fill-range: 7.1.1 2777 | 2778 | browserslist@4.21.5: 2779 | dependencies: 2780 | caniuse-lite: 1.0.30001517 2781 | electron-to-chromium: 1.4.288 2782 | node-releases: 2.0.10 2783 | update-browserslist-db: 1.0.10(browserslist@4.21.5) 2784 | 2785 | callsites@3.1.0: {} 2786 | 2787 | caniuse-lite@1.0.30001517: {} 2788 | 2789 | chalk@2.4.2: 2790 | dependencies: 2791 | ansi-styles: 3.2.1 2792 | escape-string-regexp: 1.0.5 2793 | supports-color: 5.5.0 2794 | 2795 | chalk@4.1.2: 2796 | dependencies: 2797 | ansi-styles: 4.3.0 2798 | supports-color: 7.2.0 2799 | 2800 | chrome-trace-event@1.0.3: {} 2801 | 2802 | clone@2.1.2: {} 2803 | 2804 | codemirror@5.65.15: {} 2805 | 2806 | color-convert@1.9.3: 2807 | dependencies: 2808 | color-name: 1.1.3 2809 | 2810 | color-convert@2.0.1: 2811 | dependencies: 2812 | color-name: 1.1.4 2813 | 2814 | color-name@1.1.3: {} 2815 | 2816 | color-name@1.1.4: {} 2817 | 2818 | color-string@1.9.1: 2819 | dependencies: 2820 | color-name: 1.1.4 2821 | simple-swizzle: 0.2.2 2822 | 2823 | color@4.2.3: 2824 | dependencies: 2825 | color-convert: 2.0.1 2826 | color-string: 1.9.1 2827 | 2828 | commander@12.1.0: {} 2829 | 2830 | commander@7.2.0: {} 2831 | 2832 | concat-map@0.0.1: {} 2833 | 2834 | cosmiconfig@7.1.0: 2835 | dependencies: 2836 | '@types/parse-json': 4.0.0 2837 | import-fresh: 3.3.0 2838 | parse-json: 5.2.0 2839 | path-type: 4.0.0 2840 | yaml: 1.10.2 2841 | 2842 | cross-spawn@7.0.3: 2843 | dependencies: 2844 | path-key: 3.1.1 2845 | shebang-command: 2.0.0 2846 | which: 2.0.2 2847 | 2848 | css-select@4.3.0: 2849 | dependencies: 2850 | boolbase: 1.0.0 2851 | css-what: 6.1.0 2852 | domhandler: 4.3.1 2853 | domutils: 2.8.0 2854 | nth-check: 2.1.1 2855 | 2856 | css-tree@1.1.3: 2857 | dependencies: 2858 | mdn-data: 2.0.14 2859 | source-map: 0.6.1 2860 | 2861 | css-what@6.1.0: {} 2862 | 2863 | csso@4.2.0: 2864 | dependencies: 2865 | css-tree: 1.1.3 2866 | 2867 | debug@4.3.4: 2868 | dependencies: 2869 | ms: 2.1.2 2870 | 2871 | deep-is@0.1.4: {} 2872 | 2873 | detect-libc@1.0.3: {} 2874 | 2875 | detect-libc@2.0.3: {} 2876 | 2877 | dir-glob@3.0.1: 2878 | dependencies: 2879 | path-type: 4.0.0 2880 | 2881 | doctrine@3.0.0: 2882 | dependencies: 2883 | esutils: 2.0.3 2884 | 2885 | dom-serializer@1.4.1: 2886 | dependencies: 2887 | domelementtype: 2.3.0 2888 | domhandler: 4.3.1 2889 | entities: 2.2.0 2890 | 2891 | dom-serializer@2.0.0: 2892 | dependencies: 2893 | domelementtype: 2.3.0 2894 | domhandler: 5.0.3 2895 | entities: 4.5.0 2896 | 2897 | domelementtype@2.3.0: {} 2898 | 2899 | domhandler@4.3.1: 2900 | dependencies: 2901 | domelementtype: 2.3.0 2902 | 2903 | domhandler@5.0.3: 2904 | dependencies: 2905 | domelementtype: 2.3.0 2906 | 2907 | domutils@2.8.0: 2908 | dependencies: 2909 | dom-serializer: 1.4.1 2910 | domelementtype: 2.3.0 2911 | domhandler: 4.3.1 2912 | 2913 | domutils@3.2.2: 2914 | dependencies: 2915 | dom-serializer: 2.0.0 2916 | domelementtype: 2.3.0 2917 | domhandler: 5.0.3 2918 | 2919 | dotenv-expand@11.0.7: 2920 | dependencies: 2921 | dotenv: 16.4.7 2922 | 2923 | dotenv@16.4.7: {} 2924 | 2925 | electron-to-chromium@1.4.288: {} 2926 | 2927 | entities@2.2.0: {} 2928 | 2929 | entities@3.0.1: {} 2930 | 2931 | entities@4.5.0: {} 2932 | 2933 | error-ex@1.3.2: 2934 | dependencies: 2935 | is-arrayish: 0.2.1 2936 | 2937 | escalade@3.1.1: {} 2938 | 2939 | escape-string-regexp@1.0.5: {} 2940 | 2941 | escape-string-regexp@4.0.0: {} 2942 | 2943 | eslint-scope@7.2.2: 2944 | dependencies: 2945 | esrecurse: 4.3.0 2946 | estraverse: 5.3.0 2947 | 2948 | eslint-visitor-keys@3.4.2: {} 2949 | 2950 | eslint@8.46.0: 2951 | dependencies: 2952 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) 2953 | '@eslint-community/regexpp': 4.6.2 2954 | '@eslint/eslintrc': 2.1.1 2955 | '@eslint/js': 8.46.0 2956 | '@humanwhocodes/config-array': 0.11.10 2957 | '@humanwhocodes/module-importer': 1.0.1 2958 | '@nodelib/fs.walk': 1.2.8 2959 | ajv: 6.12.6 2960 | chalk: 4.1.2 2961 | cross-spawn: 7.0.3 2962 | debug: 4.3.4 2963 | doctrine: 3.0.0 2964 | escape-string-regexp: 4.0.0 2965 | eslint-scope: 7.2.2 2966 | eslint-visitor-keys: 3.4.2 2967 | espree: 9.6.1 2968 | esquery: 1.5.0 2969 | esutils: 2.0.3 2970 | fast-deep-equal: 3.1.3 2971 | file-entry-cache: 6.0.1 2972 | find-up: 5.0.0 2973 | glob-parent: 6.0.2 2974 | globals: 13.20.0 2975 | graphemer: 1.4.0 2976 | ignore: 5.2.4 2977 | imurmurhash: 0.1.4 2978 | is-glob: 4.0.3 2979 | is-path-inside: 3.0.3 2980 | js-yaml: 4.1.0 2981 | json-stable-stringify-without-jsonify: 1.0.1 2982 | levn: 0.4.1 2983 | lodash.merge: 4.6.2 2984 | minimatch: 3.1.2 2985 | natural-compare: 1.4.0 2986 | optionator: 0.9.3 2987 | strip-ansi: 6.0.1 2988 | text-table: 0.2.0 2989 | transitivePeerDependencies: 2990 | - supports-color 2991 | 2992 | espree@9.6.1: 2993 | dependencies: 2994 | acorn: 8.10.0 2995 | acorn-jsx: 5.3.2(acorn@8.10.0) 2996 | eslint-visitor-keys: 3.4.2 2997 | 2998 | esquery@1.5.0: 2999 | dependencies: 3000 | estraverse: 5.3.0 3001 | 3002 | esrecurse@4.3.0: 3003 | dependencies: 3004 | estraverse: 5.3.0 3005 | 3006 | estraverse@5.3.0: {} 3007 | 3008 | esutils@2.0.3: {} 3009 | 3010 | fast-deep-equal@3.1.3: {} 3011 | 3012 | fast-glob@3.3.1: 3013 | dependencies: 3014 | '@nodelib/fs.stat': 2.0.5 3015 | '@nodelib/fs.walk': 1.2.8 3016 | glob-parent: 5.1.2 3017 | merge2: 1.4.1 3018 | micromatch: 4.0.5 3019 | 3020 | fast-json-stable-stringify@2.1.0: {} 3021 | 3022 | fast-levenshtein@2.0.6: {} 3023 | 3024 | fastq@1.15.0: 3025 | dependencies: 3026 | reusify: 1.0.4 3027 | 3028 | file-entry-cache@6.0.1: 3029 | dependencies: 3030 | flat-cache: 3.0.4 3031 | 3032 | fill-range@7.1.1: 3033 | dependencies: 3034 | to-regex-range: 5.0.1 3035 | 3036 | find-up@5.0.0: 3037 | dependencies: 3038 | locate-path: 6.0.0 3039 | path-exists: 4.0.0 3040 | 3041 | flat-cache@3.0.4: 3042 | dependencies: 3043 | flatted: 3.2.7 3044 | rimraf: 3.0.2 3045 | 3046 | flatted@3.2.7: {} 3047 | 3048 | fs.realpath@1.0.0: {} 3049 | 3050 | get-port@4.2.0: {} 3051 | 3052 | glob-parent@5.1.2: 3053 | dependencies: 3054 | is-glob: 4.0.3 3055 | 3056 | glob-parent@6.0.2: 3057 | dependencies: 3058 | is-glob: 4.0.3 3059 | 3060 | glob@7.2.3: 3061 | dependencies: 3062 | fs.realpath: 1.0.0 3063 | inflight: 1.0.6 3064 | inherits: 2.0.4 3065 | minimatch: 3.1.2 3066 | once: 1.4.0 3067 | path-is-absolute: 1.0.1 3068 | 3069 | globals@13.20.0: 3070 | dependencies: 3071 | type-fest: 0.20.2 3072 | 3073 | globby@11.1.0: 3074 | dependencies: 3075 | array-union: 2.1.0 3076 | dir-glob: 3.0.1 3077 | fast-glob: 3.3.1 3078 | ignore: 5.2.4 3079 | merge2: 1.4.1 3080 | slash: 3.0.0 3081 | 3082 | graphemer@1.4.0: {} 3083 | 3084 | has-flag@3.0.0: {} 3085 | 3086 | has-flag@4.0.0: {} 3087 | 3088 | htmlnano@2.0.3(srcset@4.0.0)(svgo@2.8.0): 3089 | dependencies: 3090 | cosmiconfig: 7.1.0 3091 | posthtml: 0.16.6 3092 | timsort: 0.3.0 3093 | optionalDependencies: 3094 | srcset: 4.0.0 3095 | svgo: 2.8.0 3096 | 3097 | htmlparser2@7.2.0: 3098 | dependencies: 3099 | domelementtype: 2.3.0 3100 | domhandler: 4.3.1 3101 | domutils: 2.8.0 3102 | entities: 3.0.1 3103 | 3104 | htmlparser2@9.1.0: 3105 | dependencies: 3106 | domelementtype: 2.3.0 3107 | domhandler: 5.0.3 3108 | domutils: 3.2.2 3109 | entities: 4.5.0 3110 | 3111 | ignore@5.2.4: {} 3112 | 3113 | import-fresh@3.3.0: 3114 | dependencies: 3115 | parent-module: 1.0.1 3116 | resolve-from: 4.0.0 3117 | 3118 | imurmurhash@0.1.4: {} 3119 | 3120 | inflight@1.0.6: 3121 | dependencies: 3122 | once: 1.4.0 3123 | wrappy: 1.0.2 3124 | 3125 | inherits@2.0.4: {} 3126 | 3127 | is-arrayish@0.2.1: {} 3128 | 3129 | is-arrayish@0.3.2: {} 3130 | 3131 | is-extglob@2.1.1: {} 3132 | 3133 | is-glob@4.0.3: 3134 | dependencies: 3135 | is-extglob: 2.1.1 3136 | 3137 | is-json@2.0.1: {} 3138 | 3139 | is-number@7.0.0: {} 3140 | 3141 | is-path-inside@3.0.3: {} 3142 | 3143 | isexe@2.0.0: {} 3144 | 3145 | js-tokens@4.0.0: {} 3146 | 3147 | js-yaml@4.1.0: 3148 | dependencies: 3149 | argparse: 2.0.1 3150 | 3151 | json-parse-even-better-errors@2.3.1: {} 3152 | 3153 | json-schema-traverse@0.4.1: {} 3154 | 3155 | json-stable-stringify-without-jsonify@1.0.1: {} 3156 | 3157 | json5@2.2.3: {} 3158 | 3159 | levn@0.4.1: 3160 | dependencies: 3161 | prelude-ls: 1.2.1 3162 | type-check: 0.4.0 3163 | 3164 | lightningcss-darwin-arm64@1.29.3: 3165 | optional: true 3166 | 3167 | lightningcss-darwin-x64@1.29.3: 3168 | optional: true 3169 | 3170 | lightningcss-freebsd-x64@1.29.3: 3171 | optional: true 3172 | 3173 | lightningcss-linux-arm-gnueabihf@1.29.3: 3174 | optional: true 3175 | 3176 | lightningcss-linux-arm64-gnu@1.29.3: 3177 | optional: true 3178 | 3179 | lightningcss-linux-arm64-musl@1.29.3: 3180 | optional: true 3181 | 3182 | lightningcss-linux-x64-gnu@1.29.3: 3183 | optional: true 3184 | 3185 | lightningcss-linux-x64-musl@1.29.3: 3186 | optional: true 3187 | 3188 | lightningcss-win32-arm64-msvc@1.29.3: 3189 | optional: true 3190 | 3191 | lightningcss-win32-x64-msvc@1.29.3: 3192 | optional: true 3193 | 3194 | lightningcss@1.29.3: 3195 | dependencies: 3196 | detect-libc: 2.0.3 3197 | optionalDependencies: 3198 | lightningcss-darwin-arm64: 1.29.3 3199 | lightningcss-darwin-x64: 1.29.3 3200 | lightningcss-freebsd-x64: 1.29.3 3201 | lightningcss-linux-arm-gnueabihf: 1.29.3 3202 | lightningcss-linux-arm64-gnu: 1.29.3 3203 | lightningcss-linux-arm64-musl: 1.29.3 3204 | lightningcss-linux-x64-gnu: 1.29.3 3205 | lightningcss-linux-x64-musl: 1.29.3 3206 | lightningcss-win32-arm64-msvc: 1.29.3 3207 | lightningcss-win32-x64-msvc: 1.29.3 3208 | 3209 | lines-and-columns@1.2.4: {} 3210 | 3211 | lmdb@2.7.11: 3212 | dependencies: 3213 | msgpackr: 1.8.5 3214 | node-addon-api: 4.3.0 3215 | node-gyp-build-optional-packages: 5.0.6 3216 | ordered-binary: 1.4.0 3217 | weak-lru-cache: 1.2.2 3218 | optionalDependencies: 3219 | '@lmdb/lmdb-darwin-arm64': 2.7.11 3220 | '@lmdb/lmdb-darwin-x64': 2.7.11 3221 | '@lmdb/lmdb-linux-arm': 2.7.11 3222 | '@lmdb/lmdb-linux-arm64': 2.7.11 3223 | '@lmdb/lmdb-linux-x64': 2.7.11 3224 | '@lmdb/lmdb-win32-x64': 2.7.11 3225 | 3226 | lmdb@2.8.5: 3227 | dependencies: 3228 | msgpackr: 1.11.2 3229 | node-addon-api: 6.1.0 3230 | node-gyp-build-optional-packages: 5.1.1 3231 | ordered-binary: 1.5.3 3232 | weak-lru-cache: 1.2.2 3233 | optionalDependencies: 3234 | '@lmdb/lmdb-darwin-arm64': 2.8.5 3235 | '@lmdb/lmdb-darwin-x64': 2.8.5 3236 | '@lmdb/lmdb-linux-arm': 2.8.5 3237 | '@lmdb/lmdb-linux-arm64': 2.8.5 3238 | '@lmdb/lmdb-linux-x64': 2.8.5 3239 | '@lmdb/lmdb-win32-x64': 2.8.5 3240 | 3241 | locate-path@6.0.0: 3242 | dependencies: 3243 | p-locate: 5.0.0 3244 | 3245 | lodash.merge@4.6.2: {} 3246 | 3247 | lru-cache@6.0.0: 3248 | dependencies: 3249 | yallist: 4.0.0 3250 | 3251 | lz-string@1.5.0: {} 3252 | 3253 | mdn-data@2.0.14: {} 3254 | 3255 | merge2@1.4.1: {} 3256 | 3257 | micromatch@4.0.5: 3258 | dependencies: 3259 | braces: 3.0.3 3260 | picomatch: 2.3.1 3261 | 3262 | minimatch@3.1.2: 3263 | dependencies: 3264 | brace-expansion: 1.1.11 3265 | 3266 | ms@2.1.2: {} 3267 | 3268 | msgpackr-extract@3.0.2: 3269 | dependencies: 3270 | node-gyp-build-optional-packages: 5.0.7 3271 | optionalDependencies: 3272 | '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2 3273 | '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2 3274 | '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2 3275 | '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2 3276 | '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2 3277 | '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2 3278 | optional: true 3279 | 3280 | msgpackr@1.11.2: 3281 | optionalDependencies: 3282 | msgpackr-extract: 3.0.2 3283 | 3284 | msgpackr@1.8.5: 3285 | optionalDependencies: 3286 | msgpackr-extract: 3.0.2 3287 | 3288 | natural-compare-lite@1.4.0: {} 3289 | 3290 | natural-compare@1.4.0: {} 3291 | 3292 | node-addon-api@3.2.1: {} 3293 | 3294 | node-addon-api@4.3.0: {} 3295 | 3296 | node-addon-api@6.1.0: {} 3297 | 3298 | node-gyp-build-optional-packages@5.0.6: {} 3299 | 3300 | node-gyp-build-optional-packages@5.0.7: 3301 | optional: true 3302 | 3303 | node-gyp-build-optional-packages@5.1.1: 3304 | dependencies: 3305 | detect-libc: 2.0.3 3306 | 3307 | node-gyp-build@4.6.0: {} 3308 | 3309 | node-releases@2.0.10: {} 3310 | 3311 | nth-check@2.1.1: 3312 | dependencies: 3313 | boolbase: 1.0.0 3314 | 3315 | nullthrows@1.1.1: {} 3316 | 3317 | once@1.4.0: 3318 | dependencies: 3319 | wrappy: 1.0.2 3320 | 3321 | optionator@0.9.3: 3322 | dependencies: 3323 | '@aashutoshrathi/word-wrap': 1.2.6 3324 | deep-is: 0.1.4 3325 | fast-levenshtein: 2.0.6 3326 | levn: 0.4.1 3327 | prelude-ls: 1.2.1 3328 | type-check: 0.4.0 3329 | 3330 | ordered-binary@1.4.0: {} 3331 | 3332 | ordered-binary@1.5.3: {} 3333 | 3334 | p-limit@3.1.0: 3335 | dependencies: 3336 | yocto-queue: 0.1.0 3337 | 3338 | p-locate@5.0.0: 3339 | dependencies: 3340 | p-limit: 3.1.0 3341 | 3342 | parcel-reporter-static-files-copy@1.5.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)): 3343 | dependencies: 3344 | '@parcel/plugin': 2.9.3(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 3345 | transitivePeerDependencies: 3346 | - '@parcel/core' 3347 | 3348 | parcel@2.14.2(@swc/helpers@0.5.1)(srcset@4.0.0)(svgo@2.8.0): 3349 | dependencies: 3350 | '@parcel/config-default': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(@swc/helpers@0.5.1)(srcset@4.0.0)(svgo@2.8.0) 3351 | '@parcel/core': 2.14.2(@swc/helpers@0.5.1) 3352 | '@parcel/diagnostic': 2.14.2 3353 | '@parcel/events': 2.14.2 3354 | '@parcel/feature-flags': 2.14.2 3355 | '@parcel/fs': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 3356 | '@parcel/logger': 2.14.2 3357 | '@parcel/package-manager': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1))(@swc/helpers@0.5.1) 3358 | '@parcel/reporter-cli': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 3359 | '@parcel/reporter-dev-server': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 3360 | '@parcel/reporter-tracer': 2.14.2(@parcel/core@2.14.2(@swc/helpers@0.5.1)) 3361 | '@parcel/utils': 2.14.2 3362 | chalk: 4.1.2 3363 | commander: 12.1.0 3364 | get-port: 4.2.0 3365 | transitivePeerDependencies: 3366 | - '@swc/helpers' 3367 | - cssnano 3368 | - napi-wasm 3369 | - postcss 3370 | - purgecss 3371 | - relateurl 3372 | - srcset 3373 | - svgo 3374 | - terser 3375 | - uncss 3376 | 3377 | parent-module@1.0.1: 3378 | dependencies: 3379 | callsites: 3.1.0 3380 | 3381 | parse-json@5.2.0: 3382 | dependencies: 3383 | '@babel/code-frame': 7.18.6 3384 | error-ex: 1.3.2 3385 | json-parse-even-better-errors: 2.3.1 3386 | lines-and-columns: 1.2.4 3387 | 3388 | path-exists@4.0.0: {} 3389 | 3390 | path-is-absolute@1.0.1: {} 3391 | 3392 | path-key@3.1.1: {} 3393 | 3394 | path-type@4.0.0: {} 3395 | 3396 | picocolors@1.0.0: {} 3397 | 3398 | picomatch@2.3.1: {} 3399 | 3400 | postcss-value-parser@4.2.0: {} 3401 | 3402 | posthtml-parser@0.11.0: 3403 | dependencies: 3404 | htmlparser2: 7.2.0 3405 | 3406 | posthtml-parser@0.12.1: 3407 | dependencies: 3408 | htmlparser2: 9.1.0 3409 | 3410 | posthtml-render@3.0.0: 3411 | dependencies: 3412 | is-json: 2.0.1 3413 | 3414 | posthtml@0.16.6: 3415 | dependencies: 3416 | posthtml-parser: 0.11.0 3417 | posthtml-render: 3.0.0 3418 | 3419 | prelude-ls@1.2.1: {} 3420 | 3421 | prettier@3.0.0: {} 3422 | 3423 | punycode@2.3.0: {} 3424 | 3425 | queue-microtask@1.2.3: {} 3426 | 3427 | react-refresh@0.9.0: {} 3428 | 3429 | regenerator-runtime@0.14.1: {} 3430 | 3431 | resolve-from@4.0.0: {} 3432 | 3433 | reusify@1.0.4: {} 3434 | 3435 | rimraf@3.0.2: 3436 | dependencies: 3437 | glob: 7.2.3 3438 | 3439 | run-parallel@1.2.0: 3440 | dependencies: 3441 | queue-microtask: 1.2.3 3442 | 3443 | safe-buffer@5.2.1: {} 3444 | 3445 | semver@7.5.4: 3446 | dependencies: 3447 | lru-cache: 6.0.0 3448 | 3449 | semver@7.7.1: {} 3450 | 3451 | sharp@0.33.5: 3452 | dependencies: 3453 | color: 4.2.3 3454 | detect-libc: 2.0.3 3455 | semver: 7.7.1 3456 | optionalDependencies: 3457 | '@img/sharp-darwin-arm64': 0.33.5 3458 | '@img/sharp-darwin-x64': 0.33.5 3459 | '@img/sharp-libvips-darwin-arm64': 1.0.4 3460 | '@img/sharp-libvips-darwin-x64': 1.0.4 3461 | '@img/sharp-libvips-linux-arm': 1.0.5 3462 | '@img/sharp-libvips-linux-arm64': 1.0.4 3463 | '@img/sharp-libvips-linux-s390x': 1.0.4 3464 | '@img/sharp-libvips-linux-x64': 1.0.4 3465 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 3466 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4 3467 | '@img/sharp-linux-arm': 0.33.5 3468 | '@img/sharp-linux-arm64': 0.33.5 3469 | '@img/sharp-linux-s390x': 0.33.5 3470 | '@img/sharp-linux-x64': 0.33.5 3471 | '@img/sharp-linuxmusl-arm64': 0.33.5 3472 | '@img/sharp-linuxmusl-x64': 0.33.5 3473 | '@img/sharp-wasm32': 0.33.5 3474 | '@img/sharp-win32-ia32': 0.33.5 3475 | '@img/sharp-win32-x64': 0.33.5 3476 | 3477 | shebang-command@2.0.0: 3478 | dependencies: 3479 | shebang-regex: 3.0.0 3480 | 3481 | shebang-regex@3.0.0: {} 3482 | 3483 | simple-swizzle@0.2.2: 3484 | dependencies: 3485 | is-arrayish: 0.3.2 3486 | 3487 | slash@3.0.0: {} 3488 | 3489 | source-map@0.6.1: {} 3490 | 3491 | split.js@1.6.5: {} 3492 | 3493 | srcset@4.0.0: {} 3494 | 3495 | stable@0.1.8: {} 3496 | 3497 | strip-ansi@6.0.1: 3498 | dependencies: 3499 | ansi-regex: 5.0.1 3500 | 3501 | strip-json-comments@3.1.1: {} 3502 | 3503 | supports-color@5.5.0: 3504 | dependencies: 3505 | has-flag: 3.0.0 3506 | 3507 | supports-color@7.2.0: 3508 | dependencies: 3509 | has-flag: 4.0.0 3510 | 3511 | svgo@2.8.0: 3512 | dependencies: 3513 | '@trysound/sax': 0.2.0 3514 | commander: 7.2.0 3515 | css-select: 4.3.0 3516 | css-tree: 1.1.3 3517 | csso: 4.2.0 3518 | picocolors: 1.0.0 3519 | stable: 0.1.8 3520 | 3521 | term-size@2.2.1: {} 3522 | 3523 | text-table@0.2.0: {} 3524 | 3525 | timsort@0.3.0: {} 3526 | 3527 | to-regex-range@5.0.1: 3528 | dependencies: 3529 | is-number: 7.0.0 3530 | 3531 | ts-api-utils@1.0.1(typescript@5.2.2): 3532 | dependencies: 3533 | typescript: 5.2.2 3534 | 3535 | tslib@2.5.0: {} 3536 | 3537 | type-check@0.4.0: 3538 | dependencies: 3539 | prelude-ls: 1.2.1 3540 | 3541 | type-fest@0.20.2: {} 3542 | 3543 | typescript@5.2.2: {} 3544 | 3545 | update-browserslist-db@1.0.10(browserslist@4.21.5): 3546 | dependencies: 3547 | browserslist: 4.21.5 3548 | escalade: 3.1.1 3549 | picocolors: 1.0.0 3550 | 3551 | uri-js@4.4.1: 3552 | dependencies: 3553 | punycode: 2.3.0 3554 | 3555 | utility-types@3.10.0: {} 3556 | 3557 | weak-lru-cache@1.2.2: {} 3558 | 3559 | which@2.0.2: 3560 | dependencies: 3561 | isexe: 2.0.0 3562 | 3563 | wrappy@1.0.2: {} 3564 | 3565 | xxhash-wasm@0.4.2: {} 3566 | 3567 | yallist@4.0.0: {} 3568 | 3569 | yaml@1.10.2: {} 3570 | 3571 | yocto-queue@0.1.0: {} 3572 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | #![allow(static_mut_refs)] 2 | use std::collections::HashMap; 3 | 4 | use pest::error::{Error, ErrorVariant, InputLocation}; 5 | use pest::iterators::Pair; 6 | 7 | use pest_meta::parser::{self, Rule}; 8 | use pest_meta::{optimizer, validator}; 9 | 10 | use pest_vm::Vm; 11 | 12 | use wasm_bindgen::prelude::*; 13 | use wasm_bindgen::JsCast; 14 | use web_sys::{Document, Event, InputEvent, Node}; 15 | use web_sys::{HtmlOptionElement, HtmlSelectElement, HtmlTextAreaElement}; 16 | 17 | static mut NEEDS_RUN: bool = false; 18 | static mut VM: Option = None; 19 | static mut LAST_SELECTION: Option = None; 20 | 21 | fn document() -> Document { 22 | web_sys::window() 23 | .expect_throw("no window") 24 | .document() 25 | .expect_throw("no document") 26 | } 27 | 28 | fn element(sel: &str) -> T { 29 | document() 30 | .query_selector(sel) 31 | .unwrap_throw() 32 | .expect_throw(&format!("no {} element", sel)) 33 | .dyn_into() 34 | .expect_throw("wrong element type") 35 | } 36 | 37 | fn create_element(tag: &str) -> T { 38 | document() 39 | .create_element(tag) 40 | .expect_throw(&format!("could not create {} element", tag)) 41 | .dyn_into() 42 | .expect_throw("wrong element type") 43 | } 44 | 45 | fn storage() -> web_sys::Storage { 46 | web_sys::window() 47 | .unwrap_throw() 48 | .local_storage() 49 | .unwrap_throw() 50 | .unwrap_throw() 51 | } 52 | 53 | fn listen_for_input() { 54 | let input = element::(".editor-input-text"); 55 | 56 | let func = Closure::::new(move |_| { 57 | unsafe { 58 | NEEDS_RUN = true; 59 | } 60 | wait_and_run(); 61 | }); 62 | 63 | input 64 | .add_event_listener_with_callback("input", func.as_ref().unchecked_ref()) 65 | .unwrap_throw(); 66 | func.forget(); 67 | 68 | let select = element::(".editor-input-select"); 69 | 70 | let func = Closure::::new(move |_: Event| { 71 | unsafe { 72 | LAST_SELECTION = selected_option(); 73 | } 74 | 75 | parse_input(); 76 | }); 77 | 78 | select 79 | .add_event_listener_with_callback("change", func.as_ref().unchecked_ref()) 80 | .unwrap_throw(); 81 | func.forget(); 82 | } 83 | 84 | fn wait_and_run() { 85 | let win = web_sys::window().expect_throw("no window"); 86 | let func = Closure::::once_into_js(|| { 87 | if unsafe { NEEDS_RUN } { 88 | parse_input(); 89 | unsafe { 90 | NEEDS_RUN = false; 91 | } 92 | } 93 | }); 94 | 95 | win.set_timeout_with_callback_and_timeout_and_arguments_0(func.as_ref().unchecked_ref(), 800) 96 | .unwrap_throw(); 97 | } 98 | 99 | fn parse_input() { 100 | let input = element::(".editor-input-text"); 101 | let output = element::(".editor-output"); 102 | 103 | if let Some(rule) = selected_option() { 104 | let vm = unsafe { VM.as_ref().expect_throw("no VM") }; 105 | 106 | match vm.parse(&rule, &input.value()) { 107 | Ok(pairs) => { 108 | let lines: Vec<_> = pairs.map(|pair| format_pair(pair, 0, true)).collect(); 109 | let lines = lines.join("\n"); 110 | 111 | output.set_value(lines.as_str()); 112 | } 113 | Err(error) => output.set_value(&format!("{}", error.renamed_rules(|r| r.to_string()))), 114 | }; 115 | } 116 | } 117 | 118 | fn format_pair(pair: Pair<&str>, indent_level: usize, is_newline: bool) -> String { 119 | let indent = if is_newline { 120 | " ".repeat(indent_level) 121 | } else { 122 | String::new() 123 | }; 124 | 125 | let children: Vec<_> = pair.clone().into_inner().collect(); 126 | let len = children.len(); 127 | let children: Vec<_> = children 128 | .into_iter() 129 | .map(|pair| { 130 | format_pair( 131 | pair, 132 | if len > 1 { 133 | indent_level + 1 134 | } else { 135 | indent_level 136 | }, 137 | len > 1, 138 | ) 139 | }) 140 | .collect(); 141 | 142 | let dash = if is_newline { "- " } else { "" }; 143 | let pair_tag = match pair.as_node_tag() { 144 | Some(tag) => format!("(#{}) ", tag), 145 | None => String::new(), 146 | }; 147 | match len { 148 | 0 => format!( 149 | "{}{}{}{}: {:?}", 150 | indent, 151 | dash, 152 | pair_tag, 153 | pair.as_rule(), 154 | pair.as_span().as_str() 155 | ), 156 | 1 => format!( 157 | "{}{}{}{} > {}", 158 | indent, 159 | dash, 160 | pair_tag, 161 | pair.as_rule(), 162 | children[0] 163 | ), 164 | _ => format!( 165 | "{}{}{}{}\n{}", 166 | indent, 167 | dash, 168 | pair_tag, 169 | pair.as_rule(), 170 | children.join("\n") 171 | ), 172 | } 173 | } 174 | 175 | fn selected_option() -> Option { 176 | element::(".editor-input-select") 177 | .selected_options() 178 | .item(0)? 179 | .text_content() 180 | .filter(|text| text != "...") 181 | } 182 | 183 | fn compile_grammar(grammar: &str) -> Vec> { 184 | let result = parser::parse(Rule::grammar_rules, grammar) 185 | .map_err(|error| error.renamed_rules(pest_meta::parser::rename_meta_rule)); 186 | 187 | let pairs = match result { 188 | Ok(pairs) => pairs, 189 | Err(error) => { 190 | add_rules_to_select(vec![]); 191 | return vec![convert_error(error, grammar)]; 192 | } 193 | }; 194 | 195 | if let Err(errors) = validator::validate_pairs(pairs.clone()) { 196 | add_rules_to_select(vec![]); 197 | return errors 198 | .into_iter() 199 | .map(|e| convert_error(e, grammar)) 200 | .collect(); 201 | } 202 | 203 | let ast = match parser::consume_rules(pairs) { 204 | Ok(ast) => ast, 205 | Err(errors) => { 206 | add_rules_to_select(vec![]); 207 | return errors 208 | .into_iter() 209 | .map(|e| convert_error(e, grammar)) 210 | .collect(); 211 | } 212 | }; 213 | 214 | unsafe { 215 | VM = Some(Vm::new(optimizer::optimize(ast.clone()))); 216 | } 217 | 218 | add_rules_to_select(ast.iter().map(|rule| rule.name.as_str()).collect()); 219 | 220 | parse_input(); 221 | 222 | vec![] 223 | } 224 | 225 | fn convert_error(error: Error, grammar: &str) -> HashMap { 226 | let message = match error.variant { 227 | ErrorVariant::CustomError { message } => message, 228 | _ => unreachable!(), 229 | }; 230 | 231 | match error.location { 232 | InputLocation::Pos(pos) => { 233 | let mut map = HashMap::new(); 234 | 235 | map.insert("from".to_owned(), line_col(pos, grammar)); 236 | map.insert("to".to_owned(), line_col(pos, grammar)); 237 | map.insert("message".to_owned(), message); 238 | 239 | map 240 | } 241 | InputLocation::Span((start, end)) => { 242 | let mut map = HashMap::new(); 243 | 244 | map.insert("from".to_owned(), line_col(start, grammar)); 245 | map.insert("to".to_owned(), line_col(end, grammar)); 246 | map.insert("message".to_owned(), message); 247 | 248 | map 249 | } 250 | } 251 | } 252 | 253 | fn line_col(pos: usize, input: &str) -> String { 254 | let (line, col) = { 255 | let mut pos = pos; 256 | // Position's pos is always a UTF-8 border. 257 | let slice = &input[..pos]; 258 | let mut chars = slice.chars().peekable(); 259 | 260 | let mut line_col = (1, 1); 261 | 262 | while pos != 0 { 263 | match chars.next() { 264 | Some('\r') => { 265 | if let Some(&'\n') = chars.peek() { 266 | chars.next(); 267 | 268 | if pos == 1 { 269 | pos -= 1; 270 | } else { 271 | pos -= 2; 272 | } 273 | 274 | line_col = (line_col.0 + 1, 1); 275 | } else { 276 | pos -= 1; 277 | line_col = (line_col.0, line_col.1 + 1); 278 | } 279 | } 280 | Some('\n') => { 281 | pos -= 1; 282 | line_col = (line_col.0 + 1, 1); 283 | } 284 | Some(c) => { 285 | pos -= c.len_utf8(); 286 | line_col = (line_col.0, line_col.1 + 1); 287 | } 288 | None => unreachable!(), 289 | } 290 | } 291 | 292 | line_col 293 | }; 294 | 295 | format!("({}, {})", line - 1, col - 1) 296 | } 297 | 298 | fn add_rules_to_select(mut rules: Vec<&str>) { 299 | let select = element::(".editor-input-select"); 300 | 301 | while let Some(node) = select.first_child() { 302 | select.remove_child(&node).unwrap_throw(); 303 | } 304 | 305 | select.set_disabled(rules.is_empty()); 306 | if rules.is_empty() { 307 | rules.push("..."); 308 | } 309 | 310 | for rule in rules { 311 | let option: HtmlOptionElement = create_element("option"); 312 | option 313 | .append_child(&document().create_text_node(rule)) 314 | .unwrap_throw(); 315 | select.append_child(&option).unwrap_throw(); 316 | 317 | if let Some(text) = unsafe { LAST_SELECTION.as_ref() } { 318 | if text == rule { 319 | option.set_selected(true); 320 | } 321 | } 322 | } 323 | } 324 | 325 | #[wasm_bindgen] 326 | pub fn lint(grammar: JsValue) -> JsValue { 327 | serde_wasm_bindgen::to_value(&compile_grammar(&grammar.as_string().unwrap())) 328 | .expect_throw("could not serialize grammar results") 329 | } 330 | 331 | #[wasm_bindgen(start)] 332 | pub fn start() { 333 | if let Ok(last_selected) = storage().get_item("last-selected-rule") { 334 | unsafe { 335 | LAST_SELECTION = last_selected; 336 | } 337 | } 338 | 339 | listen_for_input(); 340 | } 341 | 342 | #[wasm_bindgen] 343 | pub fn format(grammar: JsValue) -> JsValue { 344 | let input = grammar.as_string().unwrap(); 345 | let fmt = pest_fmt::Formatter::new(&input); 346 | serde_wasm_bindgen::to_value(&fmt.format().unwrap()) 347 | .expect_throw("could not serialize grammar results") 348 | } 349 | -------------------------------------------------------------------------------- /static/assets/dropdown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /static/assets/favicons/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pest-parser/site/dd584e24114aa3aaf6da02da50dbb72def40d69b/static/assets/favicons/favicon.png -------------------------------------------------------------------------------- /static/assets/favicons/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pest-parser/site/dd584e24114aa3aaf6da02da50dbb72def40d69b/static/assets/favicons/mstile-310x150.png -------------------------------------------------------------------------------- /static/assets/pest-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pest-parser/site/dd584e24114aa3aaf6da02da50dbb72def40d69b/static/assets/pest-logo.png -------------------------------------------------------------------------------- /static/assets/pest-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | pest. The Elegant Parser 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
52 | 58 | 62 | 63 | 64 | Try it here! 65 | 66 |
67 |
68 | 69 | vals.push(3); 70 | 71 |
72 | 73 | {statement} 74 | 75 |
76 |

pest. The Elegant Parser

77 |

78 | pest is a general purpose parser written in Rust with a focus on 79 | accessibility, correctness, and 80 | performance. It uses 81 | 82 | parsing expression grammars (or PEG) as input, which are similar 83 | in spirit to regular expressions, but which offer the enhanced 84 | expressivity needed to parse complex languages. 85 |

86 |
87 |
88 |

Accessibility

89 |

90 | Grammar-generated parsers are both easier to use and maintain than 91 | their hand-written counterparts. 92 |

93 |
94 |
95 |

Correctness

96 |

97 | Grammars offer better correctness guarantees, and issues can be 98 | solved declaratively in the grammar itself. Rust's memory safety 99 | further limits the amount of damage bugs can do. 100 |

101 |
102 |
103 |

Performance

104 |

105 | High-level static analysis and careful low-level implementation 106 | build a solid foundation on which serious performance tuning is 107 | possible. 108 |

109 |
110 |
111 |
112 |
113 |

Example

114 |

115 | The following is an example of a grammar for a list of alpha-numeric 116 | identifiers where the first identifier does not start with a digit: 117 |

118 |
alpha = { 'a'..'z' | 'A'..'Z' }
119 | digit = { '0'..'9' }
120 | 
121 | ident = { (alpha | digit)+ }
122 | 
123 | ident_list = _{ !digit ~ ident ~ (" " ~ ident)+ }
124 |           // ^
125 |           // ident_list rule is silent (produces no tokens or error reports)
126 |

127 | Grammars are saved in separate .pest files which are 128 | never mixed with procedural code. This results in an always up-to-date 129 | formalization of a language that is easy to read and maintain. 130 |

131 |
132 |

Meaningful error reporting

133 |

134 | Based on the grammar definition, the parser also includes automatic 135 | error reporting. For the example above, the input "123" 136 | will result in: 137 |

138 |
thread 'main' panicked at ' --> 1:1
139 |   |
140 | 1 | 123
141 |   | ^---
142 |   |
143 |   = unexpected digit', src/main.rs:12
144 |

145 | while "ab *" will result in: 146 |

147 |
thread 'main' panicked at ' --> 1:1
148 |   |
149 | 1 | ab *
150 |   |    ^---
151 |   |
152 |   = expected ident', src/main.rs:12
153 |
154 |
155 |
156 | 157 |
158 |

Measurements

159 |

160 | Performance measurements place a pest-generated JSON parser in 161 | somewhere below an optimized JSON parsers, 162 | serde, and a static 163 | native-speed parser, nom. 164 |

165 |
166 |
167 |

pest

168 |
169 |
170 |

nom

171 |
172 |
173 |

serde

174 |
175 |
176 |
177 |
178 |
179 |
180 |

150

181 |
182 |
183 |
184 |
185 |

366

186 |
187 |
188 |
189 |
190 |

472

191 |
192 |
193 |
194 |

0MB/s

195 |
196 |
197 |

250MB/s

198 |
199 |
200 |

500MB/s

201 |
202 |
203 |
204 |
205 | 206 |

Editor

207 |
208 |
209 |
210 | 211 | 212 |
213 |
214 | 215 | 216 |
217 |
218 |
219 | 220 |
221 | 222 | 225 |
226 |
227 | 228 |
229 |
230 |
231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | -------------------------------------------------------------------------------- /static/scripts/animation.ts: -------------------------------------------------------------------------------- 1 | const START_SEED = 5; 2 | let seed = START_SEED; 3 | let spans: HTMLCollection; 4 | 5 | function random() { 6 | const x = Math.sin(seed++) * 10000; 7 | return x - Math.floor(x); 8 | } 9 | 10 | function randomN(n: number) { 11 | return Math.floor(random() * n); 12 | } 13 | 14 | function randomChoice(alphabet: string) { 15 | return alphabet.charAt(randomN(alphabet.length)); 16 | } 17 | 18 | function fillElement(elem: Element, alphabet: string, density: number) { 19 | const rect = elem.getBoundingClientRect(); 20 | const GLYPHS = rect.width * density; 21 | 22 | while (elem.firstChild) { 23 | elem.removeChild(elem.firstChild); 24 | } 25 | 26 | for (let i = 0; i < GLYPHS; i++) { 27 | const p = document.createElement("P"); 28 | const t = document.createTextNode(randomChoice(alphabet)); 29 | 30 | p.appendChild(t); 31 | p.className = "glyph-background"; 32 | p.style.color = "rgba(255, 255, 255, " + random() * 0.2 + ")"; 33 | p.style.top = random() * rect.height * 1.3 - rect.height * 0.15 + "px"; 34 | p.style.left = random() * rect.width - rect.width * 0.05 + "px"; 35 | p.style.fontSize = randomN(20) + "pt"; 36 | p.style.transform = "rotate(" + randomN(360) + "deg)"; 37 | 38 | elem.appendChild(p); 39 | } 40 | } 41 | 42 | function findTokens() { 43 | const token = document.getElementsByClassName("token")[0]; 44 | const tokens = [ 45 | "{statement -> value -> ident}", 46 | "{statement -> calls -> dot}", 47 | "{statement -> calls -> ident}", 48 | "{statement -> calls -> parent}", 49 | "{statement -> calls -> args -> int}", 50 | "{statement -> calls -> parent}", 51 | "{statement -> semicolon}", 52 | ]; 53 | 54 | function addListeners(i: number) { 55 | spans[i].addEventListener("mouseover", function () { 56 | const j = i; 57 | token.innerHTML = tokens[j]; 58 | }); 59 | spans[i].addEventListener("mouseout", function () { 60 | token.innerHTML = "{statement}"; 61 | }); 62 | } 63 | 64 | for (let i = 0; i < spans.length; i++) { 65 | addListeners(i); 66 | } 67 | } 68 | 69 | function jump() { 70 | const i = Math.floor(Math.random() * spans.length); 71 | 72 | const span = spans[i]; 73 | const newSpan = span.cloneNode(true); 74 | span.parentNode!.replaceChild(newSpan, span); 75 | if (newSpan instanceof HTMLSpanElement) newSpan.classList.add("jump"); 76 | } 77 | 78 | window.addEventListener( 79 | "DOMContentLoaded", 80 | function () { 81 | seed = START_SEED; 82 | 83 | fillElement( 84 | document.getElementsByClassName("banner-features")[0], 85 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 86 | 0.2, 87 | ); 88 | fillElement( 89 | document.getElementsByClassName("banner-benchmark")[0], 90 | "0123456789", 91 | 0.1, 92 | ); 93 | 94 | const sample = document.getElementsByClassName("sample")[0]; 95 | spans = sample.children; 96 | 97 | jump(); 98 | const jumpInterval = setInterval(jump, 2000); 99 | 100 | sample.addEventListener("mouseover", function () { 101 | clearInterval(jumpInterval); 102 | findTokens(); 103 | }); 104 | 105 | elems = [...document.getElementsByClassName("chart-bar-hidden")]; 106 | startAnimations(); 107 | }, 108 | false, 109 | ); 110 | 111 | let elems: Element[] = []; 112 | 113 | function startAnimations() { 114 | const windowHeight = window.innerHeight; 115 | for (let i = 0; i < elems.length; i++) { 116 | const posFromTop = elems[i].getBoundingClientRect().top; 117 | if (posFromTop - windowHeight <= 0) { 118 | elems[i].className = elems[i].className.replace( 119 | "chart-bar-hidden", 120 | "chart-bar-bounce", 121 | ); 122 | } 123 | } 124 | } 125 | 126 | window.addEventListener("scroll", startAnimations); 127 | 128 | window.addEventListener( 129 | "resize", 130 | function () { 131 | seed = START_SEED; 132 | 133 | fillElement( 134 | document.getElementsByClassName("banner-features")[0], 135 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 136 | 0.2, 137 | ); 138 | fillElement( 139 | document.getElementsByClassName("banner-benchmark")[0], 140 | "0123456789", 141 | 0.1, 142 | ); 143 | }, 144 | true, 145 | ); 146 | -------------------------------------------------------------------------------- /static/scripts/editor.ts: -------------------------------------------------------------------------------- 1 | // we can't safely type codemirror@v5 because of the addon system 2 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 3 | declare const CodeMirror: any; 4 | 5 | import Split from "split.js"; 6 | import init, { lint, format } from "../../pkg/pest_site.js"; 7 | import { initShareButton } from "./shareButton"; 8 | 9 | let loaded = false; 10 | 11 | const editorDom = document.querySelector(".editor")!; 12 | const gridDom = document.querySelector(".editor-grid")!; 13 | const inputDom = document.querySelector(".editor-input")!; 14 | const inputTextDom = 15 | document.querySelector(".editor-input-text")!; 16 | const outputDom = 17 | document.querySelector(".editor-output")!; 18 | const modeBtn = document.querySelector("#modeBtn")!; 19 | const formatBtn = document.querySelector("#formatBtn")!; 20 | const editorInputSelect = document.querySelector( 21 | ".editor-input-select", 22 | ); 23 | 24 | const windowHeight = window.innerHeight; 25 | 26 | CodeMirror.defineSimpleMode("pest", { 27 | start: [ 28 | { regex: /\/\/.*/, token: "comment" }, 29 | { regex: /[a-zA-Z_]\w*/, token: "constiable" }, 30 | { regex: /=/, token: "operator", next: "mod" }, 31 | ], 32 | mod: [ 33 | { regex: /\{/, token: "bracket", next: "inside_rule" }, 34 | { regex: /[_@!$]/, token: "operator-2" }, 35 | ], 36 | inside_rule: [ 37 | { regex: /\/\/.*/, token: "comment" }, 38 | { regex: /"/, token: "string", next: "string" }, 39 | { 40 | regex: /'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/, 41 | token: "string", 42 | }, 43 | { regex: /\}/, token: "bracket", next: "start" }, 44 | { regex: /#\w+/, token: "tag" }, 45 | { regex: /[a-zA-Z_]\w*/, token: "constiable-2" }, 46 | { regex: /=/, token: "operator-2" }, 47 | { regex: /\d+/, token: "number" }, 48 | { regex: /[~|*+?&!]|(\.\.)/, token: "operator" }, 49 | ], 50 | string: [ 51 | { regex: /"/, token: "string", next: "inside_rule" }, 52 | { regex: /(?:[^\\"]|\\(?:.|$))*/, token: "string" }, 53 | ], 54 | meta: { 55 | dontIndentStates: ["comment"], 56 | lineComment: "//", 57 | }, 58 | }); 59 | 60 | CodeMirror.registerHelper("lint", "pest", function (text) { 61 | if (loaded) { 62 | const doc = CodeMirror.Doc(text); 63 | const errors = lint(text); 64 | const mapped: { message: string; from: number; to: number }[] = []; 65 | 66 | for (let i = 0; i < errors.length; i++) { 67 | let from = doc.clipPos(eval("CodeMirror.Pos" + errors[i].get("from"))); 68 | let to = doc.clipPos(eval("CodeMirror.Pos" + errors[i].get("to"))); 69 | 70 | if (from.line === to.line && from.ch === to.ch) { 71 | to.ch += 1; 72 | to = doc.clipPos(to); 73 | } 74 | 75 | if (from.line === to.line && from.ch === to.ch) { 76 | from.ch -= 1; 77 | from = doc.clipPos(from); 78 | } 79 | 80 | mapped.push({ 81 | message: errors[i].get("message"), 82 | from: from, 83 | to: to, 84 | }); 85 | } 86 | 87 | return mapped; 88 | } else { 89 | return []; 90 | } 91 | }); 92 | 93 | const grammar = document.querySelector(".editor-grammar")!; 94 | const myCodeMirror = CodeMirror.fromTextArea(grammar, { 95 | mode: "pest", 96 | lint: "pest", 97 | theme: "pest", 98 | placeholder: "Grammar", 99 | }); 100 | 101 | initShareButton({ myCodeMirror }); 102 | 103 | function doFormat() { 104 | if (!loaded || !myCodeMirror) { 105 | return; 106 | } 107 | 108 | const grammar = myCodeMirror.getValue(); 109 | const formatted = format(grammar); 110 | myCodeMirror.setValue(formatted); 111 | } 112 | 113 | let split: Split.Instance | null = null; 114 | let sizes = JSON.parse(localStorage.getItem("split-sizes") ?? "[33, 33, 33]"); 115 | if (!Array.isArray(sizes) || sizes.length !== 3) { 116 | console.warn("Invalid split sizes", sizes); 117 | sizes = [33, 33, 33]; 118 | } 119 | 120 | function makeResizable(wideMode: boolean) { 121 | if (wideMode) { 122 | split = Split([".CodeMirror", ".editor-input", ".output-wrapper"], { 123 | sizes, 124 | onDragEnd: function (_sizes) { 125 | sizes = _sizes; 126 | localStorage.setItem("split-sizes", JSON.stringify(sizes)); 127 | }, 128 | }); 129 | } else { 130 | if (split) { 131 | split.destroy(); 132 | } 133 | } 134 | } 135 | 136 | type SavedGrammar = { 137 | grammar: string; 138 | input: string; 139 | }; 140 | function saveCode() { 141 | const grammar = myCodeMirror.getValue(); 142 | const input = inputTextDom.value; 143 | const json = JSON.stringify({ grammar, input } satisfies SavedGrammar); 144 | localStorage.setItem("last-editor-state", json); 145 | } 146 | function getSavedCode() { 147 | const json = localStorage.getItem("last-editor-state"); 148 | const parsed = JSON.parse(json || "null"); 149 | return parsed || { grammar: "", input: "" }; 150 | } 151 | 152 | function saveRule() { 153 | const selectedRule = editorInputSelect?.value || ""; 154 | localStorage.setItem("last-selected-rule", selectedRule); 155 | } 156 | 157 | function wideMode() { 158 | modeBtn.onclick = restore; 159 | modeBtn.innerText = "Normal Mode"; 160 | inputDom.classList.add("wide-input"); 161 | editorDom.classList.add("wide-editor"); 162 | gridDom.classList.add("flex-editor"); 163 | const upperHeight = document.querySelector("#modeBtn")!.scrollHeight + 30; 164 | gridDom.setAttribute("style", `height: ${windowHeight - upperHeight}px`); 165 | myCodeMirror.setSize(null, outputDom.clientHeight - 20); 166 | makeResizable(true); 167 | window.scrollTo(0, document.body.scrollHeight); 168 | } 169 | 170 | function restore() { 171 | modeBtn.onclick = wideMode; 172 | modeBtn.innerText = "Wide Mode"; 173 | inputDom.classList.remove("wide-input"); 174 | editorDom.classList.remove("wide-editor"); 175 | gridDom.classList.remove("flex-editor"); 176 | outputDom.setAttribute("rows", "7"); 177 | myCodeMirror.setSize(null, outputDom.clientHeight); 178 | makeResizable(false); 179 | } 180 | 181 | modeBtn.onclick = wideMode; 182 | formatBtn.onclick = doFormat; 183 | 184 | init().then(() => { 185 | loaded = true; 186 | const url = new URL(window.location.href); 187 | const hasUrlGrammar = url.searchParams.get("g"); 188 | if (!hasUrlGrammar) { 189 | const { grammar, input } = getSavedCode(); 190 | myCodeMirror.setValue(grammar); 191 | inputTextDom.value = input; 192 | } 193 | }); 194 | 195 | inputTextDom.addEventListener("input", saveCode); 196 | myCodeMirror.on("change", saveCode); 197 | editorInputSelect?.addEventListener("change", saveRule); 198 | -------------------------------------------------------------------------------- /static/scripts/shareButton.ts: -------------------------------------------------------------------------------- 1 | import { 2 | compressToEncodedURIComponent, 3 | decompressFromEncodedURIComponent, 4 | } from "lz-string"; 5 | 6 | let copyButton; 7 | let copyButtonOriginalText; 8 | let shareLinkWarning; 9 | 10 | export function initShareButton({ myCodeMirror }) { 11 | shareLinkWarning = 12 | document.querySelector("p#shareLinkWarning"); 13 | tryLoadFromShareLink(myCodeMirror); 14 | copyButton = document.querySelector("button#shareLinkBtn"); 15 | copyButtonOriginalText = copyButton.innerText; 16 | copyButton.onclick = () => copyShareLink(myCodeMirror); 17 | } 18 | 19 | let copyButtonTimerHandle: number | undefined = undefined; 20 | 21 | function copyShareLink(codeMirror) { 22 | clearTimeout(copyButtonTimerHandle); 23 | const url = shareURL(codeMirror); 24 | if (url.length > 2000) { 25 | setShareLinkLengthWarning(); 26 | } else { 27 | clearShareLinkWarning(); 28 | } 29 | navigator.clipboard.writeText(url); 30 | copyButton.classList.add("copied"); 31 | copyButton.innerText = "Copied"; 32 | copyButtonTimerHandle = window.setTimeout(() => { 33 | copyButton.classList.remove("copied"); 34 | copyButton.innerText = copyButtonOriginalText; 35 | }, 1400); 36 | } 37 | 38 | function tryLoadFromShareLink(codeMirror) { 39 | const url = new URL(window.location.href); 40 | const gdata = url.searchParams.get("g"); 41 | if (gdata) { 42 | const decoded = decodeShareData(gdata); 43 | codeMirror.setValue(decoded["grammar"]); 44 | const inputEditor = document.querySelector( 45 | "textarea.editor-input-text", 46 | )!; 47 | inputEditor.value = decoded["input"]; 48 | if (decoded["selectedRule"]) { 49 | localStorage.setItem("last-selected-rule", decoded["selectedRule"]); 50 | } 51 | } 52 | } 53 | 54 | function shareData(codeMirror) { 55 | return { 56 | grammar: codeMirror.getValue(), 57 | input: document.querySelector( 58 | "textarea.editor-input-text", 59 | )!.value, 60 | selectedRule: localStorage.getItem("last-selected-rule") || "", 61 | }; 62 | } 63 | 64 | function shareURL(codeMirror) { 65 | const gdata = encodeShareData(shareData(codeMirror)); 66 | const url = new URL(window.location.href); 67 | url.searchParams.set("g", gdata); 68 | url.hash = "editor"; 69 | return url.toString(); 70 | } 71 | 72 | function setShareLinkLengthWarning() { 73 | shareLinkWarning.innerText = "Share link > 2000 chars; it may not work."; 74 | shareLinkWarning.style.display = null; 75 | } 76 | 77 | function clearShareLinkWarning() { 78 | shareLinkWarning.innerText = ""; 79 | shareLinkWarning.style.display = "none"; 80 | } 81 | 82 | function encodeShareData(data: unknown) { 83 | return compressToEncodedURIComponent(JSON.stringify(data)); 84 | } 85 | 86 | function decodeShareData(encoded: string) { 87 | return JSON.parse(decompressFromEncodedURIComponent(encoded)); 88 | } 89 | -------------------------------------------------------------------------------- /static/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | background: repeating-linear-gradient( 4 | -45deg, 5 | #202c42, 6 | #202c42 0.5pt, 7 | transparent 0, 8 | transparent 40pt 9 | ), 10 | repeating-linear-gradient( 11 | -45deg, 12 | #202c42, 13 | #202c42 0.5pt, 14 | transparent 0, 15 | transparent 26pt 16 | ), 17 | #192233; 18 | font-size: calc(12px + 0.35vw); 19 | } 20 | 21 | @media all and (min-width: 801px) { 22 | body { 23 | font-size: 14.8px; 24 | } 25 | } 26 | 27 | .flex { 28 | display: flex; 29 | } 30 | 31 | .items-center { 32 | align-items: center; 33 | } 34 | 35 | .justify-between { 36 | justify-content: space-between; 37 | } 38 | 39 | .container-main { 40 | display: grid; 41 | grid-template-columns: 1fr minmax(auto, 800px) 1fr; 42 | grid-template-rows: 50px auto auto auto auto auto; 43 | } 44 | 45 | .bar-links { 46 | display: grid; 47 | grid-gap: calc(15px + 1vw); 48 | margin: calc(12px + 0.8vw) calc(15px + 3vw); 49 | } 50 | 51 | .bar-links-left { 52 | grid-template-columns: repeat(4, auto); 53 | grid-area: 1 / 1 / 2 / 3; 54 | justify-self: self-start; 55 | } 56 | 57 | .bar-links-right { 58 | grid-template-columns: repeat(2, auto); 59 | grid-area: 1 / 2 / 2 / -1; 60 | justify-self: self-end; 61 | } 62 | 63 | .bar-links > div > a { 64 | font-family: "Quicksand", sans-serif; 65 | font-weight: bold; 66 | font-size: calc(1em + 0.35vw); 67 | color: white; 68 | text-decoration: none; 69 | border-bottom: 0.5px solid #48a9ea; 70 | } 71 | 72 | @media all and (min-width: 1201px) { 73 | .bar-links > div > a { 74 | font-size: 19.6px; 75 | } 76 | } 77 | 78 | .logo { 79 | grid-area: 2 / 2 / 3 / 3; 80 | margin: 40px; 81 | max-width: 640px; 82 | justify-self: center; 83 | } 84 | 85 | .logo-bloom { 86 | filter: blur(20px); 87 | opacity: 0.3; 88 | z-index: -1; 89 | } 90 | 91 | .button-try { 92 | grid-area: 3 / 2 / 4 / 3; 93 | justify-self: center; 94 | background-color: #24c85a; 95 | font-family: "Quicksand", sans-serif; 96 | font-weight: bold; 97 | font-size: 18px; 98 | color: white; 99 | text-decoration: none; 100 | width: 160px; 101 | height: 50px; 102 | border-radius: 25px; 103 | margin-top: -25px; 104 | line-height: 50px; 105 | text-align: center; 106 | box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.2); 107 | z-index: 1; 108 | } 109 | 110 | .button-try:hover { 111 | background-color: #2fdb67; 112 | } 113 | 114 | .button-try:active { 115 | background-color: #24c85a; 116 | } 117 | 118 | .content { 119 | padding: 40px 20px; 120 | } 121 | 122 | .banner-features { 123 | grid-area: 3 / 1 / 4 / -1; 124 | background-color: #4158d0; 125 | background-image: linear-gradient( 126 | 43deg, 127 | #4158d0 0%, 128 | #c850c0 46%, 129 | #ffcc70 100% 130 | ); 131 | overflow: visible; 132 | z-index: -1; 133 | } 134 | 135 | .features { 136 | grid-area: 3 / 2 / 4 / -2; 137 | } 138 | 139 | .glyph-background { 140 | font-family: "Space Mono", monospace; 141 | position: relative; 142 | margin: 0; 143 | width: 0; 144 | height: 0; 145 | overflow: visible; 146 | -webkit-touch-callout: none; 147 | -webkit-user-select: none; 148 | -khtml-user-select: none; 149 | -moz-user-select: none; 150 | -ms-user-select: none; 151 | user-select: none; 152 | } 153 | 154 | .illustration { 155 | display: grid; 156 | margin: 5em 0; 157 | text-align: center; 158 | } 159 | 160 | .sample { 161 | font-size: calc(1em + 6.8vw); 162 | font-weight: bold; 163 | margin-bottom: 0.3em; 164 | } 165 | 166 | @media all and (min-width: 801px) { 167 | .sample { 168 | font-size: 69.2px; 169 | } 170 | } 171 | 172 | .sample > span { 173 | display: inline-block; 174 | } 175 | 176 | .sample > span:hover { 177 | color: #765cf6; 178 | mix-blend-mode: multiply; 179 | } 180 | 181 | .jump { 182 | animation: JumpAnimation 900ms linear; 183 | } 184 | 185 | @keyframes JumpAnimation { 186 | 0% { 187 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 188 | } 189 | 1.78% { 190 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -3.239, 0, 1); 191 | } 192 | 3.5% { 193 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -5.384, 0, 1); 194 | } 195 | 6.95% { 196 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -7.864, 0, 1); 197 | } 198 | 10.45% { 199 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -9.033, 0, 1); 200 | } 201 | 13.9% { 202 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -9.562, 0, 1); 203 | } 204 | 20.85% { 205 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -9.914, 0, 1); 206 | } 207 | 27.81% { 208 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -9.984, 0, 1); 209 | } 210 | 44.34% { 211 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -10, 0, 1); 212 | } 213 | 44.44% { 214 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -10, 0, 1); 215 | } 216 | 45.67% { 217 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -5.717, 0, 1); 218 | } 219 | 46.84% { 220 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.89, 0, 1); 221 | } 222 | 48% { 223 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2.366, 0, 1); 224 | } 225 | 49.17% { 226 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 3.35, 0, 1); 227 | } 228 | 50.51% { 229 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2.375, 0, 1); 230 | } 231 | 51.84% { 232 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.623, 0, 1); 233 | } 234 | 53.18% { 235 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.67, 0, 1); 236 | } 237 | 54.45% { 238 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1.05, 0, 1); 239 | } 240 | 55.56% { 241 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.832, 0, 1); 242 | } 243 | 57.12% { 244 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.198, 0, 1); 245 | } 246 | 59.74% { 247 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.329, 0, 1); 248 | } 249 | 65.02% { 250 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.103, 0, 1); 251 | } 252 | 70.3% { 253 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.032, 0, 1); 254 | } 255 | 75.64% { 256 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.01, 0, 1); 257 | } 258 | 80.93% { 259 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.003, 0, 1); 260 | } 261 | 86.21% { 262 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.001, 0, 1); 263 | } 264 | 91.49% { 265 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 266 | } 267 | 96.83% { 268 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 269 | } 270 | 100% { 271 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 272 | } 273 | } 274 | 275 | .token { 276 | font-size: 1.6em; 277 | } 278 | 279 | .feature-grid { 280 | display: grid; 281 | grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); 282 | margin-top: 40px; 283 | text-align: center; 284 | justify-content: space-evenly; 285 | } 286 | 287 | .feature { 288 | margin: 0 20px; 289 | } 290 | 291 | .example { 292 | grid-area: 4 / 2 / 5 / -2; 293 | } 294 | 295 | .code-block { 296 | display: block; 297 | white-space: pre-wrap; 298 | word-wrap: break-word; 299 | background-color: #253451; 300 | padding: 0.8em 1.3em; 301 | border-radius: 3px; 302 | color: #dde1f9; 303 | } 304 | 305 | .ident { 306 | color: #51d3f6; 307 | } 308 | 309 | .string { 310 | color: #7ef69d; 311 | } 312 | 313 | .op { 314 | color: #ff926e; 315 | } 316 | 317 | .mod { 318 | color: #697bdb; 319 | } 320 | 321 | .comment { 322 | color: #a5adc6; 323 | } 324 | 325 | .banner-benchmark { 326 | grid-area: 5 / 1 / 6 / -1; 327 | background-color: #2485cb; 328 | background-image: linear-gradient( 329 | 67deg, 330 | #2485cb 0%, 331 | #08aeea 37%, 332 | #11dd80 100% 333 | ); 334 | overflow: visible; 335 | z-index: -1; 336 | } 337 | 338 | .benchmark { 339 | grid-area: 5 / 2 / 6 / -2; 340 | } 341 | 342 | .chart { 343 | display: grid; 344 | grid-template-columns: 6em repeat(4, 1fr); 345 | grid-template-rows: repeat(3, 1fr) 1.5em; 346 | height: calc(17em + 5vw); 347 | } 348 | 349 | @media all and (min-width: 801px) { 350 | .chart { 351 | height: 291.317px; 352 | } 353 | } 354 | 355 | .chart-label { 356 | justify-self: self-end; 357 | align-self: center; 358 | } 359 | 360 | .chart-label > p { 361 | margin-right: 0.8em; 362 | } 363 | 364 | .chart-border { 365 | border-left: 0.5px dashed white; 366 | width: 0.5px; 367 | } 368 | 369 | .chart-border-1 { 370 | grid-area: 1 / 2 / -1 / 3; 371 | border-left: 0.5px solid white; 372 | z-index: 1; 373 | } 374 | 375 | .chart-border-2 { 376 | grid-area: 1 / 3 / -1 / 4; 377 | } 378 | 379 | .chart-border-3 { 380 | grid-area: 1 / 4 / -1 / 5; 381 | } 382 | 383 | .chart-bar { 384 | overflow: hidden; 385 | align-self: center; 386 | } 387 | 388 | .chart-bar > div { 389 | box-sizing: border-box; 390 | margin-left: -25%; 391 | padding-left: 25%; 392 | text-align: center; 393 | border-radius: 0 3px 3px 0; 394 | background-color: #1245ff; 395 | } 396 | 397 | .chart-bar > div > p { 398 | margin: 0; 399 | padding: 0.3em; 400 | font-weight: bold; 401 | opacity: 0; 402 | transition: opacity 0.3s ease-in-out; 403 | } 404 | 405 | .chart-bar > div:hover > p { 406 | opacity: 1; 407 | transition: opacity 0.3s ease-in-out; 408 | } 409 | 410 | .chart-bar-pest { 411 | grid-area: 1 / 2 / 2 / -1; 412 | } 413 | 414 | .chart-bar-pest > div { 415 | width: calc(15% + 25%); /* negative margin */ 416 | background-color: #ff007b; 417 | } 418 | 419 | .chart-bar-nom { 420 | grid-area: 2 / 2 / 3 / -1; 421 | } 422 | 423 | .chart-bar-nom > div { 424 | width: calc(36.6% + 25%); /* negative margin */ 425 | } 426 | 427 | .chart-bar-serde { 428 | grid-area: 3 / 2 / 4 / -1; 429 | } 430 | 431 | .chart-bar-serde > div { 432 | width: calc(47.2% + 25%); /* negative margin */ 433 | } 434 | 435 | .chart-bar-hidden { 436 | opacity: 0; 437 | } 438 | 439 | .chart-bar-bounce { 440 | animation: 441 | BounceAnimation 2.5s linear, 442 | FadeInAnimation 0.4s ease; 443 | animation-delay: 0.2s, 0.2s; 444 | animation-fill-mode: backwards; 445 | } 446 | 447 | @keyframes FadeInAnimation { 448 | 0% { 449 | opacity: 0; 450 | } 451 | 100% { 452 | opacity: 1; 453 | } 454 | } 455 | 456 | @keyframes BounceAnimation { 457 | 0% { 458 | transform: matrix3d(0.75, 0, 0, 0, 0, 0.8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 459 | } 460 | 1.4% { 461 | transform: matrix3d(0.849, 0, 0, 0, 0, 0.879, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 462 | } 463 | 2.7% { 464 | transform: matrix3d(0.985, 0, 0, 0, 0, 0.988, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 465 | } 466 | 4% { 467 | transform: matrix3d(1.091, 0, 0, 0, 0, 1.072, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 468 | } 469 | 5.31% { 470 | transform: matrix3d(1.128, 0, 0, 0, 0, 1.102, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 471 | } 472 | 6.81% { 473 | transform: matrix3d(1.09, 0, 0, 0, 0, 1.072, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 474 | } 475 | 8.21% { 476 | transform: matrix3d(1.018, 0, 0, 0, 0, 1.015, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 477 | } 478 | 9.61% { 479 | transform: matrix3d(0.958, 0, 0, 0, 0, 0.966, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 480 | } 481 | 11.01% { 482 | transform: matrix3d(0.936, 0, 0, 0, 0, 0.949, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 483 | } 484 | 13.91% { 485 | transform: matrix3d(0.991, 0, 0, 0, 0, 0.993, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 486 | } 487 | 16.72% { 488 | transform: matrix3d(1.032, 0, 0, 0, 0, 1.025, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 489 | } 490 | 22.52% { 491 | transform: matrix3d(0.984, 0, 0, 0, 0, 0.987, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 492 | } 493 | 28.23% { 494 | transform: matrix3d(1.008, 0, 0, 0, 0, 1.006, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 495 | } 496 | 33.93% { 497 | transform: matrix3d(0.996, 0, 0, 0, 0, 0.997, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 498 | } 499 | 39.64% { 500 | transform: matrix3d(1.002, 0, 0, 0, 0, 1.002, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 501 | } 502 | 45.35% { 503 | transform: matrix3d(0.999, 0, 0, 0, 0, 0.999, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 504 | } 505 | 51.05% { 506 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 507 | } 508 | 56.76% { 509 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 510 | } 511 | 62.56% { 512 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 513 | } 514 | 68.27% { 515 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 516 | } 517 | 73.97% { 518 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 519 | } 520 | 79.68% { 521 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 522 | } 523 | 85.39% { 524 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 525 | } 526 | 91.09% { 527 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 528 | } 529 | 96.8% { 530 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 531 | } 532 | 100% { 533 | transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 534 | } 535 | } 536 | 537 | .chart-value { 538 | align-self: center; 539 | opacity: 0.7; 540 | font-size: 0.8em; 541 | margin-left: 0.5em; 542 | } 543 | 544 | .chart-value-0 { 545 | grid-area: 5 / 2 / 6 / 3; 546 | } 547 | 548 | .chart-value-250 { 549 | grid-area: 5 / 3 / 6 / 4; 550 | } 551 | 552 | .chart-value-500 { 553 | grid-area: 5 / 4 / 6 / 5; 554 | } 555 | 556 | .editor { 557 | grid-area: 6 / 2 / 7 / -2; 558 | } 559 | .wide-editor { 560 | grid-area: 6 / 1 / 7 / 4; 561 | padding-top: 0; 562 | padding-bottom: 0; 563 | } 564 | .gutter:hover { 565 | cursor: col-resize; 566 | } 567 | .flex-editor { 568 | display: flex; 569 | flex-direction: row; 570 | } 571 | .output-wrapper { 572 | display: grid; 573 | grid-template-rows: 100%; 574 | } 575 | .editor-grid > div { 576 | margin-bottom: 20px; 577 | } 578 | .wide-input { 579 | grid-template-columns: none !important; 580 | grid-template-rows: 20fr 1fr; 581 | } 582 | .editor-input { 583 | display: grid; 584 | grid-template-columns: 4fr 1fr; 585 | background-color: #253451; 586 | border-radius: 3px; 587 | } 588 | 589 | .editor-input-text { 590 | background-color: initial; 591 | border-radius: 0; 592 | } 593 | 594 | .editor-input-select { 595 | font-family: "Space Mono", monospace; 596 | font-variant-ligatures: none; 597 | font-size: 1em; 598 | text-align-last: center; 599 | background: #3f4e6b url("assets/dropdown.svg") no-repeat; 600 | background-position: 90% 50%; 601 | background-blend-mode: soft-light; 602 | border: 1.5px solid #57627a; 603 | border-radius: 0 3px 3px 0; 604 | color: white; 605 | -webkit-appearance: none; 606 | -moz-appearance: none; 607 | appearance: none; 608 | } 609 | 610 | .editor-input-select:disabled { 611 | background: #3a475f url("assets/dropdown.svg") no-repeat; 612 | background-position: 90% 50%; 613 | background-blend-mode: soft-light; 614 | color: #7a879c; 615 | } 616 | 617 | .cm-s-pest.CodeMirror { 618 | font-family: "Space Mono", monospace; 619 | font-variant-ligatures: none; 620 | font-size: 1em; 621 | line-height: 1.5em; 622 | background: #253451; 623 | padding: 0.8em 1.3em; 624 | border-radius: 3px; 625 | color: white; 626 | } 627 | 628 | .cm-s-pest .CodeMirror-cursor { 629 | border-left: 1px solid white; 630 | } 631 | 632 | .cm-s-pest span.cm-comment { 633 | color: #a5adc6; 634 | } 635 | .cm-s-pest span.cm-operator { 636 | color: #ff926e; 637 | } 638 | .cm-s-pest span.cm-operator-2 { 639 | color: #697bdb; 640 | } 641 | .cm-s-pest span.cm-number { 642 | color: #aa759f; 643 | } 644 | .cm-s-pest span.cm-string { 645 | color: #7ef69d; 646 | } 647 | .cm-s-pest span.cm-constiable { 648 | color: #4ea8d8; 649 | } 650 | .cm-s-pest span.cm-constiable-2 { 651 | color: white; 652 | } 653 | 654 | .cm-s-pest span.cm-tag { 655 | color: #f6dc51; 656 | } 657 | .cm-s-pest span.cm-error { 658 | background: #ac4142; 659 | color: #b0b0b0; 660 | } 661 | 662 | .cm-s-pest .CodeMirror-placeholder { 663 | color: #999 !important; 664 | } 665 | 666 | .cm-s-pest .CodeMirror-lint-mark-error { 667 | background-image: none; 668 | border-bottom: 1px dotted #f9ff3d; 669 | } 670 | 671 | .CodeMirror-lint-tooltip { 672 | background-color: white !important; 673 | font-family: "Space Mono", monospace !important; 674 | font-variant-ligatures: none !important; 675 | font-size: 1em !important; 676 | line-height: 1.5em !important; 677 | padding: 0.8em 1.3em !important; 678 | padding-left: 0 !important; 679 | border: none !important; 680 | border-left: 2em solid #ff3d3d !important; 681 | border-radius: 3px !important; 682 | box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.2) !important; 683 | } 684 | 685 | .CodeMirror-lint-marker-error, 686 | .CodeMirror-lint-message-error { 687 | background-image: none !important; 688 | } 689 | 690 | h1 { 691 | margin: 1.2em 0; 692 | font-family: "Quicksand", sans-serif; 693 | font-size: 2.1em; 694 | color: white; 695 | } 696 | 697 | h2 { 698 | margin: 1.2em 0; 699 | font-family: "Quicksand", sans-serif; 700 | font-size: 1.8em; 701 | font-weight: lighter; 702 | color: white; 703 | } 704 | 705 | p { 706 | font-family: "Quicksand", sans-serif; 707 | font-size: 1.15em; 708 | line-height: 1.65em; 709 | color: white; 710 | } 711 | 712 | a { 713 | font-family: "Quicksand", sans-serif; 714 | font-size: 1.15em; 715 | line-height: 1.65em; 716 | color: white; 717 | } 718 | 719 | code { 720 | font-family: "Space Mono", monospace; 721 | font-variant-ligatures: none; 722 | font-size: 1em; 723 | line-height: 1.5em; 724 | color: white; 725 | } 726 | 727 | button { 728 | justify-self: center; 729 | background-color: #616e86; 730 | font-family: "Quicksand", sans-serif; 731 | font-size: 1em; 732 | margin-bottom: 20px; 733 | padding: 0.8em 1em; 734 | color: white; 735 | border: 0; 736 | border-radius: 2px; 737 | text-align: center; 738 | box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.2); 739 | transition: width 400ms ease-in-out; 740 | } 741 | 742 | button + button { 743 | margin-left: 20px; 744 | } 745 | 746 | button:hover { 747 | background-color: #7b89a5; 748 | } 749 | 750 | button:active { 751 | background-color: #596375; 752 | } 753 | 754 | button:disabled { 755 | background-color: #596375; 756 | } 757 | 758 | textarea { 759 | resize: none; 760 | font-family: "Space Mono", monospace; 761 | font-variant-ligatures: none; 762 | font-size: 1em; 763 | line-height: 1.5em; 764 | background-color: #253451; 765 | padding: 0.8em 1.3em; 766 | border: none; 767 | border-radius: 3px; 768 | color: white; 769 | } 770 | --------------------------------------------------------------------------------