From 05975a4780529395a0b0620fdacb1b6790f9433d Mon Sep 17 00:00:00 2001 From: Younes <47226184+younesaassila@users.noreply.github.com> Date: Sat, 14 May 2022 18:08:04 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Refactor=20project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 232 ++ .parcelrc | 3 + .prettierrc.json | 3 + README.md | 59 +- chrome/common/css/styles.css | 68 - chrome/common/html/popup.html | 48 - chrome/js/background.js | 57 - chrome/manifest.json | 29 - firefox/common/css/styles.css | 71 - firefox/common/img/logo.png | Bin 71764 -> 0 bytes firefox/common/img/ttvlol.png | Bin 53441 -> 0 bytes firefox/images/icon.png | Bin 4088 -> 0 bytes firefox/js/background.js | 58 - firefox/manifest.json | 29 - package-lock.json | 4364 +++++++++++++++++++++++ package.json | 38 + src/common/css/styles.css | 70 + {firefox => src}/common/html/popup.html | 0 {chrome => src}/common/img/logo.png | Bin {chrome => src}/common/img/ttvlol.png | Bin {chrome => src}/images/icon.png | Bin src/manifest.json | 27 + src/ts/background.ts | 59 + src/types.ts | 4 + 24 files changed, 4853 insertions(+), 366 deletions(-) create mode 100644 .gitignore create mode 100644 .parcelrc create mode 100644 .prettierrc.json delete mode 100644 chrome/common/css/styles.css delete mode 100644 chrome/common/html/popup.html delete mode 100644 chrome/js/background.js delete mode 100644 chrome/manifest.json delete mode 100644 firefox/common/css/styles.css delete mode 100644 firefox/common/img/logo.png delete mode 100644 firefox/common/img/ttvlol.png delete mode 100644 firefox/images/icon.png delete mode 100644 firefox/js/background.js delete mode 100644 firefox/manifest.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/common/css/styles.css rename {firefox => src}/common/html/popup.html (100%) rename {chrome => src}/common/img/logo.png (100%) rename {chrome => src}/common/img/ttvlol.png (100%) rename {chrome => src}/images/icon.png (100%) create mode 100644 src/manifest.json create mode 100644 src/ts/background.ts create mode 100644 src/types.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c911c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,232 @@ +# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig + +# Created by https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,macos,node +# Edit at https://www.toptal.com/developers/gitignore?templates=windows,visualstudiocode,macos,node + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +# Support for Project snippet scope +.vscode/*.code-snippets + +# Ignore code-workspaces +*.code-workspace + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,macos,node + +# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) + diff --git a/.parcelrc b/.parcelrc new file mode 100644 index 0000000..65a11f3 --- /dev/null +++ b/.parcelrc @@ -0,0 +1,3 @@ +{ + "extends": "@parcel/config-webextension" +} diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..d68aa73 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "arrowParens": "avoid" +} diff --git a/README.md b/README.md index 3f77347..7945658 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,59 @@ -# TTV.LOL browser extensions +

+ Icon +
+ TTV LOL +
+

-This respository contains the browser extensions for [TTV.LOL](https://ttv.lol). +
+ + GitHub issues + + + GitHub forks + + + GitHub stars + +
-# Chrome webstore +
-The extension can be installed via the chrome webstore [here](https://chrome.google.com/webstore/detail/ttv-lol/ofbbahodfeppoklmgjiokgfdgcndngjm). +```text +This is a fork of the original project at https://github.com/TTV-LOL/extensions +``` -# Firefox Addon +> -The extension can be installed via the Firefox addons store [here](https://addons.mozilla.org/en-US/firefox/addon/ttv-lol/). +[TTV LOL](https://ttv.lol/) removes livestream ads from [Twitch](https://www.twitch.tv/). +This fork: + +- disables TTV LOL for channels you are subscribed to. + +## Installation + +### Chrome + +1. Download the latest version of this extension in the "Releases" section (ZIP file) +1. Unzip the ZIP file you just downloaded +1. Go to `chrome://extensions` +1. Turn on `Developer mode` +1. Click on `Load unpacked` +1. Select the unzipped folder you just created + +### Firefox + +1. Download the latest version of this extension in the "Releases" section (ZIP file) +1. Go to `about:addons` +1. Click on the gear icon then select "Install Add-on From File…" +1. Select the ZIP file you just downloaded diff --git a/chrome/common/css/styles.css b/chrome/common/css/styles.css deleted file mode 100644 index d3c6b4f..0000000 --- a/chrome/common/css/styles.css +++ /dev/null @@ -1,68 +0,0 @@ -html { - width: 300px; - height: 100px; - background: #151619; - color: #c9cbcd; - font-family: Open Sans,Segoe UI,sans-serif; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; -} - - -.container { - text-align: center; - padding-bottom: 10px; - } - - .button-group { - display: flex; - justify-content: center; - } - - .button { - border-radius: 6px; - color: #c3c4ca; - font-weight: bold; - padding: 10px 20px; - text-decoration: none; - transition: all 150ms ease-in-out; - } - .button:hover { - background-color: #1d1f23; - } - .button:not(:first-of-type) { - margin-left: 15px; - } - .discord { - overflow: visible; - margin-right: 3px; - display: inline-block; - } - .button-arrow .arrow-icon { - overflow: visible; - margin-left: 3px; - margin-bottom: -2px; - width: 8px; - } - .icon { - margin-bottom: -3px; - } - .buton-text{ - margin-bottom: 10px; - } - .button-arrow .arrow-head { - transform: translateX(0); - transition: transform 150ms ease-in-out; - } - .button-arrow .arrow-body { - opacity: 0; - transform: scaleX(1); - transition: transform 150ms ease-in-out, opacity 150ms ease-in-out; - } - .button-arrow:hover .arrow-head { - transform: translateX(3px); - } - .button-arrow:hover .arrow-body { - opacity: 1; - transform: scaleX(2); - } \ No newline at end of file diff --git a/chrome/common/html/popup.html b/chrome/common/html/popup.html deleted file mode 100644 index 398e59c..0000000 --- a/chrome/common/html/popup.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - -
-
- -
-
- - - - - - Donate - - - - - - - - - - - - - - - - Discord - - - - - - - - - - -
-
- - - diff --git a/chrome/js/background.js b/chrome/js/background.js deleted file mode 100644 index 116a739..0000000 --- a/chrome/js/background.js +++ /dev/null @@ -1,57 +0,0 @@ -function stripUnusedParams(str, params) { - if (!params) { - params = [ 'token', 'sig' ]; - } - var tempUrl = new URL('https://localhost/' + str); - for (var i = 0; i < params.length; i++) { - tempUrl.searchParams.delete(params[i]); - } - return tempUrl.pathname.substring(1) + tempUrl.search; -} - -function onPlaylistBeforeRequest(details) { - - details.url = stripUnusedParams(details.url, null); - - // (hls\/|vod\/)(.+?)$ - const match = /(hls|vod)\/(.+?)$/gim.exec(details.url); - - if (match !== null && match.length > 1) { - var playlistType = match[1] == "vod" ? "vod" : "playlist"; - - var req = new XMLHttpRequest(); - req.open("GET", `https://api.ttv.lol/ping`, false); - req.send(); - - // validate that our API is online, if not fallback to standard stream with ads - if (req.status != 200) { - return { - redirectUrl: details.url - }; - } else { - return { - redirectUrl: `https://api.ttv.lol/${playlistType}/${encodeURIComponent(match[2])}`, - }; - } - - } -} - -chrome.webRequest.onBeforeRequest.addListener( - onPlaylistBeforeRequest, - { urls: ["https://usher.ttvnw.net/api/channel/hls/*", "https://usher.ttvnw.net/vod/*"] }, - ["blocking", "extraHeaders"] -); - -function onBeforeSendHeaders(req) { - req.requestHeaders.push({ name: 'X-Donate-To', value: "https://ttv.lol/donate" }) - return { - requestHeaders: req.requestHeaders - } -} - -chrome.webRequest.onBeforeSendHeaders.addListener( - onBeforeSendHeaders, - { urls: ["https://api.ttv.lol/playlist/*", "https://api.ttv.lol/vod/*"] }, - ["blocking", "requestHeaders"] -); diff --git a/chrome/manifest.json b/chrome/manifest.json deleted file mode 100644 index dca347b..0000000 --- a/chrome/manifest.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "background": { - "persistent": true, - "scripts": [ - "js/background.js" - ] - }, - "browser_action": { - "default_icon": { - "128": "images/icon.png" - }, - "default_popup": "common/html/popup.html", - "default_title": "TTV LOL" - }, - "description": "TTV LOL", - "icons": { - "128": "images/icon.png" - }, - "manifest_version": 2, - "name": "TTV LOL", - "permissions": [ - "webRequest", - "webRequestBlocking", - "https://*.twitch.tv/*", - "https://usher.ttvnw.net/*", - "https://api.ttv.lol/*" - ], - "version": "0.0.0.4" -} \ No newline at end of file diff --git a/firefox/common/css/styles.css b/firefox/common/css/styles.css deleted file mode 100644 index 2010f0b..0000000 --- a/firefox/common/css/styles.css +++ /dev/null @@ -1,71 +0,0 @@ -html, body { - width: 300px; -} - - -html { - background: #151619; - color: #c9cbcd; - font-family: Open Sans,Segoe UI,sans-serif; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; -} - - -.container { - text-align: center; - padding-bottom: 10px; - } - - .button-group { - display: flex; - justify-content: center; - } - - .button { - border-radius: 6px; - color: #c3c4ca; - font-weight: bold; - padding: 10px 20px; - text-decoration: none; - transition: all 150ms ease-in-out; - } - .button:hover { - background-color: #1d1f23; - } - .button:not(:first-of-type) { - margin-left: 15px; - } - .discord { - overflow: visible; - margin-right: 3px; - display: inline-block; - } - .button-arrow .arrow-icon { - overflow: visible; - margin-left: 3px; - margin-bottom: -2px; - width: 8px; - } - .icon { - margin-bottom: -3px; - } - .buton-text{ - margin-bottom: 10px; - } - .button-arrow .arrow-head { - transform: translateX(0); - transition: transform 150ms ease-in-out; - } - .button-arrow .arrow-body { - opacity: 0; - transform: scaleX(1); - transition: transform 150ms ease-in-out, opacity 150ms ease-in-out; - } - .button-arrow:hover .arrow-head { - transform: translateX(3px); - } - .button-arrow:hover .arrow-body { - opacity: 1; - transform: scaleX(2); - } \ No newline at end of file diff --git a/firefox/common/img/logo.png b/firefox/common/img/logo.png deleted file mode 100644 index dff2826c39994168e6b579c4e6829145f2ef0975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71764 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 diff --git a/firefox/common/img/ttvlol.png b/firefox/common/img/ttvlol.png deleted file mode 100644 index 8ca21172963b1213bd3bfd932f3bcf5b535574d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53441 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 SvQh{F6tT0}W}R#4b@bnMabRu$ diff --git a/firefox/images/icon.png b/firefox/images/icon.png deleted file mode 100644 index 08d1644f7cc0c5affaa4af6c278c9ace58dc9089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4088 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 diff --git a/firefox/js/background.js b/firefox/js/background.js deleted file mode 100644 index 49ef427..0000000 --- a/firefox/js/background.js +++ /dev/null @@ -1,58 +0,0 @@ -function stripUnusedParams(str, params) { - if (!params) { - params = [ 'token', 'sig' ]; - } - var tempUrl = new URL('https://localhost/' + str); - for (var i = 0; i < params.length; i++) { - tempUrl.searchParams.delete(params[i]); - } - return tempUrl.pathname.substring(1) + tempUrl.search; -} - -function onPlaylistBeforeRequest(details) { - - details.url = stripUnusedParams(details.url, null); - - // (hls\/|vod\/)(.+?)$ - const match = /(hls|vod)\/(.+?)$/gim.exec(details.url); - - if (match !== null && match.length > 1) { - var playlistType = match[1] == "vod" ? "vod" : "playlist"; - - return new Promise(resolve => { - fetch( - 'https://api.ttv.lol/ping', - { - method: 'GET', - }).then(r => { - if (r.status == 200) { - resolve({ redirectUrl: `https://api.ttv.lol/${playlistType}/${encodeURIComponent(match[2])}` }); - } else { - resolve({}); - } - }).catch((error) => { - resolve({}); - }); - }); - - } -} - - browser.webRequest.onBeforeRequest.addListener( - onPlaylistBeforeRequest, - { urls: ["https://usher.ttvnw.net/api/channel/hls/*", "https://usher.ttvnw.net/vod/*"] }, - ["blocking"] - ); - - function onBeforeSendHeaders(req) { - req.requestHeaders.push({ name: 'X-Donate-To', value: "https://ttv.lol/donate" }) - return { - requestHeaders: req.requestHeaders - } - } - - browser.webRequest.onBeforeSendHeaders.addListener( - onBeforeSendHeaders, - { urls: ["https://api.ttv.lol/playlist/*", "https://api.ttv.lol/vod/*"] }, - ["blocking", "requestHeaders"] - ); diff --git a/firefox/manifest.json b/firefox/manifest.json deleted file mode 100644 index dca347b..0000000 --- a/firefox/manifest.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "background": { - "persistent": true, - "scripts": [ - "js/background.js" - ] - }, - "browser_action": { - "default_icon": { - "128": "images/icon.png" - }, - "default_popup": "common/html/popup.html", - "default_title": "TTV LOL" - }, - "description": "TTV LOL", - "icons": { - "128": "images/icon.png" - }, - "manifest_version": 2, - "name": "TTV LOL", - "permissions": [ - "webRequest", - "webRequestBlocking", - "https://*.twitch.tv/*", - "https://usher.ttvnw.net/*", - "https://api.ttv.lol/*" - ], - "version": "0.0.0.4" -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a4fb440 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4364 @@ +{ + "name": "ttv-lol", + "version": "1.0.0-younesaassila", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "ttv-lol", + "version": "1.0.0-younesaassila", + "license": "UNLICENSED", + "devDependencies": { + "@parcel/config-webextension": "^2.5.0", + "@types/webextension-polyfill": "^0.8.3", + "parcel": "^2.5.0", + "prettier": "^2.6.2", + "typescript": "^4.6.4", + "webextension-polyfill": "^0.9.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@lezer/common": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", + "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==", + "dev": true + }, + "node_modules/@lezer/lr": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", + "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", + "dev": true, + "dependencies": { + "@lezer/common": "^0.15.0" + } + }, + "node_modules/@mischnic/json-sourcemap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", + "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", + "dev": true, + "dependencies": { + "@lezer/common": "^0.15.7", + "@lezer/lr": "^0.15.4", + "json5": "^2.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@parcel/bundler-default": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.5.0.tgz", + "integrity": "sha512-7CJzE17SirCXjcRgBcnqWO/5EOA1raq/3OIKtT4cxbjpDQGHZpjpEEZiMNRpEpdNMxDSlsG8mAkXTYGL2VVWRw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/cache": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.5.0.tgz", + "integrity": "sha512-3kOO3cZQv0FAKhrMHGLdb4Qtzpmy78Q6jPN3u8eCY4yqeDTnyQBZvWNHoyCm5WlmL8y6Q6REYMbETLxSH1ggAQ==", + "dev": true, + "dependencies": { + "@parcel/fs": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/utils": "2.5.0", + "lmdb": "2.2.4" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.5.0" + } + }, + "node_modules/@parcel/codeframe": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.5.0.tgz", + "integrity": "sha512-qafqL8Vu2kr932cCWESoDEEoAeKVi7/xdzTBuhzEJng1AfmRT0rCbt/P4ao3RjiDyozPSjXsHOqM6GDZcto4eQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/compressor-raw": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.5.0.tgz", + "integrity": "sha512-I5Zs+2f1ue4sTPdfT8BNsLfTZl48sMWLk2Io3elUJjH/SS9kO7ut5ChkuJtt77ZS35m0OF+ZCt3ICTJdnDG8eA==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/config-default": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.5.0.tgz", + "integrity": "sha512-r30V61958SONvP9I8KV8s44ZOFq0H219VyFjPysraSabHjZ+KMaCTQOuqaDtUMa272sHUQkBcZxKYj5jYPJlZg==", + "dev": true, + "dependencies": { + "@parcel/bundler-default": "2.5.0", + "@parcel/compressor-raw": "2.5.0", + "@parcel/namer-default": "2.5.0", + "@parcel/optimizer-css": "2.5.0", + "@parcel/optimizer-htmlnano": "2.5.0", + "@parcel/optimizer-image": "2.5.0", + "@parcel/optimizer-svgo": "2.5.0", + "@parcel/optimizer-terser": "2.5.0", + "@parcel/packager-css": "2.5.0", + "@parcel/packager-html": "2.5.0", + "@parcel/packager-js": "2.5.0", + "@parcel/packager-raw": "2.5.0", + "@parcel/packager-svg": "2.5.0", + "@parcel/reporter-dev-server": "2.5.0", + "@parcel/resolver-default": "2.5.0", + "@parcel/runtime-browser-hmr": "2.5.0", + "@parcel/runtime-js": "2.5.0", + "@parcel/runtime-react-refresh": "2.5.0", + "@parcel/runtime-service-worker": "2.5.0", + "@parcel/transformer-babel": "2.5.0", + "@parcel/transformer-css": "2.5.0", + "@parcel/transformer-html": "2.5.0", + "@parcel/transformer-image": "2.5.0", + "@parcel/transformer-js": "2.5.0", + "@parcel/transformer-json": "2.5.0", + "@parcel/transformer-postcss": "2.5.0", + "@parcel/transformer-posthtml": "2.5.0", + "@parcel/transformer-raw": "2.5.0", + "@parcel/transformer-react-refresh-wrap": "2.5.0", + "@parcel/transformer-svg": "2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.5.0" + } + }, + "node_modules/@parcel/config-webextension": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/config-webextension/-/config-webextension-2.5.0.tgz", + "integrity": "sha512-q68VTZXeoDjF0zAw6iDSf4vC5vC2leeBctSSy/VXLn/1xiV51UWdU5t4E6zu0EAWVaHoRwo2kPvbr6fsISZnmg==", + "dev": true, + "dependencies": { + "@parcel/config-default": "2.5.0", + "@parcel/packager-webextension": "2.5.0", + "@parcel/runtime-webextension": "2.5.0", + "@parcel/transformer-raw": "2.5.0", + "@parcel/transformer-webextension": "2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.5.0" + } + }, + "node_modules/@parcel/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.5.0.tgz", + "integrity": "sha512-dygDmPsfAYJKTnUftcbEzjCik7AAaPbFvJW8ETYz8diyjkAG9y6hvCAZIrJE5pNOjFzg32en4v4UWv8Sqlzl9g==", + "dev": true, + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/cache": "2.5.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/events": "2.5.0", + "@parcel/fs": "2.5.0", + "@parcel/graph": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/package-manager": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "@parcel/workers": "2.5.0", + "abortcontroller-polyfill": "^1.1.9", + "base-x": "^3.0.8", + "browserslist": "^4.6.6", + "clone": "^2.1.1", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "json5": "^2.2.0", + "msgpackr": "^1.5.4", + "nullthrows": "^1.1.1", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/css": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.8.3.tgz", + "integrity": "sha512-6qUN4iicr8f9Q6UUZttwwHMzrb65BRX46PHWq0icA4KEmvmfR9cSYlp/hJH8F4stg3Wncx12Bnw+EuPf5OAEPQ==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/css-darwin-arm64": "1.8.3", + "@parcel/css-darwin-x64": "1.8.3", + "@parcel/css-linux-arm-gnueabihf": "1.8.3", + "@parcel/css-linux-arm64-gnu": "1.8.3", + "@parcel/css-linux-arm64-musl": "1.8.3", + "@parcel/css-linux-x64-gnu": "1.8.3", + "@parcel/css-linux-x64-musl": "1.8.3", + "@parcel/css-win32-x64-msvc": "1.8.3" + } + }, + "node_modules/@parcel/css-darwin-arm64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.8.3.tgz", + "integrity": "sha512-qh/Ig6GfVjGoiGSWjIYDo6Ghwmyy/9BXvYS1l3R+Bp50F300cq84Czfl6wxaL+aFmghdHzhjJuGfWmZlcYliPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/css-darwin-x64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-darwin-x64/-/css-darwin-x64-1.8.3.tgz", + "integrity": "sha512-gTUIoRgwyYr4UuH7sSn3gOuMlIshJBOJLmjL+E/mR5lqdYabguiKiRORvkrnb/gHBmOUF9re0RcTaFmJ2VOAlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/css-linux-arm-gnueabihf": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.8.3.tgz", + "integrity": "sha512-4P1r0BvL9dPz70py2xLg/jEvWJmKNyokPgafyrDP+GbpPTfH5NYJJkVRGo/TkKsp3Rv8SJhV9fdlpFKC6BI92A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/css-linux-arm64-gnu": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.8.3.tgz", + "integrity": "sha512-1fUy94eaqdzum+C7bsYVF2AgxjLGR/qppArn/4HTQyydHR5QeV+Uoyqo5vdnO5Vclj8eQwlgR9OyAOlmzXxFDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/css-linux-arm64-musl": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.8.3.tgz", + "integrity": "sha512-ct1QRK5gAP8sO22NZ7RULZQB7dbHpou+WMa4z0LJb+Fho13a1JNw931vNHbeI5cRr1fCTDq76pz/+Valgetzcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/css-linux-x64-gnu": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.8.3.tgz", + "integrity": "sha512-pg/mahoogzjbaZcW76rrTZ64tEu8Wok4Gm0sW/dXHJEJD2QVJ6GxLP4UVNBuhaV0GrNFHggp9pcdhTtLGkKl/g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/css-linux-x64-musl": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.8.3.tgz", + "integrity": "sha512-4Iwawy28HQ2yAgbuyR60bgO+8oE+OiWpE02eNjbgqnDpTsfmXFMt4l5OYgZwJJ7DlaZqm+/yO8RPMd+EzwtNzg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/css-win32-x64-msvc": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.8.3.tgz", + "integrity": "sha512-vnHUdzIVjqONa5ALFzMJ3ZHt6NiaYTHW/lqzP+AR4l+bq+UTXD2Q75/RgirY5NYwdfy1VPy/jI82jAtLOCymkw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/diagnostic": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.5.0.tgz", + "integrity": "sha512-KiMGGRpEV7wl5gjcxBKcgX84a+cG+IEn94gwy5LK3lENR09nuKShqqgKGAmj/17CobJgw1QNP94/H4Md+oxIWg==", + "dev": true, + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.5.0.tgz", + "integrity": "sha512-Gc2LPwL1H34Ony5MENbKZg7wvCscZ4x9y7Fu92sfbdWpLo3K13hVtsX3TMIIgYt3B7R7OmO8yR880U2T+JfVkQ==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/fs": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.5.0.tgz", + "integrity": "sha512-YYr14BWtx/bJ+hu6PPQQ6G/3omOTWgVqEw+UFI3iQH3P6+e0LRXW/Ja1yAcJeepGcTwIP0opnXZBQOm8PBQ2SA==", + "dev": true, + "dependencies": { + "@parcel/fs-search": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "@parcel/watcher": "^2.0.0", + "@parcel/workers": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.5.0" + } + }, + "node_modules/@parcel/fs-search": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.5.0.tgz", + "integrity": "sha512-uBONkz9ZCNSOqbPGWJY3MNl+pqBTfvzHH9+4UhzHEHPArvK2oD0+syYPVE60+zGrxybXTESYMCJp4bHvH6Z2hA==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/graph": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.5.0.tgz", + "integrity": "sha512-qa2VtG08dJyTaWrxYAkMIlkoDRSPoiqLDNxxHKplkcxAjXBUw0/AkWaz82VO5r1G6jfOj+nM30ajH9uygZYwbw==", + "dev": true, + "dependencies": { + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/hash": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.5.0.tgz", + "integrity": "sha512-47JL0XpB7UvIW6Ijf8vv+yVMt9dLvB/lRlBHFmAkmovisueVMVbYD7smxVZnCSehD8UH8BcymKbMzyL5dimgoQ==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3", + "xxhash-wasm": "^0.4.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/logger": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.5.0.tgz", + "integrity": "sha512-pT1L3ceH6trL1N3I3r2HawPjz/PCubOo/Kazu7IeXsMsKVjj1a6AeieZHzkNZIbhiGPtm/cHbBNLz2zTWDLeOA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/events": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/markdown-ansi": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.5.0.tgz", + "integrity": "sha512-ixkNF3KWIqxMlfxTe9Gb2cp/uNmklQev8VEUxujMVxmUfGyQs4859zdJIQlIinabWYhArhsXATkVf3MzCUN6TQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/namer-default": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.5.0.tgz", + "integrity": "sha512-ahGQqHJzsWE5Qux8zXMAU+lyNBOl+ZpcOFzRGE2DWOsmAlytsHl7DBVCQvzUyNBFg1/HmIj+7D4efv2kjR7rTg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/node-resolver-core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.5.0.tgz", + "integrity": "sha512-XQvpguiIwQcu75cscLDFOVhjsjuPzXbuMaaZ7XxxUEl0PscIgu/GfKYxTfTruN3cRl+CaQH6qBAMfjLaFng6lQ==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-css": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.5.0.tgz", + "integrity": "sha512-J00bLF+4SsnKc+YbYrNuBr44/zz3cg++CoXteXhH27PxP1rScGQx36Rui8WORgil5mlX2VYN79DuqJC7V3Ynbg==", + "dev": true, + "dependencies": { + "@parcel/css": "^1.8.1", + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "browserslist": "^4.6.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-htmlnano": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.5.0.tgz", + "integrity": "sha512-Fr0zPqgxoNaOVdROAjNGDWCts3+wByNQ82Mxhu8Tzc25A2cPjcr1H2sa/TE3hf79c92DxdKf2FaC1ZOgR5YPdg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "htmlnano": "^2.0.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "svgo": "^2.4.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-image": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.5.0.tgz", + "integrity": "sha512-nbo2pdnAt21WLGjzTpsE8ZEL0xNoP7c3wBj9y70Pysmasg1SrRVCbfE8jTy+lHBQwq2yjC6lV/Usv+9lfA7S/w==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "@parcel/workers": "2.5.0", + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-svgo": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.5.0.tgz", + "integrity": "sha512-pgZqwU0RLc/wr4WcQY/W1GJmddnEANDEpz1mdppUOqBz1EfTQ7zh5NgUA3hV1i05Hbecp3mHSvXJPV0mhNOl5Q==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "svgo": "^2.4.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-terser": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.5.0.tgz", + "integrity": "sha512-PZ3UHBGfjE49/Jloopsd38Hxg4qzsrdepWP53mCuVP7Aw605Y4QtYuB1ho3VV0oXfKQVq+uI7lVIBsuW4K6vqA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1", + "terser": "^5.2.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/package-manager": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.5.0.tgz", + "integrity": "sha512-zTuF55/lITUjw9dUU/X0HiF++589xbPXw/zUiG9T6s8BQThLvrxAhYP89S719pw7cTqDimGkTxnIuK+a0djEkg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/fs": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "@parcel/workers": "2.5.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.5.0" + } + }, + "node_modules/@parcel/packager-css": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.5.0.tgz", + "integrity": "sha512-c0mGBFdVSPhAxaX3+zN8KEIqOOUhkIPKbZex1pnGYfy03Qe2/Mb4nyt5DAGlw9gjka1UCHIN/wszLmKC8YyUeg==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-html": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.5.0.tgz", + "integrity": "sha512-ZFGUPRMWKrm8kQHdkEJ5S22C05qpSymx+o+57EfuNjCrGyj3M59WyGYYXYJ175bFYZ/jp5yy+VxMh6fZefe+Pw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.5.0.tgz", + "integrity": "sha512-aJAKOTgXdxO3V9O7+2DCVOtne128WwXmUAOVThnMRo7f3zMVSAR7Mxc9pEsuTzPfj8UBXgFBRfdJUSCgsMxiSw==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "globals": "^13.2.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-raw": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.5.0.tgz", + "integrity": "sha512-aHV0oogeiqxhxS1lsttw15EvG3DDWK3FV7+F+7hoaAy+xg89K56NTp6j43Jtw9iyU1/HnZRGBE2hF3C7N73oKw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-svg": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.5.0.tgz", + "integrity": "sha512-XSMFn30K/kpjcPpQqt88GmPJsNUSVL3RNeigXkIAcLpfO6Tb2eV4iOt4yVCagaDrRJ19alXut0TxjMm5bm41/g==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "posthtml": "^0.16.4" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-webextension": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-webextension/-/packager-webextension-2.5.0.tgz", + "integrity": "sha512-70ofhs83a/iZ3bq1T4qQiVoZEbR4aQmc/svAinNEJ5GHdur9/rCTDM6pPG8xwrQx6I2b8y8knRe3uC1B6BH6nQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/plugin": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.5.0.tgz", + "integrity": "sha512-obtb6/Gql6YFQ86bdv75A2Noabx8679reFZeyfKKf0L7Lppx4DFQetXwM9XVy7Gx6hJ1Ekm3UMuuIyVJk33YHQ==", + "dev": true, + "dependencies": { + "@parcel/types": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-cli": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.5.0.tgz", + "integrity": "sha512-miJt2YbRJBmYSVeoUWUj8YL85Pwj1CmGQB0/btqhulGLH/Fvkbv6T4sJ4gl4l5xIt9mJQsZ70pOWwa8BId3rWw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "chalk": "^4.1.0", + "term-size": "^2.2.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-dev-server": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.5.0.tgz", + "integrity": "sha512-wvxAiW42AxJ3B8jtvowJcP4/cTV8zY48SfKg61YKYu1yUO+TtyJIjHQzDW2XuT34cIGFY97Gr0i+AVu44RyUuQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/resolver-default": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.5.0.tgz", + "integrity": "sha512-39PkZpVr/+iYS11u+lA84vIsKm/yisltTVmUjlYsDnExiuV1c8OSbSdYZ3JMx+7CYPE0bWbosX2AGilIwIMWpQ==", + "dev": true, + "dependencies": { + "@parcel/node-resolver-core": "2.5.0", + "@parcel/plugin": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-browser-hmr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.5.0.tgz", + "integrity": "sha512-oPAo8Zf06gXCpt41nyvK7kv2HH1RrHAGgOqttyjStwAFlm5MZKs7BgtJzO58LfJN8g3sMY0cNdG17fB/4f8q6Q==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.5.0.tgz", + "integrity": "sha512-gPC2PbNAiooULP71wF5twe4raekuXsR1Hw/ahITDoqsZdXHzG3CkoCjYL3CkmBGiKQgMMocCyN1E2oBzAH8Kyw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-react-refresh": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.5.0.tgz", + "integrity": "sha512-+8RuDKFdFYIQTrXG4MRhG9XqkkYEHn0zxKyOJ/IkDDfSEhY0na+EyhrneFUwIvDX63gLPkxceXAg0gwBqXPK/Q==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "react-refresh": "^0.9.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-service-worker": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.5.0.tgz", + "integrity": "sha512-STuDlU0fPXeWpAmbayY7o04F0eHy6FTOFeT5KQ0PTxtdEa3Ey8QInP/NVE52Yv0aVQtesWukGrNEFCERlkbFRw==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-webextension": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-webextension/-/runtime-webextension-2.5.0.tgz", + "integrity": "sha512-WaLxOccP+Q8YQnhaFt4T1iFQkUHvNfi3phrDikURsWXusfq/l7+Cmb4JSmGX4Hcm51827zO4YAf7k3geuKvKrA==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/source-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.0.2.tgz", + "integrity": "sha512-NnUrPYLpYB6qyx2v6bcRPn/gVigmGG6M6xL8wIg/i0dP1GLkuY1nf+Hqdf63FzPTqqT7K3k6eE5yHPQVMO5jcA==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": "^12.18.3 || >=14" + } + }, + "node_modules/@parcel/transformer-babel": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.5.0.tgz", + "integrity": "sha512-EFb866C9jCoBHIcebWF7goAcYj1wkObx0GDxshlazFtvym1RM27xSWWjRYyqb5+HNOxB3voaNvQOVjcD+DXjCA==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "browserslist": "^4.6.6", + "json5": "^2.2.0", + "nullthrows": "^1.1.1", + "semver": "^5.7.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-css": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.5.0.tgz", + "integrity": "sha512-p8FOvKWWSbS6H8PbD9a0KZqyaKNpSD2BUTzSRYnNj3TBUv7/ZXaP6Om295XTQ/MPht1o7XTQzvfpF/7yEhr02Q==", + "dev": true, + "dependencies": { + "@parcel/css": "^1.8.1", + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "browserslist": "^4.6.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-html": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.5.0.tgz", + "integrity": "sha512-iEjNyAF0wQmY3DMw7FS+UzoOMng76UsSngh+WWA1E5lv5XyqrP8Mk2QLTJp1nWetUhSLhZr58LGmPYBTB4l9ZQ==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-image": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.5.0.tgz", + "integrity": "sha512-vVEXTHZl8m/9yopgK0dWHLOQX2zOnghq6pZnWdWVG6fsvXZln7kP1YN5iwWDoADQYkiKzP+Ymn6UwP9pZpHFzA==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/workers": "2.5.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "peerDependencies": { + "@parcel/core": "^2.5.0" + } + }, + "node_modules/@parcel/transformer-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.5.0.tgz", + "integrity": "sha512-Cp8Ic+Au3OcskCRZszmo47z3bqcZ7rfPv2xZYXpXY2TzEc3IV0bKje57bZektoY8LW9LkYM9iBO/WhkVoT6LIg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "@parcel/workers": "2.5.0", + "@swc/helpers": "^0.3.6", + "browserslist": "^4.6.6", + "detect-libc": "^1.0.3", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.13.7", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.5.0" + } + }, + "node_modules/@parcel/transformer-json": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.5.0.tgz", + "integrity": "sha512-661sByA7TkR6Lmxt+hqV4h2SAt+7lgc58DzmUYArpEl1fQnMuQuaB0kQeHzi6fDD2+2G6o7EC+DuwBZKa479TA==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "json5": "^2.2.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-postcss": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.5.0.tgz", + "integrity": "sha512-IPNlWElekdQHMTBqhdwJNBCQomuYyo7xgNBdnTrt9VJ+R5ihy6n7ZJSWIAJXAH9VZxETTtunfrzRtgkmtjTeZQ==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "clone": "^2.1.1", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-posthtml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.5.0.tgz", + "integrity": "sha512-AZxg1XD8OXOS4bEGEmBBR+X9T9qoFdVsbVUg498zzejYSka1ZQHF7TgLI/+pUnE+ZVYNIp7/G0xXqsRVKMKmdQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-raw": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.5.0.tgz", + "integrity": "sha512-I3zjE1u9+Wj90Qqs1V2FTm6iC6SAyOVUthwVZkZey+qbQG/ok682Ez2XjLu7MyQCo9BJNwF/nfOa1hHr3MaJEQ==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-react-refresh-wrap": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.5.0.tgz", + "integrity": "sha512-VPqVBxhTN4OQwcjsdyxrv+smjAm4s6dbSWAplgPwdOITMv+a0tjhhJU37WnRC+xxTrbEqRcOt96JvGOkPb8i7g==", + "dev": true, + "dependencies": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "react-refresh": "^0.9.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-svg": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.5.0.tgz", + "integrity": "sha512-zCGJcrCpICFe0Q/dgjQZfW7sYFkbJEC7NGT4zEJnMo8Cm/kq8Qh6+2ApX6c+vv5Q0WZn5Ic+N0OvxIMkvgdC/w==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-webextension": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-webextension/-/transformer-webextension-2.5.0.tgz", + "integrity": "sha512-rS469xp7iigGDd69JTO+NECyv0sMXwoTmkiGNgtfn3ffSrMu/pqa4koGkYV0uflaa61BRpBXjWI2LhRrZ/IwGA==", + "dev": true, + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "content-security-policy-parser": "^0.3.0" + }, + "engines": { + "parcel": "^2.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.5.0.tgz", + "integrity": "sha512-bA0fhG6aXSGYEVo5Dt96x6lseUQHeVZVzgmiRdZsvb614Gvx22ItfaKhPmAVbM9vzbObZDHl9l9G2Ovw8Xve4g==", + "dev": true, + "dependencies": { + "@parcel/cache": "2.5.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/fs": "2.5.0", + "@parcel/package-manager": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/workers": "2.5.0", + "utility-types": "^3.10.0" + } + }, + "node_modules/@parcel/utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.5.0.tgz", + "integrity": "sha512-kaLGXtQuOOH55KZqXdYDvczhh3mk2eeTVqrrXuuihGjbLKYFlUW2tFDm+5r2s9nCPwTQxOO43ZEOCKSnia+e4w==", + "dev": true, + "dependencies": { + "@parcel/codeframe": "2.5.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/markdown-ansi": "2.5.0", + "@parcel/source-map": "^2.0.0", + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz", + "integrity": "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/workers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.5.0.tgz", + "integrity": "sha512-/Ow5OKJWs+9OzV3Jy4J++VnbNx0j3ls/M1CGVBLiBWyCada9DMtquYoBQ4Sk6Uam50BKkIFYetGOeXPNQyyMjg==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "chrome-trace-event": "^1.0.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.5.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.13.tgz", + "integrity": "sha512-A1wswJhnqaLRn8uYVQ8YiNTtY5i/JIPmV08EXXjjTresIkUVUEUaFv/wXVhGXfRNYMvHPkuoMR1Nb6NgpxGjNg==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/webextension-polyfill": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/webextension-polyfill/-/webextension-polyfill-0.8.3.tgz", + "integrity": "sha512-GN+Hjzy9mXjWoXKmaicTegv3FJ0WFZ3aYz77Wk8TMp1IY3vEzvzj1vnsa0ggV7vMI1i+PUxe4qqnIJKCzf9aTg==", + "dev": true + }, + "node_modules/abortcontroller-polyfill": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", + "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001341", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", + "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/content-security-policy-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/content-security-policy-parser/-/content-security-policy-parser-0.3.0.tgz", + "integrity": "sha512-ub90B4t9EfDPv3DCH7vEwGe4tVMkSm4Ow1HsmvmEQwinDfpTEDmkuJVa5WpzHDTt2bUirNRZuzL6S0msASlJhg==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "dev": true + }, + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/htmlnano": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.2.tgz", + "integrity": "sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.1", + "posthtml": "^0.16.5", + "timsort": "^0.3.0" + }, + "peerDependencies": { + "cssnano": "^5.0.11", + "postcss": "^8.3.11", + "purgecss": "^4.0.3", + "relateurl": "^0.2.7", + "srcset": "^5.0.0", + "svgo": "^2.8.0", + "terser": "^5.10.0", + "uncss": "^0.17.3" + }, + "peerDependenciesMeta": { + "cssnano": { + "optional": true + }, + "postcss": { + "optional": true + }, + "purgecss": { + "optional": true + }, + "relateurl": { + "optional": true + }, + "srcset": { + "optional": true + }, + "svgo": { + "optional": true + }, + "terser": { + "optional": true + }, + "uncss": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha1-a+Fm0USCihMdaGiRuYPfYsOUkf8=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lmdb": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.2.4.tgz", + "integrity": "sha512-gto+BB2uEob8qRiTlOq+R3uX0YNHsX9mjxj9Sbdue/LIKqu6IlZjrsjKeGyOMquc/474GEqFyX2pdytpydp0rQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "msgpackr": "^1.5.4", + "nan": "^2.14.2", + "node-gyp-build": "^4.2.3", + "ordered-binary": "^1.2.4", + "weak-lru-cache": "^1.2.2" + } + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/msgpackr": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.5.7.tgz", + "integrity": "sha512-Hsa80i8W4BiObSMHslfnwC+CC1CYHZzoXJZn0+3EvoCEOgt3c5QlXhdcjgFk2aZxMgpV8aUFZqJyQUCIp4UrzA==", + "dev": true, + "optionalDependencies": { + "msgpackr-extract": "^1.1.4" + } + }, + "node_modules/msgpackr-extract": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-1.1.4.tgz", + "integrity": "sha512-WQbHvsThprXh+EqZYy+SQFEs7z6bNM7a0vgirwUfwUcphWGT2mdPcpyLCNiRsN6w5q5VKJUMblHY+tNEyceb9Q==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "^4.3.2" + }, + "optionalDependencies": { + "msgpackr-extract-darwin-arm64": "1.1.0", + "msgpackr-extract-darwin-x64": "1.1.0", + "msgpackr-extract-linux-arm": "1.1.0", + "msgpackr-extract-linux-arm64": "1.1.0", + "msgpackr-extract-linux-x64": "1.1.0", + "msgpackr-extract-win32-x64": "1.1.0" + } + }, + "node_modules/msgpackr-extract-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-s1kHoT12tS2cCQOv+Wl3I+/cYNJXBPtwQqGA+dPYoXmchhXiE0Nso+BIfvQ5PxbmAyjj54Q5o7PnLTqVquNfZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/msgpackr-extract-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-1.1.0.tgz", + "integrity": "sha512-yx/H/i12IKg4eWGu/eKdKzJD4jaYvvujQSaVmeOMCesbSQnWo5X6YR9TFjoiNoU9Aexk1KufzL9gW+1DozG1yw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/msgpackr-extract-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-1.1.0.tgz", + "integrity": "sha512-0VvSCqi12xpavxl14gMrauwIzHqHbmSChUijy/uo3mpjB1Pk4vlisKpZsaOZvNJyNKj0ACi5jYtbWnnOd7hYGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/msgpackr-extract-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-1.1.0.tgz", + "integrity": "sha512-AxFle3fHNwz2V4CYDIGFxI6o/ZuI0lBKg0uHI8EcCMUmDE5mVAUWYge5WXmORVvb8sVWyVgFlmi3MTu4Ve6tNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/msgpackr-extract-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-1.1.0.tgz", + "integrity": "sha512-O+XoyNFWpdB8oQL6O/YyzffPpmG5rTNrr1nKLW70HD2ENJUhcITzbV7eZimHPzkn8LAGls1tBaMTHQezTBpFOw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/msgpackr-extract-win32-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-1.1.0.tgz", + "integrity": "sha512-6AJdM5rNsL4yrskRfhujVSPEd6IBpgvsnIT/TPowKNLQ62iIdryizPY2PJNFiW3AJcY249AHEiDBXS1cTDPxzA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-4.3.2.tgz", + "integrity": "sha512-P5Ep3ISdmwcCkZIaBaQamQtWAG0facC89phWZgi5Z3hBU//J6S48OIvyZWSPPf6yQMklLZiqoosWAZUj7N+esA==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build-optional": "optional.js", + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "dev": true + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, + "node_modules/ordered-binary": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.2.5.tgz", + "integrity": "sha512-djRmZoEpOGvIRW7ufsCDHtvcUa18UC9TxnPbHhSVFZHsoyg0dtut1bWtBZ/fmxdPN62oWXrV6adM7NoWU+CneA==", + "dev": true + }, + "node_modules/parcel": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.5.0.tgz", + "integrity": "sha512-er0mj/BaMjWyzQ/jedLUi/LNAuQcFT8lCvoNqANF+jTaX9rohaBwxIvKVJVAZgyCnmyfbbldp496wPMW0R0+CA==", + "dev": true, + "dependencies": { + "@parcel/config-default": "2.5.0", + "@parcel/core": "2.5.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/events": "2.5.0", + "@parcel/fs": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/package-manager": "2.5.0", + "@parcel/reporter-cli": "2.5.0", + "@parcel/reporter-dev-server": "2.5.0", + "@parcel/utils": "2.5.0", + "chalk": "^4.1.0", + "commander": "^7.0.0", + "get-port": "^4.2.0", + "v8-compile-cache": "^2.0.0" + }, + "bin": { + "parcel": "lib/bin.js" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "dev": true, + "dependencies": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", + "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", + "dev": true, + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "dev": true, + "dependencies": { + "is-json": "^2.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml/node_modules/posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dev": true, + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true + }, + "node_modules/webextension-polyfill": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.9.0.tgz", + "integrity": "sha512-LTtHb0yR49xa9irkstDxba4GATDAcDw3ncnFH9RImoFwDlW47U95ME5sn5IiQX2ghfaECaf6xyXM8yvClIBkkw==", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/xxhash-wasm": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", + "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@lezer/common": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", + "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==", + "dev": true + }, + "@lezer/lr": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", + "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", + "dev": true, + "requires": { + "@lezer/common": "^0.15.0" + } + }, + "@mischnic/json-sourcemap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", + "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", + "dev": true, + "requires": { + "@lezer/common": "^0.15.7", + "@lezer/lr": "^0.15.4", + "json5": "^2.2.1" + } + }, + "@parcel/bundler-default": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.5.0.tgz", + "integrity": "sha512-7CJzE17SirCXjcRgBcnqWO/5EOA1raq/3OIKtT4cxbjpDQGHZpjpEEZiMNRpEpdNMxDSlsG8mAkXTYGL2VVWRw==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/cache": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.5.0.tgz", + "integrity": "sha512-3kOO3cZQv0FAKhrMHGLdb4Qtzpmy78Q6jPN3u8eCY4yqeDTnyQBZvWNHoyCm5WlmL8y6Q6REYMbETLxSH1ggAQ==", + "dev": true, + "requires": { + "@parcel/fs": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/utils": "2.5.0", + "lmdb": "2.2.4" + } + }, + "@parcel/codeframe": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.5.0.tgz", + "integrity": "sha512-qafqL8Vu2kr932cCWESoDEEoAeKVi7/xdzTBuhzEJng1AfmRT0rCbt/P4ao3RjiDyozPSjXsHOqM6GDZcto4eQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0" + } + }, + "@parcel/compressor-raw": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.5.0.tgz", + "integrity": "sha512-I5Zs+2f1ue4sTPdfT8BNsLfTZl48sMWLk2Io3elUJjH/SS9kO7ut5ChkuJtt77ZS35m0OF+ZCt3ICTJdnDG8eA==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0" + } + }, + "@parcel/config-default": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.5.0.tgz", + "integrity": "sha512-r30V61958SONvP9I8KV8s44ZOFq0H219VyFjPysraSabHjZ+KMaCTQOuqaDtUMa272sHUQkBcZxKYj5jYPJlZg==", + "dev": true, + "requires": { + "@parcel/bundler-default": "2.5.0", + "@parcel/compressor-raw": "2.5.0", + "@parcel/namer-default": "2.5.0", + "@parcel/optimizer-css": "2.5.0", + "@parcel/optimizer-htmlnano": "2.5.0", + "@parcel/optimizer-image": "2.5.0", + "@parcel/optimizer-svgo": "2.5.0", + "@parcel/optimizer-terser": "2.5.0", + "@parcel/packager-css": "2.5.0", + "@parcel/packager-html": "2.5.0", + "@parcel/packager-js": "2.5.0", + "@parcel/packager-raw": "2.5.0", + "@parcel/packager-svg": "2.5.0", + "@parcel/reporter-dev-server": "2.5.0", + "@parcel/resolver-default": "2.5.0", + "@parcel/runtime-browser-hmr": "2.5.0", + "@parcel/runtime-js": "2.5.0", + "@parcel/runtime-react-refresh": "2.5.0", + "@parcel/runtime-service-worker": "2.5.0", + "@parcel/transformer-babel": "2.5.0", + "@parcel/transformer-css": "2.5.0", + "@parcel/transformer-html": "2.5.0", + "@parcel/transformer-image": "2.5.0", + "@parcel/transformer-js": "2.5.0", + "@parcel/transformer-json": "2.5.0", + "@parcel/transformer-postcss": "2.5.0", + "@parcel/transformer-posthtml": "2.5.0", + "@parcel/transformer-raw": "2.5.0", + "@parcel/transformer-react-refresh-wrap": "2.5.0", + "@parcel/transformer-svg": "2.5.0" + } + }, + "@parcel/config-webextension": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/config-webextension/-/config-webextension-2.5.0.tgz", + "integrity": "sha512-q68VTZXeoDjF0zAw6iDSf4vC5vC2leeBctSSy/VXLn/1xiV51UWdU5t4E6zu0EAWVaHoRwo2kPvbr6fsISZnmg==", + "dev": true, + "requires": { + "@parcel/config-default": "2.5.0", + "@parcel/packager-webextension": "2.5.0", + "@parcel/runtime-webextension": "2.5.0", + "@parcel/transformer-raw": "2.5.0", + "@parcel/transformer-webextension": "2.5.0" + } + }, + "@parcel/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.5.0.tgz", + "integrity": "sha512-dygDmPsfAYJKTnUftcbEzjCik7AAaPbFvJW8ETYz8diyjkAG9y6hvCAZIrJE5pNOjFzg32en4v4UWv8Sqlzl9g==", + "dev": true, + "requires": { + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/cache": "2.5.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/events": "2.5.0", + "@parcel/fs": "2.5.0", + "@parcel/graph": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/package-manager": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "@parcel/workers": "2.5.0", + "abortcontroller-polyfill": "^1.1.9", + "base-x": "^3.0.8", + "browserslist": "^4.6.6", + "clone": "^2.1.1", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "json5": "^2.2.0", + "msgpackr": "^1.5.4", + "nullthrows": "^1.1.1", + "semver": "^5.7.1" + } + }, + "@parcel/css": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css/-/css-1.8.3.tgz", + "integrity": "sha512-6qUN4iicr8f9Q6UUZttwwHMzrb65BRX46PHWq0icA4KEmvmfR9cSYlp/hJH8F4stg3Wncx12Bnw+EuPf5OAEPQ==", + "dev": true, + "requires": { + "@parcel/css-darwin-arm64": "1.8.3", + "@parcel/css-darwin-x64": "1.8.3", + "@parcel/css-linux-arm-gnueabihf": "1.8.3", + "@parcel/css-linux-arm64-gnu": "1.8.3", + "@parcel/css-linux-arm64-musl": "1.8.3", + "@parcel/css-linux-x64-gnu": "1.8.3", + "@parcel/css-linux-x64-musl": "1.8.3", + "@parcel/css-win32-x64-msvc": "1.8.3", + "detect-libc": "^1.0.3" + } + }, + "@parcel/css-darwin-arm64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.8.3.tgz", + "integrity": "sha512-qh/Ig6GfVjGoiGSWjIYDo6Ghwmyy/9BXvYS1l3R+Bp50F300cq84Czfl6wxaL+aFmghdHzhjJuGfWmZlcYliPA==", + "dev": true, + "optional": true + }, + "@parcel/css-darwin-x64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-darwin-x64/-/css-darwin-x64-1.8.3.tgz", + "integrity": "sha512-gTUIoRgwyYr4UuH7sSn3gOuMlIshJBOJLmjL+E/mR5lqdYabguiKiRORvkrnb/gHBmOUF9re0RcTaFmJ2VOAlg==", + "dev": true, + "optional": true + }, + "@parcel/css-linux-arm-gnueabihf": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.8.3.tgz", + "integrity": "sha512-4P1r0BvL9dPz70py2xLg/jEvWJmKNyokPgafyrDP+GbpPTfH5NYJJkVRGo/TkKsp3Rv8SJhV9fdlpFKC6BI92A==", + "dev": true, + "optional": true + }, + "@parcel/css-linux-arm64-gnu": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.8.3.tgz", + "integrity": "sha512-1fUy94eaqdzum+C7bsYVF2AgxjLGR/qppArn/4HTQyydHR5QeV+Uoyqo5vdnO5Vclj8eQwlgR9OyAOlmzXxFDA==", + "dev": true, + "optional": true + }, + "@parcel/css-linux-arm64-musl": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.8.3.tgz", + "integrity": "sha512-ct1QRK5gAP8sO22NZ7RULZQB7dbHpou+WMa4z0LJb+Fho13a1JNw931vNHbeI5cRr1fCTDq76pz/+Valgetzcw==", + "dev": true, + "optional": true + }, + "@parcel/css-linux-x64-gnu": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.8.3.tgz", + "integrity": "sha512-pg/mahoogzjbaZcW76rrTZ64tEu8Wok4Gm0sW/dXHJEJD2QVJ6GxLP4UVNBuhaV0GrNFHggp9pcdhTtLGkKl/g==", + "dev": true, + "optional": true + }, + "@parcel/css-linux-x64-musl": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.8.3.tgz", + "integrity": "sha512-4Iwawy28HQ2yAgbuyR60bgO+8oE+OiWpE02eNjbgqnDpTsfmXFMt4l5OYgZwJJ7DlaZqm+/yO8RPMd+EzwtNzg==", + "dev": true, + "optional": true + }, + "@parcel/css-win32-x64-msvc": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.8.3.tgz", + "integrity": "sha512-vnHUdzIVjqONa5ALFzMJ3ZHt6NiaYTHW/lqzP+AR4l+bq+UTXD2Q75/RgirY5NYwdfy1VPy/jI82jAtLOCymkw==", + "dev": true, + "optional": true + }, + "@parcel/diagnostic": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.5.0.tgz", + "integrity": "sha512-KiMGGRpEV7wl5gjcxBKcgX84a+cG+IEn94gwy5LK3lENR09nuKShqqgKGAmj/17CobJgw1QNP94/H4Md+oxIWg==", + "dev": true, + "requires": { + "@mischnic/json-sourcemap": "^0.1.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.5.0.tgz", + "integrity": "sha512-Gc2LPwL1H34Ony5MENbKZg7wvCscZ4x9y7Fu92sfbdWpLo3K13hVtsX3TMIIgYt3B7R7OmO8yR880U2T+JfVkQ==", + "dev": true + }, + "@parcel/fs": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.5.0.tgz", + "integrity": "sha512-YYr14BWtx/bJ+hu6PPQQ6G/3omOTWgVqEw+UFI3iQH3P6+e0LRXW/Ja1yAcJeepGcTwIP0opnXZBQOm8PBQ2SA==", + "dev": true, + "requires": { + "@parcel/fs-search": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "@parcel/watcher": "^2.0.0", + "@parcel/workers": "2.5.0" + } + }, + "@parcel/fs-search": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.5.0.tgz", + "integrity": "sha512-uBONkz9ZCNSOqbPGWJY3MNl+pqBTfvzHH9+4UhzHEHPArvK2oD0+syYPVE60+zGrxybXTESYMCJp4bHvH6Z2hA==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3" + } + }, + "@parcel/graph": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.5.0.tgz", + "integrity": "sha512-qa2VtG08dJyTaWrxYAkMIlkoDRSPoiqLDNxxHKplkcxAjXBUw0/AkWaz82VO5r1G6jfOj+nM30ajH9uygZYwbw==", + "dev": true, + "requires": { + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/hash": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.5.0.tgz", + "integrity": "sha512-47JL0XpB7UvIW6Ijf8vv+yVMt9dLvB/lRlBHFmAkmovisueVMVbYD7smxVZnCSehD8UH8BcymKbMzyL5dimgoQ==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "xxhash-wasm": "^0.4.2" + } + }, + "@parcel/logger": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.5.0.tgz", + "integrity": "sha512-pT1L3ceH6trL1N3I3r2HawPjz/PCubOo/Kazu7IeXsMsKVjj1a6AeieZHzkNZIbhiGPtm/cHbBNLz2zTWDLeOA==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/events": "2.5.0" + } + }, + "@parcel/markdown-ansi": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.5.0.tgz", + "integrity": "sha512-ixkNF3KWIqxMlfxTe9Gb2cp/uNmklQev8VEUxujMVxmUfGyQs4859zdJIQlIinabWYhArhsXATkVf3MzCUN6TQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0" + } + }, + "@parcel/namer-default": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.5.0.tgz", + "integrity": "sha512-ahGQqHJzsWE5Qux8zXMAU+lyNBOl+ZpcOFzRGE2DWOsmAlytsHl7DBVCQvzUyNBFg1/HmIj+7D4efv2kjR7rTg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/node-resolver-core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.5.0.tgz", + "integrity": "sha512-XQvpguiIwQcu75cscLDFOVhjsjuPzXbuMaaZ7XxxUEl0PscIgu/GfKYxTfTruN3cRl+CaQH6qBAMfjLaFng6lQ==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/optimizer-css": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.5.0.tgz", + "integrity": "sha512-J00bLF+4SsnKc+YbYrNuBr44/zz3cg++CoXteXhH27PxP1rScGQx36Rui8WORgil5mlX2VYN79DuqJC7V3Ynbg==", + "dev": true, + "requires": { + "@parcel/css": "^1.8.1", + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "browserslist": "^4.6.6", + "nullthrows": "^1.1.1" + } + }, + "@parcel/optimizer-htmlnano": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.5.0.tgz", + "integrity": "sha512-Fr0zPqgxoNaOVdROAjNGDWCts3+wByNQ82Mxhu8Tzc25A2cPjcr1H2sa/TE3hf79c92DxdKf2FaC1ZOgR5YPdg==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "htmlnano": "^2.0.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "svgo": "^2.4.0" + } + }, + "@parcel/optimizer-image": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.5.0.tgz", + "integrity": "sha512-nbo2pdnAt21WLGjzTpsE8ZEL0xNoP7c3wBj9y70Pysmasg1SrRVCbfE8jTy+lHBQwq2yjC6lV/Usv+9lfA7S/w==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "@parcel/workers": "2.5.0", + "detect-libc": "^1.0.3" + } + }, + "@parcel/optimizer-svgo": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.5.0.tgz", + "integrity": "sha512-pgZqwU0RLc/wr4WcQY/W1GJmddnEANDEpz1mdppUOqBz1EfTQ7zh5NgUA3hV1i05Hbecp3mHSvXJPV0mhNOl5Q==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "svgo": "^2.4.0" + } + }, + "@parcel/optimizer-terser": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.5.0.tgz", + "integrity": "sha512-PZ3UHBGfjE49/Jloopsd38Hxg4qzsrdepWP53mCuVP7Aw605Y4QtYuB1ho3VV0oXfKQVq+uI7lVIBsuW4K6vqA==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1", + "terser": "^5.2.0" + } + }, + "@parcel/package-manager": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.5.0.tgz", + "integrity": "sha512-zTuF55/lITUjw9dUU/X0HiF++589xbPXw/zUiG9T6s8BQThLvrxAhYP89S719pw7cTqDimGkTxnIuK+a0djEkg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/fs": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "@parcel/workers": "2.5.0", + "semver": "^5.7.1" + } + }, + "@parcel/packager-css": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.5.0.tgz", + "integrity": "sha512-c0mGBFdVSPhAxaX3+zN8KEIqOOUhkIPKbZex1pnGYfy03Qe2/Mb4nyt5DAGlw9gjka1UCHIN/wszLmKC8YyUeg==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/packager-html": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.5.0.tgz", + "integrity": "sha512-ZFGUPRMWKrm8kQHdkEJ5S22C05qpSymx+o+57EfuNjCrGyj3M59WyGYYXYJ175bFYZ/jp5yy+VxMh6fZefe+Pw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5" + } + }, + "@parcel/packager-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.5.0.tgz", + "integrity": "sha512-aJAKOTgXdxO3V9O7+2DCVOtne128WwXmUAOVThnMRo7f3zMVSAR7Mxc9pEsuTzPfj8UBXgFBRfdJUSCgsMxiSw==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "globals": "^13.2.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/packager-raw": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.5.0.tgz", + "integrity": "sha512-aHV0oogeiqxhxS1lsttw15EvG3DDWK3FV7+F+7hoaAy+xg89K56NTp6j43Jtw9iyU1/HnZRGBE2hF3C7N73oKw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0" + } + }, + "@parcel/packager-svg": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.5.0.tgz", + "integrity": "sha512-XSMFn30K/kpjcPpQqt88GmPJsNUSVL3RNeigXkIAcLpfO6Tb2eV4iOt4yVCagaDrRJ19alXut0TxjMm5bm41/g==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "posthtml": "^0.16.4" + } + }, + "@parcel/packager-webextension": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/packager-webextension/-/packager-webextension-2.5.0.tgz", + "integrity": "sha512-70ofhs83a/iZ3bq1T4qQiVoZEbR4aQmc/svAinNEJ5GHdur9/rCTDM6pPG8xwrQx6I2b8y8knRe3uC1B6BH6nQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/plugin": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.5.0.tgz", + "integrity": "sha512-obtb6/Gql6YFQ86bdv75A2Noabx8679reFZeyfKKf0L7Lppx4DFQetXwM9XVy7Gx6hJ1Ekm3UMuuIyVJk33YHQ==", + "dev": true, + "requires": { + "@parcel/types": "2.5.0" + } + }, + "@parcel/reporter-cli": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.5.0.tgz", + "integrity": "sha512-miJt2YbRJBmYSVeoUWUj8YL85Pwj1CmGQB0/btqhulGLH/Fvkbv6T4sJ4gl4l5xIt9mJQsZ70pOWwa8BId3rWw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "chalk": "^4.1.0", + "term-size": "^2.2.1" + } + }, + "@parcel/reporter-dev-server": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.5.0.tgz", + "integrity": "sha512-wvxAiW42AxJ3B8jtvowJcP4/cTV8zY48SfKg61YKYu1yUO+TtyJIjHQzDW2XuT34cIGFY97Gr0i+AVu44RyUuQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0" + } + }, + "@parcel/resolver-default": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.5.0.tgz", + "integrity": "sha512-39PkZpVr/+iYS11u+lA84vIsKm/yisltTVmUjlYsDnExiuV1c8OSbSdYZ3JMx+7CYPE0bWbosX2AGilIwIMWpQ==", + "dev": true, + "requires": { + "@parcel/node-resolver-core": "2.5.0", + "@parcel/plugin": "2.5.0" + } + }, + "@parcel/runtime-browser-hmr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.5.0.tgz", + "integrity": "sha512-oPAo8Zf06gXCpt41nyvK7kv2HH1RrHAGgOqttyjStwAFlm5MZKs7BgtJzO58LfJN8g3sMY0cNdG17fB/4f8q6Q==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0" + } + }, + "@parcel/runtime-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.5.0.tgz", + "integrity": "sha512-gPC2PbNAiooULP71wF5twe4raekuXsR1Hw/ahITDoqsZdXHzG3CkoCjYL3CkmBGiKQgMMocCyN1E2oBzAH8Kyw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/runtime-react-refresh": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.5.0.tgz", + "integrity": "sha512-+8RuDKFdFYIQTrXG4MRhG9XqkkYEHn0zxKyOJ/IkDDfSEhY0na+EyhrneFUwIvDX63gLPkxceXAg0gwBqXPK/Q==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "react-refresh": "^0.9.0" + } + }, + "@parcel/runtime-service-worker": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.5.0.tgz", + "integrity": "sha512-STuDlU0fPXeWpAmbayY7o04F0eHy6FTOFeT5KQ0PTxtdEa3Ey8QInP/NVE52Yv0aVQtesWukGrNEFCERlkbFRw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/runtime-webextension": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/runtime-webextension/-/runtime-webextension-2.5.0.tgz", + "integrity": "sha512-WaLxOccP+Q8YQnhaFt4T1iFQkUHvNfi3phrDikURsWXusfq/l7+Cmb4JSmGX4Hcm51827zO4YAf7k3geuKvKrA==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/source-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.0.2.tgz", + "integrity": "sha512-NnUrPYLpYB6qyx2v6bcRPn/gVigmGG6M6xL8wIg/i0dP1GLkuY1nf+Hqdf63FzPTqqT7K3k6eE5yHPQVMO5jcA==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3" + } + }, + "@parcel/transformer-babel": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.5.0.tgz", + "integrity": "sha512-EFb866C9jCoBHIcebWF7goAcYj1wkObx0GDxshlazFtvym1RM27xSWWjRYyqb5+HNOxB3voaNvQOVjcD+DXjCA==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "browserslist": "^4.6.6", + "json5": "^2.2.0", + "nullthrows": "^1.1.1", + "semver": "^5.7.0" + } + }, + "@parcel/transformer-css": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.5.0.tgz", + "integrity": "sha512-p8FOvKWWSbS6H8PbD9a0KZqyaKNpSD2BUTzSRYnNj3TBUv7/ZXaP6Om295XTQ/MPht1o7XTQzvfpF/7yEhr02Q==", + "dev": true, + "requires": { + "@parcel/css": "^1.8.1", + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "browserslist": "^4.6.6", + "nullthrows": "^1.1.1" + } + }, + "@parcel/transformer-html": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.5.0.tgz", + "integrity": "sha512-iEjNyAF0wQmY3DMw7FS+UzoOMng76UsSngh+WWA1E5lv5XyqrP8Mk2QLTJp1nWetUhSLhZr58LGmPYBTB4l9ZQ==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-image": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.5.0.tgz", + "integrity": "sha512-vVEXTHZl8m/9yopgK0dWHLOQX2zOnghq6pZnWdWVG6fsvXZln7kP1YN5iwWDoADQYkiKzP+Ymn6UwP9pZpHFzA==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/workers": "2.5.0", + "nullthrows": "^1.1.1" + } + }, + "@parcel/transformer-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.5.0.tgz", + "integrity": "sha512-Cp8Ic+Au3OcskCRZszmo47z3bqcZ7rfPv2xZYXpXY2TzEc3IV0bKje57bZektoY8LW9LkYM9iBO/WhkVoT6LIg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/utils": "2.5.0", + "@parcel/workers": "2.5.0", + "@swc/helpers": "^0.3.6", + "browserslist": "^4.6.6", + "detect-libc": "^1.0.3", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.13.7", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-json": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.5.0.tgz", + "integrity": "sha512-661sByA7TkR6Lmxt+hqV4h2SAt+7lgc58DzmUYArpEl1fQnMuQuaB0kQeHzi6fDD2+2G6o7EC+DuwBZKa479TA==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "json5": "^2.2.0" + } + }, + "@parcel/transformer-postcss": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.5.0.tgz", + "integrity": "sha512-IPNlWElekdQHMTBqhdwJNBCQomuYyo7xgNBdnTrt9VJ+R5ihy6n7ZJSWIAJXAH9VZxETTtunfrzRtgkmtjTeZQ==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "clone": "^2.1.1", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-posthtml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.5.0.tgz", + "integrity": "sha512-AZxg1XD8OXOS4bEGEmBBR+X9T9qoFdVsbVUg498zzejYSka1ZQHF7TgLI/+pUnE+ZVYNIp7/G0xXqsRVKMKmdQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-raw": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.5.0.tgz", + "integrity": "sha512-I3zjE1u9+Wj90Qqs1V2FTm6iC6SAyOVUthwVZkZey+qbQG/ok682Ez2XjLu7MyQCo9BJNwF/nfOa1hHr3MaJEQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0" + } + }, + "@parcel/transformer-react-refresh-wrap": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.5.0.tgz", + "integrity": "sha512-VPqVBxhTN4OQwcjsdyxrv+smjAm4s6dbSWAplgPwdOITMv+a0tjhhJU37WnRC+xxTrbEqRcOt96JvGOkPb8i7g==", + "dev": true, + "requires": { + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "react-refresh": "^0.9.0" + } + }, + "@parcel/transformer-svg": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.5.0.tgz", + "integrity": "sha512-zCGJcrCpICFe0Q/dgjQZfW7sYFkbJEC7NGT4zEJnMo8Cm/kq8Qh6+2ApX6c+vv5Q0WZn5Ic+N0OvxIMkvgdC/w==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/plugin": "2.5.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^5.7.1" + } + }, + "@parcel/transformer-webextension": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/transformer-webextension/-/transformer-webextension-2.5.0.tgz", + "integrity": "sha512-rS469xp7iigGDd69JTO+NECyv0sMXwoTmkiGNgtfn3ffSrMu/pqa4koGkYV0uflaa61BRpBXjWI2LhRrZ/IwGA==", + "dev": true, + "requires": { + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/plugin": "2.5.0", + "@parcel/utils": "2.5.0", + "content-security-policy-parser": "^0.3.0" + } + }, + "@parcel/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.5.0.tgz", + "integrity": "sha512-bA0fhG6aXSGYEVo5Dt96x6lseUQHeVZVzgmiRdZsvb614Gvx22ItfaKhPmAVbM9vzbObZDHl9l9G2Ovw8Xve4g==", + "dev": true, + "requires": { + "@parcel/cache": "2.5.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/fs": "2.5.0", + "@parcel/package-manager": "2.5.0", + "@parcel/source-map": "^2.0.0", + "@parcel/workers": "2.5.0", + "utility-types": "^3.10.0" + } + }, + "@parcel/utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.5.0.tgz", + "integrity": "sha512-kaLGXtQuOOH55KZqXdYDvczhh3mk2eeTVqrrXuuihGjbLKYFlUW2tFDm+5r2s9nCPwTQxOO43ZEOCKSnia+e4w==", + "dev": true, + "requires": { + "@parcel/codeframe": "2.5.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/hash": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/markdown-ansi": "2.5.0", + "@parcel/source-map": "^2.0.0", + "chalk": "^4.1.0" + } + }, + "@parcel/watcher": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.5.tgz", + "integrity": "sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==", + "dev": true, + "requires": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + } + }, + "@parcel/workers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.5.0.tgz", + "integrity": "sha512-/Ow5OKJWs+9OzV3Jy4J++VnbNx0j3ls/M1CGVBLiBWyCada9DMtquYoBQ4Sk6Uam50BKkIFYetGOeXPNQyyMjg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/types": "2.5.0", + "@parcel/utils": "2.5.0", + "chrome-trace-event": "^1.0.2", + "nullthrows": "^1.1.1" + } + }, + "@swc/helpers": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.13.tgz", + "integrity": "sha512-A1wswJhnqaLRn8uYVQ8YiNTtY5i/JIPmV08EXXjjTresIkUVUEUaFv/wXVhGXfRNYMvHPkuoMR1Nb6NgpxGjNg==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/webextension-polyfill": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/webextension-polyfill/-/webextension-polyfill-0.8.3.tgz", + "integrity": "sha512-GN+Hjzy9mXjWoXKmaicTegv3FJ0WFZ3aYz77Wk8TMp1IY3vEzvzj1vnsa0ggV7vMI1i+PUxe4qqnIJKCzf9aTg==", + "dev": true + }, + "abortcontroller-polyfill": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", + "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==", + "dev": true + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001341", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", + "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "content-security-policy-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/content-security-policy-parser/-/content-security-policy-parser-0.3.0.tgz", + "integrity": "sha512-ub90B4t9EfDPv3DCH7vEwGe4tVMkSm4Ow1HsmvmEQwinDfpTEDmkuJVa5WpzHDTt2bUirNRZuzL6S0msASlJhg==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "dev": true + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "htmlnano": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.2.tgz", + "integrity": "sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.1", + "posthtml": "^0.16.5", + "timsort": "^0.3.0" + } + }, + "htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha1-a+Fm0USCihMdaGiRuYPfYsOUkf8=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "lmdb": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.2.4.tgz", + "integrity": "sha512-gto+BB2uEob8qRiTlOq+R3uX0YNHsX9mjxj9Sbdue/LIKqu6IlZjrsjKeGyOMquc/474GEqFyX2pdytpydp0rQ==", + "dev": true, + "requires": { + "msgpackr": "^1.5.4", + "nan": "^2.14.2", + "node-gyp-build": "^4.2.3", + "ordered-binary": "^1.2.4", + "weak-lru-cache": "^1.2.2" + } + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "msgpackr": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.5.7.tgz", + "integrity": "sha512-Hsa80i8W4BiObSMHslfnwC+CC1CYHZzoXJZn0+3EvoCEOgt3c5QlXhdcjgFk2aZxMgpV8aUFZqJyQUCIp4UrzA==", + "dev": true, + "requires": { + "msgpackr-extract": "^1.1.4" + } + }, + "msgpackr-extract": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-1.1.4.tgz", + "integrity": "sha512-WQbHvsThprXh+EqZYy+SQFEs7z6bNM7a0vgirwUfwUcphWGT2mdPcpyLCNiRsN6w5q5VKJUMblHY+tNEyceb9Q==", + "dev": true, + "optional": true, + "requires": { + "msgpackr-extract-darwin-arm64": "1.1.0", + "msgpackr-extract-darwin-x64": "1.1.0", + "msgpackr-extract-linux-arm": "1.1.0", + "msgpackr-extract-linux-arm64": "1.1.0", + "msgpackr-extract-linux-x64": "1.1.0", + "msgpackr-extract-win32-x64": "1.1.0", + "node-gyp-build-optional-packages": "^4.3.2" + } + }, + "msgpackr-extract-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-s1kHoT12tS2cCQOv+Wl3I+/cYNJXBPtwQqGA+dPYoXmchhXiE0Nso+BIfvQ5PxbmAyjj54Q5o7PnLTqVquNfZA==", + "dev": true, + "optional": true + }, + "msgpackr-extract-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-1.1.0.tgz", + "integrity": "sha512-yx/H/i12IKg4eWGu/eKdKzJD4jaYvvujQSaVmeOMCesbSQnWo5X6YR9TFjoiNoU9Aexk1KufzL9gW+1DozG1yw==", + "dev": true, + "optional": true + }, + "msgpackr-extract-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-1.1.0.tgz", + "integrity": "sha512-0VvSCqi12xpavxl14gMrauwIzHqHbmSChUijy/uo3mpjB1Pk4vlisKpZsaOZvNJyNKj0ACi5jYtbWnnOd7hYGw==", + "dev": true, + "optional": true + }, + "msgpackr-extract-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-1.1.0.tgz", + "integrity": "sha512-AxFle3fHNwz2V4CYDIGFxI6o/ZuI0lBKg0uHI8EcCMUmDE5mVAUWYge5WXmORVvb8sVWyVgFlmi3MTu4Ve6tNQ==", + "dev": true, + "optional": true + }, + "msgpackr-extract-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-1.1.0.tgz", + "integrity": "sha512-O+XoyNFWpdB8oQL6O/YyzffPpmG5rTNrr1nKLW70HD2ENJUhcITzbV7eZimHPzkn8LAGls1tBaMTHQezTBpFOw==", + "dev": true, + "optional": true + }, + "msgpackr-extract-win32-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-1.1.0.tgz", + "integrity": "sha512-6AJdM5rNsL4yrskRfhujVSPEd6IBpgvsnIT/TPowKNLQ62iIdryizPY2PJNFiW3AJcY249AHEiDBXS1cTDPxzA==", + "dev": true, + "optional": true + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true + }, + "node-gyp-build-optional-packages": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-4.3.2.tgz", + "integrity": "sha512-P5Ep3ISdmwcCkZIaBaQamQtWAG0facC89phWZgi5Z3hBU//J6S48OIvyZWSPPf6yQMklLZiqoosWAZUj7N+esA==", + "dev": true, + "optional": true + }, + "node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "dev": true + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, + "ordered-binary": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.2.5.tgz", + "integrity": "sha512-djRmZoEpOGvIRW7ufsCDHtvcUa18UC9TxnPbHhSVFZHsoyg0dtut1bWtBZ/fmxdPN62oWXrV6adM7NoWU+CneA==", + "dev": true + }, + "parcel": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.5.0.tgz", + "integrity": "sha512-er0mj/BaMjWyzQ/jedLUi/LNAuQcFT8lCvoNqANF+jTaX9rohaBwxIvKVJVAZgyCnmyfbbldp496wPMW0R0+CA==", + "dev": true, + "requires": { + "@parcel/config-default": "2.5.0", + "@parcel/core": "2.5.0", + "@parcel/diagnostic": "2.5.0", + "@parcel/events": "2.5.0", + "@parcel/fs": "2.5.0", + "@parcel/logger": "2.5.0", + "@parcel/package-manager": "2.5.0", + "@parcel/reporter-cli": "2.5.0", + "@parcel/reporter-dev-server": "2.5.0", + "@parcel/utils": "2.5.0", + "chalk": "^4.1.0", + "commander": "^7.0.0", + "get-port": "^4.2.0", + "v8-compile-cache": "^2.0.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "dev": true, + "requires": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "dependencies": { + "posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dev": true, + "requires": { + "htmlparser2": "^7.1.1" + } + } + } + }, + "posthtml-parser": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", + "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", + "dev": true, + "requires": { + "htmlparser2": "^7.1.1" + } + }, + "posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "dev": true, + "requires": { + "is-json": "^2.0.1" + } + }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + }, + "term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true + }, + "terser": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } + } + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true + }, + "utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true + }, + "webextension-polyfill": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.9.0.tgz", + "integrity": "sha512-LTtHb0yR49xa9irkstDxba4GATDAcDw3ncnFH9RImoFwDlW47U95ME5sn5IiQX2ghfaECaf6xyXM8yvClIBkkw==", + "dev": true + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "xxhash-wasm": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", + "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..09d25ec --- /dev/null +++ b/package.json @@ -0,0 +1,38 @@ +{ + "name": "ttv-lol", + "version": "1.0.0-younesaassila", + "description": "TTV LOL removes livestream ads from twitch.tv", + "targets": { + "webext-dev": { + "sourceMap": { + "inline": true, + "inlineSources": true + } + }, + "webext-prod": {} + }, + "scripts": { + "dev": "parcel src/manifest.json --host localhost --target webext-dev", + "lint": "prettier --write ./src", + "build": "parcel build src/manifest.json --target webext-prod" + }, + "keywords": [ + "twitch", + "web-extension", + "adblocker" + ], + "author": "TTV-LOL (https://github.com/TTV-LOL)", + "contributors": [ + "Younes Aassila (https://github.com/younesaassila)" + ], + "license": "UNLICENSED", + "devDependencies": { + "@parcel/config-webextension": "^2.5.0", + "@types/webextension-polyfill": "^0.8.3", + "parcel": "^2.5.0", + "prettier": "^2.6.2", + "typescript": "^4.6.4", + "webextension-polyfill": "^0.9.0" + }, + "private": true +} diff --git a/src/common/css/styles.css b/src/common/css/styles.css new file mode 100644 index 0000000..d1a9e0c --- /dev/null +++ b/src/common/css/styles.css @@ -0,0 +1,70 @@ +html, +body { + width: 300px; +} + +html { + background: #151619; + color: #c9cbcd; + font-family: Open Sans, Segoe UI, sans-serif; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +.container { + text-align: center; + padding-bottom: 10px; +} + +.button-group { + display: flex; + justify-content: center; +} + +.button { + border-radius: 6px; + color: #c3c4ca; + font-weight: bold; + padding: 10px 20px; + text-decoration: none; + transition: all 150ms ease-in-out; +} +.button:hover { + background-color: #1d1f23; +} +.button:not(:first-of-type) { + margin-left: 15px; +} +.discord { + overflow: visible; + margin-right: 3px; + display: inline-block; +} +.button-arrow .arrow-icon { + overflow: visible; + margin-left: 3px; + margin-bottom: -2px; + width: 8px; +} +.icon { + margin-bottom: -3px; +} +.buton-text { + margin-bottom: 10px; +} +.button-arrow .arrow-head { + transform: translateX(0); + transition: transform 150ms ease-in-out; +} +.button-arrow .arrow-body { + opacity: 0; + transform: scaleX(1); + transition: transform 150ms ease-in-out, opacity 150ms ease-in-out; +} +.button-arrow:hover .arrow-head { + transform: translateX(3px); +} +.button-arrow:hover .arrow-body { + opacity: 1; + transform: scaleX(2); +} diff --git a/firefox/common/html/popup.html b/src/common/html/popup.html similarity index 100% rename from firefox/common/html/popup.html rename to src/common/html/popup.html diff --git a/chrome/common/img/logo.png b/src/common/img/logo.png similarity index 100% rename from chrome/common/img/logo.png rename to src/common/img/logo.png diff --git a/chrome/common/img/ttvlol.png b/src/common/img/ttvlol.png similarity index 100% rename from chrome/common/img/ttvlol.png rename to src/common/img/ttvlol.png diff --git a/chrome/images/icon.png b/src/images/icon.png similarity index 100% rename from chrome/images/icon.png rename to src/images/icon.png diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..72211d3 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,27 @@ +{ + "manifest_version": 2, + "name": "TTV LOL (Younes Aassila's Fork)", + "description": "TTV LOL removes livestream ads from twitch.tv", + "version": "1.0.0", + "background": { + "persistent": true, + "scripts": ["ts/background.ts"] + }, + "browser_action": { + "default_icon": { + "128": "images/icon.png" + }, + "default_title": "TTV LOL", + "default_popup": "common/html/popup.html" + }, + "icons": { + "128": "images/icon.png" + }, + "permissions": [ + "webRequest", + "webRequestBlocking", + "https://*.twitch.tv/*", + "https://usher.ttvnw.net/*", + "https://api.ttv.lol/*" + ] +} diff --git a/src/ts/background.ts b/src/ts/background.ts new file mode 100644 index 0000000..0eb777b --- /dev/null +++ b/src/ts/background.ts @@ -0,0 +1,59 @@ +import browser, { WebRequest } from "webextension-polyfill"; +import { PlaylistType } from "../types"; + +function onBeforeRequest(details: WebRequest.OnBeforeRequestDetailsType) { + const match = /(hls|vod)\/(.+?)$/gim.exec(details.url); + if (match == null) return {}; + + const [_, type, path] = match; + if (type == null || path == null) return {}; + + const playlistType = + type.toLowerCase() === "vod" ? PlaylistType.VOD : PlaylistType.Playlist; + + // Synchronous XMLHttpRequest is required for the plugin to work in Chrome. + const request = new XMLHttpRequest(); + request.open("GET", `https://api.ttv.lol/ping`, false); + request.send(); + + if (request.status === 200) { + console.info("[TTV LOL] Successfully pinged TTV LOL's server."); + return { + redirectUrl: `https://api.ttv.lol/${playlistType}/${encodeURIComponent( + path + )}`, + }; + } else { + return {}; + } +} + +browser.webRequest.onBeforeRequest.addListener( + onBeforeRequest, + { + urls: [ + "https://usher.ttvnw.net/api/channel/hls/*", + "https://usher.ttvnw.net/vod/*", + ], + }, + ["blocking"] +); + +function onBeforeSendHeaders( + details: WebRequest.OnBeforeSendHeadersDetailsType +) { + console.log(`[TTV LOL] ${details.method} ${details.url}`); + details.requestHeaders.push({ + name: "X-Donate-To", + value: "https://ttv.lol/donate", + }); + return { + requestHeaders: details.requestHeaders, + }; +} + +browser.webRequest.onBeforeSendHeaders.addListener( + onBeforeSendHeaders, + { urls: ["https://api.ttv.lol/playlist/*", "https://api.ttv.lol/vod/*"] }, + ["blocking", "requestHeaders"] +); diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..b55e7c1 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,4 @@ +export enum PlaylistType { + Playlist = "playlist", + VOD = "vod", +}