From 66278177cd39cc3d62c7d14cd50bd8fb2bd0d447 Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Wed, 17 Apr 2024 17:25:52 +0400 Subject: [PATCH 001/136] =?UTF-8?q?initial=20commit=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contracts/src/bridge/frontend/.eslintrc.json | 3 + contracts/src/bridge/frontend/.gitignore | 36 + contracts/src/bridge/frontend/README.md | 65 + contracts/src/bridge/frontend/components.json | 16 + contracts/src/bridge/frontend/env.example | 2 + contracts/src/bridge/frontend/next.config.js | 9 + .../src/bridge/frontend/package-lock.json | 12594 ++++++++++++++++ contracts/src/bridge/frontend/package.json | 58 + contracts/src/bridge/frontend/pages/_app.tsx | 93 + .../src/bridge/frontend/pages/_document.tsx | 13 + .../src/bridge/frontend/pages/_error.tsx | 91 + .../src/bridge/frontend/postcss.config.js | 6 + .../fonts/DMSans/DMSans-BlackItalic.ttf | Bin 0 -> 61236 bytes .../styles/fonts/DMSans/DMSans-Bold.ttf | Bin 0 -> 56272 bytes .../styles/fonts/DMSans/DMSans-Light.ttf | Bin 0 -> 56336 bytes .../styles/fonts/DMSans/DMSans-Medium.ttf | Bin 0 -> 56380 bytes .../styles/fonts/DMSans/DMSans-Regular.ttf | Bin 0 -> 56352 bytes .../styles/fonts/DMSans/DMSans-SemiBold.ttf | Bin 0 -> 56340 bytes .../styles/fonts/DMSans/stylesheet.css | 47 + .../styles/fonts/Quicksand/Quicksand-Bold.ttf | Bin 0 -> 78596 bytes .../fonts/Quicksand/Quicksand-Light.ttf | Bin 0 -> 78660 bytes .../fonts/Quicksand/Quicksand-Medium.ttf | Bin 0 -> 78948 bytes .../fonts/Quicksand/Quicksand-Regular.ttf | Bin 0 -> 78936 bytes .../fonts/Quicksand/Quicksand-SemiBold.ttf | Bin 0 -> 78820 bytes .../styles/fonts/Quicksand/stylesheet.css | 39 + .../bridge/frontend/styles/fonts/README.txt | 4 + .../src/bridge/frontend/styles/globals.css | 211 + .../src/bridge/frontend/tailwind.config.js | 98 + .../src/bridge/frontend/tailwind.config.ts | 101 + contracts/src/bridge/frontend/tsconfig.json | 27 + 30 files changed, 13513 insertions(+) create mode 100644 contracts/src/bridge/frontend/.eslintrc.json create mode 100644 contracts/src/bridge/frontend/.gitignore create mode 100644 contracts/src/bridge/frontend/README.md create mode 100644 contracts/src/bridge/frontend/components.json create mode 100644 contracts/src/bridge/frontend/env.example create mode 100644 contracts/src/bridge/frontend/next.config.js create mode 100644 contracts/src/bridge/frontend/package-lock.json create mode 100644 contracts/src/bridge/frontend/package.json create mode 100644 contracts/src/bridge/frontend/pages/_app.tsx create mode 100644 contracts/src/bridge/frontend/pages/_document.tsx create mode 100644 contracts/src/bridge/frontend/pages/_error.tsx create mode 100644 contracts/src/bridge/frontend/postcss.config.js create mode 100644 contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-BlackItalic.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Bold.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Light.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Medium.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Regular.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-SemiBold.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/DMSans/stylesheet.css create mode 100644 contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Bold.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Light.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Medium.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Regular.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-SemiBold.ttf create mode 100644 contracts/src/bridge/frontend/styles/fonts/Quicksand/stylesheet.css create mode 100644 contracts/src/bridge/frontend/styles/fonts/README.txt create mode 100644 contracts/src/bridge/frontend/styles/globals.css create mode 100644 contracts/src/bridge/frontend/tailwind.config.js create mode 100644 contracts/src/bridge/frontend/tailwind.config.ts create mode 100644 contracts/src/bridge/frontend/tsconfig.json diff --git a/contracts/src/bridge/frontend/.eslintrc.json b/contracts/src/bridge/frontend/.eslintrc.json new file mode 100644 index 0000000000..bffb357a71 --- /dev/null +++ b/contracts/src/bridge/frontend/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/contracts/src/bridge/frontend/.gitignore b/contracts/src/bridge/frontend/.gitignore new file mode 100644 index 0000000000..fd3dbb571a --- /dev/null +++ b/contracts/src/bridge/frontend/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/contracts/src/bridge/frontend/README.md b/contracts/src/bridge/frontend/README.md new file mode 100644 index 0000000000..0bc7fa7cc4 --- /dev/null +++ b/contracts/src/bridge/frontend/README.md @@ -0,0 +1,65 @@ +# Bridge: Bridge for The Encryption Network (TEN) + + + +The Ten Bridge is a decentralized bridge that allows users to move assets between the Ethereum network and the TEN network. The bridge is a critical component of the TEN ecosystem, enabling users to move assets between the two networks seamlessly. + +For more information on the TEN bridge, please refer to the [TEN Bridge Documentation](https://docs.ten.xyz/bridge). + +## Folder Structure + +``` +📁 Bridge +├── 📁 pages - Typically used for Next.js pages. Each .tsx or .js file in this directory becomes a route in your application +├── 📁 public - This directory is used to serve static assets. Files inside this directory can be referenced in your code with a URL path +├── 📁 src - Main source code directory for this project +│ ├── 📁 components - Contains reusable React components used throughout the application +│ ├── 📁 hooks - Custom React hooks that can be shared and reused across components +│ ├── 📁 lib - Utility functions or modules that provide common functionalities across the application +│ ├── 📁 routes - Route-related logic or configuration can be placed in this directory +│ ├── 📁 services - Used for services that interact with external APIs or handle other data-related tasks +│ └── 📁 types - Type definitions (.d.ts files or TypeScript files) for TypeScript, describing the shape of data and objects used in the application +└── 📁 styles - Global styles, stylesheets, or styling-related configurations for this project +``` + +## Getting Started + +1. **Clone the Repository:** + ```bash + git clone https://github.com/ten-protocol/go-ten.git + cd go-ten/tools/tenscan/frontend + ``` + +2. **Install Dependencies:** + ```bash + npm install + ``` + +3. **Run the Development Server:** + ```bash + npm run dev + ``` + + The application will be accessible at [http://localhost:3000](http://localhost:3000). + +## Usage + +- Visit the different sections of the explorer through the navigation links in the UI. +- Explore the different blocks, transactions, batches, resources, and personal data on the TEN. +- View the details of each batch by their hash. + +## Built With + +- [Next.js](https://nextjs.org/) +- [Tailwind CSS](https://tailwindcss.com/) +- [Shadcn-UI](https://shadcn.com/) +- [TypeScript](https://www.typescriptlang.org/) + + +## Contributing + +Contributions are welcome! Please follow our [contribution guidelines](/docs/_docs/community/contributions.md). + +## License + +This project is licensed under the [GNU Affero General Public License v3.0](/LICENSE). \ No newline at end of file diff --git a/contracts/src/bridge/frontend/components.json b/contracts/src/bridge/frontend/components.json new file mode 100644 index 0000000000..8d54213331 --- /dev/null +++ b/contracts/src/bridge/frontend/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "app/globals.css", + "baseColor": "slate", + "cssVariables": true + }, + "aliases": { + "components": "@/src/components", + "utils": "@/src/lib/utils" + } +} diff --git a/contracts/src/bridge/frontend/env.example b/contracts/src/bridge/frontend/env.example new file mode 100644 index 0000000000..ed9a4dc254 --- /dev/null +++ b/contracts/src/bridge/frontend/env.example @@ -0,0 +1,2 @@ +NEXT_PUBLIC_L1_BRIDGE= +NEXT_PUBLIC_L2_BRIDGE= \ No newline at end of file diff --git a/contracts/src/bridge/frontend/next.config.js b/contracts/src/bridge/frontend/next.config.js new file mode 100644 index 0000000000..50f8420725 --- /dev/null +++ b/contracts/src/bridge/frontend/next.config.js @@ -0,0 +1,9 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + images: { + unoptimized: true, + }, +}; + +module.exports = nextConfig; diff --git a/contracts/src/bridge/frontend/package-lock.json b/contracts/src/bridge/frontend/package-lock.json new file mode 100644 index 0000000000..5da43ead8a --- /dev/null +++ b/contracts/src/bridge/frontend/package-lock.json @@ -0,0 +1,12594 @@ +{ + "name": "bridge-frontend", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "bridge-frontend", + "version": "0.1.0", + "dependencies": { + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-navigation-menu": "^1.1.4", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-separator": "^1.0.3", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-toast": "^1.1.5", + "@radix-ui/react-tooltip": "^1.0.7", + "@tanstack/react-query": "^5.8.1", + "@tanstack/react-query-devtools": "^5.8.1", + "@tanstack/react-table": "^8.10.7", + "axios": "^1.6.1", + "class-variance-authority": "^0.7.0", + "clsx": "^2.0.0", + "cmdk": "^0.2.0", + "date-fns": "^2.30.0", + "ethers": "^5.7.2", + "lucide-react": "^0.292.0", + "next": "14.0.1", + "next-themes": "^0.2.1", + "path-to-regexp": "^6.2.1", + "react": "^18", + "react-day-picker": "^8.9.1", + "react-dom": "^18", + "react-json-pretty": "^2.2.0", + "recharts": "^2.9.3", + "tailwind-merge": "^2.0.0", + "tailwindcss-animate": "^1.0.7", + "zustand": "^4.4.6" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "autoprefixer": "^10.0.1", + "eslint": "^8", + "eslint-config-next": "14.0.1", + "postcss": "^8", + "tailwindcss": "^3.3.0", + "typescript": "^5" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", + "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "dependencies": { + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "dependencies": { + "@floating-ui/dom": "^1.6.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.1.tgz", + "integrity": "sha512-Ms8ZswqY65/YfcjrlcIwMPD7Rg/dVjdLapMcSHG26W6O67EJDF435ShW4H4LXi1xKO1oRc97tLXUpx8jpLe86A==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.1.tgz", + "integrity": "sha512-bLjJMwXdzvhnQOnxvHoTTUh/+PYk6FF/DCgHi4BXwXCINer+o1ZYfL9aVeezj/oI7wqGJOqwGIXrlBvPbAId3w==", + "dev": true, + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.1.tgz", + "integrity": "sha512-JyxnGCS4qT67hdOKQ0CkgFTp+PXub5W1wsGvIq98TNbF3YEIN7iDekYhYsZzc8Ov0pWEsghQt+tANdidITCLaw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.1.tgz", + "integrity": "sha512-625Z7bb5AyIzswF9hvfZWa+HTwFZw+Jn3lOBNZB87lUS0iuCYDHqk3ujuHCkiyPtSC0xFBtYDLcrZ11mF/ap3w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.1.tgz", + "integrity": "sha512-iVpn3KG3DprFXzVHM09kvb//4CNNXBQ9NB/pTm8LO+vnnnaObnzFdS5KM+w1okwa32xH0g8EvZIhoB3fI3mS1g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.1.tgz", + "integrity": "sha512-mVsGyMxTLWZXyD5sen6kGOTYVOO67lZjLApIj/JsTEEohDDt1im2nkspzfV5MvhfS7diDw6Rp/xvAQaWZTv1Ww==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.1.tgz", + "integrity": "sha512-wMqf90uDWN001NqCM/auRl3+qVVeKfjJdT9XW+RMIOf+rhUzadmYJu++tp2y+hUbb6GTRhT+VjQzcgg/QTD9NQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.1.tgz", + "integrity": "sha512-ol1X1e24w4j4QwdeNjfX0f+Nza25n+ymY0T2frTyalVczUmzkVD7QGgPTZMHfR1aLrO69hBs0G3QBYaj22J5GQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.1.tgz", + "integrity": "sha512-WEmTEeWs6yRUEnUlahTgvZteh5RJc4sEjCQIodJlZZ5/VJwVP8p2L7l6VhzQhT4h7KvLx/Ed4UViBdne6zpIsw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.1.tgz", + "integrity": "sha512-oFpHphN4ygAgZUKjzga7SoH2VGbEJXZa/KL8bHCAwCjDWle6R1SpiGOdUdA8EJ9YsG1TYWpzY6FTbUA+iAJeww==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.1.tgz", + "integrity": "sha512-FFp3nOJ/5qSpeWT0BZQ+YE1pSMk4IMpkME/1DwKBwhg4mJLB9L+6EXuJi4JEwaJdl5iN+UUlmUD3IsR1kx5fAg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz", + "integrity": "sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-menu": "2.0.6", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz", + "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.6.tgz", + "integrity": "sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.1.4.tgz", + "integrity": "sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.7.tgz", + "integrity": "sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz", + "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4.tgz", + "integrity": "sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.1.5.tgz", + "integrity": "sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz", + "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", + "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.29.0.tgz", + "integrity": "sha512-WgPTRs58hm9CMzEr5jpISe8HXa3qKQ8CxewdYZeVnA54JrPY9B1CZiwsCoLpLkf0dGRZq+LcX5OiJb0bEsOFww==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-devtools": { + "version": "5.28.10", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.28.10.tgz", + "integrity": "sha512-5UN629fKa5/1K/2Pd26gaU7epxRrYiT1gy+V+pW5K6hnf1DeUKK3pANSb2eHKlecjIKIhTwyF7k9XdyE2gREvQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.29.2.tgz", + "integrity": "sha512-nyuWILR4u7H5moLGSiifLh8kIqQDLNOHGuSz0rcp+J75fNc8aQLyr5+I2JCHU3n+nJrTTW1ssgAD8HiKD7IFBQ==", + "dependencies": { + "@tanstack/query-core": "5.29.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/@tanstack/react-query-devtools": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.29.2.tgz", + "integrity": "sha512-EmsaLNa8iFtReAW+5ftom0/TW78fIosVor517ak/+JFaoTBw8Yub3ao937JFE6AM3K/HXhteqvObetgt1ndLcw==", + "dependencies": { + "@tanstack/query-devtools": "5.28.10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.29.2", + "react": "^18.0.0" + } + }, + "node_modules/@tanstack/react-table": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.16.0.tgz", + "integrity": "sha512-rKRjnt8ostqN2fercRVOIH/dq7MAmOENCMvVlKx6P9Iokhh6woBGnIZEkqsY/vEJf1jN3TqLOb34xQGLVRuhAg==", + "dependencies": { + "@tanstack/table-core": "8.16.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.16.0.tgz", + "integrity": "sha512-dCG8vQGk4js5v88/k83tTedWOwjGnIyONrKpHpfmSJB8jwFHl8GSu1sBBxbtACVAPtAQgwNxl0rw1d3RqRM1Tg==", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "devOptional": true + }, + "node_modules/@types/react": { + "version": "18.2.79", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", + "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.25", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.25.tgz", + "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==", + "devOptional": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001610", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", + "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "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/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-0.2.1.tgz", + "integrity": "sha512-U6//9lQ6JvT47+6OF6Gi8BvkxYQ8SCRRSKIJkthIMsFsLZRG0cKvTtuTaefyIKMQb8rvvXy0wGdpTNq/jPtm+g==", + "dependencies": { + "@radix-ui/react-dialog": "1.0.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", + "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-context": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", + "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-dialog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.0.tgz", + "integrity": "sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-dismissable-layer": "1.0.0", + "@radix-ui/react-focus-guards": "1.0.0", + "@radix-ui/react-focus-scope": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-portal": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-slot": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.4" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz", + "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-escape-keydown": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", + "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz", + "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz", + "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-portal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz", + "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz", + "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-slot": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz", + "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz", + "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz", + "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/cmdk/node_modules/react-remove-scroll": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz", + "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "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==", + "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==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.738", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.738.tgz", + "integrity": "sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", + "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.0.1.tgz", + "integrity": "sha512-QfIFK2WD39H4WOespjgf6PLv9Bpsd7KGGelCtmq4l67nGvnlsGpuvj0hIT+aIy6p5gKH+lAChYILsyDlxP52yg==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "14.0.1", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "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==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "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==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lucide-react": { + "version": "0.292.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.292.0.tgz", + "integrity": "sha512-rRgUkpEHWpa5VCT66YscInCQmQuPCB1RFRzkkxMxg4b+jaL0V12E3riWWR2Sh5OIiUhCwGW/ZExuEO4Az32E6Q==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/next": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/next/-/next-14.0.1.tgz", + "integrity": "sha512-s4YaLpE4b0gmb3ggtmpmV+wt+lPRuGtANzojMQ2+gmBpgX9w5fTbjsy6dXByBuENsdCX5pukZH/GxdFgO62+pA==", + "dependencies": { + "@next/env": "14.0.1", + "@swc/helpers": "0.5.2", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.31", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.0.1", + "@next/swc-darwin-x64": "14.0.1", + "@next/swc-linux-arm64-gnu": "14.0.1", + "@next/swc-linux-arm64-musl": "14.0.1", + "@next/swc-linux-x64-gnu": "14.0.1", + "@next/swc-linux-x64-musl": "14.0.1", + "@next/swc-win32-arm64-msvc": "14.0.1", + "@next/swc-win32-ia32-msvc": "14.0.1", + "@next/swc-win32-x64-msvc": "14.0.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "peerDependencies": { + "next": "*", + "react": "*", + "react-dom": "*" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" + }, + "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==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "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==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-day-picker": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz", + "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "date-fns": "^2.28.0 || ^3.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-json-pretty": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-json-pretty/-/react-json-pretty-2.2.0.tgz", + "integrity": "sha512-3UMzlAXkJ4R8S4vmkRKtvJHTewG4/rn1Q18n0zqdu/ipZbUPLVZD+QwC7uVcD/IAY3s8iNVHlgR2dMzIUS0n1A==", + "dependencies": { + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=15.0", + "react-dom": ">=15.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recharts": { + "version": "2.12.5", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.5.tgz", + "integrity": "sha512-Cy+BkqrFIYTHJCyKHJEPvbHE2kVQEP6PKbOHJ8ztRGTAhvHuUnCwDaKVb13OwRFZ0QNUk1QvGTDdgWSMbuMtKw==", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.2.tgz", + "integrity": "sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==", + "dependencies": { + "@babel/runtime": "^7.24.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", + "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.2.tgz", + "integrity": "sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" + }, + "@babel/runtime": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", + "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true + }, + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "requires": { + "@floating-ui/utils": "^0.2.1" + } + }, + "@floating-ui/dom": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "requires": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "@floating-ui/react-dom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "requires": { + "@floating-ui/dom": "^1.6.1" + } + }, + "@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@next/env": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.1.tgz", + "integrity": "sha512-Ms8ZswqY65/YfcjrlcIwMPD7Rg/dVjdLapMcSHG26W6O67EJDF435ShW4H4LXi1xKO1oRc97tLXUpx8jpLe86A==" + }, + "@next/eslint-plugin-next": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.1.tgz", + "integrity": "sha512-bLjJMwXdzvhnQOnxvHoTTUh/+PYk6FF/DCgHi4BXwXCINer+o1ZYfL9aVeezj/oI7wqGJOqwGIXrlBvPbAId3w==", + "dev": true, + "requires": { + "glob": "7.1.7" + } + }, + "@next/swc-darwin-arm64": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.1.tgz", + "integrity": "sha512-JyxnGCS4qT67hdOKQ0CkgFTp+PXub5W1wsGvIq98TNbF3YEIN7iDekYhYsZzc8Ov0pWEsghQt+tANdidITCLaw==", + "optional": true + }, + "@next/swc-darwin-x64": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.1.tgz", + "integrity": "sha512-625Z7bb5AyIzswF9hvfZWa+HTwFZw+Jn3lOBNZB87lUS0iuCYDHqk3ujuHCkiyPtSC0xFBtYDLcrZ11mF/ap3w==", + "optional": true + }, + "@next/swc-linux-arm64-gnu": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.1.tgz", + "integrity": "sha512-iVpn3KG3DprFXzVHM09kvb//4CNNXBQ9NB/pTm8LO+vnnnaObnzFdS5KM+w1okwa32xH0g8EvZIhoB3fI3mS1g==", + "optional": true + }, + "@next/swc-linux-arm64-musl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.1.tgz", + "integrity": "sha512-mVsGyMxTLWZXyD5sen6kGOTYVOO67lZjLApIj/JsTEEohDDt1im2nkspzfV5MvhfS7diDw6Rp/xvAQaWZTv1Ww==", + "optional": true + }, + "@next/swc-linux-x64-gnu": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.1.tgz", + "integrity": "sha512-wMqf90uDWN001NqCM/auRl3+qVVeKfjJdT9XW+RMIOf+rhUzadmYJu++tp2y+hUbb6GTRhT+VjQzcgg/QTD9NQ==", + "optional": true + }, + "@next/swc-linux-x64-musl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.1.tgz", + "integrity": "sha512-ol1X1e24w4j4QwdeNjfX0f+Nza25n+ymY0T2frTyalVczUmzkVD7QGgPTZMHfR1aLrO69hBs0G3QBYaj22J5GQ==", + "optional": true + }, + "@next/swc-win32-arm64-msvc": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.1.tgz", + "integrity": "sha512-WEmTEeWs6yRUEnUlahTgvZteh5RJc4sEjCQIodJlZZ5/VJwVP8p2L7l6VhzQhT4h7KvLx/Ed4UViBdne6zpIsw==", + "optional": true + }, + "@next/swc-win32-ia32-msvc": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.1.tgz", + "integrity": "sha512-oFpHphN4ygAgZUKjzga7SoH2VGbEJXZa/KL8bHCAwCjDWle6R1SpiGOdUdA8EJ9YsG1TYWpzY6FTbUA+iAJeww==", + "optional": true + }, + "@next/swc-win32-x64-msvc": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.1.tgz", + "integrity": "sha512-FFp3nOJ/5qSpeWT0BZQ+YE1pSMk4IMpkME/1DwKBwhg4mJLB9L+6EXuJi4JEwaJdl5iN+UUlmUD3IsR1kx5fAg==", + "optional": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, + "@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + } + }, + "@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + } + }, + "@radix-ui/react-dropdown-menu": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz", + "integrity": "sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-menu": "2.0.6", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-focus-scope": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "requires": {} + }, + "@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-label": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz", + "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-menu": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.6.tgz", + "integrity": "sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + } + }, + "@radix-ui/react-navigation-menu": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.1.4.tgz", + "integrity": "sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + } + }, + "@radix-ui/react-popover": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.7.tgz", + "integrity": "sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + } + }, + "@radix-ui/react-popper": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "requires": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-presence": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-select": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz", + "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + } + }, + "@radix-ui/react-separator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + } + }, + "@radix-ui/react-tabs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4.tgz", + "integrity": "sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-toast": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.1.5.tgz", + "integrity": "sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + } + }, + "@radix-ui/react-tooltip": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz", + "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@rushstack/eslint-patch": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", + "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==", + "dev": true + }, + "@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "requires": { + "tslib": "^2.4.0" + } + }, + "@tanstack/query-core": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.29.0.tgz", + "integrity": "sha512-WgPTRs58hm9CMzEr5jpISe8HXa3qKQ8CxewdYZeVnA54JrPY9B1CZiwsCoLpLkf0dGRZq+LcX5OiJb0bEsOFww==" + }, + "@tanstack/query-devtools": { + "version": "5.28.10", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.28.10.tgz", + "integrity": "sha512-5UN629fKa5/1K/2Pd26gaU7epxRrYiT1gy+V+pW5K6hnf1DeUKK3pANSb2eHKlecjIKIhTwyF7k9XdyE2gREvQ==" + }, + "@tanstack/react-query": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.29.2.tgz", + "integrity": "sha512-nyuWILR4u7H5moLGSiifLh8kIqQDLNOHGuSz0rcp+J75fNc8aQLyr5+I2JCHU3n+nJrTTW1ssgAD8HiKD7IFBQ==", + "requires": { + "@tanstack/query-core": "5.29.0" + } + }, + "@tanstack/react-query-devtools": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.29.2.tgz", + "integrity": "sha512-EmsaLNa8iFtReAW+5ftom0/TW78fIosVor517ak/+JFaoTBw8Yub3ao937JFE6AM3K/HXhteqvObetgt1ndLcw==", + "requires": { + "@tanstack/query-devtools": "5.28.10" + } + }, + "@tanstack/react-table": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.16.0.tgz", + "integrity": "sha512-rKRjnt8ostqN2fercRVOIH/dq7MAmOENCMvVlKx6P9Iokhh6woBGnIZEkqsY/vEJf1jN3TqLOb34xQGLVRuhAg==", + "requires": { + "@tanstack/table-core": "8.16.0" + } + }, + "@tanstack/table-core": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.16.0.tgz", + "integrity": "sha512-dCG8vQGk4js5v88/k83tTedWOwjGnIyONrKpHpfmSJB8jwFHl8GSu1sBBxbtACVAPtAQgwNxl0rw1d3RqRM1Tg==" + }, + "@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "requires": { + "@types/d3-color": "*" + } + }, + "@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "requires": { + "@types/d3-path": "*" + } + }, + "@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "devOptional": true + }, + "@types/react": { + "version": "18.2.79", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", + "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", + "devOptional": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.2.25", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.25.tgz", + "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==", + "devOptional": true, + "requires": { + "@types/react": "*" + } + }, + "@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + } + }, + "@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "requires": { + "tslib": "^2.0.0" + } + }, + "aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } + }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, + "array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, + "ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true + }, + "axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "requires": { + "streamsearch": "^1.1.0" + } + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + }, + "caniuse-lite": { + "version": "1.0.30001610", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", + "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==" + }, + "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" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "requires": { + "clsx": "2.0.0" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + } + } + }, + "client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==" + }, + "cmdk": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-0.2.1.tgz", + "integrity": "sha512-U6//9lQ6JvT47+6OF6Gi8BvkxYQ8SCRRSKIJkthIMsFsLZRG0cKvTtuTaefyIKMQb8rvvXy0wGdpTNq/jPtm+g==", + "requires": { + "@radix-ui/react-dialog": "1.0.0" + }, + "dependencies": { + "@radix-ui/primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", + "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-context": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", + "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-dialog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.0.tgz", + "integrity": "sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-dismissable-layer": "1.0.0", + "@radix-ui/react-focus-guards": "1.0.0", + "@radix-ui/react-focus-scope": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-portal": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-slot": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.4" + } + }, + "@radix-ui/react-dismissable-layer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz", + "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-escape-keydown": "1.0.0" + } + }, + "@radix-ui/react-focus-guards": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz", + "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-focus-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz", + "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-primitive": "1.0.0", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz", + "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.0" + } + }, + "@radix-ui/react-portal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz", + "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.0" + } + }, + "@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + } + }, + "@radix-ui/react-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz", + "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.0" + } + }, + "@radix-ui/react-slot": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz", + "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-controllable-state": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz", + "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz", + "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "react-remove-scroll": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz", + "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==", + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + } + } + }, + "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==", + "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==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "requires": { + "@babel/runtime": "^7.21.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, + "detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "electron-to-chromium": { + "version": "1.4.738", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.738.tgz", + "integrity": "sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-iterator-helpers": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", + "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + } + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + } + }, + "eslint-config-next": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.0.1.tgz", + "integrity": "sha512-QfIFK2WD39H4WOespjgf6PLv9Bpsd7KGGelCtmq4l67nGvnlsGpuvj0hIT+aIy6p5gKH+lAChYILsyDlxP52yg==", + "dev": true, + "requires": { + "@next/eslint-plugin-next": "14.0.1", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + } + }, + "eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "requires": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + } + }, + "eslint-plugin-react": { + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "dev": true, + "requires": { + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "requires": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==" + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" + }, + "get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "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 + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true + }, + "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" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, + "is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "requires": { + "is-typed-array": "^1.1.13" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.14" + } + }, + "is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "requires": { + "language-subtag-registry": "^0.3.20" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" + }, + "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==" + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lucide-react": { + "version": "0.292.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.292.0.tgz", + "integrity": "sha512-rRgUkpEHWpa5VCT66YscInCQmQuPCB1RFRzkkxMxg4b+jaL0V12E3riWWR2Sh5OIiUhCwGW/ZExuEO4Az32E6Q==", + "requires": {} + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "next": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/next/-/next-14.0.1.tgz", + "integrity": "sha512-s4YaLpE4b0gmb3ggtmpmV+wt+lPRuGtANzojMQ2+gmBpgX9w5fTbjsy6dXByBuENsdCX5pukZH/GxdFgO62+pA==", + "requires": { + "@next/env": "14.0.1", + "@next/swc-darwin-arm64": "14.0.1", + "@next/swc-darwin-x64": "14.0.1", + "@next/swc-linux-arm64-gnu": "14.0.1", + "@next/swc-linux-arm64-musl": "14.0.1", + "@next/swc-linux-x64-gnu": "14.0.1", + "@next/swc-linux-x64-musl": "14.0.1", + "@next/swc-win32-arm64-msvc": "14.0.1", + "@next/swc-win32-ia32-msvc": "14.0.1", + "@next/swc-win32-x64-msvc": "14.0.1", + "@swc/helpers": "0.5.2", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.31", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0" + }, + "dependencies": { + "postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + } + } + }, + "next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "requires": {} + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + } + }, + "object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, + "object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" + } + } + }, + "path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" + }, + "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==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" + }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true + }, + "postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + } + }, + "postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "requires": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "dependencies": { + "lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==" + } + } + }, + "postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "requires": { + "postcss-selector-parser": "^6.0.11" + } + }, + "postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "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==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-day-picker": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz", + "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "requires": {} + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-json-pretty": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-json-pretty/-/react-json-pretty-2.2.0.tgz", + "integrity": "sha512-3UMzlAXkJ4R8S4vmkRKtvJHTewG4/rn1Q18n0zqdu/ipZbUPLVZD+QwC7uVcD/IAY3s8iNVHlgR2dMzIUS0n1A==", + "requires": { + "prop-types": "^15.6.2" + } + }, + "react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "requires": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + } + }, + "react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "requires": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + } + }, + "react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "requires": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + } + }, + "react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "requires": { + "pify": "^2.3.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "recharts": { + "version": "2.12.5", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.5.tgz", + "integrity": "sha512-Cy+BkqrFIYTHJCyKHJEPvbHE2kVQEP6PKbOHJ8ztRGTAhvHuUnCwDaKVb13OwRFZ0QNUk1QvGTDdgWSMbuMtKw==", + "requires": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + } + }, + "recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "requires": { + "decimal.js-light": "^2.4.1" + } + }, + "reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + } + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "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 + }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" + }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + } + } + }, + "string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + } + }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "requires": { + "client-only": "0.0.1" + } + }, + "sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "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" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "tailwind-merge": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.2.tgz", + "integrity": "sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==", + "requires": { + "@babel/runtime": "^7.24.0" + } + }, + "tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "requires": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + } + }, + "tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "requires": {} + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "requires": {} + }, + "ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, + "typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "requires": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + } + }, + "use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "requires": {} + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "requires": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + } + }, + "which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "requires": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + } + }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", + "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zustand": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.2.tgz", + "integrity": "sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==", + "requires": { + "use-sync-external-store": "1.2.0" + } + } + } +} diff --git a/contracts/src/bridge/frontend/package.json b/contracts/src/bridge/frontend/package.json new file mode 100644 index 0000000000..a0d50718bf --- /dev/null +++ b/contracts/src/bridge/frontend/package.json @@ -0,0 +1,58 @@ +{ + "name": "bridge-frontend", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "start-prod": "next build && next start --port 80", + "lint": "next lint" + }, + "dependencies": { + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-navigation-menu": "^1.1.4", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-separator": "^1.0.3", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-toast": "^1.1.5", + "@radix-ui/react-tooltip": "^1.0.7", + "@tanstack/react-query": "^5.8.1", + "@tanstack/react-query-devtools": "^5.8.1", + "@tanstack/react-table": "^8.10.7", + "axios": "^1.6.1", + "class-variance-authority": "^0.7.0", + "clsx": "^2.0.0", + "cmdk": "^0.2.0", + "date-fns": "^2.30.0", + "ethers": "^5.7.2", + "lucide-react": "^0.292.0", + "next": "14.0.1", + "next-themes": "^0.2.1", + "path-to-regexp": "^6.2.1", + "react": "^18", + "react-day-picker": "^8.9.1", + "react-dom": "^18", + "react-json-pretty": "^2.2.0", + "recharts": "^2.9.3", + "tailwind-merge": "^2.0.0", + "tailwindcss-animate": "^1.0.7", + "zustand": "^4.4.6" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "autoprefixer": "^10.0.1", + "eslint": "^8", + "eslint-config-next": "14.0.1", + "postcss": "^8", + "tailwindcss": "^3.3.0", + "typescript": "^5" + } +} diff --git a/contracts/src/bridge/frontend/pages/_app.tsx b/contracts/src/bridge/frontend/pages/_app.tsx new file mode 100644 index 0000000000..e8c8d12077 --- /dev/null +++ b/contracts/src/bridge/frontend/pages/_app.tsx @@ -0,0 +1,93 @@ +import { useState } from "react"; +import { ThemeProvider } from "@/src/components/providers/theme-provider"; +import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; +import { + QueryClient, + MutationCache, + QueryClientProvider, +} from "@tanstack/react-query"; +import "@/styles/globals.css"; +import type { AppProps } from "next/app"; +import { Toaster } from "@/src/components/ui/toaster"; +import { WalletConnectionProvider } from "@/src/components/providers/wallet-provider"; +import { NetworkStatus } from "@/src/components/modules/common/network-status"; +import HeadSeo from "@/src/components/head-seo"; +import { siteMetadata } from "@/src/lib/siteMetadata"; +import Script from "next/script"; +import { GOOGLE_ANALYTICS_ID } from "@/src/lib/constants"; +import { showToast } from "@/src/components/ui/use-toast"; +import { ToastType } from "@/src/types/interfaces"; + +export default function App({ Component, pageProps }: AppProps) { + const mutationCache = new MutationCache({ + onSuccess: (mutation: any) => { + if (mutation?.message) { + showToast(ToastType.SUCCESS, mutation?.message); + } + }, + onError: (error: any, mutation: any) => { + if (error?.response?.data?.message) { + showToast(ToastType.DESTRUCTIVE, error?.response?.data?.message); + } + }, + }); + + const [queryClient] = useState( + () => + new QueryClient({ + defaultOptions: { + queries: { + refetchOnWindowFocus: false, + staleTime: 300000, + }, + }, + mutationCache, + }) + ); + + return ( + <> + + + + + + + + + + + + + + + + + + + ); +} diff --git a/contracts/src/bridge/frontend/pages/_document.tsx b/contracts/src/bridge/frontend/pages/_document.tsx new file mode 100644 index 0000000000..54e8bf3e2a --- /dev/null +++ b/contracts/src/bridge/frontend/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from 'next/document' + +export default function Document() { + return ( + + + +
+ + + + ) +} diff --git a/contracts/src/bridge/frontend/pages/_error.tsx b/contracts/src/bridge/frontend/pages/_error.tsx new file mode 100644 index 0000000000..54b7deca69 --- /dev/null +++ b/contracts/src/bridge/frontend/pages/_error.tsx @@ -0,0 +1,91 @@ +import React from "react"; +import NextErrorComponent from "next/error"; +import Link from "next/link"; +import Image from "next/image"; +import { ErrorType } from "@/src/types/interfaces"; + +function ErrorMessage({ + statusText, + message, + showMessage, + showStatusText, +}: any) { + return ( +
+ {showStatusText &&

{statusText}

} + {message && showMessage && ( +

{message}

+ )} +
+ ); +} + +export function CustomError({ + showRedirectText = true, + heading = "Oops! Something went wrong.", + statusText = "500", + message = "We're experiencing technical difficulties. Please try again later.", + redirectText = "Home Page", + isFullWidth, + err, + showMessage = true, + showStatusText, + statusCode, + isModal, + redirectLink = "/", + children, + ...props +}: ErrorType) { + return ( +
+
+
+

{heading}

+
+ +
+ {showRedirectText && ( +
+ Go to{" "} + + {redirectText} + {" "} + {/*
+ Looks like you're on the wrong side of town, buddy. + Let's get you back on the right side. +
*/} +
+ )} + {children} +
+
+
+ ); +} + +CustomError.getInitialProps = async ({ res, err }: any) => { + const statusCode = res ? res.statusCode : err?.statusCode || 404; + const errorInitialProps = await NextErrorComponent.getInitialProps({ + res, + err, + } as any); + errorInitialProps.statusCode = statusCode; + + return statusCode < 500 + ? errorInitialProps + : { ...errorInitialProps, statusCode }; +}; + +export default CustomError; diff --git a/contracts/src/bridge/frontend/postcss.config.js b/contracts/src/bridge/frontend/postcss.config.js new file mode 100644 index 0000000000..33ad091d26 --- /dev/null +++ b/contracts/src/bridge/frontend/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-BlackItalic.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-BlackItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..df12ca10d2cd0e3a4965e13dc65cdb2b92c2a241 GIT binary patch literal 61236 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

81u52PW=pAqh6gK|E& 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 literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Bold.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..809e9788a36e1246ff9fa34b83378c97d5ac3048 GIT binary patch literal 56272 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 ClhSGc literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Light.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1acb39b2d18108a1a905302194f363293e273ce1 GIT binary patch literal 56336 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

uEo8{>pnHZAno7M<9B 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 SVHE`I5SWir`o9tPN&Y_;-P_dw literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Medium.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c29713e5455dc13ac51d68c99ea5ceba313a6c08 GIT binary patch literal 56380 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 XsMvN0ALaD_OX)LeMIC58uMYe_U$CI1 literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Regular.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..28ff3c878d4c58bca4517901a4eec71569143ed2 GIT binary patch literal 56352 zcmd4430zgx8vni4K5z~oBFNy3OoE~^BVvvy;DAGdLzV+74vC-)4h=S!Wu=u_mSt)4 zty}ljZ7^-bF}2WCOw&NKP>L=Q4OcnucddOm90$6$_kI7L_vL(kYp?z6wby>u^E~TW z6Dhx&CPv!0*EW`qI*h?6Ni;8cM9zragJFi4~3OTqf@xmD+=f&k&8Q@9yDxPt7B`;@lDDDx<%i3Ay|Q#gWKg@_$2LPj;wGRKb1 z6d#G!|1r$6Tk2(>5Fs8>*X3{eNg<-WdbXGbX&`8;u4#%8VZ^+-W|3RvM-V@eyM(*k zD-T1JPf27EB;CNFR_*I1MvxAnb=QwKzv1bT%0AW5kC>u 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≃m+E|5 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 G@c#ml#i4%y literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-SemiBold.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4dde30434e6f642a2891d3a52b838220bfe982cf GIT binary patch literal 56340 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 literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/stylesheet.css b/contracts/src/bridge/frontend/styles/fonts/DMSans/stylesheet.css new file mode 100644 index 0000000000..7367dcc84a --- /dev/null +++ b/contracts/src/bridge/frontend/styles/fonts/DMSans/stylesheet.css @@ -0,0 +1,47 @@ +@font-face { + font-family: "DMSans"; + src: url("DMSans-BlackItalic.ttf") format("truetype"); + font-weight: 900; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: "DMSans"; + src: url("DMSans-Bold.ttf") format("truetype"); + font-weight: bold; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "DMSans"; + src: url("DMSans-Light.ttf") format("truetype"); + font-weight: 300; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "DMSans"; + src: url("DMSans-Regular.ttf") format("truetype"); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "DMSans"; + src: url("DMSans-Medium.ttf") format("truetype"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "DMSans"; + src: url("DMSans-SemiBold.ttf") format("truetype"); + font-weight: 600; + font-style: normal; + font-display: swap; +} diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Bold.ttf b/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..07d5127c04b17a9a62121d12aeb00b701e920500 GIT binary patch literal 78596 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 Jl2>2&{{USQh2;PM literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Light.ttf b/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..800531084fa6cecc3b7ee732bc66582d0f889aed GIT binary patch literal 78660 zcmc${34ByV);C;Lx3{E|kbO_n*#m))bapn$%Dzb0L<9l}VF?L@u&T%?uH%9ZGA@XW zGA_7`-74hKmB7jSgjJmHhOOTl6hKx%8*Qk=WeN=+j!4!KSG)s(zLFa z*Ses6=UnG2Li7p|B60A%w#IogZMR+zdfW^9Ch5KY8Ov?B71HY!U2qjzj%XEjaffiw zUBJ&qR0u!nwSjk?x1nRcHT66ip=C3b9ygjplZ9H`G_#$VDV<(Q*@HO~Qj<4_*Nojb zrAyx*gr*%O{3ku9AdfF^&i=RcMfP)p~c8fwuiJ|&cP8J@S z#}tOQUI_01;lA958!>W3jo2na&nP_~mIq}ow~)V~aQUO!f{R;dkWvYh5dR|Cm%s`^ zyixinQBbIpS_0@a^@;ill6#Dhh6Jc?P z9S@f%+Tgc~U%|glY=QrpOb}8g$x`^`uqi30Nzll4NGRpq@{jPJlkda-vkDecIaLJY zh*2?syQ;46A5o9N->5die@guU{&VUj_%Ex?@JUh)lKu=$J0T6_Nr)slgz{_&f)3&} zmjO%RLa>fkB21k!U`-UMtp;ofps|WXwZXvKgiGCEzz&h78Voon0CtN0D$Br!1i+y( zOJ^wY=y`K1P$`wSWjO7a#1w!-4C zHQ)gGrCp?nsRrHw>lk3bK_WvW8*nfnAubgQ#Vj#h%n=Jjy=V~)qNk`tZE6N|v9LPP zDCQ!@zoHoqng-A;1m(qej7E49LYt9do5|^X&VgLUBgQPmnF-4qWW*HlS(J7j7 zoepVQKu@`JBOj!-MsRe4ekLG_Js5o5;6IOP138oYehxiAHI8GGY?QiN6hK09?f}U; zr|XlZUMzxql&5+z4L+s4822QH8#qe00%bsOJ9Oe^4gSwH>@sEbfuSdu*h%K3c#6oPX;{w2Z>^${bW?Gd6z z^tq_bk=Awl>1=%$rtA(#xeD^n6HD2K^w@6ULCOW99J(aCA&p;*$0)>U6|)gO9h!GT z2Mf7W$nwb2axN%|CZpUIq9lEq>&1HX>8|HRwcP6>>DMA2)zW6jo`-ysMRXHnYkun> zJ&+Bz!G?58_FMl5j!$_@y9oC*v>V0Xzf@c=?iRlnFNn9q$Kng|cX3XJ$`sjC_LGC< zSXnRU%BAvpxk?^YHR@7zg?dtL(lo7B8?8;&W^2o|8??K$?b=7$=i1-2A1%rfW=XVU zSxPJ|mSvV3EO%KRvOI0sYT0c$VENY4VGXv%TGOm~*51}y>uBp0)@JLK*1gt4wg}r) zTeEG6ZKZ9MZLRGw+h_I+d%nG|eUQE0{*e7C`zHIF_TBbR?1$~&**hFTj%bJ5k?SaN zv^bVJ9(6qDc+GJp$R3mvR1|bc(9oc9LDPa-f|do{5_EUapMpb!6M}~aUl!aLJU{sA z;G2W*4*p&67r`fk&pCsfL!2v|w>s}}Zg4*1+~(ZlJm@?TB0@q!;zM#m%0j9`MukiY znHjPqJPspbs$3xDBUKYAB^u^FOLO%#S6nZMGe^`6i<6XLRY3MSq z%T--&>ax1a`Yum)*%aO-JSjXkyd=CP{L=7A;WNYA!&ii_ick@QBU&PsMcfc^SH!xA zjS(+Kyb#h#Pei^F`F7-ok)KEYBWhq& zUDTAQ)~Iz+Uq^ix<&Abm$3>5ezB&5t==IT0M86dMX7u~fe~ms8eKICBre{ofOij$C zG55th67$EHZ87i19Edp{b0*dv8x@-t>xr$19Thtzc6RK-*k8ro7JE}lb@iXJw<5$G5ieDT5Sp2Dk%MuzB<|ka8aC5@ygbfMbB>a#l5U>PX09cX!3U{&Xm}c)RZ16r74vu!&5F#nUT_-a!txDDR-wlmhxQ6 zIhVr~K^Z&=5BE> zbzkqk)BS+^u={(rH#InQWa_U{Z%e%=bwlbisjsEJpL!tm+thPujv@}mz|Fj`# zPNok^zbk!R`s3-F(%(+sn|>&xN5-OzZ5bys z&Su&(BQsMnb21Av`)B?pb6w_BnVT}-&io+rv&?TYf5?(q5n0z|ZOM8&>%*)AS>I%R zpDnVT*|FIb*~7CZWKYj-$zGbhGJ93_+U!TOpUZwT`@`%nv%kwxIbk^oIT<;HIXC3o zmGeN(lR5jlxw>`lR?@Aq+lX$rcKf8;SKUr@JJa3XJ*s=x?%lf=cOTGwLHBFA-_m_e z_lI(2ZfI_NZgy@-ZcXl(-08V3xl40z%KdHbBe^f+zL~o__mkYOa!=%*>0#>;(PMRw z2YWo-=dJ$v>n>si%vM9+ym8+*?0d412{_55SccY1!(^Q*k{ypeg==e?A7pjT?I zCA}W+btZpM{=EEM1+fKb1;Yy#7Ci53gtWYQIPO z$M(Om|KUr*FNwb-|B}lux$%-C1JVby4mdR6SjE7K2P@+$e^dEjRZ!Kusw=B*tlD4Q zR=u|-v1Vq?Gqnk|&9!?6P8#^ypu|D>gDxF()u6iv?Ha5G_Z&Qb@b3nHFeGY7-H=s7 zP7ci+S~GOv&^Lx94;ww~iD91(4;x-PeEINqMud)7JkmC@-^jru$BvvjvU%i^kt;{8 z8hQW7w?=+8vSU=&QJ0One$;cLKD*R*sprzBOP5~y?4^Gn9Xq;m^yQ-$j9xo>!|2VU zkJlyCRo0EEYp!dryQ*$w-K}-2>(0J7b2QQsC>29Pvg2%tiW^BAQ6fYTe(;+m&-fkUGf3>JNbL{T8@^d6==oUHdm0Vi!08R;!1U8 zx^i8;&@%LM)wwQr&2r6mUFo{sbqCsr-@4Yh{^@q2O^9(Px?S!xca}TfUFh!Zu6EBu z`*5@SckT`DN8OLRpK?Fze!;!j{c37dYHVs+YF27q>f|()W=rdm7MT{4mYC*B%S{`U zHZ`p=bJrP#XI6onxG{?8E!G=3Sug(}x632)m^>waR^3&;nUh!4R<%Rz(}ZS2P9l(# zbS+EkY2?J=3UNicl3i|BhO4_P&sE~;jaF`=YqG1^wZyf;b-U{>&dGYW9XW|~$Gel= zZX+kgx)N{oX7e%{Z$2fTZ|?|XN9cX@Yu-|83>5crGWmuZK(QsANK zK9WNvhaNpN`%v8>%NM)x-+0K5(9lDeMG)ePlkDIA#qD1#{o?U279Ko#@B<+Zz5(|r z+#e1;d~n6VX+nG!X6G3Mu>u~*3w`x)mkkKvR1oEyPdevPrFsSU0bEC)gIBF z)-i#;_L#O&dq&%=ZPB)B+q5?@w%MV*r+urPu-Gi&mRO71LSrX^E2OdP!?@;<+f@UerT3~e>JGI;EmhOitEd%o)dbb3 zCaTNTcJ;b?Q%zBKqmHErm&in|sucqQIq`#xkdZP$rsBE3x2%x0a)O*Br^s1yj$9(w%60NV`6!2NN-c|!th3Zfr ztKX`6El6FWqSUX|5H(m0RZ~S2T8m)JMnqs%B1xo*{-{qy82e8aW5on9QDkF=;x4gL z+$bIrx2xC0dhtHmk$1(P#Mk06`7EB0Pm2y2Cap3=c9AhMA5ZXE7`a|52g#vwxJ;Cb zH@*nCHn5Lu5ZONcIuK@O~r)ncTq6w~E+Q7^}eadNPj zCdY|Ma-bL^$A}s7axqh0fmxzCa;j*N(?zqa7p<~EERZwB64@-Slz2jsEpo27RxTE6 z<(=YsxlG(A?+}m3`^6J-y?9DKB%YMN6VJ)V#3uQacu77fUXUBb8}dc*x_m)wlh2FK zXH+5WnqYkMr)Zf)H^_4m* z(qyd2l`hdkb`{+)4_PIPMWrkfg)&nNmjlFTStCZtDsj0SA?8UuBgrN)S56ZP(L!7$ z=ZmW`!?i*#6w73*cv#*eHpqL$I?Q)HAny`?kQ>AwUye^vruT&F>%H`Cv;|m{=(6EM4}~$7BM0gGn^Nr z>GB`Yg#8CJq5lC*$bUfN{10e?{{xz!|A5AE5t=YA9nI8XXAN2qN?O#Z{F?4e6<=T9 z+%7%S>lZZ29@D4KohRMwhc`6OYLdYXEv<87YatUi7Kbw8n1#E_9LI{_@zMj8OhP$v&YbBCaP2kfyg+$#YKZ5;W_A}vY z=&h2`?^0MI`x)?Qm4N1QgV<3W_uUg+Iw%y==GbkvLDqHFGW>;Q2mXDv1KKY0{|rVS z?b-}&0%q?W>ID9W)JLdO&%&RrCgJarXVDYqp#|Q7zI`;fQwk37A0$#S{`{LfF8?mS zmH&_@P2 zj0grGhd%xidBp5L=JR8aJ6dZYH<7Pa=-!2XJW_-xtPRL1Dja^T!n%VjS7BIfDF-fu zueAZOlR376zHO=tXve5frWpe~)*|5h@-{(qQ%!27nguO1tA%QjTCA3j*IaouPtL6$TwSbUniMm=iFsiu?YY}&2#1)A?=qnM0KItDKUY%5@MXLG< zt1a2cl`gA9YozPOLMsz;iJCyU!5p1GH(^L65~CqFU@dUhLFY@LVX~79=$W3M_QKIR z5XDP{uf%nrp%7ZN=^P@(4@{@0+~0fL;FV?YibQCh!K*7cN#$1Ea8KN*6nxxV99E?I zF|AaC0=U||U*b-x#sFMCYKbpj5;Y8~K^&88BN{W7{yQ7mXi7ImxePf-R)y4+Xp|FK zUR`>!!3;=5Ic|`oJ!nY!BoW}F>ujvSUB~#epV3L8Smd9ys&gi(!r-K;2k%&fNX)EK z>5wnblSny*?%5YCgD)=Ca7yzS!?RQ~ z!HmgdnoM!Z%)7#hZtVZ4#_1NGY*=LmIN>>n`PpHM1Z{<*ve(;G$t#9Bg>Ek;B3=%Z zm;H}YRl!VDUhA>?N#8sJG zPoRf^Eznb%K}q)P#$3cRVgpteSBV>76>V6Tn2eQ;Ay}8|OH!d_pfzEtcd&a{z7wro zBdkQJL24FOW}DFNHADJtn1AV~1_H`a9@SUDo>jIgP<>Plpe)R3^j6h?GF2~CuBrfK zs617sDgmWq_NG)-07_FmREZh@C{^XEVs#00(G{&tcU7eNL;7P%&zoMFTg2tKZ$vxz zGM*6rKlWX6q@1Xt5woJl4m1F-OzjdzwJA)YL34^-Dtq|I{Xz{hnG+` zZ{Tkcr_qaAxfgY@^<}d4W#P$siO5D9@+6)!UqnmN4VvjEx?^-b4XfNU&=VDNPgKG^ zQ7QLCW!w|>=ALK(_e9lf7d32cL)hBt*xD{bo1LR>7HR(*PJ37ckyE#b2DL_be$nj_ z4OYxfs6FU40UOSQEl-LD%TvIY{uf+L0M8d8<1abLr42S^V;RxbHK@x`zPO50-XCza z=+65wu2#d1!xfIhd*Ipu_m%h*ds|L z$OWf9h7RNOE5R2!@3-0)0r+naPayvPvQvMCj^Qpy_XzN#A>TmA6$bbo!2il+iFEa! zy63^`BzTTNoPXus1>Jwstri*DZjpYzQ^T=0C0#`SNA5b&SDo+1qh;jx4BXCVZ*#A#-m}y8*SD>$00k;+IcDUcdJq&jT|3OwZN9Cjt{uY?YtNBKOD`gAj9x^ISFX8=C~_-BCs1Mt@X zza0CNp2pfn6xKL;gQhp0EM5ohQPis~OxF|Tk;kr8^boILM%}<;RyqN$C+080wD)1_ z55SI^p`#E{pt*6)Kp$U)JePqF#oa1~Vy$T?W~4osT`s08;ug`kj^oq#P@*kagY@AK(vqLjkXzeZ7C3VDgA75$Az9)^1Z z_mB;`WrydAT8ypI5ig&d{0aCoa4&%F8e9*HKCsyYZ9eSuOO*Q~kcDKp8gXFf82hDj zKNl}XDa5ms0hfvL73^|wB}ex(V?u5)9A>MOW1zZMPEgans zF|Gvr;`!)Hd|_A#7$qJD{a=t5w-_tO<2nrPJ>U;x<)9pCy#jrY11<;dI=HLglECvH zrhLQ~!!>aU+)y}Qz6tyjhzlsXEll%vHV*kc{m7sp_y-8eZO zPluPuiSlx+z+Qn>!^zOj9?Z^6#X4O*c4SYN4YCpSyGb_5nQ|6ZaAso$rx`o+T4bx7 zC+EvHxd3~%7s^FgC0dMCtR-0eT!y)ULh*N$Ua`CqYoS+T@5ME81y+noudS{YA9XoH}O5 zz7>o0d3CHK2F$Eu#gXUM#R!^R$7=9-^XuYEv>sM*sehIod+0+{s0u@0v_yqt_HL<) zz&yy6DoRCTrY2U!sd#afN>GU^Ni0*zDn+??7A3XwtcLiV>L#wn+)6H5z&~Pa`z>aE z#$qle4|6p6n7i>{WHb)*3&r9qRU*z}j;0KAH@#IKakChYIi7y1Ki1_3s0vl7sxUrX zuBtKHvjTHJzru6cHJBk9j1~K#YM2_XMyQc$6jljGt2*pc7^}vK%fv*i7EVx?sfprp zyt{B5?d4{yQCxw&0aMge%r#wsIgPK?bnIxr47)jlkNGCdZM5(z<9yYo7N~Y(PM`KW zEW`eStFT8QaDIO!Rv>8|l2#;d5!=v*J%B#<{(!Z=c=T3@0&6qaV{ogw4ZA4rFjoau zW5#3+b|Kt@Jqq`!`>{9S0qkOU5Nn#h!>Z=PYJ>Vc-eGuDJ%-&38+m>6DXeb(0c)MK zzWE&H+rP&g+G+JXRy|+Ds^=zpvq8Orxw9?Uo3RyZL|u3%#uJzwco?(b4~aLiZy^-( ziIL(G>}1-89UE_8&&GBUj@8j;#dBEEd0XuimDoqI3;moEvvHHfRP2EmfVI>=som;* ztf>B3Y{$Ob=dnBYMa(MEUXHEkU#*x+{s8N&AL04`5s{7+r<*YE_iMaSaI3gZ?G;nR zQE{#Mi+Drr!p(K>VmaR|he3bck2hzfwmqe{@t_uf7p$u(JL) z%zFMqoDiEZt9XY)niMw zmHFj+@;&y7x%JcAT3hTDtxc^hjdOx4+Ge#h)lXm8-e|9=(XT98ewnjs`mDC;3+K*g zZd?*v)zI2rKYe;*OFO4fP*r5Bo?cIkn7Y7&+qTwv4lSt3H{{Fb{N)$a>gg9$729e! z`?i|E$Od(#p^YjdS5=1eRfaaIbZvO@i-K!9iBnKhX(*u5r+^ZBjge7ZK7(aJk-bLG zxGr~Pm2DtP;vDGDte!)UCwSm_sd(}&gQnHD=}|ou&Ox2y6x4W%)Zihu!Db1gTLU{$0mwxFn3=TgLFQBYH4 z2vE)z3PCE3@G`BYrO7rjKo!*mdQi1dtks49)kg7F8!W4JmLA=R@;x4-ObdPHV3w*-N)mp~DJZ)nF#PHFU>KXDB7-}jpGEq`v8yi?gg;YlQ z9@G=AH#NR%iFK@B*EL4MwT3`7KHVEkYidHrUa0GW68qRdU6)qa$LgkT9ZQXnZ7dtS zo^WZIZ9J>TIo_|1pz#f}8rvEd%vxX@-_%yWsL^?uKTwZXW)ydAk?k@j(b2U=X%rf& zt1YulWcI-m&#U9*9$USs5R^aHUo{xyak;IDC2}_Tb4RT63p|CvP3NWNDX`4+H_4UGnVsXHNiMd{GRrf+ zKyQ4Ye?v-7ZP2Vd+TnwpUAp|f7OaXXKv}6~&9=`nvM|eNoM)M~n(rwr)f?#&y^)^X zSp+n{r6F^g+8P^Mn(JE{W=*#>b0ONA1N2^~XTG4Y%F>J+>XH<)reIr!tcAX|wb0h0 z*Nv8XdcnD^b>7TITT1}DB3<_ddh3i<+Sh9996hC64Zzvgl$C3ZsDQ13iZW`7*=id? zR2vphZLq91SnBqL*4ilcLZ8JL7FAViZS}Vx)kaooeB2DGYQyeo3PM{iY(ZeVt%0Ug zY{V|+w9r~tI$JMjtqsmay4`y`)i&$}!*IveW-1J=wULVgL+WB97rxq4Tx(kpQ1wcT z%$Jlp7o1nxo&rNrB?hY!L&%bHOFOmB?E%U9!bC9sdYH4G6%-iYmlhn18>7?E$&8+ZZ-Tk|V6cn7C*gZ%Jr^az zwk93b42jYmq^>VAc|yZUG*wT6C~+7EWBy z30r0v49WH|5a&S)u3Rl}<%SMdHac9na^cFA3RfOF;L65{D-V8fE!SnHjiD?v10*v6 zhRg)&GV2h@%yc9()9ErZsLRZREHgp6%*N;~zmltTetxCie&_3>5Kn%oA#hJ>R3`l0cAuN({qpC*hBIFya@SwtK)E{W_^YuqeJaMvU zxK>8ZYiyg<+Ca~W7_2qq(av1ww1v&hjqMBva}&*A*tGiTbNsil=f$Lc8GEynE{P+gZ#ZyQm=@|`o6qJM1B8;JJEpt)$?e%R-Ee)+LO_rL4 zZLLPQQ3WchEzPsq>J6k((3Lz!zyoTDZC>L7#5aPC>Ql+R2}Vgq`RfB+kI@a{TI^_? zJFk5yVsgX+k8Ycue0@lsUs=qfr^5Uae#E8n)ZzR9e0cy|XuxRu(EjW61pDX-_R$l} z^%_^M1Gtt3af>>=b?&qv?mP%0*$`G~@T_5#2&85`GvZYaMgRnLXRQ5hqVp7 z{>WFTkFxR$3%TOwdwhe|DlRG?NW~xEIHFXh4S{Zob3B0KayeSF1 zso$y@xivxp_28)qU{I(h z#%1f#Z9d=QdxkOEU61})1iY?(k3N2en#*X-i1yzFV?}3-;P*^KnEsv#=3()}dknOy zg*}r(o733VBC_Vzx6Ki*xpU^u!P+6MdFk&#(3%uc>HKWj%Pei`dzFK=i!jXL(z!dd zCz*Ci>wBfKcQWh6tQRRp)-&u7n@{HPQPUpc_pk~lWeMhXGqKL(lJPPUt5-IN{4?g0 zzr{T5A2ecl5AK=g}?6+xIz|7au;g8iO!GDDPnd&g$7c?9E=hdU| zH!|nf)s28($NP8Sj9F#Ss8#SEP!GX>3}+Wf%mP0HzfIi$f4;g4{#Zr3-M6b&`0r!y z1kM=JQpv}Bu@o<12fY-JV}@6X-)ViwXZ&OE@rFg_AvnA-$!;&M*dd&`3vN5yR=7=Y z&%!+k_Xym2xclH%!`%*d6Wq0MSHUfUn+G==t^p2fisCaZY_e~JCrA(-{=ydS#=t15Z0&@{H4-+S){-9~Rc z{Oi06;E(Z=9>#hX!{5gK3toDw;t_8d{8px!=q+T-3ixBaS0D|Mfi>8S9&lN3ZUcr* zXJDs7`qTP-`eT3}f?Er>2D$j<^P#MQa)JHCSg&jc<#Oc2j&&*hpN~~lywQ=kDg8y- z%MPl|L@zhPYEFW{hMl55mJN6mhO5s?4fgND2ooHWB3qiXmz1`sOJ!8L@-yxoU zrWCI$ryqu_2Mo6l*AL*{gWCbO4Gt-%KM#jIo|iw7z6!Wo;8wydhg$;I2Gq3bWWarK#d>;rceo5V7hF7CBwPrb4GyBF{R{`0)4qi}3I{7q`&7s@yrn@r z)Aqpag4+(a6?w7;p3ueTa>envTuE52$Zg8pb-#%-^VanvAFk_e6WWRG1aCm;qU#nPq-%q5F9P=r zLmN$Kg9%aSIx|#okN+>N*boC=(iDLe(Zjxc*F6X5u_1M7SOtnq}hLCX{GG(I({Q?1xAeolBTW=P)6^ zRLX~Qoi(A;CUnAtj+xM5AzTOG_PIWQ{~qPvwZnwAnb2kvBD&|9&L8@;8TuHYhv3$_ z*1%r{cZ-W~D;c*Oz8*@rC5&r>-|U(Je=6KW*BJOCOxz$7sx+a#CRAcV{?Po3;3$pm zoJNKj>M|jJ8u2DB5>SZC1|M0~(96{;5-cVFrh3Ha+^@12~mt_juF-g=U|*a2GJ=K z$57H)93^=g?nD5DwkZI2*bF^jLi_O=yh? z`9q1zD&}&F8M@MhE|$i>jV8#xCsTD5QSRIP=*pZe4zgl;vV8%$`0 z2`w`rl11mzZsPoDw3xV=CIqW9q@QF$<4kCj2@Sz>!ywLaHE{hIDl;LE3H30cEE95@ zP@)M%0}6w4By@%p;o{E*hQ_1JfjfcYgpb7^hJV0>_LO?J%KjCbZdvo;M*s zXM&#QG#)cUA2Ok}K8SJ;m}FVw!?9GW72!qaPB^#`%%d`%a2e;(xo{uP;RHo86oPcO zGh{O%+{XP(xVZ049ML_?bb#W%<ch)!Rj-kT?NuG(oYaQ0B)NI&MNoObDT|2RU?qATIuC#(flsi`~t*orv)U zLt9MfMH70)gf^NG#n`|x)^)<&!??RT;chi?I&?$qir8hKXpj9RsKpGOX+qN&n$#)o zI5Tt?VCX#)+F?T5 zOlY$Sq3w)eJBWEqZ>e$rkO`rkq_!QnH72ymgb*X<77kr$;+C7x5)*3kLGd#XqnTs) zp{XWrq7P!aF-$iCxIr#G(rj2o#`@6oXdpbO(@cYLQKeJLWI+~_&Gxi zJ&ov}O$cqLf&116#gL>NH~OfFGdV{e^5LS+Oe+?h!PrxSuq&TE- zb_Qs0&If2hfcb*>0JEI^1Ms70%>bc28H3dV8LD1q_*u}O({PdnLI*PD41DEnVi>Cn z;PWo~YvBLL=_>YvC|z-kDQ%P&Y2$Qlylz3Qx0DI$1@@6&z#oJDB&}!2PF%y7=jLcA3rk~YvLuOWH}Ec&Cy{fMNF{<;B-##NjN|rN+^K~2Ew~*o+j`fXh103t`Yy;nL ztZ%doqG5aZM#CxsV5E*S2T3R2FrOw)eG}zHY$BOO1M}I$u{JUNCS4oscd!f{4Ck^f zigLyla_F1sm__} zm%(Qla-F~{VOMfnq@UZ?L@SQ6jO#@i>#dAhB-xkkzl^n4#^r+6lPEcrM>xMJtn(Pg z{Gd_$mZDXV&)iZtM?bKIq%h|cqoz~+%2xZCK85M2^kca!QrNCiIrUho3*bg2n8Gro zu#KH$ONeE8Qdp8aDm9tM9P+5VAx( zUCRDCSi)JZ#gR-CNh{L`B}?e1jUZT$#Ws-5a5lq#=2%}d{ntdVBANbcrumv_hA=#Y z;X5tVKFpw%a=gt&7BvGW8IVts%+OF4@JY5A8l;k=nEwoxYKBJb!wi;c2B$cK*4pKr zlp@aUp!{NV1vp5(Ofd8BPV2t1J9FqxE53lK+%vg+yEC8eax&pr&h8v5is_@6K8jNe zWBMrVEGVNmR)6hV!2LPDQ5-jl;|}B$2eNDfna@C$d?0fh$Z^{^)mVw&07K?>ErBuduv z3fA)q*7FM1^K91h3NDKkEbR*IDAON-|5pubta1hAMP+OEGoEZ?1?Oc2=ky6qcLiw@ z@9j}ptY8^#0=dga}ux944PUdil%wcY8n9m%JJBMRE$dnH<=0V1|n1hS) zF6Q9kw)Z}cYvt0!7#K2~CVJ7zv3f9N55|vW%q}k3A2?Pj<99LrQj!xRD{3K^5ne1d z@UT*`lr$!$lg7kSl0j@BO8_4B2_Kq)KZ$+VCqiML;uv$gnN#_ax$S4nQs%#u<(bJj zn#oelq@4$H#H4`7*3X}={rOWucTN+p+O zCCf0EHQd2gF@RIA+LGeBfSHUvnZMJD&}?v^IyaK?_kVk=6pX> z-a(X#wT-ur5m)J2t>HY@XqSUq4d<(d^VN&)H ztHv^bI9O)G?`4T2m?fWQNhFwaI*;U0gE*%(EL9DpQhahEM*M=l0Tz#a9*b~7;1aPM z&IO?N#6s*yW;pB7_0){1Cy`g zedQQ=25%>Km1h;c1SZeXm%wmv9livH6GrhRFq|+-@5=^>QX!NDD#6%}-A}k;+$@j7 z9f3Otw;%2!xZQ9&;ogAT0*7ZMyg4rLF1a8}lZPY`Ey{^GRG z4{ymT)F$SSlNJ=-P?dNi7Q}c@mwY^x!5_muo&SJ+TVxs7T}A#iG;$R?)vw{d!I;(T zzrg+j*gr#itfs-=!XvPOYBk^++2>Y6Ji?S~a1J{54KaV-XMpcx$P#=u9_$l=lXgrG3t>1&ckuk3`{5s=TGvx~?14zQ~29z0gdog7jWA0^tERPqr zv;P)9Wxd8UuQB`*`!C?+4eaw`{A0ib?x^~izhLLa`^E}8kW|=Iy(5{$}9nR$< zmlx2H3E$6)Zyox6-aX!LyeGXUkh}AK-ZR(%c#`qKfKH2Og1zs;!QSZSea(CL!gw6= zz4vD(>EwA&`ft65yr=zf{g9sm5OSdZyl1?h`Cz2`q4&5yHp%JxvCMi-V1F#{Y46uK zYfkv6@Xdt{-eW#`{}m}5_R{k%|8U1#{BrprlO{l8fjOh_&anez4T$68!}LZTSbiFH z860#PgB$Y9A%+$^OXNN1{R_16u`ey}5tQp@@7J(}fS(twgZFQ6n8hJV(jy0>mg*Yv z9?{7uM+p4^n)u@U+!++7`AZ%qcTlqAM(Cl7$MU6PM*F`8{HY_S=X`8nu|Ii#_I__j z5nvmH(dm${llULhX@LC^|C^A1I?38^DbNgA1ZjxNmE(eJ`w;TURtmpUF1_d#yl1`Vy#Mr~ZwUM$-^aY$5vrFt)uY|s zLxB`J430;cC#8cl;PxTJv?MRJl=O439@pY(a0IRk=va?{Efkx0z@g3XQE@CUG5F7Z z7i#Q6Odu!kT9oEZUi5(8n@DQpd%O2FP`GgC&&7uv0$P#`^d}km4%T!Ur_32Y)PV22 z??7@h9tCi2@Xa2-9Gu4=!Q-^QbwTdWQ9E~$xTd}O(g81SgAt#t3g=%^Isq*v-=pXE z{ZPaIVZxnkptC*rXacVnr|8tiqW(gbPL>tO;r|I7{(sAb?9u3jF!nHieKA7v@ZUr+ zprHh441)dyWpW%fhxJOnZj%?uCzrR+Vmq@t|L$US=zJRA{rMa(h->vx`md)lt4#Mlb zSYSEnFzOqRdwg+m^-FAwRrIin#QldamXQ+0HBu!E^kC$S^XqG$FH#Pif1jS1nLjl@ z1S)@vtS5P)uW-^7%{G$kn18@2I^o!}9*KV_dYBlzyODx_xX8pm0^dmLg^&XLqi`Zt zAt;JPZ&3BaKM5zF4Z!a8N>PP2wnhvTZk+eqfQ{cx_-Ek!^I70=9sXH33+GXs_D`qr zXzZ_e-=mPf#f0;i zFgso}hM!nbbl9VhV+PULzN-?@1X zr*8coCv4&LAbdyS3$YC+UVVip5&E9x)^A$?& z2y|p;9obn&5v(H#9YqKSo=zk2EJm7AtRp(tzFb7%Y_{Gwagj9TU>(JougWc-B_}^z|X0^*+LrX`=iXx=VuY_T!Aq zze0mH)?f-w3p<8K#R+Nx&YdMaLONI!S?Dk8kt`JN2jL&Y7HVY+wX%g;*+Q*sp;op~ zIxn&cCqUKUZ^a2{wXk$5gD@_GE^MvgY^@PSd62b68l|!kHXFrd6U}84!)0URvaxa5 z*tl$LTsAf?8ylC6jmsvM%O;M?CZ5a2!DZv%vPm$?hDs%oOC_1@*U4o=UjQi=DO@%# zE}LMs;;vjmZZ4rzE}=9oA!nx&qEbocQpw;_$>dVW;!;suD%o5rIb15;xK!+1D&5(x zgSb4BP!d;BA1cbVJ^1g?R%^FtE47K*0DK=LTnom@SRdg0t*3E5*fQ0i?ZL@s18|aB z4!*ha6V7`(DEH!>t{rk4POjU4)9+TvWtbhAh|~Ng%Klhs@ZjXYG#Sk<7-t4f#8)j& z=?=a`Yej9yqvA1?$7|wqK9vx)8u_K~tUZfU@II3JAupZ&#wWiS=f2VTYQ}kLY8uW` zqm$I;^4V$aI2AtdWHdVE4Cj&IyfHd$Y^TCJ64s%pef-?J2XpkNyZXZJutqbNB;M?FofI3NB?gN(txO0FLz5kYtZ=}Rxq>6Ol z!%n=ff#R5a*84Lkjv$2&HN(3B=in!L4+8r=u=swB_qb{VRss7p>QuDO39%33jl9os z#&RO+AE@|l2dEAq-XX}52-zhljw3GQL#iY*e8_!BSZLKvC3_F43BX(iDv7&&s9P?; z1L3ZNdmO39;v7%PX%f?J2kma+gZZfhNP}7oI^u>`mJE)>fwXfR9KS}c33?UbTj93B z?Sy*=x~80-R`r}i%KLG(23mHIM(+`Xo>lGM7eR3bsVx<$>S~1C zAe`z(v*dKI}p9d*AK^KK}ewUB=;m+p4x03#86@nH*k zp%|Q5C+dm{Q#~;e(dnsa#ZhT-GPa~Rq9|QP1Dh?gY%w|M^4awCjuGjlc8grEEY^;} zR{4P4(ov6@%6rq(&)t%quCBD5dmQJFs&UqH*IR9BJYZO98d92pGEYSRCn_|XEj=wO zJF8TdloWbmky1=FW29D^8Yc&yQ^B_2VC+wjp<0mL5sa%039>s?$C-^`vN~AZd~T)9 z9&ESR)EbA?ZaX(yvjzp*ZE9u5pqw0ff0fhIM%%Jr^+MRO?$#l4O#ICzK2og0n8~2G zxD0%@#&{#%_Z043tY&Dwc-dMa+HT_e@8XAwt%BoI{w=dF;2(>x;@xScKj4D!XtaFq z`NFmNrrZ%|4f9R>G7}#T{6rJ~kjannlpnc3ETM4Dk1w7-Kb_<6z94=m)!^eI1s&G3mvxLu1Aclyggn`Gjh0xL&8dDT`E&-yp{_{*8}?Jwtb zCOz~l-ZJTjnfQ2dPe8i02HvK{TwOp`>m7*GGq++?ff@Lkw5;Ny{;D+2F5@n0!1zR2 zOmr;XgJ+|LMcX8-S@lmX?ULXM4-V=$)8!(Dt(-wgJ=uXJ9u$+>(Vr~*Wl#6G zELXHuv#XVk^NrnxN};TU_>OOg%@Je`jSH1`!R#%D)nATwA_*hW-l%D5SrD4#p(Q)pcl^s)l0n=)+F{!O6r+t_!$|A37MHm7s){9n)zTtZen6?g6_LB6B0RM z$@y8hczrzy{l}a2^=-4f+RgGJ`=MF+Ag@=OkCv-Qh{dV)h&V~jM{yB1D5)N9PEt!F zvM&OHtT-<9FE3ai z%pce*F2tc$J3?}zI^K+s!-n=A z*s;~tvC}bdL{Vi|=+c8eq+RX6Q<$iTjfE9wXTe0mAd*YrbcfQC*tl4m9pa_sDXIZz zvDIvcvRb>?yH770&^jhRe@yFuvT5Dz;a01%#}6LeZP4_u2)(zh(H?Qjw-3YZp4V|>Ps@9GnRsNh8}`jDtwQ}#8b$p!K ztX+!`Yni&iTNXfVS3lyEThh!ga6wPt=WR#NMr#C+$@}Y0csI_;Wjuz(%hVP_Ry-}J z_f7njCO#W@&VxFtl|wr0T0X`|T zo_Se;$;FquEW(m*QO2+SVkk*~eF7-afjBRG3udnTeY&qc|0~Nx6L^0A{;uA)J31aE zyZj}K4GoFRN=l1KvRZ=ec6*eYI`_=PC~JgntrxRnDdRHZT&YgG-oKl9qMlIK50ztJ zy+W(C!00|Mnu%!J5~?1CjQ403*_Z3m8#bfTkQkPZgATenI-Ylg5O-=77ou+{BVC!z ze_X6@z)n2{4|_1~DJiuV$8k4YQiwhx1_KUsCh}gi@WsVw=}TwiSS?{zi%rX%P;kW^ zmtK0u6`uM`OV}GE$4(?}?J+mFxPIk`5i9G9lajO`YjCh8V-o9DU2(;oqq`QJvvrQ*MnsrJ;RK_N245$p_+ zU;ChrEHs=QacJCv&b0)EgaoO($oIn?+wjn4;ac>Sky1C&6KSFBF>)}9KC@F=7pA;~ zRIV-~|J-3;+80P6ztQy_HqU_W z!wTgWTyMJepHgJx5nHLLovTA0Y+9HH8o}4G1oqq0^P-N8+)lI>V2`t1>ez@+$tra$ z^#nRL{8Q+N_AW@FQTwc8H%&JPVNWH@EeW@*53Yv>U>5oa9Y+#e7p zB!l9N!|td1xy*D#O&j*an*di-`&k#xs)Me$vB{MH#hYad40|s8_lxH8hkThe!&nLg8HpYA_^)IX+$GQ;2-5u z^4aohw);ELiy*nk9KCIz2MaVJEs?;MJnBde=|xZP z8027Tbp&5c(z%q890uN|eq5qs@s$u0YuA#o-eU6hr>W|p-BB#d;!gC50<(;a?~U(Q z(D;>7&6byujF=HUq`Dd5zYd6J)7;qNsjvnmR2p;>&f{0I-_lZUOQP+t+$i%w(_dcI zP|{AD)oBmiscduYa+;|<^sjP~(-CT$pmnjrm$G9!_qx8}fZh_~9Hgyy7NA}vPNvHe z>U7a^Q3o4QDD@dMS?I$Ql`OVmeB3o!c6B%%!J&?z5NF4C%5Jp=sgA#gQ(*-o*Vc}) z@(HJsPRF@s5=b?5%(CDoA3TT0ToS+@s%vR6rH?XbC+%p7wD-@Di=MmrS;!|3?A9*^ zHMi1^imfIGK@3Zf){!6PbOZ&5*enh_YdbJG(J{XT@p|^}u z9-#v8TC$7_;6KSnuZ751gMM)*`b5GD>HXGQPI!FnNQ}2pZ&TV|8QqMo1*5;=X%%QG zOtS=sIPI}{Zc`n0zna1m)3bJP-p!TySw9frlG;xTf;tUSTp61 ztQmS@YyRGl``4Z1c4HpQuSaSfSudEEdz|uv8eE1i#%#grtUfk|jicWzjk{XN-rxq1WT{+5kow{n&s8v(hhc$6pY)v$)M6;v#?w5(D-do2EQ5L*OBA44#SqZ1VGmhZy zAptgF2{y};@kUu5^p&M0`hsw(dz*aWTE_+9WE0=$BNvVK&S%kFxqn>8BXHm2;(1f$ z>6lR0CxG$Xq^;-n`T2%l^-CMrf-joUZO3}6Z=U=;n=RRHd8209C9aYMm-DD_%7as@ zmrpOJw%^k6Ii?qaoVJeF?ZN6Qn`ivIe&cSdgIpN>;T!W?u=0qtx(W}^DA;Hk)fnR7 zQB9v*MT^gqt24{T_UbjZ{D38t9+@2{@+vYiD)K(lENV;sxbm`zMfQ%pde7nr>3F!? zpq_bES=Np>Y0o^Rm54VuL#a<$>`wsWT8%q6>Q>UT(Vx+<7gF3xGLs8EU?dZD!bm=v z)7ZjVaOtV!=;;f#&&#zG)T|85m<&SAqH(m|h0#0-PmWxoc)}m)qLyj@##}WBky_F( zxzD8))x9E9VuBnY&fiV?jqFidF(f~?EIcf#&}X;4YbX1y2y%2uNeD|yPjX_|9%3!C z{IkLflBtSS5&LkwuZn6pF*bqoa2yCvOK(5_{>?R@C za+%oN#00|S(f_@w?w%Q026q4aByLT=uC9Ld>eYL%UcGu{vn%e3qN?V$l2>g`3A-f6 z66=>Ag$tMF6D@P?$>psMYr|}JYg?&`r521q*%}(@Z|SPGJF~yAI@xw}{ZwoJYBl=+ z#sKy2DSXU*NgH#B?K9w{uLazPzof5e285Ow@JiFGT;7U$NFR#wL7d@6a(gHI75U}M zv1Y*G{JSK#Mfp>)2*zo$ZpUSUt96D%{`DHc;<#S0{#3t+Oo+4Q^F+E2R;Cs5g=9jeA`+ z$%&5SN}>|SmQ(c}K~-1>L{$NQ39Tl099~zzA+em0H=i(`6V>UtBKt1L)%K1CjS-Z; z^Ig*&{GEM78SSYm+q5+c@h!5DL|xts$gYYktSl&9iMSx@4^f)z7J;!-ld+M70|n*F z^WoexB3i=X8dky@eqH(y&IVk~b)?Z@#PeKiP>=B?v5ZO`1^=)tgo|G+lkr}pr87QI zv<`fvuDd0`uqtM@naf6MY%wM@q(zy9GBk0N*^&i2X`{>Ky9Rat|nB_dxl@G@Z^1~W@Wj-AKh~H@N0|oGMlbE?i zu%4D*f5`L^e4l1quj72r{24W=39$}Leiw*X&TBNIp0_zB&YzszKjE<3oIN{w`%dX~ z&^lOl6<`zlC)wRxEv@R?(c8PDkM6jXqA&1q{0MKco7D*E$l)~05%3~-v2*2V{0g`a zo)aN8sU8}O0`3J|cykF(Qd7W#H2Od}-ZDPA1l&RU?Ku1Zwb&?Mj;PdJd71@?@-9SA zaw*R7q*;J~2TX^>iV@(Cacf?{%dk_DW&!lw$Bg#E3MV*vI@j(4dGF<(=i{-|`}z1h z#=W8R-Q4?yc#)-7_`KNk`Mh@0EI{Dxf%c$TfS?y?69F$Z-Je&UW&r|Tf)iZ%8W^X` zUySc?INC{c#;$qPH_16`fJ-m#am7GB5p!vd3QbxSM6tlc_m+pe5u4whJY!8SZu0l)fTrZ{g!ejEyoC&EH&e##OEEn_>k-PP>0R=$N?RaivoFc8N)TT53X`0w z2jL1%W>KXF?N+mL>?{Q?KBQ!a`^w=xb{&(>$MOVpIn2E;!$Sw(IILIHuEhk&ZTb)K zl|az1`h`yCKjd3r@H`_qEC^?N!1{pfP%U=cdoUr9eye_4!i2*ieaH4&$u51@X2 zR8)9&AIsL`k0RZq$Z(t}$8KcoQ9>-+#H8~SmFUMY;(Y&vHqP%5`kFB1<5s}E@a1tW z%HgCf1>Awi@1^Q-v28qhrF!8QPDlPe{MBXjEv?mYf2Sp_NAQ8R5Y$+Cfq&GG03)fw z>a@HZIILttP76D1aakRfY$*&nIP708{gD#1YD1%5OAWHfa_5N zeV`5SG~neFT>yKa9Wu_0eb2Szfu|N|)5DGopE&Vu7gh-wE;5hC$+-yGD`FPs4Ry^l zjh^1ufBHybraR1G{>=cMcDq+KUzojP3-cuThIJs}$N!z#rA%iuCL`3B9zuN`uCvXFt%v-}#>D zPX6?4v`&8~E**vU&W`w=6TEv-C*FM;vi%OD=ILC`7e(;qi)Wu_JUcb_?2=l%`8;;F ze^Y-djJm9>gw4t;Mp_sO|8DuTUEhAGMP|r8ekq>1|m2b|Clm zUV8g!(;KGUM%`7pryqC+PhT`0GmRNfE48O_j?pV<<@2ZR(Vt4>9i^U7q?h)_4d@pQ z=#$&97>HgYEM*O<3Q8NL?>691Yx534i(ebHym;|DM(H0L(3j7lz0jiUM-Au;JK~&k zC$R%UMl9wu`CWK0U(A@y(cpu}O&MpE79moEAIH+b^G` z!Q;|%rhn38!Aqu5gFZUHq4#zm7X;NNPlG-crX4i05dm4E!fC)sq>`0_@r=b3nQUR2 z6Nl9fZH}c`#2Jix(z}{T!{^P_QVk49J(LWt zsEUjyu};AL%Wmmjm8c%+inMN@tnEvAtTxqduG!u@eLlu~Pvfe=IA%K8$nt%|bsc3* z^MlSnQU3->c2%|3UC9nKC4H5RL7M{xfLzfQI`(RKIMuy8YAfoPidJOSboK8Z2*v_< zu3GB*hW5{{xnQuOdu^}PRoT;2mnu#4mxU?@n+2Ufk#8$8<`I&GorLv9$utic7{Q3q zWguq+S`~?BxRW3^SBMYD!MwH;Ia%-MY5kCU;r{l7*X1Dp5xB$UZtNVW>0X~sukY?! z-`2KXl1KN?OkX%r9PJ3ZFXcl20j>ycQKMb4;+PPBeWwl$@9ZYMg5G0)Lhm(lsZ1E5 z$71oE=oRiQ-b1+#VyWg?_;v7kkGn0}v#q=14^i&1f}qGa1{1T2^su=F2M@mM+^?#N7x$WUo+jJ zl_$7fPh8?~l5L0-BaJOu3E8H7=dkH2T_WPW>kar*rpHiP*H(v&o_ZH;h3VW0wN*{` zOw-8e)N2jXJ+;tQ)KOepwQZ0NVX+3JyH z)w(CLP5hV(v8e--9Vd;)o5!O{=FH8*P6>ND9L%$F&$*{Z=Pz3p8`#~KIiYR=nBZikT6dy7(Ie8wrRP9-SoP?sKVx1mda4WZ{g46w8|9JF%J=2L-(n-| zWDX~NkSl)_yY|Ry(2iMp4z5UVo~_k_Sd&9$@l}d#UC+OM1oo&t8s5NYKxCevuke&` zSrmU4!NuCA_l@L+nUImB8L0D}h5}(&2N3m4F?=g5Ic6e}}AuA8<=2 z|6SM!`n#tK8{sdyjeweABj``}3mf5e-A2Gu*a-U5i@1fbO|ua2Ragl887zd;H46by zSO^;Q$&JE7cpXq0(}HqOQS6j~Imr$I=a?ImhUK8apVs_BBs1QSU^!^Dzqn7c8~}yo zpg~_gO|u*Th2@|@U)XHmC-2apF$qwuC&|~%>zB`1^pw8-fQjVtBx;mRGdd^IvR+OA zlmCu$Wk%ylBX$#u5kgom5#@Skps~_kROU68q{|B#cDKx~b&&Qxg(T?^=c?6NKPyj)%-eQBNVLxo9 zj7);ge9X=3>o%klh5Is7LVFj;fmvWtz>s>QK&!Lcl8CS#%N2`u~m22Ypfu5t}*>oaQglm~DsT6(OY8uuo zC+@TrlOwK&xkL{H`SuO$c5%z3oXLth&N_%Suj~!OEU-BS&t6u)y3=O0`vSI_rizo# zvOAN#!`0(w4Go<&*|VjiV@prZ=FZN|k{oL9tBUUA*1_D0y?rI2BC9=MlkMvMtvgtv zFX|IIDJFDK_pZ^=U0u42F6A-^>q+3~XR&%Mq!6`-w6K65F@4&Q>7`s|2>4;sO`7(l z@=qA$Uorg>nKEc(5S&J^DF2k{X>9}(oJJYJ73qZoaq!PPdhK!OMTFC0UTI7$eY*0? z^&E{0p9*uGHTTWNskbWo(uuha`bGcB>UyWxo9!DqvVSC^u)4%VW8*|Z+(}}k@N=oU zk+v$L0^*G5yTAs$2P(X^@C+mG-~7TUd2mH~V<$>eb`JJ9`EGb=_#J*qeuw#mv-8T* zY~~@Zy~a@ERh$BoyroYSEr^zyE&;z#RION^(84Y+(ObaRG}#{rd(^%h@BV=Ihp6Sy zYlO)mK!3w~Pe7l&2Ytu0hx|UT?2(^RS(=aiiT9i+d-(rALoECj(4TT?ETAvl3u(82 zl{eELxHJ~fCqD}4O~Q7luXZYNiCo+-$RmmY@vtklx~0pAn>8u<7^|M%%~5a z5_=&iI}P^k5T}WEU-$xMf(u6x`T7azda(kp$G%d89A_+qge{)rk^f8#VTz$&4)1GK zou5{M9mQ4E#fY+Sn-vF-vaovn#aILO^KgpFV#O&IM6%7!BA>saI4`h5HWj(8?jn9c zD+$xT<@MY1UqCC7W2VP+3vcB{JXfTrYQTORdL^>dVMS&=t&R)qa)E9oS0)E5;cHU^ z%{3%RdYT8YaY3?bL2Tv3R>T!l`+rDxfjXl0LlV=V&q?#vQ=89xc!Gco0*X)l|zI@RpINNiMbS=FP}e^C(oCH~${E6hS=vj7v^9oR-GL zVMEiY{icJw{foxz!GbX>8b-LI{9n18IGK7*c1Kr1QxFxMn2)cy*fxP6U5}Xmluc z*Znfw|KOJU&B{KV>TD}k-YjbnzyMt=tzlC3KI%@<4?@<;J>V6tnFB!;qXeV;U9^if z)hg6BC0yIocWv>xEUw|zvA&g2V(zN`R;V5NRne1boNd>Us;=!`#@_57w)w;DHSOy& z**_6ZtfpyMBC)I~%l9i3Y9+yhXSGE}Izpf*^a)`N&Oe<~@+dnG*16D;&q8y&KOHHs z?i`$r5@J<@ZB1)3I*Mhn0XTco>pHRs00wSJO-KHU-|-=F3RjVY4Y>AME}PEa*c>u_ zi}&l}=tk_MG{>at?*)&uGq^roT>6N%PjP;s3$>8lPPOP!Om{CkaiPU;Zf8JVBX-$H9X{8F-~9bytQW9l|D$xRZ zmDa^W4?7SNEdqech&+NY$J6e^(bkYxp;0xz(1Q#tq@4(Rj0g#ScG64INkln3zdEng znAL9O&;mNcu0Dyxrf&-)4Y~y!JPQgx6mtxkVD~YUfbDuZ_%9iH{h+sZ-;VkAE39N zHZ7R;>bS^p?J4=jFGn63iv2a4RvOP^dC#xFt{wF9*%bLJ+Wn;V6f@%kw1y<0G)ot) ze)3dW6BDg)Xi(T{{}oN4wz^~WU+2Y!d>G!EnY`g^(ON0F^5*LP$a7QX+q z7W*Y=Li72;=P#Nr(`Fsi_lv&|I-fyyqj>v11M6o{YpylF(%_2p@&!3=yupCJu*c{X z@~?9Y;1Ae?y{>5A{d_f0^v?c8Pl=j8!Wc>+2B3`rJnIpvxq=;2_BN5AfNm z0)5DhQbR*3?6v$M_0MAEK`wI}LoU6ps}ykn#Wv(rpaq9_@INQY%1NkbS0xbi4#KV`yZDmCFlATP!z3e??z)IC+!Hy{SxGmXXh5ht|5}}%Q zM@jH0BlzIh>&P+mt`dT9`U>cKvmqhOM$eMnN_>I--edG2?K;!?3Q(=DD2t2et9^@} zK507D^fTk>+@hy6&R!Ky<$sf8$awmm%EAmgSp3-ID1P*;qoP2**oa7G^X4#vU zK#H^pd5C2LC*3#i`=6~OzngC!2EFwd&rrbDEq2b|ilyX8p>JN;S35XP`7<0{sftAv z9#)8-rwV6-ucCdr)g7{16`waW&{j>x6gQvlDvz%kPawwAX^RamkGv&fzsRoH!KKqb zaxOhIL0mez2zsP~pbfB%fDQOhl-+12%Luj~pyWdp(3i~Qqr_~xpsbi@FXLs&%PGpf zEJFq^{0`Pfe!Xvg5yc>xUT6P=w!fkjllu0t#VN8`sQacrQg1Wu!Ki zQJHG-Ddnp(;r@86FB}<6RW{C~OX20RGF5R~%E#m3?m8(x+z{?glr_(`wQpPH^jIuR zjV1$4q1uL0t1TEwh2sMeXH~i4LprId%0MDqQ(x||mV{Dujs4+9v{hhA5*~B0AnCO!7K_*B3i+GnIyzU^+p%OBX($@#Zt9D8B>QUekoJ?W6ejZTBCDsG9yYodGNPzjm_*(Z7$|(Zju~UTE)`7h+e`(1|0R4l_Wet$E6oFDAu-M!N>$(*hlyo zrC*ySz9@p7p3H;(tyn@&YaKki=1<%4AB%AD z{HK{!t7hmo;md2~^65d2*&*aF%fV^Air}!ncaf*Ku(To_`G;ItvRXyi!xzv95oJkk z3Fu3^Np1-!t^Ek-lk4e6T<;A_^e@5NXtVEWk zDE$|9kXxt%PV$4`WPt*X+H?yQv+un3a?f=ORlKibk$bLNsN%VfP42mFp)UP>-9p7v z_5`3;iz7Ow>%Dvwy) zi2M98V|EE)p4oAg{m^B#BA-^a&ZR2s4_L#;h!J&5520>&^e7$<#NzR$aT(#3qHb;V z#~$j?BL} zOZ?NweSwJ6YzNzh+w4EGpYt8!Xe02r2^9FX7`aS_hj)S64)|vb_+jh}ebRv6XuzLD z7Nh44`0WP#Y11Ehe$IO2JN*t$PVpexw2tVwRE#N-@hRLJj8NEkrnBF!u+z;5Cb4F3 z!8S3~Y5rR2oeJA#x5?7iO8&*lvbJp8qFRyJ<1xgTI*(=1GRxC7f3Ql3yOmY>xyT42RBUnNUfCVrkvDhm+w+${Yt8T4oUDw09xVZfBe{y|WkR^~bP5}afp!4>K7ejx)1O43e1pIj@X9YIOwi#nb%J;ZH<`Gtt&mdO4P z@T2Tjob*Ctp30N_5%8x?2lKv3a!1tu;yFSJQfZP90{X%RAt4B=pg!cxN+K45V~YG2E#@g2KEme`0T%ac*CwAI06Df@j-j8v}2g4{yv zAuIquxm(SuoE@?NfAJOi_A?sIZsPbC!l6x0CrSz^QAd=1in47H92OLCHQ+}PhbdNL zUzeO{gM-$k4&>)oB<2vix!?%qW{{#19|4$i3lq}_*?=eUj9WT7GQVbIaNW8@`%FXE zx@Oq;F57%>a$``$trhnzi?yvrNyU zia5}DXe0gUf!xz=X*_)%r$kXabYUCNk7wpu@B^a-hj$S#i0@Fe2(=3yxh2d- z4=-Avzmsc0{=2c6`q`VDySE?5-CUCg!O!4YFmEBV$7n(6UASFW@i`6u*1(FXfsxteZwlX1 zNu;L8);bo?%r<7$r>eV?PG|jKG`U(I2VLW_)aq1_EN`o=#8Fg_?dLq;gh#uI;gA`A zTys3Bk(#pF=0N>Kb9yr73k7{Qrdz#vqoZ_aAp2Or0Ylx6pq28v!rW_uVn+?yJh$JV zu1uOs@DiZJOQu_S#^1$U`TUfEOiwuJ5IYgcr(J>A`6=j^<9%A7oLCW7AraytZiFaF z1cs={n`HT+^EBz9vU@sD>h3xMQ{hm^@ZR(PbOkK2mXs+IAv-(um zY!e~`TTa`hLaErT9;=m2W+;hgCbKq`TH8G_H#adpH+PxU5wx8$(=*=`ioy5bwYkf} zBdNNf2Ii_Avs+zu)j`n$qD8RO>4Z8O?X6^~3n*l+20gNjWUGKeOKH%;Ixa`#OpGBs72dIKhKyqZE=LV`T)?qH zGAZ3o<*-76nKzYN=s}ul{r$z|;-Va_tjK%Bd-7FA{gr$zlD@0Ir?Qi&eo?Px!LBh z^b)4*S-SRFs8N>eQ48>9Kje1;GQbP{&|=Br7uwJVJ?Q0afGv`X;S}ER#X+$wHhWrI z+iA0_PHk&Db=Aae_&0B6*z50eNn{SvS%e@Re z{VH~X3!`$3!6^87&WhUJm5HmBKU#qL?zJ3QYo za8i0`?6)?a$HC@=<)w_Ck(gXpnXJT$w`x|^a91R?uD9*N<$raO1qUzQzf0eu9qk7S zL=%LV{`HK$#|Xw8%~w>4(Gy{ER3y#?+iJ5_2@J$D8#{V7B-J7hL+%Lke<|7T@{Zc% zvdZTFEDqZ{b`6i5HI$gEk!9y5SuHJ1t;-ByX;E_8%~s11o(tAzHml|%imaqgnI1o_ zrzR{Tx3-&ThPZn6N9=~e9x}eSILPu7cZuxLVg|}iLo7-5DVcqYQ|lyf5gWBQfE9Jg zxz_BZaR1O|D655iUBUJMN~eV{3?onf6F5H|Ztw$o({elf;o8*b5~F_789AI$<64{m zM(2^lT&)>f?NMA9V1g`qMJCcBWL1oMFtfutEZd`|CCjg zkP)uE<5)k`w?0!|*)e@`23g3lEv$L{@^*W%e{eRDn(nB~Y#(l$ZH`WN_pfbE%-b8r z*Ee^ZfBva+LCN7%Y;y7R_A@(+VqG=y;nj)mU4!+>)t!hO?O5N|yt<8edLawx_bnPB z+S*S6>rj4|FTrqNUT5|*oG&hLC{p%W$$_;ToCWYfWa37eGpk}gwijC>Wg69p(|-^V zL@mUj!*Ro3$>k&M+Se^~Fs2gK_geE5>3)%Pn>q|~lI@hi`I(b@d$(q4yFyY$OLg0Z z4q#r@lKorbcsxGVI6pEvf6Mgdd;x`@@>yCR8xqG`xoQ&R@|x4`YXA8!#68?d3d6DwAhz9T(2& zU(`GOd*@u}oRv+3n_IQMndzdwnUfyoopbIvJ7$BD$BNFWIQ`1WqFAPS=HVXV{CxADYRptrWE!<= zQ&VGOQDa|DIn-Qy0H=gO3ob1SqgA>ZJR(&;gm}#64hpZIh1j3SJC8BjMgs(!u zW?LE25))(vG6!-GJ&)sbv8UFqCM=ZYE_+OPO)#r7y$vj(9ZB|L1_q(4&&f1FWe6om zC~ZnMfpKqH<8LglD6Uf(vQIinlJTmzzbxz?xA4^_h$)+La(PR+x2!a%fcG2?;Xtjw zsxji9v(gJBcbajMNfsyNLMnhlar(Yt$mvK3r1J9T1_K@`Cn&E8wD@eO9%3Qnt8R*v z+sYkwmn0*-Dvg92Xd-OgRvNYk6P2MhyVnKl%&A(;j=J*la%9?bVRb`31I}~oc17sY zR*P)+#A>UPa8WT+>B5`PEm7JfO5?5raZ7FJKivrqQV~6%pYBtgmfh^je*X_ueESOI zpn#afm;P+M!X|kU-DXzI_sU4)l6{+e>s&vW7Fd`(DJN(-5uZAPrwoRXg2P4P{Ck{% zZVaZ1kk0{gc~96IiiNBEWgvqKYZ5lcerotW)nDWahpHL_vg|F2R#w#c zirn@~DZ4S|z`HCSUsXzVHE`LcoVOc{J?OkLk9gHN3Be0)r z9#yR$an?IqD_Rm|iK<|2S$R#U%3j@4Ry#dhkB`}9_hfxEQr{mfYbc9V2ZMEyKp+fi z)PoO>B4Z&e0irW;VP1#R*Wt_C1=6y;_D@jj{>82`c0h92?N)?7y^57`=o|}D9%bK# zfP;j?=rg^_+Mv-IapHs4md?&hNx?W&5ZQuk34-?(L5D5fB)xkg%vZ{I^iTsRbBWn=QSm*+zd?AgUohJhl)*xxbC%(1DrXeR8o+?I1LDJ*4~m$3vv<=;LIV_ccQgD)Qy9vsRBPl5e^Xjn_#CDtTE$kNm+AdC zrE8=g;Qa{ByW;Opi|1Es&tI1|YwtJb)n89>nf(3Naf(^N`yKRtJ>oU>=jZbGc~295 z8S(ss#`7)wdEDe;w;A}?BcCL?lzgA2GfiuWHl!sxq@z= z&mD9X;f~AEE4I3dia-N2zG3P16nu2~l8vKY1gQ_3)*_B| z16mo!_1pNXN*mZE_^Y)YR;z=kdH@mb+zKecn)af0&$^MN#N|>g%xkp!0WbR%VVF&N zA1G*bdZ8N>eNEJg)f6q>+25JbdYJl-dOWXI>TXU_*5l14srBqv-UoQ!^STLJ#BZ<% zu=}Zze$C^3W78E>Ddu*a!a^o+pL?6VqJ%2t78J}qfZzhL?xTSMdTz#;;jWbocXe#;na@Ix%d z{;0h}MulO=eyO&rR{#GY{Rcs4th?APtQ7fchWQwP1r}3PzS$Q)+vB3+g26y1eo}>a z7{HSN#p9?-F`f|3@KC`|<>N3v6&(6Dr~0r5z_v-2H`y$R<51@$GakV0s6Ds(%oasF zS1cfi_MF|~vTc`Tsmo%vTD|53GqZ%nXT>2yT}+a<+mP3NJJx;ZF-{KRkIh~ymT$Wx znI6NlO8HOD!l-EKVbyQC{^jw08w17OqNch73iPpM$R0o^_|-sR_Z;=!X@k-IYN;g@KzZq zjkKfm*bz$R(kn5$&5NvWKa!mvajNo#m;oTMj`f`@VdL^0Fa507bSb+5Q|Il7rp4|I z(@Wr`KSS-E!s8z_Jn?)N*B{zfalf12o8WyMVV|S-ADV@GawnTz_yYU989O)@>P@SF zXCGGXrr0ccML(f}6bi=QEXB|KnJz3&>_Pv4fmR+EoCR4(BjOOw4YkwzG$L|6xSF5O zu!*jR?9kEpKkZmRdFd_WPguIVbQ3R+#6V7*@<3}LTK)LmIlM*M`?%jL?gjoid=|Dz zb2u*^^>gdN;HWvOl08S)JCNQ8|M5tlK4fB^Vjtq~r+NDVXip#ip12PI-)a86KEfaC zEnB3A#Q6j~xghLijW@J3f*?P=j~q#M`}7&znKM?{tp7)@zvk}ETkg81 zMMjndrT)YJG(Z2j568@y45IGpg#k7w{YanXwTs}am^K~7Zc$W>`ANy^kuWmwnvFwXIW7aaT;fnNm{KumYo@`Z7}T+~U})7lUH zp;-xBE08G=B@CG#q*e2kCG9N=32>#g-Cx~47WaYcN5@K&O;Ss9aD22#X0{)*qRtiR z+4xivUNU=fDn8pj+EC%JxGjihC~oX;ogUiZV9ry9r&EKCeoK*A1%@eL_-Xi6;5QXL zN6iOAA?q>eJp>(Us;UiyAgqiDDLH^heIX7J>mD{0*t8_1WHLB5RwPRZBsR0va|L+& z6U#G9{;@;gGmx4d+G%Ib9YfQt1BoI_kwsy?jNSm%K@EtuH#Ag2Ffg25Fv7M&j%jm5 ziZ0NG3}wO9e(od+aToXFc7^ZT{I1g~W9u6^CDnJn@1o!bs;wTib&J}DG4L>jH~NGp z`Q<~3MUShFvI@TQuUdWb5b6_o`TG{m0e`-Z5q}|cD$TU^f~Wq5`-}K}*}@+1!P~gM znBS*x|7qzB++V`)SK)p;)-M$413br7J?^{t{Xg*g2<*x0O({IzXeNsmwi?4;6xd1| zArAn(kf8O5cn(Pq0eU63oUYXN{1gFh=kTjI{3?PI6<}}Qgi!^13KohOPBha;H_VMj*2q!W#R)Otq(zfzuW0RYUw!w)_Zp?)5;lx)_@4MKIA6(j6l&(0D zg;-`vv+LQvW1eu0>0f!fuX&!@-3<6G9Dc3on;d@a0<|v*oAOEa@8m6my+{KZs+zM3 zTv^c67;HbYSwE^MAB7TesvpAP&1O&9b}#PKd+iXO>es#Zz-jKZFRBf8BIPiJ#wQa9 zwFY4rV9<=&)kU?jf4AKWN04<9UGqHY zx@N#{;c%iQ!LMB)ILe!T4tQQU>|>;RJclLeUburDk#0mBId({CIv~y2NXzmk3?m3X zEP%uC@C&u2ZT}w+grOOVZ0&vOD#yx6w;#?ei8&pxc{6?1S?5Z`Z#!-8&}Ey$0|#PH zlKpaQ9w*_#9)K^1b+=?&asL=u#Ad|Cf(#Ny&Q|#|kZtp(omdTm9Xp6X9`qQxiu<+T z&*NMVe1NHLpp!nShPg``Ce3AV?x+Rg8MhQIC>xL-tZpopZSKI-+C(#D-`>zZGGp@v zB|Fr(l(vNYv61$wnX9*+{*5bUVyiCQm|4*uvbeD@k=VOt*L52k=WqPs-t%ssjr7lD z?~TolHq`Vsv@CD07|H}1DppuKXB(5#O)a}Nbgt@b{)EHn@?;;Xt?pQVR%Y%46N49h zGlnz1 zX+?B4x1vY6Ft}_-!!(k(Wte}^w3@QTs1XAOeywN@9>>G)6g%hhX%QpDoipI%AvVXLHbiBGfoY=f+E)1Wn zeRNMxH5{P(d1-(ca*7S3-;AkHxGAK zPt8PIH%#{hWt@4;*R#?KKa#Nbl-2;ndKOfKA%{du(7o{Il0qiIM=}8=*kA2-|Hph4 zZIRkmvNILc=L$9W8n>O_mifTxUqDoV%Pw8%a2&g>roE=zi=%3gMl4zLe1+7sebt)H z*xz~V96L-P33*8O6+6T#72le zMi9J{W;(m|AIdRrR$r_Q(AdQ4c)$DwaRp zwWVsXwXrH$=Lt>>l{UvP6D^)-Y{-P&wZ%wB;x_xLikoBMWTn?!I(oaarlqVY9q?4O zRMf+<&-a2#FQGU5Sh2<`|8@!$=i`qoE4LKqBuHXhih-9g)=H?se6FmmHF0SordqIz zZkW1sduQkNOQ)tTr9)LOof_J^E|prhcS!p?Kd_;tWy8Q|yCPf6UbQ4uk)Eupn`o;@ z1r)CtXRVeEv~T&)%!-3s+S|7rTru;ZE$y-7{CVSJ=dDR5*PJ&te%^fY!uIvFmQ`m) z)-7gsd+W!WnkMRfE;9}g@+n?F=2vORprg_c5#LF9N3a_p-z%dTb2wC(D;usXVExf- zUvur^cRXmcn3p;(+0hIq*&_0(+;l#H2*4BA;hF$rk#a>-kS!J=Yx^gda%2U{CRi&@gzEQDX?)R6tTwAO! zASa2)j)iNiWlg4QzNKZpE3>AB`j4%V9>@B;3z-fEMf-BbmkcrPqtllB;OAfj!h@Ph z_7s1B{v&}AZ_AzVH$g_#^K`k`W{)|Z!0}917T;t>+HP@X@MYp~rVqHGtB`>}x(z9B zpc_<2_F)7oq-mox+iJGF{4#c|&`Q?#sVe6G9ZqX9Kbd`o-wolkCXB)|b~md*-|z?w z^b4tI(*HEH3eJ4KJ=zS6=2SbsD+7>o7Q$NK0W*&CYf z#_Z%eZbwbSXTA^lOlkI`wHy?JOxZ^Zuk`O5gqHjjx&kjMe?BiymRG?WTB39po4&zTVw}-TpL?80s0E1r8S156pM8ZVK*!>VgY72t{z@0= zOGM>tC0$vY1C*zKM8yuQWL_C)fR zT6aEG;Oiz&+==Kye#G~n5+~KW(CZe1aI~}TuhNv1It#wvv$;3-q~KT66{WKULl(x`;I+@w6eXs1_tRm*g;~fLkKe*5~dx6mVfA%aZuW^ z-;u+E>f>{vg&)eFksC2aZ$^vB)45GLUv9^_DkI=x-iUt5M>Acts!H;e_;cFEumCm3 z9_ejeX$9C_`dIwI`#tRY8XBipmPof1@k71NbROH|mo9%l2Y}P~gFVfDCw&!|55bCE z0(0=K(RbWvphO(VJtc(&u#cA^$9! zL1>uT>u_MjP*u8}&TiFW&E8AEewTAV`AoxDef?NNBV8Lq?KL&+Ay}<7?d(654!1j_ zDi-)ptrkV?aJ$--?A=Pc+tmT%0?T@s)v4VscbDR7oJfd_6u4H0yK5ulIgiwKhoJ={ z3)|SMSZCBu6_GxRo%i*SFZBxx?3>U-A#m;hW!yWE&!2H)UkJ$@Bk;1Ik(waZ1WKXu z`e~A~wD=YmPuGu-BlSykIj42L4Te#;qq>sS5jP)u zhJrRXTf=?PSZt)BVK^2WZm1uL^RqHwB|D^Ea_*4-6+B&rS<}^+HIZ(eFnq2SlG{oI z6D1NO+MPcqDunu5JQiULlB+Mth21P&vtQ5s?jO654hOk#EOT1DVCLwi^s38OuDpCz zdSet`eps%7k?GfsiS9>@U)jq#ahx=cmF}zy>AXAl@sqcHVy?ClZ{b~E$WO8n_JMXb zIog65{#(!f0?_orMw|kTNPTcHt-F1ebs<8`V)AR}v0CAmuRwGh#b0rar6lyOVeffH zE9-xh+W2VtY5H@NjlJuUt?VZ9Lz6!`d+Pf+y_M|ng(K4GS`UrESFy-1uJw`5QW%e1 z^J;Ptx|bw;Bu3^7=Sw(12P6tVq@!Lm>jvE^#H-Px!Z$q0d+#c`W)I|k|F&_{+S;0k zOQn6TcDXDQ3=IwrhN`*~2pOl)Qd_JmGhX4U4tk0`9ovU-Op(Rnv0=Ma#fHv~m5qP~ zqR&ujVhYvSqyNZ0S6l*!>_Uu@?DM&NF6MGclEY=eMmc+tEA6$!`l6BXsrlArXY@8S zs16z2W{xCUH}<91E*}j?`a$vmT`MLB*+1EBmm$$3Qfk4O-XcFO4I#+(3N5KZJZ#pe_~QQLFSac-W|OT2D1u5 zt%w(csr?-07{KC;dlT}}wqb7w2ttU=&+8lda$LLS*e(W5^s*X-g&Zwfxk&>-Z?Sldk`rDLm-T;>aTJ2gVS8%Ix8>9y-B}B%CG~2A9L@LA@@5?+jLISc^fB&|NoKme;3)#X7z^rU1U0!LGs;*UEp(^rN$J=pkngA zqnG3Fbs`TR^=B4K2aC27NA4{?cC%kP_I^+4$&*kx@cMn9*8^!q5esyp4cS^)m4x+} zXI(9_wYULx{E0UZ`9V7JrjujNb`bvA&(Kx;&J>=6gX9?eC>+_w$39;_$eC5_Q&`(l z{CH#-Cs2pW23m-s~LU`#o zhbpHNn{~0~}aiLS|u6=9ov zmYV(xx($A2s`^g53+?iZmjCUXsfAdKselG(Qg4r&?=;ZWXlG#MiUMZg)wE+g+^x{b$~U zPw?w&o{|y|9%b*>%6w6$i)h*J**DlXm!hzx;2VNA8>q_coxEcHn_a8dcCY?}w_+#z zhE&aKZCXs_!g~1~qH(zOLWA}MAIknG?7&|ucEx7FANFzmYsP0Urbtcp2^-DqlLyFPoS-ky*1_MB?AGa3h=60SdUsy^H8@~8Ed-67EU95bIv z#I@s;L4m<0U@(ln)G;ukUdTeuYcrR+dXsr<4*NKLPC|>b=MV<$lb{1o%bv?_!k)8D zaL!_blIq-SX8PA9#IERQfdn)nu3-;j{a-|OEgG?fQb4mXv{A8=b15IqU!1T%+kEeSXP)g8UW{(>QEynmEy>W^LXChUKfLm_Z1OMp2h8 zVH98&RSt~~mU{xKge5ndFIrVKGKPD^w9v*8e_h#<&#M*wxRIUbE%Ew;aDrGpu_|AQ zFIa3vVve$S;2#$~NDw^Q3jR#9Qg%7}AXcm28-LbToNR3_%0sWDHI*#V(Q8C7#8TfE z-!Xk!TEYIAEMANQtT@8kL)wgb0^>mHwz<675{lzvFF4$ePrGc7LeN_gC-++{Br;Pk z`vSXDdV|K1(C1osUJ%|&yl<%S6;_D67xs6C`<@#D3Uw(|~zQtzMrLtFqp!O<% z>DV+HjgD^W=-5P?xHfel$*7(k5ot%PDti(;k*sRAMpf!3Pwwj4Hd$Xkxvi_~bqi2Kigf_fY0MNEBg-sk`AXLbuaW4#FlhNhypQEL-bHK2krKNG*%C zE{{D@(pekoio`SJRc$f*ugk~6k&co_V#`}&%TkF6xXQ|ZZI888m374Z;Vtv;ixGUPf4np7JkJZLnIlv3Y6p> zogV^0J*K%1$Og-J$~@?61U>XxS2a^HM&sJ*vB zz75L->Q`~z=Mv?;^{cC(9%p+;x1}R}Nu%0Gb!x@H#8QW*)Jw9fm!DeGc zZgw`!d9qi#8O5_^Usl-}1n`wQSXVJiIZFA77sc5}RIiG&yh#k;dl8VXLHaWB)OIr3 z;ke~pC?c7RLo`XLf~VMWm&bB#h!J{7e2G9Mn3xl4q2h7Mt&Mr`gEYP90 z0W+K^mow=co7JsYRO#5wE+2YHoQw1yLLQ8BE~fF1Xhh>wBz`6mE!-C}Sm7Z^&Ze;~ zeO9Z>$&Wy)8^YO0xigURPdw_`y}H|lG(&LZdzS6kvokt)+KR@4Bac7@ijVshcCl!& zMTUJ#vHA9Acxpe(( z&%o^Jp8l2D^Ogih7VX|KsnjNnto%03n|5%0b3)wTqg^L_?|C9T zugUV)%;vjg*~cK^UCuW=o;MtBmm~WZtF6y$e#0z3DdYc?JvS|_XLT|%3E>nNkwa*d z=MbuwW>~qr29cf5zTN}h{L_eV|2)dqOWlCaa(En`{1>06oI7biSIcJ-)ES4z=XsOK z^c}$ar4jZ~xf1Zhm_>?AdzAH>;9YXefKvuNs%IJC*UMpoBS?|5_S|Ng0=x(CjdByg zAqJ7J$9gd&$13d9>5}dgGp1n(Su%8lokJ2UcgF(S@f`PPf29q@UaPlw(STADH) zkZwSo-2Tbcu~vU|DtCSdFW+eT7wK+_|HrsQrw}Uw3Eo-Cr*K%qq>QPx!zm9~6sgf} znKk2FVZ<43v0@JeeQ~W+i#W$SwHkO|^HxBNOl>lUQZ za4D*Jg@wmUq@_j{>lf7>((M^5t+Q%oC+rlGW8o3v4T^Bitz!Mf<`yv%{8XNj1W^u3}{nT%E?g z%GZ%)=RISHZo($viso|dT31(I7L7`=vP5}#qD)*v(Xw(57nshl)zUqr*TEwkxx8r; zR&4l!6rWd(VEM+DEcHg}LM}1u@JO;HSX1P#jQ~Q^CTXU~7p~OiK7LPWl~bFO@ILHh z%cYZ%eI8%xXh+v!3;RTI@hio}QfD!yAtushAKmc=lY!MdNI$7$J%$g zVxn_F6=ZNSojLPL6-0F zvhwykQAwPQ-B#rbzZCMi@C_nF?)^6wiR*)l1U0{$kIVsrJvpJ7dGG~LHB+GnC% zcMywWK9tF{smfXlj&IpiIjUZ(!W^@leI*u82>VH#Ywst!`T*~3ZTgnKOe^HifOJh5 z!o?pit1Zc8H!Z<&P~{=N%#doKtiGf=3?V7b=%rL=m6(9jH@eW`dq|qC&vEwuK$@Mm zv@m0)PMlIkSqva|L`$i+#7s3OcfPiy-1+PhVu#~;H5*#En?~*W{89Vo;^O^9em@i( z+Jh6G-(nTi;|EBoh(KnDc2mPaIX!OsMd>5CdU2*@EcF(mZ?w{uOnl8ls zA^kaNHrzj>-E-}L`@^s>V5Lhpu@6975YGyHv}w^!+WN)dPqR5BEbZH|Jqdd%fKexQ zE!>8)YZU2v5w#_B0`8CSFC_8&20Wj{Ibjc)Oy9?J7jLB{F6B|`Sq%>^qjCS7cF$!i z?qT`x@>~Mq{soR_&B8v@r;g*xksM!Q1v{TFzX!gA^+#g_Q|3&DtG$>u#&iAqF_ED! z4eec=K-xVQ0vwUF))nN(kd^ys1`ByvT8}Jxk|bj-%T3XsY1s)IZnGGNM7P|?d-riD zJC_`Y;0wf-9^f_de#q6QTTS_IqTgg#|2N8wIjc#$p(*$)uspKejkMqn^CmOGPad*J zEmp71W06Nm$#bh|5Hb(fG8Z-CL-@!y(_={O4p*Sr-BLSRA;W2{ zO3pFa*$H>9)m9rB#{hJ+A~6ctH-}8G%Xj=Q?VCd&WZhI%mcg;hjho7f68L*Ti+1T{WS}ZB zY@0CIHp>G691|6gUM?yw7IG5S&CmY_)=l^SvvuQ@USYlRCX6UC2SAq>jHw{!f&$P@ zg~M#ot@PJLqYgV5jvIw(={J}?&b+&I^JQV(*d$^7YSxWBQ<*F$>!zxvri!fJ@?<6G z`@gY54!{a|gmeJO%j0FwRXL%>`S0&*g#hQeg_SsG>SugEuQ3;bItCBo2;EvGqG)|_ zMR84$*Ns3(2Qn+zaWsO%Sr#a+II|chw_0)3y(D=(2vYE=?&1n)5lw4gDHuALw2H7; z;C_6aYn3$i{M3OH-_-_KdhT)ciEV(|C2W8n>ox$e(DwZSi|aX7+MZ76I_v>m{2bIt z!UD#;o0RYv*dY(q|*pZ`jTw7bTKQht}a(>3V!g}5~2yt^jNCO$}8~^k3~om x_$CEg?lPkDfv*TJo~(9A7mNX9!r;J-{vtV;sulG{{p{Y8f*Xn literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Medium.ttf b/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f4634cd7c3f16e8b1ffd01f2ea4a824b3b25991d GIT binary patch literal 78948 zcmc${2YggT_dh%{ce9&bHp!-MHiaaVgk)0*H5CX|I;cQMLMOoxs)z^{^ilLtA8e?o z*c)~qMMNKLsMr-15wI(EL`BHH-*ax+4WK`N@B4rL@9t;jo_l8I%$YN1&di;eJ6A{{ zL^M2`5QA&$>Z@O>dP@kE4eZy0M~@o&PE77BA%>nNMCFx($BwU77i@S(2-hJY!d8wN z+uOV5;faYt$Q_73eeAfZamz2Cdk*fWc+-J{T(6Mal+yC4n zL?-Bj-!Q+esWJbEd-u0qQbZNecg6~S~D@Uv4a zgn#L?gZ5b8h|V!V-H(eSv|Ns*r;X##RH2s6n%%*~lpbGd67s~4kea-3b>zmvX;J-t z5t;_M3GsgZv|V)FvwiA?z7f8#pzgL+xU~yKSo~}%4HSYl!*-+W?Gf?{3YWjCt+;rE2ELRy%}C?qs{~dEqK(=| zjUtBnQA(NSz3m zEZX6Bh;!ht6$C*TvO8aO=yNr!v$rpfF3!h8~%8j;HI7F%i_v*dqWp<8Co{IFUP|*C7_7 zB$c8!{)>{*-MS$ny+6L?_gpU&SVz?LwKIS0IgS$3JpaalYKr;a?`8%UYT<)_dKu_kb8;*E0mh$3)E z&J(~{*L+QG8pRUuM`db6&Cln&m*SrI@Bl~oRzXe#cR(f{miYf(LZ)1GsV;?7mV!TB zTiTK9Qk1h15+yEM0g=>N5u*tuS^y46LV7%p7=4nMC)Q-X2(0PjB~%RBh4_~VKh#%@ zguF+JI??wen$eZs|D>OuF1gpB6br?2)+AkLJ;ICJi$ottl(dKH{KPU)S=*6zF2b82 ze-9+FnCpi0kMu3?g!-6e)ZSv$rzyYQEKO5_`6rci?~~+Tk95>h=Y#hG)DG!IcR?EG z*AbEgX>vO>N!Mq88yLyysce}ip`HobQ3~42#JS>1u~|GUc8IsdK5soE@UskTKQTVq>qyTNvs?FrjX+XuF-Oppz5HJL6d`K2Q3YHBj_W0 zn0<ae57RQs07aVUoK5`s%{2Hu+BZ8BH zvx9pF&kAl2-V}UK@Z-UULPSVLNPb8~NNvcdkW)iug)9nL8?rv+`A~bPGqgT*Oz70m zxuHu!*MzPQy*Bjy(62&&36o(}VN1i-hFuzVUD)kmkA=Mu_FmW*VZVlJ;Zfn~;l0EA zh7S%O8$K<(E&S~8OT%vrzd!uR@E5}03jZYh=ZMh}H$~hV@$ZP2BHoYqDzY?kUgV}I zd(>%Bv!gnqR!3bNb#>I{s4dZs=-BA2=z{3}(Lj?Gzn5{A2#{BLKa>h8*oZX$J&MM~!=VWJ#bFuS0=f9k{Iv;U9<9yZmzVoZt zs@M^+lVj(^UKP7P_S@LsYn#O>woj7P?lt*14{9-RQb2AvPgB zp?5-M!j6R36O$7sC$=P>k$6_(C5hK0-kSJ*(uAZLNv%mMlFm>1XVOhcpC|p4bSya} zIWaja*_&LIJUV$=@`B`L$!n7@O};Mq_T-0>w&vB#&~plvtG!0H|s!luk0n++p~Yn zKHAOE&DkxjTVA)~ZUeeq*=#_ZZM)XpfaW*7dle z$BjMi?it$C)ia}KVb6g*NA^6u=lq^ad#>sE&z_rl-rsXu&sTfy?)gd2?|UBU71S%b zS4yu2(;D+}K($}B1?;W_i781g$tvkpQd%;gWN^volF21AO6HYxl$=#^ ze#z#Nhf8*pyj}8X$)QqPY1|3_g3`&Q7nHtG`d*n*S?7gxd%OlDcm%m(oup+7= zp(4E^x1x7NdBvcLNfpy8mQ`F367q zdH-hy6b-m_pc+^(ux#MSfy)PO9;6K#G-!R5tO}``Q?;YIU-i?~FV~dSTwilX&BL{h z+8gU+U0vOVx{vCI)!#5Uc<}nczYG~YWaf|yhCDdr<)LC|#n7gqw-4Rj5Yo`l@Q;QU zhjkxz`mnQx-8byW@NvU08vew zAN9(p-J{j$u_UW-NjD2nFdt*Ny``b7%E_ht*xRh~O<9d!O9yfH{igBCA zZ5{W~IN$iP@h#)882`lh&nF~J=sBTz!i^JlPWWWP9}}}Dj-EJa;`E6ZP24zf^Tc~5 zK0NW`Nx_pmllsuG9#0wq<5MBxXq3uVo8vI9FJhc)7ehn@#%+DXD!B?h%H{HUd6V2C z-Yn31!+oavJolyUE8JJPZ*c$a3G+mI;yuY8w-Gb z#OX=&qOe+qt* zc_5tv4>Xxk4wN0Z{lMG1E(AVzJ?$WksPiR}UZQ6G2S#5{*y!MLro%VyxZi}|LY#tkpodmAn#s2$xS?{V1>Qc2#EmuwI zDYS|OYLaSEQ!obGp`KCyQPb4F(8kj6+}I7Rs$LAn_<1bG>iSr537+q77k7%g#Dn5# z@q+jmqr1<<=i&#oQq5Fnsh3rUIwpRRG14iMWCou7D`l0emy_gaa+;hY=V9EpQQjbL zl(*yge=Az)JMshhq5Mp(P&cSE)k|u;nyPMBkE=V?6Y55FwfaL{qnwx(*{NF9wOX*+ zs9sQmRF&#f@2IO(qZXnDs#x_8)u4u|VQRXFg|!I9j6@7(CQ?L(7=ZRvg7N=UF89U@ta=Uz1?t$gmD_k-ZR_a%gAj3quj1^fjL1fEB z;la#Vo=g!vWSXdw#iB@NiGG;lsg-4z>&X@kvcDK2`-P~+$(Pu_sE;XL-G#sxV%?9ChrlC$h*X|@=@`O zd_-)Q4~viFo8o=BOS~kvi9PZS@g8RFK9sMcO}r<*lpl$&#EZWa&7+r$&{e(|K-A|94^ zibv($Vk>6Do|8|A=jD^)Kk_lLSH2}az}(oU@_n&izAHYFyT#Y?V{u4+C7jYO;$$#p z-+UqhGeeP>VTz)eAasj1@f&)>Bbf9212aHJF{}8y=r4PVfwD-{VJ5Cr=8AIJT~x>( zqL1t;%4D9HCdY`=hsjw)lr!EiRVlhzsQ^@h^FixC-;SSIbMp zHFCY!ApaqD$^VGg<#Xaq`GR;`z9im}JH@;5W$~7LQ5=-}#W!-F_*Nbe-^)+cDQc{m zpvI_)>I~JU7NQ?sr!G|Is`J$a>O8ec-K=I{hHs0yTiv7XSC6Rs)MM%a^`LqbJ@xDA zP4sh5s<+VBJqKHcVv10?7ju)Uwto0HdEflTj#fxvl?bVtQsTkq}{2Os1{zjbezY!lC=OvAVZQi| z{V&-+!2TZg-(~-G_II+sgZ*u-ix;$u$J^SQTg8?|b6RJLyA~}fEE1a+EuOJR+^}fz z!bRfh6)o*;=qE@oa@eQYatUo9KbL*z1$2gHLI{_{zFxivhNIZ0^%6-dC-7;lLZa=G zAH#kq``zGc=&e%G?^0MY``PemrGVyhL)cLpH}5H47Gfxlo9D3GhXmaaRDr*+J&%7s zZLhY|`ftJLqeGjiO~MR*u=)Z21L|$GsR!ZDRj1+amPgSO7r+8PkG_2js8bHXpg%-p zVEp-wJSe}F-^uUg5AsKhMt_!vpc1oWTN-Cu^Wm7@Qt{f^@ zg^c0kekBSAjsa0e%vX-71jsjG!+fMUSaJ) z_EC{oap?nGIA7}nQm1li1$o<56ylCk5gcb6@K}$4Z&EwN_oG{;4ikSEyUD$`GzaXptCeM`N_@)MB+bEnahJ30k6-1gWNIsal%m z=Cu*ztQyq}R8EVUiFJ*6Y97{67N`Xxh%6wuTBgnt!5GzCg7t`hVZ`M`AM}}sMW6J& zNK`+n!y-fdh834wluGAS!W!wavC-;;T&5;bX)s6UFHIzJabh$C2doWlEo8n75+*&# zhMej7>0LNl3!-!x@ReALI21xFH(f)d_=V%?IS=q1G-%}*w44YnFleQNl2jhm9rr|y zYQd!D=CBggpW{k3B!H^j_X+N#Y6-v>r zUKMgzqD4+&es%6i2eZKumAF}w^dKQ=aw0%Sm)UrOx{fiWpWTHc7s^jk)hQEKk#JHq zg0>4G5;Ln*JLC)WBvMYJd-etMV5X%OPWe8DQP({fcLkO#gwv2_o3TeCb}!^@L-|~= zDxqo*^y?e-A^dOE2k<{p@5BEzAjUq9@iE8P%P~IU7?1<>?JH0;sk_l)Rzjl|V&vA0 z5%VP2f#G-t7=(V3tQSUg2x${%@R-gcXUYy0%`Fq{klLiIhd&RpMO$S*31dPfmJkfO z&G6?iJV(tZm@(ZrPB-zBRd$6{UDyAr#pxQJYG`FPDB(GX={cZ_1Z{((y4P*0PzOOzU-=3sSp7VO@9aNiyCFa6bEKzYim`YGtM%2h?Guc`x-gE@^#RST$_ z>aF^y8bH~qKvk$}Kv|f*DOXj1GF2~CrUn7ZP(4+t8VFgW!`k#vC29b;|61u~(`$39 zI2HFTu!H}`6T<(;zDtghQ&gD! ze+BFC80zL({B7bedeI>6Mcu4@-B|l_@MOJAUN1qL1PhT7c3!Q!&$KHUNOmbAMlm`1y^OzEXDOP@c3u$bumdR z7xfBP)8UD2k^bpZZ5z(-Nu|J&{Zb23p5JvkBv|zjDtb-hb0wFEX^JMe^}ZwW1vT zFmC)i?tD>*_SMzR6a}yg|L0wcL9%PeIe_~!N4!+St=H29@@A_CuK$16 zVV)^XEk+)H<_3U&^fqv~`o5#9_y}{1A7P%9o$r0|k?#k%pW*I@`&4%v2l0I0B3>k} zpJ1+#?%#x?_%F$5jINLRoyrnpOecQENDNLo>FPTQxCdr#2sc#z!nlvbA>SeGO3^?L zwpw>Bz7H+f#L>0Ew^y4K5RY(FSN}KN6!cAhlAm@6ypXQwt^jkF4FN6#a0uKWxc>5= zzPIHEm}C8$PAw8?a-N9!pBzRQ4gXb_ialh%oanG_lKOY^#Y|h?@eVrE`@iB+L~$3o zdBUy!#A%vH)Aorp+kRXR!%aiGBDWZ_pN?6~(?y&*9X53`=DwGq@9&MiEE;w;OGKz% zq6#|z%kj)!iK|z60aLuwFc;v%T*L^#gE5=gBs`c8FOmhqjoHnfau{UMAMXFBcnULx z>K&9}ugKSe!1o8D0)2;93kB|=D8X8QP&pXa&BUM`Pjqxo4l57(?-lG_`Up>`yD`50 z0wcCM+`ogB3pn{R%J(hy2E770lTpUOm?gLldXg-n;bO3#u$1ta?TChp5i@8t(KiA! zy5;2Xh*z#n@Lw5sd)F|m7UaVv$Xif9w?MX+VW#^s$aW_1GlAa({Efh$4g4z9#eR{4 zI_QR3;#9aa@im^)KSKS!ff?%85f+QOB6q3C!3s-`g~!v1ROq)nB1YQ@o*#f7wTqq@ zujFbj+&e^;mWy?hM$o0SAL0pgKh{QW7ln{RZ_Gd!;<=*0_8j_qN>AfM1zU2S$i+NU z1@-OnL*OqHAs8Qp@wn`IJfqAN>1wp_a6gUpGc^(Gl;OY!G+qlw9 z4AG$QeB(M0SDKromGrCN8sI3LoSDwd%fx%-RmkUg#Q7HW9gEe2btv0RxG#a<16`bq znEg^JfRDjls9xuccdS92FFtp|9l&nwtf@fV?Q{R_$8^ZYukqPJ-c*ZCFKPfB12^u zR{J7kBv#m>uqqbK>zA=udyB*F+{+ZUf% z+ph{W?+RSFskjOAZo8WR-YLR?8Y$E9)@dkdK*)Ay{D>iq_D8RmtI4 zmmGv!dQSf5)Y-^cjl46J1Dksryu@?*JA?#KGqQ0VjT@)P-~ z{0zG|zQD@vm+~u`O~<_2d!mEp)G<5uomi^Rt79E8U}haFjy$(6M$+s$R)de5Ux$?% zt%AfU{#kbHqYqaRDiVFbGW4fo#Bvp*oZ?K(3CCfk#-$QeqFAYtRI*ADD^#jVQ*NF` zIc`=%+yqN^7UouZqBnj3>;K9ih&i7AY5>;d2dOGmjTxOuVwI{zf3_Mn?i|bnosAiyp;)mWriQB#Y9w}mj>anC z7_1YH!}|XOFbj&rKjya7lu!EtQX4tJ6 ze9Skg1*(--8P8DdY7urL=yUqC-(dyz7p%k{g~0j!bFl(R>yWe}d6C#Io)OoJ8^m=1 zYk!Hbp2@T}gFOZpt4pwp;!;7ZJxY``vrtFcGnT6G=vCR~qQ3^!s;^Cqln-l8_E zTk#&l?dlHfX1I&jH}A#j=KWafr1i~*FyDR%b7+Uv!&vov6sw+()7uT|Nz9#X#oml< z=*Oebue!zEnDw~@R_|uZ@v(dJQY8Z(vvMbK+s~hBaC={RUfN; zm^nJYE9;-B&oO`Wr8p0>%Nww={tcdZz861;$I)wDDl#ye|1azhz5+W*8ZpCIh0)RF zVk73SzZ2JrYs9VMYRq&7qyPCg)~WQl%tJhz`Kvyki9I1l)iLY<@nMCZR`)fm?+0OR z-=PI-Az0z>vQ{J3qsOWdmte2TZd$hy`?WZXDLxYKix0$JvG31Taj=IVQ_I3Gf^OJ5 zkc(Yn-L)QCPpudBSQTi!wL-1PUNxh=Wl4);aqFC-x~e+;T3u#b3yrJSxR%hhu&Ab1 zzpvtZq^mLRjdWEN#(fpX_ZAv-s?00XEA$q69aRe&o7&r29aU|!+FD!Yg;urCX`R*B zw78?iQB|j3nYF@-u$rbh?M;gp%$(n{EVQP%t)sE2sin1pb114QvDY>=5+ROV|9si|Y0Ki)u>kbzFRVU0`A(cC{gm8lzM-2KP0FG-`BdcneEH>$>@TcdLa#S;@Nv0#3vEMYG`8zW zy;WgDx~3_r^OmTg4fdf{4Ws7jnVPrIV9;xpkr^$jt6@B9rphtYV0fs`pnYh^ocYZy zVWa?sB~^vRg+*ZvT{A2!D&}$_n{xYbt~~qj0KpcsU=gd@HXKFK`L>c692Fa!l$do? zWgn@N8W}*UL>FvPNvTeygzKWHuEb!V4{InGsW!qZw7S+=_E7<%s4dciYK>~GH5jNh zs<+l4S*w%u>Pl4T^%`|rY^sByE;V&Qqh`0Y8yZ+^6r;|hX2hyB1YTDdF>3Z=sCxV2 z1@jvhvoIj`I>)F$Jt;L(mvUZ(XlY@i7R_&5G&`VWlo*stbmjJXYwTlmfsL^QR#;SO zl%mMsy3{B|k(ooCeQW^HGNbTiWnp8Ft7LDHA*eEgRGC4d%)s~287Zo$w~d2(+Q$X3 zVa6@j3*;>_#8hS!qO8t7KCq68sg4T0XeZom>db3d(0ISB>x_)+4TkDW*&9Ub>LSLU zDC?p!$M`^5msdH)>#80!o{W%vJS)7Oae0M(B8w+%qF)>#6PxF>w6`ppv&cSiR(s=; zmaxhGKs{ZBQQh?=_Q@PYN7oy*QEZ5=zQR6*$%jrku8sHc+8Zr_p#Hi2!oZa4gsKfC zu4X|2&+P$vZ{%BLw2vy&VjJnI`snGaxP3tJ3_4Zj)ewAPv7^xtQlnv^8~ql#u_Zud z3j2gL`HLUgWEI5TY$-rdU6H|Pp}|n0Zjg#<%Iqy%PJ2sWY$H~+QS2In{ThSK8iQJm zUTkk+X=sa;uOT6$q}66g%N;F&)m~(fEGl)hbTP%c1@V^lvCm?T!e;qPN2Cjjyv3oj zj?2wkWSi|b$<<-AyQYCjF163G>a(y&H$ITR!KJr8WKIF?@WIY5oqyAU)o={NtX6a8 zI_4Nfm}3~{IhL*#dW*|-BVDE&>A785fcY&CpEs+$rKNR#V{7xACi{G@MEm>zxfkn& zFDkCF%|{7!PKsGl&@F@4V$-%3+gtUv(b`BaIk&ehoZVt?4Io#d%f3jr&al#^)z&F` z%efhVvT4ftXf0@fZGnO^T8d@04JK+04X8Cp)*2*r{erbNs=e6M7(=6K>Vw++7NpiF zN}Wl~h*fLoU0qQ`+ldwgy4x10N~K2XQqBw3x;m`w1Z!#en8FBpb9_I68P zu+~N?iVUtxjZ&Dcr?lR_D4^+;8HFz^4_kCxZF`FhL6sS#$_ysU`q(M7YEi2TV+^jgN-`#S{}66FXK9ck$QuXI#cEb(YpGG#V5*` znrEPl%aO{k(u>(jFSazlsII(^eW|XAOZ{R9S!!A7rMi_~?hn*8yTYjE`cnJyKr3z3 zLa`yT`abp*Og?nQam~I@vAwZ?HsFOdas&fr88IBr-B(q8z)f{|;7w8BO>y8&sdYnU zoo}KW{UxwM(K+~|;-)q*Brvb4K7k?C)(!Ond=uGdO3VraJv}U}kp&bO;O7<;j2olV z(4!eW2j7Hp_rYM4zbE1Qutu&*hV8R-)GWUUVSj0W&-my7Tg(WOFBxRMiSk=zD-f1f zFMu|4+RPxhX>;uC&*hu>HX!DP(2mIh@^pwcYX;-7q=12rrELs^cFczLWH4lA+v0Wu znzO`+w`k5XJ>DWbSheb4%N(4#phs+-V-O_W!$6z|Ex2;Cz?BUhuB>#pa^u348x^iR zbikFB6IUMm;Mzy$nKp(p&kPXH1Q}eGH*Ch@`SV*k7!G9< z&0yq=#-@4xTi03&{IhZP~lK=`9LXDyxs z2`p&yM~byj$3?^T;#r7m@WRm;<&S1x)Y8<}+RP;_Dk=_XS=506N=J){DRVUH1<_?u zT^iBUHovWP0V=sL^?|O}=mv2u4Q^Smuwyw=a>637uAAOMeMnwdUCN`U;=(e1#HISw z;lcoXp8&YnfMNS!|MmC;oAC)Y;}gv78dq)uxR!^oMQv(ZFe8LJ4}yp{gjE~#Y6`Ha z+`#E=t=M=R1#bqvDum5vKOEqy*I?eu(gt3C$^vhy_$JblPGDFG-#EL-DKNY~;HIc3@J8n(CQxPp z!CsxPUO;akJ6^rCMo6F>ymbKtiuKI6ZoRtB7kbTS7{l&*^~WOMb@6-k@iW9s3vRss zE)**|;{?BFA|mzoOfV0NAJ$eij-!M&ucaM(a27PS&lBzi^A^m*PE6XxslNw7Yf_Te zrLd$R?0Gg@yE>#Yv33!OIb1q>hxR1XPHBCwH1VLzM{*QuZ2KZo^NDelGU ztP~Hcx8UE#p(`*S4*KdD_)Y2-_^+rN;qS%_H05H4|D^gF{@bV&!q7hXC)FqLpGIDI zw<4zuk6gaHqjdfEx{m_2%qa zIIOQ{qv>a3U7E{jmN6OkdO1aQFkrOJtfO#;;eLRF=4I`LL+i+T6Ydqb?Ql=PJ&f=> z;BJQ72)6<5GPsN2&V^eAw+s&YnKd77Cfsy5y#10j4vuJ!gu^=uS^eP3P$oy=Do;(Z61eD4+7occ{LM_NaiJ7%mxX(gASS_7{80L{2-%wcDEuuJbe9EfwjjdY!11oO zaF<&U;V$OT^DW$J3tC}89TtQ(WaK;Bf`}KL$_xv4ngva;pwSl8U_rGOgw|(JuCO34 zpk8n}=^psWRQ~ih3yQR$U<;ynisHGCnmG4i3;F^0ui-v*?}fh`?oBu0USZtx@byr_ zZD-sQ@E>;HCq(8(KzF!rhEEXV+#4+DG7GxMg3h&|RTi|&g4!*J@|aI~xMy0p=@vA_ zg2q|UNQQ>MueNagP)f)O_hlATXhA)I&*o5q+zch+e28$|+2NdwvEw`(1Lw9v2}(Oc z@fbQ}LV8-peRmucO7SJ((hdlbwufjl^e#iM<8CKIJ1l6M1yShZR=fupx~EI%ZH(Il z+_hG`D;ZjE#`Cz+*5Q<&m1#>np(d2J(1biT6H5Qhgwp1k5aXIDElvwEsH9D@pfMIS z+=A*YXpjX}nh^7%(ad_z3z}^~lwt;_IIRnA0^>$^!8KSo9jZm>063g2 zWkFsGB3v&kG{=HG7L;s3aSTPK2B)f&qd27Uum$~KL0?ZnmI}CY6*87Ic{fU1UP3ktydInlc}5CPULLXo>}mv!Ia{1lvY^DDGk5Qu;9jyJkRz7DRdIq1hHhDcHiL zBw9G91%+FX-GV?q`3U8ae8_^nvmjV9Jv4=49N>6+P^0^jVb79buMB9X1?{jP;BZzM z#e+>V;yq|V_gK(v7PQHNuC*ZG3@TSzxb+sa&Vtrh&`Jver$*W(7H**h&9$Ir3z~`) zlbGi*7H+r&)mzXY#H&m$fnQ)jd4MumLaBgU3`JW|s0C4|%?f2GsnZNi`ptxrrzZWB zJPF%Z4|au;pc^OP_L;b(4+w($iE>CfnDjPyUY)cH@QW7otOaegAmEZ7<#<~x++7v~ zT+(I^y}`m=Z9$h?(8U&Xz6GteAn;;PSz+NiEU49jW?Rq<3p&k$CRosD3u?e9r3aU| z7I_R{sKSE07SzjvaxBPWLCF>rN0f0FnbZYJ3TB)N3{BchxWuF2;Q7SEI9T`xxUU)d z)PnX}&~6KQ(}G^Hpyw@Uy9I%=L64v(nDWCG?mi2;!-S~xfQgrzO&oKzk#QR=++~0+ z;<)Ep&?*aBW^4{#_- zq^C`I7ja)_+|Gm@sRI(WB|M(+patDyLAP1ZCKF2DVL}POC0xsCue5OMEohwut+Ak$ z7PQ2I7FrN^G3d>;aLp!^ya&)e$}RbI3j!{A8{>$c9!m6dsNRGUrUKGSImv>?SkQ0_ zq7-_(K^BBlEe%|W1r=COo&{xEP%6sdf`lKZn$az0LNx9}xjv=>H;H9$!+GtU1i5~* zpr1@AfkF>*=;vK<`xy5@7u?&7+XdW<3_WW>TP^5O3)*5ql;SQO$aBU8vMl{wV=Zm^n(R`Z9$(} z&|VALjRPp&B$>v;I>y5;!ryK|Pgu~y7IdEl-2n)e4-y&;Xd^=vCKSKHgj~rc6n~is zaf*vLMWlrbHlg^#7WAnFoeO9crHEf_{Jhq+j(*aG19|wP=1r4zv*i9p} zAD}XhS7_m2360Qf3vydfq6IlEh;TX;*hwQTtfc`F-^@!Ktfc`RG9l)a)5d*g;^Mxv zAlOYK#U2ZK7Y9|o9=8+z4hy%owF++Qy{0+VmnAMa$6i!!>-6frd@{78I{cG9pg#QQ6{{MoV?-Y6id^)WW zFy8x;GJ;kGWR7+h!$&Z?i`oQC=P*g}yV4l{IQvK8+wpd##QO;^G3GYFo$3p~F_=XL zH7%U+m@5Zm%;HKXcDWP03%&zy@PTJ78NP;H>{2HBa2kVD>OS~3TEjq0f^*cv-~==0 zfT3rM2Pfh?ijOxVZf2iWY~mHo=tGMLgZXKxl6(Vz_fQw2&T7Tmt`!PivAM&T*xpIeQP~D|Yc3!!9oMjapA& zUg6b+UA*3~i`N?-6rB{4(~eRkha1&8_}_A>Z&_9cIn~dUJMgXKYYWI{PV8J3J4^Cg zqJvZBDEBis_m>n(2bd)P1eHRxF}0UiuMTjkGdR^tEGt+)@SjZDrRd!{_>A|`ikI|i zi{KB_&LNoAqU12Haj!fEI81SA`9yq zQkE&q?*orhevs-Q`CJR-Ou@@F=v8+EKMe0kB9x?u)kBhbmC{oY|FC`VvzhZEPL)m4 zkl9SFh_xk)>qRhyiWMx|6)e?dEYB5Or*~?X zP^hdRpW=&;RR_Ubx@gW3HW+lAOy@kV(`&dER!g){yjeo2R`aS}8?O#7WK0|Bs%Ycd zoXuJ~nAiUnF%RpsQ5*_g71OzvJD74C*K!-_s#wRlwCU71_oqm1ph@kqUE2h%(s?~> zxf)FvuHXLLM*6eF`qRpytl?JBpC#6xTLG^x;q5$<%vSPc2FpB?F~4hzfvMD{GoD&p z29-i4b18o3wwA&4Gq|lexvh2M8qd&d9G`4dI@dymIsiDAc}S!h%<&m3pn2rreL9MP5n&fv6ePV1&MY{a}6{s^X!!4%v~p@RLboN6D( z+($806vy1hG52wtQ4C*U%Lkoi4Xqw;e-RJOwn)Yh56!gt4xcQ~Z1x+8D_P6*XE9e- zG38lI?Q{+u#G%a`+RQvOYwMW~@!ZU1Z`QCvEU%!n>TIsZW~QK9{$}RHORLDRKV&zG zY5f>5*@{%w6ED;8;@wfQLZl~NPL8 zbh01EtYkW)81o3%>8G6P5stZ*c*gtwWKq``80fHAOVSf7xiw8AiD5?qf&c>dvr> zHD`{EG^dg&SF+|5v$nWcTPiuPO4gG~){{!spJLl8q`F4)!S79FQ9&B@6qU?R61Sa7 z=Bko4XAVpLZPpxmLmn}ihYGIW3YJC%>qa?C@*FOE1;;Gsm>tZ?DyF}T>91n?_cG=6 z9CH=N9L(@wg4G5NeU&hH!3khf7_{<*nuN)@pws&R&gr zv70oEjU zY@{(aeSa(w`%9MKWWr@)6`4BnHDmw(``=ydEu!B@!SG5QJ_4$Q+>$Z)bLzCwnRP3b+| z5K%4!PW=#g(^_C8ER+qR>V*3Z?kBi|aClCV``|u+dm9d;U-=^3vv6DC9)-iGAMdgY zxf$*TxU1nVN4YP?xpwEnt%h3x*MZkvTXCHYHv{f8VUrUO7q(G0z(F=RH9%lQCdf{c zC6qaE9=K$jm@56a6*fplEfj^9&0B>NwiQ_-T{+&1@ z9lMs8{&Va@LcsjSJS=B;5&KWE-{gayAp-gPnTO~2>EeC)B`}*9^BTi%G5$J^`5fv7 zJI)xsPf5VHam+?~su4FczKO@Fudx3%jeEpX9Or3$kzHto*|e?Dv#&bM%*905O^B4z!2ulv68{pkC_ci2K107@-< zzcU`%hie?czL(*kdGzx=?fdk^bR2TXcZ8#K@qF~WZTx%(e24vM{g4^XSCl~i`Tp>I zWWvbzE#E%=?XH&iO*a*%cbqy7A*Ybks~d-OCu z^bfwHzGG;+=p_PwDEHUC9SAk}^gWK&a3C;-4uj&COq23KOMu&r5KEJMj~Ho!!Of4p zT_V_|2z(Ucu^a*0C^gZ5gUv8wajGu5W6=AP%ZU;@5fhlyw-L3u4t&8v5!Wd94nUZC z#GStsZ*j;*-{r&^;{WJd2k2*L(_!CUlO9^Y&%T$yxs{GWxHOnY^Yg)F{1r3~`>hK~ ze~j$hNzz*SYUTr4Y=e=WwaWJy=M!Kt`MxtC{^!2$%{$~2paX%h8Kdj<y3~i{9|!8S21GXgkZ$#kADizUmJvd^wpvUHntAu zT6yqRK{L+znT3D0n1g>eJTI-qj{Dp3&*gK0^2CGq_YhCx-&4GRC*ofCQqs$!0B07y zirikqzYynGy@x#C$KNYH6nl^}eH98PL*d&%<>Daz{qSV*1Gu2?KMaugHWW@hPQnRl zQ}9%lf^X?$$Z~ww2;YjrIa*aX>ufQfYmHOmC^BkO0 zb|y|Kn}=`i;CoW|>JGjrg%SJhIEQXCp5-3G*MPQ4oMVJ9TI?6warV|{ctWACOTUCO zr6%LO7$wSBvNo2ijU{Vi$=X=5Hb}`0nGeQ4ge4Wm(g}fF?gWP963%joV7UabT!L6G zK`fUbmP-)JC5Yt`1i5^SI@^bT6r}SRYVLE$$iXslu#93@Mp%Q9F(Mext4=(fk)#yM zh)&q=BVuv(cO}kHBuNFcjN(~F!7QU-mQgUvD3oOs3K=Z}g^iGu3zE74@QsjHD9bC6 z<&^|^y@jXCxABacEZ>3bQXsnza026pkf5CqU6LHZ9W;tG^v~r; z8j3fS@DE`P4Pp%qVhs&q4Gm%q4Pp%qVhs&~hSrH7oW)iTO{Y4D&DJ?W9PcDbKTgvZtPq)cCH&c*NuzoCV}fFk?SUy>n51% zCdsH9s+DA}l~mT>Fs>W=7D*qReo1xX=DG=GEl%ee@^B4ha1CX04TW{7A*z)uu9a-A zm2O-sIb17>YbBR!C68;RJJ*VXYo!P4bqLo-3Tk2{^`WAV_AdUfXxHMKbQfvU@vXX4 ze5)iH=W^}FDPIrcbh6cIuJ*1Pt?F@#TY<{Pms@_r33Yqqn>g+6d7PPdm)s;b$kq79 z!*rY?I2|Vs4v-bnixUl#*+t`=yyJMrXP$;8WZ>a6WzD8Etgl8cs&T$!E{v z+_M*HZCAO_^O1iLCI8s>rA+o6mT&vMSIdD{z#Ntzz;bJAxQLBL|D!ER z`I8aypzjc{oxmPeEx;;Zzd*~PF%Bpp^-sv{W8Xo{%7juZzWW5R4j>(^=q8ho7?_m- zXAb205_kp&;QIjHw{qd@2dTaTY7$B@86}svJBSwMhCdi?E!>^HgNT>UB~9VDPb2Pb zrgK;&fg7}Cotp1Qm26NX3M8Gwpm+$SCg>^5ZEb_w4)-G5OVBVX=^v_*OGsrutTsT( z!NC5mrs2fX>BzkaXUetsenx1g>cC0V8+@JMeYwa`XW{(c^Kmxo1+Wbcl=%;;Bb@6O zs+y3l#dip4{y-YcLMa<~BxxPyT<9&bP?p>EICr%P=km?ONrcPAT+nO=&1%pbsn&}D z>N?tSfD&U~2H(+3>yl~+Qne!0Dx|`f$Z+1^1-M@?W+2rP*gN8eN}zM}BRKj5-0TE@ zQ^ChHyhk1(^tE@DpBumBtn=5nd@p)PD!K|##ky+&qo7|*qL7hW`BRM7#|fClaH=E z{Mco|!Or-|2-UB1=E#v4&2w(rJbMmwUI>R4i7(g1S@?@Ayi=SlPB-zkd;_10)j{Bm zbnkI^yK2?Ubh+5Yv7hO7P2c;3^bvSVR!@)8+ZLV>?!veG)>!!uIw3p`U(WfD8Llli z!W~+SxI!da__Hj0wAdgnvhZ6idW@&?VD`6#!>K%GI)8b(rvLtg^bs;oY_RAbI3e66 zPZfu(@Izg~mm+^E&r&PgU!DZ?GV~U-UT-Z%I)@g9(sTzreziy#4ij zpM{5<#nV>&B^Evry^BBJ!3N&0#h-x@l1T9NLtn8SBMZ#S*Fj%P2B`7`2fon7>YH2A zMSbzXwD>p|-pVg4EB2B;+a+{a<#ZpIoY&i>(hs>vtK*`f)ymLn6fh#YI62xG?1*+m z#H94>JS_?Oy`#9uQ;^}ZyFyiiBvp@z4hdF^byZ*Mu!lz4Lh@4*lfpwBF_DpJvGVMZ zBWXmhOK&oIoD_^kE78s}bHFt7!wltm%SuafvNDNLqY!`E25VD`($b1jQw!bh!c7LwCm{#CJaaZHinPdF-v2xR}Ur)fVb-#l*yi{1KIa zOL*r`&cvt~S7OY0k>HxSW80IWmj>s4)0dSd!PZU(*U1>u6rpZ(9dYD(-6}pVQo-it zz}l7-CuD(l9P)sg(z4293@}HYH)&elhzga}Ffcb~;E3GL-(wOIVt#)wJZyKbft5W! za0Kt|J1lRY+Is5PUJboeYFw`&rF};9j!TSD^I{T4Ie(AnQ{gS|eAm(WM@YYcMWuKQ zmLea0%Ph46Phq0U<$?z1=0H6n!H`>lh4M02g3ImzbD0H-v>%GCM#lt&honYk4DZo* z#*n-oLmT^aAD$VR8X9hoP8w8~HDvXSK4p#P3@d3;>qD}mB9tR8p?ky30oAjI=D6Y= zw(#hz;HacX@6_|gj$AXnEEN)CE?8pd8`w(WS<}LkmC*4q7;%%;%lEYs*A_kmXWmjP zX1qlw7yF>-jc&4ff%M4g>GYz->ufFc{73@5Lo#%(`nTA>i96Md;9U! zI&^$Eo^=@y?Ln?D)AE!4o~5SC<%I)2Cs4L>fFICzNk5dAsn;UIr+9&cLRztT$>z~g)NyU?rmC`{;l zh?@JKscS-PVvm%R=s1Vn=?ITW?umXqwU@``=%(8OR}8ujQsStD5GXN}IaaeJX2c~X zn;pAZBF(IA8bQs3H1swVjIzLzEiw$!NsAC?KgUTdPUF_|oIOZJF!ZAX{T;O!S4^}k z_?NH*=3;*g?WiGpxEj0VDo9S2;ZJaxgLLX6c(8-fPFcC5G=WSaEFukiFz!J&BCi^; zwyC_lY3+#OX}O^x2~qYid-{;PQD+Sqa@MH4@oq=-H6*x4ovyHu`~{)qGu93tv35pT zLSm3JG$zreqGKCYjUIJ&16u!Ek?3O+5@WsyciPjkAQ9${+wovX!hx~+6Woql>yGlB8x z5t|?rVu_0?e1xDgUw$1Ig(%Tcv2O;l5D0@E(o5gzm`S1559Uw{>6oE0TkSHIwvLZR z?XcB>wFr!#ENRt)^;q1^r4mamsgWYx%~FDZy8C59eKKZWj&l5-kU*Cdv3P!DJ;Vd0 zi&T@IUU@8z8n8cV(rfA8l!(uv?PTnb5aIrcgF=8H>JYKuLHQ26iEt zdD#Q=NG?(vp zveuYI5;9gJYpusle3oc@0&I>(Z9~V#Z%Gmot5*F4?dHK4Wg_V+o}L`J{wjf;V6$pH zFEw=^n3&r;!Jd`mj7HMT$_2S zM(i&i&82J)pyI&D>fZ+SzW7pw$z!gZOgv%^^Z>ptqUWNCnVl3L$YLeM0|8&qSKj}bkH6X z65_Of6;DIs1oc#CaA%v8m&Hoyavu8^ThjEP&TAZ@p$<7K`PeIrnHS9?D_Cgck2>fe z>1fGVcQE-{3pwyJkjW49*3Smab%Jz22x@8!o;O3BL7n5`;$x!Y5~4$5gXC=y@oH;) z^sy^q6C8F`7JlsA==k_()#h|L9LL^_R=LsfdMzBbJiSc*_+Gf;pZ6IDtm6#i}=##C~>4eKLBYu0A_{oHa zRr|)*m+g9s*#MT$FiLRKuo-y{$F(HX;6hdR{@_}$t^zI{H zjEjzONmq}w5pI#eC&f@70=dV@lL2(*wApsph0IeG%T!=Q)v)cHe>CGk!u^v z${N>>9J6Z3kX2(&IeW;EvmqPKi!}+ee$-nA%nQ86eYcKx!fw#4upXaAlsZ0eMEM$9 zcO4%%kMNrIq!FK<%rL*e`Rw3X*L<`ve>yz*@osSR{{iz5uW2;vN_73{Bd|yJDvO_A z&2aSvtoQ?{`)~18Ez%9<*Jd}vt^DI)H!n29xy9&wC*W&6q#JrUX@sHU!^E=z_#+lQ z#-ltm@_ofh=MN7z%Ht15d3l7b)8+D7>1f2E<0CMePQ8Q92aP#&yh|M7Cqy0J%fctg zbHsC2d>V;S{9KLkUFwzOZKm^wpPUbW_{sV4hj-=c{1ftz6E|UhoLQdpEWV?#Zfrim zyvAcFy_|`#T>g5XQIwA7Ck&GgKlAG4)SopY8amcd&e`tFTI7f;re_Yiqsg*jY6y+RK;Px&xtkmf{4Cqc8sZ^c}O zkx5XSV`pz|t~lJL*zPBifl@l&AfF7WdldB<0DI<9@cgmXL# z7rJoz!fKLlByN4|#|K}%u6gnBg497jD-U?QOyl34^|~kg-cJv0D$e zo4x*EnZBxjRr#M~hewr4fwuJr`xmcWAZ?0tHrhcIA1pGfzlQa$N!D~fb)|NfET(*^=B3b_)rDt9%FHRXn~{>sDT z=;ZIpW6!8cGG(n*DRZ-s#7Y*9^=dCZMly_KSKynCy{S}h<2Tb!^zZKL+ueUuSf6j> z7T{cVq`7%0y_vs%P|)Y19Kp(Jg0EyAD~rfdh%oYyaJNVq5u-AE$9OT;nf%`@FzI)i z)jT|z99g^DB$kRr zeEtY~~`>t9(ji7PyssO0w{e2MKa{ataC0ci0^wjR8?5%-U;1b#OI> z2Tmz94m3qG{Tb};4)`^%&mE0=j8r(BX^s9@AnbXrzBfJ9`;`! zIzD9Ugwr^!k90x-PvWG*m3BzN3%F(b%XdRkuf9KllPOp3C+k<-AH(T$91g8(_5F>g zi%hz64%&?Y`WWS0H_xMSy*EYt3dK;P}D1YW&$9??jMT8mqssiu&YdI!GAINeR zeK4>Ci~L79Sg@<_PuhB|xSzClaesjJ81efrU2}h8HJp1!#8^1o?iaUqFk`n#KXq*3 zGX{6TaULa_Gad>nTR3z+2N5a@4i*yOF+PtJGJ|U)TAjiNn`Vcj44z(h&>fq}Gz~Pc z++bsRB-c2&p*3suj1+0Rn3%Vrf^aIdk7mX4_BJXV)QXTA(7BeS87`Yfd*9}C3lD%@`s#6D@DN|bS zKK7u}KE1QEZ|`iOWp;1h)Oj6&R6vup@=d#EkL)j%PCer5+I`J@#IiQ`?3ipSES^0+ zb@qI&t;^4R{;WD&9ysGw>({^Pi~-`;@PtTH;5;5j)ZsXtq(Lw2Cz(ucbc=YZJIlJw z*pAp=i4U_M65}Tq2l-2-izBeFB0-ZhNV_FxUiu5p4edp3i7#<#;Bd|t@Efxo#BM&K z(KKQ_cr&O+z`ZyvlBg#Qt7sJ*Hsq^p`1EQxJQ82C;g_y~Cy*5=+BvcY-pH*l_+60G zbQpf16`Pubg@`M1>v6?@Da{9?b60Ozx@Oi28S$PSJ-s_iVd)DH%9kx2nVUPZ#BSz- z`7$ix?ww`&MQ`SB;A{EoVlA_{;E?oYZtDoR2@XlNj<}!Juz&}lISOlS%H)_wVTu&f7sfw?MxEFNo^D1(Cx#tS~ ze2Du)*ItieU*k%@NZ(s~Jxr3IhF`J;=(-~7u-wQN5cndABH%Hc%erzu*#ZI{alFML zyfnZ&=f&bZ9FFz~&mSU>9&~-8tTE2NgwK_0A}1v-+f`xnt2MbR|JX7fZ|SlYd?6pF zy-*ai*SE6|&WmVWxg}n#PXv*-5~RphD=GLrxrBR^v6E6HQEU62MN7{V;<1F^C-PQS z#`({+afXl+z5=h}lj2@)UV(G{S&W~<`8>xRzrgrurC$dxTAXW{!br&Ga!6kjjNA%k zL;ccr1eq#-bw>jJu&eT-B-N>PfoH6v0qF~opvQOY9jeOIfOMYI>k37Z#~zSI&>TbN zhC{wX`V!BU;06ftfD}qv`{lppZ2cqsfJs)*P1OABf zCsMs0h&u1lKH>_ifr#^ifxDgX;zq-Y=h)i=c)!ZtE>{kVo?PH@hb`o}{hYlmKyKd4 zTv9%u5uSLT_&WcUz0Tjk=~cjK-3qwDdic5(a9W=N?uWgy(hjXd0auaXNLeeneGVOu~934ET@ijmB&rs8(wLg82x3QG03HW zvf})-V{|=^^6ofa4yH*AO&G zjG+ck*xpESKjB;4uR*6JU}!??Ep9EXAPd))Sw2tS)FJq`1gD4+j>V9g}8%BqhO&hEjcVEz=i_k6*B^ZL!>th~C?? z)Yi7t)4kN*wj}uw(VL@j9+0Aa9rbfZHg39RCfPMq@4gTQWq;qEf%2Z-p5223d-~8* z(W4)sr#zzww&l06kEsg(fem*{kDnc_Lgm9YG$%cNSqfgdN0B!{`5DFKvoX5rGkNJ* z$2YMvVePXASDw8hjb|TmyxZ}CTFY0jTs@p5{~vT6lF7W6@}(6*_1fRjI3TO%YgZTTt9i6}Ep}+Rr6>1YQ@tuZW?ywnzuiXb zMvQ`duQWq$>7mnz!UV2O8>$Fg*Y19x27d&8T5&&7-qSVs(~dV{hgh}s|5t1MnX{`H zN=omqL7zG`3~jc!T*is^CbBTslLv;9#8!xtb4iMWo}89#c?{KCL`GM6=5nj3_m{#8 z*K`7jn?cJT%yiWmUezT;bKAsfQm#Btsih4Ocf(C5A$u%|5`ss*7RYF~+fFX6jsC?N zR-S+^Qp1+~VH=*8o*?a+WHI(2E!Ljwt#D1?XL=5z}E3ePhw?*6Mdwe-#bcbYWjpddboaeR_G^;71hcrc161|Pb9?i`3mDd;4NXu|z zq;s)vXm_t!r+LF#P;Ka(zG~yHYbP_4dk2hYyd#xtHnTmEf!I)s;Dm$|&==DQgIHzI z3xTUeaKZs_jw&Z4QwS)6#kSgU25bcLW3shs^n_5hK-};AspiR2lP4MlZ4g`3m2B^L zTo6;whW7Rik~wqrrcFoYEQH=QB;Hx3^e%2ue8&^-Y>qDW>>e06rLXUlfq~s%$Bb4Q zdkpi}%6T(4&M;N^6&e?wE1(JF82DsJu1wrXa`2!?ug^l!Ly zeDZS1jOJo$%xAb2Paod8yD#AJg`%G3EGfl@kLF?q9dJ*-u27k_R^D20?ojfW#0#2A;(;oPn-QH2h4OOm)_Wq#;e;7V}h+CWgtjtt3 zZhMk-jzH@9&^f?esT9X z^hMW}@~-)77Rv|bTDmqCV*~r=dsJscGh&i4ciM%Q^z44s?55rwecju7ySMiB?dWAc zc6xO!ET_$+?A7$J95HNe@+0ESuw-ebej_#7GdTdB{b&vTyzNOMiE!#F_+MBrTj1@G z;#ar{pZ9R*>{W0mE@t3a#NylpFtm2pSesCj7 zrO3Yw>tchOub!GYJXYMft^giWxx!>O8qUrsVn_9z+Xu3JIaLklAtQO3Z#CL@y2FXHaUDC*B!xoFkhv@Sk+!c(*=L|aEM ztIEMJX$l;gla5{>G=5(&10@%BP75*V ziwE4gr>>)`K3a$TS3_6pYxt0$L)ch)awFAbqP1_uWq#~&c7WRHnxP?b0xK&_l z6;P&_YprN!Z!jy@8_r@)3&@tLTEJMz-M0X*c^iXPJtAgiblV{# z8a4h(AJW5~aL|bO!|Cv`pAom03R4?@9WjhZR1b!QtQnBnFwfnNNn3;B4qQ?LxO%{) zak(FiouW?2=FnvBU4*7|f{u_S+bBfJ!OZ3JsrdmI#~yEe)SK^)?bz#gHTvlmZJ z9^TZurK4j@Z{Ox(akFIB7ki?CU8GP{7Pnr|Z&(3e9C035^Y2+W)s^gOjtJqjD1;F{ zfi+IQ)N|rRL!3uF?zkGemPo%QI7x2-f6Vsw2srT$0Y3^0N~|5+FVo5t@ZUN1*(;6O zp_MG)55sFHRye_Ftr6TUJ#|qSR7A$|A0Z#H3zAb&ZMJM(ruLgFoIzzwX4C7I(iGv0 z_O`c77w8+!Uf7lCn~>DO14EVH(u^@PH`?4hniIby5k34#G*N1eQ*R{kUi1d@ht>U; zt^ls@{1DK&4UB|m9=44~$k?+!MXn=m1b8YeN zr@s%2k7u;HIL{W)XYL}p8(SV`uarImZGfPn^*q~yOmphl!-$7bzkdXTdpWg_XJ~8FBmz>UHwSd@Uc=P8|$}HAMTOYgA`gKqaoA@vQpY^>r-K*U#Lz+ zq+iH!D;|qmF>=GUr9w&_`vqT{3t{AK)YM2&{{2YUKV^fb!3tLW*I@25F> zYI)f489vHA7?)dmm{=T#ehd*6#AtR2HbcEzNq&obtYf-47zyiEqe(QC>76gY+R#m> zJKmCHPt(F6>`?1};*=#?f3)FQ8(QJiBA`cqgdO&dt$6XDu|idcMV{SiR9bL4Ml2OM zv(4~5=JRD9c{^eXLx&9;mQlG^X5m0xQ2oisj{`|CQoayLg_b;VHK$0ET2MXE8XLOI_L#Pl{?T6?8q965O5C6nxXTwYM1FIF|cHG9teO&&+ zZPiSLRe1^2Z{SIn--do4pc#|3&Jl1Kg6@QONTpoGwRsTGPphUj*ZLu?6g$`#t-a%) zGCc{e8C8v7P<88W#fL)sb?L&YS7+)6n{nCg_E>sAcRF2~Kibemv;5-n0A`sm$$KO{ z|1DZ;t;>GL=T|}ZD6g}7zmx0Obgv?vj%eH#z!$KV?^<>Dvlj8UtyqKasNGGg@7MgP zhZ*=P-u#Q@S1^6mQ-A&hWG2;7V=iFSbTqDH^K!n94J%NRLL!Q5FUK&pbAH3=bLm0V z_YIf#^;N91{+K`F+b2nuFA#L%Z{-hMLUY0r5=CAFm*sL9xt&-Yu!F1VpvV$EUa}nj zoA)R}l4f#xho&omp$#qTHbCTnM{|)wk~-4UURYNXK2c|ygwM>lne5999vH4X!$pvu zA8&3R&sTnbqCgV#w;`73YfsRuEH0l-y~bRf%Q5*ZI~y9hkdGC~{2S#X@AdlWja)uj zrDE%B>xz7A>R%_B1N(<6M|pQFTRuL{fAQro$HgP{1~XOR{Na4wn@1f#AUg(CGaM4? z<~noIEik>@?EHG(cYZf%4&v^|95-=^zqmYrR!Bo2I5NsF7bEqrf-2G;$7fLmuKG@r znWB}4iK7e5thxVL$9;sE<^aQ+HHI+yNhe*CnI6Uj3I-W=0V_>w5SA#k zHGR#}BBsmcnGnVTF(=~ggT>*dpiA^}SbBl;YwA5#goIoql1I`Zdlau&H40d^-0Bf{ zCe2!4=*j)0SrgutF*5k<`Hpv<4}2os*637>G>S~TC6NM62|zYp3X54xaW@$}}Er>~}`A3+v+)z@F* zHaGQ!eB?JSKZom2v#evO+E;m#{j|9L6xP9$2VYse%5@%k8rJb1iY5tcAXdf42Os)b z#BW7ErfdBG6z_Qo-rIX?SLbW*dDtEWUH>w_PNSrCC~(F{S$$6Wb`AarH2&J#q-SgJ zryXx~$hG@P7ZmOM9=bE_wikW=kqysF9FG32L}=*!)#p~O^QcShdD0059;?qk;&=mJ zJEDEE>DOL=+HrHuwl8rFYV~#Cc@OD};^_x#z5X@!2(OIhzihZ$dgek}$Kvi=YtX08 zsLhJ}1{(^Gz!})_it+u>@rmj)^7Y4EC2Zae4WJbs0TGKBfsIp@KFCZWKRW4`v?q%P zv4yXl*cMhA)r-Ox4G9BoDlMa+zM zx4`PN?TMQr4a1#vkx(S;uj?6af?`VaNK*bru1$T2bNWZmfi7i3Nox|&$C7k!8rBbb zQ-kiQkZ$DVEs!Tw-22<#kza0N`Rq0KKC2P;MxHC66vqJn~ zZ$tOC?&RoD)GKNJI&Wk=7b`Zf%uu#*xGUMWqq}_mR<+)*NP%>oY1#T@I^ywK*;1}! zU6a~S=Su}Vk~dzbrR(c55uYcLDHV!S*;c}g=qpK?J8d5DM($hZaQQSFo(ES39P9mI zWO03__8j4vo^wl&P1IWBUR;9a2+E&%J+cbuT^A8vYR^2!HCNFC(mg~=N5@ING-1Y8 z?j?Qp2-j!D-K5Wo{yuESx0^6)tM7jnaGEy(uij6(2;g>~Xg$|M7h9126SY2(7fV*S zo$V^51#-hlYG6(Pp+?nVYNL5Ov#qOkpmZ)LC zr6FODiG$5buZOjqhlOabKa7d`&m9hYRMmBfBw*Nz{ZGtivm64K4MGum5ZM|q_Z`;C~Tf8^Bh7w@x+d;GxgucGG3i^CXK>cg(-LscgGJhZK(&q0|q=%Lt1iexlXRo>Y z+4G4ef>^a@tZMns%d~12mtSDdNiIb1S7+wbyjY}I5MtPO&FCeE&b)+J*6jG?j3v2% zgl7&NK75FAr)lMx>Dk$7`cC~7t9pa$XRmPR;;n#JM@hOU;C!?qn+We;_1wz!s;(;9t@dN(dR12y z*Q@|eT4vA`s+CtD9)uDIJM-$|bfT>{ zw&=40tLTdyj%|^)R66W~Ta;&|wtaP^tFgCG=UJ4b6UmOqvAnxJP@k)hrxe#pwu=}q zvR(KX6lAr$#Qz@!yIiX{Jw_e-BNEGE6zWvN!+mElYAwwUt+ax@eO zJO3_ng|AKvI*-Kv4iYqKI=#-y3|@%Rv?Frm>v%hoGw<su@YjQ-iy!A&j1BS*#ylliEGSYTzt z_QU;#>aEjFO;O^7rNOy)Low04YmgPWcKhh`Ow)LdC99m1dPY12{xLy$Hs>TbaYKT; zr7AZhDDgc3eQ3MjoCGE5FWPw6-j7O_h42ds__OR^mVd=L0^Lu1NWdSlD@6$`5&seJ zr;#%wI0)TOyn^6}zS+EjptPO@lvWNSUnBdxvv2;w_ROxv6|Bc zJKI9c7Ag@Is;y(#u40QvfvRdoE??H9%HZtm;K1CRRo>V#ytk`svCG{x*VVkqLPlH6 z=?S9DUwL;Q(>>mx>Q(zQ4LK#Q_stHMik*FZoyF2j$NKj2hJ4d-rs?Yb-iAgU^_X-| zG#|@snD}!r=-0GZV|y}K-@(_h=sofKCv1xPBx=vyJwB7; zRQPeeW4#j+EiP4`A-(dSfgwCQy7KIKE6+}~;MqqUXFKkwwS2?M)yXDYecG|t@z&Z^ z%7ma^;=Qxv6?qc-Flk4c7z5enbQSY>nx_W+X$^Yx0QqA0z4BD8rK7v}Izpw>gZwIu zp!&?p2v$G4ZROc*^z0*!-@rRmZFy|v>ORVCdD>Co)k?&Bx30SS3?IQLw20~merI2W zhpvw*C5mxxg_&PJR; z%%QV}pC>M@VOS=uRnR7&nAu0ML;H8tXShE}%*vBPGHSP`mP@E%PTuZ1oNh1=Idh_~ z3*17)h-uSFUMLd8J;+2M@xEeqg&_L~1ocW`KNvhXHhOSq=-}ws!NE-%M@E*GMn*Qi zSBtsS4L7}c{f*n!?dvoRBjMMk^TYc}Z3iw&FM5JL9rE7eVH=R1)4O|Uh-z+(4$sXE z56{ki)Tebx2R99!(w8oV42yObC(HTzo<z9X}H@@V3d2t^_UF09y&mm(& zyjQ-1$0_N()%F#3fZ7-B;!wA0zwln_7qs$+8D*kU6lb$&Pr9Jmo|Hb}e)N;>x5tTd zpljniz}u4?CQc(9MMcgAs%W%LPz%up-#kHop*WHVLZ<$5qnm&8-8;%vej;FtQMh z5b`xcda4x2cDLu!T{-r5#ie5VeCxzSZ!Tb(ffo=#541JK%lV;!p6-F6){b@H6k+x{ zwt#)6MAa`#(QKhG*U>gxD9pBX%oWykwG=u#3oTtzbH`ju%UnlszO8M(*fu!WRu~w7 zmVjIU_+(|W)J0A}HL;461DD`52&+z;0RNDL+1GmUV19JUDoG+qT041BbVj7IL|T zQfVQdU-0d}{j76t+rR&|bI!Vb|CZ_NcJ8`vYU;XOJFkO^z>wYGz-jScpuc=P&|?d5EdWUHR9`5N~7_IAX*E~V59t-#)Lv z#q{b)^j5`0+toBrCv()2SC{wVb-rn(U>ev}LCbi?$*$zc+NQ^SY#gnid<5nr>#lqw zK&ocU(EaSaUd5giykT+Yc~8H!wr*Xk4#+QjK`IzFJP&`aO;NN z;!F;8!4iHZt6`M=jCdc8_`=%oS?d-q!Zb;aGUjX-WxTzPGCOc6Zs&A&HeZx?C_|Rm_WG*w_jtv)0Q@*yvecf&6 z9X@MIRD$0u;?f6~_H=pbx>C7`Z5^X$kFU?qw71N*wa&E_rdx@oVfzvGus-aV&>GUA zN-&={;y5NCQ28RKi*rrOS^2#yB1cdUO@h-2h_W(P37v9U9Un+F?QiOy92{(-@L<;Knz z(u3(tIWyDWKXdKarrbn6H<8=KPS^ClseJ$5e*Ej0?$Qi@+i1R@glvDyXv>?L`WqVh zoBF1vDzW)e^I$qX*j$1-K(q54X6GB&h1pA1C`|*Vq`H<6$6KXwosi~f9XC7uXDkF_ zM&C^9?lvnDV%>G2LeH_|u6x*ovE>N#_g$Too#8IYi*h0 zzHysBLh44iygD8G+1k+G6sTzo**To|W7dx6n>DTR)9n*Y*@=$gM5bw?y(yn-Zp!C< zU7NdmHg|Px?&;p#H9pbPy>4B1&jctTjng;2$Tn0dArDR|Pyqgh)fB;M_@HJorRWN{ zbi>@H`tZw?L)w#Sz3htmO<%XdSjeb6uZ4(DAzXzscTOSMNSqfuvBoE>Ew9i4I25q~ z2$*eJ$fInsTCAv%Qk<$s4>p$4&0SV3V@|t{sHUl!s5#`>n&?hoCt^_X1pUE$5>=BD z?YZ!*7fuFp#yU#CQ9avK;|i-4Ie{Pead@Yy)-T>~p>EzPPWi#QPL#=1-5!rS5lpnC z<7!+F1ZCGb+U3-bw`2UwcQ7bNlyq03dB~^weP#gV=A404ofY#+Ea-Qu&Qm>R0GV8x z?%OHLZmXlAsV_-AY{beNW?Ss)naCwp%DupVEpG`~He>vi8j4*de?FD^xgK>o->H~x zBV@{^_I%(LgC*1 zt!gp<-=lIB_8teXR3njiSGKhuDhg5UbIf47P%8^ozo1&qfidZMNKQqJ_c%@I-T87d z)ic&umoyTE33r!1l_ZP-8Z5zk3!JuYJ@^DXov3INmX3IcBESgS7 ztTeFE296YF3-E0T4oA{ah)G^nStO~wA`q6P%l+?Ck&t(rX-U#$&Y(+IU0&ylmZ7Oe zOsB72101e^abz%#6!vNLS4RRjin3-MDtQs`U#<38t5m={GJ~0D+K{5ThEij?ub~iO zsg}$@Hr$YkMC((LcsgrY*|Z)H~Dwz^c#;|X-u1OA{D3ddsMkoEqQ z6-^{i69rhN-X+-18kRxg7CMJi1TkhJDo~jwl~;A+jsf_(wYL%64HxtE04Ij)x6K_ zVziTHmpQ&D-46)*%&r8ahh50(q^|>lKC=q}DdDMl=}Um1&-|%IoZU8zo#?#J>@e=> zW@odk^m#zgXLbo7^ezKFT;696X=4|$F!pHkKC{blPk|j`8U8NxnYT=k1pI-#&m59s z_pmWJ1xO?A`5K-|vu`@SD8~SyK2!C;9`+ShC)Wc)ef|m{C7e!HkI0wkGv!M(visOD zhXBv)tAKRlB(W?kLeb~@0ZFmDQ8hUU2=L6`)yBTa!g2r*;F-5vKz}m)UDRi4nIH-N z6!6R*zzVcbo7aI#2eA5V9Ybh7P%eg5%gt^J1XW9^><>t$;SEUF1Wm)|KlWOKY_ASH z`!VT$)SXG=T&64GkD6Z~8!}_tW*y7Nq|dIs&b>@cxR;*q!S$a@U&8ZQobq)sJ%1TJ z-^4z^uMglHs889?TcZ6ET`#aV+Rr0$v-bG|;`*of^$tA$3x2&Bdgvw8{)OT?qBnSd zAFh9iU(Y+dI29h(XT^2AAGo2j4d03S2f)o$WGcenKs=cw;lYSyMX(lwH{x)- zUsBK$SYxne*Yrg`?)N#hzIkfj*t_Eq^bmcG#4G2ldR=!1Q^#(#>g%n_fx7Rk8Tat=6592OcDMCd zp(u?Mh6u&IX^x30)104o(stQsUFASDm5Q=k>%PPB%3G%%1CQ+c@Xxf8Rk{r=)HY>7 zxq=ZS)CbP#l}vwiPqTI0aPGE(?XxXNW^SIa{PlWJR?`Q|qi2pZ3@oAgvWT2hLd6zBrhHfv}Y_jvrbzeDtz_xa4=FdeO^67;kN_ zIr;~s5`6^*poc-p?ssFeI!Al{IOMPqE7&&I(mauGo{aiZy5UsQrw@!C8g3X^pl(t! zG|SOK;l%hLirO_zh;I74et%leQ#aez4`yV>2&u=bU6tBDwJ92daNBfrJ;q+^Mba|O>Mq_ zjw?0>KC!}D&OrDT)tNF%Ngu;Adgk8_>q0k9{Y_NbXB&=lBMdp zn|;a^e~spo_d$2mP1XP6?Ow0WYrB_N3+V0LPPcSA-=9`+JOo;L!tIt0^7w+?Ph3C5 zrHK7j{633*BlbP(ID`E&J^$^^__@U9mOsP(#fcpr%W=nMjI_*jwgo#x;C~@r4lI*c z!3sP;vFk<9{Q6zJvcxVm#;Y_le(WyzgTEz8>_yV|kjLB7K>x zF`OMBoD{Z$rdo24(8mUR-mMo63?1I&^%P%MZ<2zJ!qKv6g4=bhjhH=!hylV zn?3i&0zrSnio}1}A=xEw*pgz=Vv|b?g*10_M})@ELM2S1Oz`x>c35En|BMrCiV( z^99k%Mri(T0S2IBh}k0)YKq?$BpVQrwwQP1F4Sr4TC> zSyvx3`}?Uw0d#+9^KsobTj$HN>l;z8Pj?2J`wM%A7B zg)}vUQS5CR=*WfXeB{l`>)55>XSTgaIS19w@H6B1D!P8H?7hjU!OF&*|C`u7#U|DJ1De@`b%01p}Voa3|7S4h8twj!7= zXuevF2dV%tlgVXPZ;UfsD308UeR0x!YM{0o&JSOMy&Deg;(d-!+U=fHkA$Lu>HFmB zc2_psNr&qPnghWgWMfoUX`3Ai#x-_h9AQ{dpJWfhZg`{PD;R-WdgC8y+&RGSdh}2F z0|DPBba?&M_Zc5>2izgq59*VMDyf0@>AX2Q_dCZv#?Ir~Eqb?&lQVCQdWbHH@8iyNgQ>bEJ@JVAOa9$G z>4_n2>V4@*@F($x2gM&6E825>gtxb*HMG!Zs(1=5RG;FQyqbMdO4yj3<(Qo1n7o?Z z%i)Acg5T^Sc-V2B<3A;Y7l85g{J!fPzvaJgcCE)~g3I4SotV3jm5-fNwk+t0B0JJn zEJ#6uODUHD?|=qhRX{{gH@jpto0`}3WDD-~flV89_$_rfEs?d+(d}7Ox3~?Q(X>n- zJqDBpcV83x`1}?o%VCw=eZ}_5DT^D}hr_xNl0t@#HBMUYe)$843vF|piO3N2Sxizj zM$cVbaP4s_M0e29s-{l5aEj^(^mFwNi(%!21|k?uYR0|L4|8^nCh5+`p18}SnG@@C zEmMW&$z8qWId?QFnK%H$+2N`WWkxy@bFbQc=BHk@(6s)l?d6T54XDHDYizrC`=K}O zY2Eg=`!Bxq{hPAuPN_W5INH-7`6GSV+*q5{TShI4(Ln!9W83=9&O^KVXZy=HtD$JL z@@OX2v*oPb4VO)hTz1EKgNOH&jHK>%t1%>R!3jFE|S|72s= zL_^#3#%y;#@B%-z^lsp#!Ley2zE?&$DOj@{4>ndb8Hylet}S*!l48Mt;6dw{M!FyA z=>p2kxr@fLbLH~-;oPR-;oT!S=&>kND|>pjUdf^!zjN}k3(DESOxK>#xidq|6$;{5 z*YH@+z)*8J(Y$^8`Z{cj@lBpRSll`p9xyib6c&rE^Se6&S~4_n!LB~PODgR@G+vmW zZAMX@UQ~|q1|nWpeP*CNH8ok^vSnd3;xYU_q#lxY@hegcYoWuguZx|j;PJFp(RGXu zeZ~yKyGx>(7$5Njigvw#qQ#eJ>49urhewfoN*D#1{K-sYV*7br<*N_ehrm+MlrG1a zVxKCM>w^JL4Ckggok}kKcq41uzqsktmY{mFfNj_~)M}NucS}e70 zn+l4HK9C>_4%5zjy>z}2haxIPmY+x`dT$dUfboHP1s`VRgJgvX~ zv>P|9$5E{V9a}D(n7EMYfQY}R_3a%Q*jG*|DZfv4`~0xbTgI~iuiNSK*LyUWoK8m; z#~nWk%`eBRm244uK53LhVM5D8##?PL00GMYL9vU-R1GP9;!UUf3>T8RVLYc*bHWf$LU~&k=X9X?9lYA z$p`sN>r_5J)!IIl%TKj6cXl>6b#}7%pbSdObW6)rOJSyExZH%nHD}9Q2NCidw#%Ei zZZ*5S-|2;EPU+d zwi_d9E8R|(eq{?aRw3z1nK5X!6Y-2MNgqXI7XA`gIPjKXQWfDaA<0?l>$A~HSXJC` zs}aW)lz>}h&hfY%5eZ|f^d`4Qa~lncOVhOm-I<&moSpC9JLYW7Sy@#}1~e%Uow_tr zO4X-g^?v`(%{fJOd1V|TuEiC_^f6c8xqZd0z1zmR&N@(#oZH(wf>@+}wJ{J*voq@^ z*EQA`5-rg?J)qq#L{typEMMUpISwmCyS3$-B~RnZuUl(4+DJHhj8ODg?VEH5N7DqM zjK!LuzlP_4);m$!t)JR9G3 zWP19@wvAWMIhj9D+3S`XcXW)M(X4pA0ax+d)4=@GJ3BgdG)Nx*#@BAydeg?~Yc?x} z`wJ3E+GYAieSWXvnHpy6o$q9FwxJ;-$?r!7i_-xgtn*EfndE66cPv3-35i+jT|T%8v1g+Y50uMk<*8UP9GUPV|X)oXKu8qX*7qj4KGgeW7F20 z6Gr(OmUKI9H)8Yr^FJmJ4I`~$@~okuvnJc8^ZDs^{>jwZv1+SN5UU-!cI=x)Ll(nsp2-0&@@w7bb#Bo|wEv*t+8kmvVw!Tti%~vSOgEbsohR<(a;15d$_-S=(hT5WO1&f9y{U+* zSov1n08-7K9lSQmL<9RwW`u?@oUBaMS)zC))wYa#QMJd@w|97WZwX#c9FT|FmRN!L z<*TI6!Cx0db_cTlxV^CEoFm9U*lKG|KKdJHVZ9M{vJct*!h>$}ZF}9y~ItR<72DJ&`EBX($WF)DVhRPAC9Os8(@PXBTN3U7eeX zvvr-x`eI#Ou|C;ZM>ZqsUmJ3p+djKQ`XJ&xVQ?ObQGN@YrxBcajH>xvwTfb`RVS!| zbfL2gF}-HkHk-Cx)@xb#{e`(U93zt*Xm%y2nheo)C_NNPw#DLYb;(xCYQ2C28|$af zn~9x&mOfrr+|q;cZw;kvk~ukN&(Y@`ix1?dQ$6(!bU;%>vN!b|C{ZCeI87-XhF=Ko zPIwDshZlC%WzaK7${@IiF%eI}JkuJ)q^|lET45qJ&5+ARk%v`dHa%R-Pta%O%PZeU zr?1&p>e+i_u5(XQ&>iq5wd7Ru{N?MWFQ08*m(=RLs$xV3$9_YV%_Tbj`j*S| zzh>J;XuHWom6qqO+qUcasc1xT28^snkMp|welQzk3}Wsu7I+2z^6ylQp=0?noHgAJ z=p3Mm^g*UUAEb&g;@npcR(Kuq>v|zgxI}ZeRVRo2w`ak!?cb*{e*cXhBscX(*_AJM zG%R~Rxv92?lhSzmgQ!S0SsSp zL3-leTn$8!M>41k28~l|SePxVa8!pvl4tDH^ZwB^O*ZTec=V9pSNWR9o5$}EYw-pY z!;DmZ?(zDNd3rgK#Ibjzf>}E3iAhO4KU;3RFX0b)f21hUfH&y=vD^KQxIgT@Us0?; z*#8wbJo9v(Hl5>=#+<`901by`&K?BmEBH$DR@G#X#=LD~DNEdK?wZZ0q=iuZx^;do3mr*Z-S(yCuwa*H2Q97wRgX zifp10Y!9(bjWYxrZ>Zd5J^PYFc`K6Cf{LPrbZ7@xYsk*>`E+FLxm=%n`LW>~C~;Px z2ia?F6f@c;_(^YX=)do{E&6P_xr_^kiRWLcmlx4M?lckaV|9djw*BS$_8Th9$~9+D zENDP-Vg|Tva5|S*@Y7U#D(pG?mrW$uDwV99rU!Pg)-1qj$qn_PNV+Y01!4P*a7az{ z+{{Z)V9=1XQdYD+y0hg-^)wC`dd#168y^NBYx%cv1|TE=LBJ9 zp@Q+VbV#-%zWK7+7gxznJZlGnfbS&le>L@=P19%Po|W$-bOz6_HJoA>bN|xq(xTo- z;Jcv*+~&=YzF{d0G5m(wH}=VspUmSA`9hVS%dE-ggWtM`F~?`w4aiKY@;BbMOB1j_ zJEaI}=Mj#o@2k@OidckYzn!}@-b&Gj zJC*;$E=8-ywRs9(wU_fx`)M7k5Ic?>H?zC2yNTzx@tImx1FOtWTf$Tz!HdN8Zruv7 zR;0j01C^hu%avdFElpQhCJ4RyMSTX1NJ)vZmysvD{tTp^Y83Nfn_~<4~7O-tXq5(TiNr{C~vj> zcr34Nm;XWt4&p&9-IsV#uN7{ zsmxKXkyu~lW~-U|8W7gATwLaos&_gn#RS;ta^<~VpQU;XFWco;eSyjy9%FA@^J~gi z`@ZYe{YH#=TwisE18PXQ->J|WQjTrNryHj?90JP`jn~vjXqI{L7M$V~^j7YIi#Wix zVlyTVcy5-m(h_E~+JhQZfDVrzb8X1yaVmKWiE_UuoPjnDodQ;`BD~XF5$Azek#UE`kGG%nj@k_<9Wp&X5z&H7 zHUoMjQEaH2o*R#7I+KH{7LB*nuely8rup@h#4q=f z#NGUYZX^;`O9J1Ub@&iEX=i4Sqr(1`y$Nyem+XIuXAF|&volf}>c++l9N&iSMT^-; ze;L1Z{`yXII%?`cEf|l+TVnVg)af#WFwcCrv04{CbFLrP-CcZ!BxZ(ctONR?;(UZNth4yREwL>D`@ z$T}ns9#>3}Q{G$iaa1FHJcyaA`Z;FwsK$PzgK=t=qW;U$sdI(=?Ee0~Q|AzA!Qagt z2toC1DRyr5S&03x2ehbWXq6$obpfHe)8fTI ztm~|AD8`~KS@quTDPmUkhxEb8+8NiZ37U+%;8ynkEBZfMN|bmazU{= znS#%lFic4sI}pVwlTqyV$+fw+7&~WTg+wHxhSa*|uxqov`)nl?3e~yGdG;Tt?uFA2 zX}PXMd!o{O>Rx&mvB5XM3j&MY-em_b2A{QRQWP*knQ_&bvYi@L&0i_vOy@C)ZJoY! zduKz>KwP_#;v%=HQIBhS>+reLQ|FH4*0sBQ5%nYFVS8;jKG5CJx&1QffsU<*r~1x3 zWvL!4(}-cqb-=y-quYdszkJa}18y9K6XIurrh=W5dgZZ}Qj&T2&y8f-j(WmfO=c!8f8K=F>p~>zd1OL-jmM$ekl70l zDmZhMJJAwf6OD%1{F2v%mbb!d?=DVev+Ih*$xPE^d#)+hoNLaruXRi|0oX~vj(k%t z2Vmv;Kup0-9|IeHu+xX(SSp;i+>1lA@o#dbuQWT?TbikyeNynyar=TC3XRD*wPsA) z9B2Hm#`S+cW_Ha<5OFNOX3Nw63=xxm6ME<*z!#;c^h(4$8YyZH9t8U7>FNls(~YXL350+C4Nk2pnEtvv4c zpXzk}#wq_l8ULIV?d*~^uq{-rNO~L@DO8i?OkSs`O zZ>zx{K?NzQ5Hu!@u@A`u1P?sR+y69bjbWFYG|aA-w-UTbR0VQ6ZUhgR#9pAC(mh-= zg?>eO2AoR?jb+s@)@;QRmKBSA&!U4tVlioVG@@GJNE9FV2K=G`9Or~Rs5A0*=`(1P zYeFk6o`GW^@nl@u9FAxa92|lVaEwN&2fGg+puGiHpO_pXNufWW8@J=Q-5q{Zl|#nL zqF0l86z4hxo1a4gWrxp4b~ba&z*hSibT82Y=3J;4RMiVQ$6iHukGQeHB8*-A8by4)xZnw;Hq)02X_0jwnwtLlpH{f(l z8g-Ty^o-%~VIM5VUDEBd9dCcE0I>SO=SGi`l_aS zqGg~f`{6o$+>2_1;f2%sSLR@$;e25!$F@j! zi#92E&ZnPik76c~!vE#$aNh0GvDHEG6zYfZ|qHx z7SkhjF}L(0=l?XPFUjfNpX^Gdx{}H6`ugsqm1>Aa8yci8Y&Awy6%kf^=}kqfWYUVD zUFa3S?zNy5NP4u&JIKu_VTPcql(Hb~tS!i-a+TU5`D~-gt&k8*6RVIibNLKP&B9EP zmg?e-ttJ#0q+Qink!;koOepEdq@sD8W9K5r9P0nJOsNkkZrCWlBb)twHY?4g8yjh# z_c**Qzn7lj6%1>NH6|Uze>^?8-N5Vyy*ZZ6L%~z?)7<_9=$melMKhT1S zCL>s3ieHJR4URSRcCcttq*UJZS3f2Ae z1Zl%7T=QTIj2EXdeQ*`iB`;yzP}g}mFlN4;j+daVj2Fa>g>D zSfW-zl@1tgq`g+OkG_5ROT^W7i7Ce*!RjgV^Kas6m&_`@0JikG7bD)lg5q^6I4NMB zx4f5aTYiRUi$;1<{&W9J@}E0WAg$xr5B2sH?9AnRXzlJ=y>_3`6_mUHwN0I(gix6RkY-x=ddWi2vu_Y~jKg@sIk`%um;lFLUh~JOe z_j4(S-@mqhb2)+EM;+9kN$D`VlSd?pvr&Jl-ndZIGFgOtVbWpvO~T<|C_?&A8}>we z3}@)LrCa#PF}8HT@5lHX>^&3CIq4S1H*hQ(j9@%v^LyO&xZMxVsqy;>{@doT`2D1P zo%2Ebev0?AW%(kV*_G!+O`pqEu{AiWTYYP5>+ftmAzAOD-YXGMn+ zPuR=i18%?TjJT!yOl7y*tw}#|$~_vkGI-tdSPepl>V>}WD|r|Bzr@^El_;SAZB#Y4 zYq!VrY0$(Dx&qRVH9YB>cY7m7AnfjeIxImJ{fJ#8ALLnQTw<+lqZjL7Eo5uR)8|4? zGGd2g-pIQ`Ui?zEIydyCi1Z`VuWs^cVU$|LRTSDG^+`89D*eKkTcvZbqxcWBzi``X zesBUq`1~%v;endto=2jUs)fAsZWq*s9PVya+G(T4}xE)-*%+s)hQYm$3-;d9GzV{AA?kLIy7AD8GAL5)7X7b;UR;!8idZsUG#{(EgHP1oSAsp@El_-Ga zTq4GqbzKLHL-c7{U>w&8t%`41cNoX24q%+(LO*BA{QYe{&>JVD@Oeq%tS6uYcQx;!9hc^A5Kx^=|&F2 zjZvKO5_^5WimESYm`t6F>LwqT6*Ic@D`AobhN$|LBu|k!IW>LL6>%^g8A7;1V{>`b{BJKCoZ*A3ki<@OA%k2{CYp5WVj2KWa>kx?Q|A(;x#)6zJv=_c*93xv>+o^}5G z)&=b^&2v60L=OZf51ilDG=G-u>dQfoJPP|$(s%j8mTPb;q|YZJa1~mOJ)-Bsr?S6JeTDOB4yfTGR>kBd|ZIUxYQYiLeC3 zPJ~MqZSdR0W$@RC9q^x*NkYmLSpmN%>`Kb15;U?M5=!}J`3U^SSNsT@Kor;36c zaVidQx=M$?Row%ByV?%_0re34$JCSXpH|PnCrLF(dJ39$LK-R&A(Et*@@xr(4idFo z1C}BhmZamA2-j=|tcgms&wwo=Q{8XCR*|f(H((p^^9?uz@K6H|4T7DbuZlGAt{^x} zW{PhNe7GnVPZ@AhKpvQlOBm@&DIDSsokj-9DK*e+H1HOb*g6BY!n#)&uuZtd6a%&g zWR@YqBl;QmP?0TC4cGxlh!J9;m@TG>xnhB66fI)9=q_qdbD9C2D{Pc#67vw_-_e{8 zn(3ff2+DKu7=o~wViv5$&*e<6!5jkA3@_ zp%6J~Ls~t=Fwr1}h|x%OHo`o(YejC`0gVDQ1JGjRzYQsP42ou4r{TT@^pqbD@!W#y!d50glqGhPDZAhfX}K-~YXa{Cd^3x)^CJhJ3nZkaiX$pN-HcN!bF3wAKQO zX~@w$NI)9W={#ciIVjI%4@jychxy;Be z$qw_+DyNx7sV+o0`}Nv`wd~hy_j8s(k8`BofOu3}n<0B4bWHZrMUW*1Y=`nr7TyL6 z)9pM^H->V2%3J0+xM!mMC??I_q%jh1NONrPjBshinnHNwzt*MYh$p z4Yr$YTW$ZcXW9$xz3dJ4$@VSw`|MBH|7L&H{*L{K{kZ+N5PL{;h&!Z9NNGrO$l{Q@ zLmmlvF65U`YiMq$H?&Xaz|hg5Q$m|VmxQhl{Zr^G4woa*F~l+6G2JoWvD~rVaf4%v z<0Hqnj$fU2=K$vl=T**)&O4kBI(ItvIS)F&adx;Iu6S3jtK3!N8tR(hn&DdHTIbs6 z+Uk13^@3}k>wVXku2W&-!tM!sJZx9k{;)$~--Y)MZwucR5f(8uq9tNk#JY&%c zcQL=khQ!9kj*PuL_PW?jvD;!Fi+w)!mDqP;kHmf*mloG0t}L!P?)2cgGjT_lX}8e_{NL_>1E&jlVMf&+%L0?@NeH@FWx^R3+?A*q@l3 zctK)Q;>C%VCSH?xQ{vr;-zJSsnwr#-v@B^|(sfCC~G-YJUMJacte305JwIOw6>ZH^;sf$uCOMNc& z<7^<-LjT2fkeT933|Y4vHt(|nfY?&TbUncp2!-Mbwk#ctoyQ_$$B~K-K-$$cmHNbc9UKj&HUBJz^+>hnhA zP0X8_*Oqr_-uk>7^0wsNm-l4ei+S(l9nJeG-J><^B>Ots7r1a zZKG*e?t_Qjv?)r7tpSx+@!n-AP+th7awp@_tcLS<+r|Y00{hKbG8Ba(l`4lE+GRl>DP)U&%Wq zhf2OEIZ^U!siicmG`=*wG{3aCv{z|u>5$SfrISi$md-C-TDrP)OXEw#D!r9em7^*z ztXxp}hsr-y-cosI<+GK4uY9HQ&7QJnkDjZ09_V?xS5B|)y~=v^=~dtB{9a>vUDRuK zuZ6uX>-9jd_j-NW>v&aS)p=Djt5#P1q3SPHw^ePcI^O%z-rx4|_IajnLEp`Ne?2en zydLNEKdzS5sE=RL$<%9<>{5Z?AozPSpLS?w9&L^&9FB zG}JfT*kAR(qW?Do1`e1!VAX*82J9a2%fRA+69;Y?_|HLVQ0<_#gZ?%+WAK>43kPo< z{QZ#ghpZX$!TDk5pLhP^^B+3@)X=^|?-^DxZ2qw2!`2VGVc3>o_YZq&*zRGk5Bp_! z)Nt?cQNuS3e`fgSBcez288Lgr<`EB%_+n)C$YCQd8F|CV`$xV#^23qekIES}a@6us z8%Av%_28%{M(rH6XVkt?2S$B6>Zeh@(T>s4qmxHxjxHG8Z}i2ZZyEjA=(k3n9MgTw z#4%Tmd1TCoVvxI4yeANTgSj`8v1 z>G2K^8gMk4=Mg(!E%uYRz9d%RxoLn1!+5TzSRq%SN4Z|!DsPt$%eUlF`IS7OQdD)RrR4}(Og=D7Okad*;>9J2;jVD^ zagTCe=$`Gq*nNrna`zwIe{%oDz1jVX$LWdm#CeiEZcnBs*Hh#v@$~Z4dFFeTdam@` z?zzje&2z8k0nekJzj~hWJeLuZ5ucHnk(*JNF)34J+A^Mi-SRW}r92@|sRC7G=HywmQ|(djYC^LiCsD{rmX@n^ zH*yk!mMz+y>h`#^-39JKce%TlyT(1iJ;~kdUgBQm-r&BTbF#%_M^2(WiJnxC$H+-f z&Plsx6>@T?XDf1YpXU+e52-p1 z6Qut-s`RTbv*RP5#5gGE=ljTa(09Q1x^JIvukR(_KRQMS1^zDhapsY93Oq8+PjaOE z$hISMj*L2DIlK@5?MLhg4LgF_3Ly?3XMe-t4TqN=zW4CLL&p!jA;h5<;I_d%bm-1Q zs}4;S;=^z|&l-q5pg$rFIW>=#35%)I8eotO+InpRaigDhwYC9cmQC7L?Li$A>}&UE z+qH+aXS5yKPHh)PHoLVw+N;_(+IJS4CDIaa@mOf=Byfc^mUk@&Ek`V$1#{40%ezc< z!16w*-nV?vnZmLkSi>3gd-battu9g<)O3uq4ycXlk7|ips-~&uP%GxC@v2Epz!+?| z`kVT@nymheXZ18ZJLaHPHHiKgGmpX;ULPwi!n6D~aj)1e9u?1v7sW>y-F+%P6W^)j zYKFR0y`tLHY4M|slF>3rX5cx$m#mfza=e@^7FRL+XlG>)8QunH7)NSfU^{cu`MPmkJuWC^@YawcrdQtUL)v80it^T4K zwNQ1Qicx=1gVaDZSWOWzXe}I=eTc#=M2g4|eNmrEG3K8n#)$D^g2=;+#Pt}TUV-Q8 z4eEKZMZAu7A>(9`%#^vZyBvX$>tK1lOqPq}6>_Ou zF8?Ces9l)1*e#!vyW|V<1GGE`MZ9#Nt@=qMNT*1bF(OMQh-{fCJeVoVmnot^rip4< zB8p{}=#BZDI$4f+ooq2k_7MYQl^7z=6N6=6F+$dfVX{U{ljB6A93#fcfnus0D<;bR zVzeABX2=W0EO`-Th33jBqD4*<&9YIn%IRW(oF$gXW^swc6N+q+^TcYoSZtEliOc0O zakKoR*eY)k_sK2d0eOeGU*0YrllO?Hs17O%>`iFf5|;%WJy*e#zDf0S#*-STE}t-M@(BR@tR z&CqgCPcads<>9$Pp}o)5tm-$kl@86WeClKM31*7EQpeO6>WDh5zE)qVPu1rlQ^t#~ z(k;5lbkPNKkF~N))W}j%B6Gy~vY!|!>&0+cD=w5n#e9ipBso*elT*b)v=GbX#o|)g zCRWLXVwr3ecgh>ZUGgTe8S`7W%In2L@-Fd++$x@t4~b{x!{TvyuXsYmTwN zu}3~D{w|*s2j!dMeawS>BHt5-qSHzo`KRzZ8i?8G%@wGf6zLlS-5o(kgt46AE>SEQZ=A$28 zudY;U)jD;Bx?F8hcc`hD&3jngr|wq|slTcR)syNG^{9FRJ@tO|2Ku>Y)tl(+{(-g( z*%S_W5c80#u3^Y%`CxNndkeI%LWEXNsQ1VTwbi3Nvb=UA{OG~e6FlOZ^M?)bh`mFH z)Op0#k;BgSh}D?f_J~QNM-KL&rxiRuOq?;V37y%Xzeuzm(P&9xMVyGojOMv$BK`xK z@c)1&>_4D!{RcG8|A5BvAJByU2Q(q)pb6*F(M%n7)}RHUq(z-7py|$3iH(iT?b17~ zaY2*pHf`Fx`O?FFCoBf?F3+J_or&`;lw}^)q%x;+>wl7#vR4ndVuyE=Ev3bG5`3uC2%bMC+(NBmw2tMLw-fNYq{Oqu6(_p95b*Z~vzsOVaSHwRpJETw1GKf-|vM8&vDZ2_$p_tDH8sh@!2P1-h z$f2LVL>@8QkNNvJJykeXS9${H;%h@t z>{O1epl_Rs0PScM#x$dW$JzsYf8NH6E^4NlrDj75&1#`qq!z0cYNcAGE>o-38g;F@ zPF=75r0&Lwf=dh2!ZFs4#ArKOi_v1WI4xdF&=R#IXf;Jk)zUOKuY(|E)u^VTaGKN% ztYOSmbFpSJPt6lnY5^hD5_PEv!KmgM5w8A>5mz+&pie~%`lN3~qB^cliVXELR#)X!98)KQt)$gb6BbB!?aQj z2;yqFXSrt-OqDf9*d3EW@ z2D2d%<#@Uz?LkA*FNpvjU1wtq?mEV={p?N>#UuZuRh=_Q6%Hp=BY4LnL}F%@N{4)b zo06U>+# zrpXZ}%)BeC;>Q24YMgH2sfJZ%gA<;En4cZCNYG9=Dto<6mApczQ|R_mE)r#bdBOiG zRV8eAwrK#H@yM0rI!rqKR@k`?M{*q|d!Uwk74%sEJE6J}TyLmNCtLXeRQ@o3z0nY6 zVZO8m`z_iJY8%3tFU^Kf4hDfHmP?3IL2f{ELVd4(R40j!)>ifyL~GXsD^Y5I znvIp%nP~T#A$=Fjzw}Z40p%;N>aAeUDo+)wDpe0C7jqiDR2`rk)kF1EwScl!p{i6h zfU+=qQ=zH>WvXtfT=fH#p}MLvbslt)j@G6?m8!mw{!69jO)t$I;zHavp&fi0PYC}X z`z|?5PEaxOLHQKY%YYmi6$U_@)Kb|w6KugjEn&~47FuI;9O7V0)LzHn(RL(t71@}ai z+!OWUo~R%9M0IQz^=xf}*xE+1wOxQVJ6~NPQvWM%J^1<^($M}QLddBJJhyQfw!rD1$t{JX9a@>hy5I9z?- z(G}zAYPj=t=le(;Kz%;o`vLCnaL07VG@$dH1YInyU&{{&=X)ED==aNT&>jysm4G(G zaF}5o!|nuKeWw8Tkfn?phKWW#BVdT(v>Ta^{LlgGn=vwRhNE;qRN4SZ| z_y0{dN_79d^tA6G3)zb9iZK&4%y133=EEhz)xg!t%Y5(1w=u8!A3E?%!<=H&|KwCp zr2pS^QD}$0JKM=mP^Wb}BU}5o4zq&Y&vYsoy8CZ9r|8*I z4G?Z|P`EKq?!_~FvFwF;<2u0cz-3{!wh(je-Jp;EpXe~&OjI`^4-df|MqBr|I8W`x z^&Q+lCrTw|d{i#Rbu%z%#}gghlf%k`{`)J|DPF)6>a(IkyePV%O)tghwVWL4xEJk3 zcky@3-j2l#bs1(1HXuC*#z;;)ncjmLUBYAL7tSe05=-BB% zge}4h@gk9o8RXc)(GO{HsDtRzXEelFJiP=C2~-fnQ$p+*K#0# z3TA{88?Ny8^x518DMWKol-Lw?637CP`%8-{K zNR#5eh8d{+SRc6oWquHPxB~V)RTNvEMt@K7X?&;32ma#teSvLOm~`aP+US)R$sS$O~I^f>#mxDlcZ^y{ZJxZn$XJ zs1tKEBaq$*^s7$Lg&A~LfyRcqG9KgDX4vCzcxJg8FJ$>^7ju9POtAki!Y$sR0UH{6qq#81x`>7Ko$%RM$5K+07Od~tq#Y|MFUnBqkWQ@jh2gnss*J#@ zSfr%&%NVS^#fk^9suYJ5b78YS%p1ka1gz%eK`UR#Wb9^6m1)u~(4{40fVqAIRxvHL-CY49IKQg zQD#Nx+lsNzZj2l&$KmPl0y#lmh!xn2uxf~1?dt`R%1r^)HE3H5uXoGE9? z*;v7ugBhG=IS(s`t#ZD+ShmRp*rUA=ZNqg~M|=p+nM>s|%ng)?uTgqs@)E3tUW&aJ zE9ENm$K`UhT!Xc%wc=NKxm<^}()IF6c@@@-D&*Dj8o2>G8?KetVLhx8D@T7qt$rKU zGYhMK2e6`gqr6GpEN{UY@vXc{yajtX?vQuNyRhol6YbSjtQ+5hb+anWL41Xk%4g+$ zc;bBk&*l$dMXe83(mul)?qi}3^GuJ+zv4OgN%@p~8mnt_<+E6CeopR`&!cr}#tPyb ztl9n@tGEBa>ggWrirj)0s$Mi;^;cjW^(FZ-*0lO#41=F~Ae_KjGq&#Pk{F=%ET^^WJ(#Za1E#|Y?*`E~KJ7_O{hL|~R3d*)p# zOogNET7tRqkz%QeLceqg=7eK0QxmTe&|@!GNh(>Th-E5Or71VhqMR|SA#PV)#HE;9 z>8iSkN3j0?4W2{CU@oQ*b2LSmyP?)_Ean%=#HVOuf5RM2CFX8=p?$qljKdsHAJrG@ z^8Hk`szEz9UaU}cnC)4Gxu4506SNXDL<6y6KUfV>=c}RE0XiJ3gd?#|I2!B!W5oqx z0#*yhV|T&?aUtGSIHoQX&tQ$>BJ2&AtfpYD=_2$1N3nxpI?b?~Gx(TqQuDA+fL0kV zR&8nlb|dI>`n2C+8TJ<}#~y{?`Tez6fuwavT9Ld;>_WS8tJo}VK@Z?x`%A>iPBN{{ zV2{Do>Kg2#_@lWha06ycHewgTjo71bv$_R)6K=&WhTE{Fc{^4$?^JiGyYbG#Hgykn zGi>Me%?Gf$`4HARX?^oC%(wr5Ikc1NajbeifmP3^=uHOoEauL3U~k4wtPw@vJb&!S6u-e+A~{Y?#M84?CH5VaLV`*t4-)L}GRHQSlg7bY4_1VP4>6?3Z{2;{X@t z7p7njL_e&hzNYr6*Ri7dPwdM5hj?84RXl+)l=J=7B$%yw#+WBuddgxHRZ;&$hdlqYbjleifili`)a;NyjtVl zh*w={+*dQbx5(gA?Y}a=B5#q`UOlgIT3c(2y}ET~YfIByM|IommYI#y7PdFptLybE zi&j+WterNyZQ8x&He zia38o#SMD;#kFO&dd|MBJ~*;LU1MmY*2q<@A$_f(japqB-l9@ReJ62>>uU@J)c6%p zZm%~os>^4vEH1Uz>lxSOuBo;4XGxs>1DVxx==D1KpOK2U$TDDRW1Ak;TkRasIZkoC zw^R)rWE*IfFiNh0xp|8W0loe_vY^HFwTwr}RNDs{0uR&$v<+;Z-8{X?Nd{0}l>xQa z+lK|)NtqG5jMFMYO>+)g(A>CSR#43-H8_{*#_jdi+D7UM8)+)6sJP6?MX@1unURZP ze+u=sQ9(@0jm(#qJ4c;S$lhW@QRN1!a)U*=f$ymcQe4?!84dHajSdpSPg|j9$Xjfv zsocm!dA)5+a2b_Q85Ma^Pq^OH`>*BJF#%oI8wocU0@eF~#= zaW|COE?^QJ-C&ePiJ`iNO4|fx@0f5#9q;M2HJS=R`E&h615=?hsxgeXh7|=o*9X|W zk#4n7KdSvLwh^zoryjqW>jwAghHd~r#wr5QQY zB`IM|!L|%pOZ;tXiLFJi8!e6WQgd7D{8>%5mLPVey6%hh))}p|ztz?`dMmgZfV00T z>!~%N0=5P#%BU%3t8EBTXIMa;!LrU^soNJ?Yopjp{1#(aRBeN`HPC|88Cj|Kb2F&w z47;l@4r@KT1%d6h2Afiu5xb1jLTg>)Y(1;BHaM5+cJKAp*{~N3!yQ|jsW7zGMlOmC zsmqL9_-jvDgKa@j)hjnLUtZx{a7Jl+iw#AU8?4F=A)c>k-w?L&Y#mee4AyZ4 zVi~RULT;rOnwDQ&U(wUHShvK*0X2j!He2b%dMmv&5U5*rrBTccWwxckt+Y`JC5Flx zdfJvTd&jafs(sHATVo+@z;iY-fdR9Q7E9_DOh1qBBLqy-1##^^M3GNb3< z8wYnE3`PWc625mfa#1pDo2jE_22_almj?KZj|^&y8A1A`2AOXn0M}DS%S@0ivoU%rs^KbKR8*t4 z-$nW;#9LHh$XsE_Tw%yuVaQxz$XwAg6x!uMJVr_-|{25Zv`X=ko;>cZycrgnxM+(a`NKDBY$ z+`w)888N9}#@_6dbEBC92?HVO95ZImT!_>#RM+Lx+eXx|BIm57=pS2jIhtCC#DM3S zaQOVjHuTR;GjtIn__mF0h{O+{iaw($5X`rM;7Gck+th9nL>Y(xN%YKxv!Q``tpTDK z6Lkg|winL?tsx7OF)Bc2ThKJEwPiZzw79q=v}r**1}N=KeoVQ&QO}63i<+{qX|2tz zE%Q+L?Tu|qEz?_DW?JeOwzV4JMir>8voz0cYc!BXLD%pY0S~Cmrw$hd;d=(b zB?gSP5ADBBPq3e!U_U*tOsv>5Q7puF)mxLZu3Q6|1*ry?t1mdBH(rPd-d@%)LcnxMzsIVffb$6 zg5NU{;re?fn1{s=`?K^Nl}c!Ho7!4L?!3mfxxzhf?!38}H>O>j`g;(xCWW1qzz{!M zex_xKI;HZlb`g#_Tsmim_9W9zX??FW_D<$a%9}(n^2W16Y(9y{PfdG>U&R|(QkG+G zHwWuXZkdR+Di>C>1a^u2fSLNwu>$k~R%7>zy_o6UiCNc2#r>Gm-GbTG8!#KXUaZD` z&NFxUO7Wz&0kZ7W*1*3^eFFbAtr-3*+H&|eYWv|or_t`{ZQ4NiTeT?oPifWg7hxxv z6brRl_!G4m@E>9SZtPa2SfqjH)zk2AXU;F-G#x4SVy+sT8S|XF7VzCzC6(eq#^0uP z0bZoGz+b5Dg+EbU4gV!|1^lp{w>z; zMDA5^YvESFErDx;Ylg#meC`yu32>v~uwt5v^~Bs7xZZGBb}Wo`i+RwHwe#!!1WSpX+=je_4~x?#G|@ z_`5Lcf98(tQmmWiV^x4`=Mmpk@c-(g_a@f(E{5NTw`&Q%4E{vlLijJT|D5jv!1wv+ zEr@oeoZ(9b{D^M}{E5CvNJ(VB1-B3GCAb&ho`8E8Zadr{I0~zS>kEgKW8Bj|<=;CM z$_ne}o$^?=k^Fh~c-qkp+x{2P%YVTxRPr0yH3;`0ma*d< zyNw^GaIB)h8nEk!Xx{{^lDB5_o_K`u+c+vo{)Bk?Nm9HboxKjSu7XYDMJeJoi?yG1wda(uW-Q0sDNfJlLU@jN@CLExfC=q4p}i(V zxZO+#+csjr!VL&^Za}bh0}60~^#|c}E?Z0->Vy$`g9!!VZZL5qsUCN|i9`J{;x0F# zMJ5!;+k6u@$AqQ>nk4Y^j5nc?fQB%x0Z>1NdYMqE2~lXF8LC71W@x4fr2>kFizHh5 zc_KX~&g1ZhGR|^FDCp8V{J8X=3DS9VhSE=f?pXR~@DG{L`zG|32@!4|(*;6b>J<6{ zhwdrLot6Iy3Nt4wH_3AF=ift!^+75+rh zMEY108g4=X9MKJ8x;itouL)HG^1^jX&xP-SOHL!E}TVVuGSn%~?f;eQAB zrTY{32Tk0&CiI301#kiARWo#t37NQbN@EwN@r)VzxCuRILid=^9e_5uH^RTx#9akw zE#=(3!i1KXP#d6T4kc&?LsM`j#Aw_Ng`2>bq3!{GoZAd#sD|hm>TNEvY8NtQlM}HN;^eR+7H2@Y2PsJbKs8<#B?7p?tq^zZGYO{ zwB2bt)1FFu)P(Lgp{*tqz-{S-yP4zOVB$8I(0UUJ#9eLTmY)M6S#*Aj%+UEJbS_E% zeT+F~-03DX$%Mw6&`1*+VnTt`8i4D^x$I>^r6ygW3FVtmrU|7&_wlUpNI(uaOKOJ@ zsXsGrFQ5|yr5=O(jG;p&^u7sE=vy4RuM-aK6YgK=gxkTmCxCmHq3tGgmkDh)p&Lzz zVqDKLuI_|e$GBCUaLY`b4z(k+1#VVq0GiqfH_;3oYeK_KXpjljG1ND;GS!>f4REdr zc}ytTgaWt#6l;bOmvH71V&aq^O8G6dGUX(NrhI2Yg!__lpP0CVCiJceyMxO&hj1;tK@CTToH73;Cgvw2*2($$p18tQ7p%F5mL=z%9Zn;uifNUv< zl6=a9elQ`lP(~%iZ#JPDOlX4%tw)U2Ec0>`x5$L%o6sE4O;4T#f4m8egicXsa1SVX2ty4f)X#({ zw3ivGL#1YDp$V-|&QD&AyUgUyQ0h5w@g^>kAh>)^Av4(l*pk$N17UwQp%W%_%!GhT z`i$ugnYi~&2)LxTICP(hLtABVe!+xxn9vg@^spZySqv`Q{kWvNOlY$S-DpDBo6yxJ zw9bT9nb0yJGQXr8C$+((hWmvJ8W z$uveviiHbjD8z)6A4>eqgie~!cP4~9=y4N?lg@=Wn^59G;+*)dAD8%s3BBrvNDmkd z5ZxX>j-_Jx5_kD=iO+xv@__Df6ME2u?lGY|K(UGG2-?WdwScZ-Xl>$(#3i_EOKdhF z!p&eDK~qdfrz6}1!ojUz9&L$)8+``dP}~pTaDr+W>J6xzpyUQWlvo6)fJ3uQ9MQSW z7>Nu;cM5fxp*Du#>6{ZzA?Irem+(WvH>oWNpC=qi_`rk?_@UHxKa{ZFg!Y;ca5(po z;_ftYPnpo8CUn0EZ8f1SCUmn2K^BAG4JK}bA4*gjA}@r19kS zaI0DO@t}!h$YDaDF>nZt@1W55pF81BFz#3<+-HnC1lso*ddr0Nnb1on^nwXdj2#@~ ziB7nO8MnO??k*FjL!0AojK3ZfSI7Szw9X7&WkSmsYVQ=c#SERr(A4;e?$PmM0S`B! zK_*mZLVZoB(uBMw1TOL2m`kpS^Z22}YvU&-UPYk^>-`Yn5>_*AxgVFX$b{zmq4;D! zm-tu{3OAt;6H! z;kanw4Cp}@IxG96UW%-$HiT1LRXp4S`$JG7Po|Bw3$$|3C%DeqMO2W69A2l zLz@;iz=Uc{2rZWpS`Mg)=?Y9-wh6gSDA9zXO$e=zDHHm^gud}Z zaU?0njs4t@i#=jOADGYq6WWhfbW`kJ99p^C#O*Ypr%dQkP~1=2h}~*JTTJL?6S~2K zHki<;u((lzZj>E-=v04F zPmAcLuaCVqwZsWJ^M6|e*!z; z3I8zrH2?i67y~1}M=Ym$6@G$-^#j0|YsGtl9I9}31~7;#otg!{U44yMAFIDIp6E4o z1b#HF9DoM%=AcK4@Ue0rBe7$i;9c;Q77gE~6_Kw_zz_2^F}#C)Jr=PT1#*?pTt{ElwyH46@D70 zn?~y{GEM8t7?L4P{mlMz@RM1dA4wjW#(7C&N#fN3U@}>rG|pEVr&vI;K@Bv2ze1j- zSd^mJ&8rT(iG$dPxoIh0;Pr;xyaKVCS0L^Ym^;T>73r|IJVli1O88%KtglFi;tP)T z9ihk z3u#qaSgYMwt3A0)yRrq^)FT{gF#Gl7<1J4q^YDg+lx6G}k`96YihSl!$o5>KUS#}J z@T+Le4DZ82t9XN!O5{8V7;^gHXK;?XvpgB3ADO{?y0fjOlV*Uy`jG6-<=dCbWe~^8 zV7NQOFLSJy8S^q>!~)j#0>X=nS;Gssl(%S?Q7GO@gHQD04Mp{O0b5`<=Fp9KIyiL~ zV_eL0CCMq)k%i+_MJmT-Y!7o8KbPu`n9JomlP$KER|@B`42$v3ABCa@iD_K!^Vxpp za=Fjt7G^P*{#=%7E~hw8hgln`%x9i<4YZNUD`(5pP=c9ep4tPritBF`(^n~KqwsDH zwbHtp8NT{G>I4vYSS&Vmfn6=bD(xIr@pMC0#Eau7inO2XpZ@ z4(PQ=jzw)+GM7j?-pi3Pn`KC*ngX6ANjgi?jqU9hwu)qyDxKx=vL$$#gO^MHeKiC2 zqnCRjr|xB*Hs)E#JbN)W^rzro$b9xwd#DX#{84&UHTL*Tebk!THVS{N}UG=W|ZGvsC$d9yJ^I7iih=yQ$CMXK{|Y8uZjQ zmXgeP%RGcaS%!R;p_VmJOY7FMR+|TZzIFk@OjE0N08Z4Fvp*JooVFEq^(&WMlCPcd z6gN>@1HYc*CUPu#e^tsJ4DVt3k2#f(iBd%}<;P6(G1ClTcnHJSTc|!Zak@>k29I~e zNRlQC@odsak|tWYhfj5RCR0u$+2kNjYbNLG22N!rbDqf@8kuGQ(=;(n6HC>^d2ixe zTu-soWn7v~6c-0aQSZ>i913aG8Lbed+k@7d0aLr-(Jh4e6yl9j;5pqwj+MmpNt{+P z$4cU~TpTOO5)b+$j@w{CPbwQ&a$eCzFG+bH%;^s1Tn}b$gPFq+<~Eq)F5y^%Io-h= zYc0c}x=$FfO56i(7*mqZG{+b|#_&p(WThn+q4#qstYqEZ$eg*wkaL-Gs`e|<;M58! zS8|E0WZ717iCm(s0)9Dbdn#*tC70bw*1%;Pccu0=Xb$6?9dMu=sS=H3TgiD@$+^3q z(_KmWL_a~T`bw5|tu8J5%`9Ov>*qoay->%qmYO-md90;oE~#ebe-m?VX8LBP-^}!z z8MB!&Y0NW?@owgj#%=rU9M{36%%@kvLP)pm9IKQmOPJ3{#yrn?ImWRtaz`$nXZjT+ zxj0Pu5}Yr*r%HTQkUrtl-jror;~F)zmSP1-BJLv#K`81SeAHR^s8ixT;*U31iQDOF8?Z=C4jG9F(!rM_T@6_#&8Cg{#>@4zRa^PTTT^QONNG=%D$XRU#6_G zP`k8A`x1U7Oa7~N7vKV}JAGM(zAVFB*6CzYIfUrw=<%dwQ>ma+|0vfkLPaHb4N zUdfb8INf#3?F#0@pYWXI?iJ? z=P{4-SjTDAX&-?8eeD4JE!rXYC$#O%fpT4Ese@n58pyNc6NYnfu_c3PQ10?#N(FBi zquga3OH~IM6rb%#<2m{&St9nJEW#OvOT-F5t8gCpB{*Ykhq#o#Q1&E!p$t2!@P#tG ztB)^~;SKtQcu##6eW46*v*Qb8cpDvGD3gD~8`W|0SG+%+E`OtMlgZQcZ8F$DzD=h1 z+hjNcmEPzL#fct5IpC<`cfkD&cLEOWjr{~V2U#Wr;#{H7qX86~$ zKanXPVSkIn6B^Efpmd*O|33D=Wf|HT<{FDufM_QAeu0ng;1NBIgK^&W`|$5(d0t|8 zFXL}CXfV1$DAC``_}iFr4#T%Hej<-YUt<3?e(KxFG|w~qH2W_}^bI&u;uQSt>^}^A z@XoJO{AE24-iuara%uP!zuE z^?m4vk?xzmV}aNtr~k(?|H5~$LYDWW?)e#qslDdLs`k|Iq*koyOpXJadSl#m*A>4*A}JR^Ilf<@*ff z`i$==Y$539LmT1y3ho1v5r2ax?8eZL53LFPC`SnW5t=xBX6_7%li0@^^aCYJZiF5= zcPxK8K@t66CrSOt-@gV@M@~=s>0rx0`%dBXH2(QZ-3(;Sp;9HE*$3&v~2#L?{hzd(4z?doze|Z5%ha{=}dL@o$o8k6;e4ydxTMce%7rN zeozfS2>J%!Z@$yMUwr5xf`7>Om%iNyHRSaD1GV8uFoh0-+kbG;A!pzkh{ z8u{Msdma>S+y!#+CWmbDT|<(A{FpzmQ#Cvh5{@k0&x-uE&jH{($N=LR!q0XaC2 zKY_=|KQ95?|#02>1BY}7=f6--WVr&`EQ~a&`<&-1Nswa z>KJMcx1r?gHW{2xqg~Ll0gFXT=8qe=2IC+@kR1kSf+61zR1eO|onPNZ z3S?uT`U}UTlGA_ajr>2ZX@(V|-v@MN{!B_gm2vgs&%Ppuej2oJ_~q*~z7FR9d;RZc zy1x8zaScdpj8*io;4;=>-?#o)MoJXdNR=?u&+0kj{QBGHbCd&9`Srxi0;vTcP#HY* z^v>xkfw>m^N%l}&o!C8Z$H_p^B8*Qj3dh+&X~5;+AB8j2dLX12{}`OyRRW4KoGTY6 z`rw};&J+Das;CjQXk+Vf>Xip?8%)P3Kr`{r7PIls!86ht?8M)Oe;%J2lrJ8|zW`?k zJ&!T!i{d4m#r6vRg*cJzHKg`B{zc*){ENkV_!?vSVvcw=PBFU#XPC{!7kTitDSVR$-ya!J?=j(zQxWmEvV~gNLal6}R<=+pTd0*S)Cvo&2W12PVO$2` zTm}(rt&wc4QAT-?wMHAIvK=Q~#c~C6(>h$z?-dD(Q){PpNF&Ts982;&d({50_8|mry2` zkh4<>QK@8csbq7h)ZwP%e)Yl*DqB1T8hKjU1wL-GLLJ=-I9 z;e@@ra7y2`avA1GCg9Y;39>IvFZAM{k24X;MdB2_3HbWP&u}Lgl4z}{4cUe{*L$J= zkNEUN`aWDEpY-=APV0M1z7KinlsZ14&N!cr&Ve(|eN$6$<{O>(HjmGEYscyJ!6&%U zX>2$*4dA4^NN#y(^-v?MDIVs=reWsS8M^wNZm+yl@Q%SzvD#iCt z<;EyV;qG0AB-$9Okn&d4Ns9kC;vd9a2zb1V_<8u2OT6!&oWef^?8NsvD87`B`c8r3 zYw-4|85qS{fjtE555S%V_PA;SRsnkybqe38Ax?<>73Nhw@*TlEjDx87?rl&VK|Ith zK*v#vkQ#Bv<1HXcTfsj7iI3n7tazLUo9a8F#zX!K&=+C-5BN~w2HYQR4cxuHW1uVI zJf<-13!r_I`TUAEry>w*Je~!?&G(B+HaHRo(#vsh{2I9?=sC=2?S$I}_Yxef1yW9b zQH`8K%KLG(5&8`Q_D3}tC#p_Ciqk{{^8YnLPpfv{%b=h$QkUXv)Jt*x>N-$efmXqe zJpV$aqZ)BG-84wuY9B z3~Ba4zDdaGWSq)7#rG<5e?(37eTC515&F3LGfoQMi11s`4^x`>ei5|zGQy7H%WZE# zJH+=Q;)49^{FBsF=wupl+k~>5fi#hhy2XdtH{__^6_)JBUuoi_aVlb=A8*Mu@Ojw7 z0lX3KQx0FK=4k$Sd0H~wl_kEN=;_XYn z+zX9xJKmq&EV51fauXjZZWC=L{vnee<0(IKxoG8Z%8x%@AU~bsA3Q65nCvQUHTfSn zD?A=&{hlzx-|G}U2I*6NrkLTgjBvY_0DaTj(R#Txns_J9derfdS3PgyS^p;eWD`&N z4wUm&6AwLO_sH4&6LGp@Al(Lo-loMZ&S9Ia!6~25V@!cr`1;J;veLe)A_3B#(|qwE zwYb=LysghB4STjp*s}8GRK;fGMcdJdr@j?s>>b{<_J%Ykn5|eXe_U5 zZvxuk6pTZAp`K;tLTHwUDwr+LTV7V0o0Um|o;wp%EA={9mr|IPR+y5~BQ>>0N>WB< zVnSwS%Kua^Hzs#aN$H-f`vn;ZNuG?vgp3jYQEmMd+D|lV>$7HQEj3G#tcPagLwp?? zt)`U-)!M_+31Rn zc6IzU#4ghqIvi@3gBaQz79G>E?c;cPNA&3j!y>~Rq3SZbEh;Q5($Vp?E6PRJ_rjxb zjdtA_Mz+M#aodxk=SJnB&C_t6s=!IKJJ15=V5};tSx}oj&+ArkvEd4BZZ2Be@)Bzn zWG^YFlF}IDLd%txkDi>}P-@BPUzwRzHKa?&_avW`U%8xLmiF&g`jyr8O~0`PSWCNb zM8S|AT5McleR1jF!uV*HTIGtaithL{Le^AQoY%3})^Rwry1%z~GIUvlUa$pcz+x?@ zIzApYoRn4aps_VroVClvM+J&Qa?_l3bz6nv~jgL`zLw>+piqM0`lqnPiVljVhhI zcEr#%Q_4Ni8B4)BL+`-tR3EO#I-c4+9Up~}G_`w0zKcm}6Ca8`hIG$(lTV(;__O#? zyQlMu#JVxHmwGxAO}vZu=_oF<+fZgv)H_ylNulQ=Yon5i@lq)jsw^rddC8#G0a@o= zHr+?%^5d9U#VI{6Jnvt2o7z!1ZAJZ*+a~J;aeC#@%ZK-xJ)%eG>1_^@8FpdK(H3I2 zKo0Vrhc6=28YtR$Z7%0E3U&h-ARC3-)Txh#=&{so8fk{G)FWKS)RTObLDY79gXT)s z%T|6tq?4@2 zQ0OrmV~lfD%b?1tt9H3;<=S_T!zsHlbRg6!M=^9Ae6@pWU{uG^FsgZujzc!R29l*4 z@~BX@gC4A%aPcGC6Lbwc_2W7|8f&=J|Lb_trjCyie=)RqaS%Q12~Qz`9Lo ziBpKlo`~N?+Pwxo4?B;5XFI%H%wqj61YdtV>VL5=gYe+^q1xwX#Sg=J>o&i^fXi3E6QeY0eP6dpGk$ zJ)y2QDo204LIXps*#e_cI%g(gZI^~eLB{5=sHm`xhb&f^!_a$nV5!nTj3`^j$x!Oh zLOS-M78!lRCD^H0NxCwd|Act|V4Zpj9`s<;Q(j>&OWnJ=$RnwPX(OK6c%ZA?wC=zc9lZ@jzH~blCG@Q6ctj^BhD-5t5RuVfOGS zO~u3yT|aj0`k~43ai5`+4UdcpJ022lb!R~*)Mj78b-6!uL1Xdfxi0H?s>?b)O1y3K z8AMNYPRB>$q#M2MABgka_n7!pna8%R^C6qp>0QzjgeRNS@p0lIw847+-iERW!|02i zrJ#f;e$1i1f=VTDCo}9BD_k)$#)VRmABSUFE}X_0C76Ke$W%L`!%nXzy{HxB2jGqu zF{rcPt4#u5?$lH2f^WNsQ7C)#M@G@-P+I&rb?%fec11?I)Fkpx!|-BU5s?rg4D(N6 zrVttOizp`ooUX_>gCz)tNgA?E-)x+izXSRh%H@zQ9y8mLHrBU}kHi`D+%}@m38qh$ zF2v(LLfp!^5{pf}ktyA(>nYq7lO9kCRDhIE%3nAJdYMt3;>6I?CFukYm+@qt^dw7n zq#4_G8SRRQiiXY?o;NMU660`$*<$*4?@^y09UdN8F-1&Uv|$JVh?@6bqw zo=<;aE$P_EccCME%MZI~G-{u9Y{D*R8q`9Z=GIxqI$txe5(6@WHdh0dTf;K(5@L)- zoNXFeu^z{jNo6(~`=7RPndw-(@Cx=PKzpl3t+tL0J4S6bY6H%5+G=3!8qJI0S&CN3 z@hC%WwoaY+BJubHShq&CL&wHFl7l>2eKpvXvxCMe2~$ z7*B4jjEg}Tg}PFU-7!&-VWAFJ0=1v~Y!u^Am+Q5|;j%iqds5QE!ue^4q`;n7>;$Fu zQkNq3F(5<@?ByV&NaMEu-`Iz=oHsq$8Vj?q#ti6Q*pL?!79LeO)$wmE0ld{vwuI@> z7d>e&;vSFiy|{dJd?aR?+Nibg{f2K$?7$3L4EFD!ea*w>F=|*f*l4UBUw|o>MvG2H zYqP15VWAzL^pI|QLcA*~w4+yuyvxy1g9ZdDlF=5YZ0gam(cz4YR6C=cuF#Hgb@Cd= z>4xA|1f@C2H;~eWW@fUSsp3ssx%NpPv>us(JDPk`c3^M-*1p zINs`@cs9+`Ozlh|JlcUA$>UeD---%uOJeP?+!*sgGf-Xw!^5Hu+3n%3=tC-Gg4@QxGBj%Mn2PD>2o)7}8XZ2m{aV#=naz&Z zoosSV*y#ru=N~_#jfMm$g?7@9mW;Va!%8s2ze9f-@=FBE4G2OFuC$|St4U!IF)mxU zrK2V)(iIjF?F1~Jc0{Qi=yz5{L|Lusg3!|s!C;+gO+*2jvA6<-gt-PYIGCCSv3r3Ga(<-E;aLpMW72%4{Pcqcu zjB>dm4K+o_x^r{(M7km(lr^!yt^OXQlwg(3$SBT?ce1rsX_uHG6$$4oU(Oj#D#?T47(NzzW2CL4x0Ov9 zgEvj?VYAK}@=^pI)nsyy^kM0$L7je8x3lob5bNnDLsTESJ$>Eq9)k-|(`d}K4?KI#lSNn=5TrzOrB@>GM*M9ZOh7Y@>zW$P7!vIv1nOk@r zA1U59=M?s74;Xyt84Y+&=Q%Nt(_a`A56^(GWs;+F{EyFyA10f{9j5%>`oq;xwB*mC z^uNY;xyU;7e9$u>$rVUH7GLjKVTRKfLzg?js2h4b>eqF=Q|Qn5I{rJ8ALAi!9Ohj2 znfwCbE+an_{yK*vzdX*?`Eq{Ecr@zJ@nPcYpmLybhmMcO96rtA>T+~5@kw&6_=kz7 zIe((h(-_~WTuI;lc!BV9%Ml1aw>*LH&T?IPR{F8{;+e&iuicb80{b4yOngA!iNI5v zqvw-GQhNSLkM#7b>~PhsRygePFCW2x9<(a)&qG_P$u z;9|;8@7qwb|Az`F@4?)*Cod*1xoe6$CN#`qi?q`aO-A@Dr2pEfV)6*i9cN2ZNx68; z)vTco9=NGge?|3QgDR|G$-jW)2QV9#gB5;#Bx$T5(U9qX7Wg7ZgiZCaxk4O~A*Wxo zhO3!=0sYrbf+k=|DO5ckVhwX*jcK^uAs6~3^IwA{WZgqTZd10v2B}TS46)Bp zB+ZO+ScR2V+MK=FtkdFk!r2DnY_KtK*!T>_a3&r(hXYKq$s7iA2S>8k_N}wQKd`a! zj{e_Q-4nFC2JZK}zdv3{{kprl>eZ{4>y>=MeWHoSh@S#&p9DuwkgvR~*KrNJXf7V- zDv!gVZaaWsH;LqIGmd@x)T_titIt`mxpm<)vcj6_M&Wmg)TK&aoY*;B+k0s92r>V? zcki2d{i%8SQz0KUn7>+hSk{H@YS)G{ht^-a7X2c>PCNP)b~STPI4PX)t5)g}wsRF6 zpF3C2%x}$Pw&ov%e6iqZeJmZZkDCI^CJ<^LfK9MZzuqUO~Wlui=l?dQkw$&;w>b z9uu=xRa13TRm1G|A_*6NSCX1!KEoi!(v zbi%`2UfXa#&W9s;O%@PFhBafu>s*uQ;8+HB_E2QlzE9pax-W_T^9ko1>NXr`f}s4Juc3M{-93*m)k^iU#^H=$F9nLu>yxUKc?r!(kpxr$je&LGeYbxPf*SAN);ZCo( ztpi>3ZICt_xQr}KSjnH%C2+zg(Mj_J@hRHOC1{7q_#{&346cnxasGbXGCmMtO2G7( zo~l*NiP2V}CD#}mNi^oy_IN`BqpcIC4Auxfuh%Cu&Yizu@U*5n-LK~sll48dHT~(D z%yuo9s1v-Z5%Nf}w)%m1TYrl$*gnzII^0n$Hu$4P^Vo)TVXx)$S?rGN!Hqq25r0_I zJc1JIZfxp|Syp4`M0d}I3}}*ch3|qUAt%Vgo8(@^Xj20iBQ0Z2e=u=DtXwOwBbDs( ziHmmSgpet0_8hy<-LvSs0Lk+^%eXSI$Rqu)=|b zOXlV-SzzzsF8u>TyK=c*Lv%$w+Ov!=@OAuMK4J@zP40i;aI$i2cmUaTJQBv?w0>>4 z-}QBlA-f$~i#FT`OxfOCYM;2K4UbZUtn^*tjy7C(G@d=+rWkPvUc=Oi=gA7NpEqI6 zl>7O?5}a}=$qJzU{6~ zUHQI=C_=G6zv14{mG>ivh?VI$A=kT0?H>}!3ZVP4h*P7v6=37HjIS!3A6>@d zZ0Y&1>ke)O*w0hWg#8^3M|*_lJIRLxEuScBjB_vBx`t31w+mc|)$R+K%?B0edD=*}`;xaMq+pTqe)*I{odBVA9p79Q#*c zdk8Hf)+T-!-nq_V%T6{>DJ@8}zYvKAF9?N2{8ojl6zENwdh82~eMZ$$Z%8ey zcMD6Z2CC+L;;Z~2XO-W{snv$ls20{&);$ zGv5nubv5_QkY+23$spod#oRq$7Hk@E7kEd5a8U}4hF|{greA4=9-qp7Er)aj7F%SP ziI)7|vHwzqd%e1*7QWld+DzlvWvXf+D0RJ}nf_yAeiZ{8%oKiU0^jgRtl7)|Q!LhcA4SIBs z>9-2M7FgT@2KiSw25BE8_ysb$X}#NU!XUvV(RTrHJsV2+v!VLwM8h_8mjfl8$o5hP zmtRLCD8Y*wi2Xca+y18My1wF@A1uKm&@73!*w4>8a74q`kUzkN(h9Nr5?Uh30)s@@ ziuGS#q*7Mtrbez*l%n2{tHOXcAQc7$#-rGUCd)6e`=r9@Buo&AG&JSd2NWNo(;;0` zgspCJSmLX^eU7g`IQV**_uYn*{IKDE@I8{SHk@!{!wuI_PH|bt1N5^5uOT>efnI1P zK0$}X24&K`J1*vd9JiVHw8KvUjf9jIk!RwR-Gl6Ta;RenjoJCs^r6wQvsQJi$v1}m z--g=Ty>Xy_6MnMgfLRzLg1A_z8_G1!UbeXQ;^~I|RW05(n1MofZvV*eo_u!C=m?MX z***FidJ69<{A`c9zK)%i%T7;!>cA!8i9@j>RNUu46T%ahwDWg<=z15wdkCW|zLON5 z2Nze6+f(`Oj`F(~cjDbgkdyMBQp*R*cVE|tH=nuU^`(2SE#Eu025&y)Iu+-36npw* z=dLU~?r1ai$nGt{kGkG~opR3eV!YJa(To2?W5BMOz5FhXq4-vD3^M$Xm2dZy-#(At ze#Euxx~SB4s(knI7jX9(R6?6A-R*PkCeh~Wk>M^0Pwl7GXZQCZ=dL6?d!W7q{d5WX z@IC|r@htUHcc8M3>C)5xR)Rl*6U%80+igEwfvH z5XsV9C`VhnDhc_yzI1J>E+mC+JqgWYJq*ZxNln$%)_Y`Rm#S6`kH^?pAz!mi`%k*w zTE>=mg9A?rumK%z@N{_|g|C$G^VFV~fS(K^g%SUEGcr?vyXx{y>>?$$iDnWke;HLdE)tw|c8?y2UgzIEB*efdyR zK=o;c+A=V8(Yh^{Og4^gA2R$k{jIT7IGKxf){Jz3x@?SmUrI2q&0Dbh#RE*O0~btV z%@nyH_r6d}B$?wLg0eD~9227zV<&X7sp&Jv#?G3GkN3AxhL7p@AuMTW$^NnWEV04t zz=ocl4T3&>@!G}9W+Sbcdh}kyJ?9Xf;ZtL^~k@#YQA+I@aeBuH@54VK1 zpy87xEx&hoWM9rw^|06QCF^G|U7WvU-d>0JI=C=)OW9obJ4G%GICz@_f86mQ^e&%A zy)D82?0UOHxdbn^lN30dxEtyYIx8FZ!QGtpj=HWZ@@ z3c=A=l~)b9`P8aIn6*{y3xiFNSJ@3kd9_J+6rtPgTwYmqqy4ejOO_Tdo#FC|9W(;R z7IJ$>NA~7&dq;pd@<;YUYcnvS7I=SWZ7+tC!W)Ug*@P)01t1e`aMMg7Ih=BiON>e+ zCslS_*C_-OIBxh&n3I&Q{Mb*HVqo07dbY9cg?|bUfa3l>eWModvXIi z^Y}lvXOKND%DUkfTfI$gh5o2D9S;0y${1kK=`mCPEkN_(@H{yDqb2x@PVOM_tfdP0 z%WRl!=FgKvC_n!^^1u`hzqSG{2`?RTS|l~2%z{ZOg!RmCquQnbE zgnFuvBiXY(?0SnxwrhQc%TJ)zI}Cp36<^*iAZwgQusqP(3Ca%GcedV&sP8BB=|}rd*gp zEIblXsZ~IkDnPQAmYv^VZ#N1TnV!BiNk<829_+AGgDU}oj^1v*Yyu*C&KqRiq6mPu7r)drTa09YhP5+wxl#uyn z-S5{yv|cZ~zQK6)v2PK-7se*0pMnkM^Xn!Q1d=v+p$RkH>zZ^lDDJwo%_J^!!MbVh z29Gph&x<7%1@Q@5LQ8saFa~4K@=cw$I=++>6{cvBh}PU)v-4D4ZO>1}W)4qIp1qjc zMlrA)1>yv~u{T#;wVM*~3hUM%9t_lZRlg+bs%WUEZ{8=iWLtx_e9GJMD7$xTZ0~@* zMyT(^jfOavdIHtdY<@&=;zu_8ao6o7{@%p7hYdgKdb=Zu>G_vR&;P-7yQ8TSoYu1a z{1NQ*wAV7hX}u9#5}v-G9(1%0bN3`dbKeI?j2!>`60hr4SD3#R>D^aeAC75?(_ zuh|IT>z4OYe;l|Z{ADkm#@fjK_XBVNig zgql{P7 z%ci-rp^x8Bz5WxRkMWtap+~<3S+V?WK>v&LWgGhJ2f+8RN7&_hlJjL7`tUsf+E8)P zX*VGN%DEwP-H0BZWSj(DK7=aJH2>66LZH#361N{Rp4Y~>Ng%#$f8~*%&|HM@+*btR z+BWo=`@yxbSJ~xyk#lVu`rIdoYfml@v-5=aLLVr%p2V(4Bn1$&~B;!rgW>zLW=BN`ti!;v@5>Z1RyejjL!ppMC>uzLt(iJ#mXreM5++ zT*zLYav_Gp(NHiPAqQ+*eNYauBSeISVPDuEtf|bh5Y=En_XmT1JrG1se+tTyId`>t z`qcYqmY-f8cHP5AxdS7Sgd=diQMTK#>kd@tjv)8KR_&>G<&?MZ9qFki6Hdx#vWhy{ z)w8O_r@IZy&S!H|j|e-|&JoHk1m39iM}5U_{)xO~4)o{)*j-P#?(7+?Ptz5pJlP9? zkrKirMl6-*$_AU0u%?K?UO=`B{;@edpcg(RvQ9N*s*k3RsI(J~FGEtI1s2pzt#D+H z3EHt`{rUDkYT$rG4O^Dm=!@vbE4LyVMi*ztNK_u!nE(`I$I*PrTsrjK=PI z8z1{|EB0-)V(DK+J_7X|FEP#~_7Yx2D>VyQLC{{|Y4jUeiYr$>EM^iGG>KgIhs2Vh z!}0{6(l_24OGgzefK39(fww%8EHsB};}u_y*Y-7OmL)1mmCv-?ZjYh*t2;5zFE8g^ zPjO80{s=FAkMP^Q+~)d71$2jgx6}7L*R$za8T;fv?%DwOJXZ6&E1rHnO1k`&jj*#ZC8RMLs1Ia@mq(!e7Y6* zhFf*(rmlR`t-PU#bGCr=U3t48_>i~c-X;iz2Wcv8(y}FrIE6}$;7*VzNcZ5ICjW+H zaZIk2k|s=&W?*c)&yvj1wQb`|aiZ#)e0TerZu+Y#+togwE()Jou_-$vh?5iUK*K;R zd&;0AgR0u6+uEkv3y)I|S4t$C0C%@GjP#J+xo-Io^%_)vCddEt>}=@hwtV~(G>v~u zKJs2qOs$Jk$7+UqI+l8hU5pB?Lvw;Ya7wQ5U%WT*wy8G!U-&J*;>%%kOAO+XdIOsM z6PG=QcyAo5oa&SbNFa76gj+uc3TKDviK6VMN&47NKkmAbYYyv{^Js;%cY-6A{38A| z)^`~yqu$Jymx%)HR!DBxtsHSZ07~MRS@HbyuKNfx%fAN=5@z6^p0n2w^i79$2oKN~ zPB!V5C>dVMh$O3N8aY;4Rv@f8k!rfnr+Y1tX90_Z9vd+y;_hwjxn`fo9@Vh$80Xm3 zd#ngyiev7Gu+PE8wH2d)b-S~SInu3d3_W!!>DCV3?5qIJ9mqBCDk@RsP$f3yg+|!Z zA3Dk0(7_>902bG|W5fd|=Y@JAh*^kC0cmlL)ydUE?qJUt#p)}B%`Bya=AU2U;7*10S+$V7<&}+OSrM& zzjWZRn$K%1K}ky4Pm`aCIFkMJcS~^c7ZLSvxY*&qVHv;v71Cf3hdZ6$J%sTU-y+NS zXP_)@#~E-l^_ zjyiW?AD_`$f_|w4efV^_2o;kK6nfa{GQRV)>onKrN_P>9=Qv413;G#y_U-#$=J#oo zv<_{Y@lh7v6TVe~KY~5XWn4a9fyJ6>%XyX?5Tgw1;)|I_da zB>5T|fkZ0WHI64;B+dmlfh5T#@0Fbg33>pg8@~>R#(acc2%sj!W;U!>pPM5>#LT_EAjL>zur|>*PyDZy?Kkg zmXBe!>iL@QE@%0Y`9)ED_IJ3zR^2bN&nqT=6&4is{a57)wLV=}*fQ*FT`4e))xHXg zuxEw(M63R`B9B0A#v(<2vou>zy{0sW;w`250MwbS?-$<@-+0{Jhh3+;epNir*4+SRX`bGHYUA$8U-g`&9ObziOZS|Eqlx&!wIfK6R2#*?yCg zMV0;kv#9dl^wMJ+?XlN!oo4)aH~kwCR!*<<(%Tx=`Bvp6?FhXoL3go_i@W@9CP#BqU4C#Sjy`n07WS zFq2W3p@h}irGdI!OUq!ad7`(WYh9*#C?8QZB`jA>CF=W{h1StTY&c!pyD^hJxWS0Z zvY^I0g2{%)L_|@e@k~o6ni6TsBswRWQ-l}0rzB%OC#WeDu2ssI;@{pY+%cYK8Cjj() zo#kWE-nF^m#YCvRk@c+Y9zHPA(C<^-m_gl$1={C2d)Ks?mZrtpgQMAGzRAaYJCF-+ z%$NoW7Fg_owoNms_Q^yj)2X|yiQQv!uN^Z@)Tq&zDr;SvvJ)H9su<9a=A|~Z`&$PZ z`$l7hE`0c_l+OaUst;rIgCzTK{+Y>lUUGp`^w;LNYn6}6frGh{w%_#xxow|7XW)47 zRvC(^sAeppwj`?k?3mxs(YWEe1sqAMt5ZFeZUx0)Pnx}C1b|oPi|egix9(pZ2HgLyXPEYSWDA0 zYklk$AmP7HJ>!g1Sq*2=|Gj$6n$`3-^_REGc@%P{xU~EnUtczyyu}2E7QQc5dYV?1 z4SoEQavS%SphsUvE5vSrc$fX`vpmjXLqA=DKD-6X1J53!u{luksD6{L4*O}+5bfSQ z;=0PQs(=gbIkek;<`Q@g>5IZn;q21We`K$BNhLV(5PF*QP{8?EZ9NrVuXwL~zo@6$ z?G}4czF*W+?fVa((0)-*weOR)SNZ*-o{GB|3wh=2F+PTz8)r0t6F;}d_}o5{9`@63 zD?y*$LK1;P#WNi!^wcdBy?Pivs4sHLnc|d#Vr9i@YS1#l#fxUMpZh<{SEYDVg-?`S z(mol9ry~7komD|y$ZSZa!fn+pQNwaeD5gfGR`Oj9-Ocd8h{B0PN5nX^t=gz*X{c+G zJ(8_|7RMkU*TuoZlgP>|Q&$mtz}lt~9z^oY6Lt~=wW$}oMrqH-GJJ`etH$2RO?jYp z7)TZ+8S!;HeQ}lIbAQtOtP<7&BKwXKRQ>MzaJrX(?9;+Ng?%{0OhZDI#r^Vfi3ZKw}0=pCGrvderz?Jw~ zKzxtrM`b$kEx|V`A#Z`(Xp*KsVs;D&aW`` z(GcOs?#(BFiC+K{WaC<>US5QMssulZ-JnmD;QvyBKa2?HA4>3#mEe!KevSA7bX(Lv z{T9x_@gfJch46W@%u{Tyvc1A^=p}R6Nw3NdU}KS`7w(dRh8C1R()4bXZ8p84`y-8a z>Vn%WWEBk=qwEK=j?~kaEO`5V)$>C`kWpSzbN{aACzOLq9+4*zJLxa+JR;kbvJOEu zYy*L`Tfqu#Uic%^Kk?d`j`^rzcsya{WOY?zPi^nkA=by)=6}pCwy#RCRFQ8|&xoh|+Qz!;vku=RIPpS) zOTy6$Y+guE;(9i;$n^+Hvfpmw2<h=WdnY z#DDD8i`=CE^>H?HtbZ=kxu2L)cB18d#mI>#8@d8_XtSC^O~Jq?-1s z*z9QGFX6C>t${UdHQ|PIghorggrGo~Xiqx0d0)v}5fpyoz#)g%!ozPrEs|%2o=yl) zY#QL)??b#w8Tnnx?~qRUX-Dh0eTyHAf zy`+41Qv!FNf=%p5EQ-2A4*g=1jCAx1M4h@%x`u4yZYx7HR*cwx~}d(#pt$mr2$@G98M*-bW`57`$ew(D52djWZJnIjym@MJ>%V%d-1@>*Z<>Go+R1I5 zNGb_y=6nj}tkS2R8Jbiq%?L3?VGD!U@w{~qj=s#c;mO6t$%)0qcc?~-=fK*bZQZey zg;HUv5p5Xh#O7XRw5`*WfCb}+c!)iwA4v&1wT{+%Z(Rxc`4aT;`BzF%$P(w-qceXh zLH}HW{$ZYUExX-!IZ(2(-;Og;ig5VboHm|LR0E2v9O0|NL-3Ui(#k*`{WG|f0$hAe z37)j!h?vX?h=pUmjtIZw{Jnm8*gg5G&%w)0&rzgBe2@K}_;025_wm>yeYe=Y%=S|I z)UV}X;a3&y&QZT$4IE(?+wBQRv*rB&JF&-sQv!?QKtK8O=qEkz+<&R`J$#4X$H|2_ zbFg3d0c2?hk9HEZaLH0k6|#Lx1IR;%)>t8@{wbBOi;pIICcIwM?V&Po-o{)wmCdxb zWK-;ht~Fhqv#H7PuC(g&YJb%&uhtW*9%$_u%MJ{Ur+X>p9A!7+RLA?FtJVH(ie|HI zGo2mN$>elL=S*9Ft}8t-knYL}t?9Y;_PKP|>JI2dJ>%m&>G5&s2T9E75d56@ZD#@$ z)2VE=09VDlThuMLFWzo=Jv~%p2-`(rsrP!kNJ93!>>m3A=_- z*~t)gYCEKm;Zx6X3yk?uP06m;IE>a_M314dlxsckVpUGrXQ&&;=^Nk^a+3WQSEX(; zgUZodZvAxQXt#;l(?$Rl8zLI(6=J`}zjdWj@_4N1~nU`iAD>qT6rE zy8K%od3eGaRKeexqTIiKZuZQfx;n{_j4*m@q06XRM!U=Sj$>5Ya%hR~k1CcI!9=ig zQ2x2_lE|*&*xCm4uqlrhyU1ut)+mMdqxKdRbApNX0U3oV__Q!&3>DZDIMqGRV;T0) zR_yzC@RG=3w_v#_hn#fs27r<$+c(7|*@rSDHKUEg+j}}U2^it_I^%-pZ_YNMMnm-%UB)En! zXMYtQaPhh-POVQd$GHV4#1dthI%7NeP9Xipp>2b;Rhjwyqq4^gntE#EY_Apx3@&t} z7jun+r%raQZjaCO4J@^{t#2QaQ(t3Za%1Q4Y2!nw zHNEMj-kx=oTZj1>hSm2ds0k~CXG|Su2~gFS&mh~JX?o!koG#8m;Jok*P9>oooWiLV zQLPW9(2iZF>aZen@Nztc`EEkSHikY~_FQuQn3JiPMVS~|oj94Ttp_=mOwfcuAhXws z&H3iR10$pR2jhc{Vr_Q=Lf5$+0}VaPuEbbt%UJ8;@aW=A(_2!r?d`Lv&1|1)_RX|s zxA*sN&vwrAn3|a$Ph=^fGMgMrzrAgwxp|~*cwyn#OKXSQCR$o1+J>oG%FyzkF+1PI z&dWZsKlv_vvBGl5Rp?tMq<4mgx8>`qd*=^~pvF83M+}~|WQP4i^BohrGnkuh%*|{j zyO?TQ5WdSN=j?M{vpynVpNQ98wfD+ZW~{${{EQK2YC6|;cdza4Sm+|jU*46H=KUQbjg2E6ox}7q+1{SSKP|n~-MyGjFLrk? zrF&Nm^i5Cq4XgqsG~ld{_d}LDlrR8ZSz?wBuY9v%Nxg2xqnYNCrs+sV^6F2?je_V? zEw#(TnAa%0tb2(|A!~!_Y&FS7k|eOez;cT=nZu?^ED1c)G0Bz;uOw{@w^vmMVv2x5 zLRL+0OLIrKs@XR!U8Q-w__VA`J8F7r{87X!6+^Mw8?Z^JF4Y=b#CB(m7!KJ@%tQ`A zktb9ta>Y*AovN&<8}SNd%DkB{B^138ok=o;np}yxfm*|{&xJW?GLd! zr7m6DoYlPOi0+j^!ZK?1dSUxWPxNZry5Z6_0zV0%+jF9bHjNdkXm4Q!Zn zC|Y&Eb*>My=SbUP))biH4>hlKn0>aY>L>7Bx!>ZpB*W+Rc=czsHybQc<+*+7r-qH0w5F{)X0AU9j4ZLluN7 zK{u|_A)YR`0uie0+PX%Q4c&F| zY(sK!qV?0w;i_0;G(xqa8YIC4j`8x9XPrP)FhdK;VIN-s-}cYG(t|>OdNnyIg;9T?t46kU_NEzTCq^*I_`Q zxAM2*%Uw+4&w$=IB)yzwvg-;w18**eG_XrqO85aFL@L)%pV=FcKYTAB=rg;X`pn+Q zba-ocpV=D$>BXsRCNdRxpBecf>e!X60e%DCXAa4rWxw!6K+tEW^@-!o0@0)+ZZkTlwn`CHUyoQ&nFf`;)|)HZ-vAYMnuh;YsW z)uLbbd)UWR>_^FM-O(`ohjUlIx|hK0J|O@u+_a}yEWrf zL6VR?IECpAEAJ!JjZrapPjEkj`=1fMf%oG`-MyOL$BT6T9sK?{Y!IA4!`pAR+sDu_ z8l0VOzyE@8=gRkCSJ3^pI^Tam_z-`;6Lc>lotwwLV>V9f;U>0Z^9WwlVtZ5bHw=? zcchwANGNi5tSh2;gQ#9iNyT6wOlXSK#+8$%5_4+|J-HT^AI}8bbX;G=`o=rR zf3Ww3(a$jc_lFC6(OK#E5?bWV23%C6@=m_4*Me!zeEl7oqRki zKDzCsg98-+%j~bN1ITLKj!`D@^DFo*3)^Xy(LeGBTmzkzc1*i2Zcd8a?IR<|bKJOh z!|#k@tX^m~5lZow0)BtsJ7M;fKr|XC%!a>HF>Gpgd6nxLwrsbHcuFwBWp5C5U+p<2 zrc86bJBSv&el)BJ5o%MS*4ap;Fc+w*3a~FnzRhvTo2MR=c6Fcd5M&U@eG^(JZN-Ap z1``OV1RX)6umrg|>+EIDMUNZK_X9@P>Qr(n)xNq)2^)r6jUC7h?ajyX3mu~7p~y08 zD2GU-gpr}|YTE*W&hzq;PccGDWX_&5aZ@rT1$gZS}R z42*sgL1PtmxE^AijLrk4cSw_T@GVInjSt27|1B*;58;oNq2^|k=Np2EW8h(LWv!@f zGs!(h(83Zj1rm{(lgsue?TL#SwW=R@UFtYB3y)(LuWFy(7w&|)vZ7h`>gAc7A$B=oCr zrx^^I>_xg$Fk^@hcMf$7f$L0FJkuk)v5#AQ<#t)oEs`mNs0DO0dxu*>HT4{>J6uOWOOK-h z{Q(|XaQcb+2e}M!zKZM9__d2IxHhtn(fi+92M6VLwr2UG?Bj0i=~#}r)}x<8INx-M zZNsd%h?8RmxWI)>Aq)POJa?`(fMS>Q4?S?6M-R>hC&c@%C)j-~PVdu-D9_*y%kQ_? z5-p-9uoZ=B4G?DWyhtbKocwv=HvT*n4FX4@tQ@C(eD54SBIkWvpKD*+{V(@tc^}4h zJGIYeu0&B=O)t)Sdyf2$@5NCX@TclNKAtrg|MmR+9)4Yo@oePZv#(?5?{5CR9Qr@7 zJi$&8zD3p;&Izy`6pnMISYD7!Yc?q>o6j8_K7WHO8D z-rVE%!xCwK!yW6^-T8*3?9*_jq^o9ml1&QVE?Rp1cA^%RJfRh(0eD`Q3{A*uIt`j| zrflJ#k?w^DN3k2cDhcBBxjWwc(Oo+~@}?d*{uy$X^6XmpBjE?1Y33czQC=TO6`FI% z1eBr>z(3G=8VI%{al=HWf{7HvV21>^xOQVbi}a>EbLaS`j^QLW z$tgN|*@j-;E_?^k7iabe1?XTd3dRYw1-P)qRUeQ6J1J76R_+GkB1~$YG;!p@$Y?mz zDRlRS&>aEJ0nx+OZLAAt+9l2B)2Q!()IyHAzvn|~74&DQbL03aIzxXprU%>oa#+zZ zgr(js7=jO5|Jx^%TUv6dwkk&0T)#ZU&H^uUY(>g4aFz{K$aVfaL|A&1e*9Qfenh{& z?$gC--3N?#M$C-+o+F*)<*5tCLz!$OSm{MyZ|ttBGz2docu$&K=pq8m9IMO zi7jXkc0Fi#VEKH|=%29aFM(FO47$RZ+rpo5eJQ^VFP{Zk_zSKtoQF^sMIa1RbJEUaeGYFSKUeY#rIsdIqjZQgS2n-(BnhSOhmy-BU!@Zhns7?SOxT!*4;hAi-}D zs2@q_Vvn&0$ZH18k(Ms-*|iONA>?H!Wj)N<~)uCrvOc z?SsA#qr8p1Be9}2=!>-95^|r@4ICFx53p=zEY)evuUsl#DSE=}0pnAOp{d2@K7?)l zXik8=_E|`8CQi=0IqG2_R0(Q2H!Ie}OvODeMSS8fEB+S#rN(FcGFpytRrJnoL=opce3!^Ek)l1?(;%;NWtS<8qSY@&e?@5}a^J@LL3eM{!=l zgF*;2c=L19{JD!eyRiFh$B0uns@6->J&wBlLlhZqajnuSj{bVc2&6<)QWtz#d)^TD_5NNxJ3Z=HMoyVu3X zw-vq?pB-vto|;^uW4fnmFjtkXpAoVPt?7lX?t|O2YqFWQ>b^jr@L+R8-m~ZazXnZc$ zv34T0d3193L_!rz=>LM+v+;E-3a{npdFPDA^UYnGhgRs zI`=MZ+?Did$1byAevoy2A>v=(0iNO7n1nYqXB&RNAfeFagS=3MO?;esA{ii%D_XLUM>jF!rv4GZ(d8ZS6o*-t|KJ*8tk$wN@J+GlKn=5 zF0v1YOtX9zC4kvm=C9hH%k95vezpC3_1NJp-Q8ObkBuMR+}*wT@P?67`ZK#mCo&qO zS4atVR&`Ccv`lwZb%Ye?U2e5{SQyxI^_r!t_6`i}y=rOA)q4iI(;Ls7nmT7wSJ$R< zrl!u_n0{^F&U|*~K$E9R#nGyUm7Gj`zc7i1g}oA!PfD) z!UyVdG(4J9XE5X#ijxPxarxr!WVAG9E}%{*P4(}Jp~~}#j>bB{SI0cEBr*|s3PE3> zTQjnu+N#j7rS^=TJ~DFp=-9#0(Su_dl+oId>7#mQ?2xYf$fGyKs~aRmY>IfXrc@7( z{$+J_{)oCo(XS2q5yspqKRtBX#Kghj;e!(srww&OOJ7hYcvhGJNj@Mf=O;6Ke<__B7%7FWVz2Pd=$3&SmO_ACP^_ ztY3LNlKbJpll%%{AX$Yc_U-d^_p zw#h`>WHLFK!~qDsL#?etgUJ?t5}+f`VYj@6+i9zp*SM}ljcu}vIL9oe#$HRV8&rPt zy_0M`@l9lTp$ta10uP?q&ZE!cxKXapTCpGlSMfTtHlSbR? z`X)OS{D*u1+!y7jyRi0Ymda}M$9y>a5C8mZFWGG`(+}Z8JhYxA6OL8mBqNJ*V$doo z_OTBLA4EhJz7km5uoN(&^9g&NTQ5vVtA*+k`gim z_t5JQJnvqc?>lRMo8aEloejeTQM4*G6k{72=9gMyX~^hrD4^Y5*O#Gr**Jk8oIG@| zh86NLmT~l<5{`BfdY&bl_Sw>3sDS`H6}m`AVF|(%LX_4!N@%0mz$ple$Z(>Xbc8o* zoIW0b@fSzkrcflzrBYEzg_Z=zTOw&IO~7K3jc>ek)v8N3E?qS1R?NaqnKka{8a>z| zshTFG&%}WTtZ8RwdPgHu^`&dpZ@6Y@`jT}Xzw{-jNbz{zxQcb8ObxR+>7SUuS{h?< zq{D+!+;ozJ8{T^EV;-maHz&!(BavTZzFCIF%?~>(V{gS_Xw1f)<6m;WA-`_~wXX8} zP}(p*lAP&G&9t@6q&jDkujKjRXe&+wL*jxrAl%858s<1ge>YCdXnf+d;o;LJdKWu8 z7kj(uCo@Zjr&XR4Rytbk*!?JrZy^-Q>zlMKe@naz71bo+Ht2+O=GGycpV5o6Sf(%| z_BtDYMM<*`q6otr3>KNSt?Y5d(2+c(OBMxKgngJ6q<|yls1Wn#|IuT@FQ#RCd6RHq z6+egl)bOzz>x4J{BS(kR`i6GHeuw;;uxkPu?n(Q9+}>tz5{ICQGl^A6W5q&cqju-* zfkYNim-752l&t-@APKc3DN4_$P1y&*06i4RuRXU3>7jVzg@19 zSF=RfYgNtf9YuzvS2x1&6ejDj0#i6~;4@+j-o7||VkhzVK?d?zl-)7Pb7BABEX$#?ik$9K3v^0Ev5(TO=bpevHN;CLB7uWQYIU6sU57P1^P^_7nq zsu=x;rb)tiO&75*vPU=?;gp=ImiZokhx zq219j-+}+r^QqK)XMJ~VZFfEY$sW-L-GP8OgfnX_Y$T-fn*s2PgKFU&T3!tJ-Gdt4 z(r`x`b^HDJN+7+E?po;VTl16k=UI4f76Y;)IVAR%SpJ&5!) zfb+oPfk?zxT`^dWV^qKI;!4g~aZ)M?!D7NDX}=|Qw6X_>HH#XIin-hA5i2Z{vAo_V9pYz$0uNL!6_7lu1>Y{TM zEHjakW>~>#OU$N+e6?(j{Je!Pm;WA{ro%>dUOJoEpD;xQ8$X-Yb}U`Kdj9goj-@6& zBCBpAGB*7z_#jMU{CE?kh2by5U%0k^@3kA&Ub8P7t1r?rP6<5a#)Y~nN!0Xe*;mI; z(x5u)IBp7ahq1sX@bbf7!;JPUpN3PV(}2#|Gs@!7GdwQMIp0;m3a>?89c6CWET*HV zb+EsC<|~{3cN*!x@BJnX^+#;?-#h}A-2tWrPHOoJulYw#gXMJhgm4MG;a zx(c^)@pcZ0x*w*tZECJdn6l}yu%jiKjWkS7jn`FY5}H*d8>VSCXS3a%W*x$~zJXI$ z4V>Db8DT@x-PKDyy|W2Gqb_)qh%vqUw7YQ(0-Mzh z1@2m<@D)`_SYGJ!ECv6v?)4S^Lsc{!>3bs)#IY-?Ly2rN&V~>oMq<@K{dYpDDZi|$ zh^d>>%ZhSyK(&-33a-7{BZ^GY(mqckh8c(4gnmN|#Tf)?EBKQpt!%0kSq!-at|R6_ zg(3?tn7-MI=k2p-f>|Uz?#_FWhz$A1{z#9!@@K5l_bgDgorS^yzE0mWv@4t4HAGj` z4;4Rt3|xlkB)?)52!%Us(!zOcO)@K~q$`vvqA9L)wNbm1VfJ9{B(0L!nnG_7h5t`} z>MYyD*FInTg22u^siIU;qlkM^56Rz7=f=UG=k(E83kU*pb%D+~D_N zk*P)}0xFP)9TYLzM3hN}NAT}=-4T8c?OeKs$YISNUag;Jk(GB3J;PFjezyH@_U=DX ztqZ0OxBB{!t`8Xidmq-pK`yhv0E<1fEjs7QA(VKLQp#uMfgP?i4A@7M+S&jehj%#< z!_D#G#M0O;gmA`VllSFt{9r8K(i|Uaqcik0Me!HzD&J>D%c?w`j)$K5#8w=Qw@?)G z&7F%qskw})iK*FMI!@06hog`Ews@a&wW18jy7rZ*>i-v>zwp1z=h>S7MgA^O9Z>OK zk^R6ep_8vJ;z=R$-D8&dK5P3APO0EaD^L9Cqbb@`EnHBwmHs-T;n-*Dg=hcKQ-Exa z(8nJXS-UL5 zXPrR~=3VR}#Dt3cjrZ-0NGui!$6`$9zrv9ip4FGHKzz9ATzusWMP8isQA4i<(CB`IQ$Yf!|$S>|850>*cKIFJ>c73 zY|8NeGGMU}q41qm*ly9j{0!@152B8uSsH`W<_3L92h<2qMh$V{b}8!{;!&kq-2jvB!KcBF{Y?17J_H*f_(y%xe_wDP~oe$5_*jyVH;+%~6>`C=;(AX?kk#4! zSA2k7Q@d(ryvho>ade6|oNB0BH9J-Xmo`EInlIc|%Wr#w{B|hS$Zt0Y{B9RJ6sQUW zLps6>p;UdaDu{~7me;CDRec;ckcAKS7ig=)jW)oIj(*PTba1Zgse0Mp?LC_gWd^$a zPUk}Hv2cH1kB>SBbIjL?4AY3uA4IUj7fRM5H#daTNw3ik)0y_`+=hJE_mfn^IzY@4 zP9c(KM2$d{+Zxioxah`)* z-)i_h;+=BP@&;rg6x3Mo{FC=Kc+GAO7#@_92&1oN;Yrj`(1W_hysYpC4Z=#qo|zYf zVN_%BVlL5TvJNYA$)j9br1*I;&d0--iK3Td5ap`b!#MQ-%(_v3d|=m1A~ADHcHk8J zo<0RdOnZ8_qWWScvt178hQ=P$u%fj>Ck{$py*HQNKiA$iw|_9VZ*^Nfzk6t8PY%1k zhxX)1x};s*;yC*}G;8d5!wM(F5kI7SO&IhgKN1oyDAbm-y`h8_ju(W!i=F%tY7Y0T zY3rL$d^OVF*w7b?_f=PSwHWs|Ot;4R!(UCz_qDC*>6}k>P1k={Z|SP3>W|0zyHney zR&7mnw%v!LWygDa#~VU*#siJ515MHU+B#EPS50k8B^n+u>O%Hins4{=7qBn$XGB-P zB%kWaR0`^x<4_=NY)vp0LMC}YPiK_%*2dXTQ^*gaSC4g8d)8T-7Ce?|1wDf)_KOYM zJeCi2znEClRafX(zYX6)MwM_gydbdYo!xbCVmQWxy%2$sN@ttn)3ERL^~qg0xOq%q zn`SQ9)D`O+tWj@)?PGjc4alCEZ4>9MSv+q%InyC&e(l2)<-66Y9YmSB&F2gEr#GCl zYT%6B>l?wNjDUqHm9~Cz%iQ7d@xycZ^Itb8L&{s^uQM9g?K&+tdCo?d?bu(9AO9?T z)8(VeLI;t3ODA8!!N3q*f}S8@S)jI1vn<@^_Q)PDPLYuPDvPVa3j1lY_g|K=q*f-bYyigy{&F zrX2Foamb`|c}ge>H;BLr$4pigWc*u&4;afTQ;tb&6MZ_09ZO9iR&T|k5TV{c;UP7w z79LY6?UHCJ39QWspCp>vPwIOPXydDt2b=hbptLMNT0~Q*66BZOR(}?JDQ4hwRaN}% zH(U3*y*Q|nvG02V$n4zf&U<{C4_;wiD||%Q2!X1(74g`+EUwkj`AY%eL7N}Ua4NR* zXQH4OP%oAtKYPhS(0?U?v8JiR6N$;K-2+S6KvYdlZp(rUd^2aQ>5j%HcJ$+nZun+1 zn|gXTiK{Q2&+eIRORr7|`GXtsy4$B=lbAle|Ln8V!>6xH=Lh!<4(u94QE>bLEUaHX z13PL-=B@Bx@r|yqV9Sz@a8oR5l*DF6>9B<|Iw(D!OE(UtYi$z}xh-1HbbIY!N-}+S z_$*;Bd4UQKq40Qh$3Pv6@k^Ya5-`@PRejCTj+pWT6x#P758^MvuMvZ!D0Byp2oPs3 z@+QuGDtFt#WPa6qwvJccxAXZl_LYvM)1!^C(aw(6_V!e3JNs7WSYwQU4YARVR06<6 zs_=#tJABwSpfs~NliA$cvpLhhkQ-W9%ni;L&ORx)`?&o;sCkSrxm#9@X%n4s_x~`i z|NSwub54SYV^@)ThpyyI8md(5}QM<5)^@+QX4f@1O-GD!WodQ&?vt1Yi{2+%n z1OAK)`=0>M2&f(+o=b3FJuJqjz#%^g_>eHi?i9NLKdMkX=TX=9c-L?#WcbFR448k*F8Al0H>o0H9_q4HnE12e*+>pJ1RXp`$f$rhP>iR)T``d6Ye?b zZZAFqb1W`=k87gnDVIQ`b5S-oX=L{7CX=7rChLlDMzhJz_NCQTO!2hQ6@Pccm{W8dL%rGBsF<>% zxjn1(h%o3|tEjSSP7AX#u;o@gYq`|y73$cq@F}}Z3Y_!l=bEE4la}y>=D}7`FlooV z)KOp80XHKGCy8Q9UZ`uz$8`8P;>lzjr&k%VJj6ZCX$MZ|c#d;_n$uV1b9dBs*VR!_ zmVQ<>H&;cQn}v>=bZu?A#{QXVidM&(s-kEY)klOSb{c2}G9In+4px{@*k#~^tmKF^ z?^8u7(;R4RX++G7j1a#jxT7sq-qw~T%M5v#S6GUKo8kfN6%6PWxD?LGiunB@&EWGm z&UOl~BftEn=7D}pA2!IZt*iS(U7avqQ(H?J$!mpP*Pp-@TJVe$SOLja#>=?eCwh`3 zV0OE=HQE^W22f;xp|G)r5`=~y8ER1#iNTT}+-C-=;$DBPPcje(GGtiSlnU(EWtl0m zA9!sLvMh_eB7CiYXB@v`L2k!`SbXIwey3!4*2-Aas4p@tYeH6W&%j7;DB}QsEXP z=VO1Ao6e;%5SMV9bS@3rU0~mI{YE&Q^S}YxXznl$X`#Ct&Q>ix!M-^VPg#*FBRLFF z1+KY#Do$khBE3PH@Jg-;h8w=Cf@uE{Ckb-Ezn$Z%a<7w<@sz z<+I-ma~XOz&Yd~}>kkX$VxCb^thGk$%vN}9HZ&%@w*|x*X|HJrI%QN*#y^VsYfWtp z9?^q>Dnb>NLMzovrD|#oA>N-ni!XnPxY{;*T7abg30FIhn3@O7Y`sqcQ&W(43}J$n z`*9-L7|yK#ZP7?i%74E6s{H4DO}Ur>_S2GV1N-sm#C`~S*RqYvU!b+St#a)?QCoXO zRZR`H4dNNsi!8vpY0fVu0mB(IG3WIZKYBm?c(D{3!VEdm8Z-1T--+T#T3jFD*N!B` z^&|Y+k&C!~)OnsuIb1*HTyr^r>!Z*@7}|d$dpj&LM{=V-j%9Q@>{*K$*q!1P-WV_u z-nP6v)2j#jA>NDAawOqaUYE_04!C}te<6kY|BU-{!mX%Q>-vUk!q%BMzsFNgIQ`(9 z8rM(qYlp+)`YGo==YzO@n)kB>l=3d;OB_MTyp(Ym7DU@Hi; zOrN*54hNeOpMximLfkoOBx&0bl~$|VJ8 zQBysh9g?M@GOv2TqYFRMW$ZPWam#)a{;OWp#S>gJ!spllv_TnXTw*zjSV@U0sb&sj zvscceKpGq;?itztcAq>*<~=39Lk-D8%AyB)4$6=16n-`1v01`Kq|hlFI8TtJNwnS}{Dd`& z8@LWtq7lLb#bQhHEgF5#cE$22DjJuNn56q;-nj1DDHLX9NrevO*{CXtN^MK3v5IE5 zNBAXM5Ko~~?ttqGc4L1CANg9}YRj!b!;#I7*jSAOF{ZiA)xs|adXQzQ*EJwx%<}di zv4QlQqppJZ(f><5=V(p3rmnNLwzCd@w3D6_t9JApQDmo!m(t29>N&Pb#?>>f=h)&m zA}yGxd)C`noq_As4_7bz^`aPUid6OWz!wWG2Up=(yuLmHe=D56F@Jqs(AIJKh3DAW zV)IHJXG4Aca(%tTfu|mTU_d``B4To?>8ctmrj=TRm zP2@soB0nMCLmbl{BzeHeej`of&7q(k4DlbF{+2I;Ch~JU4?E_6q={T#Zm9eh`rNrZ z?|S$01ANDD$u5Ex!KWDtUtHqCG81`sBpwR-RLNuNl$tH8hE-P;jU5Wbk(jP(9)bDb zL1F*jgt!DnOM%LrI21NqQa3vfvC8@OIE{GZ7PJPi(SI{@MhzQDA-70p_E~gTe1*|fx)#3covwlk_50*!^I0MH94e2WFB%z4f;&ph+YGtZPWGiQ#F zLWpR179sjp*VI?k*Pa08IQFqDBGrz(8B;0qJJg0tM|LYn)5hC)a5W%6->gUe`J{sZi zxCT#~eaY0{2Yr+&#LDZ1cy!G4#`-BqEtcL0$Gs?-4n**npq;qyf%~lKb6OTJ7>J^P1+j z?3okxtPouxv$Oxa=Eix`t=C@x`f$+Owo2a>k6LcPt&l#Sh{9E99Ym9`i5o>Q-39!t zM1}D0eOB-u;j3uv9n|?O8lmMfl^!>qLsNuWG;MkdGgCUfw5T!6nUI>i=D{sdyDp0A z@vG3Z?+O1&my6z_>t{PBUW0TF2X(fr#;sK-!s2I9so)TVa=Vr}4b-o4qVURmokaK7 z3*qY{+~fVY!9xbuh@B$hl+yEIxmR{|3wbkz%iq*?T--u~luAr6;>7Y*0xJaZh9*&> zpin<+NublzCkhszzEejKBD_P`|0)g++5}slukEX>JjQumr?Tgma2! z_$}fx_$$SB_|MBEA!V{Ggc5G;PFfwu~m zFl3fCks*2*_+VH^iUEhT7lgJO_9F80Shx{94331ZMFV_FdlBwQ4mWU=ZUyvDa0_(eW{v;vHRRW;uGK|IV-e)jEu|T$ zEv__zMLeoIvmtvvN{Vcxqaf>R zvlr3^S#>k4O1JH{`Y@Q|Q{FPp!#x9SNHJQEMd%G~7WawA#f##7@rC$NoRVSa74l?v z*;kH`7s*+2kz6TP%WqU4HAsz7e^>uhr?g($0Bw}kpfzjDwQIHQ+8f$O+E>~U?WDzO ziM6;a`Iae`d6uP?t1Wj}Hd>yr?6&N+d~G=vB!a?&5`(gWJV8Bz`UQ;$Y6!YG==GqF ztQPAC>qXXC)?XZRxfywsPBW+s(Fhw#~LDZ7cJN)n_Xj@~{8RAnA{#5v`@VCPEg&&R>7_l~DQ^XSyyCe2Sd>xq|IVJMW zNMBT4)TF4{QH!HiMXiZi8?`CQ7abOz9Gw$g99-QV%lmXw5u3}do*Fe`w*Nv`MTwk~jrsbx2(|V;1NE?~fm^Lr%zO+_%sJq5J%ss(9-96v^ z7x#7U+ui%zhuy!YThjZdUz&bZ`c3KU(l@6+lm2S@$LZgvpUBWMA~RAmx@44R)MO0H zxG-Z*#?$gRvBoI5smN^Vo`lH4nD|C)PG?t{5c=Dw8sLGCxXzjm;6i0+WwA*VxehpRi> z(&63?TRME+F{`7eV~>vgI@Wc(spA(Nf9!a?lk61HDXCL-r-DvBI`!?eq|=q1{@UrD zP7me<=f&rx<>lw~%o~(9K5u5;g1i-ZH|DL&dpK`<-s^cE=6#v>Q{IWrTIa~lNuBTM zys7ikop*KV+@-WjWtR)OjOj9^OH-FiyWH62A6=g9@_v`Ex*W;xl0P>8#{3uZzw6qm z>t$UZ^Jt!-p2eQ`3S0%93Pu)OTCmL<>MiwN?%m=2uCS!Ax$x4$RfRVc-d1>T;ikfW z7H%tivG9$;4+{4ceph(3@b@BB6jl^plv17?u3d*{b4KEv4)?9XN*-d44m2D{7R<^6`wX*lhMR|VtW#u20w|2|vmfx+UTd!`l z-3E6X)oo(8ncWt4yS&?$Zl84frrXcm6T0{6KDGO@?$>m`wfjBY|K9y@k0m`0_3Ya7 znO+@x-P7x2@0{NGy=!}4++%T-E1fg{o+%c&@Uza%<)8s{E>3tJYUNRMlF2 zTlH@>-D|F|*;`v#duy$)?-hN2>esK|#D0J2x4GYo{Z91v^dH~<-u`b75CbX(Tt49W zf$o7L2F@S2ap2E`1`b*==#vXVFX(Z>ybB(@;Mm}@!5fAY44FA(;gHLRtR8aLko$)` zHe|<;*M=M$8a}kk&>=&w9s1PJuZKkrD<9T4?5<%C4f|%ed-%ZNi-xZmzG?Wo!#^E< zbVSC8AtNpsaovdfM*L&M<0GCO@#2WrN4!7c(1>FrPS@G$qUsXr(&}>Sde+UYyQA*W zx_9gTJ+jltu_LbKM{d3T)9{-m&+UFP4XW3H~FaC zE5DOJ%3oBn>Y@r&sT!-A@eHwDJ+IzSpKBH^T#M3TwPY!9Up1zNGT(-q>1awWJ@ zUFoiDSDve@tJKxgHNrLCHN$nW>r&ShXd!NP-R@fF`rRGoj&|GKPPfaQ;m&b;+=cFL z?rQfu_a*LY+<$X#bU)yJ(EYIcG53@1ZSLpNZNb$IQvIYKMAReXI%1 zik!qCCz)D~*2Tz4uq)gZ>q>FCU0JS9u6$RCtDCFRHO@8BHQTk=wZgU9bra`gz1xPI z#JUsRDQ>rslXA{Ui+crfa-aKtbgq*}6CrM^brXVMH5?57t z62mhk9$vdj)%qnt`meRSe)VOve&LfC2L=3mU-lqd&~ElZ;$V#*1CYeKLo$Z zIFLqx2PXST4wM{t;K0lSBMw-;d<*~02W$w9IDi=iA-?>X{ncNt{_>J9AN+E`{-5{1 zC&d0;a1X#evj4vQEA}@C@p+_;XA{KBpg$lDIW@PI0gI{DYGIJI+SM98)$>ogUR$lL z(bj7BYg_!dwyU;D+pImRZNr#mhqhDOrR~;U#^~m-b`&FalA2Zd5mQO+TspT_2UcXx20oHH^<~9AQ>ePj5wVHzG>JQaz>PEF#U7{wd z=TIx=VD#0f#;NgYw|YUns4h~sqK>8F`7s-{s#f&HIC=!e?fO`8Ax3r&hzG@H@tAmC zyn?aae({a?RvcAJ)l{`iy{=l+8S$%(k+CvKrehAEo2-zva*UjSQQr)V`xeW!a-FwzyPN_RpEM`YuQ*+f_TCiHH zUcs2LLba+7)a|NX3sJpQoVrd8Q2o_FHA%#wwFt$`L=0vql0~}ch5A&4=YWY~q!=T{ ziCoN9+=S=ntHcJeT0Jk;i?`8^ye{4p--%7~F+43F7p*c<2FY+4CGFB9Gh~kJB8SO- za-h6GI^{xnmAphQmAA{4YA5D2cFX7FPPt2dhL&faaNt>56TgWB879(XoXC_3B1%rD@w5C^{9Ar6ev#jaTjVw3 zUHP)e5&6=M+I_K{il>3U$QBVI&WO>Nr@2yIDqfS%i~g7)yjR{Ll4OKPkhkpl3oR@cAr<3l+;Uu1MV(ugR1Jq8JFsG$ zTO7V%$RM|PZSbIKx43`!kPF=6a!h)=#l*Vd1KsFp1u0w}@8tUVjk5FP$#dpOH~Z03X3v-=L#NDbnj*4Je#OH5Ka{v(zlCr_51vL=d%rkZQ47CW0}lxdH1Ew_?NDfThN=S%@Tz}|iUM?ZHLYRpnt)I5ybreMT8 z2JOHgJOlJWKS`|@Ms)~j5*PEB&Ml|P78T7k6ZMelq^yNM3%W&JWj_gHLM0Xw48Bv~ z&tQ0lnoTfcvY94Z{9@)^VRhH>zp8P%g{K%+nFUUG4q|>b*djqY;Hd2NHdXTKp-!RO zONmIt-1ON0RjNu@@oZBIHe--0$#s}?dPLZ`4o7nxCVQZkdj<5_33fttBe333n@+ZJ z3{?Iwf4$KVW?{axK6?c12el1Y%S78ivmum&0icQJ5~5U)8_@is{;hsh$BB;CN|`PL zVY&v0t1`JBMGpg8pr%&y< zVE3^6Ftm1!uo9*EsTo+MorZRAHl*)}`InxmFQ5*}t9mHdv&vNks=KNIl!G~qZmJqk zw(6?NRTZEtm9NTFC7?{q-ju2eKpCpDDp7p^rK>zuta?KiX=rUasUp=2(jQcM-t^Mk zF2>`&5$)hJctZI9*>}kya-52jTjW-xmkvoXAz?No&qaQtpY$xF_nyJy9R-iK^KyYS`Kau(gd~Ya5F;yMwx1ME_UZ6(UAm0p8@0 zhPFZkkyES1Ftt?V{h@n93=0|onm1r?fDLEDmMvnK%I?tl#O z9mVwn)m0Rj?l$lv*8%w*tzQW?U8)Xi z$nXDc_XW}ly#pueK)k95WSXE(S$y7TQ7-}ny0{S0>(+~>Mu8qi^^ z`weCozVUsG86CQR3y$btkTJePGPupDd@i?#jBy#>JJ?%JTAzRU19_A@)16+dK;QJl- zJ>g0KzlV8O*PnH$11`)bM*mL^qm$bIs>>B_b?RJ)*;M`wSN_0hz*~}qE69N>VC_=Su7Fz$-PdEjZX(*Ok=SoHNp!(%qg@q=GCcq1sWOZr zOGJgr!dN8*>VEr%SU1s^9IbT&%iu-U*HE|#&#Nb4aR)?|06oc zYuBPho)!+*L3lCf_Gn#k?S*?MW{@#=q;fE>n~Fg@p6KYF99ACm-vLpE8C*A>11h8y zc^{AaqoOxCg}ENtis#@Dgh!4?zQ>AG?31Kt?F4e-4IK}?C6E)%w3_Ivz|3tiIi*Cg zM&m!@%D5-mhsjwY2QCit=#g*dQjp=;qbV$Oae zX0CjANC!FloLGHJ3@5ftt7CS>}B363^W6Eb?7YooQ=ZFj~2KoG5 zq-cp4?<@c>ihEF0iJwJZ%#P=)5X{csit9p=hn22j9G}LA8rqVjA`?8iQ{Rr6avG~j zRfwk%8kgPX`weZ0T}^?0sGt7acU+D2{i-{RGxJer5KjFo^`%(9@v2UkiRp>B{b6t4 z<9-a>0K-LLJQprfAV+t&KFR|+FTxbuy>R_8;%*X|S_AC23vBv6k)-w@pRXWJIQs0r zBM+kx=K?WQ%M_WGRgirY&!o_73axsR^THJyt_;^MaG0@XJXuZ;xB@sg9MKX?@d?f| zu3d4BgDZr46>b0=g_Cm|*AB*&XgN&Yi*)t^K7sYDaI90UM?GtX9*zV5G3p@d9m+JF z%0l)59y-QKh8N@1F0vE$u(hRu89&Yo$=?ai0~aVG$%Xk(-!}$6P(I2Z<(c^DabQQV zyEL*V@j0&K$Udq-LGu{+`POnC^qT-5brL($v5uvrCM{Usvq~FQQeKfEG8DVh!exYv z#0py!R>h)u{W1<~Z}DOaR+a3KFbC^bKFk|AWCB+6a%GbE0c(NDGDW6Jv`dn9?lsDE znISX99+@Sxv1*trJIIb$?dpWpme*xxtRm*iu2@klkY3Rd+BhK#WsxkFC0L!wlV!YG z+8r%f53F$Y#2Vn6vNu**`iPUVLcA?2WtFU!HL?~u?koF2^Zi9vIRLAYgRm|+7*DA~ zu}V2y96(zz0_9aFN6JxhG@cH}%5ic$R$wp0sv&lmW98-|ISK1@_1K*~Sx%9SSf!gL zr^)Fk*Z1X2%;3zHbL3pvBF)ERl%avHWT7^A-SI8@|R(iF(MqZ0Gqf&Xjya9XuZj@`}U$GumhLxk6 z(ZYNHE1HhgzYnpZdWXDI-X-tG8u2~6O1vI>IX1}q^*#3`L zseD%c15dmU8wr%D1p4*AJ_H z@5pztCfY3D=hf>Ekths(7KgDY2zpx7Yx!fneko)DA=$ZSYzWpx0l3&Yju#4k6 ztn7X-f1ufP%&UDQT4+ukvtx(FB7I&R>xcm}>sWE*xpj>1FuRT?!L#Pq#aCje3PNjU z&az`aeYlEHk(l*fjJfjR;t~~ud5}vnCmfHN8iz_yiDIcrQcjgDmZ%iGh2Y{@l(S|v z#NW`XEW_MN9(w$LV*URxW`0IuE+!vyG#<>|c+s+s!u&$9_y+y;Y0S}-VeY0Io`>VzDlwxoMl4s=7}Ko4xcxHB1pNgwME$X1KM;FAFHnQk5H%F5gu}5; zSf@s!9ULphVYP4!b|;JzP5p?RQv${RK<0M&s$?svEb+7sWZzg1l z5OFo;{jL+&itEKn^`W>(d@n9nABkP+W4wj&DQ28kVea`k%yfRP_KDxr7ivFdjt=n3 z`ZwxZ%pZL(uE6Z_ZCF|V5wo60Fpk-Z9_L1pjyC&NaSL_`KY-oD8!_5Dgq60nn7=-Z z*~UA?-^Cr6=?um?)H7J8(&sXd@oeUA`g|t#gq&7qumi-06@H1;eGTjTL0H?jX~9|u zR`}bk)ri&NGxQHPV6V!@v~DB5)Z)dz&~tnuJ{9}K{y$p9!5)GPEfc#4vaxp{7rVqd zYMrz^tuyvm54?ZhdlsWcQ& z=~qCBt;WcxE}y}&pvYFEXIz)NvdY?*B?;@>mRUWAUT_&IbTSo)H;X@&pIeTv4yNyP*qw6AuGDvW)wrBLPL@we;HL+2kWc` z2e2yA6ny#x5qZ2`qf86^=3tmhRZY;4=}pas1y&o`sPS_%sHzQx*LWg^OkV&~Z(cBGcKrfY z2Gm|-8xm+I#YXI6PRoOu7B*!5?E3lB18PQ*!MR8`Zm+k>I$T%Sa8qHPf?^{V1%}kc zMlK5cDb!d;1TZZzGG9^>HsY*8_7)h5Dlu4<7%WN*e7P=2L0PS(4(4gC3lPIkTdHTs zTVSZE#K=TRjdf&T85L3)dAz76TyJXp*OH)-ZMv>860S7_s`2aIU|LfXG4fnp7nImW z2I{)B!ZuPj^`Mc|2w6w6!RrZ^mRU!$dcsDxsUu|clo^f9jq_*Bw~n6HT)(g}Y;0Sg z9jSSHcYwMJV2Dd6b+g?v` zXrq~~p&=uumHwQT+8P6ky})2uP;6^#*A(k5h_|@hI*la?o7R>)V(lsL7KTncD>ZL{ zWqMnaTp2dKeH=8&#nu^Sd3p-;#s~U0r1aK?%*dx5KG@l%%kOW&s+a7=}C6W>aBk zt&Ln17*ZD-x$xJX;#%wcfT~wwWWJ;{Z2noL?JY1ARbsFzF@!8Bx3o~}+!BziKde;G zfVaRA1!aq}C9m#;vdC zN}39}Dfa#po3FSOR@(+0e-dL}Sn))B+u+4ftE#041~5!N9)O8$ke6< z%?31Mp+Pr)#$ugrJ|3**>R{sxoW7tF&YfW}B-_J4oChtqa<#yf8#-Ls=y2uAg)3Jo zTzTk#D;p=SJov%2T$h2T* zC0A*Wr&4dfJ^Cob>nSy4E;VE>HDoR|WG*#iE-ep%b~&Bt;jC31o*y<9k{NI~i)7rW zs^Pi_9)lGgR9KDr1C7U{KVssElSRX|GHzaD^Ngk`^sI=%+LV0SnH$!yVD{|B7KTH) ziDodep?>nLwp+(pF{xk1-t6S_qnQH<10kwIr_PwR0I6Z9uFI#lji_Osu<4hef1In! z(Kwe#40w(SN6xEnM*rM6RTnXeZ=2bMNc_kK^cjt9!F<~m98LGL8e2?)7z5Ep5<6|d z3}|3ZQyWp7i8_l6+l!}x){uqC7}Z8*o!>aQY3>xxX+c3@NaOq#3{YAc{g@J4y`B+W z7nQ{klbdEY&7Fh7Z>ev-#4@F6?leoyg61Y8+^7N-)t1>an(GauQP7nnVC5Xup3%t5*dOiA(+*4W1qo+bo2|wae zdFrqy0AC&e7aB0yKD7TjJ;8o@g8lRabG^ou>j18$A>5))Zkp2&!kq^}Bpbpi4SrSm z*i>%d^tx7PJdQ#(178us&1XRDqKN5DO|$A7niisXOrH9{qfj4Ocnb9gKwK-s(Wx~w z&Td-NM(pK^>?zchgsa{o7J3cgy{v8E^+&!!eU#-XEaZys@%jg?Ra|(uujGarnP-zX zZc6zk(o}cLwRz@Si1jLX)m+q}o?e}*yIU9bLF1iY?(uReZ;nrWem z_uqwLMW;^idnO`Mf6oN-u=rtZRbv_@v{{YKb4AXa`sP`}HD}hGS=fn5yEygtAZSfW z^12k36ofT*on^5)i9K08Fdu5g?p-?Jg(y<+r@fijJDKxo4tDVhk+YW_V)H3Ierno7 z{082@lClKU*;r?C$wV28)hjEKIEne>!NXz<*MG z4F4JI^OE9W_LpNm8k`wFQ#}LtZAH7JKUaIBB= z-2%57?rOL}aJ6uK;IKlQT?B^}%WSMUW@o^qz+uHU8}ET+hr+>*vRYBj=R14JU)Gd^ zhw!I8{^6MQKYK@Z5!OUIU{!!@XOC|_<Z~8_7 ze$q!fx|cKMvexeb@A1)I^_jklkdnw63Wt^0tZKudQek4}sV5|kJ0D#og13v#_2`LSVjO8AL8k!O!10z7HU@JX}IHXN8t{_eGNyr zeQ+Pcy$6Rpn)%xX70*6v92lJrVvG6B=$pgG`8UwM^H? z#KFRixJ4!eYd3JPc>~HYA;RfgQcN7`gFzQ=t6 zmbbKT{kXLKCiJNgX?vkyk@l7e?E$olaoYhs#n7WBwAq9xbfX!nL+i}YJ51;%K-a@v zNwoA!yE4thrLFLXGH%IPp+whW;^q>>ESO6hlr|k94QUhLk20a5CN#i=2v^N?y-Zx0 z2@%fAp`A@!jtRL<$Z10H=YdETolB${8f-$!54ld8&~XzwYC;E1=xY<&Cxq)`xc6Ld zz<-(Y@7ifX+f3*Q6C%1TOt;CzZ7`v=fNq0ZnM*`j8)&YK9V&dOy)IwB8Tt zaT#~lSzIW_Eljr>{?*KzpvxIr3TPoi^Gs-_2~p@2lWrnIW7>rdXWSs*YE8O640SW< zic<4aJEUf$rldMdDB6TVO~~ShQd<2`DsU+$C~nFxeq72S6Z+PK_M6bBCbail2LXt@mNH4{QhX5iW&im`)ZY&An4Gogn} z=zbGg59ltAaf=C|y)tlDn-I})8|GXJXrUABmvg2GO);T~CPcU~OgG%b4Kkrx6Y66^ z-At&+gb1f|$v1JRVTJ@5CX`}A4ih3t^|;X{F4Tl9ekiHcgiZ*N^b5(HbjZYgYeM@? z=u=SaO?nId9uwMy5=5N=4bn~8PEgWQe#qI!gbB& zY7gCU9^6eP?s|gYHgfvwlCA{2B54Wy789ClLeou%a1Bg1!NiR+A;Jyi&;cf{+Jt(U zP?-sNO{lX8kt{lw924g@A*Tt&n^2?)1)GraLy4zN2>MJsN;ytE2>l;m=xY<&XF@0+ zBlJBJdc%ZXHldy1v<>cw#P-k@#%*dBx`Ah;K z&|?H8?V=Gf;~p}h`%!LpF>bvdM|25{V+d^^GrLO=zzPy=6jsOlX%0Z8xE(Oz2S) z+H67_A=Nr)cp~XuZ!sNrV1)BAm&XZ|$u9&sZi2g>p({;jg$YsU5)MVXX3!CCF5{-R z!?C?MCIE*P4gOFQ8el?b&5Y1qCPXpHIEJ?!t~29u+Tq+LPKTU06EqSO!Hz$Ilt0vd z+Jw-KIfCs+1LN8cnxSaX9KlIf+V>@`utQr(EhaSAgr=L&1QRMVA+HG$m!Zrh$Hck) zP@=H!OE^iP2^K#@I7cht94GuZ$1f&y$Pd}y^K(gZnoztSvcF+MFZ-dy(|!nNsv3E- zZ^JPZPmoUSTl`~c`z90GU_xt6=r$8V%V)oq;!^KtU&UOO`=KP1s*X!SsTvSU)PN|) zVvdXQHR3k=p(ON7I*$4tBXl;Pshq|n6B=hibtXh~gPE=$BwJyx#C;DFDls9n&qin` zKtq`>%fz`%DA9ysO(@)itR_S_oeL7zIme$gp<^a=*o40KLw1ssWTSI-Z#t;3l-;%yj1^L(j(e9vX5& zH~2}s333#^qLY1OCp8v+S3V8p3{JC=;*5Hjd@TZaO})dIH`u=sek*YhXCzh;WTg5O zev!6|V9W$d8KlUMR8O#v8B=Ldr$PTM&He+w4e$xV;PjM(L50uB4W~6!__+^T|lduZA?WMerc;fvU%m&MNPBES- z`)juXlSykQGEnZ> z`q`$wBbd3p%PTs^Io1M>^)BbjNu{g?5=ISVOtE$?_!nzy;E$u#DOpVGMmUq>d4{PJ zBDCuXqhYQbp^vjq)>5p#gx?wOFG!g|`iE_NOc;_!4(C$n#P$%uc2%q)cSvg{d>7tc zz&e|Hk1%8v@G%cBi#cvFTU2+v`#|`Av40Qzaq0zvNvl}tqq3;Ro2^8n;G@-opR4DK zrOGw9Q7Pw;W@Ijv4(LhF;Y>N6<$QxF-(U`J5MHcc4X+@)SixFd!6o|`ui>r0Nt3`6 zz4!@l=19DI^EG&OW)7X1a{{NBz}&9q^8E*C6(>a!|2sME6>QbbB(0dwm}d1T;ASq_ z>AV6rfJ^fdmgEj?0f#;Xe*%~ICCs^*X`0pDz~8~;j{bxwIjudUE1XKt7`FKg=C)X) z(#+shtHo*r?hJT z_t)kzp15UFzGM>T>lE|JWd517?kFQDM>31rC{X^!KD8~GTsoO-GaXrmOsXlMp>oV* zN%~W+RWMrxE%5-)@|06K%5vsV&ZWOkVLeri<fZ8H$9P`}3 z_(!-s?8eDmH9{9~DO58}wb~9$ z7Og$Qp9J5jJqZi>oiQDJO^m;U{afLWSMH8{WWqZ_t(??#&bnZ!%N6fgTqA5xm(2m{TvNRbI3|WG!X1z6+Sz ziUhW_V!Yc449Ci5nru!hmnpM3EgMs2TLywMo6{X-=>m8ZON&))>vVdSEt26#g7J>p-@u37+=b7f-!c3h!^u8OyxN;^tUSz&~uk8EtYI zeVmSGubQa#M2u#Dwdu3n_LEL9Vy)x=ur!J$2LJnO27Q@@yX z)x@RK#QfJY=O(6aV*0z8{%*$H%@`;1bTU4bIXJmJe}v=4vsCd!iTw~{;Z;mi!5juM zW;5sLUrbNuQ%bp+>8~Q0#lI;>*#7~%xJrXQ;lqZ-GOk$@nC2=d3 zY7Jo2Q~0n|v6WI0eTXMcJwYpt_u5IeW1PxWdMYf{bk5OqmTfxiQNWwNWUIHcgtzN7 zjKRnf`00$fj3ktou|EIGIlYWIT*msmjLYjrroW8ST`8#Nbuz}u97?#PvKbCzTbjnU zRKlD~*p@o8{e&@P38z)UmQ!NM05|$>7v!|q;pb8=RHXJC;1ZT3m}^rB%TvPgOk>UO zV9Uv6NlG~N?p(6nSr6UWDvDW?t2o!)nX;HE=dlb63|&zVvVi&D&zxDSasgBJN8tJo& zC8=T=s<_=KvrsFP$Z!?ssKt`cl&}ifLXxOz)<6|YSOs|$pRPzFX8LAWB6fi+#3_P{ z#d1I^a3c4mIOS}+SjOKEdz!u)`Hyy9w@kIEMVWHJZN4F~(BaX!u>5Hc7}2_a7F{Kawbq5U&Q z;SQod#r_z)!Adyn{Q;d6uW;Sl!0;0GXR`k~*@SqP{WV~TyM{5avOkk4_ptxC>;ODH-(mL_`%jV&iK&%Y&KPJB@JwGTd^8gX zb#dx%(r6fO@c#<`F2;Pw@Mny_mnd=i!7=zxGWA7;w2{A_bS<7cw}Hv6CPli2g@ zKga%0Ouw7`XW4%N_`qFPC;5waZoHGMus=yfPJ-+zG>i7kgufiN9H(fwkb{7q?~}G0 z-#fk^d_Vh+`i{5ZbjXJ%JKt%>hXOh-;tBS>4hNf~pYM6!*XPFLkYm1+Ow!K7c~a)j zcffbNEp8iR5)gnK=s({noIz#&eDC`XwZ$em{XdqumG5AGEbnpOcfJn*8&vo%!$#jh zKYiO3DSYkw&3}(O)<>IMZIDS5ps~Q5QF!~<0kQ_f@$+GNzjUPY@7g%%GzK^1nL`XM zwwK7a-}e!;@_|1s-?u2&ZQzBnYy0`oI{1Es!Wvhqi=%lp}=x3Qc@@ zcJ2&{<8(ex+Ygj1xe&;XCO&rr-NZ-3(3|ov!HCaR#b*fx@Ym_k z2bn+A@FV^kq!eHSfv}&V{q_75?b=w>U&s=`wLORb)m_jZP)Gj({(nSM-8Fh4j6KX> z4~&p-g4H=^Cut}Fbe+_nKvRcMbGY2d*KIN|pN5XPy!{qyrf^>1e0Au&gg~Cn@tnBl z(G_a*LBE8M-sqdoO+lyeQ~JaGrHJxGT{pBw?bQK4Oj7yV3Ro;!GJo8*Yak9X{N5IF ze#m!>>cKg=^XuD4fou#^H!zR3azk(A|8Y$-tPuS^wIqLFlYYGa>gRCo6*=_tKnsUo z2c5>(O87tQf4|lB<&TSNo5aRgMGp%sV;%M#@y9Y!qPRw?gh2@#Iph5L+voF?1Lr@` z<^wG1+;sKS{=io_jY{HAvWMUrCZe&UJr@56^e}e3-;s)cG~PSN#wkAZ4cb_om{x#u zg$nVH$Ej}JK-ClfWSsEV2YcHqMHSlE8qrs{vD1GFwt!E=KTFKOKbud1&JhpbpDXCZ zo(_1Y<1w5d_B{T181?VL8EdcOpO2CFn@H_#{5_b}{|IS*g1=Y%3-5#!3i@6X&TJAt zptc{vzXzTrjzS9hGD9zkuQrJ>_-<2@7>8%DWPIf&9Ve4bpmWJ^!c_%MAzQ#FPUAdx zIRTD;0sSP@ZF(VI7e_Ped!6`!@;+n#0H$&^#Hzw^EgiC z`a4eH!U;q8*2I@$Cr-us25)K5_n%+IX-{ME6r)55Yu3V=wXkL_tXT_d)&ecLp!2@? zhp?u?SUVxm%Y(p>Ucy-~5v-RW)=LoUC5ZJB#Ci#0y#%pdf}oc#P-gq_kAil-LCJj! z9obk%Hr7!L>qtUJF(MdGr?GhMB26jQ5uJTsjx!RwK~wRpsbJQToplt(A}pvAMsz% zpp`Y4iW9{S;!$yo8iVrePv4sY)g$A*O2C;<(v4sY) zg$BVwYj9RnE&dT)29aC_QEaWzY^^ayd62cn8l|!sHXFxf6VGL1=d!VK*;u)3tXwu$ zE*mSCjg`yB%4Or=vPs~wN#wE#=CTRqvPm+^hDycBrINz-8^&crUkNG4S&~#XE-sr; zw&FA{Avc#$I+suemrz){5~5PcCB_Tq?O-Djm2~I&!JlxKui^U59Xa zB%>sjQXeYHwRiA;S-S;axLu`<)B4~WBGFnXPS1J|XLN1B8DdM+6zv_Hj@AdKt#!b6 zSx(?gxc%}&y!Z98+=iLwt$8b{KUim5Hr4!=#bU5Q|I68yPICD)k;Jh_D zZEX&puhya#;~P$Gr>D_LXgISBXOhv0WP8-Butx{_G4c-}=U@1aNvH3)+>4VqFF}u} zfH@^U#fU*uNxt1G+4rGxq5n|0`xIJ)mwkPGZRn=1tftiZyZP0Hpu&32U;5iAWo=(PTr;Wao2=%EJ-(gVr z5ORq~SIa~^R(`|ORcIA#$a5=|4$j&ORg)ogqwg4VY{B?mDhp&}ZRt4ZC6x7ckLZCE zQm}e83Or|m=M?a)1kb^0wdjRauyKez7SEg#-?qc^PC%@Fh&30nmLnFv4u&%TufqLm z(STSB(bADLlOTyM(a(_RE9Brc$Ttx=y$E`ltKqr$)k0{HjNE7L(yM35KGgkyz)o8%5(rA?8#aLZ-qW=>W zn$?<_k&|0g8dp-1;B_R#IqdO_(X`U^1Uc|aYhskcA+=Upa&(l_ddiX-8fSCg zIYxCm^L2D=Qk*SBO^rdL8GYuy&`?KmT$D;`T`*}9EP~V07FlypvO?IjNX$Kkn)qu? zd@M@lIzQf0Y~XV>#vAeWaQHlRvF4ALi?>2)9?hoHneofci60^E!kdYPJeK+Aggfx< z!X;*SpL4?F#Z$E`({SQ5Mz{WQn`y+e zX7+RAjBe5rAMuUsP?iu86@u@&M>$-c)>&z=?pF(ovI;XDHg}lnqLHCH;=|B} z>4v^0*cKXV3G0N-h~c3&dt8*;E@ARCj@NB|3|ggRj6u7hj%DOPWR`}-$@P{L7v*GT zkeCVoL;b5t^`@nHQ+3~-oEm3ONlE>Wb#hgzC&lGSP4&1^JgGgC;t~>*9C1lk{i&L2 ziGt=6&6?`B;ET1(&5|O^p}F`V-)U_m+N&ZV78TlJ5~R_LNaQn})t;GNYR}b6ATtx7 zAB*xUPDtNzIySC#U6dm_RfWmFhbBhI-uBc~d+S%BAx8)}8X6)~7_-%pn$Y^{akm^4 zdgerYqCF-?jgJUPvD=*?U&YWR;p8&*w)DlaVQ66|Lt-b! zFa;T;*RHVjchQ)-~lX~=W_ggWgytw}I3q0f1En)d_QI?RX z*zB5#<-O~x(xan8f}-qsVUh9So(Wfux?tr+#fi`uOTijLkHD=Hb{v^_YVCAy|n%>ee3U?sF%Z; zjkWV@3di^D7;@(4P?8x|5!6{*YRQ3B2#f`f;@dx@gBWcT=T(CskO8t$xK*8ew?vPn zHgG>cSn3BZW$IzRvH)ru_Pkuln)w4RzIlPv=*`|`>S4Z%+u_}`UrJBavRZ97WX00~ z&gS*wZ&aW9^8h^OL4A+@maL2{KN@<>!nnd;3)?E>S#=XtV3i!lHSaytLBWvCCi57$ zAL>=xsn*5p4^45P4t^J`S3a_GLo?BA16^4&k$CG&8t z-%yV_3^o>R(vvM+!Tj3CBU{qrMT-?|OT=%nw%fqx;!6s^vkk5hqnYnK@b$-|9v35E zga^itw#akhN5~{`lV4uT>T|*!;sJT98J>7fcsx#{rZMsWDho4T)Z;e#%Mf_#arOL! ziMauIsv9~!9N%c*GKcM;OieuJ!=JuJJ+V$7ffI|{^iMspj)%P56YKh?o><2xidg~a zQcp~H^u!anR7iSDvVqMZEa?_yyv3ik#dTIFNw9^i5WP5AVV{6L+~4N@C#yvBcXoe% zC;IZjZca<Wcn6&6Am6%hy|i6nkt+%$Km?7#D2V z>99M3tO@QoyFDyS@6U~zg;Js3PuC8WqQ6FkATMag<{QmXKo-nSFDBl4WnwBM9PUU> zb+mqFv!bg?b({!x`DKVp3H>5G#U7Uu+UNxv-LUu%Wa=b0dn$jn$UrSY0OTWy)$-&Vp zNr;E-snMZb=7g3`zI@Q2%O{sQ?6!n3dzwXyjH+4Kzu%&on8@TEktq%b-h18`?Xaa} zpoCdEw%)#6YhrQ!H`QVtPqkRb$B0*qo&vey+NR^9F;hdMiacL$%B4x4f^Q>`zI8ri z?K*w9ObEb}HR^af=7I3NR&G6L4^srjTJ+QeCB*Op4fPOIA}9f)zmVy+^sD02WSTu8 z)g}Lxn39@kccrxs#tHqc=(STFXEu{ss2K}{TR)tHF&)O8I2S`trz3q!VuY@BqtLV4 zrF3?>_Vk9>q@-9iGcGYP?##jXG`Bq=1tKIs1l+VEB9)F_*th?Oti7Bpx__Vt2lT$;} zqazYSC$i?}lz5^d>?u)U&gAs+4EZ=ATQBH2wWpCsnZdow z2;{-4MRr5mMyqu)m#vbpcpCI=BdeqpX&J}8v`!uKCfYEX<(ILnC!IRl_b%zlcQ^2f zCKs!g@Dx&{H5r-8?Xu1zY^NWaVJSoz5H?2xmfOK@;uUCo2yoA9WW{=%aD3DTSnP3n zp36+6wbq2SX%5UX;JJy`bFhn*T5Fv;aXazAnv(3Q zQSH#N_D939N#>}p6tm&mY1}fJtd*Xba@z{U|CnSxB~9v5mFg)?jwnb=OmKxp<(4Nz zMnuO(MA=h4{zoB?Q_bW;x-&E`D7*uP0g+Ms>_bv~04ch0Td7MCzZnQo0GpxRL8&ao zf3T5XyEnK(+|iK}E?Ge6+OIXK8W5?nK zYArBV)r@`VA(%r>r}i~hE9LnP4Hg`4!+!b_X|(24p{-U09sGVlYj{?4yfdnGm{rb= zZM_i9M`A(>KG+f`D+aed86B6HqISAtVxwB8EtCy$XDR|45lAx(Z5>iY=}coOQ?SZH znxUQ-!&As28Yz9N`2<3V=gPf2;Cj@7R$v8@xs;I{2HvWEYt*s51F$wN1$%K#-fd~Bdg&EI znajL(^iF}DZjA4tzERI(Y)Yx-%CRIPW<3um?CRt2iv!|WH8+fh=46Gcfo`IC%u3c< znyo+0+k&jtgurJ>!=i^f?8!1RECgC={lyZx&MLD_{n;JKGQ$<=3||zK7LgpjNU1%c zsg5>v`b*<$%!VRm^dbpyumx(@{QU<#r{`L8U@(46QOOnIPFri9)S{E((^3)=Q{A80 z9N}RJw!MkT5GGAM7arESOv%d<(1<_CE!-(v>pw#xu=zhk4(M>^2g0e*c9*V)c?#*H z6k13>no}0ws$0o*&;&mL`Q^!#0b)SR1ZjgB)WrCtR7YrnwY4$98E;Q=*~5~o@~=_Y z#F`v`=6*+Nuua(`&YX!$PL5OK6H-D#&K!@Fr{a_K^p9K68=#yPQu?r^&&~3_j%|tY zn7PU@$CKA_+p6PZ@Es6+++Kz+oRBp!9#25qjB@TBh=)D>8o;00N}W%*3^M5FwWD_u z9Fkh~^-@Zl zGr?+2>6oal2vAC(%AWD`&WW??)~wyd)=bipHA72m%_j`0FK#Eb8>4L2F6{X_ZX5Mn z#^XyRT)KE(ycfCYWQ>VRN~z~8O^}6cW@eTz=ZxpGjwHHL?5?aRX>FYro@%#ah#6rI zmTRM2F!lT)dlKX0Q)Fy*^1u{%x;35648xkRursZ}@(?%Rn`(Lw&7zt{Bd)hG-i*Ua zv8bSV5OdV&QnsRY!_5-)ws-u}0sWVbFDMwlwEuvm<{M=hAwx4c!;e-&ksHO>G&|zC9)cw zpJwu7Jmj_G+cvM7;TAJI+{h1wzsBLnFORZyzMNlwJRWoC_y~NXjd}=O4jOgnc!xO5 z&xks{vx!f_cl&mm^fbFq^tl@2+m$Qn+aIqj{QPpXg`Z!Zw($0H(X)8_^yBeOpf)?X z&6GO|Ys0ao+%$^P^O=Z|vZ-$#N9lOdqsfP#di8V|Z{(And-Zan=ic_=l#eYKcjV#8 zm+Dvw_EPj|d-_c<9&9nqr}u4`ss0}-puDF`m8)x+GbO8wBO%fjZVAR@AO>jC@gFND zjo(VL6N8I`Q_}H-8x#~4%)>U7>#wN(Ye0n+Ecw@v{2R=`{eP^z2Y_Tnoj>07Ug!9_ zU%%HmrK38)0EtKvRaDjRRu)y1;?$EiQBkv`_Mh5U-=_zs7YUD3p>`R_^$`Pc(P&Qspc z*Rq%8R?sq8?qV*3CX~14YN0h(9B$0z&s*igFDa+B_g}4Y^6!YbZoW@6f%q%kmneS# z9KA@M@nyY^>)$Wq7|+3dE}XuwoaBp0Z8`qnf$P>3He9e)N^&jcK8N!~`r}2Xb;g`jDa-xd zq-?^ES|^>;(07G172KXXQ_t;x#lXNT`oC%?MJA~oi&kQ>O7v?^xIBhV9~(PkMEOlq zs5Cy29n53~GQP&|VMvN^bz*<0hvdntmp=f4k-1q&A|*$00RxNABs4uva?5q6_{^8v zjt%S@sPF23LYSXd)2AAH(gW#CfAS#zK7uN=s-|QGt11s)$pTgtk)#k`ok}LC#EYRHdBd)! zLzUQ2>2a5^CHnV_wyhoXs;>5WF4Z2jIolMs&0=vDrUxSVkSqAKp1`$^xzS?RRJ8Fk z&_BnNuQ!-?eBIcDK1e;_vRc6XhyV(GaDsY<^&;SL+?K{QB3_?lzJP~lJ@NLBtg0Wy z4wdEl#Ir^HFe0x4e&MS6X+&O0vnoNaNr5`XIKM?$g`8wPP2U8FuvC?epj?PXIhV!2 zHeG9>q)bbMwJjX!b-Ci2;w^3)Y+KXTzHy*u^I&rF{Mm`~v*Cp5bt(g6@y^L?X|A)r zV>CT;fwQe@54qK(E0>RUB=WVC%aQJ$=^WeHRmy1LK+5iq1tOJ1wj<_pCu?(kqp#?p zUT|#rs6rCasN!~1lE@s+qjCf<2{_8#$Xfbzvz(7Qm0M;1xiseDtxk*;L5l?C@BF*z z2fXw=8X2S12G9EI`A7;JNUIV!D5eXzR#k%iy0U)U&{{-&(%eOTH=;wLFGp6@kFJDs zuL#vA&pYZHcnMwjkGRe7C&aA~p;1XfB)UiLugHCNoyd4XrKqM{2{J)%EqHl#F13l{Q|qZt`HJ zSI-4YBbit=8XxLTj-KvRi*YHcs5zTG)*dW`v+Z%8(mvT$TT_Y1JwDBil%Bq|wZ`Sd zr`Y-97o6H1QbKKh#cHu@`9!o3b-Ut~HNE{i`$3naE8GXV?4n+xOGK8LP$miHNK2X1 zAY3!(J=Y3EY?8fh;ib{v1mUY^`k={{w;P@LM)J#?_cS5W+NVCb6d^H=Q~ z=-+pxv%3A&YeUK8!H#uro=}Z|n(|RjPy*7BpHS5=3a|RsD5?PhFJ@XFi zS<+3W10)N`@Q}&iZiR7Ke>ib&>d)NM{!J1>WVDh&EA57Oh{iNM3aT<%GMA)3Vy(>p|cSVSw}upeJ*z$aG1VLxI=9kmagenovy zm57O@5JOuDPg6XF>}ljIT?9KHcufiWoMiUj7fsjoZ|>~ej0>( zUdbb19DXH6LcsmVt`nS->eG4@a0Tm5_;Xjc6EeMxkA(OxSrMYX3-^x-e2!3$Tkxo< zX{%B@6e$w*J+Rc5@gyriz;)9PMWhILJ|b6J@CbX_^bMoGkF@$rS~}pEX)iK=MSDk9 zytiD={m`xVn|LgjdrV(x;qwUhg%Uo?*(@)kQE^M<3r4X ztN<}yBvAxBY@%H#O*nZ|1zbZrt@$u}4R{Gw7~tq9jWeA+L-8%5tZ~l2gugZWvc$!W zdB~WPM7KW6b^O?FXVA%MFBB8B7gzOYxVJq~jfA{LR7<#KhbwXW7IspCBw{V^+87Cx zN{A0NLtCw0ex=n*)pXa2-jm)edLN{?YqP$Y^k#yWkU<1EpJfgCwG7$jCg~bv5=O+j z3fd^K1zcQiN?tXm4oI7|q~*9h=JiHw$0aGNq? z%^ZI~N~2K(prP#D3a@R)ik58%H^@A9hJS*~b~x?uiGdJuCR7{#kk1Qd5e%Vsjqc+p7uhAg0Auj*-ei}U!hNqCD^B&lHpbybPOSn?t5(1jR^Y2vz-e^~xQlk@Vq68B zs9(T6te0o2l#!)(3ink}4-|Tk4JZ^AMr<097fOJ_U`WMa%=LqzFZ&yt z!+!QPSJod^8l$eXTaCJZRR5|X-HFcl8pk#-g_(BzR*yd%)ucUMMNb?bi~0S2mRfB5 zcL*aMz+4XE+lX!wk3>qYR$9e#|cZui+6 zcZ@W?$HiiMf|XpVLyw0VPsz+nSttA}d<1_ZMi4pM#4iM#Mo_>NaBkvz0!|}HaI5Uv zP2(q^q=ksuZo}UgSh|4v(1J%Pf3H=a##_|)Aai5+tHkvLTnBe1?jqVJZXmv@Z6IDC zptMQ^G&oO`3ZJC3AJP=D4nA&(C{QdAS_;Lv`|2#j{~hR+%4*KlIP75ObL(zIPr2Dm z_69<-2@TF#T~UrdZAEHXJf(sR{Z^8*_$qIokJ#^w5qqBFF5o0V1iYD*DBv_U0`4|+ z?{>&c;Msyl2~M^vbdwUYg|pb_(Ugv4NA-ue<-}JqlxXNAHV~f7^KW3y8S!ZLoE}F; z2=s%VnbPd}lasGpQ&~HZNF_d3TWD)rs8#3N+vg=1M2#&(5({#mqdhi%<>tksbMcOD zT|P}qHb%R)_4aM;>e|}ZyR8d778v~om_A26hFy6t_F*;Q-!tG=>9NyYO(>U`RJ$lW zc0qu@^N{HpUV0F{Yra#Gp202=85un*-#yo85$|3U!n+T_iuuP@%Qr5U9uAY=4-$iN zJ~)cgX^EBMM6efvcVe#~?wc7BQ0`sA&xZymezMd}6H zVLFAEQZJfsHG5%$FLL?ql6>a!+ZWT@4>9)&OxG-zUV+^y@LzVC);2Mf_Zy`pw0SvV zi`0`-O|NT~OTRbDtM0iFGs7;J^tM>O>@P}|SxTsIG z_d*N)B;nht|4^&-r%!LRpdV^Mf4hrz7gm;PQZMM&XIf9b7oNh`B2UgIDF%9SYBuC? zD=NCeC)d7$e!nODZv!tOayT(uO4|UOavn1hPRJ>@btN%3?(gd@^kj8g<%*LKJ{Cp4 zL$kO`5ly#Rkx&{?(ps~hvZFOBj~lw4ptvs@@RIa6xD}Viremg!&G)4HTjTS@Ho7II zbLo%rxfq|A=?q%mSjV)G#R|5Orh-+Ca0*6>{(=Eu>nD3eSXAV^sT+lUNOfaZzANMQ zdDXBU+t;`4==8#clifRK+LOWKKk2MTqb0R-y5j8gjc%8szU*-2D$D7mqDRXF1G;MW z+haYMsvd0y3-Ny>w#$7?B$zwUbUt)yQdzEhDxDu%9rX; zXZ3oCs7{Q?NdxExy1cN$K%dG3{y zljqG8XZkYc7`eBIEh=)ldm_{|-_|zYRhw&XpOd0!YkP0sB8)|DIkG1)du7g>g$lsU%BDe%krmRxDc88gsAMaA9|IFI z&;9jDEH`^(P1~ANItI3MJNl$p&$=Eptmz*2_~~<1ea(^C@^o8iO}TxhRGO))3A0%Z zTr_x|_+x#$ec|Z(!2@gCySMhHhfkd-dn~a)ASL_PoObRd!@I7TJJ`9YR$JfMvA(Oe zsgr$Cb_N2PIj)6dmp_0FWqyN~JVSW{$bh7o|BVDqoWlpfu^(>1pEvwS#GB4v0sk}W zVB@?#NrdJ4&mbBjbNHnz;8y8R2Mu{(?vfrhi?5d0BhoAR*B_PsAO017lo(b6^76=A z#Q7C?5dyinOzAH$E;h35iZ$~WfyK5=nCswxG?ua$h0(t7-4dNdH&T;3X^hdy-nLwe*LW^pF8Z{>!ON{UIhnf8e#P z(r-7mFqGeIK#K$wv)R%CW8`Px?=(y4`=2xsJ=O_d(}pHJlB%)HhDmE)MVl+cr4Xto z^90`lk31F_Lyhjt>_>g;lz$hJINt~RMw3)#KVT0&QR4z7bFyS^3b%;mbXVSCN$ zSVhfh6x5vCyhg}MXUb;}I`ncUm_BzBc+>jws6vl0#_5T9I)RB+xUu$N=Pb)cQW-+n z^+9_VcwB<>G()q1Ld9IviHj$@cFnXgDG_9^4>zt?&F$lvu8Hlnu0!iqEN55Ntukkr|ozl;W{Mli}H z&Y;wXneH}C8Cn!sLrs4UITOL)(OY`rd9GGA)|H+nN-^bO`;~|lW-@Fgg6su`!Vb+5Il+CB*g{%QNwpufj72~ za}WVPhFxQV?*J~BTlIfu${MSU>eFf#^&g~jz4)pnIITB=W4)b2XL~_5vL$d!WQ6gV zYt5G-3|r4)bZz4@+dR7=MKh+>%JAbib*q3a(>*GMMh=cPp6BicM{YQq9nOg-NkkBz zcIwq)2-wi+JoH^)gBipq{CVjctQ}a+E$v(Zw@NRZLbacu+VaiK+Oo3rRnu2^?Sm_7 zlZEqnF3+fkALC;HrvUo;pdAfR+~4#8iOzL6Au9R-QVyvjJle@_C;ZVm)&C=xDWa8! zqp*8%KB5UH$I|=>=wlzm>_KCtx-@$N`skMk@81LZET208J@#eH+|qji{WIsy0{YbT z;CyuI46}3IET9kEMlEnC?>Rw>5}=$PMos?=3{TQef-W62eX`a2BJaIbdd3Gyzw{7V z`2gqL;wuk*2VX(1naOlFS$+ogPu_>BblMRMaK0_-KK()B+rvwv?C&Z6iq{pbm)I`T zchLrN3b7A?@WvC)ktS*r@Ba3Eunw1=LO$#_;nm`i`Bp}3Da##FqbS? zp&nC+GG?2RX)=6*Rz^$}KCU`^kfl zq)AIkS_%3ak6!$^a{TxHAI|;IkN7{)!luSk^gZCVo6qPj(|eXKY~i8&-{8SMA|~hM z@W5(CzfJ$f`+dS{{Wp_xVr*KLNjV?iLINw8By3oM>60U0t_yOGcOF6v@Sj(Sp z)yFE~Fw-w66zo;Z+hzP~eCQ0*O4~b4v#aYs|}GK9bL{ z(?RpRHQiCv^y8{;PO1Gqzu+ygHq+!moW zyJ}@SLOd&2Imz5pFKb&`dBJSQ%gsM^^L9!N7M>Ll4ZNu-=x2go8Fn@@k(w(BxfbLZ zl*Z>STfhFY`FZ-CJJ_+lTHVmmv7uUB-@$BKj?Tf=wRm)X{^(+Tu~u8G_iwFMw_;?- zk{FjB!x&s<(AqB`iJI{LGT^YB&-S#SWY3D)L~Fu>K&||;1wUrG#?U$em$w^mSjR`9 zZNQVh$F!5Tc5ua8WF3DSv_+oum2V$fe*1EI`yrg$)b#3)%d z#8p0HMfufB52O4E(`h)trP;$j80D~$*HK(ajK?=y&hvNj`g&qY3Yx1J(5ao$Ys5LMQ@r|!!K|)tx3_Bj~Z>kPTAL*75Tje6qf%!#Qo8~ zUzl!gz9YZ>gi;#KPh%d6@Cyv{RWyoKbi%434U_g|Aq@a#qwrw~dm0k)#7(b1=~!Q@ zuJ7zzU#+e0I9#1gb`M1(_4vBW=jSh9hozUF>L~R`eO^a1C)l=Ptu@XZ7;GOdMeX6L zw!9V(%m>vJPB%rt(x{oDZhDnH7A)H8Ks^`;-}3P<=382N-OOlQ7V61io*Kfw8S!Wnm6W{c=j~3j*~V*&D zMvl`;>xL$ZlRPP1Tn{l2)Wb>w03=t7}8Qi*rvgK;eu@#vM| z{O?3Q7<3zUBiE;H0kv4AhcAOR#eE+*vjLPQppV9hc99){y2Psq3jGMDB11!`vpxYQ zkE*Es)Nf$5o5q$7uBZ+D+(rC!fY&9Dr>Oh1nQY1*Kr3Hv89K=ONncK4cjo8Od)V@? zF2WSiDM41a?w0do3239B1V%!*Esg9-j7`ZQ1-&V6e6~ASPNw^k>8ZX<|0z9*$x+=Y z2i#egI$BiQ$C!2 z(rKwS;UhAsl9;uX^`8Np=1stx^+_KAy!jqhG}^+a2sn`m2?ALbAt#YBZ(>qt}2d zbp>>glp0Q2!~I?CNBq1JkXAZ3YxEFXUqn6C88_{93i2;}S=K zwY?Jhe3qz10bMLZi7s|=y5L`wH?-P*0Cxerk+*$tMSZO1R}xhyShtt0_~M@=TDNmJ z{Sem-AdhK29)$wM6Fubk)B9xP;QQh{D@Y_e<Vz{P*k%6Sr?UyxB|AHvva` zO?{QVzx>{Ec~f5%?KbgPE^q3qqP&UEa(Po<73HL_5?;;nroKw0Ch36|){mI5bF$TY z;_CEPGma%{f2ai&aV!p%Uu8g>k*Wtw+j*pF4jL)Z&IpfGi9A&vs3MA?rRC>-(B-FA zWQu%MV(nSkt9uqwJ)`jh*xI#%zCdTG4y~Grt9I;73yO1B#(Oh^ooV|XTtV{^vLkZr z-<9^HN(n8-GhgT^wPt@Q^Tn9G#|`c&dfXg6jM_YD`J%^PYW0}nR5YXCrn`JhY3wzz zNvbJo?CnN&s0aulNtFbfNNL>ai&<}0Z}FyrF|&N9C+SPrza*JslBy_;cRJX`85Rjz zJ=Vtdq$D9(@^-Vw;Y%8={~WEu$A>5em@uWjme49vGDYjciHtqvDh(gcPL)2cCM4-S z)})f~UKl#toA9Nq?={ClO2qQo(Al0$AZR@&_ByAeCPEgcxv?FGp5X}B4yo}IsUzSI;3S{_ zZo$9ZffKa*BVRCxd+k_v2!fi-dg2Y=z%z_(!M~|<$a6Z2f3I}brY`{O5@1Dsi zO5c2?zPU_1a(JjXm`+FmQ03O0=l6Qt9BG?PPtOd@hBF=E?j3`a@`3VarpMAlMdodC zPQvUr7_Fa+QOD?VEstYN+>qc_smTqgHt{_HZSp;W(oBdpnvrm_E)Ge77W^6Z4V>*k zG*9)34~hEA{E*r-Qr#nJead3Q9Z#!^1F>Sm|ANf0MAhu_t> zmG(=Euh6JHVvO1?eAEP-Bn!czu}u?Y3n-0`sQn<$mEv&dQ^2(ae+GU7x}B#3`cfLY zt;;mSvjMsG!_Qn?VQYs<0&F8n5?T_LsIG-L4;0LfXsnKuHgo^@L|@O*naN2o701 zmJiBt(M=uT-p;y z>65UC-_t5Rx?DQwLFp6Vg_Jcb`tVDm6!W;t+=7zTE_!h6G}eU5r?y%;ww+}B!)yRr z6SYJ=Xuh-DgO%?dUVeA0&<~zif#dvg>8>ZK2grz}Oi7NTd~msR=Wloq`c2n0OQq+G zQh4d|-WC+6x*9!rU_$hZa3q^S%ve)z5u@;pow?j!K!kGYetcaA9 zM3=E1+Hn*nov@nG?d9%@Gf~#6n|kUSN}Y3UBj*-6f-BZXVR7~e#ba0edfaJG6_n+T zEVTZ`40>9l^Z1e0_{z=oQ(MpPKr-QyG&^-#Wafp6Lk(5@DBJjdW+D9WmzWJLt5xf?nbX{oSwr(1c2#GN5GLz8&|CG+TaetM+e8 zq@N*6NA8p!g6C|AxEW5;|3}Wd3I0F}UJ`IbQ08TvxQ6+9P@WL=mPXBYy==Xbs7H|( zvqijTPPf{BjK?bJyUq4(Y#+7Hu^p9*E83kWyr7dmNcZ#cNREieJt$q*Y!BxWHTwZP zd41qX^+i9WO|9?YJG@*nd2!$1tn^=yrxhOkZ2EdNh##&}gNjH1_18g7E6)dhOJyjY zov73Xd|_1$Mf_^m7wfeo%f(!>oMUgSZK`!FlqaSJGag;@{!vkbzG5jd)Hc)GS?%jD zRK~z30_=LW0Xt5Ks{bNIvkmPFot>1L+}XL%zSy46wYTT;?NXtWc5ZZ57b=y7YO$xM znD6R>HU@24>c%~Iu+&9f06&=(-GORA-N|K}xwtsFTs+(m2qFJ891gIr(QnKW4gm5) z3qfATA2^`#8eZph77P7FegWiZBeS3S0F7ih-&6R?PfVa?UE41i8M$Qp_KQbHFWz2T zQz)#d)n@Yf8Rwqc&OUtG?%lT?KKr&kXO3R7ZTlsoqnB*ocF8E&)Ea&=*u4`n`U4%7 z>jcd>HPp?=LrKpbw?CMQzT2TWLh%%0&*8w7Glk<&&$ODwVSUurAbuLaw{xZbgdITO z2twZg13p3HfHGw(vF~wZ>Yw$f_g9tL^gyWA?sEnmYAWE>C+4!#2l}Um|IxK4M%ie3 zQ2BlJ71{cXmJ509v4A(~ja9;ZdnX63o%pDeus}3}JuH2W_Q1b-6>B0to}us5n|qSP ztN{nkw3=+K#C=C++XJpZZ>BKWRvgW!(XdxVdi@vl#`9d)8;wR>_Af^4MfcEYz0;R& zD6WtB-LcnN?249~?C2ayAegGU1Fmlb$r+Ojx`K{-VrKjBfw8sc4r@VY$fah1tqT*K z!1#kF9KcfWhvXA>PYL4_)4;CQ;(_}t>^weLn*(VN8^_UGI7R}VsN>egZ$0#(L{Rmy zw>WXq7oF@#<1w}LC*1P+Ihq~BHAL4|oe5x!OOa2xLB<)JnrCDYU~N8K+Lmx(JGr6- zJHve&+KW?dnVvR(G-{J_GW6a8N9kEt+UKa$`{6XV>-Z;pelUHk=mvWhvz#sMQX{x{UalL2h&}@OZKFaJ&EyJ z_xJ?^YmpI%yubx^dcfB|ogds&ukRV`oT>VBS823_14sII)ypHrH>JAb@vc;DbhI%r z)s^W>Ci^m7Q^bYD?A(L>n7w3y(llU7nkxx$JXi@>R=fi*N%f4JFgx9QXWS8Ab+SCQ zzfa6fa=1iuGc4WHv3_4~>CE%bTGS;yqDHNO^@m2xT1R5!>^0+OPwdWPY9{i9$zpM= zKvKuxj*z+FVUU^!ut&EHe8~g7$j%X*AG6k!I(%`jlro?1oNX)4Rco__(rjlYpUdKZ z&YtakecOA)?}qWN+W2^_YaEnNz!&eueZvMN^n*{f7$vz?ut5J+(XAD$*A`HKf~-kP_w7{VtzYHEXAHk+o;p+bZI_KvY6db?6Pn&rh06Od51Nqc!RoMb#ApwmUt~y zs>gv}9&2PLJ7k=l3D<_L-ix_2`>%RL;3nXNZFbQ^Y4Ng@A|@9jaB z&4vRupY0B}6~q3xAJaysaz4-ckz)r>3g?6`?Kw>;|AH~(xM*ZWum4f&_N%^t)opbo zgVB649*6`SVXqXF6wkYrU{JXs?oBJ5nM8N8ea_+Y`a)g>-Y|DE5=^_?arX@lZ_uj* z_1E}uJwZ=fbr`A%(d%=p9XU{O%6Jm=$~iBziBb{bQ3!w&G^7udN7M1HsbV1$%(qR* zeg273-&kQZk24wda5CZQm@8EmM>1Lvp$FDKFy1>fQ7MjOr&3`plh#9Nj7G=Oah7MN z!J{R3+W@vx3-QR0RVK-7wZ73ClI2&q-s4wQ|1Ek-l8;z4IiO&(Ivk9uUkSuDtIPUF zHzj{94=3H0`P})?Bme`e*M;@ zu0^oBFo|)_;SQtfigCv5hjc8xrcyxi26X0?a2jC?v7?2omTMoE`xF{rU?IlciZKoc z(+Rh(`a>3}e_*0-aJ*6)$#%|`YFkD#-%M-abULi1xwc(ri>8lTZBiQA@)RHi^YXf5jl%250S;PzN}(J%HqKgVs*mnZR*o zrvcKAU(LTtIQ#U^FIMH$llF5WC?W$=UV~Eqs~qU zIDzx~0qMs5>HX64fDq2_10>1b#oA>jAcQl0tAo7O2 z0I6~a;d~p`ApFXb8Rtj%j5W9-=VZ#8bg*~(R5;`tXZxg3!0nX|2X)ouJAPA;(jS}qR1JsAzqJ__)9$6F&CtqDfl@e zH8g+H-mLoO#V79?<`JU|>c0v(t~=4o5`MqLXK5$99REtV!O(==4RlKvjVaELE^-eK zMB54dzAS+o@RHF;O4g+;_1qc7|NS`4-W1K}qm5Umf4r*S6H7bLt}5Ey)`MHPxcpUl z)LR(SV$N5!OHDedaW;`@To%jcW9<6OkN8;f)(K-;%l9ExTBaP2ZJ?Ug#w^G*m_Wiu z#ksxB+S5zlLRUg3bm!vt!2Pe;+NY&R7l9aj4k>pF|2U>z9 z$2tomz|rIM_{#oL$LOKy+Iqr~0ZXJ-J-T8j88UL8!QG?hpKJx5Nz}&){25NwoW5xV z=AkLq*<;2#tMu-j^A4tFSL#4^W$y!gWgN9*RyeOL##Ed0_b5ys31jb z3&x*)B{6Lw$ZY({3D9QMQKHjjK~Q#4LS9D{TJfj#cDKUpxCU;{8MfIS?oG11$!)jU z!p=F#i~_&Mqev*1XI&_Fx;M)5Mh}&{W@VI1e)jr+cN^GSkKN+->XsZcv%DqjcAITI zk|b~Q2B=t)x>4-WEqN5@tRc7CV(*b;Du!n@4N|-w>xS-WXs6p0pzYI*b6{Z^Q>Hin7A0vVYVg^4W4&2}R9kOOZM^H6NzmPZ2~8`$G{Fgd6YXC6CZ=HZ1M&Z*u`ZM%2U``^QEj-@F!z4RG8!#-T{o3;SYekQY1*;$yC=6x21vVVxy z=pFpTH*8qaakW-3jxQSZfx#=m2l2k?S@vDFo!%#zv^;}n^8~zJYT((Jrp4%gqQ2b2 zPI;O7(oMWR&bg=h{ClE(eD4C@Lwt|k$MX^KEbw2(XKBCmnx#)t`_Q;o;IlUn3I*5; z^!xshpZ@VvCP+WD;8WS#`1=+9oJ4=F=HC;~8GP>={=H7%UtF4p4tFQnW3zNzB)%|U zIA@y24w7ljsvhU&bL;i-rDu+;!{qJ+>sQpN>o3I6r^= zrR^TwN4B1dwr54#9Cwkfg(Xkj=)qo6G;Fn5$Ed+=<+g2TFyMCKGlS=Da(*G{)jXoX zSGBv*ptT#H+Ibs3Mf2o^zD)P$!3RE@<%ri2pC}RIMB^k8N}RP4^3)OR#j*9n0Mu zv!mc=hQ&y^2FB8%^K*?qFDF9#sXrX{f5hs%o&LQu6p-5l`Pq*L-9(1eS_G}lh}Ncr z1H~}$d+BC9W14UyAzJt;z5NlJ>vsBAx+4^L@jjzH>9?Xi&~b6;a?t7Tu<|d1X1WC0 zx*W7c&zJLO@6ut=!yoW`1%D3V`OVVr@qCm&Z&^AAy?YqXSDM=Jegw}m{P`;WoPn11 zP1ETp-^ED##WTAW&qdtwOFHW=(wYF**nRBv(w6|g{*V6+`1Q!gq}-AOyPsVn-39oY zz(;KO{R-zNDRw`0g5E{C6*LtR4n&aL$4478L6KaEP37tdr_Q&8qJSRT@o? zVKQazic-9_-;6iFTQ8G%V_uHIwY+z{jQU3x0B9*vWU0}tRT(j5}WK|#eVc6 z02}Iy>^@ixZ|3_?t@>@?Tj{s#KJuGEbEJh0kJcfFJb-mDPE8#kaz0zVyv-<)cg*N8;Fj$9Ad8_hvo7WZ!K}XEu=J2byRtwy= zaZ={Z5q>~W{5@oDONRW`HO^Q}{tf@zHtmc@W$EqhQSC>G{15p*Tzf%#rcdzpR<(u} z(jmWXjWZr=y~W4zD)vPwXN==|jMtlASkK4tD)v1Nr*S0s4R(SDkO}s%R0j3E`Gsw~ z-gVgLOwTvix1l$IrH9$0@Kk4M50xPYdUPTnp>WVplj@s=lVyeSVd2!4+oHGWe!FUm zC9DhH&6~Xuw;o`6z^2&SI_z`aZGO7S32r-F)fC575~`&u#co==D9PrqFA!p^z0x?c zaUHuZ5>UhNa|Up;JJ!rz`DR3ew&9L*)0xm@F-c8NF?VpmvDegvfM`=gCoMQhX9z&Z z5FaMuC!xb%!IXQY0_s9HEE;DtN$*P!#4Qf5e`G#inrSag?da{AwS;jUcPOEn%a)j$ z9;}3Cu0G}TkG^IhyY`aB`lj)uH)M5|Do3`T`IcSfZEwHp$VKnloL{rA@%=eGp~skNDoD#nE}ns3Fpr0B+^W>l|^ zV=~|ezy0%Sf zGs;{oH&w38@2Glx+3@fMr}aB6^3cIE2HR$)3tfvn-39n?ePO318Sg8mCPyNL%?qO% zGN)Z>TJ@!+yO0%f2Sox!R0{$^@F1X${sCvqFnqh{3@uwBNGQnlXLrnZ(48B}>m4q) z!)XuWZe>>_8D78nU~TZy)4rnw;oO$ajrfm$zGFD%cG?p@w^=q@vzfx=n(3XvG8mFVj`R?vg76l^e z0$o7YEg_wI6Ufq_Ny92QeELjZU$Aq_X#1%PP>C6ft2WK;Ee=)ug_PR4sSD>?q{n*P z1LgLq^_ihl5Uz>YY>~-)yfYT>sHuB*Hy+*}DQKzG1!`L~#q_oFmf_S`e`tKTq-AwC zjxUN>y}o3?>Wc@%*{EAxoK(8H3+7sAuDy3{XOPJqMSC!il&sN2AQK9ub+0+N^@(+{Y*N&dE*x9*w&gj@-{JZ6xO@pV84V^wZTvMzrd))2I zs-^KfY{5WQamVd$n=jIDs~@;_-GDKSUo#?U0YtW>BcVXR?+*m9btmX!xyJpzAlvKo{pwdiE1ebF_$9T+%s;g{ zoR$X~&+@0N!dGR2-2gr9Zg>Ys<9X>=w|wtkG%_$K52Kpz?9AsnJJ}7D`SyPi|^MBz4Vqf8wA5W2e@r&Gm=V=EpW{ z>NsuAjPv_5ZhubkOG2D#QDN={EWJm?8V2y6L5kW zPB|pzz{iO&g8FM!;dmuU zxniarPUiPPYEr(>glXeR^Og)j#IYP;&l(;+YkHb8`lj2)ve~gV zoDGp3WA4_aYAf##YhAf^{GX#5HK0XlowhCACEtuwl&sP_p&1e_zg9XRSCEN>;KHm} zY5lM#Y2Gmj8jL}8S@yKlLqqnEG;gVg?1Qu5ic=F%Fy{}U2=khB;9Is0Ufd1 zJNQYJ8wa*^g+lIt&*dwpI_Apdwbfjk*MnifVV3-4lwoXp>>QwO)U%E4`M5a1lFqkG zIgny)>pEp<=+thH$E7Cdd`qqeTrGW4&cWZ8gIDY%K0io7*lMe8J^CAGVRImAVef$c z<4af@ue53JqUX08&*$4THv6|u%sElN(<%2De#Y;5ykR&~oN|W&_@T!m>wnWUS+Vcu zG|ZA@@SHks)ZGEj11l096tYSO24D)&l1B=TakdXML9YK;^tjikF$+d$E z1A%F0H0+-CD-pKAgVeqmXC&-i<5vTLDHnE~Px^h4#;06Se_$4m&Y8elyXoxb?jHUd z$pwSCNTi^u1xdmS$TFJ>1YFSo7_cYcp9a7=tu#&xOv0h>obGmwIR$_Gx0l%vz3my_Do;F#*b;CO($Av&>7BaT0R`k z1p>MAdG2E`{r&^lnxCPccXV#&wM{{D3kTFBX zlMRbg=r5uhG)GmL^cVaEeu@|2IHjCLx=jX8M6j4k!EIa9DICh{c$j34JnoGzbICSB zzn>~^-JA<{cpR!-3#L+9uNIw|pVa)hgj3NyZ~$xJzCQCtPY9Ras`WGHI~U_xB!$FI zt5(mK2IFc-4d=fZ36eq*j2w*y1K}u?kne=UK8M8`3uq~q)6QTscr8}h?1h2?4)3;% zX|`NnrnqiyCOdt`P&njC;NEt-RgdI{bBXEM=|pJ~31c!m#gq+v2S%$(l4b`w-IV-f zwUGz`?RsUdR^sAVL!!{tu>>l%Km>WZR!BhKbSBq~cYCZcZzRmjL%T1yTh}A3+vc_g zb+4!KeVenW>nzGjHaA?)vBpnrlvpb5C$c#HiM%(}llOWUY`KMz?42oZ*!?lHCE;~x zR{VQQ5?-WR={f4T)odn7DefN0V8-DWz%B!tH=_%rso+n-xv3xH*)Y4wFYr#GbOVVe zb(}@K35P-?=zf}w)f(=nfg%Ky*c}`(H~u=hc;&*vm5Yt*IQ*!%tA?I{$I>71^Atu> zquc$OmJ^Qf6r_cF+A=mYXsGF{6e=Pru5fYvej>-dQkkVMtgAG}lkA0;xrvqy(#p5l zXz62L!|P9~B(+p1%=OZ9!0=jNNcYLXpJ(7`tOeZLOmvN0^OeVPtH!=}x)rU|Mo39* zv~C}Hxm)enCy4=ZPUQN__uH8{K9}$jtH9!b-{9n<#z_ypoYiBA?IM2@zB@u}DnCa! zugf&<3~#4Cyh3L~#dQRmEi}Fwd+KF7^Tr@D3|%e-29nQru@cn$KA&IHaAV9}f3b6B zlLcc<_XOIJw^pHO(Kf+PdVAHsj<_NA49Yo=D`UM&FNfttWXFA+lca|a{N}%e+j9{e zYzbEy13|h6Mv{Rgw+jw%c?B;`6H{T$8BYe8YU(-W3=0&h~kY$F8U1MUI zYVl(GLNzvnJBwjBrqzI%M&?bHJ{K);P| zapLQz-wC>f=hsRy98TJPYPYH}cSQMm=!>@SYaxFThJYZxfuu1bam+q_^1FF_A$O?p zbJ*c-H~iK;rsqv}BR|g7!kFWBWwN6qnXFWv=fBA$79%r-mySxRoH=>M#2ogw+sBuA_4$cyo|ws^Fyt??ONr&Rjq)jhjI3bT7pHo_K+@Uphq92+#;xY`&e z`p6Z{*6xgB7dP@{;-Kvw(^@GkZRD+j6jqP&>UQ}PLU0feV)4GrhZwvAgb;4E zKH+0WU-H>Y6vgglpNrVwdv-V0LMAX|6zyPtkk%t}+*n`rLa4w!4Wy@7IQJ)I?@T{- z@31}A#`|23xX+=v*e18zm`a0Qc2+gEK+{B+x$RtMUTn>Mi@ zOViZ;nP54hX|6^N@D*z*iEprvIW%|UQ)tr7*5ke_f70b_+-70>JH?YKWXuew0CZ%`RY5#fmN%a@L@TtAqXoyTH=8*5%gx z?y!d)!l4D8#!W~@<8#MJn!{di$a1~e_IBEqLp$_=!K7(D z&gkBTxol$4vOqwEEBnm3Z?nr6lCc94#INECdmHa@dt4rN*d2DMfn?(!tn4a}OIzQh znYZEVmXOyQHsk9tU&;lv%$i4`jiBHHJEVYgA*UwthOVMZ>UUGi2ajA;wwts!_6GX> zS}2tYgDc$68O4?S_f^<95W^|{(b=`*0k224Xg)O->q_x* zk5`n(dUL!yY30Rrwp&l?enr(&(L_%&lnALlRZl15UGaPH5KvUDkc*b1p=2l<)KlU9 z5#n{G-?8trchM;cXA10alhDiH&kkur<9+a<;d6mlq`RaI4flH89%czDYP9Ql zs-8SQ(u5r5+aM*zp5;FfTQ+<4aMAR5Xo{XyCwDd6CImloNE`Px*EhkjZyVS{d?Dz+t%V%)xGP=?eqHvyVtc<7P>mu zRXWyr;(U@q1-lq`fwdLuI%pKT~pVJ|!eyP$>-y9~T6_n@IkoV`EqMrb>OG_@Pi& z6waSmIi%*(zK`bTI-=eBhl&gJj*Z>5jh+2-xsQ3%`Ji5jMJu)Pj_Eb0mOI-1B@zmE z7mM9tWQzS;p}ajD{+ISj`P4PjJIa;(zxi~xC?&q?TDl4+_B}yVg^}c9Vr43YF=yQQ zfLXgJ(v?id6vdayS{DPS%|t=xk$|Rzl0M7k!0u}u;ZQhl8_2Q;4)1ed|4PyxD~B8D z!~5_hQtkf^J`mXR#?CtUF!-#|PGb5p#-lkzlpkQYG(;H^rK-5jd0b*!r!U&xmFljC z)mPDemz#Z2hk4DW!TqD72kO|3YIa7Ho9QZttE1t;?o`()7fIi!E?&5%cmIxcu{62k zu*uqM-g@)m$lig0y(0r>pHsKs=I;yd_n;c)PX zo;)voPbw_?Uwk^8lGBNh76UIyy!dOt(l7oxoWi)5G0hK1x0y0LCzmo)z{OgOKLfun z9Kp?vxaTCYO#QX_VU=YQYy*9%aj)aYZud`QmZzs|O?y^-POoLd*lp!`%9HXu=?WoA zitki0T37R|9Mb{#{N)w9t4Y4m*+^oMLjA=E9CB;6_oQ~Y96>#P(Cu-m)@$7VVGVlJ zsDz`%L(GSJGNrO5u0%aGtK@Mv{vb(VFZSMwM6 z_9pGv*%K5yd)PwnseJ>d_Vu0G-?yW8!&Fz#g&L2!d>&8ZVYmBy zv-y5m{)yTA6Ywwi8fG`imk~VV#Oiqh9;$Z(-Y;!sUzJY<{22Hpwf_h|Er{S} z$%k9;hj4;5#RvwaQT8EuhTv8@A@oU{gR~CtPHB+6O+HBQf;jz0GF=A_GA!+6XM&!1 z#=;cXtg$+Urn2IRb;cv{C@ui`c{~z}CZjQFryhaJ06)lsi}>IaisCPls6Enl6WwNP z*rdxX9!^B#ae8&T7E$Pi5G5K!eO($beOvlIc@eNaF*!t%LTdmTAF+5WxWPB6cy#*~ zw<---E&vcXc%Zw!<(>6kGX2L zkWWe2?E~)MO)kY%v#N?eWwQ^u@ENbu9hiq705=8O>PSpQ;^KnK?bmQ|Fdl(r%Y#Q>Blt!3JB0)oq`NxV$rVm(AgEIoHx?cT1btkn}Us zXSRtfUs_?fiJ~RmpeKAVqxQQ3iZ8UF&$v~eTd~^v)r_<$GU4&MJnASLaXLLttJg8X zt=p>9#m+{i8gG*V=9~by)@aP7SNe8-tm3f4Ho(ao`B*fMedYmw!0xDwN?kY*L5ui( zlt$z8hl8maBmit4sh{CO1Zc{CCHv_8iJnxdCn0{dcv20<<5GX3D~>at5?wG$5@QkM zFh5@`y;zS;?Ilr%UHYRjiQ!u-&}lHQqD+uL#&X=c%+ zO{sXMI~e9hNGhh5qKG(oJON#-r7i4o>1GoY|83d+KIAH6bNrr4<@c3}w1w6R=A$O{ znVyvX#Lp_^Q$VweNyn~+6X^+RcX41+$w!N2pWEedF&rctu-hGq=JjX}JF*$=(l0zp zwB+|kyiUd8L@u=>=ydDYKIXDn7|sQuaaE;_>|)#pz}E`6#))edpFI)8wya*q|Bj9I zdywSlGnVy6vw6f3atA{mENhp?f5Ib;MK5^XD{)RO(Fm*tVZ4G{V4wwwBPjU&!f4sy z09oixXFeLsJDj?z1Z>XonDm=SEfpjh(REHE=_+W1nZ6~>vkQ=sA~Lp!?8N9nU!fQz zqHKH^zr{21qb?u6s77Su7dxd7rAOO+Dl+ozL7xjqo8d++BGAN4>)5ThvFdEj1^a1} zxzV(BUAd~`a-_m~cI){0{)-$2I;}8`DQE?jorf8W-vl*lc*be z8ul)U%qk-yNLdorQN50g!t)$)&AB)>?0Sb2X0+#=f56}|{s(#ismV6#L&dJ3W6M$zFDz2J@L*sPW8bds<=y7Pj}$9g z?J(}Q0CiDMPs)M*^JO{EM2m;b(q z|Kqc6dXY_IuRmt})tvh`x7nOYIxUX%N$4-OVndiCLts z;?IU`#Ph@a*^qO1e#Cg6OA0(6GZ8++(r)%8SY(Fu2H6^ZIG&ftl7x`7n_`?0{`^L( z0`@}uKiryQm2TuZks%-O{3!oI2Ia8v%=6NXw2R~`Fo4kygX5#tV+J0aSL69{{%r7A zJU?NSb54lo-*P-VL78{Igfb5~V!CT_lqgemucS=Ve}gii71GM0onWg7beTTi4I-=! zMr#(ACtgj2ydIlfv--4nC*6BS2l?5tzZB#NCy=Hg-BnY)i6ECW$Jt)_9E=*4!e7** zim@27?S;?N~Xg^h;Up_2Z5=mwhc*vCyMBq@SA}m0wA|FUU2qvW%5W z`p#xWwOMyKbQiQS-$9F8`nlhOch}lop`a&X?={202o3aUc7=Q$&o$#R%TUIMtD=ow ztb^5%En!#H7W4%ZcH5x)|Lg4hU84x1IDWh9?e6W){{HFx+Qg7VJ-sC6Cm0b)h+r%t zVz9E%MvI{7QYl!8DH70Du(L=Z*b6o(MEnCRVk5yOq!Db_@0;EGl}jwr95>wU?Cj2) zd7t-q?@jzJ22gpnHON~y{K~LzG90170ZI=H@RQ;CB^x-Ub9&b>XBnP5nE7;7Id4rD!!dlbyHO|^)@7iEte3n3BUU+dLI|}geAOD^5wN< zgr0)@HEj(SMLVmeUt(raUC?94bYgu`LFZ0+RT`QvsVEYumzE8{D*BdHs8!t9^ya-ajP{#MYvLMckC9~sH zy#jt$ALVj`(fYu(DK`V1gTdOsL{dkk+;FhsjZ~7lNti>L{ZM!zUG1fu2aU#GP|hJV z{3!l2EY1~v9YZ-;!W_wJo0>W0OmoVy83W~b7LHMGQI6s>4aWd>Q;wz`LpkX_>ZU)G zUUw`49y$m`manK;E(1M_?0N4Z`-E~ikCIxx=3L|-ic?O_i*)6dtSg429J2bvHzUeHxIR8&zuw^am#3kTXP}Wi+I?ux%pQ}9agY^9G_pk6XK&h>pX@`f`=her4}%=mnIy|A19%5$!G*F{Vp>tKOr{Ef9fo-=F|Ikz$gm8u7-h~a zvMeH22={HKcZA33{(ni}WLxB8x!Grm5J#;GPt(tRB=Eb@*a8TQ&^Yp(LX2aJk1Nj= zg~ofu+daQyoC#`o>`0gR?nI2*4u!)cp~=&gAgw!==_0bfK3O#!W=L9SR|4jU8_c&V zqcIE|msxaboa04qSFc$9JXSw5MO!vG!7)Kx;%h;<;!6hebX35qPu46;+%OTn9fgu< ynRaG1aen~M%_w~3l9ZVwxiIwRX8a+tp!dHZtQ9`+Six3i#?k)^?)", + foreground: "hsl(var(--destructive-foreground) / )", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + xl: `calc(var(--radius) + 4px)`, + lg: `var(--radius)`, + md: `calc(var(--radius) - 2px)`, + sm: "calc(var(--radius) - 4px)", + }, + fontSize: { + 8: "8px", + 10: "10px", + 12: "12px", + 13: "13px", + 14: "14px", + 16: "16px", + 18: "18px", + 20: "20px", + 22: "22px", + 24: "24px", + 30: "30px", + 40: "40px", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +}; +export default config; diff --git a/contracts/src/bridge/frontend/tsconfig.json b/contracts/src/bridge/frontend/tsconfig.json new file mode 100644 index 0000000000..43579a22f6 --- /dev/null +++ b/contracts/src/bridge/frontend/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/*": ["./*"] + }, + "plugins": [ + { + "name": "next" + } + ] + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} From bd0f0fc9440672e41e96062843c89cfa1fd4db1c Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Thu, 18 Apr 2024 13:45:29 +0400 Subject: [PATCH 002/136] components and pages setup --- contracts/src/bridge/L1/ObscuroBridge.sol | 15 +- contracts/src/bridge/frontend/pages/404.tsx | 38 +++ contracts/src/bridge/frontend/pages/500.tsx | 32 +++ .../src/bridge/frontend/pages/docs/[id].tsx | 102 ++++++++ contracts/src/bridge/frontend/pages/index.tsx | 17 ++ .../frontend/src/components/head-seo.tsx | 61 +++++ .../src/components/health-indicator.tsx | 67 ++++++ .../src/components/layouts/default-layout.tsx | 21 ++ .../src/components/layouts/footer.tsx | 70 ++++++ .../src/components/layouts/header.tsx | 72 ++++++ .../frontend/src/components/main-nav.tsx | 96 ++++++++ .../frontend/src/components/mode-toggle.tsx | 40 ++++ .../src/components/modules/bridge/index.tsx | 156 ++++++++++++ .../modules/common/connect-wallet.tsx | 39 +++ .../src/components/modules/common/copy.tsx | 22 ++ .../modules/common/network-status.tsx | 38 +++ .../modules/common/truncated-address.tsx | 47 ++++ .../modules/transactions/columns.tsx | 87 +++++++ .../modules/transactions/constants.tsx | 45 ++++ .../components/providers/theme-provider.tsx | 9 + .../components/providers/wallet-provider.tsx | 225 ++++++++++++++++++ .../frontend/src/components/ui/alert.tsx | 64 +++++ .../frontend/src/components/ui/badge.tsx | 39 +++ .../frontend/src/components/ui/button.tsx | 79 ++++++ .../frontend/src/components/ui/card.tsx | 86 +++++++ .../frontend/src/components/ui/dialog.tsx | 120 ++++++++++ .../src/components/ui/dropdown-menu.tsx | 198 +++++++++++++++ .../frontend/src/components/ui/select.tsx | 119 +++++++++ .../frontend/src/components/ui/separator.tsx | 29 +++ .../frontend/src/components/ui/skeleton.tsx | 15 ++ .../frontend/src/components/ui/spinner.tsx | 11 + .../frontend/src/components/ui/table.tsx | 114 +++++++++ .../frontend/src/components/ui/toast.tsx | 130 ++++++++++ .../frontend/src/components/ui/toaster.tsx | 33 +++ .../frontend/src/components/ui/tooltip.tsx | 28 +++ .../frontend/src/components/ui/use-toast.ts | 196 +++++++++++++++ .../src/bridge/frontend/src/hooks/useCopy.ts | 59 +++++ .../src/bridge/frontend/src/lib/constants.ts | 38 +++ .../bridge/frontend/src/lib/siteMetadata.ts | 16 ++ .../src/bridge/frontend/src/lib/utils.ts | 22 ++ .../src/bridge/frontend/src/routes/index.ts | 23 ++ .../src/bridge/frontend/src/routes/router.ts | 5 + contracts/src/bridge/frontend/types/index.ts | 80 +++++++ .../frontend/src/components/overview.tsx | 78 ------ .../frontend/src/components/team-switcher.tsx | 215 ----------------- .../frontend/src/components/user-nav.tsx | 62 ----- 46 files changed, 2795 insertions(+), 363 deletions(-) create mode 100644 contracts/src/bridge/frontend/pages/404.tsx create mode 100644 contracts/src/bridge/frontend/pages/500.tsx create mode 100644 contracts/src/bridge/frontend/pages/docs/[id].tsx create mode 100644 contracts/src/bridge/frontend/pages/index.tsx create mode 100644 contracts/src/bridge/frontend/src/components/head-seo.tsx create mode 100644 contracts/src/bridge/frontend/src/components/health-indicator.tsx create mode 100644 contracts/src/bridge/frontend/src/components/layouts/default-layout.tsx create mode 100644 contracts/src/bridge/frontend/src/components/layouts/footer.tsx create mode 100644 contracts/src/bridge/frontend/src/components/layouts/header.tsx create mode 100644 contracts/src/bridge/frontend/src/components/main-nav.tsx create mode 100644 contracts/src/bridge/frontend/src/components/mode-toggle.tsx create mode 100644 contracts/src/bridge/frontend/src/components/modules/bridge/index.tsx create mode 100644 contracts/src/bridge/frontend/src/components/modules/common/connect-wallet.tsx create mode 100644 contracts/src/bridge/frontend/src/components/modules/common/copy.tsx create mode 100644 contracts/src/bridge/frontend/src/components/modules/common/network-status.tsx create mode 100644 contracts/src/bridge/frontend/src/components/modules/common/truncated-address.tsx create mode 100644 contracts/src/bridge/frontend/src/components/modules/transactions/columns.tsx create mode 100644 contracts/src/bridge/frontend/src/components/modules/transactions/constants.tsx create mode 100644 contracts/src/bridge/frontend/src/components/providers/theme-provider.tsx create mode 100644 contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/alert.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/badge.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/button.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/card.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/dialog.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/dropdown-menu.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/select.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/separator.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/skeleton.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/spinner.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/table.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/toast.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/toaster.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/tooltip.tsx create mode 100644 contracts/src/bridge/frontend/src/components/ui/use-toast.ts create mode 100644 contracts/src/bridge/frontend/src/hooks/useCopy.ts create mode 100644 contracts/src/bridge/frontend/src/lib/constants.ts create mode 100644 contracts/src/bridge/frontend/src/lib/siteMetadata.ts create mode 100644 contracts/src/bridge/frontend/src/lib/utils.ts create mode 100644 contracts/src/bridge/frontend/src/routes/index.ts create mode 100644 contracts/src/bridge/frontend/src/routes/router.ts create mode 100644 contracts/src/bridge/frontend/types/index.ts delete mode 100644 tools/tenscan/frontend/src/components/overview.tsx delete mode 100644 tools/tenscan/frontend/src/components/team-switcher.tsx delete mode 100644 tools/tenscan/frontend/src/components/user-nav.tsx diff --git a/contracts/src/bridge/L1/ObscuroBridge.sol b/contracts/src/bridge/L1/ObscuroBridge.sol index d89d1772b9..add4d98559 100644 --- a/contracts/src/bridge/L1/ObscuroBridge.sol +++ b/contracts/src/bridge/L1/ObscuroBridge.sol @@ -10,7 +10,6 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; import "@openzeppelin/contracts/proxy/utils/Initializable.sol"; - // This is the Ethereum side of the Obscuro Bridge. // End-users can interact with it to transfer ERC20 tokens and native eth to the Layer 2 Obscuro. contract ObscuroBridge is @@ -32,8 +31,8 @@ contract ObscuroBridge is address remoteBridgeAddress; - function initialize(address messenger) public initializer() { - CrossChainEnabledObscuro.configure(messenger); + function initialize(address messenger) public initializer { + CrossChainEnabledObscuro.configure(messenger); _grantRole(ADMIN_ROLE, msg.sender); _grantRole(NATIVE_TOKEN_ROLE, address(0x0)); } @@ -73,7 +72,7 @@ contract ObscuroBridge is } // This cross chain message is specialized and will result in automatic increase - // of balance on the other side. + // of balance on the other side. // NOTE: If sent to a contract, there will be no fallback function executed. // Instead after the contract receives it, one can relay the cross chain message to // verify ETH deposit. @@ -85,16 +84,16 @@ contract ObscuroBridge is } function sendERC20( - address asset, - uint256 amount, - address receiver + address asset, // USDC, USDT, TEN (disabled), ETH + uint256 amount, // 10 + address receiver // ADDRESS ) external override { require(amount > 0, "Attempting empty transfer."); require( hasRole(ERC20_TOKEN_ROLE, asset), "This address has not been given a type and is thus considered not whitelisted." ); - + // ensures the token is correctly transferred to the contract - tx reverts on failure SafeERC20.safeTransferFrom( IERC20(asset), diff --git a/contracts/src/bridge/frontend/pages/404.tsx b/contracts/src/bridge/frontend/pages/404.tsx new file mode 100644 index 0000000000..2b7a07c742 --- /dev/null +++ b/contracts/src/bridge/frontend/pages/404.tsx @@ -0,0 +1,38 @@ +import { ErrorType } from "@/src/types/interfaces"; +import Error from "./_error"; + +export function Custom404Error({ + customPageTitle, + showRedirectText, + redirectText, + isFullWidth, + message, + showMessage = true, + redirectLink, + children, +}: ErrorType) { + return ( + + {children} + + ); +} + +export default Custom404Error; diff --git a/contracts/src/bridge/frontend/pages/500.tsx b/contracts/src/bridge/frontend/pages/500.tsx new file mode 100644 index 0000000000..2f3826812c --- /dev/null +++ b/contracts/src/bridge/frontend/pages/500.tsx @@ -0,0 +1,32 @@ +import { ErrorType } from "@/src/types/interfaces"; +import Error from "./_error"; + +function Custom500Error({ + customPageTitle, + message, + showRedirectText, + redirectText, + err, + redirectLink, + children, +}: ErrorType) { + return ( + + {children} + + ); +} + +export default Custom500Error; diff --git a/contracts/src/bridge/frontend/pages/docs/[id].tsx b/contracts/src/bridge/frontend/pages/docs/[id].tsx new file mode 100644 index 0000000000..3400f95f5b --- /dev/null +++ b/contracts/src/bridge/frontend/pages/docs/[id].tsx @@ -0,0 +1,102 @@ +import Layout from "@/src/components/layouts/default-layout"; +import Spinner from "@/src/components/ui/spinner"; +import { siteMetadata } from "@/src/lib/siteMetadata"; +import { useRouter } from "next/router"; +import React from "react"; +import Custom404Error from "../404"; +import { showToast } from "@/src/components/ui/use-toast"; +import { ToastType } from "@/src/types/interfaces"; + +type Document = { + title: string; + subHeading: string; + content: { + heading: string; + content: string[]; + }[]; +}; + +const Document = () => { + const { query } = useRouter(); + const { id } = query; + + const [document, setDocument] = React.useState({} as Document); + const [loading, setLoading] = React.useState(false); + + const getDocument = async () => { + setLoading(true); + try { + const response = await fetch(`/docs/${id}.json`); + const data = await response.json(); + const processedData = { + title: data.title, + subHeading: data.subHeading, + content: data.content.map((item: any) => { + return { + heading: item.heading, + content: item.content.map((paragraph: any) => { + return paragraph.replace( + /siteMetadata.email/g, + siteMetadata.email + ); + }), + }; + }), + }; + setDocument(processedData); + } catch (error) { + showToast(ToastType.DESTRUCTIVE, "Error fetching document"); + } finally { + setLoading(false); + } + }; + + React.useEffect(() => { + if (id) { + getDocument(); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [id]); + + return ( + +
+ {!loading ? ( + !document.title ? ( + + ) : ( + <> +
+

+ {document.title} +

+

+ {document.subHeading} +

+
+
+ {document.content && + document.content.map((section, index) => ( +
+

{section.heading}

+ {section.content && + section.content.map((paragraph, index) => ( +
+ ))} +
+ ))} +
+ + ) + ) : ( + + )} +
+
+ ); +}; + +export default Document; diff --git a/contracts/src/bridge/frontend/pages/index.tsx b/contracts/src/bridge/frontend/pages/index.tsx new file mode 100644 index 0000000000..1390e84288 --- /dev/null +++ b/contracts/src/bridge/frontend/pages/index.tsx @@ -0,0 +1,17 @@ +import React from "react"; +import { Metadata } from "next"; +import Layout from "@/src/components/layouts/default-layout"; +import Dashboard from "@/src/components/modules/bridge"; + +export const metadata: Metadata = { + title: "Dashboard", + description: "Tenscan Dashboard", +}; + +export default function DashboardPage() { + return ( + + + + ); +} diff --git a/contracts/src/bridge/frontend/src/components/head-seo.tsx b/contracts/src/bridge/frontend/src/components/head-seo.tsx new file mode 100644 index 0000000000..58d574bdc0 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/head-seo.tsx @@ -0,0 +1,61 @@ +import Head from "next/head"; +import { siteMetadata } from "../lib/siteMetadata"; +import { SeoProps } from "@/types"; + +const HeadSeo = ({ + title, + description, + canonicalUrl, + ogTwitterImage, + ogImageUrl, + ogType, + children, +}: SeoProps) => { + return ( + + {/* Basic metadata */} + {title} + + + + {/* Beagle Security */} + + {/* SECURITY: to prevent the page from being loaded in an iFrame */} + + {/* to indicate the browser shouldn't interpret the response as something other than the specified content type */} + + {/* The Content-Security-Policy header is used to prevent a wide range of attacks, including Cross-Site Scripting (XSS) and other cross-site injections. */} + {/* twitter metadata */} + + + + + + {/* canonical link */} + + {/* open graph metadata */} + + + + + + + + {children} + + ); +}; + +export default HeadSeo; diff --git a/contracts/src/bridge/frontend/src/components/health-indicator.tsx b/contracts/src/bridge/frontend/src/components/health-indicator.tsx new file mode 100644 index 0000000000..cfc671e76a --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/health-indicator.tsx @@ -0,0 +1,67 @@ +import React, { useEffect, useState } from "react"; +import { Badge, badgeVariants } from "./ui/badge"; +import useGatewayService from "@/services/useGatewayService"; +import { Skeleton } from "./ui/skeleton"; + +const HealthIndicator = () => { + const { getTestnetStatus } = useGatewayService(); + const [loading, setLoading] = useState(false); + const [status, setStatus] = useState(); + + const testnetStatus = async () => { + setLoading(true); + try { + const status = await getTestnetStatus(); + return status; + } catch (error) { + console.error(error); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + let isMounted = true; + + // if overall health is true, status is set to true + // if overall health is false but if the error includes [p2p], status is set to true + + testnetStatus().then((res) => { + if (isMounted) { + if (res?.result?.OverallHealth) { + setStatus(true); + } else if ( + res?.result?.Errors?.some((e: string) => e.includes("[p2p]")) + ) { + setStatus(true); + } else { + setStatus(false); + } + } + }); + + return () => { + isMounted = false; + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( +
+

Testnet Status:

+ {loading ? ( + + ) : ( + + {status ? "Live" : "Down"} + + )} +
+ ); +}; + +export default HealthIndicator; diff --git a/contracts/src/bridge/frontend/src/components/layouts/default-layout.tsx b/contracts/src/bridge/frontend/src/components/layouts/default-layout.tsx new file mode 100644 index 0000000000..2c4b262837 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/layouts/default-layout.tsx @@ -0,0 +1,21 @@ +import React from "react"; +import Header from "./header"; +import Footer from "./footer"; + +interface LayoutProps { + children: React.ReactNode; +} + +const Layout = ({ children }: LayoutProps) => { + return ( +
+
+
+
{children}
+
+
+
+ ); +}; + +export default Layout; diff --git a/contracts/src/bridge/frontend/src/components/layouts/footer.tsx b/contracts/src/bridge/frontend/src/components/layouts/footer.tsx new file mode 100644 index 0000000000..401641c035 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/layouts/footer.tsx @@ -0,0 +1,70 @@ +import Link from "next/link"; +import { socialLinks } from "../../lib/constants"; +import { + GitHubLogoIcon, + TwitterLogoIcon, + DiscordLogoIcon, +} from "@radix-ui/react-icons"; +import { useWalletConnection } from "../providers/wallet-provider"; + +const SOCIAL_LINKS = [ + { + name: "GitHub", + href: socialLinks.github, + icon: GitHubLogoIcon, + }, + { + name: "Twitter", + href: socialLinks.twitter, + icon: TwitterLogoIcon, + }, + { + name: "Discord", + href: socialLinks.discord, + icon: DiscordLogoIcon, + }, +]; + +export default function Footer() { + const { version } = useWalletConnection(); + + return ( +
+ ); +} diff --git a/contracts/src/bridge/frontend/src/components/layouts/header.tsx b/contracts/src/bridge/frontend/src/components/layouts/header.tsx new file mode 100644 index 0000000000..3a2e59b40a --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/layouts/header.tsx @@ -0,0 +1,72 @@ +import { MainNav } from "../main-nav"; +import { ModeToggle } from "../mode-toggle"; +import ConnectWalletButton from "../modules/common/connect-wallet"; +import Link from "next/link"; +import { HamburgerMenuIcon } from "@radix-ui/react-icons"; +import { useState } from "react"; +import { Button } from "../ui/button"; +import HealthIndicator from "../health-indicator"; +import Image from "next/image"; + +export default function Header() { + return ( +
+
+ + Logo + Logo + +
+ +
+ + + +
+
+
+ +
+
+
+ ); +} + +const MobileMenu = () => { + const [menuOpen, setMenuOpen] = useState(false); + + return ( +
+ + + {menuOpen && ( +
+
+
+ + +
+
+
+ )} +
+ ); +}; diff --git a/contracts/src/bridge/frontend/src/components/main-nav.tsx b/contracts/src/bridge/frontend/src/components/main-nav.tsx new file mode 100644 index 0000000000..01e8d1af9d --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/main-nav.tsx @@ -0,0 +1,96 @@ +import React from "react"; +import Link from "next/link"; +import { useRouter } from "next/router"; + +import { cn } from "../lib/utils"; +import { Button } from "./ui/button"; +import { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, +} from "./ui/dropdown-menu"; + +import { ChevronDownIcon } from "@radix-ui/react-icons"; +import { NavLink } from "../../types"; +import { NavLinks } from "../routes"; + +const NavItem = ({ navLink }: { navLink: NavLink }) => { + const router = useRouter(); + + const isDropdownActive = (navLink: NavLink) => { + return navLink.subNavLinks?.some( + (subNavLink: NavLink) => + subNavLink.href && router.pathname.includes(subNavLink.href) + ); + }; + if (navLink.isDropdown) { + return ( + + + + + + + {navLink.subNavLinks && + navLink.subNavLinks.map((subNavLink: NavLink) => ( + + + + ))} + + + + ); + } else if (navLink.isExternal) { + return ( + + {navLink.label} + + ); + } else { + return ( + + {navLink.label} + + ); + } +}; + +export const MainNav = ({ + className, + ...props +}: React.HTMLAttributes) => ( + +); diff --git a/contracts/src/bridge/frontend/src/components/mode-toggle.tsx b/contracts/src/bridge/frontend/src/components/mode-toggle.tsx new file mode 100644 index 0000000000..653c922006 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/mode-toggle.tsx @@ -0,0 +1,40 @@ +"use client"; + +import * as React from "react"; +import { Moon, Sun } from "lucide-react"; +import { useTheme } from "next-themes"; + +import { Button } from "./ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "./ui/dropdown-menu"; + +export function ModeToggle() { + const { setTheme } = useTheme(); + + return ( + + + + + + setTheme("light")}> + Light + + setTheme("dark")}> + Dark + + setTheme("system")}> + System + + + + ); +} diff --git a/contracts/src/bridge/frontend/src/components/modules/bridge/index.tsx b/contracts/src/bridge/frontend/src/components/modules/bridge/index.tsx new file mode 100644 index 0000000000..0e62c955e6 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/modules/bridge/index.tsx @@ -0,0 +1,156 @@ +import React from "react"; +import { CalendarDateRangePicker } from "@/src/components/date-range-picker"; +import { + CardHeader, + CardTitle, + CardContent, + Card, +} from "@/src/components/ui/card"; +import { + LayersIcon, + FileTextIcon, + ReaderIcon, + CubeIcon, + RocketIcon, +} from "@radix-ui/react-icons"; + +import { RecentBatches } from "./recent-batches"; +import { RecentTransactions } from "./recent-transactions"; +import { Button } from "@/src/components/ui/button"; +import { useTransactionsService } from "@/src/services/useTransactionsService"; +import { useBatchesService } from "@/src/services/useBatchesService"; +import TruncatedAddress from "../modules/common/truncated-address"; +import { useContractsService } from "@/src/services/useContractsService"; +import { Skeleton } from "@/src/components/ui/skeleton"; +import { RecentBlocks } from "./recent-blocks"; +import { useBlocksService } from "@/src/services/useBlocksService"; +import AnalyticsCard from "./analytics-card"; +import Link from "next/link"; +import { cn } from "@/src/lib/utils"; +import { Badge } from "../../ui/badge"; +import { BlocksIcon } from "lucide-react"; + +export default function Dashboard() { + const { price, transactions, transactionCount } = useTransactionsService(); + const { contractCount } = useContractsService(); + const { batches, latestBatch } = useBatchesService(); + const { blocks } = useBlocksService(); + + const DASHBOARD_DATA = [ + { + title: "Ether Price", + value: price?.ethereum?.usd ? `$${price.ethereum.usd}` : "N/A", + // TODO: add change + // change: "+20.1%", + icon: RocketIcon, + }, + { + title: "Latest L2 Batch", + value: latestBatch?.item?.number + ? Number(latestBatch.item.number) + : "N/A", + // TODO: add change + // change: "+20.1%", + icon: LayersIcon, + }, + { + title: "Latest L1 Rollup", + value: latestBatch?.item?.l1Proof ? ( + + ) : ( + "N/A" + ), + // TODO: add change + // change: "+20.1%", + icon: CubeIcon, + }, + { + title: "Transactions", + value: transactionCount?.count, + // TODO: add change + // change: "+20.1%", + icon: ReaderIcon, + }, + { + title: "Contracts", + value: contractCount?.count, + // TODO: add change + // change: "+20.1%", + icon: FileTextIcon, + }, + { + title: "Nodes", + value: Coming Soon, + icon: BlocksIcon, + }, + ]; + + const RECENT_DATA = [ + { + title: "Recent Blocks", + data: blocks, + component: , + goTo: "/blocks", + className: "col-span-1 md:col-span-2 lg:col-span-3", + }, + { + title: "Recent Batches", + data: batches, + component: , + goTo: "/batches", + className: "col-span-1 md:col-span-2 lg:col-span-3", + }, + { + title: "Recent Transactions", + data: transactions, + component: , + goTo: "/transactions", + className: "col-span-1 md:col-span-2 lg:col-span-3", + }, + ]; + + return ( +
+
+

Tenscan

+
+
+ {DASHBOARD_DATA.map((item: any, index) => ( + + ))} +
+
+ {RECENT_DATA.map((item: any, index) => ( + + + {item.title} + + + + + + {item.data ? ( + item.component + ) : ( + + )} + + + ))} +
+
+ ); +} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/connect-wallet.tsx b/contracts/src/bridge/frontend/src/components/modules/common/connect-wallet.tsx new file mode 100644 index 0000000000..c75f73fcbb --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/modules/common/connect-wallet.tsx @@ -0,0 +1,39 @@ +import { useWalletConnection } from "../../providers/wallet-provider"; +import { Button } from "../../ui/button"; +import useGatewayService from "../../../services/useGatewayService"; +import { Link2Icon, LinkBreak2Icon } from "@radix-ui/react-icons"; +import React from "react"; +import { downloadMetaMask, ethereum } from "@/lib/utils"; +const ConnectWalletButton = () => { + const { walletConnected, revokeAccounts } = useWalletConnection(); + const { connectToTenTestnet } = useGatewayService(); + + return ( + + ); +}; + +export default ConnectWalletButton; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/copy.tsx b/contracts/src/bridge/frontend/src/components/modules/common/copy.tsx new file mode 100644 index 0000000000..8d4eee740f --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/modules/common/copy.tsx @@ -0,0 +1,22 @@ +import React from "react"; +import { Button } from "../../ui/button"; +import { useCopy } from "../../../hooks/useCopy"; +import { CopyIcon, CheckIcon } from "@radix-ui/react-icons"; + +const Copy = ({ value }: { value: string | number | undefined }) => { + const { copyToClipboard, copied } = useCopy(); + return ( + + ); +}; + +export default Copy; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/network-status.tsx b/contracts/src/bridge/frontend/src/components/modules/common/network-status.tsx new file mode 100644 index 0000000000..8f999f4015 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/modules/common/network-status.tsx @@ -0,0 +1,38 @@ +import React from "react"; + +const MessageContent = ( +

+ You seem to be offline +
Please check your internet connection. +

+); + +export const NetworkStatus = ({ message = MessageContent }) => { + const [isOnline, setIsOnline] = React.useState(true); + + React.useEffect(() => { + const setOnlineStatus = () => { + setIsOnline(navigator.onLine); + }; + + window.addEventListener("online", setOnlineStatus); + window.addEventListener("offline", setOnlineStatus); + + return () => { + window.removeEventListener("online", setOnlineStatus); + window.removeEventListener("offline", setOnlineStatus); + }; + }, []); + + return ( +
+
+ {message} +
+
+ ); +}; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/truncated-address.tsx b/contracts/src/bridge/frontend/src/components/modules/common/truncated-address.tsx new file mode 100644 index 0000000000..d3d40ef32e --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/modules/common/truncated-address.tsx @@ -0,0 +1,47 @@ +import React from "react"; + +import { + TooltipProvider, + Tooltip, + TooltipTrigger, + TooltipContent, +} from "@radix-ui/react-tooltip"; +import Copy from "./copy"; + +const TruncatedAddress = ({ + address, + prefixLength = 6, + suffixLength = 4, +}: { + address: string; + prefixLength?: number; + suffixLength?: number; +}) => { + const truncatedAddress = + address && + `${address.substring(0, prefixLength)}...${address.substring( + address.length - suffixLength + )}`; + + return ( + <> + {address ? ( +
+ + + {truncatedAddress} + +

{address}

+
+
+
+ +
+ ) : ( +
N/A
+ )} + + ); +}; + +export default TruncatedAddress; diff --git a/contracts/src/bridge/frontend/src/components/modules/transactions/columns.tsx b/contracts/src/bridge/frontend/src/components/modules/transactions/columns.tsx new file mode 100644 index 0000000000..f49987d472 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/modules/transactions/columns.tsx @@ -0,0 +1,87 @@ +"use client"; + +import { ColumnDef } from "@tanstack/react-table"; +import { Badge } from "@/src/components/ui/badge"; + +import { statuses } from "./constants"; +import { DataTableColumnHeader } from "../common/data-table/data-table-column-header"; +import { Transaction } from "@/src/types/interfaces/TransactionInterfaces"; +import TruncatedAddress from "../common/truncated-address"; +import { formatTimeAgo } from "@/src/lib/utils"; + +export const columns: ColumnDef[] = [ + { + accessorKey: "BatchHeight", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ( +
+ + {row.getValue("BatchHeight")} + +
+ ); + }, + enableSorting: false, + enableHiding: false, + }, + + { + accessorKey: "BatchTimestamp", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ( +
+ + {formatTimeAgo(row.getValue("BatchTimestamp"))} + +
+ ); + }, + enableSorting: false, + enableHiding: false, + }, + + { + accessorKey: "TransactionHash", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ; + }, + enableSorting: false, + enableHiding: false, + }, + { + accessorKey: "Finality", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const finality = statuses.find( + (finality) => finality.value === row.getValue("Finality") + ); + + if (!finality) { + return null; + } + + return ( +
+ {finality.icon && ( + + )} + {finality.label} +
+ ); + }, + filterFn: (row, id, value) => { + return value.includes(row.getValue(id)); + }, + }, +]; diff --git a/contracts/src/bridge/frontend/src/components/modules/transactions/constants.tsx b/contracts/src/bridge/frontend/src/components/modules/transactions/constants.tsx new file mode 100644 index 0000000000..2ab030f09f --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/modules/transactions/constants.tsx @@ -0,0 +1,45 @@ +import { + ArrowDownIcon, + ArrowRightIcon, + ArrowUpIcon, + CheckCircledIcon, + ClockIcon, +} from "@radix-ui/react-icons"; + +export const labels = [ + { + value: "Final", + label: "Final", + }, +]; + +export const statuses = [ + { + value: "Final", + label: "Final", + icon: CheckCircledIcon, + }, + { + value: "Pending", + label: "Pending", + icon: ClockIcon, + }, +]; + +export const priorities = [ + { + label: "Low", + value: "low", + icon: ArrowDownIcon, + }, + { + label: "Medium", + value: "medium", + icon: ArrowRightIcon, + }, + { + label: "High", + value: "high", + icon: ArrowUpIcon, + }, +]; diff --git a/contracts/src/bridge/frontend/src/components/providers/theme-provider.tsx b/contracts/src/bridge/frontend/src/components/providers/theme-provider.tsx new file mode 100644 index 0000000000..d4b4bbfd90 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/providers/theme-provider.tsx @@ -0,0 +1,9 @@ +'use client' + +import * as React from 'react' +import { ThemeProvider as NextThemesProvider } from 'next-themes' +import { type ThemeProviderProps } from 'next-themes/dist/types' + +export function ThemeProvider({ children, ...props }: ThemeProviderProps) { + return {children} +} diff --git a/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx b/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx new file mode 100644 index 0000000000..5ce91ab5f7 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx @@ -0,0 +1,225 @@ +import { createContext, useContext, useEffect, useState } from "react"; +import { + WalletConnectionContextType, + WalletConnectionProviderProps, + Account, +} from "../../types/interfaces/WalletInterfaces"; +import { showToast } from "../ui/use-toast"; +import { ethereum, isValidTokenFormat } from "../../lib/utils"; +import { + accountIsAuthenticated, + fetchVersion, + revokeAccountsApi, +} from "../../api/gateway"; +import { ToastType } from "@/types"; +import { + authenticateAccountWithTenGatewayEIP712, + getToken, +} from "@/api/ethRequests"; +import { ethers } from "ethers"; +import ethService from "@/services/ethService"; + +const WalletConnectionContext = + createContext(null); + +export const useWalletConnection = (): WalletConnectionContextType => { + const context = useContext(WalletConnectionContext); + + if (!context) { + throw new Error( + "useWalletConnection must be used within a WalletConnectionProvider" + ); + } + return context; +}; + +export const WalletConnectionProvider = ({ + children, +}: WalletConnectionProviderProps) => { + const [walletConnected, setWalletConnected] = useState(false); + const [token, setToken] = useState(""); + const [version, setVersion] = useState(null); + const [loading, setLoading] = useState(true); + const [accounts, setAccounts] = useState(null); + const [provider, setProvider] = useState({} as ethers.providers.Web3Provider); + + const initialize = async ( + providerInstance: ethers.providers.Web3Provider + ) => { + if (!providerInstance) { + return showToast( + ToastType.INFO, + "Provider is required to initialize wallet connection." + ); + } + + try { + await ethService.checkIfMetamaskIsLoaded(providerInstance); + + const fetchedToken = await getToken(providerInstance); + setToken(fetchedToken); + + const status = await ethService.isUserConnectedToTenChain(fetchedToken); + setWalletConnected(status); + + const accounts = await ethService.getAccounts(providerInstance); + setAccounts(accounts || null); + setVersion(await fetchVersion()); + } catch (error) { + showToast( + ToastType.DESTRUCTIVE, + error instanceof Error + ? error.message + : "Error initializing wallet connection. Please refresh the page." + ); + } finally { + setLoading(false); + } + }; + + const connectAccount = async (account: string) => { + try { + if (!token) { + showToast( + ToastType.INFO, + "Encryption token is required to connect an account." + ); + return; + } + await authenticateAccountWithTenGatewayEIP712(token, account); + const { status } = await accountIsAuthenticated(token, account); + if (status) { + showToast(ToastType.SUCCESS, "Account authenticated!"); + setAccounts((accounts) => { + if (!accounts) { + return null; + } + return accounts.map((acc) => { + if (acc.name === account) { + return { + ...acc, + connected: status, + }; + } + return acc; + }); + }); + } else { + showToast(ToastType.DESTRUCTIVE, "Account authentication failed."); + } + } catch (error: any) { + showToast(ToastType.DESTRUCTIVE, "Account authentication failed."); + } + }; + + const revokeAccounts = async () => { + if (!token) { + showToast( + ToastType.INFO, + "Encryption token is required to revoke accounts" + ); + return; + } + const revokeResponse = await revokeAccountsApi(token); + if (revokeResponse === ToastType.SUCCESS) { + showToast(ToastType.DESTRUCTIVE, "Accounts revoked!"); + setAccounts(null); + setWalletConnected(false); + setToken(""); + } + }; + + const fetchUserAccounts = async () => { + if (!provider) { + showToast( + ToastType.INFO, + "Provider is required to fetch user accounts. Please connect your wallet." + ); + return; + } + const token = await getToken(provider); + + if (!isValidTokenFormat(token)) { + showToast( + ToastType.INFO, + "Invalid token format. Please refresh the page." + ); + setAccounts([]); + setWalletConnected(false); + return; + } + + setToken(token); + + try { + const accounts = await ethService.getAccounts(provider); + let updatedAccounts: Account[] = []; + + if (!accounts || accounts.length === 0) { + setAccounts([]); + } else { + updatedAccounts = await Promise.all( + accounts!.map(async (account) => { + await ethService.authenticateWithGateway(token, account.name); + const { status } = await accountIsAuthenticated( + token, + account.name + ); + return { + ...account, + connected: status, + }; + }) + ); + showToast(ToastType.INFO, "Accounts authenticated with gateway!"); + setAccounts(updatedAccounts); + } + } catch (error: any) { + showToast( + ToastType.DESTRUCTIVE, + `Error fetching user accounts: ${error?.message}` + ); + } finally { + setWalletConnected(true); + setLoading(false); + } + }; + + useEffect(() => { + if (ethereum && ethereum.isMetaMask) { + const providerInstance = new ethers.providers.Web3Provider(ethereum); + setProvider(providerInstance); + initialize(providerInstance); + + ethereum.on("accountsChanged", fetchUserAccounts); + } else { + setLoading(false); + } + + return () => { + if (ethereum && ethereum.removeListener) { + ethereum.removeListener("accountsChanged", fetchUserAccounts); + } + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const walletConnectionContextValue: WalletConnectionContextType = { + walletConnected, + accounts, + token, + connectAccount, + version, + revokeAccounts, + loading, + provider, + fetchUserAccounts, + setLoading, + }; + + return ( + + {children} + + ); +}; diff --git a/contracts/src/bridge/frontend/src/components/ui/alert.tsx b/contracts/src/bridge/frontend/src/components/ui/alert.tsx new file mode 100644 index 0000000000..ef4d6dbee7 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/alert.tsx @@ -0,0 +1,64 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "../../lib/utils"; + +const alertVariants = cva( + "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + info: "border-info/50 text-info dark:border-info [&>svg]:text-info", + success: + "border-success/50 text-success dark:border-success [&>svg]:text-success", + warning: + "border-warning/50 text-warning dark:border-warning [&>svg]:text-warning", + }, + }, + defaultVariants: { + variant: "default", + }, + } +); + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
+)); +Alert.displayName = "Alert"; + +const AlertTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +AlertTitle.displayName = "AlertTitle"; + +const AlertDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +AlertDescription.displayName = "AlertDescription"; + +export { Alert, AlertTitle, AlertDescription }; diff --git a/contracts/src/bridge/frontend/src/components/ui/badge.tsx b/contracts/src/bridge/frontend/src/components/ui/badge.tsx new file mode 100644 index 0000000000..afdfb44835 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/badge.tsx @@ -0,0 +1,39 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "../../lib/utils"; + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + info: "border-transparent bg-info text-info-foreground hover:bg-info/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + success: + "border-transparent bg-success text-success-foreground hover:bg-success/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +); + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ); +} + +export { Badge, badgeVariants }; diff --git a/contracts/src/bridge/frontend/src/components/ui/button.tsx b/contracts/src/bridge/frontend/src/components/ui/button.tsx new file mode 100644 index 0000000000..10c65cc717 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/button.tsx @@ -0,0 +1,79 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "../../lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + clear: "bg-transparent text-primary-foreground outline-none", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10 p-1", + wrap: "h-full w-full", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button"; + return ( + + ); + } +); +Button.displayName = "Button"; + +interface LinkButtonProps + extends React.AnchorHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const LinkButton = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "a"; + return ( + + ); + } +); + +LinkButton.displayName = "LinkButton"; + +export { Button, buttonVariants, LinkButton }; diff --git a/contracts/src/bridge/frontend/src/components/ui/card.tsx b/contracts/src/bridge/frontend/src/components/ui/card.tsx new file mode 100644 index 0000000000..6abe706a68 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/card.tsx @@ -0,0 +1,86 @@ +import * as React from "react"; + +import { cn } from "../../lib/utils"; + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +Card.displayName = "Card"; + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +CardHeader.displayName = "CardHeader"; + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardTitle.displayName = "CardTitle"; + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardDescription.displayName = "CardDescription"; + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardContent.displayName = "CardContent"; + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +CardFooter.displayName = "CardFooter"; + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardDescription, + CardContent, +}; diff --git a/contracts/src/bridge/frontend/src/components/ui/dialog.tsx b/contracts/src/bridge/frontend/src/components/ui/dialog.tsx new file mode 100644 index 0000000000..e7fc0c8651 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/dialog.tsx @@ -0,0 +1,120 @@ +import * as React from "react"; +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { X } from "lucide-react"; + +import { cn } from "../../lib/utils"; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = DialogPrimitive.Portal; + +const DialogClose = DialogPrimitive.Close; + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +DialogHeader.displayName = "DialogHeader"; + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +DialogFooter.displayName = "DialogFooter"; + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}; diff --git a/contracts/src/bridge/frontend/src/components/ui/dropdown-menu.tsx b/contracts/src/bridge/frontend/src/components/ui/dropdown-menu.tsx new file mode 100644 index 0000000000..a149167bf2 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,198 @@ +import * as React from "react"; +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; +import { Check, ChevronRight, Circle } from "lucide-react"; + +import { cn } from "../../lib/utils"; + +const DropdownMenu = DropdownMenuPrimitive.Root; + +const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; + +const DropdownMenuGroup = DropdownMenuPrimitive.Group; + +const DropdownMenuPortal = DropdownMenuPrimitive.Portal; + +const DropdownMenuSub = DropdownMenuPrimitive.Sub; + +const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; + +const DropdownMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)); +DropdownMenuSubTrigger.displayName = + DropdownMenuPrimitive.SubTrigger.displayName; + +const DropdownMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuSubContent.displayName = + DropdownMenuPrimitive.SubContent.displayName; + +const DropdownMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)); +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; + +const DropdownMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, ...props }, ref) => ( + +)); +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; + +const DropdownMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)); +DropdownMenuCheckboxItem.displayName = + DropdownMenuPrimitive.CheckboxItem.displayName; + +const DropdownMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)); +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; + +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, ...props }, ref) => ( + +)); +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; + +const DropdownMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; + +const DropdownMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ); +}; +DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; + +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +}; diff --git a/contracts/src/bridge/frontend/src/components/ui/select.tsx b/contracts/src/bridge/frontend/src/components/ui/select.tsx new file mode 100644 index 0000000000..5d4c184001 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/select.tsx @@ -0,0 +1,119 @@ +import * as React from "react"; +import * as SelectPrimitive from "@radix-ui/react-select"; +import { Check, ChevronDown } from "lucide-react"; + +import { cn } from "../../lib/utils"; + +const Select = SelectPrimitive.Root; + +const SelectGroup = SelectPrimitive.Group; + +const SelectValue = SelectPrimitive.Value; + +const SelectTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + {children} + + + + +)); +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + + + {children} + + + +)); +SelectContent.displayName = SelectPrimitive.Content.displayName; + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +SelectLabel.displayName = SelectPrimitive.Label.displayName; + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + + {children} + +)); +SelectItem.displayName = SelectPrimitive.Item.displayName; + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +SelectSeparator.displayName = SelectPrimitive.Separator.displayName; + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, +}; diff --git a/contracts/src/bridge/frontend/src/components/ui/separator.tsx b/contracts/src/bridge/frontend/src/components/ui/separator.tsx new file mode 100644 index 0000000000..e3eb575726 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/separator.tsx @@ -0,0 +1,29 @@ +import * as React from "react"; +import * as SeparatorPrimitive from "@radix-ui/react-separator"; + +import { cn } from "../../lib/utils"; + +const Separator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>( + ( + { className, orientation = "horizontal", decorative = true, ...props }, + ref + ) => ( + + ) +); +Separator.displayName = SeparatorPrimitive.Root.displayName; + +export { Separator }; diff --git a/contracts/src/bridge/frontend/src/components/ui/skeleton.tsx b/contracts/src/bridge/frontend/src/components/ui/skeleton.tsx new file mode 100644 index 0000000000..6e10fe239d --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "../../lib/utils"; + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ); +} + +export { Skeleton }; diff --git a/contracts/src/bridge/frontend/src/components/ui/spinner.tsx b/contracts/src/bridge/frontend/src/components/ui/spinner.tsx new file mode 100644 index 0000000000..2948ef451b --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/spinner.tsx @@ -0,0 +1,11 @@ +import React from "react"; + +const Spinner = () => { + return ( +
+
+
+ ); +}; + +export default Spinner; diff --git a/contracts/src/bridge/frontend/src/components/ui/table.tsx b/contracts/src/bridge/frontend/src/components/ui/table.tsx new file mode 100644 index 0000000000..b5f5948e64 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/table.tsx @@ -0,0 +1,114 @@ +import * as React from "react"; + +import { cn } from "../../lib/utils"; + +const Table = React.forwardRef< + HTMLTableElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+ + +)); +Table.displayName = "Table"; + +const TableHeader = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableHeader.displayName = "TableHeader"; + +const TableBody = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableBody.displayName = "TableBody"; + +const TableFooter = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableFooter.displayName = "TableFooter"; + +const TableRow = React.forwardRef< + HTMLTableRowElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableRow.displayName = "TableRow"; + +const TableHead = React.forwardRef< + HTMLTableCellElement, + React.ThHTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +TableHead.displayName = "TableHead"; + +const TableCell = React.forwardRef< + HTMLTableCellElement, + React.TdHTMLAttributes +>(({ className, ...props }, ref) => ( + +)); +TableCell.displayName = "TableCell"; + +const TableCaption = React.forwardRef< + HTMLTableCaptionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +TableCaption.displayName = "TableCaption"; + +export { + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableRow, + TableCell, + TableCaption, +}; diff --git a/contracts/src/bridge/frontend/src/components/ui/toast.tsx b/contracts/src/bridge/frontend/src/components/ui/toast.tsx new file mode 100644 index 0000000000..97a2a0d5fd --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/toast.tsx @@ -0,0 +1,130 @@ +import * as React from "react"; +import * as ToastPrimitives from "@radix-ui/react-toast"; +import { cva, type VariantProps } from "class-variance-authority"; +import { X } from "lucide-react"; + +import { cn } from "../../lib/utils"; + +const ToastProvider = ToastPrimitives.Provider; + +const ToastViewport = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +ToastViewport.displayName = ToastPrimitives.Viewport.displayName; + +const toastVariants = cva( + "group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full", + { + variants: { + variant: { + default: "border bg-background text-foreground", + info: "border-info bg-info text-info-foreground", + success: "border-success bg-success text-success-foreground", + warning: "border-warning bg-warning text-foreground", + destructive: + "destructive group border-destructive bg-destructive text-destructive-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +); + +const Toast = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, variant, ...props }, ref) => { + return ( + + ); +}); +Toast.displayName = ToastPrimitives.Root.displayName; + +const ToastAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +ToastAction.displayName = ToastPrimitives.Action.displayName; + +const ToastClose = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)); +ToastClose.displayName = ToastPrimitives.Close.displayName; + +const ToastTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +ToastTitle.displayName = ToastPrimitives.Title.displayName; + +const ToastDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +ToastDescription.displayName = ToastPrimitives.Description.displayName; + +type ToastProps = React.ComponentPropsWithoutRef; + +type ToastActionElement = React.ReactElement; + +export { + type ToastProps, + type ToastActionElement, + ToastProvider, + ToastViewport, + Toast, + ToastTitle, + ToastDescription, + ToastClose, + ToastAction, +}; diff --git a/contracts/src/bridge/frontend/src/components/ui/toaster.tsx b/contracts/src/bridge/frontend/src/components/ui/toaster.tsx new file mode 100644 index 0000000000..585f8c1efb --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/toaster.tsx @@ -0,0 +1,33 @@ +import { + Toast, + ToastClose, + ToastDescription, + ToastProvider, + ToastTitle, + ToastViewport, +} from "./toast"; +import { useToast } from "./use-toast"; + +export function Toaster() { + const { toasts } = useToast(); + + return ( + + {toasts.map(function ({ id, title, description, action, ...props }) { + return ( + +
+ {title && {title}} + {description && ( + {description} + )} +
+ {action} + +
+ ); + })} + +
+ ); +} diff --git a/contracts/src/bridge/frontend/src/components/ui/tooltip.tsx b/contracts/src/bridge/frontend/src/components/ui/tooltip.tsx new file mode 100644 index 0000000000..2857f2fc57 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/tooltip.tsx @@ -0,0 +1,28 @@ +import * as React from "react"; +import * as TooltipPrimitive from "@radix-ui/react-tooltip"; + +import { cn } from "../../lib/utils"; + +const TooltipProvider = TooltipPrimitive.Provider; + +const Tooltip = TooltipPrimitive.Root; + +const TooltipTrigger = TooltipPrimitive.Trigger; + +const TooltipContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)); +TooltipContent.displayName = TooltipPrimitive.Content.displayName; + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }; diff --git a/contracts/src/bridge/frontend/src/components/ui/use-toast.ts b/contracts/src/bridge/frontend/src/components/ui/use-toast.ts new file mode 100644 index 0000000000..a693743579 --- /dev/null +++ b/contracts/src/bridge/frontend/src/components/ui/use-toast.ts @@ -0,0 +1,196 @@ +// Inspired by react-hot-toast library +import * as React from "react"; + +import type { ToastActionElement, ToastProps } from "./toast"; + +const TOAST_LIMIT = 1; +const TOAST_REMOVE_DELAY = 1000000; + +type ToasterToast = ToastProps & { + id: string; + title?: React.ReactNode; + description?: React.ReactNode; + action?: ToastActionElement; +}; + +const actionTypes = { + ADD_TOAST: "ADD_TOAST", + UPDATE_TOAST: "UPDATE_TOAST", + DISMISS_TOAST: "DISMISS_TOAST", + REMOVE_TOAST: "REMOVE_TOAST", +} as const; + +let count = 0; + +function genId() { + count = (count + 1) % Number.MAX_VALUE; + return count.toString(); +} + +type ActionType = typeof actionTypes; + +type Action = + | { + type: ActionType["ADD_TOAST"]; + toast: ToasterToast; + } + | { + type: ActionType["UPDATE_TOAST"]; + toast: Partial; + } + | { + type: ActionType["DISMISS_TOAST"]; + toastId?: ToasterToast["id"]; + } + | { + type: ActionType["REMOVE_TOAST"]; + toastId?: ToasterToast["id"]; + }; + +interface State { + toasts: ToasterToast[]; +} + +const toastTimeouts = new Map>(); + +const addToRemoveQueue = (toastId: string) => { + if (toastTimeouts.has(toastId)) { + return; + } + + const timeout = setTimeout(() => { + toastTimeouts.delete(toastId); + dispatch({ + type: "REMOVE_TOAST", + toastId: toastId, + }); + }, TOAST_REMOVE_DELAY); + + toastTimeouts.set(toastId, timeout); +}; + +export const reducer = (state: State, action: Action): State => { + switch (action.type) { + case "ADD_TOAST": + return { + ...state, + toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT), + }; + + case "UPDATE_TOAST": + return { + ...state, + toasts: state.toasts.map((t) => + t.id === action.toast.id ? { ...t, ...action.toast } : t + ), + }; + + case "DISMISS_TOAST": { + const { toastId } = action; + + // ! Side effects ! - This could be extracted into a dismissToast() action, + // but I'll keep it here for simplicity + if (toastId) { + addToRemoveQueue(toastId); + } else { + state.toasts.forEach((toast) => { + addToRemoveQueue(toast.id); + }); + } + + return { + ...state, + toasts: state.toasts.map((t) => + t.id === toastId || toastId === undefined + ? { + ...t, + open: false, + } + : t + ), + }; + } + case "REMOVE_TOAST": + if (action.toastId === undefined) { + return { + ...state, + toasts: [], + }; + } + return { + ...state, + toasts: state.toasts.filter((t) => t.id !== action.toastId), + }; + } +}; + +const listeners: Array<(state: State) => void> = []; + +let memoryState: State = { toasts: [] }; + +function dispatch(action: Action) { + memoryState = reducer(memoryState, action); + listeners.forEach((listener) => { + listener(memoryState); + }); +} + +type Toast = Omit; + +function toast({ ...props }: Toast) { + const id = genId(); + + const update = (props: ToasterToast) => + dispatch({ + type: "UPDATE_TOAST", + toast: { ...props, id }, + }); + const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id }); + + dispatch({ + type: "ADD_TOAST", + toast: { + ...props, + id, + open: true, + onOpenChange: (open) => { + if (!open) dismiss(); + }, + }, + }); + + return { + id: id, + dismiss, + update, + }; +} + +function useToast() { + const [state, setState] = React.useState(memoryState); + + React.useEffect(() => { + listeners.push(setState); + return () => { + const index = listeners.indexOf(setState); + if (index > -1) { + listeners.splice(index, 1); + } + }; + }, [state]); + + return { + ...state, + toast, + dismiss: (toastId?: string) => dispatch({ type: "DISMISS_TOAST", toastId }), + }; +} + +const showToast = (variant: ToastProps["variant"], description: string) => { + toast({ + variant, + description, + }); +}; + +export { useToast, showToast, toast }; diff --git a/contracts/src/bridge/frontend/src/hooks/useCopy.ts b/contracts/src/bridge/frontend/src/hooks/useCopy.ts new file mode 100644 index 0000000000..8cf9172791 --- /dev/null +++ b/contracts/src/bridge/frontend/src/hooks/useCopy.ts @@ -0,0 +1,59 @@ +import { showToast } from "@/src/components/ui/use-toast"; +import { ToastType } from "@/types"; +import React from "react"; + +export const useCopy = () => { + const [copied, setCopied] = React.useState(false); + + const copyToClipboard = (text: string, name?: string) => { + copyText(text) + .catch(() => fallbackCopyTextToClipboard(text)) + .then(() => { + showToast(ToastType.DESTRUCTIVE, `${name ? name : "Copied!"}`); + setCopied(true); + }) + .catch(() => { + showToast( + ToastType.DESTRUCTIVE, + `Couldn't copy ${name ? name : "Text"}!!!` + ); + }) + .finally(() => { + setTimeout(() => setCopied(false), 1000); + }); + }; + + return { + copyToClipboard, + copied, + }; +}; + +const copyText = async (text: string) => { + return navigator.clipboard.writeText(text); +}; + +const fallbackCopyTextToClipboard = (text: string) => { + return new Promise((res, rej) => { + var textArea = document.createElement("textarea"); + textArea.value = text; + + // Avoid scrolling to bottom + textArea.style.top = "0"; + textArea.style.left = "0"; + textArea.style.position = "fixed"; + + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + + try { + document.execCommand("copy"); + } catch (err) { + rej(err); + } + + document.body.removeChild(textArea); + res(text); + }); +}; diff --git a/contracts/src/bridge/frontend/src/lib/constants.ts b/contracts/src/bridge/frontend/src/lib/constants.ts new file mode 100644 index 0000000000..a2077dc661 --- /dev/null +++ b/contracts/src/bridge/frontend/src/lib/constants.ts @@ -0,0 +1,38 @@ +export const socialLinks = { + github: "https://github.com/ten-protocol", + discord: "https://discord.gg/QJZ39Den7d", + twitter: "https://twitter.com/tenprotocol", + twitterHandle: "@tenprotocol", +}; + +export const pollingInterval = 5000; +export const maxRetries = 3; +export const pricePollingInterval = 60 * 1000; // 1 minute in milliseconds + +export const RESET_COPIED_TIMEOUT = 2000; + +export const getOptions = (query: { + page?: string | string[]; + size?: string | string[]; +}) => { + const offset = + query.page && query.size + ? (parseInt(query.page as string, 10) - 1) * + parseInt(query.size as string, 10) + : 0; + const options = { + offset: Number.isNaN(offset) ? 0 : offset, + size: Number.isNaN(parseInt(query.size as string, 10)) + ? 10 + : parseInt(query.size as string, 10), + // sort: query.sort ? (query.sort as string) : "blockNumber", + // order: query.order ? (query.order as string) : "desc", + // filter: query.filter ? (query.filter as string) : "", + }; + return options; +}; + +export const l1Bridge = process.env.NEXT_PUBLIC_L1_BRIDGE; +export const l2Bridge = process.env.NEXT_PUBLIC_L2_BRIDGE; + +export const GOOGLE_ANALYTICS_ID = "G-2ZFPEN6PT9"; diff --git a/contracts/src/bridge/frontend/src/lib/siteMetadata.ts b/contracts/src/bridge/frontend/src/lib/siteMetadata.ts new file mode 100644 index 0000000000..de13a1ea29 --- /dev/null +++ b/contracts/src/bridge/frontend/src/lib/siteMetadata.ts @@ -0,0 +1,16 @@ +import { socialLinks } from "./constants"; + +export const siteMetadata = { + companyName: "Tenscan", + metaTitle: + "Ten, a decentralized Layer 2 Rollup protocol designed to hyper-scale and encrypt the Ethereum blockchain.", + description: + "Tenscan allows you to explore and search activities taking place on the Ten Layer 2 blockchain", + siteUrl: "https://ten.xyz", + siteLogo: ``, + siteLogoSquare: ``, + email: "team@obscu.ro", + twitter: socialLinks.twitter, + twitterHandle: socialLinks.twitterHandle, + github: socialLinks.github, +}; diff --git a/contracts/src/bridge/frontend/src/lib/utils.ts b/contracts/src/bridge/frontend/src/lib/utils.ts new file mode 100644 index 0000000000..08cfcd2466 --- /dev/null +++ b/contracts/src/bridge/frontend/src/lib/utils.ts @@ -0,0 +1,22 @@ +import { type ClassValue, clsx } from "clsx"; +import { formatDistanceToNow } from "date-fns"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +export function formatTimeAgo(unixTimestampSeconds: string | number) { + if (!unixTimestampSeconds) { + return "Unknown"; + } + const date = new Date(Number(unixTimestampSeconds) * 1000); + return formatDistanceToNow(date, { addSuffix: true }); +} + +export const { ethereum } = + typeof window !== "undefined" ? window : ({} as any); + +export const downloadMetaMask = () => { + window ? window.open("https://metamask.io/download", "_blank") : null; +}; diff --git a/contracts/src/bridge/frontend/src/routes/index.ts b/contracts/src/bridge/frontend/src/routes/index.ts new file mode 100644 index 0000000000..8f61c8c976 --- /dev/null +++ b/contracts/src/bridge/frontend/src/routes/index.ts @@ -0,0 +1,23 @@ +import { tenGatewayVersion } from "../lib/constants"; +import { NavLink } from "../../types"; + +export const NavLinks: NavLink[] = []; + +export const apiRoutes = { + join: `/${tenGatewayVersion}/join/`, + authenticate: `/${tenGatewayVersion}/authenticate/`, + queryAccountToken: `/${tenGatewayVersion}/query/`, + revoke: `/${tenGatewayVersion}/revoke/`, + version: `/${tenGatewayVersion}/version/`, + + // **** INFO **** + getHealthStatus: `/${tenGatewayVersion}/network-health/`, +}; + +export const requestMethods = { + connectAccounts: "eth_requestAccounts", + switchNetwork: "wallet_switchEthereumChain", + addNetwork: "wallet_addEthereumChain", + getStorageAt: "eth_getStorageAt", + signTypedData: "eth_signTypedData_v4", +}; diff --git a/contracts/src/bridge/frontend/src/routes/router.ts b/contracts/src/bridge/frontend/src/routes/router.ts new file mode 100644 index 0000000000..11bbb1c783 --- /dev/null +++ b/contracts/src/bridge/frontend/src/routes/router.ts @@ -0,0 +1,5 @@ +import { compile } from 'path-to-regexp' + +export const pathToUrl = (path: string, params: object = {}) => { + return compile(path)(params) +} diff --git a/contracts/src/bridge/frontend/types/index.ts b/contracts/src/bridge/frontend/types/index.ts new file mode 100644 index 0000000000..a6fe4d8388 --- /dev/null +++ b/contracts/src/bridge/frontend/types/index.ts @@ -0,0 +1,80 @@ +import React from "react"; + +export interface SeoProps { + title: string; + description: string; + canonicalUrl: string; + ogTwitterImage: string; + ogImageUrl: string; + ogType: string; + children: React.ReactNode; +} + +export interface ErrorType { + statusCode?: number; + showRedirectText?: boolean; + heading?: string; + statusText?: string; + message?: string; + redirectText?: string; + customPageTitle?: string; + isFullWidth?: boolean; + style?: React.CSSProperties; + hasGetInitialPropsRun?: boolean; + err?: Error; + showMessage?: boolean; + showStatusText?: boolean; + isModal?: boolean; + redirectLink?: string; + children?: React.ReactNode; + [key: string]: any; +} + +export interface IconProps { + width?: string; + height?: string; + fill?: string; + stroke?: string; + strokeWidth?: string; + className?: string; + isActive?: boolean; + onClick?: () => void; +} + +export interface GetInfinitePagesInterface { + nextId?: number; + previousId?: number; + data: T; + count: number; +} + +export interface PaginationInterface { + page: number; + perPage: number; + total: number; + totalPages: number; +} + +export interface ResponseDataInterface { + result: T; + item: T; + message: string; + pagination?: PaginationInterface; + success: boolean; +} + +export type NavLink = { + label: string; + href?: string; + isDropdown?: boolean; + isExternal?: boolean; + subNavLinks?: NavLink[]; +}; + +export enum ToastType { + INFO = "info", + SUCCESS = "success", + WARNING = "warning", + DESTRUCTIVE = "destructive", + DEFAULT = "default", +} diff --git a/tools/tenscan/frontend/src/components/overview.tsx b/tools/tenscan/frontend/src/components/overview.tsx deleted file mode 100644 index 4c52428a44..0000000000 --- a/tools/tenscan/frontend/src/components/overview.tsx +++ /dev/null @@ -1,78 +0,0 @@ -"use client" - -import { Bar, BarChart, ResponsiveContainer, XAxis, YAxis } from "recharts" - -const data = [ - { - name: "Jan", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Feb", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Mar", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Apr", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "May", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Jun", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Jul", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Aug", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Sep", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Oct", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Nov", - total: Math.floor(Math.random() * 5000) + 1000, - }, - { - name: "Dec", - total: Math.floor(Math.random() * 5000) + 1000, - }, -] - -export function Overview() { - return ( - - - - `$${value}`} - /> - - - - ) -} diff --git a/tools/tenscan/frontend/src/components/team-switcher.tsx b/tools/tenscan/frontend/src/components/team-switcher.tsx deleted file mode 100644 index e4433b292b..0000000000 --- a/tools/tenscan/frontend/src/components/team-switcher.tsx +++ /dev/null @@ -1,215 +0,0 @@ -"use client"; - -import * as React from "react"; -import { - CaretSortIcon, - CheckIcon, - PlusCircledIcon, -} from "@radix-ui/react-icons"; - -import { cn } from "@/src/lib/utils"; -import { - Avatar, - AvatarFallback, - AvatarImage, -} from "@/src/components/ui/avatar"; -import { Button } from "@/src/components/ui/button"; -import { - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem, - CommandList, - CommandSeparator, -} from "@/src/components/ui/command"; -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/src/components/ui/dialog"; -import { Input } from "@/src/components/ui/input"; -import { Label } from "@/src/components/ui/label"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/src/components/ui/popover"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/src/components/ui/select"; - -const groups = [ - { - label: "Personal Account", - teams: [ - { - label: "Alicia Koch", - value: "personal", - }, - ], - }, - { - label: "Teams", - teams: [ - { - label: "Acme Inc.", - value: "acme-inc", - }, - { - label: "Monsters Inc.", - value: "monsters", - }, - ], - }, -]; - -type Team = (typeof groups)[number]["teams"][number]; - -type PopoverTriggerProps = React.ComponentPropsWithoutRef< - typeof PopoverTrigger ->; - -interface TeamSwitcherProps extends PopoverTriggerProps {} - -export default function TeamSwitcher({ className }: TeamSwitcherProps) { - const [open, setOpen] = React.useState(false); - const [showNewTeamDialog, setShowNewTeamDialog] = React.useState(false); - const [selectedTeam, setSelectedTeam] = React.useState( - groups[0].teams[0] - ); - - return ( - - - - - - - - - - No team found. - {groups.map((group) => ( - - {group.teams.map((team) => ( - { - setSelectedTeam(team); - setOpen(false); - }} - className="text-sm" - > - - - SC - - {team.label} - - - ))} - - ))} - - - - - - { - setOpen(false); - setShowNewTeamDialog(true); - }} - > - - Create Team - - - - - - - - - - Create team - - Add a new team to manage products and customers. - - -
-
-
- - -
-
- - -
-
-
- - - - -
-
- ); -} diff --git a/tools/tenscan/frontend/src/components/user-nav.tsx b/tools/tenscan/frontend/src/components/user-nav.tsx deleted file mode 100644 index 136ab7edf5..0000000000 --- a/tools/tenscan/frontend/src/components/user-nav.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { - Avatar, - AvatarFallback, - AvatarImage, -} from "@/src/components/ui/avatar"; -import { Button } from "@/src/components/ui/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuGroup, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuTrigger, -} from "@/src/components/ui/dropdown-menu"; - -export function UserNav() { - return ( - - - - - - -
-

shadcn

-

- m@example.com -

-
-
- - - - Profile - ⇧⌘P - - - Billing - ⌘B - - - Settings - ⌘S - - New Team - - - - Log out - ⇧⌘Q - -
-
- ); -} From dda7306789a96085a4d4ed522d29aa345d30561d Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Thu, 18 Apr 2024 13:48:17 +0400 Subject: [PATCH 003/136] refactor folder setup --- contracts/src/bridge/frontend/pages/404.tsx | 2 +- .../src/bridge/frontend/pages/_error.tsx | 3 +- .../frontend/src/components/head-seo.tsx | 2 +- .../frontend/src/components/main-nav.tsx | 2 +- .../components/providers/wallet-provider.tsx | 2 +- .../src/bridge/frontend/src/hooks/useCopy.ts | 2 +- .../src/bridge/frontend/src/routes/index.ts | 2 +- .../fonts/DMSans/DMSans-BlackItalic.ttf | Bin .../styles/fonts/DMSans/DMSans-Bold.ttf | Bin .../styles/fonts/DMSans/DMSans-Light.ttf | Bin .../styles/fonts/DMSans/DMSans-Medium.ttf | Bin .../styles/fonts/DMSans/DMSans-Regular.ttf | Bin .../styles/fonts/DMSans/DMSans-SemiBold.ttf | Bin .../styles/fonts/DMSans/stylesheet.css | 0 .../styles/fonts/Quicksand/Quicksand-Bold.ttf | Bin .../fonts/Quicksand/Quicksand-Light.ttf | Bin .../fonts/Quicksand/Quicksand-Medium.ttf | Bin .../fonts/Quicksand/Quicksand-Regular.ttf | Bin .../fonts/Quicksand/Quicksand-SemiBold.ttf | Bin .../styles/fonts/Quicksand/stylesheet.css | 0 .../{ => src}/styles/fonts/README.txt | 0 .../frontend/{ => src}/styles/globals.css | 0 .../bridge/frontend/{ => src}/types/index.ts | 43 ++++++++++++++++++ 23 files changed, 50 insertions(+), 8 deletions(-) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/DMSans/DMSans-BlackItalic.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/DMSans/DMSans-Bold.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/DMSans/DMSans-Light.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/DMSans/DMSans-Medium.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/DMSans/DMSans-Regular.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/DMSans/DMSans-SemiBold.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/DMSans/stylesheet.css (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/Quicksand/Quicksand-Bold.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/Quicksand/Quicksand-Light.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/Quicksand/Quicksand-Medium.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/Quicksand/Quicksand-Regular.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/Quicksand/Quicksand-SemiBold.ttf (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/Quicksand/stylesheet.css (100%) rename contracts/src/bridge/frontend/{ => src}/styles/fonts/README.txt (100%) rename contracts/src/bridge/frontend/{ => src}/styles/globals.css (100%) rename contracts/src/bridge/frontend/{ => src}/types/index.ts (66%) diff --git a/contracts/src/bridge/frontend/pages/404.tsx b/contracts/src/bridge/frontend/pages/404.tsx index 2b7a07c742..41c64b1969 100644 --- a/contracts/src/bridge/frontend/pages/404.tsx +++ b/contracts/src/bridge/frontend/pages/404.tsx @@ -1,4 +1,4 @@ -import { ErrorType } from "@/src/types/interfaces"; +import { ErrorType } from "@/src/types"; import Error from "./_error"; export function Custom404Error({ diff --git a/contracts/src/bridge/frontend/pages/_error.tsx b/contracts/src/bridge/frontend/pages/_error.tsx index 54b7deca69..8c722160fa 100644 --- a/contracts/src/bridge/frontend/pages/_error.tsx +++ b/contracts/src/bridge/frontend/pages/_error.tsx @@ -1,8 +1,7 @@ import React from "react"; import NextErrorComponent from "next/error"; import Link from "next/link"; -import Image from "next/image"; -import { ErrorType } from "@/src/types/interfaces"; +import { ErrorType } from "@/src/types"; function ErrorMessage({ statusText, diff --git a/contracts/src/bridge/frontend/src/components/head-seo.tsx b/contracts/src/bridge/frontend/src/components/head-seo.tsx index 58d574bdc0..bb3c840ead 100644 --- a/contracts/src/bridge/frontend/src/components/head-seo.tsx +++ b/contracts/src/bridge/frontend/src/components/head-seo.tsx @@ -1,6 +1,6 @@ import Head from "next/head"; import { siteMetadata } from "../lib/siteMetadata"; -import { SeoProps } from "@/types"; +import { SeoProps } from "@/src/types"; const HeadSeo = ({ title, diff --git a/contracts/src/bridge/frontend/src/components/main-nav.tsx b/contracts/src/bridge/frontend/src/components/main-nav.tsx index 01e8d1af9d..b97b7ed02f 100644 --- a/contracts/src/bridge/frontend/src/components/main-nav.tsx +++ b/contracts/src/bridge/frontend/src/components/main-nav.tsx @@ -13,7 +13,7 @@ import { } from "./ui/dropdown-menu"; import { ChevronDownIcon } from "@radix-ui/react-icons"; -import { NavLink } from "../../types"; +import { NavLink } from "../types"; import { NavLinks } from "../routes"; const NavItem = ({ navLink }: { navLink: NavLink }) => { diff --git a/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx b/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx index 5ce91ab5f7..f04f82fd18 100644 --- a/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx +++ b/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx @@ -11,7 +11,7 @@ import { fetchVersion, revokeAccountsApi, } from "../../api/gateway"; -import { ToastType } from "@/types"; +import { ToastType } from "@/src/types"; import { authenticateAccountWithTenGatewayEIP712, getToken, diff --git a/contracts/src/bridge/frontend/src/hooks/useCopy.ts b/contracts/src/bridge/frontend/src/hooks/useCopy.ts index 8cf9172791..6e4568d764 100644 --- a/contracts/src/bridge/frontend/src/hooks/useCopy.ts +++ b/contracts/src/bridge/frontend/src/hooks/useCopy.ts @@ -1,5 +1,5 @@ import { showToast } from "@/src/components/ui/use-toast"; -import { ToastType } from "@/types"; +import { ToastType } from "@/src/types"; import React from "react"; export const useCopy = () => { diff --git a/contracts/src/bridge/frontend/src/routes/index.ts b/contracts/src/bridge/frontend/src/routes/index.ts index 8f61c8c976..f4a5edbda0 100644 --- a/contracts/src/bridge/frontend/src/routes/index.ts +++ b/contracts/src/bridge/frontend/src/routes/index.ts @@ -1,5 +1,5 @@ import { tenGatewayVersion } from "../lib/constants"; -import { NavLink } from "../../types"; +import { NavLink } from "../types"; export const NavLinks: NavLink[] = []; diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-BlackItalic.ttf b/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-BlackItalic.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-BlackItalic.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-BlackItalic.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Bold.ttf b/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Bold.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Bold.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Bold.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Light.ttf b/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Light.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Light.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Light.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Medium.ttf b/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Medium.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Medium.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Medium.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Regular.ttf b/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Regular.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Regular.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Regular.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-SemiBold.ttf b/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-SemiBold.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-SemiBold.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-SemiBold.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/DMSans/stylesheet.css b/contracts/src/bridge/frontend/src/styles/fonts/DMSans/stylesheet.css similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/DMSans/stylesheet.css rename to contracts/src/bridge/frontend/src/styles/fonts/DMSans/stylesheet.css diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Bold.ttf b/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Bold.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Bold.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Bold.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Light.ttf b/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Light.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Light.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Light.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Medium.ttf b/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Medium.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Medium.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Medium.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Regular.ttf b/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Regular.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Regular.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Regular.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-SemiBold.ttf b/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-SemiBold.ttf similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-SemiBold.ttf rename to contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-SemiBold.ttf diff --git a/contracts/src/bridge/frontend/styles/fonts/Quicksand/stylesheet.css b/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/stylesheet.css similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/Quicksand/stylesheet.css rename to contracts/src/bridge/frontend/src/styles/fonts/Quicksand/stylesheet.css diff --git a/contracts/src/bridge/frontend/styles/fonts/README.txt b/contracts/src/bridge/frontend/src/styles/fonts/README.txt similarity index 100% rename from contracts/src/bridge/frontend/styles/fonts/README.txt rename to contracts/src/bridge/frontend/src/styles/fonts/README.txt diff --git a/contracts/src/bridge/frontend/styles/globals.css b/contracts/src/bridge/frontend/src/styles/globals.css similarity index 100% rename from contracts/src/bridge/frontend/styles/globals.css rename to contracts/src/bridge/frontend/src/styles/globals.css diff --git a/contracts/src/bridge/frontend/types/index.ts b/contracts/src/bridge/frontend/src/types/index.ts similarity index 66% rename from contracts/src/bridge/frontend/types/index.ts rename to contracts/src/bridge/frontend/src/types/index.ts index a6fe4d8388..bbfee657ee 100644 --- a/contracts/src/bridge/frontend/types/index.ts +++ b/contracts/src/bridge/frontend/src/types/index.ts @@ -78,3 +78,46 @@ export enum ToastType { DESTRUCTIVE = "destructive", DEFAULT = "default", } + +export interface SeoProps { + title: string; + description: string; + canonicalUrl: string; + ogTwitterImage: string; + ogImageUrl: string; + ogType: string; + children: React.ReactNode; +} + +export interface IconProps { + width?: string; + height?: string; + fill?: string; + stroke?: string; + strokeWidth?: string; + className?: string; + isActive?: boolean; + onClick?: () => void; +} + +export interface GetInfinitePagesInterface { + nextId?: number; + previousId?: number; + data: T; + count: number; +} + +export interface PaginationInterface { + page: number; + perPage: number; + total: number; + totalPages: number; +} + +export interface ResponseDataInterface { + result: T; + item: T; + message: string; + pagination?: PaginationInterface; + success: boolean; +} From e8016debe51e999a759227108a708cc7a9942ec5 Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Mon, 22 Apr 2024 17:13:10 +0400 Subject: [PATCH 004/136] Add new font files and update service files --- contracts/src/bridge/frontend/api/general.ts | 14 +++ contracts/src/bridge/frontend/api/index.ts | 90 ++++++++++++++++++ contracts/src/bridge/frontend/pages/_app.tsx | 2 +- .../src/components/health-indicator.tsx | 2 +- .../src/bridge/frontend/src/lib/constants.ts | 2 + .../frontend/src/services/ethService.ts | 6 ++ .../src/services/useGatewayService.ts | 20 ++++ .../fonts/DMSans/DMSans-BlackItalic.ttf | Bin .../styles/fonts/DMSans/DMSans-Bold.ttf | Bin .../styles/fonts/DMSans/DMSans-Light.ttf | Bin .../styles/fonts/DMSans/DMSans-Medium.ttf | Bin .../styles/fonts/DMSans/DMSans-Regular.ttf | Bin .../styles/fonts/DMSans/DMSans-SemiBold.ttf | Bin .../styles/fonts/DMSans/stylesheet.css | 0 .../styles/fonts/Quicksand/Quicksand-Bold.ttf | Bin .../fonts/Quicksand/Quicksand-Light.ttf | Bin .../fonts/Quicksand/Quicksand-Medium.ttf | Bin .../fonts/Quicksand/Quicksand-Regular.ttf | Bin .../fonts/Quicksand/Quicksand-SemiBold.ttf | Bin .../styles/fonts/Quicksand/stylesheet.css | 0 .../{src => }/styles/fonts/README.txt | 0 .../frontend/{src => }/styles/globals.css | 0 22 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 contracts/src/bridge/frontend/api/general.ts create mode 100644 contracts/src/bridge/frontend/api/index.ts create mode 100644 contracts/src/bridge/frontend/src/services/ethService.ts create mode 100644 contracts/src/bridge/frontend/src/services/useGatewayService.ts rename contracts/src/bridge/frontend/{src => }/styles/fonts/DMSans/DMSans-BlackItalic.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/DMSans/DMSans-Bold.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/DMSans/DMSans-Light.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/DMSans/DMSans-Medium.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/DMSans/DMSans-Regular.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/DMSans/DMSans-SemiBold.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/DMSans/stylesheet.css (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/Quicksand/Quicksand-Bold.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/Quicksand/Quicksand-Light.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/Quicksand/Quicksand-Medium.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/Quicksand/Quicksand-Regular.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/Quicksand/Quicksand-SemiBold.ttf (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/Quicksand/stylesheet.css (100%) rename contracts/src/bridge/frontend/{src => }/styles/fonts/README.txt (100%) rename contracts/src/bridge/frontend/{src => }/styles/globals.css (100%) diff --git a/contracts/src/bridge/frontend/api/general.ts b/contracts/src/bridge/frontend/api/general.ts new file mode 100644 index 0000000000..3e505f550c --- /dev/null +++ b/contracts/src/bridge/frontend/api/general.ts @@ -0,0 +1,14 @@ +import { ResponseDataInterface } from "@/src/types"; +import { httpRequest } from "@/api"; +import { pathToUrl } from "@/src/routes/router"; +import { apiRoutes } from "@/src/routes"; + +export const fetchTestnetStatus = async (): Promise< + ResponseDataInterface +> => { + return await httpRequest>({ + method: "post", + url: pathToUrl(apiRoutes.getHealthStatus), + data: { jsonrpc: "2.0", method: "obscuro_health", params: [], id: 1 }, + }); +}; diff --git a/contracts/src/bridge/frontend/api/index.ts b/contracts/src/bridge/frontend/api/index.ts new file mode 100644 index 0000000000..4f9cb5448e --- /dev/null +++ b/contracts/src/bridge/frontend/api/index.ts @@ -0,0 +1,90 @@ +import { apiHost } from "@/src/lib/constants"; +import axios, { AxiosInstance, AxiosRequestConfig } from "axios"; + +type HttpMethod = "get" | "post" | "put" | "patch" | "delete"; + +interface HttpOptions { + method?: HttpMethod; + url: string; + data?: Record; + params?: Record; + headers?: Record; + timeout?: number; + responseType?: + | "json" + | "arraybuffer" + | "blob" + | "document" + | "text" + | undefined; + download?: boolean; + searchParams?: Record; +} + +const baseConfig: AxiosRequestConfig = { + baseURL: apiHost, + timeout: 10000, +}; + +const https: AxiosInstance = axios.create(baseConfig); + +export const httpRequest = async ( + options: HttpOptions, + config: AxiosRequestConfig = {} +): Promise => { + const { + method = "get", + url, + data, + params, + headers, + timeout, + responseType, + searchParams, + } = options; + let query = ""; + if (searchParams) { + const filteredParams = Object.fromEntries( + Object.entries(searchParams).filter( + ([, value]) => value !== undefined && value !== null && value !== "" + ) + ); + if (Object.keys(filteredParams).length) { + query = new URLSearchParams(filteredParams).toString(); + } + } + + const httpConfig: AxiosRequestConfig = { + method, + url: query ? `${url}?${query}` : url, + data, + params, + headers: { ...(headers || {}) }, + timeout, + responseType: responseType, + ...config, + }; + try { + const response = await https(httpConfig); + return response.data as ResponseData; + } catch (error) { + handleHttpError(error); + throw error; + } +}; + +// Centralized error handling function +const handleHttpError = (error: any) => { + // if the error is a server error (status code 5xx) before handling + if (isAxiosError(error) && error.response && error.response.status >= 500) { + console.error("Server error:", error); + } else { + // other errors + console.error("An error occurred:", error); + } +}; + +// Type guard to check if the error is an AxiosError +const isAxiosError = (error: any): error is import("axios").AxiosError => { + return error.isAxiosError === true; +}; diff --git a/contracts/src/bridge/frontend/pages/_app.tsx b/contracts/src/bridge/frontend/pages/_app.tsx index e8c8d12077..0563230a09 100644 --- a/contracts/src/bridge/frontend/pages/_app.tsx +++ b/contracts/src/bridge/frontend/pages/_app.tsx @@ -16,7 +16,7 @@ import { siteMetadata } from "@/src/lib/siteMetadata"; import Script from "next/script"; import { GOOGLE_ANALYTICS_ID } from "@/src/lib/constants"; import { showToast } from "@/src/components/ui/use-toast"; -import { ToastType } from "@/src/types/interfaces"; +import { ToastType } from "@/src/types"; export default function App({ Component, pageProps }: AppProps) { const mutationCache = new MutationCache({ diff --git a/contracts/src/bridge/frontend/src/components/health-indicator.tsx b/contracts/src/bridge/frontend/src/components/health-indicator.tsx index cfc671e76a..3a95e73d1c 100644 --- a/contracts/src/bridge/frontend/src/components/health-indicator.tsx +++ b/contracts/src/bridge/frontend/src/components/health-indicator.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from "react"; import { Badge, badgeVariants } from "./ui/badge"; -import useGatewayService from "@/services/useGatewayService"; +import useGatewayService from "../services/useGatewayService"; import { Skeleton } from "./ui/skeleton"; const HealthIndicator = () => { diff --git a/contracts/src/bridge/frontend/src/lib/constants.ts b/contracts/src/bridge/frontend/src/lib/constants.ts index a2077dc661..6e40d6dd4b 100644 --- a/contracts/src/bridge/frontend/src/lib/constants.ts +++ b/contracts/src/bridge/frontend/src/lib/constants.ts @@ -32,6 +32,8 @@ export const getOptions = (query: { return options; }; +export const apiHost = process.env.NEXT_PUBLIC_API_HOST; + export const l1Bridge = process.env.NEXT_PUBLIC_L1_BRIDGE; export const l2Bridge = process.env.NEXT_PUBLIC_L2_BRIDGE; diff --git a/contracts/src/bridge/frontend/src/services/ethService.ts b/contracts/src/bridge/frontend/src/services/ethService.ts new file mode 100644 index 0000000000..1ad385e6ce --- /dev/null +++ b/contracts/src/bridge/frontend/src/services/ethService.ts @@ -0,0 +1,6 @@ +import { ethers } from "ethers"; +import { showToast } from "../components/ui/use-toast"; + +const ethService = {}; + +export default ethService; diff --git a/contracts/src/bridge/frontend/src/services/useGatewayService.ts b/contracts/src/bridge/frontend/src/services/useGatewayService.ts new file mode 100644 index 0000000000..96eb6e9ab5 --- /dev/null +++ b/contracts/src/bridge/frontend/src/services/useGatewayService.ts @@ -0,0 +1,20 @@ +import { ToastType } from "../types"; +import { showToast } from "../components/ui/use-toast"; +import { fetchTestnetStatus } from "@/api/general"; + +const useGatewayService = () => { + const getTestnetStatus = async () => { + try { + return await fetchTestnetStatus(); + } catch (error) { + showToast(ToastType.DESTRUCTIVE, "Unable to connect to Ten Testnet"); + throw error; + } + }; + + return { + getTestnetStatus, + }; +}; + +export default useGatewayService; diff --git a/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-BlackItalic.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-BlackItalic.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-BlackItalic.ttf rename to contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-BlackItalic.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Bold.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Bold.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Bold.ttf rename to contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Bold.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Light.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Light.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Light.ttf rename to contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Light.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Medium.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Medium.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Medium.ttf rename to contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Medium.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Regular.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Regular.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-Regular.ttf rename to contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-Regular.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-SemiBold.ttf b/contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-SemiBold.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/DMSans/DMSans-SemiBold.ttf rename to contracts/src/bridge/frontend/styles/fonts/DMSans/DMSans-SemiBold.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/DMSans/stylesheet.css b/contracts/src/bridge/frontend/styles/fonts/DMSans/stylesheet.css similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/DMSans/stylesheet.css rename to contracts/src/bridge/frontend/styles/fonts/DMSans/stylesheet.css diff --git a/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Bold.ttf b/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Bold.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Bold.ttf rename to contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Bold.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Light.ttf b/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Light.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Light.ttf rename to contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Light.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Medium.ttf b/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Medium.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Medium.ttf rename to contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Medium.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Regular.ttf b/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Regular.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-Regular.ttf rename to contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-Regular.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-SemiBold.ttf b/contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-SemiBold.ttf similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/Quicksand/Quicksand-SemiBold.ttf rename to contracts/src/bridge/frontend/styles/fonts/Quicksand/Quicksand-SemiBold.ttf diff --git a/contracts/src/bridge/frontend/src/styles/fonts/Quicksand/stylesheet.css b/contracts/src/bridge/frontend/styles/fonts/Quicksand/stylesheet.css similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/Quicksand/stylesheet.css rename to contracts/src/bridge/frontend/styles/fonts/Quicksand/stylesheet.css diff --git a/contracts/src/bridge/frontend/src/styles/fonts/README.txt b/contracts/src/bridge/frontend/styles/fonts/README.txt similarity index 100% rename from contracts/src/bridge/frontend/src/styles/fonts/README.txt rename to contracts/src/bridge/frontend/styles/fonts/README.txt diff --git a/contracts/src/bridge/frontend/src/styles/globals.css b/contracts/src/bridge/frontend/styles/globals.css similarity index 100% rename from contracts/src/bridge/frontend/src/styles/globals.css rename to contracts/src/bridge/frontend/styles/globals.css From 8dd05009bd23816643187752312ad3f9d57db421 Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Tue, 23 Apr 2024 13:10:28 +0400 Subject: [PATCH 005/136] Refactor wallet provider component --- .../components/providers/wallet-provider.tsx | 200 +----------------- .../src/bridge/frontend/src/types/index.ts | 14 ++ 2 files changed, 17 insertions(+), 197 deletions(-) diff --git a/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx b/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx index f04f82fd18..ca4cf2ddb7 100644 --- a/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx +++ b/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx @@ -1,23 +1,8 @@ -import { createContext, useContext, useEffect, useState } from "react"; +import { createContext, useContext } from "react"; import { WalletConnectionContextType, WalletConnectionProviderProps, - Account, -} from "../../types/interfaces/WalletInterfaces"; -import { showToast } from "../ui/use-toast"; -import { ethereum, isValidTokenFormat } from "../../lib/utils"; -import { - accountIsAuthenticated, - fetchVersion, - revokeAccountsApi, -} from "../../api/gateway"; -import { ToastType } from "@/src/types"; -import { - authenticateAccountWithTenGatewayEIP712, - getToken, -} from "@/api/ethRequests"; -import { ethers } from "ethers"; -import ethService from "@/services/ethService"; +} from "../../types"; const WalletConnectionContext = createContext(null); @@ -36,186 +21,7 @@ export const useWalletConnection = (): WalletConnectionContextType => { export const WalletConnectionProvider = ({ children, }: WalletConnectionProviderProps) => { - const [walletConnected, setWalletConnected] = useState(false); - const [token, setToken] = useState(""); - const [version, setVersion] = useState(null); - const [loading, setLoading] = useState(true); - const [accounts, setAccounts] = useState(null); - const [provider, setProvider] = useState({} as ethers.providers.Web3Provider); - - const initialize = async ( - providerInstance: ethers.providers.Web3Provider - ) => { - if (!providerInstance) { - return showToast( - ToastType.INFO, - "Provider is required to initialize wallet connection." - ); - } - - try { - await ethService.checkIfMetamaskIsLoaded(providerInstance); - - const fetchedToken = await getToken(providerInstance); - setToken(fetchedToken); - - const status = await ethService.isUserConnectedToTenChain(fetchedToken); - setWalletConnected(status); - - const accounts = await ethService.getAccounts(providerInstance); - setAccounts(accounts || null); - setVersion(await fetchVersion()); - } catch (error) { - showToast( - ToastType.DESTRUCTIVE, - error instanceof Error - ? error.message - : "Error initializing wallet connection. Please refresh the page." - ); - } finally { - setLoading(false); - } - }; - - const connectAccount = async (account: string) => { - try { - if (!token) { - showToast( - ToastType.INFO, - "Encryption token is required to connect an account." - ); - return; - } - await authenticateAccountWithTenGatewayEIP712(token, account); - const { status } = await accountIsAuthenticated(token, account); - if (status) { - showToast(ToastType.SUCCESS, "Account authenticated!"); - setAccounts((accounts) => { - if (!accounts) { - return null; - } - return accounts.map((acc) => { - if (acc.name === account) { - return { - ...acc, - connected: status, - }; - } - return acc; - }); - }); - } else { - showToast(ToastType.DESTRUCTIVE, "Account authentication failed."); - } - } catch (error: any) { - showToast(ToastType.DESTRUCTIVE, "Account authentication failed."); - } - }; - - const revokeAccounts = async () => { - if (!token) { - showToast( - ToastType.INFO, - "Encryption token is required to revoke accounts" - ); - return; - } - const revokeResponse = await revokeAccountsApi(token); - if (revokeResponse === ToastType.SUCCESS) { - showToast(ToastType.DESTRUCTIVE, "Accounts revoked!"); - setAccounts(null); - setWalletConnected(false); - setToken(""); - } - }; - - const fetchUserAccounts = async () => { - if (!provider) { - showToast( - ToastType.INFO, - "Provider is required to fetch user accounts. Please connect your wallet." - ); - return; - } - const token = await getToken(provider); - - if (!isValidTokenFormat(token)) { - showToast( - ToastType.INFO, - "Invalid token format. Please refresh the page." - ); - setAccounts([]); - setWalletConnected(false); - return; - } - - setToken(token); - - try { - const accounts = await ethService.getAccounts(provider); - let updatedAccounts: Account[] = []; - - if (!accounts || accounts.length === 0) { - setAccounts([]); - } else { - updatedAccounts = await Promise.all( - accounts!.map(async (account) => { - await ethService.authenticateWithGateway(token, account.name); - const { status } = await accountIsAuthenticated( - token, - account.name - ); - return { - ...account, - connected: status, - }; - }) - ); - showToast(ToastType.INFO, "Accounts authenticated with gateway!"); - setAccounts(updatedAccounts); - } - } catch (error: any) { - showToast( - ToastType.DESTRUCTIVE, - `Error fetching user accounts: ${error?.message}` - ); - } finally { - setWalletConnected(true); - setLoading(false); - } - }; - - useEffect(() => { - if (ethereum && ethereum.isMetaMask) { - const providerInstance = new ethers.providers.Web3Provider(ethereum); - setProvider(providerInstance); - initialize(providerInstance); - - ethereum.on("accountsChanged", fetchUserAccounts); - } else { - setLoading(false); - } - - return () => { - if (ethereum && ethereum.removeListener) { - ethereum.removeListener("accountsChanged", fetchUserAccounts); - } - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const walletConnectionContextValue: WalletConnectionContextType = { - walletConnected, - accounts, - token, - connectAccount, - version, - revokeAccounts, - loading, - provider, - fetchUserAccounts, - setLoading, - }; + const walletConnectionContextValue: WalletConnectionContextType = {}; return ( diff --git a/contracts/src/bridge/frontend/src/types/index.ts b/contracts/src/bridge/frontend/src/types/index.ts index bbfee657ee..ccbafc0d48 100644 --- a/contracts/src/bridge/frontend/src/types/index.ts +++ b/contracts/src/bridge/frontend/src/types/index.ts @@ -121,3 +121,17 @@ export interface ResponseDataInterface { pagination?: PaginationInterface; success: boolean; } + +export interface WalletConnectionContextType {} + +export interface Props { + children: React.ReactNode; +} + +export interface State { + hasError: boolean; +} + +export interface WalletConnectionProviderProps { + children: React.ReactNode; +} From 34ae0026143e0929e54422802fdbab76c5eca5b3 Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Fri, 26 Apr 2024 21:57:16 +0400 Subject: [PATCH 006/136] wip: bridge dashboard --- .../public/assets/images/black_logotype.png | Bin 0 -> 14589 bytes .../frontend/public/assets/images/clock.png | Bin 0 -> 10767 bytes .../frontend/public/assets/images/ten.svg | 8 + .../public/assets/images/white_logotype.png | Bin 0 -> 13581 bytes .../bridge/frontend/public/docs/privacy.json | 105 ++++++++ .../bridge/frontend/public/docs/terms.json | 114 ++++++++ .../src/bridge/frontend/public/favicon.ico | Bin 0 -> 1260 bytes .../src/components/layouts/header.tsx | 10 +- .../frontend/src/components/main-nav.tsx | 1 + .../src/components/modules/bridge/index.tsx | 246 +++++++++--------- .../modules/common/connect-wallet.tsx | 35 ++- .../src/bridge/frontend/src/routes/index.ts | 29 ++- .../src/services/useGatewayService.ts | 2 +- .../src/bridge/frontend/src/types/index.ts | 1 + 14 files changed, 388 insertions(+), 163 deletions(-) create mode 100644 contracts/src/bridge/frontend/public/assets/images/black_logotype.png create mode 100644 contracts/src/bridge/frontend/public/assets/images/clock.png create mode 100644 contracts/src/bridge/frontend/public/assets/images/ten.svg create mode 100644 contracts/src/bridge/frontend/public/assets/images/white_logotype.png create mode 100644 contracts/src/bridge/frontend/public/docs/privacy.json create mode 100644 contracts/src/bridge/frontend/public/docs/terms.json create mode 100644 contracts/src/bridge/frontend/public/favicon.ico diff --git a/contracts/src/bridge/frontend/public/assets/images/black_logotype.png b/contracts/src/bridge/frontend/public/assets/images/black_logotype.png new file mode 100644 index 0000000000000000000000000000000000000000..f086b796a2b4fb945aea9e255af3e64ee336b53d GIT binary patch literal 14589 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 T@0uTkL_2SetMKe>pB?`L?p!5C literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/public/assets/images/clock.png b/contracts/src/bridge/frontend/public/assets/images/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..68de17ce0b49ebc7ddae2b28c3ea3bfb3eb67064 GIT binary patch literal 10767 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 IVkV*g4`KMEZU6uP literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/public/assets/images/ten.svg b/contracts/src/bridge/frontend/public/assets/images/ten.svg new file mode 100644 index 0000000000..67e8f68278 --- /dev/null +++ b/contracts/src/bridge/frontend/public/assets/images/ten.svg @@ -0,0 +1,8 @@ + + + +TEN. + diff --git a/contracts/src/bridge/frontend/public/assets/images/white_logotype.png b/contracts/src/bridge/frontend/public/assets/images/white_logotype.png new file mode 100644 index 0000000000000000000000000000000000000000..f3c47d13f97b761b56492611fc2ffcb2af358853 GIT binary patch literal 13581 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 literal 0 HcmV?d00001 diff --git a/contracts/src/bridge/frontend/public/docs/privacy.json b/contracts/src/bridge/frontend/public/docs/privacy.json new file mode 100644 index 0000000000..bcdd41c9f1 --- /dev/null +++ b/contracts/src/bridge/frontend/public/docs/privacy.json @@ -0,0 +1,105 @@ +{ + "title": "Privacy Policy", + "subHeading": "Last Updated: November 28, 2023", + "content": [ + { + "heading": "1. LEGAL INFORMATION", + "content": [ + "This Privacy Policy informs how Obscuro Limited (hereinafter also – ”Controller”, “Owner”,” we”, “us” or “our”) processes information and personal data on the website https://www.ten.xyz/ as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (hereinafter – Platform).", + "We strive to protect all personal information that we receive or generate. This Privacy Policy (“Privacy Policy” or “Policy”) explains our data protection practices for our visitors. This Privacy Policy also explains the nature of the personal information we collect, the means by which we collect it, the purposes for which we collect it, and how we use, process, protect, and share it.", + "Please read this entire Privacy Policy before submitting information to this Platform. By accessing or using this Platform for any purpose and by submitting any of your personal information to us, you are consenting to the terms and conditions of this Policy and to our Terms of Service posted on this Platform. If you disagree with any part of this Privacy Policy or the Terms of Service, please do not use this Platform or any of our other services and do not share any personal information with us.", + "Data Controller: Obscuro Limited, company incorporated and registered in England and Wales under company number 13873741 with a registered office at Ground Floor, Cromwell House, 15 Andover Road, Winchester, SO23 7BT, UK.", + "Contact information: e-mail address: terms@obscu.ro" + ] + }, + { + "heading": "2. DEFINITIONS AND LEGAL REFERENCES", + "content": [ + "Personal Data (or Data) - Any information that directly, indirectly, or in connection with other information — including a personal identification number — allows for the identification or identifiability of a natural person.", + "Usage Data - Information collected automatically through this Platform (or third-party services employed in this Platform), which can include: the IP addresses or domain names of the computers utilised by the Users who use this Platform, the URI addresses (Uniform Resource Identifier), the time of the request, the method utilized to submit the request to the server, the size of the file received in response, the numerical code indicating the status of the server's answer (successful outcome, error, etc.), the country of origin, the features of the browser and the operating system utilized by the User, the various time details per visit (e.g., the time spent on each page within the Platform) and the details about the path followed within the Platform with special reference to the sequence of pages visited, and other parameters about the device operating system and/or the User's IT environment.", + "User - The individual using this Platform who, unless otherwise specified, coincides with the Data Subject.", + "Data Subject - The natural person to whom the Personal Data refers.", + "Data Processor (or Data Supervisor) - The natural or legal person, public authority, agency or other body which processes Personal Data on behalf of the Controller, as described in this privacy policy.", + "Data Controller (or Owner) - The natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of Personal Data, including the security measures concerning the operation and use of this Platform. The Data Controller, unless otherwise specified, is the Owner of this Platform.", + "This Platform - The means by which the Personal Data of the User is collected and processed.", + "Service - The service provided by this Platform as described in the relative terms and on this Platform." + ] + }, + { + "heading": "3. COLLECTING OF DATA", + "content": [ + "This section explains generally the sources from which, and the means by which, we collect and process personal information.", + "
  • Communicating with us. If you contact us in relation to any of the Services (via email, telephone, post or otherwise), We may collect and retain your contact details and your communication for the purpose of handling your query and keeping records of communications.
  • Submit personal information. When you submit personal information to us voluntarily, including when you communicate with us, pay for our services, or use any of our Services.
  • Visit our Platform. When you visit our Platform, we may collect location and other information from the internet browser you are using;
  • Technology technical information. When your communications with us provide us with certain technical information, such as internet protocol (IP) address, browser type, time zone setting and location, device operating system, and other technologies you may use to access our Platform or otherwise communicate with us.
  • Social media platforms (such as Discord, Twitter (X)). We receive information when you use your social media account while interacting with us on our Discord or Twitter and use our Services.
" + ] + }, + { + "heading": "4. COLLECTED DATA", + "content": [ + "We collect the following data:", + "
  • Identify and contact information, including your name, postal address, email address and phone number, and any other information you provide to prove you are eligible to use our Services;
  • Communications information, including records of your communications with us and our customer service team (such as records of emails, chat and in-app communications and voice recordings)
  • Social network information, including your interactions with us (such as messages) or our content (such as your likes) on social media (such as Discord or Twitter);
  • Technical information, including device identifiers, IP address, and where you have enabled location services, your GPS location, as well as information on how you use our Platform. This information is mainly collected through cookies and includes: your visits to our platform, the links you click on, through and from our site (including date and time), the services you view or search for, page response times, download errors, length of visits to certain pages, page interaction information (such as scrolling and clicks), and methods used to browse away from the page; technical information, including the internet protocol (IP) address used to connect your computer to the internet, your log-in information, the browser type and version, the time-zone setting, the operating system and platform, the type of device you use, a unique device identifier (for example, your device identifier, number, or the mobile phone number used by the device), mobile network information, your mobile operating system, the type of mobile browser you use; information stored on your device, including if you give us access to contact information from your address book, photos, videos or other digital content, check-ins. We collect this information from you, when you provide it to us directly or when we collect it through our Platform using technical means, such as cookies.
", + "We collect the following categories of Personal data for the following activities:", + "
ActivityCategories of Personal data
Visiting the Platform
  • Browsing Data
  • Technical Information
Contacting Obscuro Limited support teams
  • Identification Data
  • Contact Data
  • Content of your request
Allowing the visitors and Users to exercise their data protection rights
  • Identification Data
  • Contact Data
  • Content of the request
  • Data necessary to reply to the request addressed to Obscuro Limited
Complying with legal requests or manage litigation
  • Data necessary to prove Obscuro Limited compliance to its obligations and/or manage legal proceedings
Provide our Services on Platform
  • Identification Data
  • Contact Data
Sending you marketing communications or newsletter
  • Contact Data
" + ] + }, + { + "heading": "5. PURPOSE OF DATA COLLECTION", + "content": [ + "We use the personal information that we collect or receive from our Users for the purposes described in this Policy and for other business purposes allowed by law, including the development, delivery, and performance of our services, sharing with our affiliates for related business purposes, and as follows:", + "
  • To provide and maintain our Service, including to monitor the usage of our Service.
  • For the performance of a contract: the development, compliance and undertaking of the contract for the Services or of any other contract with us through the Service.
  • To contact you: To contact you by email, telephone calls, SMS, or other equivalent forms of electronic communication.
  • To manage your requests: To attend and manage your requests to us.
  • To respond to your requests and questions, resolve disputes, investigate and address your concerns, and monitor and improve our responses;
  • For testing, research, analysis, and a product and service development, including to improve our Platform and services;
  • To respond to law enforcement requests and as required by applicable laws, court orders, or governmental regulations;
  • For other purposes: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, marketing and your experience.
", + "We process personal data on the following legal basis for the following purposes:", + "
PurposeLegal Basis
If you communicate with us (for example, if you email or call us), we will use your information for dealing with your queries, training and customer service purposes.Contractual necessity: where you provide information that is necessary for us to fulfil our contract with you and provide our Services. Our legitimate interests are to handle your queries and provide you with the requested information, ensure high customer service quality and to train staff in responding to such requests.
To send you marketing communications about our Services (and the products or services of third parties that we make available through our Services), or to send you our newsletter when you sign up to receive this and to monitor whether you open our emails and/or click on URLs in our emails.We rely on your consent, where this is required by law. Otherwise, we rely on our legitimate interest to keep you informed of products and services on our platforms, when we are allowed by law to do so.
To carry out market research and create marketing profiles about our users and understand their preferences in relation to our Services (including the products and services available through these).Our legitimate interest to carry out marketing activities.
To display our advertisements to you on other platforms, such as social media platforms or to display on our website and app advertisements which we think you might like.Your consent, where we obtain this information by using cookies or where otherwise required by law. Otherwise, we rely on our and third parties’ legitimate interests to carry out marketing activities and inform you of products and services we think you might like.
To compile statistics and analysis about the use of our Services and use such statistics to enable us to provide a better service, features, and functionality to you and other users. Your consent, where we obtain this information by using cookies.Our legitimate interests (where consent is not required by law) so as to ensure the smooth and effective functioning of our Services, to make sound business decisions about our products and services and to design, inform and deploy our business strategies.
To respond to legitimate requests for the disclosure of information, made by public authorities, law enforcement or government bodies or under a court order.Legal requirement, to the extent we are obliged under law to process such requests. Our legitimate interests to assist legitimate investigations carried out by official authorities.
To respond to complaints, to protect our legal rights and to establish, exercise or defend legal claims relating to our platforms and/or our products and services.Our legitimate interests to protect our legal rights.
For tax, accounting, record keeping and audit purposes.Legal requirements, to the extent the law requires that we use your information (for example, to comply with our tax obligations).
", + "Wherever we rely on consent, you will always be able to withdraw that consent at any time, although we may have other legal grounds for processing your data for other purposes, such as those set out above. You have an absolute right to opt-out of direct marketing, or profiling we carry out for direct marketing purposes, at any time. You can do this by clicking on the unsubscribe link in the relevant marketing communication or emailing us at - terms@obscu.ro.", + "We do not use your personal information to take automated decisions about you which have a legal or similarly significant effect on you." + ] + }, + { + "heading": "6. METHODS OF DATA PROCESSING", + "content": [ + "Obscuro Limited takes appropriate security measures to prevent unauthorized access, disclosure, modification, or unauthorized destruction of the Data.", + "The Data processing is carried out using computers and/or IT enabled tools, following organizational procedures and modes strictly related to the purposes indicated. In addition to Obscuro Limited, in some cases, the Data may be accessible to certain types of persons in charge, involved with the operation of this Platform (administration, sales, marketing, legal, system administration) or external parties (such as third-party technical service providers, mail carriers, hosting providers, IT companies, communications agencies) appointed, if necessary, as Data Processors by Obscuro Limited. The updated list of these parties may be requested from the Owner at any time." + ] + }, + { + "heading": "7. TRANSFERS AND SHARING OF DATA", + "content": [ + "Depending on the User's location, data transfers may involve transferring the User's Data to a country other than their own. If any such transfer takes place, Users can find out more by checking the relevant sections of this document or inquire with Obscuro Limited using the information provided in the contact section.", + "Where we need to transfer your personal data outside the European Economic Area (“EEA”), the United Kingdom or Switzerland, and where this is to a stakeholder or vendor in a country that is not subject to an adequacy decision by the EU Commission, data is adequately protected by EU Commission approved standard contractual clauses or a vendor’s Processor Binding Corporate Rules.", + "Obscuro Limited may store, process, and/or transfer personal data to countries outside of the European Economic Area (EEA) (including countries where the European Commission has not made a decision of an adequate level of protection of personal data), but in these cases Obscuro Limited will ask for specific consent regarding these data transfers.", + "In this case, Obscuro Limited processes your data in United Kingdom.", + "We may share your personal data with following recipients:", + "
  • Internal recipients – your Personal data will only be disclosed to authorised employees that require access to fulfil their obligations (e.g. support teams, developers, etc.). Our employees are specifically trained and made aware of the sensitivity of your Personal data and the requirements necessary to ensure the protection of your right to privacy.
  • Judicial, administrative and other public authorities – Obscuro Limited may have to share or disclose some of your Personal data if it is required to do so by the law, by a request meaning from a competent authority., to comply with a court order, to obtain legal remedies or defend Obscuro Limited’s rights, to contribute with investigations (e.g. fraud, identity theft, etc.).
  • Service providers - We share personal data with third-party service providers, who will process it on our behalf for the purposes identified above. These parties will use your information on our instructions, only in order to provide us with their services. In particular, we use third-party providers of website hosting, maintenance, IT services, mail carriers, customer support, communications and marketing services, identity checking.
  • Social media networks and advertisers - subject to your marketing preferences, we share information with social media networks, such as Twitter, Discord, and advertisers to present our ads to you on other platforms.
  • Business advisers - We share information with our legal advisers, accountants, business consultants, insurers and other business advisers, to the extent it is necessary for them to provide us with their services.
" + ] + }, + { + "heading": "8. RETENTION TIME", + "content": [ + "We will store your personal information for as long as it is required for us to fulfil the purposes for which we have collected it, as described in this Policy, and for such further period that is necessary to comply with our legal and regulatory obligations, to exercise our legal rights and to protect our business from legal claims. Therefore:", + "
  • Personal Data collected for purposes related to the performance of a contract between the Owner and the User shall be retained until such contract has been fully performed.
  • Personal Data collected for the purposes of the Owner’s legitimate interests shall be retained as long as needed to fulfil such purposes. Users may find specific information regarding the legitimate interests pursued by the Owner within the relevant sections of this document or by contacting the Owner.
  • Obscuro Limited may be allowed to retain Personal Data for a longer period whenever the User has given consent to such processing, as long as such consent is not withdrawn. Furthermore, the Owner may be obliged to retain Personal Data for a longer period whenever required to do so for the performance of a legal obligation or upon order of an authority.
  • Once the retention period expires, Personal Data shall be deleted. Therefore, the right of access, the right to erasure, the right to rectification and the right to data portability cannot be enforced after expiration of the retention period.
", + "Obscuro Limited may be allowed to retain Personal Data for a longer period whenever the User has given consent to such processing, as long as such consent is not withdrawn. Furthermore, the Owner may be obliged to retain Personal Data for a longer period whenever required to do so for the performance of a legal obligation or upon order of an authority.", + "Once the retention period expires, Personal Data shall be deleted. Therefore, the right of access, the right to erasure, the right to rectification and the right to data portability cannot be enforced after expiration of the retention period." + ] + }, + { + "heading": "9. RIGHTS UNDER GDPR", + "content": [ + "Users may exercise certain rights regarding their Data processed by Obscuro Limited. In particular, Users have the right to do the following:", + "
  • Withdraw consent at any time. Users have the right to withdraw consent where they have previously given their consent to the processing of their Personal Data.
  • Object to processing of Data. Users have the right to object to the processing of their Data if the processing is carried out on a legal basis other than consent. Further details are provided in the dedicated section below.
  • Access Data. Users have the right to learn if Data is being processed by the Owner, obtain disclosure regarding certain aspects of the processing and obtain a copy of the Data undergoing processing.
  • Verify and seek rectification. Users have the right to verify the accuracy of their Data and ask for it to be updated or corrected.
  • Restrict the processing of their Data. Users have the right, under certain circumstances, to restrict the processing of their Data. In this case, the Owner will not process their Data for any purpose other than storing it.
  • Have their Personal Data deleted or otherwise removed. Users have the right, under certain circumstances, to obtain the erasure of their Data from the Owner.
  • Receive their Data and have it transferred to another controller. Users have the right to receive their Data in a structured, commonly used and machine readable format and, if technically feasible, to have it transmitted to another controller without any hindrance. This provision is applicable provided that the Data is processed by automated means and that the processing is based on the User's consent, on a contract which the User is part of or on pre-contractual obligations thereof.
  • Lodge a complaint. If you have unresolved concerns, you have the right to complain to the data protection authority, which in the UK is the Information Commissioner’s Office.
", + "Any requests to exercise User rights can be directed to Obscuro Limited through the contact details provided in this document. These requests can be exercised free of charge and will be addressed by the Owner as early as possible and always within one month.", + "If user has any issues regarding data processing done by Obscuro Limited, user can send request to the Information Commissioner’s Office." + ] + }, + { + "heading": "ADDITIONAL INFORMATION ABOUT DATA COLLECTION AND PROCESSING", + "content": [ + "
  • Legal action. The User's Personal Data may be used for legal purposes by Obscuro Limited in Court or in the stages leading to possible legal action arising from improper use of this Platform or the related Services.
  • System logs and maintenance.For operation and maintenance purposes, this Platform and any third-party services may collect files that record interaction with this Platform (System logs) use other Personal Data (such as the IP Address) for this purpose.
  • Information not contained in this policy.More details concerning the collection or processing of Personal Data may be requested from Obscuro Limited at any time. Please see the contact information at the beginning of this document.
  • Visiting Third-Party Platforms.Our Platform may contain links or references to third party websites. These websites are outside of our control, and the privacy policies of these sites may differ from our own. Please be aware that we have no control over these third-party websites and our Privacy Policy does not apply to such websites. We encourage you to check the terms of use and privacy policies of such sites before disclosing any personal information via such sites. The privacy policy of the third party site will govern how information collected from you is used by the owner of the website. You can always know what Platform you are on by checking the Uniform Resource Locator (URL) in the location bar within your browser.
" + ] + }, + { + "heading": "CHANGES TO THIS PRIVACY POLICY", + "content": [ + "Obscuro Limited reserves the right to make changes to this privacy policy at any time by notifying its Users on this page and possibly within this Platform and/or - as far as technically and legally feasible - sending a notice to Users via any contact information available to Obscuro Limited. It is strongly recommended to check this page often, referring to the date of the last modification listed at the bottom.", + "Should the changes affect processing activities performed on the basis of the User’s consent, Obscuro Limited shall collect new consent from the User, where required." + ] + } + ] +} diff --git a/contracts/src/bridge/frontend/public/docs/terms.json b/contracts/src/bridge/frontend/public/docs/terms.json new file mode 100644 index 0000000000..ff0769351e --- /dev/null +++ b/contracts/src/bridge/frontend/public/docs/terms.json @@ -0,0 +1,114 @@ +{ + "title": "Terms of Service", + "subHeading": "Last Updated, November 22, 2023", + "content": [ + { + "heading": "1. GENERAL INFORMATION", + "content": [ + "Obscuro Limited (“our,” “us,” “we” or “Obscuro Labs“), a private limited company incorporated and registered in England and Wales under company number 13873741 with a registered office at Ground Floor, Cromwell House, 15 Andover Road, Winchester, SO23 7BT, UK, welcomes you. These Terms of Service (\"Terms\") govern your access to and use of the Website, Ten Testnet services and software (collectively, the \"Services\"). By using our Services, you agree to these Terms.", + "These Terms set forth the legal terms and conditions governing your Testnet use. These Terms, along with any of our other policies and rules referenced herein, comprise the entire understanding between you and Obscuro Labs regarding the Services and supersede all other agreements, understandings, or representations with respect to such subject matter, either written or oral. If you do not agree to these Terms, do not use our Services.", + "By using our Services, you confirm that you accept these Terms and that you agree to be bound by and comply with these Terms, and you represent and warrant that you have the willingness, right, authority, and capacity to enter into these Terms (on behalf of yourself or the entity that you represent). If you do not agree to all of these Terms in their entirety, you may not use the Services or any other related site in any manner.", + "You must be 18 years of age or older to use the Services. By using the Services, you confirm, represent and warrant that you meet these requirements." + ] + }, + { + "heading": "2. DISCLAIMER", + "content": [ + "You expressly acknowledge that your use of the Services is provided to you on an “as is” and “as available” basis without any warranty under these Terms and to the extent allowed by applicable law, all express or implied conditions, representations and warranties including without limitation, any implied warranties or conditions of merchantability, fitness for a particular purpose, satisfactory quality, or arising from a course of dealing usage or trade practice, or warranty of non-infringement are disclaimed.", + "In instances where we discuss future ideas or potential developments, we are expressing our vision and aspirations. However, this should not be interpreted as a binding commitment or a guarantee that these concepts will materialise, that we will implement any of them, or that they will prove effective.", + "You must obtain professional or specialist advice before taking, or refraining from, any action on the basis of the content on our Services or Terms." + ] + }, + { + "heading": "3. PRIVACY", + "content": [ + "Your privacy is important to us. In using the Services, you may be required to provide certain personal information. We will use this information solely for the purpose of facilitating your use of the Services, including but not limited to identity verification, compliance with legal obligations, and improving the Services. We will not share your personal data with third parties, except as required by law or for the purpose of providing the Services. Your data will be stored securely and will be deleted when no longer necessary for the provision of the Services or as required by applicable law." + ] + }, + { + "heading": "4. INTELLECTUAL PROPERTY RIGHTS; FEEDBACK", + "content": [ + "All the copyright and other intellectual property rights in our Services are reserved.", + "Neither these Terms nor your access to the Services transfers to you or any third party any rights, title, or interest to such intellectual property rights. You agree not to take any action(s) inconsistent with such ownership interests. We reserve all rights in connection with the Services and its content, including, without limitation, the exclusive right to create derivative works.", + "Obscuro Labs welcomes feedback, comments and suggestions for improvements to the Testnet and related technologies of the Services (“Feedback”). You grant to Obscuro Labs a non-exclusive, transferable, worldwide, perpetual, irrevocable, fully-paid, royalty-free license, with the right to sublicense, under any and all intellectual property rights that you own or control to use, copy, modify, create derivative works based upon and otherwise exploit the Feedback for any purpose, in any form, format, media or media channels now known or later developed or discovered." + ] + }, + { + "heading": "5. THIRD-PARTY MATERIALS", + "content": [ + "A third-party product site link is not an indication that we endorse such third-party products or are in a manner affiliated with them. Any time we link to, quote, or otherwise reference any third-party products or reproduce or incorporate their information, content, or material, it is solely for informational purposes. These third-party products are owned, operated, and controlled by third parties. We strongly advise you to read the terms and conditions and privacy policies of any third-party products you visit and/or use. When you use or rely on any third-party products, you do so at your own risk. You understand that you are solely responsible for any fees or costs associated with using third-party products and that, unless stated herein, the Terms do not otherwise apply to your dealings or relationships with any third parties or third-party products, and we assume no obligations or liability and make no representations or warranties regarding such third-party products." + ] + }, + { + "heading": "6. RESTRICTIONS ON THE USE OF THE SERVICES", + "content": [ + "You may only use the Services for lawful purposes and in compliance with these Terms. You agree not to use the Website and Services to do any of the following:", + "
  • violate any applicable law or regulation, including, without limitation, any applicable sanctions laws, export control laws, securities laws, anti-money laundering laws, privacy laws;
  • use any device, software or routine that interferes with or compromises the integrity, security, or proper functioning of our Services;
  • damage or disrupt any parts of the Services, the server(s) on which the Services run or any server, computer, or database connected to the Services;
  • further or promote any criminal activity or enterprise or provide instructional information about illegal activities; or
  • encourage or enable any other individual to do any of the foregoing.
" + ] + }, + { + "heading": "7. INDEMNITY", + "content": [ + "You acknowledge and agree to, at your own expense, defend, indemnify and hold harmless Obscuro Labs and its affiliates and their respective equity holders, directors, officers, employees, managers, partners, service providers, licensors, licensees, representatives, agents and successors (“Indemnified Parties“) from any claim, actions, liabilities, losses, damages, suits and expenses, costs of whatever kind, including attorneys’ and expert fees and legal expenses, that we incur in connection with or arising out of your use of the Services, including but not limited to:
  • any breach or violation of these Terms by you;
  • material entered into or transmitted through the Services by you or a third party acting at your request;
  • your use of any third-party products;
  • a claim that any use of the Services by you infringes any intellectual property right of any third party, or any right of privacy or publicity, is libellous or defamatory, or otherwise results in injury or damage to any third party; or
  • any deletions, additions, insertions, or alterations to, or any unauthorised use of, the Services by you (collectively, “Claims“). You agree to promptly notify us of any third-party Claims and cooperate with the Indemnified Parties in defending such Claims. We reserve the right to assume the exclusive defence and control of any Claim and matter otherwise subject to indemnification by you at your expense, and you shall not in any event settle or otherwise dispose of any matter without our prior written consent.
" + ] + }, + { + "heading": "8. LIMITATIONS OF LIABILITY", + "content": [ + "TO THE FULLEST EXTENT ALLOWED BY APPLICABLE LAW, UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE) SHALL THE INDEMNIFIED PARTIES OR ANY OF THEM BE LIABLE TO YOU OR TO ANY OTHER PERSON FOR:
  • ANY INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING DAMAGES FOR LOST PROFITS, BUSINESS, OR REVENUE, BUSINESS INTERRUPTION, LOSS OF DATA, LOSS OF BUSINESS OPPORTUNITY, GOODWILL OR REPUTATION, WORK STOPPAGE, ACCURACY OF RESULTS, OR COMPUTER FAILURE OR MALFUNCTION;
  • ANY SUBSTITUTE GOODS, SERVICES OR TECHNOLOGY;
  • ANY AMOUNT, IN THE AGGREGATE, IN EXCESS OF ONE-HUNDRED POUNDS (£100); OR
  • ANY MATTER BEYOND THE REASONABLE CONTROL OF THE INDEMNIFIED PARTIES OR ANY OF THEM.
", + "SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL OR CERTAIN OTHER DAMAGES, SO THE FOREGOING LIMITATIONS AND EXCLUSIONS MAY NOT APPLY TO YOU.", + "Nothing in these Terms is intended to exclude or limit our liability for death or personal injury caused by our negligence, or for fraud or fraudulent misrepresentation, or to affect your statutory rights." + ] + }, + { + "heading": "9. TERMINATION", + "content": [ + "We may terminate or suspend your access to our Services at any time for any reason." + ] + }, + { + "heading": "10. FORCE MAJEURE", + "content": [ + "You acknowledge and agree that we will not be liable for failures or delays in providing Services or other non-performance caused by events including but not limited to strikes, insurrection, riot, civil unrest, war, fires, utility, or power failures, equipment failures, changes in law, cyberattacks, denial of service attacks, non-performance of our vendors or suppliers, acts of god, pandemic or epidemic events, or other causes over which we have no reasonable control. We will make reasonable efforts to limit the effect of any of those events and start or restart the Website and Services as soon as those events have been fixed." + ] + }, + { + "heading": "11. COMPLAINTS, DISPUTES AND GOVERNING LAW", + "content": [ + "Any dispute, claim or request for relief arising out of or in connection with these Terms and/or the Services, including any question regarding its existence, validity or termination, shall be referred to and finally resolved by arbitration under the LCIA Rules, which Rules are deemed to be incorporated by reference into this clause. The number of arbitrators shall be one. The seat, or legal place, of arbitration, shall be London, United Kingdom. The language to be used in the arbitration shall be English. The governing law shall be the substantive law of England.", + "To the extent there is a dispute regarding any Claim (including questions about the scope, applicability, interpretation, validity, and enforceability of this arbitration agreement), you and Obscuro Labs agree that this threshold dispute shall be delegated to the arbitrator (not a court) and that the arbitrator shall have initial authority to resolve such threshold disputes, except as expressly provided below. The arbitration will be final and binding, and the judgement on the award rendered by the arbitrator(s) may be entered in any court having jurisdiction thereof. Please be advised that all arbitration proceedings are confidential unless the parties agree otherwise.", + "If you are a UK or EU resident and use the Services mainly for non-business purposes, you can bring proceedings in any competent courts in the country of your main residence that has jurisdiction over your claim or dispute.", + "Governing law. These Terms and any issue, claim or dispute between you and us that arises out of them (or otherwise relating to the Services) will be governed by the laws of England. However, any additional, mandatory consumer rights and protections that you are entitled to under the laws of the country in which you reside will also apply." + ] + }, + { + "heading": "12. CHANGES TO THESE TERMS", + "content": [ + "We reserve the right, in our sole discretion, to modify, suspend or discontinue the Terms and /or Services (or any features or parts thereof) from time to time to reflect changes to our Services, our users’ needs, our business priorities or changes in laws applicable to us, without liability to you. We will give you reasonable notice when we change our Terms. Your continued use of the Services following the posting of revised Terms means that you accept and agree to the changes. Please check these Terms regularly to ensure you agree with the most recent version." + ] + }, + { + "heading": "13. UPDATES; MONITORING", + "content": [ + "We may make any improvement, modifications or updates to the Services, including but not limited to changes and updates to the underlying software, infrastructure, security protocols, technical configurations or service features (the “Updates”) from time to time. Your continued access and use of our Services are subject to such Updates and you shall accept any patches, system upgrades, bug fixes, feature modifications, or other maintenance work that arise out of such Updates. We are not liable for any failure by you to accept and use such Updates in the manner specified or required by us. Although the Company is not obligated to monitor access to or participation in the Services, it has the right to do so for the purpose of operating the Services, to ensure compliance with the Terms and to comply with applicable law or other legal requirements." + ] + }, + { + "heading": "14. GENERAL TERMS", + "content": [ + "Information Only. You agree that the Services (or any information provided by or obtained from the Services) are for informational purposes only, are not intended to be relied upon for professional advice of any sort, and is not a substitute for information from experts or professionals in the applicable area. You should not take, or refrain from taking, any action or decision based on any information contained in the Services. If, and before you make any financial, legal, or other decisions involving the Services, you should seek independent professional advice from an individual who is licensed and qualified in the area for which such advice would be appropriate.", + "Open-Source: Ten is being developed on an open-source basis under the GNU Affero General Public License, Version 3.0, the terms of which are found here: https://www.gnu.org/licenses/agpl-3.0.html (the “AGPLv3 Licence“). By accessing, using, copying (or similar) the Services, you agree that the Services shall be governed by the AGPLv3 Licence (and the Terms herein). The Services are licensed under the AGPLv3 License and you undertake that you will not use the Services except in compliance with the AGPLv3 License and these Terms. You agree that any software developed using the Services, shall be made available for the public to use on an open source basis, on the AGPLv3 License terms.", + "Compliance with Law. You represent and warrant that you will comply with all laws that apply to you, your use of the Services, and your actions and omissions that relate to the Services. If your use of the Services is prohibited by applicable laws, then you aren’t authorised to use the Services. We will not be responsible for your using the Services (and developing and/or deploying any software) in a way that is a violation of any law. Without limiting the foregoing, you represent and warrant that you are not, and for the duration of the time you use the Services (to develop any software or similar) will not be (a) the subject of economic or trade sanctions administered or enforced by any governmental authority or otherwise designated on any list of prohibited or restricted parties (including but not limited to the United Nations Security Council, the European Union, His Majesty’s Treasury, and U.S. Department of Treasury), or (b) a citizen, resident, or organised in a jurisdiction or territory that is the subject of comprehensive country-wide, territory-wide, or regional economic sanctions by the United Nations, European Union, any EU country, UK Treasury, or the United States, including without limitation Cuba, the Crimea, Donetsk, and Luhansk regions of Ukraine, Iran, North Korea, Russia, Syria, Yemen and any other regions and/or countries sanctioned from time to time. If at any point the above is no longer true, you must immediately cease using the Services.", + "Assumption of Risk. By using the Services, you (a) represent that you are sophisticated enough to understand the various inherent risks of using cryptographic and public blockchain-based systems, including but not limited to the Services and digital assets, and (b) acknowledge and accept all such risks, and agree that we make no representations or warranties (expressly or implicitly) regarding, and that you will not hold us liable for those risks, including but not limited to the risks described below, any or all of which could lead to losses and damages, including the total and irrevocable loss of your assets. These risks include, but are not limited to:", + "
  • Wallet security and safekeeping. You are solely responsible for the safeguarding and security of your Web3 wallets. If you lose your wallet seed phrase, private keys, or password, you may be forever unable to access your digital assets. Any unauthorised access to your wallet by third parties could result in the loss or theft of your digital assets. We have no involvement in, or responsibility for, storing, retaining, securing or recovering your Web3 wallet seed phrases, private keys, or passwords, or for any unauthorised access to your Web3 wallet.
  • Blockchain technology. Public blockchains, and the technology underlying and interacting with cryptographic and public blockchain-based systems, are experimental, inherently risky, and subject to change. Among other risks, bugs, malfunctions, cyberattacks, or changes to a particular public blockchain (e.g., via forks) could disrupt these technologies irreparably. There is no guarantee that any of these technologies will not become unavailable, degraded, or subject to hardware or software errors, operational or technical difficulties, denial-of-service attacks, other cyberattacks, or other problems requiring maintenance, interruptions, delays, or errors.
  • Network cost and performance. The cost, speed, and availability of transacting on public blockchain systems are subject to significant variability. There is no guarantee that any transfer will be confirmed or transferred successfully.
  • Blockchain transactions and smart contract execution. Public blockchain-based transactions (including but not limited to transactions automatically executed by smart contracts) are generally considered irreversible when confirmed. Any transaction that will interact with smart contracts or be recorded on a public blockchain must be recorded with extreme caution.
  • Digital assets. The markets for digital assets are nascent and highly volatile due to various risk factors including (but not limited to) adoption, speculation, technology, security, and regulation. Digital assets and their underlying blockchain networks are complex emerging technologies that may be subject to delays, halts or go offline as a result of errors, forks, attacks or other unforeseeable reasons. Anyone can create a digital asset, including fake versions of existing digital assets and digital assets that falsely claim to represent projects. So-called stablecoins may not be as stable as they purport to be, may not be fully or adequately collateralised, and may be subject to panics and runs. You are solely responsible for understanding the risks specific to each digital asset that is relevant to you.
  • Bridging. In addition to being an especially novel and untested implementation of blockchain technology in general, cross-blockchain bridging technology has historically been, and may in the future be, the subject of numerous cyberattacks and exploits, including without limitation, hacks that exploit a vulnerability in the associated software, hardware, systems or other equipment or social engineering to gain control of any bridge components, wallets, smart contracts or other related systems.
  • Control of the Services. The Services may be subject to periodic upgrades, which may introduce other risks, bugs, malfunctions, cyberattack vectors, or other changes to the Services that could disrupt the operation of the Services, the functionality of bridging, your ability to access bridged digital assets, or otherwise cause you damage or loss.
  • Third Party Risks. Third-party products carry their own individual, oftentimes highly significant risks. When you use the Services to interact with any third-party products, you are subject to all of those risks.
  • Legislative and regulatory risks. Digital assets, blockchain technology, and any related software and services are subject to legal and regulatory uncertainty in many jurisdictions. Legislative and regulatory changes or actions may adversely affect the usage, transferability, transactability and accessibility of digital assets, bridging or the Services.
", + "Release of claims. You expressly agree that you assume all risks and liabilities in connection with your use of the Services (including, without limitation, the development and/or deployment of any software under or in connection with the Services), as such are detailed above and as permitted under applicable laws. You further expressly waive and release Obscuro Labs, as well as its affiliates and service providers, and each of their respective past, present and future officers, directors, members, employees, consultants, representatives and agents, and each of their respective successors and assigns from any and all liability, claims, causes of action, or damages arising from or in any way relating to your use of the Services." + ] + }, + { + "heading": "15. CONTACT INFORMATION", + "content": [ + "If you have any questions about the Website or these Terms, please contact us at siteMetadata.email" + ] + } + ] +} diff --git a/contracts/src/bridge/frontend/public/favicon.ico b/contracts/src/bridge/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0e8dea2f715d4fdc30aa83101021fe05fb3e2c21 GIT binary patch literal 1260 zcmVg-p z$Qi$Yq(b+^#>V2{-~fAj zdr*R;7$7`6JXjpa4Q5?#Z*NgtT#T`?F~~)-3!R*tFc+fLQ;L<96&xKMp#;e;MBLom zU}|a#+uPf?xVT{1#o5^zCMM$7gYGFWFGo*L50oI;g}%bY#RYM3afpbBKtMnMixmo3 zLy+=yb#-WIX@OEyGe92;3kxJCCnGvK8VLyr@bvW5UaPIGRYiH?4~)dq(-S5qC)q(+ zXK85(K|w)K8(A?RmDkr-wt>aR$7@~f?d=Wg>+4X8A{VNzu10!#`j^+k!^83X{H#5< zv9ZD2+#HJ$qM@MyO-)Tug5nq$8XEetG@ulzYXD(uYm4dWX|@RxN{vt@h_kb^S+%MU zrATrgeVm+}FgQ4fn3x!LuEYpcf_Qj%SdzS@r6pWlUA5U1^G8E_w3kzBqLq}Cr6{Mhw3z70Q zH8rd>CPqg`QCL{`L59-j%*>47ZhU=x&01Fa6@%g|q_2E`e?Lk}N@b&d& zg&gf2hRSieo|BWqo<;SNDCiByJ?!l4xW2wV?j8EiEBisl&CQM5-`{7~`SO9QtgQU@ znVp@T+{42I$2U%*bWl_awYRsUprC;L@9phHX=y22Vf~f&^YdfpKq}r(T7}!xV*d+lvQ;jqgOsMGNMhD$hQc_YN1>IQ>&5}rY-M&}|cXxLb z6%`4}2^x@*k@0C)l?o{?MR_R*8bB@J^71m2@YQ%l4FnCKnj|kT4{K{{_>G7PVlskK z<8S1DKk(DYHh`}%VQe-xHw9&68<3coh>eX67z^q#1_lNM=2)z|lvK^Ye2k!6=`Y#15sDDo^~AAf~3sSQzaipDr&iFYKeAG58Dg W(m0zVdEl%70000 +
- -
- - - -
+ + +
diff --git a/contracts/src/bridge/frontend/src/components/main-nav.tsx b/contracts/src/bridge/frontend/src/components/main-nav.tsx index b97b7ed02f..0adafeafbb 100644 --- a/contracts/src/bridge/frontend/src/components/main-nav.tsx +++ b/contracts/src/bridge/frontend/src/components/main-nav.tsx @@ -89,6 +89,7 @@ export const MainNav = ({
- + {table.getRowModel().rows.length > 0 && ( + + )}
); } diff --git a/tools/tenscan/frontend/src/components/modules/common/empty-state.tsx b/tools/tenscan/frontend/src/components/modules/common/empty-state.tsx index ba62b14c3b..1a3a94cf9e 100644 --- a/tools/tenscan/frontend/src/components/modules/common/empty-state.tsx +++ b/tools/tenscan/frontend/src/components/modules/common/empty-state.tsx @@ -1,3 +1,4 @@ +import Image from "next/image"; import React from "react"; const EmptyState = ({ @@ -20,7 +21,7 @@ const EmptyState = ({
{icon &&
{icon}
} {imageSrc && ( - {imageAlt[] = [ { @@ -123,14 +125,14 @@ export const columns: ColumnDef[] = [ return value.includes(row.getValue(id)); }, }, - // { - // id: "actions", - // cell: ({ row }) => { - // return ( - // - // - // - // ); - // }, - // }, + { + id: "actions", + cell: ({ row }) => { + return ( + + + + ); + }, + }, ]; diff --git a/tools/tenscan/frontend/src/components/modules/transactions/columns.tsx b/tools/tenscan/frontend/src/components/modules/transactions/columns.tsx index fda982927c..340383c1e2 100644 --- a/tools/tenscan/frontend/src/components/modules/transactions/columns.tsx +++ b/tools/tenscan/frontend/src/components/modules/transactions/columns.tsx @@ -8,6 +8,8 @@ import { DataTableColumnHeader } from "../common/data-table/data-table-column-he import { Transaction } from "@/src/types/interfaces/TransactionInterfaces"; import TruncatedAddress from "../common/truncated-address"; import { formatNumber, formatTimeAgo } from "@/src/lib/utils"; +import Link from "next/link"; +import { EyeOpenIcon } from "@radix-ui/react-icons"; export const columns: ColumnDef[] = [ { @@ -84,4 +86,14 @@ export const columns: ColumnDef[] = [ return value.includes(row.getValue(id)); }, }, + { + id: "actions", + cell: ({ row }) => { + return ( + + + + ); + }, + }, ]; diff --git a/tools/tenscan/frontend/src/components/modules/transactions/transaction-details.tsx b/tools/tenscan/frontend/src/components/modules/transactions/transaction-details.tsx new file mode 100644 index 0000000000..7776b26e64 --- /dev/null +++ b/tools/tenscan/frontend/src/components/modules/transactions/transaction-details.tsx @@ -0,0 +1,48 @@ +import TruncatedAddress from "../common/truncated-address"; +import KeyValueItem, { KeyValueList } from "@/src/components/ui/key-value"; +import { formatTimeAgo } from "@/src/lib/utils"; +import { Badge } from "@/src/components/ui/badge"; +import { Transaction } from "@/src/types/interfaces/TransactionInterfaces"; +import { BadgeType } from "@/src/types/interfaces"; + +export function TransactionDetailsComponent({ + transactionDetails, +}: { + transactionDetails: Transaction; +}) { + return ( +
+ + + + } + /> + + + {transactionDetails?.Finality} + + } + isLastItem + /> + +
+ ); +} diff --git a/tools/tenscan/frontend/src/routes/index.ts b/tools/tenscan/frontend/src/routes/index.ts index b0516e895a..e22ea6546b 100644 --- a/tools/tenscan/frontend/src/routes/index.ts +++ b/tools/tenscan/frontend/src/routes/index.ts @@ -16,6 +16,7 @@ export const apiRoutes = { // **** TRANSACTIONS **** getTransactions: "/items/transactions/", getTransactionCount: "/count/transactions/", + getTransactionByHash: "/items/transaction/:hash", getEtherPrice: "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd", diff --git a/tools/tenscan/frontend/src/types/interfaces/index.ts b/tools/tenscan/frontend/src/types/interfaces/index.ts index 923786fedc..b592e7a5b1 100644 --- a/tools/tenscan/frontend/src/types/interfaces/index.ts +++ b/tools/tenscan/frontend/src/types/interfaces/index.ts @@ -79,3 +79,11 @@ export enum ToastType { DESTRUCTIVE = "destructive", DEFAULT = "default", } + +export enum BadgeType { + SUCCESS = "success", + SECONDARY = "secondary", + DESTRUCTIVE = "destructive", + DEFAULT = "default", + OUTLINE = "outline", +} From cdf8ab40d1ab575fff77c2a56369732e328ca516 Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Tue, 21 May 2024 16:17:15 +0100 Subject: [PATCH 025/136] Update label for Batch Number to Batch Height --- .../src/components/modules/transactions/transaction-details.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/tenscan/frontend/src/components/modules/transactions/transaction-details.tsx b/tools/tenscan/frontend/src/components/modules/transactions/transaction-details.tsx index 7776b26e64..bc1c1ebc75 100644 --- a/tools/tenscan/frontend/src/components/modules/transactions/transaction-details.tsx +++ b/tools/tenscan/frontend/src/components/modules/transactions/transaction-details.tsx @@ -14,7 +14,7 @@ export function TransactionDetailsComponent({
Date: Wed, 22 May 2024 17:33:01 +0100 Subject: [PATCH 026/136] rollups: - fetch rollup - fetch rollup by hatch - fetch rollup by batch sequence --- tools/tenscan/frontend/api/rollups.ts | 33 ++++- .../tenscan/frontend/pages/rollup/[hash].tsx | 56 ++++++++ .../pages/rollup/sequence/[sequence].tsx | 55 ++++++++ .../tenscan/frontend/pages/rollups/index.tsx | 52 ++++++++ .../src/components/modules/blocks/columns.tsx | 5 +- .../data-table/data-table-pagination.tsx | 3 +- .../modules/common/data-table/data-table.tsx | 16 ++- .../components/modules/rollups/columns.tsx | 112 ++++++++++++++++ .../components/modules/rollups/constants.tsx | 45 +++++++ .../modules/rollups/rollup-details.tsx | 126 ++++++++++++++++++ tools/tenscan/frontend/src/routes/index.ts | 10 +- .../src/services/useRollupsService.ts | 30 ++++- .../src/types/interfaces/RollupInterfaces.ts | 32 +++++ 13 files changed, 566 insertions(+), 9 deletions(-) create mode 100644 tools/tenscan/frontend/pages/rollup/[hash].tsx create mode 100644 tools/tenscan/frontend/pages/rollup/sequence/[sequence].tsx create mode 100644 tools/tenscan/frontend/pages/rollups/index.tsx create mode 100644 tools/tenscan/frontend/src/components/modules/rollups/columns.tsx create mode 100644 tools/tenscan/frontend/src/components/modules/rollups/constants.tsx create mode 100644 tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx create mode 100644 tools/tenscan/frontend/src/types/interfaces/RollupInterfaces.ts diff --git a/tools/tenscan/frontend/api/rollups.ts b/tools/tenscan/frontend/api/rollups.ts index 375f0e0ecf..4fd0016009 100644 --- a/tools/tenscan/frontend/api/rollups.ts +++ b/tools/tenscan/frontend/api/rollups.ts @@ -2,8 +2,12 @@ import { httpRequest } from "."; import { apiRoutes } from "@/src/routes"; import { pathToUrl } from "@/src/routes/router"; import { ResponseDataInterface } from "@/src/types/interfaces"; +import { + Rollup, + RollupsResponse, +} from "@/src/types/interfaces/RollupInterfaces"; -export const fetchRollups = async ( +export const fetchLatestRollups = async ( payload?: Record ): Promise> => { return await httpRequest>({ @@ -13,6 +17,15 @@ export const fetchRollups = async ( }); }; +export const fetchRollups = async (): Promise< + ResponseDataInterface +> => { + return await httpRequest>({ + method: "get", + url: pathToUrl(apiRoutes.getRollups), + }); +}; + export const decryptEncryptedRollup = async ({ StrData, }: { @@ -24,3 +37,21 @@ export const decryptEncryptedRollup = async ({ data: { StrData }, }); }; + +export const fetchRollupByHash = async ( + hash: string +): Promise> => { + return await httpRequest>({ + method: "get", + url: pathToUrl(apiRoutes.getRollupByHash, { hash }), + }); +}; + +export const fetchRollupByBatchSequence = async ( + seq: string +): Promise> => { + return await httpRequest>({ + method: "get", + url: pathToUrl(apiRoutes.getRollupByBatchSequence, { seq }), + }); +}; diff --git a/tools/tenscan/frontend/pages/rollup/[hash].tsx b/tools/tenscan/frontend/pages/rollup/[hash].tsx new file mode 100644 index 0000000000..0fb1e03eba --- /dev/null +++ b/tools/tenscan/frontend/pages/rollup/[hash].tsx @@ -0,0 +1,56 @@ +import { fetchRollupByHash } from "@/api/rollups"; +import Layout from "@/src/components/layouts/default-layout"; +import { RollupDetailsComponent } from "@/src/components/modules/rollups/rollup-details"; +import EmptyState from "@/src/components/modules/common/empty-state"; +import { Button } from "@/src/components/ui/button"; +import { + Card, + CardHeader, + CardTitle, + CardContent, + CardDescription, +} from "@/src/components/ui/card"; +import { Skeleton } from "@/src/components/ui/skeleton"; +import { useQuery } from "@tanstack/react-query"; +import { useRouter } from "next/router"; + +export default function RollupDetails() { + const router = useRouter(); + const { hash } = router.query; + + const { data, isLoading } = useQuery({ + queryKey: ["rollupDetails", hash], + queryFn: () => fetchRollupByHash(hash as string), + }); + + const rollupDetails = data?.item; + console.log("🚀 ~ RollupDetails ~ rollupDetails:", rollupDetails); + + return ( + + {isLoading ? ( + + ) : rollupDetails ? ( + + + Rollup #{Number(rollupDetails?.ID)} + + Overview of the Rollup #{Number(rollupDetails?.ID)} + + + + + + + ) : ( + router.push("/rollups")}>Go back + } + /> + )} + + ); +} diff --git a/tools/tenscan/frontend/pages/rollup/sequence/[sequence].tsx b/tools/tenscan/frontend/pages/rollup/sequence/[sequence].tsx new file mode 100644 index 0000000000..72439dbf0d --- /dev/null +++ b/tools/tenscan/frontend/pages/rollup/sequence/[sequence].tsx @@ -0,0 +1,55 @@ +import { fetchRollupByBatchSequence } from "@/api/rollups"; +import Layout from "@/src/components/layouts/default-layout"; +import EmptyState from "@/src/components/modules/common/empty-state"; +import { RollupDetailsComponent } from "@/src/components/modules/rollups/rollup-details"; +import { Button } from "@/src/components/ui/button"; +import { + Card, + CardHeader, + CardTitle, + CardContent, + CardDescription, +} from "@/src/components/ui/card"; +import { Skeleton } from "@/src/components/ui/skeleton"; +import { useQuery } from "@tanstack/react-query"; +import { useRouter } from "next/router"; + +export default function RollupBatchSequenceDetails() { + const router = useRouter(); + const { sequence } = router.query; + + const { data, isLoading } = useQuery({ + queryKey: ["rollupSequenceDetails", sequence], + queryFn: () => fetchRollupByBatchSequence(sequence as string), + }); + + const rollupDetails = data?.item; + + return ( + + {isLoading ? ( + + ) : rollupDetails ? ( + + + Rollup #{Number(rollupDetails?.ID)} + + Overview of the Rollup with batch sequence #{Number(sequence)} + + + + + + + ) : ( + router.push("/rollups")}>Go back + } + /> + )} + + ); +} diff --git a/tools/tenscan/frontend/pages/rollups/index.tsx b/tools/tenscan/frontend/pages/rollups/index.tsx new file mode 100644 index 0000000000..7d6d71480e --- /dev/null +++ b/tools/tenscan/frontend/pages/rollups/index.tsx @@ -0,0 +1,52 @@ +import React from "react"; +import { DataTable } from "@/src/components/modules/common/data-table/data-table"; +import Layout from "@/src/components/layouts/default-layout"; +import { useRollupsService } from "@/src/services/useRollupsService"; +import { Metadata } from "next"; +import { formatNumber } from "@/src/lib/utils"; +import { columns } from "@/src/components/modules/rollups/columns"; + +export const metadata: Metadata = { + title: "Rollups", + description: "A table of rollups.", +}; + +export default function Rollups() { + const { rollups, setNoPolling, isRollupsLoading, refetchRollups } = + useRollupsService(); + const { RollupsData, Total } = rollups?.result || { + RollupsData: [], + Total: 0, + }; + + React.useEffect(() => { + setNoPolling(true); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + +
+
+
+

Rollups

+

+ {formatNumber(Total)} Rollups found. +

+
+
+ {RollupsData ? ( + + ) : ( +
No rollups found.
+ )} +
+
+ ); +} diff --git a/tools/tenscan/frontend/src/components/modules/blocks/columns.tsx b/tools/tenscan/frontend/src/components/modules/blocks/columns.tsx index 3400768554..4b15899830 100644 --- a/tools/tenscan/frontend/src/components/modules/blocks/columns.tsx +++ b/tools/tenscan/frontend/src/components/modules/blocks/columns.tsx @@ -10,6 +10,7 @@ import { Badge } from "../../ui/badge"; import ExternalLink from "../../ui/external-link"; import { externalLinks } from "@/src/routes"; import { EyeOpenIcon } from "@radix-ui/react-icons"; +import Link from "next/link"; export const columns: ColumnDef[] = [ { @@ -60,7 +61,9 @@ export const columns: ColumnDef[] = [ return Number(row.original.rollupHash) === 0 ? ( No rollup ) : ( - + + + ); }, enableSorting: false, diff --git a/tools/tenscan/frontend/src/components/modules/common/data-table/data-table-pagination.tsx b/tools/tenscan/frontend/src/components/modules/common/data-table/data-table-pagination.tsx index 45ce947a9f..19fcd09c26 100644 --- a/tools/tenscan/frontend/src/components/modules/common/data-table/data-table-pagination.tsx +++ b/tools/tenscan/frontend/src/components/modules/common/data-table/data-table-pagination.tsx @@ -26,8 +26,7 @@ export function DataTablePagination({ return (
- {table.getFilteredSelectedRowModel().rows.length} of{" "} - {table.getFilteredRowModel().rows.length} row(s) selected. + Showing {table.getFilteredRowModel().rows.length} row(s)
diff --git a/tools/tenscan/frontend/src/components/modules/common/data-table/data-table.tsx b/tools/tenscan/frontend/src/components/modules/common/data-table/data-table.tsx index 079d9e01c6..3eb1849e1a 100644 --- a/tools/tenscan/frontend/src/components/modules/common/data-table/data-table.tsx +++ b/tools/tenscan/frontend/src/components/modules/common/data-table/data-table.tsx @@ -27,6 +27,7 @@ import { import { DataTablePagination } from "./data-table-pagination"; import { DataTableToolbar } from "./data-table-toolbar"; import { useRouter } from "next/router"; +import { Skeleton } from "@/src/components/ui/skeleton"; interface DataTableProps { columns: ColumnDef[]; @@ -39,6 +40,7 @@ interface DataTableProps { updateQueryParams?: (query: any) => void; refetch?: () => void; total: number; + isLoading?: boolean; } export function DataTable({ @@ -47,6 +49,7 @@ export function DataTable({ toolbar, refetch, total, + isLoading, }: DataTableProps) { const [rowSelection, setRowSelection] = React.useState({}); const [columnVisibility, setColumnVisibility] = @@ -119,7 +122,18 @@ export function DataTable({ ))} - {table?.getRowModel()?.rows?.length && data ? ( + {isLoading ? ( + <> + + + + + + + ) : table?.getRowModel()?.rows?.length && data ? ( table.getRowModel().rows.map((row) => ( [] = [ + { + accessorKey: "ID", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ( +
+ {row.getValue("ID")} +
+ ); + }, + enableSorting: false, + enableHiding: false, + }, + { + accessorKey: "Hash", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ; + }, + enableSorting: false, + enableHiding: false, + }, + { + accessorKey: "Timestamp", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ( +
+ + {formatTimeAgo(row.getValue("Timestamp"))} + +
+ ); + }, + enableSorting: false, + enableHiding: false, + }, + { + accessorKey: "L1Hash", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ; + }, + enableSorting: false, + enableHiding: false, + }, + { + accessorKey: "FirstSeq", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ( +
+ + + {row.getValue("FirstSeq")} + + +
+ ); + }, + enableSorting: false, + enableHiding: false, + }, + { + accessorKey: "LastSeq", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ( +
+ + {row.getValue("LastSeq")} + +
+ ); + }, + enableSorting: false, + enableHiding: false, + }, + { + id: "actions", + cell: ({ row }) => { + return ( + + + + ); + }, + }, +]; diff --git a/tools/tenscan/frontend/src/components/modules/rollups/constants.tsx b/tools/tenscan/frontend/src/components/modules/rollups/constants.tsx new file mode 100644 index 0000000000..2ab030f09f --- /dev/null +++ b/tools/tenscan/frontend/src/components/modules/rollups/constants.tsx @@ -0,0 +1,45 @@ +import { + ArrowDownIcon, + ArrowRightIcon, + ArrowUpIcon, + CheckCircledIcon, + ClockIcon, +} from "@radix-ui/react-icons"; + +export const labels = [ + { + value: "Final", + label: "Final", + }, +]; + +export const statuses = [ + { + value: "Final", + label: "Final", + icon: CheckCircledIcon, + }, + { + value: "Pending", + label: "Pending", + icon: ClockIcon, + }, +]; + +export const priorities = [ + { + label: "Low", + value: "low", + icon: ArrowDownIcon, + }, + { + label: "Medium", + value: "medium", + icon: ArrowRightIcon, + }, + { + label: "High", + value: "high", + icon: ArrowUpIcon, + }, +]; diff --git a/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx b/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx new file mode 100644 index 0000000000..f5135c691b --- /dev/null +++ b/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx @@ -0,0 +1,126 @@ +import TruncatedAddress from "../common/truncated-address"; +import KeyValueItem, { KeyValueList } from "@/src/components/ui/key-value"; +import { formatTimeAgo } from "@/src/lib/utils"; +import { Rollup } from "@/src/types/interfaces/RollupInterfaces"; +import Link from "next/link"; + +export function RollupDetailsComponent({ + rollupDetails, +}: { + rollupDetails: Rollup; +}) { + return ( +
+ + + } + /> + + } + /> + + {"#" + rollupDetails?.FirstSeq} + + } + /> + + {"#" + rollupDetails?.LastSeq} + + } + /> + + } + /> + + } + /> + + } + /> + + {"#" + rollupDetails?.Header?.LastBatchSeqNo} + + } + /> + } + /> + 0 + ? rollupDetails?.Header?.crossChainMessages?.map((msg, index) => ( +
+ + + + {"#" + msg.Sequence} + + } + /> + + + ( +
{payload}
+ ))} + /> + +
+
+ )) + : "No cross chain messages found." + } + isLastItem + /> +
+
+ ); +} diff --git a/tools/tenscan/frontend/src/routes/index.ts b/tools/tenscan/frontend/src/routes/index.ts index e22ea6546b..133165cb3c 100644 --- a/tools/tenscan/frontend/src/routes/index.ts +++ b/tools/tenscan/frontend/src/routes/index.ts @@ -3,7 +3,7 @@ import { NavLink } from "../types/interfaces"; export const apiRoutes = { // **** BATCHES **** getLatestBatch: "/items/batch/latest/", - getBatches: "/items/batches/", + getBatches: "/items/v2/batches/", getBatchByHash: "/items/batch/:hash", // **** BLOCKS **** @@ -24,6 +24,9 @@ export const apiRoutes = { // **** ROLLUPS **** getLatestRollup: "/items/rollup/latest/", decryptEncryptedRollup: "/actions/decryptTxBlob/", + getRollups: "/items/rollups/", + getRollupByHash: "/items/rollup/:hash", + getRollupByBatchSequence: "/items/rollup/batch/:seq", // **** INFO **** getHealthStatus: "/info/health/", @@ -66,6 +69,11 @@ export const NavLinks: NavLink[] = [ label: "Batches", isExternal: false, }, + { + href: "/rollups", + label: "Rollups", + isExternal: false, + }, ], }, { diff --git a/tools/tenscan/frontend/src/services/useRollupsService.ts b/tools/tenscan/frontend/src/services/useRollupsService.ts index e75fc02771..bc37046b72 100644 --- a/tools/tenscan/frontend/src/services/useRollupsService.ts +++ b/tools/tenscan/frontend/src/services/useRollupsService.ts @@ -1,14 +1,30 @@ -import { decryptEncryptedRollup, fetchRollups } from "@/api/rollups"; +import { + decryptEncryptedRollup, + fetchLatestRollups, + fetchRollups, +} from "@/api/rollups"; import { toast } from "@/src/components/ui/use-toast"; import { useMutation, useQuery } from "@tanstack/react-query"; import { useState } from "react"; +import { pollingInterval } from "../lib/constants"; export const useRollupsService = () => { + const [noPolling, setNoPolling] = useState(false); const [decryptedRollup, setDecryptedRollup] = useState(); - const { data: rollups, isLoading: isRollupsLoading } = useQuery({ + const { data: latestRollups } = useQuery({ + queryKey: ["latestRollups"], + queryFn: () => fetchLatestRollups(), + }); + + const { + data: rollups, + isLoading: isRollupsLoading, + refetch: refetchRollups, + } = useQuery({ queryKey: ["rollups"], queryFn: () => fetchRollups(), + refetchInterval: noPolling ? false : pollingInterval, }); const { mutate: decryptEncryptedData } = useMutation({ @@ -22,5 +38,13 @@ export const useRollupsService = () => { }, }); - return { rollups, isRollupsLoading, decryptEncryptedData, decryptedRollup }; + return { + rollups, + latestRollups, + refetchRollups, + isRollupsLoading, + decryptEncryptedData, + decryptedRollup, + setNoPolling, + }; }; diff --git a/tools/tenscan/frontend/src/types/interfaces/RollupInterfaces.ts b/tools/tenscan/frontend/src/types/interfaces/RollupInterfaces.ts new file mode 100644 index 0000000000..a72f505b62 --- /dev/null +++ b/tools/tenscan/frontend/src/types/interfaces/RollupInterfaces.ts @@ -0,0 +1,32 @@ +export interface RollupsResponse { + RollupsData: Rollup[]; + Total: number; +} + +export interface Rollup { + ID: number; + Hash: string; + FirstSeq: number; + LastSeq: number; + Timestamp: number; + Header: Header; + L1Hash: string; +} + +export interface Header { + CompressionL1Head: string; + crossChainMessages: CrossChainMessage[]; + PayloadHash: string; + Signature: string; + LastBatchSeqNo: number; + hash: string; +} + +type CrossChainMessage = { + Sender: string; + Sequence: number; + Nonce: number; + Topic: number; + Payload: string[]; + ConsistencyLevel: number; +}; From 8864dab76221332a854b90beaadda2e8b23364e5 Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Wed, 22 May 2024 18:15:25 +0100 Subject: [PATCH 027/136] Update rollup details component and add new API routes --- .../src/components/modules/rollups/rollup-details.tsx | 10 +++++----- tools/tenscan/frontend/src/routes/index.ts | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx b/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx index f5135c691b..5717ceb3cd 100644 --- a/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx +++ b/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx @@ -14,7 +14,7 @@ export function RollupDetailsComponent({ } /> } /> + } + /> } /> - } - /> Date: Wed, 22 May 2024 19:12:13 +0100 Subject: [PATCH 028/136] rearrange rollup details --- .../src/components/modules/rollups/rollup-details.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx b/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx index 5717ceb3cd..6881e5124a 100644 --- a/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx +++ b/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx @@ -13,14 +13,14 @@ export function RollupDetailsComponent({
- } - /> + } + /> } From aa0fe11649017fd2a01d41d2079b87a100b67734 Mon Sep 17 00:00:00 2001 From: Jennifer Echenim Date: Thu, 23 May 2024 16:16:31 +0100 Subject: [PATCH 029/136] - fetch batch by hash, sequence and height - fetch rollup via block details - fetch rollup batches --- tools/tenscan/frontend/api/batches.ts | 20 +++++ tools/tenscan/frontend/api/rollups.ts | 16 +++- .../pages/{batches => batch}/[hash].tsx | 6 ++ .../frontend/pages/batch/height/[height].tsx | 53 +++++++++++++ .../frontend/pages/batch/txs/[fullHash].tsx | 70 +++++++++++++++++ .../frontend/pages/rollup/[hash]/batches.tsx | 57 ++++++++++++++ .../rollup/{[hash].tsx => [hash]/index.tsx} | 0 .../{ => batch}/sequence/[sequence].tsx | 6 ++ .../frontend/pages/transactions/index.tsx | 11 ++- .../modules/batches/batch-details.tsx | 12 ++- .../components/modules/batches/columns.tsx | 53 +++++++++---- .../modules/batches/transaction-columns.tsx | 78 +++++++++++++++++++ .../src/components/modules/blocks/columns.tsx | 5 +- .../modules/dashboard/recent-batches.tsx | 14 +++- .../modules/dashboard/recent-transactions.tsx | 16 +++- .../components/modules/rollups/columns.tsx | 28 +++++-- .../modules/rollups/rollup-details.tsx | 34 +++++--- .../modules/transactions/columns.tsx | 19 ++--- tools/tenscan/frontend/src/routes/index.ts | 4 +- .../src/services/useRollupsService.ts | 20 ++++- .../src/types/interfaces/BatchInterfaces.ts | 53 ++++++------- .../frontend/src/pages/_app.tsx | 5 +- 22 files changed, 496 insertions(+), 84 deletions(-) rename tools/tenscan/frontend/pages/{batches => batch}/[hash].tsx (93%) create mode 100644 tools/tenscan/frontend/pages/batch/height/[height].tsx create mode 100644 tools/tenscan/frontend/pages/batch/txs/[fullHash].tsx create mode 100644 tools/tenscan/frontend/pages/rollup/[hash]/batches.tsx rename tools/tenscan/frontend/pages/rollup/{[hash].tsx => [hash]/index.tsx} (100%) rename tools/tenscan/frontend/pages/rollup/{ => batch}/sequence/[sequence].tsx (95%) create mode 100644 tools/tenscan/frontend/src/components/modules/batches/transaction-columns.tsx diff --git a/tools/tenscan/frontend/api/batches.ts b/tools/tenscan/frontend/api/batches.ts index d05314b54a..cf93dda1bd 100644 --- a/tools/tenscan/frontend/api/batches.ts +++ b/tools/tenscan/frontend/api/batches.ts @@ -36,3 +36,23 @@ export const fetchBatchByHash = async ( url: pathToUrl(apiRoutes.getBatchByHash, { hash }), }); }; + +export const fetchBatchByHeight = async ( + height: string +): Promise> => { + return await httpRequest>({ + method: "get", + url: pathToUrl(apiRoutes.getBatchByHeight, { height }), + }); +}; + +export const fetchBatchTransactions = async ( + fullHash: string, + options?: Record +): Promise> => { + return await httpRequest>({ + method: "get", + url: pathToUrl(apiRoutes.getBatchTransactions, { fullHash }), + searchParams: options, + }); +}; diff --git a/tools/tenscan/frontend/api/rollups.ts b/tools/tenscan/frontend/api/rollups.ts index 4fd0016009..4ee8014bbb 100644 --- a/tools/tenscan/frontend/api/rollups.ts +++ b/tools/tenscan/frontend/api/rollups.ts @@ -2,6 +2,7 @@ import { httpRequest } from "."; import { apiRoutes } from "@/src/routes"; import { pathToUrl } from "@/src/routes/router"; import { ResponseDataInterface } from "@/src/types/interfaces"; +import { Batch, BatchResponse } from "@/src/types/interfaces/BatchInterfaces"; import { Rollup, RollupsResponse, @@ -50,8 +51,21 @@ export const fetchRollupByHash = async ( export const fetchRollupByBatchSequence = async ( seq: string ): Promise> => { - return await httpRequest>({ + const res = await httpRequest>({ method: "get", url: pathToUrl(apiRoutes.getRollupByBatchSequence, { seq }), }); + console.log(res); + return res; +}; + +export const fetchBatchesInRollups = async ( + hash: string, + options: Record +): Promise> => { + return await httpRequest>({ + method: "get", + url: pathToUrl(apiRoutes.getBatchesInRollup, { hash }), + searchParams: options, + }); }; diff --git a/tools/tenscan/frontend/pages/batches/[hash].tsx b/tools/tenscan/frontend/pages/batch/[hash].tsx similarity index 93% rename from tools/tenscan/frontend/pages/batches/[hash].tsx rename to tools/tenscan/frontend/pages/batch/[hash].tsx index 964444aa77..1118ff4cee 100644 --- a/tools/tenscan/frontend/pages/batches/[hash].tsx +++ b/tools/tenscan/frontend/pages/batch/[hash].tsx @@ -45,3 +45,9 @@ export default function Batch() { ); } + +export async function getServerSideProps(context: any) { + return { + props: {}, + }; +} diff --git a/tools/tenscan/frontend/pages/batch/height/[height].tsx b/tools/tenscan/frontend/pages/batch/height/[height].tsx new file mode 100644 index 0000000000..15195787f9 --- /dev/null +++ b/tools/tenscan/frontend/pages/batch/height/[height].tsx @@ -0,0 +1,53 @@ +import { fetchBatchByHeight } from "@/api/batches"; +import Layout from "@/src/components/layouts/default-layout"; +import { BatchDetailsComponent } from "@/src/components/modules/batches/batch-details"; +import { + Card, + CardHeader, + CardTitle, + CardContent, + CardDescription, +} from "@/src/components/ui/card"; +import { Skeleton } from "@/src/components/ui/skeleton"; +import { useQuery } from "@tanstack/react-query"; +import { useRouter } from "next/router"; + +export default function Batch() { + const router = useRouter(); + const { height } = router.query; + + const { data, isLoading } = useQuery({ + queryKey: ["batchHeight", height], + queryFn: () => fetchBatchByHeight(height as string), + }); + + const batchDetails = data?.item; + + return ( + + {isLoading ? ( + + ) : batchDetails ? ( + + + Batch #{Number(batchDetails?.Header?.number)} + + Overview of the batch #{Number(batchDetails?.Header?.number)} + + + + + + + ) : ( +
Batch not found
+ )} +
+ ); +} + +export async function getServerSideProps(context: any) { + return { + props: {}, + }; +} diff --git a/tools/tenscan/frontend/pages/batch/txs/[fullHash].tsx b/tools/tenscan/frontend/pages/batch/txs/[fullHash].tsx new file mode 100644 index 0000000000..1539b51d23 --- /dev/null +++ b/tools/tenscan/frontend/pages/batch/txs/[fullHash].tsx @@ -0,0 +1,70 @@ +import { fetchBatchTransactions } from "@/api/batches"; +import Layout from "@/src/components/layouts/default-layout"; +import { DataTable } from "@/src/components/modules/common/data-table/data-table"; +import EmptyState from "@/src/components/modules/common/empty-state"; +import { columns } from "@/src/components/modules/batches/transaction-columns"; +import { + Card, + CardHeader, + CardTitle, + CardContent, + CardDescription, +} from "@/src/components/ui/card"; +import { formatNumber } from "@/src/lib/utils"; +import { useQuery } from "@tanstack/react-query"; +import { useRouter } from "next/router"; +import { getOptions } from "@/src/lib/constants"; + +export default function BatchTransactions() { + const router = useRouter(); + const { fullHash } = router.query; + const options = getOptions(router.query); + + const { data, isLoading, refetch } = useQuery({ + queryKey: ["batchTransactions", { fullHash, options }], + queryFn: () => fetchBatchTransactions(fullHash as string, options), + }); + + const { TransactionsData, Total } = data?.result || { + TransactionsData: [], + Total: 0, + }; + + return ( + + {TransactionsData ? ( + + + + Batch Transactions at {"#" + TransactionsData[0]?.BatchHeight} + + + Overview of the batch transactions at{" "} + {"#" + TransactionsData[0]?.BatchHeight} + + + + + + + ) : ( + + )} + + ); +} + +export async function getServerSideProps(context: any) { + return { + props: {}, + }; +} diff --git a/tools/tenscan/frontend/pages/rollup/[hash]/batches.tsx b/tools/tenscan/frontend/pages/rollup/[hash]/batches.tsx new file mode 100644 index 0000000000..390209c0e2 --- /dev/null +++ b/tools/tenscan/frontend/pages/rollup/[hash]/batches.tsx @@ -0,0 +1,57 @@ +import React, { useEffect } from "react"; +import { columns } from "@/src/components/modules/batches/columns"; +import { DataTable } from "@/src/components/modules/common/data-table/data-table"; +import Layout from "@/src/components/layouts/default-layout"; +import { Metadata } from "next"; +import { formatNumber } from "@/src/lib/utils"; +import { fetchBatchesInRollups } from "@/api/rollups"; +import { useRouter } from "next/router"; +import { useQuery } from "@tanstack/react-query"; +import { useRollupsService } from "@/src/services/useRollupsService"; + +export const metadata: Metadata = { + title: "Batches", + description: "A table of Batches.", +}; + +export default function RollupBatches() { + const { rollupBatches, isRollupBatchesLoading, refetchRollupBatches } = + useRollupsService(); + + const { BatchesData, Total } = rollupBatches?.result || { + BatchesData: [], + Total: 0, + }; + + return ( + +
+
+
+

Batches

+

+ {formatNumber(Total)} Batches found. +

+
+
+ {BatchesData ? ( + + ) : ( +

Loading...

+ )} +
+
+ ); +} + +export async function getServerSideProps(context: any) { + return { + props: {}, + }; +} diff --git a/tools/tenscan/frontend/pages/rollup/[hash].tsx b/tools/tenscan/frontend/pages/rollup/[hash]/index.tsx similarity index 100% rename from tools/tenscan/frontend/pages/rollup/[hash].tsx rename to tools/tenscan/frontend/pages/rollup/[hash]/index.tsx diff --git a/tools/tenscan/frontend/pages/rollup/sequence/[sequence].tsx b/tools/tenscan/frontend/pages/rollup/batch/sequence/[sequence].tsx similarity index 95% rename from tools/tenscan/frontend/pages/rollup/sequence/[sequence].tsx rename to tools/tenscan/frontend/pages/rollup/batch/sequence/[sequence].tsx index 72439dbf0d..eb8b2716d8 100644 --- a/tools/tenscan/frontend/pages/rollup/sequence/[sequence].tsx +++ b/tools/tenscan/frontend/pages/rollup/batch/sequence/[sequence].tsx @@ -53,3 +53,9 @@ export default function RollupBatchSequenceDetails() { ); } + +export async function getServerSideProps(context: any) { + return { + props: {}, + }; +} diff --git a/tools/tenscan/frontend/pages/transactions/index.tsx b/tools/tenscan/frontend/pages/transactions/index.tsx index 06ca008bb8..bccbf98001 100644 --- a/tools/tenscan/frontend/pages/transactions/index.tsx +++ b/tools/tenscan/frontend/pages/transactions/index.tsx @@ -12,8 +12,12 @@ export const metadata: Metadata = { }; export default function Transactions() { - const { transactions, refetchTransactions, setNoPolling } = - useTransactionsService(); + const { + transactions, + refetchTransactions, + setNoPolling, + isTransactionsLoading, + } = useTransactionsService(); const { TransactionsData, Total } = transactions?.result || { TransactionsData: [], Total: 0, @@ -41,9 +45,10 @@ export default function Transactions() { data={TransactionsData} refetch={refetchTransactions} total={+Total} + isLoading={isTransactionsLoading} /> ) : ( -

Loading...

+
No rollups found.
)}
diff --git a/tools/tenscan/frontend/src/components/modules/batches/batch-details.tsx b/tools/tenscan/frontend/src/components/modules/batches/batch-details.tsx index 430281453b..8a8b29cd6e 100644 --- a/tools/tenscan/frontend/src/components/modules/batches/batch-details.tsx +++ b/tools/tenscan/frontend/src/components/modules/batches/batch-details.tsx @@ -4,6 +4,7 @@ import KeyValueItem, { KeyValueList } from "@/src/components/ui/key-value"; import { formatNumber, formatTimeAgo } from "@/src/lib/utils"; import { Badge } from "@/src/components/ui/badge"; import { BatchDetails } from "@/src/types/interfaces/BatchInterfaces"; +import Link from "next/link"; export function BatchDetailsComponent({ batchDetails, @@ -34,9 +35,14 @@ export function BatchDetailsComponent({ + + + } /> [] = [ cell: ({ row }) => { return (
- - #{Number(row.getValue("number"))} - + + + #{Number(row.original.height)} + +
); }, @@ -37,8 +42,8 @@ export const columns: ColumnDef[] = [ return (
- {row.getValue("timestamp") - ? formatTimeAgo(row.getValue("timestamp")) + {row.original.header.timestamp + ? formatTimeAgo(row.original.header.timestamp) : "N/A"}
@@ -57,7 +62,7 @@ export const columns: ColumnDef[] = [
- {formatNumber(row.getValue("gasUsed"))} + {formatNumber(row.original?.header?.gasUsed) || "N/A"}
@@ -75,7 +80,7 @@ export const columns: ColumnDef[] = [ return (
- {formatNumber(row.getValue("gasLimit"))} + {formatNumber(row.original?.header?.gasUsed) || "N/A"}
); @@ -89,7 +94,11 @@ export const columns: ColumnDef[] = [ ), cell: ({ row }) => { - return ; + return ( + + + + ); }, enableSorting: false, enableHiding: false, @@ -106,23 +115,37 @@ export const columns: ColumnDef[] = [ enableHiding: false, }, { - accessorKey: "l1Proof", + accessorKey: "sequence", header: ({ column }) => ( - + ), cell: ({ row }) => { - return ; + return ( + + {row.original.sequence} + + ); }, enableSorting: false, enableHiding: false, }, { - accessorKey: "miner", + accessorKey: "txCount", header: ({ column }) => ( - + ), cell: ({ row }) => { - return ; + return ( + + {row.original.txCount} + + ); }, enableSorting: false, enableHiding: false, @@ -131,7 +154,7 @@ export const columns: ColumnDef[] = [ id: "actions", cell: ({ row }) => { return ( - + ); diff --git a/tools/tenscan/frontend/src/components/modules/batches/transaction-columns.tsx b/tools/tenscan/frontend/src/components/modules/batches/transaction-columns.tsx new file mode 100644 index 0000000000..1021b51ca4 --- /dev/null +++ b/tools/tenscan/frontend/src/components/modules/batches/transaction-columns.tsx @@ -0,0 +1,78 @@ +"use client"; + +import { ColumnDef } from "@tanstack/react-table"; +import { Badge } from "@/src/components/ui/badge"; + +import { statuses } from "../transactions/constants"; +import { DataTableColumnHeader } from "../common/data-table/data-table-column-header"; +import { Transaction } from "@/src/types/interfaces/TransactionInterfaces"; +import TruncatedAddress from "../common/truncated-address"; +import { formatNumber, formatTimeAgo } from "@/src/lib/utils"; +import Link from "next/link"; +import { EyeOpenIcon } from "@radix-ui/react-icons"; + +export const columns: ColumnDef[] = [ + { + accessorKey: "BatchTimestamp", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ( +
+ + {formatTimeAgo(row.getValue("BatchTimestamp"))} + +
+ ); + }, + enableSorting: false, + enableHiding: false, + }, + + { + accessorKey: "TransactionHash", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + return ( + + + + ); + }, + enableSorting: false, + enableHiding: false, + }, + { + accessorKey: "Finality", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const finality = statuses.find( + (finality) => finality.value === row.getValue("Finality") + ); + + if (!finality) { + return null; + } + + return ( +
+ {finality.icon && ( + + )} + {finality.label} +
+ ); + }, + filterFn: (row, id, value) => { + return value.includes(row.getValue(id)); + }, + }, +]; diff --git a/tools/tenscan/frontend/src/components/modules/blocks/columns.tsx b/tools/tenscan/frontend/src/components/modules/blocks/columns.tsx index 4b15899830..b37875e1f5 100644 --- a/tools/tenscan/frontend/src/components/modules/blocks/columns.tsx +++ b/tools/tenscan/frontend/src/components/modules/blocks/columns.tsx @@ -61,7 +61,10 @@ export const columns: ColumnDef[] = [ return Number(row.original.rollupHash) === 0 ? ( No rollup ) : ( - + ); diff --git a/tools/tenscan/frontend/src/components/modules/dashboard/recent-batches.tsx b/tools/tenscan/frontend/src/components/modules/dashboard/recent-batches.tsx index d2f0d68cda..f12cd11677 100644 --- a/tools/tenscan/frontend/src/components/modules/dashboard/recent-batches.tsx +++ b/tools/tenscan/frontend/src/components/modules/dashboard/recent-batches.tsx @@ -2,6 +2,7 @@ import TruncatedAddress from "../common/truncated-address"; import { formatTimeAgo } from "@/src/lib/utils"; import { Batch } from "@/src/types/interfaces/BatchInterfaces"; import { Avatar, AvatarFallback } from "@/src/components/ui/avatar"; +import Link from "next/link"; export function RecentBatches({ batches }: { batches: any }) { return ( @@ -13,14 +14,21 @@ export function RecentBatches({ batches }: { batches: any }) {

- #{Number(batch?.number)} + + #{Number(batch?.height)} +

- {formatTimeAgo(batch?.timestamp)} + {formatTimeAgo(batch?.header?.timestamp)}

- + + +
))} diff --git a/tools/tenscan/frontend/src/components/modules/dashboard/recent-transactions.tsx b/tools/tenscan/frontend/src/components/modules/dashboard/recent-transactions.tsx index 9133fcbc89..21d00e4cfc 100644 --- a/tools/tenscan/frontend/src/components/modules/dashboard/recent-transactions.tsx +++ b/tools/tenscan/frontend/src/components/modules/dashboard/recent-transactions.tsx @@ -3,6 +3,7 @@ import { Avatar, AvatarFallback } from "@/src/components/ui/avatar"; import { Transaction } from "@/src/types/interfaces/TransactionInterfaces"; import { Badge } from "../../ui/badge"; import { formatTimeAgo } from "@/src/lib/utils"; +import Link from "next/link"; export function RecentTransactions({ transactions }: { transactions: any }) { return ( @@ -15,14 +16,25 @@ export function RecentTransactions({ transactions }: { transactions: any }) {

- #{Number(transaction?.BatchHeight)} + + #{Number(transaction?.BatchHeight)} +

{formatTimeAgo(transaction?.BatchTimestamp)}

- + + {" "} + +
{transaction?.Finality} diff --git a/tools/tenscan/frontend/src/components/modules/rollups/columns.tsx b/tools/tenscan/frontend/src/components/modules/rollups/columns.tsx index b7bc92257b..9975b214f3 100644 --- a/tools/tenscan/frontend/src/components/modules/rollups/columns.tsx +++ b/tools/tenscan/frontend/src/components/modules/rollups/columns.tsx @@ -30,7 +30,17 @@ export const columns: ColumnDef[] = [ ), cell: ({ row }) => { - return ; + return ( + + + + ); }, enableSorting: false, enableHiding: false, @@ -71,7 +81,10 @@ export const columns: ColumnDef[] = [ cell: ({ row }) => { return (
- + {row.getValue("FirstSeq")} @@ -90,9 +103,14 @@ export const columns: ColumnDef[] = [ cell: ({ row }) => { return (
- - {row.getValue("LastSeq")} - + + + {row.getValue("LastSeq")} + +
); }, diff --git a/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx b/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx index 6881e5124a..1806140820 100644 --- a/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx +++ b/tools/tenscan/frontend/src/components/modules/rollups/rollup-details.tsx @@ -18,22 +18,36 @@ export function RollupDetailsComponent({ value={formatTimeAgo(rollupDetails?.Timestamp)} /> } + label="Full Hash" + value={ + + + + } /> } + label="Rollup Header Hash" + value={ + + + + } /> } + label="L1 Hash" + value={} /> {"#" + rollupDetails?.FirstSeq} @@ -44,7 +58,7 @@ export function RollupDetailsComponent({ label="Last Sequencer" value={ {"#" + rollupDetails?.LastSeq} @@ -75,7 +89,7 @@ export function RollupDetailsComponent({ label="Last Batch Sequence No" value={ {"#" + rollupDetails?.Header?.LastBatchSeqNo} @@ -94,7 +108,7 @@ export function RollupDetailsComponent({ label="Sequence" value={ {"#" + msg.Sequence} diff --git a/tools/tenscan/frontend/src/components/modules/transactions/columns.tsx b/tools/tenscan/frontend/src/components/modules/transactions/columns.tsx index 340383c1e2..1d68de2269 100644 --- a/tools/tenscan/frontend/src/components/modules/transactions/columns.tsx +++ b/tools/tenscan/frontend/src/components/modules/transactions/columns.tsx @@ -54,7 +54,14 @@ export const columns: ColumnDef[] = [ ), cell: ({ row }) => { - return ; + return ( + + + + ); }, enableSorting: false, enableHiding: false, @@ -86,14 +93,4 @@ export const columns: ColumnDef[] = [ return value.includes(row.getValue(id)); }, }, - { - id: "actions", - cell: ({ row }) => { - return ( - - - - ); - }, - }, ]; diff --git a/tools/tenscan/frontend/src/routes/index.ts b/tools/tenscan/frontend/src/routes/index.ts index 3ba5a52525..3ac94fd3fb 100644 --- a/tools/tenscan/frontend/src/routes/index.ts +++ b/tools/tenscan/frontend/src/routes/index.ts @@ -6,8 +6,8 @@ export const apiRoutes = { getBatches: "/items/v2/batches/", getBatchByHash: "/items/batch/:hash", getBatchByHeight: "/items/batch/height/:height", - getBatchTransactions: "/items/batch/:fullHash/transactions/", - getBatchesInRollup: "/items/rollup/:hash/batches/", + getBatchTransactions: "/items/batch/:fullHash/transactions", + getBatchesInRollup: "/items/rollup/:hash/batches", // **** BLOCKS **** getBlocks: "/items/blocks/", diff --git a/tools/tenscan/frontend/src/services/useRollupsService.ts b/tools/tenscan/frontend/src/services/useRollupsService.ts index bc37046b72..78908a825b 100644 --- a/tools/tenscan/frontend/src/services/useRollupsService.ts +++ b/tools/tenscan/frontend/src/services/useRollupsService.ts @@ -1,17 +1,23 @@ import { decryptEncryptedRollup, + fetchBatchesInRollups, fetchLatestRollups, fetchRollups, } from "@/api/rollups"; import { toast } from "@/src/components/ui/use-toast"; import { useMutation, useQuery } from "@tanstack/react-query"; import { useState } from "react"; -import { pollingInterval } from "../lib/constants"; +import { getOptions, pollingInterval } from "../lib/constants"; +import { useRouter } from "next/router"; export const useRollupsService = () => { + const { query } = useRouter(); + const [noPolling, setNoPolling] = useState(false); const [decryptedRollup, setDecryptedRollup] = useState(); + const options = getOptions(query); + const { data: latestRollups } = useQuery({ queryKey: ["latestRollups"], queryFn: () => fetchLatestRollups(), @@ -38,6 +44,15 @@ export const useRollupsService = () => { }, }); + const { + data: rollupBatches, + isLoading: isRollupBatchesLoading, + refetch: refetchRollupBatches, + } = useQuery({ + queryKey: ["rollupBatches", { hash: query.hash, options }], + queryFn: () => fetchBatchesInRollups(query.hash as string, options), + }); + return { rollups, latestRollups, @@ -46,5 +61,8 @@ export const useRollupsService = () => { decryptEncryptedData, decryptedRollup, setNoPolling, + rollupBatches, + isRollupBatchesLoading, + refetchRollupBatches, }; }; diff --git a/tools/tenscan/frontend/src/types/interfaces/BatchInterfaces.ts b/tools/tenscan/frontend/src/types/interfaces/BatchInterfaces.ts index a8fa9c7717..ccc63f538f 100644 --- a/tools/tenscan/frontend/src/types/interfaces/BatchInterfaces.ts +++ b/tools/tenscan/frontend/src/types/interfaces/BatchInterfaces.ts @@ -1,31 +1,32 @@ export type Batch = { - parentHash: string; - stateRoot: string; - transactionsRoot: string; - receiptsRoot: string; - number: number; - sequencerOrderNo: number; - gasLimit: number; - gasUsed: number; - timestamp: string; - extraData: string; - baseFee: number; - coinbase: string; - l1Proof: string; - R: number; - S: number; - crossChainMessages: any[]; - inboundCrossChainHash: string; - inboundCrossChainHeight: number; - transfersTree: string; + sequence: number; hash: string; - sha3Uncles: string; - miner: string; - logsBloom: string; - difficulty: string; - nonce: string; - baseFeePerGas: number; - EncryptedTxBlob: string; + fullHash: string; + height: number; + txCount: number; + header: { + hash: string; + parentHash: string; + stateRoot: string; + transactionsRoot: string; + receiptsRoot: string; + number: string; + sequencerOrderNo: string; + gasLimit: string; + gasUsed: string; + timestamp: string; + extraData: string; + baseFeePerGas: string; + miner: string; + l1Proof: string; + signature: string; + crossChainMessages: []; + inboundCrossChainHash: string; + inboundCrossChainHeight: string; + TransfersTree: string; + crossChainTree: string; + }; + encryptedTxBlob: string; }; export type BatchDetails = { diff --git a/tools/walletextension/frontend/src/pages/_app.tsx b/tools/walletextension/frontend/src/pages/_app.tsx index 08951a549c..1dbdecef07 100644 --- a/tools/walletextension/frontend/src/pages/_app.tsx +++ b/tools/walletextension/frontend/src/pages/_app.tsx @@ -8,8 +8,11 @@ import HeadSeo from "@/components/head-seo"; import Script from "next/script"; import { GOOGLE_ANALYTICS_ID } from "@/lib/constants"; import { siteMetadata } from "@/lib/siteMetadata"; +import { useRouter } from "next/router"; export default function App({ Component, pageProps }: AppProps) { + const router = useRouter(); + return ( <> - - - - - - - - - - - - - - - - - - ); + return ; } diff --git a/contracts/src/bridge/frontend/pages/_error.tsx b/contracts/src/bridge/frontend/pages/_error.tsx deleted file mode 100644 index 8c722160fa..0000000000 --- a/contracts/src/bridge/frontend/pages/_error.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import React from "react"; -import NextErrorComponent from "next/error"; -import Link from "next/link"; -import { ErrorType } from "@/src/types"; - -function ErrorMessage({ - statusText, - message, - showMessage, - showStatusText, -}: any) { - return ( -
- {showStatusText &&

{statusText}

} - {message && showMessage && ( -

{message}

- )} -
- ); -} - -export function CustomError({ - showRedirectText = true, - heading = "Oops! Something went wrong.", - statusText = "500", - message = "We're experiencing technical difficulties. Please try again later.", - redirectText = "Home Page", - isFullWidth, - err, - showMessage = true, - showStatusText, - statusCode, - isModal, - redirectLink = "/", - children, - ...props -}: ErrorType) { - return ( -
-
-
-

{heading}

-
- -
- {showRedirectText && ( -
- Go to{" "} - - {redirectText} - {" "} - {/*
- Looks like you're on the wrong side of town, buddy. - Let's get you back on the right side. -
*/} -
- )} - {children} -
-
-
- ); -} - -CustomError.getInitialProps = async ({ res, err }: any) => { - const statusCode = res ? res.statusCode : err?.statusCode || 404; - const errorInitialProps = await NextErrorComponent.getInitialProps({ - res, - err, - } as any); - errorInitialProps.statusCode = statusCode; - - return statusCode < 500 - ? errorInitialProps - : { ...errorInitialProps, statusCode }; -}; - -export default CustomError; diff --git a/contracts/src/bridge/frontend/pages/docs/[id].tsx b/contracts/src/bridge/frontend/pages/docs/[id].tsx deleted file mode 100644 index 3400f95f5b..0000000000 --- a/contracts/src/bridge/frontend/pages/docs/[id].tsx +++ /dev/null @@ -1,102 +0,0 @@ -import Layout from "@/src/components/layouts/default-layout"; -import Spinner from "@/src/components/ui/spinner"; -import { siteMetadata } from "@/src/lib/siteMetadata"; -import { useRouter } from "next/router"; -import React from "react"; -import Custom404Error from "../404"; -import { showToast } from "@/src/components/ui/use-toast"; -import { ToastType } from "@/src/types/interfaces"; - -type Document = { - title: string; - subHeading: string; - content: { - heading: string; - content: string[]; - }[]; -}; - -const Document = () => { - const { query } = useRouter(); - const { id } = query; - - const [document, setDocument] = React.useState({} as Document); - const [loading, setLoading] = React.useState(false); - - const getDocument = async () => { - setLoading(true); - try { - const response = await fetch(`/docs/${id}.json`); - const data = await response.json(); - const processedData = { - title: data.title, - subHeading: data.subHeading, - content: data.content.map((item: any) => { - return { - heading: item.heading, - content: item.content.map((paragraph: any) => { - return paragraph.replace( - /siteMetadata.email/g, - siteMetadata.email - ); - }), - }; - }), - }; - setDocument(processedData); - } catch (error) { - showToast(ToastType.DESTRUCTIVE, "Error fetching document"); - } finally { - setLoading(false); - } - }; - - React.useEffect(() => { - if (id) { - getDocument(); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [id]); - - return ( - -
- {!loading ? ( - !document.title ? ( - - ) : ( - <> -
-

- {document.title} -

-

- {document.subHeading} -

-
-
- {document.content && - document.content.map((section, index) => ( -
-

{section.heading}

- {section.content && - section.content.map((paragraph, index) => ( -
- ))} -
- ))} -
- - ) - ) : ( - - )} -
-
- ); -}; - -export default Document; diff --git a/contracts/src/bridge/frontend/pages/index.tsx b/contracts/src/bridge/frontend/pages/index.tsx index 5d5c212cef..c44af4c09e 100644 --- a/contracts/src/bridge/frontend/pages/index.tsx +++ b/contracts/src/bridge/frontend/pages/index.tsx @@ -1,7 +1,4 @@ -import React from "react"; import { Metadata } from "next"; -import Layout from "@/src/components/layouts/default-layout"; -import Dashboard from "@/src/components/modules/bridge"; export const metadata: Metadata = { title: "Ten Bridge", @@ -9,9 +6,5 @@ export const metadata: Metadata = { }; export default function DashboardPage() { - return ( - - - - ); + return
Dashboard
; } diff --git a/contracts/src/bridge/frontend/pages/transactions/index.tsx b/contracts/src/bridge/frontend/pages/transactions/index.tsx deleted file mode 100644 index 67facf6e53..0000000000 --- a/contracts/src/bridge/frontend/pages/transactions/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import React from "react"; -import { columns } from "@/src/components/modules/transactions/columns"; -import { DataTable } from "@/src/components/modules/common/data-table/data-table"; -import Layout from "@/src/components/layouts/default-layout"; -import { Metadata } from "next"; -import { - Tabs, - TabsContent, - TabsList, - TabsTrigger, -} from "@/src/components/ui/tabs"; -import Web3Service from "@/src/services/web3service"; -import { useWalletStore } from "@/src/components/providers/wallet-provider"; - -export const metadata: Metadata = { - title: "Transactions", - description: "A table of transactions.", -}; - -export default function Transactions() { - const { signer, provider, address } = useWalletStore(); - const { transactions, refetchTransactions } = { - transactions: { - result: { - TransactionsData: [], - Total: 0, - }, - }, - refetchTransactions: () => {}, - }; - const { TransactionsData, Total } = transactions?.result || { - TransactionsData: [], - Total: 0, - }; - - const getTransactions = async () => { - const web3Service = new Web3Service(signer); - const transactions = await web3Service.getBridgeTransactions( - provider, - address - ); - console.log(transactions); - }; - - React.useEffect(() => { - getTransactions(); - }, []); - - return ( - -
-

Transaction History

-

- View all transactions that have been made on the bridge. You can also - filter transactions by status. -

- - - All Transactions - Pending - - - {TransactionsData ? ( - - ) : ( -

Loading...

- )} -
- - {TransactionsData ? ( - - ) : ( -

Loading...

- )} -
-
-
-
- ); -} diff --git a/contracts/src/bridge/frontend/public/assets/images/black_logotype.png b/contracts/src/bridge/frontend/public/assets/images/black_logotype.png deleted file mode 100644 index f086b796a2b4fb945aea9e255af3e64ee336b53d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14589 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 T@0uTkL_2SetMKe>pB?`L?p!5C diff --git a/contracts/src/bridge/frontend/public/assets/images/clock.png b/contracts/src/bridge/frontend/public/assets/images/clock.png deleted file mode 100644 index 68de17ce0b49ebc7ddae2b28c3ea3bfb3eb67064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10767 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 IVkV*g4`KMEZU6uP diff --git a/contracts/src/bridge/frontend/public/assets/images/ten.svg b/contracts/src/bridge/frontend/public/assets/images/ten.svg deleted file mode 100644 index 67e8f68278..0000000000 --- a/contracts/src/bridge/frontend/public/assets/images/ten.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - -TEN. - diff --git a/contracts/src/bridge/frontend/public/assets/images/white_logotype.png b/contracts/src/bridge/frontend/public/assets/images/white_logotype.png deleted file mode 100644 index f3c47d13f97b761b56492611fc2ffcb2af358853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13581 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 diff --git a/contracts/src/bridge/frontend/public/docs/privacy.json b/contracts/src/bridge/frontend/public/docs/privacy.json deleted file mode 100644 index bcdd41c9f1..0000000000 --- a/contracts/src/bridge/frontend/public/docs/privacy.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "title": "Privacy Policy", - "subHeading": "Last Updated: November 28, 2023", - "content": [ - { - "heading": "1. LEGAL INFORMATION", - "content": [ - "This Privacy Policy informs how Obscuro Limited (hereinafter also – ”Controller”, “Owner”,” we”, “us” or “our”) processes information and personal data on the website https://www.ten.xyz/ as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (hereinafter – Platform).", - "We strive to protect all personal information that we receive or generate. This Privacy Policy (“Privacy Policy” or “Policy”) explains our data protection practices for our visitors. This Privacy Policy also explains the nature of the personal information we collect, the means by which we collect it, the purposes for which we collect it, and how we use, process, protect, and share it.", - "Please read this entire Privacy Policy before submitting information to this Platform. By accessing or using this Platform for any purpose and by submitting any of your personal information to us, you are consenting to the terms and conditions of this Policy and to our Terms of Service posted on this Platform. If you disagree with any part of this Privacy Policy or the Terms of Service, please do not use this Platform or any of our other services and do not share any personal information with us.", - "Data Controller: Obscuro Limited, company incorporated and registered in England and Wales under company number 13873741 with a registered office at Ground Floor, Cromwell House, 15 Andover Road, Winchester, SO23 7BT, UK.", - "Contact information: e-mail address: terms@obscu.ro" - ] - }, - { - "heading": "2. DEFINITIONS AND LEGAL REFERENCES", - "content": [ - "Personal Data (or Data) - Any information that directly, indirectly, or in connection with other information — including a personal identification number — allows for the identification or identifiability of a natural person.", - "Usage Data - Information collected automatically through this Platform (or third-party services employed in this Platform), which can include: the IP addresses or domain names of the computers utilised by the Users who use this Platform, the URI addresses (Uniform Resource Identifier), the time of the request, the method utilized to submit the request to the server, the size of the file received in response, the numerical code indicating the status of the server's answer (successful outcome, error, etc.), the country of origin, the features of the browser and the operating system utilized by the User, the various time details per visit (e.g., the time spent on each page within the Platform) and the details about the path followed within the Platform with special reference to the sequence of pages visited, and other parameters about the device operating system and/or the User's IT environment.", - "User - The individual using this Platform who, unless otherwise specified, coincides with the Data Subject.", - "Data Subject - The natural person to whom the Personal Data refers.", - "Data Processor (or Data Supervisor) - The natural or legal person, public authority, agency or other body which processes Personal Data on behalf of the Controller, as described in this privacy policy.", - "Data Controller (or Owner) - The natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of Personal Data, including the security measures concerning the operation and use of this Platform. The Data Controller, unless otherwise specified, is the Owner of this Platform.", - "This Platform - The means by which the Personal Data of the User is collected and processed.", - "Service - The service provided by this Platform as described in the relative terms and on this Platform." - ] - }, - { - "heading": "3. COLLECTING OF DATA", - "content": [ - "This section explains generally the sources from which, and the means by which, we collect and process personal information.", - "
  • Communicating with us. If you contact us in relation to any of the Services (via email, telephone, post or otherwise), We may collect and retain your contact details and your communication for the purpose of handling your query and keeping records of communications.
  • Submit personal information. When you submit personal information to us voluntarily, including when you communicate with us, pay for our services, or use any of our Services.
  • Visit our Platform. When you visit our Platform, we may collect location and other information from the internet browser you are using;
  • Technology technical information. When your communications with us provide us with certain technical information, such as internet protocol (IP) address, browser type, time zone setting and location, device operating system, and other technologies you may use to access our Platform or otherwise communicate with us.
  • Social media platforms (such as Discord, Twitter (X)). We receive information when you use your social media account while interacting with us on our Discord or Twitter and use our Services.
" - ] - }, - { - "heading": "4. COLLECTED DATA", - "content": [ - "We collect the following data:", - "
  • Identify and contact information, including your name, postal address, email address and phone number, and any other information you provide to prove you are eligible to use our Services;
  • Communications information, including records of your communications with us and our customer service team (such as records of emails, chat and in-app communications and voice recordings)
  • Social network information, including your interactions with us (such as messages) or our content (such as your likes) on social media (such as Discord or Twitter);
  • Technical information, including device identifiers, IP address, and where you have enabled location services, your GPS location, as well as information on how you use our Platform. This information is mainly collected through cookies and includes: your visits to our platform, the links you click on, through and from our site (including date and time), the services you view or search for, page response times, download errors, length of visits to certain pages, page interaction information (such as scrolling and clicks), and methods used to browse away from the page; technical information, including the internet protocol (IP) address used to connect your computer to the internet, your log-in information, the browser type and version, the time-zone setting, the operating system and platform, the type of device you use, a unique device identifier (for example, your device identifier, number, or the mobile phone number used by the device), mobile network information, your mobile operating system, the type of mobile browser you use; information stored on your device, including if you give us access to contact information from your address book, photos, videos or other digital content, check-ins. We collect this information from you, when you provide it to us directly or when we collect it through our Platform using technical means, such as cookies.
", - "We collect the following categories of Personal data for the following activities:", - "
ActivityCategories of Personal data
Visiting the Platform
  • Browsing Data
  • Technical Information
Contacting Obscuro Limited support teams
  • Identification Data
  • Contact Data
  • Content of your request
Allowing the visitors and Users to exercise their data protection rights
  • Identification Data
  • Contact Data
  • Content of the request
  • Data necessary to reply to the request addressed to Obscuro Limited
Complying with legal requests or manage litigation
  • Data necessary to prove Obscuro Limited compliance to its obligations and/or manage legal proceedings
Provide our Services on Platform
  • Identification Data
  • Contact Data
Sending you marketing communications or newsletter
  • Contact Data
" - ] - }, - { - "heading": "5. PURPOSE OF DATA COLLECTION", - "content": [ - "We use the personal information that we collect or receive from our Users for the purposes described in this Policy and for other business purposes allowed by law, including the development, delivery, and performance of our services, sharing with our affiliates for related business purposes, and as follows:", - "
  • To provide and maintain our Service, including to monitor the usage of our Service.
  • For the performance of a contract: the development, compliance and undertaking of the contract for the Services or of any other contract with us through the Service.
  • To contact you: To contact you by email, telephone calls, SMS, or other equivalent forms of electronic communication.
  • To manage your requests: To attend and manage your requests to us.
  • To respond to your requests and questions, resolve disputes, investigate and address your concerns, and monitor and improve our responses;
  • For testing, research, analysis, and a product and service development, including to improve our Platform and services;
  • To respond to law enforcement requests and as required by applicable laws, court orders, or governmental regulations;
  • For other purposes: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, marketing and your experience.
", - "We process personal data on the following legal basis for the following purposes:", - "
PurposeLegal Basis
If you communicate with us (for example, if you email or call us), we will use your information for dealing with your queries, training and customer service purposes.Contractual necessity: where you provide information that is necessary for us to fulfil our contract with you and provide our Services. Our legitimate interests are to handle your queries and provide you with the requested information, ensure high customer service quality and to train staff in responding to such requests.
To send you marketing communications about our Services (and the products or services of third parties that we make available through our Services), or to send you our newsletter when you sign up to receive this and to monitor whether you open our emails and/or click on URLs in our emails.We rely on your consent, where this is required by law. Otherwise, we rely on our legitimate interest to keep you informed of products and services on our platforms, when we are allowed by law to do so.
To carry out market research and create marketing profiles about our users and understand their preferences in relation to our Services (including the products and services available through these).Our legitimate interest to carry out marketing activities.
To display our advertisements to you on other platforms, such as social media platforms or to display on our website and app advertisements which we think you might like.Your consent, where we obtain this information by using cookies or where otherwise required by law. Otherwise, we rely on our and third parties’ legitimate interests to carry out marketing activities and inform you of products and services we think you might like.
To compile statistics and analysis about the use of our Services and use such statistics to enable us to provide a better service, features, and functionality to you and other users. Your consent, where we obtain this information by using cookies.Our legitimate interests (where consent is not required by law) so as to ensure the smooth and effective functioning of our Services, to make sound business decisions about our products and services and to design, inform and deploy our business strategies.
To respond to legitimate requests for the disclosure of information, made by public authorities, law enforcement or government bodies or under a court order.Legal requirement, to the extent we are obliged under law to process such requests. Our legitimate interests to assist legitimate investigations carried out by official authorities.
To respond to complaints, to protect our legal rights and to establish, exercise or defend legal claims relating to our platforms and/or our products and services.Our legitimate interests to protect our legal rights.
For tax, accounting, record keeping and audit purposes.Legal requirements, to the extent the law requires that we use your information (for example, to comply with our tax obligations).
", - "Wherever we rely on consent, you will always be able to withdraw that consent at any time, although we may have other legal grounds for processing your data for other purposes, such as those set out above. You have an absolute right to opt-out of direct marketing, or profiling we carry out for direct marketing purposes, at any time. You can do this by clicking on the unsubscribe link in the relevant marketing communication or emailing us at - terms@obscu.ro.", - "We do not use your personal information to take automated decisions about you which have a legal or similarly significant effect on you." - ] - }, - { - "heading": "6. METHODS OF DATA PROCESSING", - "content": [ - "Obscuro Limited takes appropriate security measures to prevent unauthorized access, disclosure, modification, or unauthorized destruction of the Data.", - "The Data processing is carried out using computers and/or IT enabled tools, following organizational procedures and modes strictly related to the purposes indicated. In addition to Obscuro Limited, in some cases, the Data may be accessible to certain types of persons in charge, involved with the operation of this Platform (administration, sales, marketing, legal, system administration) or external parties (such as third-party technical service providers, mail carriers, hosting providers, IT companies, communications agencies) appointed, if necessary, as Data Processors by Obscuro Limited. The updated list of these parties may be requested from the Owner at any time." - ] - }, - { - "heading": "7. TRANSFERS AND SHARING OF DATA", - "content": [ - "Depending on the User's location, data transfers may involve transferring the User's Data to a country other than their own. If any such transfer takes place, Users can find out more by checking the relevant sections of this document or inquire with Obscuro Limited using the information provided in the contact section.", - "Where we need to transfer your personal data outside the European Economic Area (“EEA”), the United Kingdom or Switzerland, and where this is to a stakeholder or vendor in a country that is not subject to an adequacy decision by the EU Commission, data is adequately protected by EU Commission approved standard contractual clauses or a vendor’s Processor Binding Corporate Rules.", - "Obscuro Limited may store, process, and/or transfer personal data to countries outside of the European Economic Area (EEA) (including countries where the European Commission has not made a decision of an adequate level of protection of personal data), but in these cases Obscuro Limited will ask for specific consent regarding these data transfers.", - "In this case, Obscuro Limited processes your data in United Kingdom.", - "We may share your personal data with following recipients:", - "
  • Internal recipients – your Personal data will only be disclosed to authorised employees that require access to fulfil their obligations (e.g. support teams, developers, etc.). Our employees are specifically trained and made aware of the sensitivity of your Personal data and the requirements necessary to ensure the protection of your right to privacy.
  • Judicial, administrative and other public authorities – Obscuro Limited may have to share or disclose some of your Personal data if it is required to do so by the law, by a request meaning from a competent authority., to comply with a court order, to obtain legal remedies or defend Obscuro Limited’s rights, to contribute with investigations (e.g. fraud, identity theft, etc.).
  • Service providers - We share personal data with third-party service providers, who will process it on our behalf for the purposes identified above. These parties will use your information on our instructions, only in order to provide us with their services. In particular, we use third-party providers of website hosting, maintenance, IT services, mail carriers, customer support, communications and marketing services, identity checking.
  • Social media networks and advertisers - subject to your marketing preferences, we share information with social media networks, such as Twitter, Discord, and advertisers to present our ads to you on other platforms.
  • Business advisers - We share information with our legal advisers, accountants, business consultants, insurers and other business advisers, to the extent it is necessary for them to provide us with their services.
" - ] - }, - { - "heading": "8. RETENTION TIME", - "content": [ - "We will store your personal information for as long as it is required for us to fulfil the purposes for which we have collected it, as described in this Policy, and for such further period that is necessary to comply with our legal and regulatory obligations, to exercise our legal rights and to protect our business from legal claims. Therefore:", - "
  • Personal Data collected for purposes related to the performance of a contract between the Owner and the User shall be retained until such contract has been fully performed.
  • Personal Data collected for the purposes of the Owner’s legitimate interests shall be retained as long as needed to fulfil such purposes. Users may find specific information regarding the legitimate interests pursued by the Owner within the relevant sections of this document or by contacting the Owner.
  • Obscuro Limited may be allowed to retain Personal Data for a longer period whenever the User has given consent to such processing, as long as such consent is not withdrawn. Furthermore, the Owner may be obliged to retain Personal Data for a longer period whenever required to do so for the performance of a legal obligation or upon order of an authority.
  • Once the retention period expires, Personal Data shall be deleted. Therefore, the right of access, the right to erasure, the right to rectification and the right to data portability cannot be enforced after expiration of the retention period.
", - "Obscuro Limited may be allowed to retain Personal Data for a longer period whenever the User has given consent to such processing, as long as such consent is not withdrawn. Furthermore, the Owner may be obliged to retain Personal Data for a longer period whenever required to do so for the performance of a legal obligation or upon order of an authority.", - "Once the retention period expires, Personal Data shall be deleted. Therefore, the right of access, the right to erasure, the right to rectification and the right to data portability cannot be enforced after expiration of the retention period." - ] - }, - { - "heading": "9. RIGHTS UNDER GDPR", - "content": [ - "Users may exercise certain rights regarding their Data processed by Obscuro Limited. In particular, Users have the right to do the following:", - "
  • Withdraw consent at any time. Users have the right to withdraw consent where they have previously given their consent to the processing of their Personal Data.
  • Object to processing of Data. Users have the right to object to the processing of their Data if the processing is carried out on a legal basis other than consent. Further details are provided in the dedicated section below.
  • Access Data. Users have the right to learn if Data is being processed by the Owner, obtain disclosure regarding certain aspects of the processing and obtain a copy of the Data undergoing processing.
  • Verify and seek rectification. Users have the right to verify the accuracy of their Data and ask for it to be updated or corrected.
  • Restrict the processing of their Data. Users have the right, under certain circumstances, to restrict the processing of their Data. In this case, the Owner will not process their Data for any purpose other than storing it.
  • Have their Personal Data deleted or otherwise removed. Users have the right, under certain circumstances, to obtain the erasure of their Data from the Owner.
  • Receive their Data and have it transferred to another controller. Users have the right to receive their Data in a structured, commonly used and machine readable format and, if technically feasible, to have it transmitted to another controller without any hindrance. This provision is applicable provided that the Data is processed by automated means and that the processing is based on the User's consent, on a contract which the User is part of or on pre-contractual obligations thereof.
  • Lodge a complaint. If you have unresolved concerns, you have the right to complain to the data protection authority, which in the UK is the Information Commissioner’s Office.
", - "Any requests to exercise User rights can be directed to Obscuro Limited through the contact details provided in this document. These requests can be exercised free of charge and will be addressed by the Owner as early as possible and always within one month.", - "If user has any issues regarding data processing done by Obscuro Limited, user can send request to the Information Commissioner’s Office." - ] - }, - { - "heading": "ADDITIONAL INFORMATION ABOUT DATA COLLECTION AND PROCESSING", - "content": [ - "
  • Legal action. The User's Personal Data may be used for legal purposes by Obscuro Limited in Court or in the stages leading to possible legal action arising from improper use of this Platform or the related Services.
  • System logs and maintenance.For operation and maintenance purposes, this Platform and any third-party services may collect files that record interaction with this Platform (System logs) use other Personal Data (such as the IP Address) for this purpose.
  • Information not contained in this policy.More details concerning the collection or processing of Personal Data may be requested from Obscuro Limited at any time. Please see the contact information at the beginning of this document.
  • Visiting Third-Party Platforms.Our Platform may contain links or references to third party websites. These websites are outside of our control, and the privacy policies of these sites may differ from our own. Please be aware that we have no control over these third-party websites and our Privacy Policy does not apply to such websites. We encourage you to check the terms of use and privacy policies of such sites before disclosing any personal information via such sites. The privacy policy of the third party site will govern how information collected from you is used by the owner of the website. You can always know what Platform you are on by checking the Uniform Resource Locator (URL) in the location bar within your browser.
" - ] - }, - { - "heading": "CHANGES TO THIS PRIVACY POLICY", - "content": [ - "Obscuro Limited reserves the right to make changes to this privacy policy at any time by notifying its Users on this page and possibly within this Platform and/or - as far as technically and legally feasible - sending a notice to Users via any contact information available to Obscuro Limited. It is strongly recommended to check this page often, referring to the date of the last modification listed at the bottom.", - "Should the changes affect processing activities performed on the basis of the User’s consent, Obscuro Limited shall collect new consent from the User, where required." - ] - } - ] -} diff --git a/contracts/src/bridge/frontend/public/docs/terms.json b/contracts/src/bridge/frontend/public/docs/terms.json deleted file mode 100644 index ff0769351e..0000000000 --- a/contracts/src/bridge/frontend/public/docs/terms.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "title": "Terms of Service", - "subHeading": "Last Updated, November 22, 2023", - "content": [ - { - "heading": "1. GENERAL INFORMATION", - "content": [ - "Obscuro Limited (“our,” “us,” “we” or “Obscuro Labs“), a private limited company incorporated and registered in England and Wales under company number 13873741 with a registered office at Ground Floor, Cromwell House, 15 Andover Road, Winchester, SO23 7BT, UK, welcomes you. These Terms of Service (\"Terms\") govern your access to and use of the Website, Ten Testnet services and software (collectively, the \"Services\"). By using our Services, you agree to these Terms.", - "These Terms set forth the legal terms and conditions governing your Testnet use. These Terms, along with any of our other policies and rules referenced herein, comprise the entire understanding between you and Obscuro Labs regarding the Services and supersede all other agreements, understandings, or representations with respect to such subject matter, either written or oral. If you do not agree to these Terms, do not use our Services.", - "By using our Services, you confirm that you accept these Terms and that you agree to be bound by and comply with these Terms, and you represent and warrant that you have the willingness, right, authority, and capacity to enter into these Terms (on behalf of yourself or the entity that you represent). If you do not agree to all of these Terms in their entirety, you may not use the Services or any other related site in any manner.", - "You must be 18 years of age or older to use the Services. By using the Services, you confirm, represent and warrant that you meet these requirements." - ] - }, - { - "heading": "2. DISCLAIMER", - "content": [ - "You expressly acknowledge that your use of the Services is provided to you on an “as is” and “as available” basis without any warranty under these Terms and to the extent allowed by applicable law, all express or implied conditions, representations and warranties including without limitation, any implied warranties or conditions of merchantability, fitness for a particular purpose, satisfactory quality, or arising from a course of dealing usage or trade practice, or warranty of non-infringement are disclaimed.", - "In instances where we discuss future ideas or potential developments, we are expressing our vision and aspirations. However, this should not be interpreted as a binding commitment or a guarantee that these concepts will materialise, that we will implement any of them, or that they will prove effective.", - "You must obtain professional or specialist advice before taking, or refraining from, any action on the basis of the content on our Services or Terms." - ] - }, - { - "heading": "3. PRIVACY", - "content": [ - "Your privacy is important to us. In using the Services, you may be required to provide certain personal information. We will use this information solely for the purpose of facilitating your use of the Services, including but not limited to identity verification, compliance with legal obligations, and improving the Services. We will not share your personal data with third parties, except as required by law or for the purpose of providing the Services. Your data will be stored securely and will be deleted when no longer necessary for the provision of the Services or as required by applicable law." - ] - }, - { - "heading": "4. INTELLECTUAL PROPERTY RIGHTS; FEEDBACK", - "content": [ - "All the copyright and other intellectual property rights in our Services are reserved.", - "Neither these Terms nor your access to the Services transfers to you or any third party any rights, title, or interest to such intellectual property rights. You agree not to take any action(s) inconsistent with such ownership interests. We reserve all rights in connection with the Services and its content, including, without limitation, the exclusive right to create derivative works.", - "Obscuro Labs welcomes feedback, comments and suggestions for improvements to the Testnet and related technologies of the Services (“Feedback”). You grant to Obscuro Labs a non-exclusive, transferable, worldwide, perpetual, irrevocable, fully-paid, royalty-free license, with the right to sublicense, under any and all intellectual property rights that you own or control to use, copy, modify, create derivative works based upon and otherwise exploit the Feedback for any purpose, in any form, format, media or media channels now known or later developed or discovered." - ] - }, - { - "heading": "5. THIRD-PARTY MATERIALS", - "content": [ - "A third-party product site link is not an indication that we endorse such third-party products or are in a manner affiliated with them. Any time we link to, quote, or otherwise reference any third-party products or reproduce or incorporate their information, content, or material, it is solely for informational purposes. These third-party products are owned, operated, and controlled by third parties. We strongly advise you to read the terms and conditions and privacy policies of any third-party products you visit and/or use. When you use or rely on any third-party products, you do so at your own risk. You understand that you are solely responsible for any fees or costs associated with using third-party products and that, unless stated herein, the Terms do not otherwise apply to your dealings or relationships with any third parties or third-party products, and we assume no obligations or liability and make no representations or warranties regarding such third-party products." - ] - }, - { - "heading": "6. RESTRICTIONS ON THE USE OF THE SERVICES", - "content": [ - "You may only use the Services for lawful purposes and in compliance with these Terms. You agree not to use the Website and Services to do any of the following:", - "
  • violate any applicable law or regulation, including, without limitation, any applicable sanctions laws, export control laws, securities laws, anti-money laundering laws, privacy laws;
  • use any device, software or routine that interferes with or compromises the integrity, security, or proper functioning of our Services;
  • damage or disrupt any parts of the Services, the server(s) on which the Services run or any server, computer, or database connected to the Services;
  • further or promote any criminal activity or enterprise or provide instructional information about illegal activities; or
  • encourage or enable any other individual to do any of the foregoing.
" - ] - }, - { - "heading": "7. INDEMNITY", - "content": [ - "You acknowledge and agree to, at your own expense, defend, indemnify and hold harmless Obscuro Labs and its affiliates and their respective equity holders, directors, officers, employees, managers, partners, service providers, licensors, licensees, representatives, agents and successors (“Indemnified Parties“) from any claim, actions, liabilities, losses, damages, suits and expenses, costs of whatever kind, including attorneys’ and expert fees and legal expenses, that we incur in connection with or arising out of your use of the Services, including but not limited to:
  • any breach or violation of these Terms by you;
  • material entered into or transmitted through the Services by you or a third party acting at your request;
  • your use of any third-party products;
  • a claim that any use of the Services by you infringes any intellectual property right of any third party, or any right of privacy or publicity, is libellous or defamatory, or otherwise results in injury or damage to any third party; or
  • any deletions, additions, insertions, or alterations to, or any unauthorised use of, the Services by you (collectively, “Claims“). You agree to promptly notify us of any third-party Claims and cooperate with the Indemnified Parties in defending such Claims. We reserve the right to assume the exclusive defence and control of any Claim and matter otherwise subject to indemnification by you at your expense, and you shall not in any event settle or otherwise dispose of any matter without our prior written consent.
" - ] - }, - { - "heading": "8. LIMITATIONS OF LIABILITY", - "content": [ - "TO THE FULLEST EXTENT ALLOWED BY APPLICABLE LAW, UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE) SHALL THE INDEMNIFIED PARTIES OR ANY OF THEM BE LIABLE TO YOU OR TO ANY OTHER PERSON FOR:
  • ANY INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING DAMAGES FOR LOST PROFITS, BUSINESS, OR REVENUE, BUSINESS INTERRUPTION, LOSS OF DATA, LOSS OF BUSINESS OPPORTUNITY, GOODWILL OR REPUTATION, WORK STOPPAGE, ACCURACY OF RESULTS, OR COMPUTER FAILURE OR MALFUNCTION;
  • ANY SUBSTITUTE GOODS, SERVICES OR TECHNOLOGY;
  • ANY AMOUNT, IN THE AGGREGATE, IN EXCESS OF ONE-HUNDRED POUNDS (£100); OR
  • ANY MATTER BEYOND THE REASONABLE CONTROL OF THE INDEMNIFIED PARTIES OR ANY OF THEM.
", - "SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL OR CERTAIN OTHER DAMAGES, SO THE FOREGOING LIMITATIONS AND EXCLUSIONS MAY NOT APPLY TO YOU.", - "Nothing in these Terms is intended to exclude or limit our liability for death or personal injury caused by our negligence, or for fraud or fraudulent misrepresentation, or to affect your statutory rights." - ] - }, - { - "heading": "9. TERMINATION", - "content": [ - "We may terminate or suspend your access to our Services at any time for any reason." - ] - }, - { - "heading": "10. FORCE MAJEURE", - "content": [ - "You acknowledge and agree that we will not be liable for failures or delays in providing Services or other non-performance caused by events including but not limited to strikes, insurrection, riot, civil unrest, war, fires, utility, or power failures, equipment failures, changes in law, cyberattacks, denial of service attacks, non-performance of our vendors or suppliers, acts of god, pandemic or epidemic events, or other causes over which we have no reasonable control. We will make reasonable efforts to limit the effect of any of those events and start or restart the Website and Services as soon as those events have been fixed." - ] - }, - { - "heading": "11. COMPLAINTS, DISPUTES AND GOVERNING LAW", - "content": [ - "Any dispute, claim or request for relief arising out of or in connection with these Terms and/or the Services, including any question regarding its existence, validity or termination, shall be referred to and finally resolved by arbitration under the LCIA Rules, which Rules are deemed to be incorporated by reference into this clause. The number of arbitrators shall be one. The seat, or legal place, of arbitration, shall be London, United Kingdom. The language to be used in the arbitration shall be English. The governing law shall be the substantive law of England.", - "To the extent there is a dispute regarding any Claim (including questions about the scope, applicability, interpretation, validity, and enforceability of this arbitration agreement), you and Obscuro Labs agree that this threshold dispute shall be delegated to the arbitrator (not a court) and that the arbitrator shall have initial authority to resolve such threshold disputes, except as expressly provided below. The arbitration will be final and binding, and the judgement on the award rendered by the arbitrator(s) may be entered in any court having jurisdiction thereof. Please be advised that all arbitration proceedings are confidential unless the parties agree otherwise.", - "If you are a UK or EU resident and use the Services mainly for non-business purposes, you can bring proceedings in any competent courts in the country of your main residence that has jurisdiction over your claim or dispute.", - "Governing law. These Terms and any issue, claim or dispute between you and us that arises out of them (or otherwise relating to the Services) will be governed by the laws of England. However, any additional, mandatory consumer rights and protections that you are entitled to under the laws of the country in which you reside will also apply." - ] - }, - { - "heading": "12. CHANGES TO THESE TERMS", - "content": [ - "We reserve the right, in our sole discretion, to modify, suspend or discontinue the Terms and /or Services (or any features or parts thereof) from time to time to reflect changes to our Services, our users’ needs, our business priorities or changes in laws applicable to us, without liability to you. We will give you reasonable notice when we change our Terms. Your continued use of the Services following the posting of revised Terms means that you accept and agree to the changes. Please check these Terms regularly to ensure you agree with the most recent version." - ] - }, - { - "heading": "13. UPDATES; MONITORING", - "content": [ - "We may make any improvement, modifications or updates to the Services, including but not limited to changes and updates to the underlying software, infrastructure, security protocols, technical configurations or service features (the “Updates”) from time to time. Your continued access and use of our Services are subject to such Updates and you shall accept any patches, system upgrades, bug fixes, feature modifications, or other maintenance work that arise out of such Updates. We are not liable for any failure by you to accept and use such Updates in the manner specified or required by us. Although the Company is not obligated to monitor access to or participation in the Services, it has the right to do so for the purpose of operating the Services, to ensure compliance with the Terms and to comply with applicable law or other legal requirements." - ] - }, - { - "heading": "14. GENERAL TERMS", - "content": [ - "Information Only. You agree that the Services (or any information provided by or obtained from the Services) are for informational purposes only, are not intended to be relied upon for professional advice of any sort, and is not a substitute for information from experts or professionals in the applicable area. You should not take, or refrain from taking, any action or decision based on any information contained in the Services. If, and before you make any financial, legal, or other decisions involving the Services, you should seek independent professional advice from an individual who is licensed and qualified in the area for which such advice would be appropriate.", - "Open-Source: Ten is being developed on an open-source basis under the GNU Affero General Public License, Version 3.0, the terms of which are found here: https://www.gnu.org/licenses/agpl-3.0.html (the “AGPLv3 Licence“). By accessing, using, copying (or similar) the Services, you agree that the Services shall be governed by the AGPLv3 Licence (and the Terms herein). The Services are licensed under the AGPLv3 License and you undertake that you will not use the Services except in compliance with the AGPLv3 License and these Terms. You agree that any software developed using the Services, shall be made available for the public to use on an open source basis, on the AGPLv3 License terms.", - "Compliance with Law. You represent and warrant that you will comply with all laws that apply to you, your use of the Services, and your actions and omissions that relate to the Services. If your use of the Services is prohibited by applicable laws, then you aren’t authorised to use the Services. We will not be responsible for your using the Services (and developing and/or deploying any software) in a way that is a violation of any law. Without limiting the foregoing, you represent and warrant that you are not, and for the duration of the time you use the Services (to develop any software or similar) will not be (a) the subject of economic or trade sanctions administered or enforced by any governmental authority or otherwise designated on any list of prohibited or restricted parties (including but not limited to the United Nations Security Council, the European Union, His Majesty’s Treasury, and U.S. Department of Treasury), or (b) a citizen, resident, or organised in a jurisdiction or territory that is the subject of comprehensive country-wide, territory-wide, or regional economic sanctions by the United Nations, European Union, any EU country, UK Treasury, or the United States, including without limitation Cuba, the Crimea, Donetsk, and Luhansk regions of Ukraine, Iran, North Korea, Russia, Syria, Yemen and any other regions and/or countries sanctioned from time to time. If at any point the above is no longer true, you must immediately cease using the Services.", - "Assumption of Risk. By using the Services, you (a) represent that you are sophisticated enough to understand the various inherent risks of using cryptographic and public blockchain-based systems, including but not limited to the Services and digital assets, and (b) acknowledge and accept all such risks, and agree that we make no representations or warranties (expressly or implicitly) regarding, and that you will not hold us liable for those risks, including but not limited to the risks described below, any or all of which could lead to losses and damages, including the total and irrevocable loss of your assets. These risks include, but are not limited to:", - "
  • Wallet security and safekeeping. You are solely responsible for the safeguarding and security of your Web3 wallets. If you lose your wallet seed phrase, private keys, or password, you may be forever unable to access your digital assets. Any unauthorised access to your wallet by third parties could result in the loss or theft of your digital assets. We have no involvement in, or responsibility for, storing, retaining, securing or recovering your Web3 wallet seed phrases, private keys, or passwords, or for any unauthorised access to your Web3 wallet.
  • Blockchain technology. Public blockchains, and the technology underlying and interacting with cryptographic and public blockchain-based systems, are experimental, inherently risky, and subject to change. Among other risks, bugs, malfunctions, cyberattacks, or changes to a particular public blockchain (e.g., via forks) could disrupt these technologies irreparably. There is no guarantee that any of these technologies will not become unavailable, degraded, or subject to hardware or software errors, operational or technical difficulties, denial-of-service attacks, other cyberattacks, or other problems requiring maintenance, interruptions, delays, or errors.
  • Network cost and performance. The cost, speed, and availability of transacting on public blockchain systems are subject to significant variability. There is no guarantee that any transfer will be confirmed or transferred successfully.
  • Blockchain transactions and smart contract execution. Public blockchain-based transactions (including but not limited to transactions automatically executed by smart contracts) are generally considered irreversible when confirmed. Any transaction that will interact with smart contracts or be recorded on a public blockchain must be recorded with extreme caution.
  • Digital assets. The markets for digital assets are nascent and highly volatile due to various risk factors including (but not limited to) adoption, speculation, technology, security, and regulation. Digital assets and their underlying blockchain networks are complex emerging technologies that may be subject to delays, halts or go offline as a result of errors, forks, attacks or other unforeseeable reasons. Anyone can create a digital asset, including fake versions of existing digital assets and digital assets that falsely claim to represent projects. So-called stablecoins may not be as stable as they purport to be, may not be fully or adequately collateralised, and may be subject to panics and runs. You are solely responsible for understanding the risks specific to each digital asset that is relevant to you.
  • Bridging. In addition to being an especially novel and untested implementation of blockchain technology in general, cross-blockchain bridging technology has historically been, and may in the future be, the subject of numerous cyberattacks and exploits, including without limitation, hacks that exploit a vulnerability in the associated software, hardware, systems or other equipment or social engineering to gain control of any bridge components, wallets, smart contracts or other related systems.
  • Control of the Services. The Services may be subject to periodic upgrades, which may introduce other risks, bugs, malfunctions, cyberattack vectors, or other changes to the Services that could disrupt the operation of the Services, the functionality of bridging, your ability to access bridged digital assets, or otherwise cause you damage or loss.
  • Third Party Risks. Third-party products carry their own individual, oftentimes highly significant risks. When you use the Services to interact with any third-party products, you are subject to all of those risks.
  • Legislative and regulatory risks. Digital assets, blockchain technology, and any related software and services are subject to legal and regulatory uncertainty in many jurisdictions. Legislative and regulatory changes or actions may adversely affect the usage, transferability, transactability and accessibility of digital assets, bridging or the Services.
", - "Release of claims. You expressly agree that you assume all risks and liabilities in connection with your use of the Services (including, without limitation, the development and/or deployment of any software under or in connection with the Services), as such are detailed above and as permitted under applicable laws. You further expressly waive and release Obscuro Labs, as well as its affiliates and service providers, and each of their respective past, present and future officers, directors, members, employees, consultants, representatives and agents, and each of their respective successors and assigns from any and all liability, claims, causes of action, or damages arising from or in any way relating to your use of the Services." - ] - }, - { - "heading": "15. CONTACT INFORMATION", - "content": [ - "If you have any questions about the Website or these Terms, please contact us at siteMetadata.email" - ] - } - ] -} diff --git a/contracts/src/bridge/frontend/src/components/head-seo.tsx b/contracts/src/bridge/frontend/src/components/head-seo.tsx deleted file mode 100644 index bb3c840ead..0000000000 --- a/contracts/src/bridge/frontend/src/components/head-seo.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import Head from "next/head"; -import { siteMetadata } from "../lib/siteMetadata"; -import { SeoProps } from "@/src/types"; - -const HeadSeo = ({ - title, - description, - canonicalUrl, - ogTwitterImage, - ogImageUrl, - ogType, - children, -}: SeoProps) => { - return ( - - {/* Basic metadata */} - {title} - - - - {/* Beagle Security */} - - {/* SECURITY: to prevent the page from being loaded in an iFrame */} - - {/* to indicate the browser shouldn't interpret the response as something other than the specified content type */} - - {/* The Content-Security-Policy header is used to prevent a wide range of attacks, including Cross-Site Scripting (XSS) and other cross-site injections. */} - {/* twitter metadata */} - - - - - - {/* canonical link */} - - {/* open graph metadata */} - - - - - - - - {children} - - ); -}; - -export default HeadSeo; diff --git a/contracts/src/bridge/frontend/src/components/health-indicator.tsx b/contracts/src/bridge/frontend/src/components/health-indicator.tsx deleted file mode 100644 index 398314685a..0000000000 --- a/contracts/src/bridge/frontend/src/components/health-indicator.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from "react"; -import { Badge, badgeVariants } from "./ui/badge"; -import { useGeneralService } from "../services/useGeneralService"; -import { Skeleton } from "./ui/skeleton"; - -const HealthIndicator = () => { - const [status, setStatus] = React.useState(false); - const { testnetStatus, isStatusLoading } = useGeneralService(); - - // if testnetStatus.result is true, status is set to true - // if testnetStatus.result is false but testnetStatus.error includes [p2p], status is set to true - - React.useEffect(() => { - if (testnetStatus?.result) { - setStatus(true); - //@ts-ignore - } else if (testnetStatus?.errors?.includes("[p2p]")) { - setStatus(true); - } else { - setStatus(false); - } - }, [testnetStatus]); - - return ( -
-

Testnet Status:

- - {isStatusLoading ? ( - - ) : status ? ( - "Live" - ) : ( - "Down" - )} - -
- ); -}; - -export default HealthIndicator; diff --git a/contracts/src/bridge/frontend/src/components/layouts/default-layout.tsx b/contracts/src/bridge/frontend/src/components/layouts/default-layout.tsx deleted file mode 100644 index 2c4b262837..0000000000 --- a/contracts/src/bridge/frontend/src/components/layouts/default-layout.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from "react"; -import Header from "./header"; -import Footer from "./footer"; - -interface LayoutProps { - children: React.ReactNode; -} - -const Layout = ({ children }: LayoutProps) => { - return ( -
-
-
-
{children}
-
-
-
- ); -}; - -export default Layout; diff --git a/contracts/src/bridge/frontend/src/components/layouts/footer.tsx b/contracts/src/bridge/frontend/src/components/layouts/footer.tsx deleted file mode 100644 index c83839d616..0000000000 --- a/contracts/src/bridge/frontend/src/components/layouts/footer.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import Link from "next/link"; -import { socialLinks } from "../../lib/constants"; -import { - GitHubLogoIcon, - TwitterLogoIcon, - DiscordLogoIcon, -} from "@radix-ui/react-icons"; - -const SOCIAL_LINKS = [ - { - name: "GitHub", - href: socialLinks.github, - icon: GitHubLogoIcon, - }, - { - name: "Twitter", - href: socialLinks.twitter, - icon: TwitterLogoIcon, - }, - { - name: "Discord", - href: socialLinks.discord, - icon: DiscordLogoIcon, - }, -]; - -export default function Footer() { - return ( -
-
-
- {SOCIAL_LINKS.map((item, index) => ( - - - - ))} -
-
- - Privacy - - - Terms - -
-
-
- ); -} diff --git a/contracts/src/bridge/frontend/src/components/layouts/header.tsx b/contracts/src/bridge/frontend/src/components/layouts/header.tsx deleted file mode 100644 index 52acebc559..0000000000 --- a/contracts/src/bridge/frontend/src/components/layouts/header.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { MainNav } from "../main-nav"; -import { ModeToggle } from "../mode-toggle"; -import ConnectWalletButton from "../modules/common/connect-wallet"; -import Link from "next/link"; -import { HamburgerMenuIcon } from "@radix-ui/react-icons"; -import { useState } from "react"; -import { Button } from "../ui/button"; -import HealthIndicator from "../health-indicator"; -import Image from "next/image"; - -export default function Header() { - return ( -
-
- - Logo - Logo - - -
- - - -
-
- -
-
-
- ); -} - -const MobileMenu = () => { - const [menuOpen, setMenuOpen] = useState(false); - - return ( -
- - - {menuOpen && ( -
-
-
- - -
-
-
- )} -
- ); -}; diff --git a/contracts/src/bridge/frontend/src/components/main-nav.tsx b/contracts/src/bridge/frontend/src/components/main-nav.tsx deleted file mode 100644 index 0adafeafbb..0000000000 --- a/contracts/src/bridge/frontend/src/components/main-nav.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import React from "react"; -import Link from "next/link"; -import { useRouter } from "next/router"; - -import { cn } from "../lib/utils"; -import { Button } from "./ui/button"; -import { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuGroup, - DropdownMenuItem, -} from "./ui/dropdown-menu"; - -import { ChevronDownIcon } from "@radix-ui/react-icons"; -import { NavLink } from "../types"; -import { NavLinks } from "../routes"; - -const NavItem = ({ navLink }: { navLink: NavLink }) => { - const router = useRouter(); - - const isDropdownActive = (navLink: NavLink) => { - return navLink.subNavLinks?.some( - (subNavLink: NavLink) => - subNavLink.href && router.pathname.includes(subNavLink.href) - ); - }; - if (navLink.isDropdown) { - return ( - - - - - - - {navLink.subNavLinks && - navLink.subNavLinks.map((subNavLink: NavLink) => ( - - - - ))} - - - - ); - } else if (navLink.isExternal) { - return ( - - {navLink.label} - - ); - } else { - return ( - - {navLink.label} - - ); - } -}; - -export const MainNav = ({ - className, - ...props -}: React.HTMLAttributes) => ( - -); diff --git a/contracts/src/bridge/frontend/src/components/mode-toggle.tsx b/contracts/src/bridge/frontend/src/components/mode-toggle.tsx deleted file mode 100644 index 653c922006..0000000000 --- a/contracts/src/bridge/frontend/src/components/mode-toggle.tsx +++ /dev/null @@ -1,40 +0,0 @@ -"use client"; - -import * as React from "react"; -import { Moon, Sun } from "lucide-react"; -import { useTheme } from "next-themes"; - -import { Button } from "./ui/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "./ui/dropdown-menu"; - -export function ModeToggle() { - const { setTheme } = useTheme(); - - return ( - - - - - - setTheme("light")}> - Light - - setTheme("dark")}> - Dark - - setTheme("system")}> - System - - - - ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/bridge/index.tsx b/contracts/src/bridge/frontend/src/components/modules/bridge/index.tsx deleted file mode 100644 index 55757768f6..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/bridge/index.tsx +++ /dev/null @@ -1,409 +0,0 @@ -import React from "react"; -import { - CardHeader, - CardTitle, - CardContent, - Card, - CardDescription, -} from "@/src/components/ui/card"; -import { Button } from "@/src/components/ui/button"; -import { Skeleton } from "@/src/components/ui/skeleton"; -import { ArrowDownUpIcon, Terminal } from "lucide-react"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "../../ui/select"; -import { Separator } from "../../ui/separator"; - -import { - Form, - FormControl, - FormDescription, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/src/components/ui/form"; -import { Input } from "@/src/components/ui/input"; -import { toast } from "@/src/components/ui/use-toast"; -import { DrawerDialog } from "../common/drawer-dialog"; -import { L1TOKENS, L2TOKENS, PERCENTAGES } from "@/src/lib/constants"; -import { z } from "zod"; -import { useFormHook } from "@/src/hooks/useForm"; -import Web3Service from "@/src/services/web3service"; -import { useWalletStore } from "../../providers/wallet-provider"; -import { ToastType, Token } from "@/src/types"; -import { Alert, AlertDescription } from "../../ui/alert"; -import ConnectWalletButton from "../common/connect-wallet"; -import Copy from "../common/copy"; - -export default function Dashboard() { - const { - signer, - provider, - address, - walletConnected, - switchNetwork, - isL1ToL2, - fromChains, - toChains, - connectWallet, - } = useWalletStore(); - const web3Service = new Web3Service(signer); - - const { form, FormSchema } = useFormHook(); - const [loading, setLoading] = React.useState(false); - const [fromTokenBalance, setFromTokenBalance] = React.useState(0); - - const tokens = isL1ToL2 ? L1TOKENS : L2TOKENS; - const receiver = React.useMemo(() => form.watch("receiver"), [form.watch]); - - const swapTokens = () => { - switchNetwork(isL1ToL2 ? "L2" : "L1"); - }; - - const watchTokenChange = form.watch("token"); - React.useEffect(() => { - const getTokenBalance = async (value: string, token: Token) => { - setLoading(true); - try { - tokens.find((t) => t.value === value); - let balance; - if (token.isNative) { - balance = await web3Service.getNativeBalance(provider, address); - } else { - balance = await web3Service.getTokenBalance( - token.address, - address, - provider - ); - } - setFromTokenBalance(balance); - } catch (error) { - console.error(error); - } finally { - setLoading(false); - } - }; - - if (watchTokenChange) { - const token = tokens.find((t) => t.value === watchTokenChange); - if (token) { - getTokenBalance(watchTokenChange, token); - } - } - }, [watchTokenChange, address, provider]); - - async function onSubmit(data: z.infer) { - if (!walletConnected) { - return connectWallet(); - } - try { - console.log(data); - toast({ - title: "Bridge Transaction", - description: "Bridge transaction initiated", - variant: ToastType.INFO, - }); - const token = data.token; - const t = tokens.find((t) => t.value === token); - if (!t) { - throw new Error("Invalid token"); - } - - const sendTransaction = t.isNative - ? web3Service.sendNative - : web3Service.sendERC20; - await sendTransaction(data.receiver ?? address, data.amount, t.address); - toast({ - title: "Bridge Transaction", - description: "Bridge transaction completed", - variant: ToastType.SUCCESS, - }); - form.reset(); - } catch (error) { - console.error(error); - toast({ - title: "Bridge Transaction", - description: `Error: ${ - error instanceof Error - ? error.message - : "initiating bridge transaction" - }`, - variant: ToastType.DESTRUCTIVE, - }); - } - } - - const setAmount = (value: number) => { - if (!form.getValues("token")) { - form.setError("token", { - type: "manual", - message: "Please select a token to get the balance", - }); - return; - } - const roundDown = (num: number) => Math.floor(num * 100) / 100; - const amount = roundDown((fromTokenBalance * value) / 100); - form.setValue("amount", amount.toString()); - }; - - return ( - <> - {!isL1ToL2 && ( - - - - Sorry! 😔 L2 to L1 bridge is not supported yet. - - - )} -
- - - Bridge - - You are currently bridging from {isL1ToL2 ? "L1" : "L2"} to{" "} - {isL1ToL2 ? "L2" : "L1"}. - - - - -
- -
-
- Transfer from - {/* From Chain Select */} - ( - - - - - )} - /> -
- -
-
- {/* Token Select */} - ( - - - - - )} - /> - -
-

- Balance: -

- - {loading ? : fromTokenBalance || 0} - -
-
- -
- {/* Amount Input */} - ( - - - - - - - )} - /> - -
- {/* Percentage Buttons */} -
- {PERCENTAGES.map((percentage) => ( - - ))} -
-
-
-
-
- - {/* Swap Bridge Tokens */} -
- -
- - {/* Transfer to */} -
-
- Transfer to - {/* To Chain Select */} - ( - - - - - )} - /> -
- -
- {/* Destination Address Input */} - -
-
-
- - {form.getValues().token} - - -
-

- You will receive: -

- - {loading ? : form.watch("amount") || 0} - -
-
-
- -
- Receiver Address -
- {receiver || address ? ( - - ) : null} -
-
-
-
- {walletConnected ? ( - - ) : ( - - )} -
-
- -
-
-
- - ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/connect-wallet.tsx b/contracts/src/bridge/frontend/src/components/modules/common/connect-wallet.tsx deleted file mode 100644 index dd63862852..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/connect-wallet.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { useWalletStore } from "../../providers/wallet-provider"; -import { Button } from "../../ui/button"; -import { Link2Icon, LinkBreak2Icon } from "@radix-ui/react-icons"; -import React from "react"; -import { cn, downloadMetaMask, ethereum } from "@/src/lib/utils"; - -const ConnectWalletButton = ({ className, text, variant }: any) => { - const { walletConnected, connectWallet, disconnectWallet } = useWalletStore(); - - return ( - - ); -}; - -export default ConnectWalletButton; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/copy.tsx b/contracts/src/bridge/frontend/src/components/modules/common/copy.tsx deleted file mode 100644 index 8d4eee740f..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/copy.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from "react"; -import { Button } from "../../ui/button"; -import { useCopy } from "../../../hooks/useCopy"; -import { CopyIcon, CheckIcon } from "@radix-ui/react-icons"; - -const Copy = ({ value }: { value: string | number | undefined }) => { - const { copyToClipboard, copied } = useCopy(); - return ( - - ); -}; - -export default Copy; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-column-header.tsx b/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-column-header.tsx deleted file mode 100644 index 07fbb0cc3a..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-column-header.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { - ArrowDownIcon, - ArrowUpIcon, - CaretSortIcon, - EyeNoneIcon, -} from "@radix-ui/react-icons"; -import { Column } from "@tanstack/react-table"; - -import { cn } from "@/src/lib/utils"; -import { Button } from "@/src/components/ui/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@/src/components/ui/dropdown-menu"; - -interface DataTableColumnHeaderProps - extends React.HTMLAttributes { - column: Column; - title: string; -} - -export function DataTableColumnHeader({ - column, - title, - className, -}: DataTableColumnHeaderProps) { - if (!column.getCanSort()) { - return
{title}
; - } - - return ( -
- - - - - - column.toggleSorting(false)}> - - Asc - - column.toggleSorting(true)}> - - Desc - - - column.toggleVisibility(false)}> - - Hide - - - -
- ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-faceted-filter.tsx b/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-faceted-filter.tsx deleted file mode 100644 index 641973c663..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-faceted-filter.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import * as React from "react"; -import { CheckIcon, PlusCircledIcon } from "@radix-ui/react-icons"; -import { Column } from "@tanstack/react-table"; - -import { cn } from "@/src/lib/utils"; -import { Badge } from "@/src/components/ui/badge"; -import { Button } from "@/src/components/ui/button"; -import { - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem, - CommandList, - CommandSeparator, -} from "@/src/components/ui/command"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/src/components/ui/popover"; -import { Separator } from "@/src/components/ui/separator"; - -interface DataTableFacetedFilterProps { - column?: Column; - title?: string; - options: { - label: string; - value: string; - icon?: React.ComponentType<{ className?: string }>; - }[]; -} - -export function DataTableFacetedFilter({ - column, - title, - options, -}: DataTableFacetedFilterProps) { - const facets = column?.getFacetedUniqueValues(); - const selectedValues = new Set(column?.getFilterValue() as string[]); - - return ( - - - - - - - - - No results found. - - {options.map((option) => { - const isSelected = selectedValues.has(option.value); - return ( - { - if (isSelected) { - selectedValues.delete(option.value); - } else { - selectedValues.add(option.value); - } - const filterValues = Array.from(selectedValues); - column?.setFilterValue( - filterValues.length ? filterValues : undefined - ); - }} - > -
- -
- {option.icon && ( - - )} - {option.label} - {facets?.get(option.value) && ( - - {facets.get(option.value)} - - )} -
- ); - })} -
- {selectedValues.size > 0 && ( - <> - - - column?.setFilterValue(undefined)} - className="justify-center text-center" - > - Clear filters - - - - )} -
-
-
-
- ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-pagination.tsx b/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-pagination.tsx deleted file mode 100644 index a0ed85998c..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-pagination.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { - ChevronLeftIcon, - ChevronRightIcon, - DoubleArrowLeftIcon, - DoubleArrowRightIcon, -} from "@radix-ui/react-icons"; -import { Table } from "@tanstack/react-table"; - -import { Button } from "@/src/components/ui/button"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/src/components/ui/select"; - -interface DataTablePaginationProps { - table: Table; -} - -export function DataTablePagination({ - table, -}: DataTablePaginationProps) { - return ( -
-
- {table.getFilteredSelectedRowModel().rows.length} of{" "} - {table.getFilteredRowModel().rows.length} row(s) selected. -
-
-
-

Rows per page

- -
-
- Page {table.getState().pagination.pageIndex + 1} of{" "} - {table.getPageCount()} -
-
- - - - -
-
-
- ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-row-actions.tsx b/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-row-actions.tsx deleted file mode 100644 index 0f8c652451..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-row-actions.tsx +++ /dev/null @@ -1,65 +0,0 @@ -"use client"; - -import { DotsHorizontalIcon } from "@radix-ui/react-icons"; -import { Row } from "@tanstack/react-table"; -import { Button } from "@/src/components/ui/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuRadioGroup, - DropdownMenuRadioItem, - DropdownMenuSeparator, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, - DropdownMenuTrigger, -} from "@/src/components/ui/dropdown-menu"; - -interface DataTableRowActionsProps { - row: Row; - labels: { label: string; value: string }[] | null; -} - -export function DataTableRowActions({ - row, - labels, -}: DataTableRowActionsProps) { - return ( - - - - - - View - {labels === null ? null : ( - <> - - - Labels - - - {labels?.map((label) => ( - - {label.label} - - ))} - - - - - )} - - - - ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-toolbar.tsx b/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-toolbar.tsx deleted file mode 100644 index 93bee611c0..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-toolbar.tsx +++ /dev/null @@ -1,68 +0,0 @@ -"use client"; - -import { Cross2Icon, ReloadIcon } from "@radix-ui/react-icons"; -import { Table } from "@tanstack/react-table"; - -import { Button } from "@/src/components/ui/button"; -import { Input } from "@/src/components/ui/input"; -import { DataTableViewOptions } from "./data-table-view-options"; - -import { DataTableFacetedFilter } from "./data-table-faceted-filter"; - -interface DataTableToolbarProps { - table: Table; - refetch?: () => void; - toolbar?: { - column: string; - title: string; - options: { label: string; value: string }[]; - }[]; -} -export function DataTableToolbar({ - table, - toolbar, - refetch, -}: DataTableToolbarProps) { - const isFiltered = table.getState().columnFilters.length > 0; - - return ( -
-
- {toolbar?.map( - (item, index) => - table.getColumn(item.column) && ( - - ) - )} - {isFiltered && ( - - )} -
-
- {refetch && ( - - )} - -
-
- ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-view-options.tsx b/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-view-options.tsx deleted file mode 100644 index b8975ff5cb..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table-view-options.tsx +++ /dev/null @@ -1,59 +0,0 @@ -"use client"; - -import { DropdownMenuTrigger } from "@radix-ui/react-dropdown-menu"; -import { MixerHorizontalIcon } from "@radix-ui/react-icons"; -import { Table } from "@tanstack/react-table"; - -import { Button } from "@/src/components/ui/button"; -import { - DropdownMenu, - DropdownMenuCheckboxItem, - DropdownMenuContent, - DropdownMenuLabel, - DropdownMenuSeparator, -} from "@/src/components/ui/dropdown-menu"; - -interface DataTableViewOptionsProps { - table: Table; -} - -export function DataTableViewOptions({ - table, -}: DataTableViewOptionsProps) { - return ( - - - - - - Toggle columns - - {table - .getAllColumns() - .filter( - (column) => - typeof column.accessorFn !== "undefined" && column.getCanHide() - ) - .map((column) => { - return ( - column.toggleVisibility(!!value)} - > - {column.id} - - ); - })} - - - ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table.tsx b/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table.tsx deleted file mode 100644 index 477ebbd53e..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/data-table/data-table.tsx +++ /dev/null @@ -1,154 +0,0 @@ -"use client"; - -import * as React from "react"; -import { - ColumnDef, - ColumnFiltersState, - SortingState, - VisibilityState, - flexRender, - getCoreRowModel, - getFacetedRowModel, - getFacetedUniqueValues, - getFilteredRowModel, - getPaginationRowModel, - getSortedRowModel, - useReactTable, -} from "@tanstack/react-table"; - -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "@/src/components/ui/table"; -import { DataTablePagination } from "./data-table-pagination"; -import { DataTableToolbar } from "./data-table-toolbar"; -import { useRouter } from "next/router"; - -interface DataTableProps { - columns: ColumnDef[]; - data: TData[]; - toolbar?: { - column: string; - title: string; - options: { label: string; value: string }[]; - }[]; - updateQueryParams?: (query: any) => void; - refetch?: () => void; - total: number; -} - -export function DataTable({ - columns, - data, - toolbar, - refetch, - total, -}: DataTableProps) { - const [rowSelection, setRowSelection] = React.useState({}); - const [columnVisibility, setColumnVisibility] = - React.useState({}); - const [columnFilters, setColumnFilters] = React.useState( - [] - ); - const [sorting, setSorting] = React.useState([]); - const [pagination, setPagination] = React.useState({ - pageIndex: 0, - pageSize: 20, - }); - - const table = useReactTable({ - data, - columns, - state: { - sorting, - columnVisibility, - rowSelection, - columnFilters, - pagination, - }, - onPaginationChange: setPagination, - manualPagination: true, - pageCount: Math.ceil(total / pagination.pageSize), - enableRowSelection: true, - onRowSelectionChange: setRowSelection, - onSortingChange: setSorting, - onColumnFiltersChange: setColumnFilters, - onColumnVisibilityChange: setColumnVisibility, - getCoreRowModel: getCoreRowModel(), - getFilteredRowModel: getFilteredRowModel(), - getPaginationRowModel: getPaginationRowModel(), - getSortedRowModel: getSortedRowModel(), - getFacetedRowModel: getFacetedRowModel(), - getFacetedUniqueValues: getFacetedUniqueValues(), - }); - - const { query, push, pathname } = useRouter(); - const { pageIndex, pageSize } = table.getState().pagination; - - React.useEffect(() => { - const params = { ...query, page: pageIndex + 1, size: pageSize }; - push({ pathname, query: params }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [pageIndex, pageSize]); - - return ( -
- -
- - - {table.getHeaderGroups().map((headerGroup) => ( - - {headerGroup.headers.map((header) => { - return ( - - {header.isPlaceholder - ? null - : flexRender( - header.column.columnDef.header, - header.getContext() - )} - - ); - })} - - ))} - - - {table?.getRowModel()?.rows?.length && data ? ( - table.getRowModel().rows.map((row) => ( - - {row.getVisibleCells().map((cell) => ( - - {flexRender( - cell.column.columnDef.cell, - cell.getContext() - )} - - ))} - - )) - ) : ( - - - No results. - - - )} - -
-
- -
- ); -} diff --git a/contracts/src/bridge/frontend/src/components/modules/common/data-table/skeleton-loader.tsx b/contracts/src/bridge/frontend/src/components/modules/common/data-table/skeleton-loader.tsx deleted file mode 100644 index 89c5627fda..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/data-table/skeleton-loader.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Skeleton } from "@/src/components/ui/skeleton"; -import { TableHeader, TableRow, TableBody } from "@/src/components/ui/table"; -import { Table } from "lucide-react"; -import React from "react"; - -const DataTableSkeleton = ({ columns }: { columns: number }) => { - const renderSkeletonColumns = () => { - return Array.from({ length: columns }).map((_, index) => ( - - )); - }; - - return ( - - - {renderSkeletonColumns()} - - {renderSkeletonColumns()} -
- ); -}; - -export default DataTableSkeleton; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/drawer-dialog.tsx b/contracts/src/bridge/frontend/src/components/modules/common/drawer-dialog.tsx deleted file mode 100644 index 84d1b6a248..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/drawer-dialog.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { - Dialog, - DialogTrigger, - DialogContent, - DialogTitle, - DialogDescription, -} from "../../ui/dialog"; -import React from "react"; -import { Button } from "../../ui/button"; -import { DialogHeader } from "../../ui/dialog"; -import { - Drawer, - DrawerTrigger, - DrawerContent, - DrawerHeader, - DrawerTitle, - DrawerDescription, - DrawerFooter, - DrawerClose, -} from "../../ui/drawer"; -import { useMediaQuery } from "@/src/hooks/useMediaQuery"; -import { PlusIcon } from "@radix-ui/react-icons"; -import { Label } from "../../ui/label"; -import { Input } from "../../ui/input"; -import { Alert, AlertDescription } from "../../ui/alert"; -import { Terminal } from "lucide-react"; -import { cn } from "@/src/lib/utils"; -import { useFormHook } from "@/src/hooks/useForm"; - -export function DrawerDialog() { - const { form } = useFormHook(); - const receiver = form.watch("receiver"); - const [open, setOpen] = React.useState(false); - const isDesktop = useMediaQuery("(min-width: 768px)"); - - if (isDesktop) { - return ( - - - - - - - Enter Transfer Address - - This address will be used to transfer the asset to. - - - - - - ); - } - - return ( - - - - - - - Enter Transfer Address - - This address will be used to transfer the asset to. - - - - - - - - - - - ); -} - -const FormComponent = ({ className, setOpen, form, receiver }: any) => { - const addAddressToMainForm = (e: any) => { - e.preventDefault(); - form.setValue("receiver", e.target.elements.address.value); - setOpen(false); - }; - return ( -
-
- - -
- - - - Make sure the address is correct before submitting. - - - -
- ); -}; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/empty-state.tsx b/contracts/src/bridge/frontend/src/components/modules/common/empty-state.tsx deleted file mode 100644 index 1a3a94cf9e..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/empty-state.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import Image from "next/image"; -import React from "react"; - -const EmptyState = ({ - title, - description, - icon, - imageSrc, - imageAlt, - action, -}: { - title?: string; - description?: string; - icon?: React.ReactNode; - imageSrc?: string; - imageAlt?: string; - action?: React.ReactNode; -}) => { - return ( -
-
- {icon &&
{icon}
} - {imageSrc && ( - {imageAlt - )} - {title && ( -

- {title} -

- )} - {description && ( -

{description}

- )} - {action &&
{action}
} -
-
- ); -}; - -export default EmptyState; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/network-status.tsx b/contracts/src/bridge/frontend/src/components/modules/common/network-status.tsx deleted file mode 100644 index 8f999f4015..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/network-status.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from "react"; - -const MessageContent = ( -

- You seem to be offline -
Please check your internet connection. -

-); - -export const NetworkStatus = ({ message = MessageContent }) => { - const [isOnline, setIsOnline] = React.useState(true); - - React.useEffect(() => { - const setOnlineStatus = () => { - setIsOnline(navigator.onLine); - }; - - window.addEventListener("online", setOnlineStatus); - window.addEventListener("offline", setOnlineStatus); - - return () => { - window.removeEventListener("online", setOnlineStatus); - window.removeEventListener("offline", setOnlineStatus); - }; - }, []); - - return ( -
-
- {message} -
-
- ); -}; diff --git a/contracts/src/bridge/frontend/src/components/modules/common/truncated-address.tsx b/contracts/src/bridge/frontend/src/components/modules/common/truncated-address.tsx deleted file mode 100644 index d3d40ef32e..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/common/truncated-address.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from "react"; - -import { - TooltipProvider, - Tooltip, - TooltipTrigger, - TooltipContent, -} from "@radix-ui/react-tooltip"; -import Copy from "./copy"; - -const TruncatedAddress = ({ - address, - prefixLength = 6, - suffixLength = 4, -}: { - address: string; - prefixLength?: number; - suffixLength?: number; -}) => { - const truncatedAddress = - address && - `${address.substring(0, prefixLength)}...${address.substring( - address.length - suffixLength - )}`; - - return ( - <> - {address ? ( -
- - - {truncatedAddress} - -

{address}

-
-
-
- -
- ) : ( -
N/A
- )} - - ); -}; - -export default TruncatedAddress; diff --git a/contracts/src/bridge/frontend/src/components/modules/transactions/columns.tsx b/contracts/src/bridge/frontend/src/components/modules/transactions/columns.tsx deleted file mode 100644 index 3654f89e47..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/transactions/columns.tsx +++ /dev/null @@ -1,87 +0,0 @@ -"use client"; - -import { ColumnDef } from "@tanstack/react-table"; -import { Badge } from "@/src/components/ui/badge"; - -import { statuses } from "./constants"; -import { DataTableColumnHeader } from "../common/data-table/data-table-column-header"; -// import { Transaction } from "@/src/types/interfaces/TransactionInterfaces"; -import TruncatedAddress from "../common/truncated-address"; -import { formatTimeAgo } from "@/src/lib/utils"; - -export const columns: ColumnDef[] = [ - { - accessorKey: "BatchHeight", - header: ({ column }) => ( - - ), - cell: ({ row }) => { - return ( -
- - {row.getValue("BatchHeight")} - -
- ); - }, - enableSorting: false, - enableHiding: false, - }, - - { - accessorKey: "BatchTimestamp", - header: ({ column }) => ( - - ), - cell: ({ row }) => { - return ( -
- - {formatTimeAgo(row.getValue("BatchTimestamp"))} - -
- ); - }, - enableSorting: false, - enableHiding: false, - }, - - { - accessorKey: "TransactionHash", - header: ({ column }) => ( - - ), - cell: ({ row }) => { - return ; - }, - enableSorting: false, - enableHiding: false, - }, - { - accessorKey: "Finality", - header: ({ column }) => ( - - ), - cell: ({ row }) => { - const finality = statuses.find( - (finality) => finality.value === row.getValue("Finality") - ); - - if (!finality) { - return null; - } - - return ( -
- {finality.icon && ( - - )} - {finality.label} -
- ); - }, - filterFn: (row, id, value) => { - return value.includes(row.getValue(id)); - }, - }, -]; diff --git a/contracts/src/bridge/frontend/src/components/modules/transactions/constants.tsx b/contracts/src/bridge/frontend/src/components/modules/transactions/constants.tsx deleted file mode 100644 index 2ab030f09f..0000000000 --- a/contracts/src/bridge/frontend/src/components/modules/transactions/constants.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { - ArrowDownIcon, - ArrowRightIcon, - ArrowUpIcon, - CheckCircledIcon, - ClockIcon, -} from "@radix-ui/react-icons"; - -export const labels = [ - { - value: "Final", - label: "Final", - }, -]; - -export const statuses = [ - { - value: "Final", - label: "Final", - icon: CheckCircledIcon, - }, - { - value: "Pending", - label: "Pending", - icon: ClockIcon, - }, -]; - -export const priorities = [ - { - label: "Low", - value: "low", - icon: ArrowDownIcon, - }, - { - label: "Medium", - value: "medium", - icon: ArrowRightIcon, - }, - { - label: "High", - value: "high", - icon: ArrowUpIcon, - }, -]; diff --git a/contracts/src/bridge/frontend/src/components/providers/theme-provider.tsx b/contracts/src/bridge/frontend/src/components/providers/theme-provider.tsx deleted file mode 100644 index d4b4bbfd90..0000000000 --- a/contracts/src/bridge/frontend/src/components/providers/theme-provider.tsx +++ /dev/null @@ -1,9 +0,0 @@ -'use client' - -import * as React from 'react' -import { ThemeProvider as NextThemesProvider } from 'next-themes' -import { type ThemeProviderProps } from 'next-themes/dist/types' - -export function ThemeProvider({ children, ...props }: ThemeProviderProps) { - return {children} -} diff --git a/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx b/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx deleted file mode 100644 index b6a31a83d7..0000000000 --- a/contracts/src/bridge/frontend/src/components/providers/wallet-provider.tsx +++ /dev/null @@ -1,200 +0,0 @@ -import React, { createContext, useState, useContext, useEffect } from "react"; -import { ethers } from "ethers"; -import detectEthereumProvider from "@metamask/detect-provider"; -import Web3Service from "@/src/services/web3service"; -import { toast } from "../ui/use-toast"; -import { - ToastType, - WalletConnectionContextType, - WalletConnectionProviderProps, - WalletNetwork, -} from "@/src/types"; -import { L1CHAINS, L2CHAINS } from "@/src/lib/constants"; -import { requestMethods } from "@/src/routes"; - -const WalletContext = createContext(null); - -const WalletProvider = ({ children }: WalletConnectionProviderProps) => { - const [provider, setProvider] = useState(null); - const [isWalletConnected, setIsWalletConnected] = useState(false); - const [signer, setSigner] = useState(null); - const [address, setAddress] = useState(""); - const [isL1ToL2, setIsL1ToL2] = React.useState(true); - const fromChains = isL1ToL2 ? L1CHAINS : L2CHAINS; - const toChains = isL1ToL2 ? L2CHAINS : L1CHAINS; - - // Function to connect wallet - const connectWallet = async () => { - try { - const detectedProvider = await detectEthereumProvider(); - setProvider(detectedProvider); - //@ts-ignore - const chainId = await detectedProvider!.request({ - method: requestMethods.getChainId, - }); - - if (isL1ToL2 && chainId !== WalletNetwork.L1_SEPOLIA) { - switchNetwork(); - } - - if (!isL1ToL2 && chainId !== WalletNetwork.L2_TEN_TESTNET) { - switchNetwork(); - } - - //@ts-ignore - const accounts = await detectedProvider!.request({ - method: requestMethods.connectAccounts, - }); - setIsWalletConnected(true); - setAddress(accounts[0]); - toast({ - title: "Connected", - description: "Connected to wallet! Account: " + accounts[0], - variant: ToastType.SUCCESS, - }); - } catch (error) { - console.error("Error connecting to wallet:", error); - toast({ - title: "Error", - description: "Error connecting to wallet", - variant: ToastType.DESTRUCTIVE, - }); - } - }; - - // Function to disconnect wallet - const disconnectWallet = () => { - try { - if (provider) { - provider.removeAllListeners(); - setProvider(null); - setSigner(null); - setAddress(""); - toast({ - title: "Disconnected", - description: "Disconnected from wallet", - variant: ToastType.INFO, - }); - } - } catch (error) { - console.error("Error disconnecting from wallet:", error); - toast({ - title: "Error", - description: "Error disconnecting from wallet", - variant: ToastType.DESTRUCTIVE, - }); - } - }; - - // Function to switch network - const switchNetwork = async () => { - try { - if (isL1ToL2) { - await provider.request({ - method: requestMethods.switchNetwork, - params: [{ chainId: WalletNetwork.L2_TEN_TESTNET }], - }); - } else { - await provider.request({ - method: requestMethods.switchNetwork, - params: [{ chainId: WalletNetwork.L1_SEPOLIA }], - }); - } - setIsL1ToL2(!isL1ToL2); - } catch (error: any) { - console.error("Error switching network:", error); - if (error.code === 4902) { - // if the network is not installed - if (isL1ToL2) { - toast({ - title: "Wrong Network", - description: ( - <> - You are not connected to Ten! Connect at: -
-                  
-                    https://testnet.ten.xyz/
-                  
-                
- - ), - variant: ToastType.INFO, - }); - } else { - toast({ - title: "Wrong Network", - description: "Please install the network to continue.", - variant: ToastType.INFO, - }); - } - } else { - // generic error message - toast({ - title: "Error", - description: "Error switching network", - variant: ToastType.DESTRUCTIVE, - }); - } - } - }; - - // Effect to set signer and handle events - useEffect(() => { - if (provider) { - const newSigner = new ethers.providers.Web3Provider(provider).getSigner(); - new Web3Service(newSigner); - setSigner(newSigner); - - const handleAccountsChange = (accounts: string[]) => { - setAddress(accounts[0]); - }; - const handleChainChange = () => { - window.location.reload(); - }; - - provider.on("accountsChanged", handleAccountsChange); - provider.on("chainChanged", handleChainChange); - - return () => { - provider.removeListener("accountsChanged", handleAccountsChange); - provider.removeListener("chainChanged", handleChainChange); - }; - } - }, [provider]); - - useEffect(() => { - connectWallet(); - }, []); - - // Context value - const value = { - provider, - signer, - address, - walletConnected: isWalletConnected, - isL1ToL2, - fromChains, - toChains, - connectWallet, - disconnectWallet, - switchNetwork, - }; - - return ( - {children} - ); -}; - -const useWalletStore = () => { - const context = useContext(WalletContext); - if (!context) { - throw new Error("useWalletStore must be used within a WalletProvider"); - } - return context; -}; - -export { WalletProvider, useWalletStore }; diff --git a/contracts/src/bridge/frontend/src/components/ui/alert.tsx b/contracts/src/bridge/frontend/src/components/ui/alert.tsx deleted file mode 100644 index ef4d6dbee7..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/alert.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import * as React from "react"; -import { cva, type VariantProps } from "class-variance-authority"; - -import { cn } from "../../lib/utils"; - -const alertVariants = cva( - "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", - { - variants: { - variant: { - default: "bg-background text-foreground", - destructive: - "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", - info: "border-info/50 text-info dark:border-info [&>svg]:text-info", - success: - "border-success/50 text-success dark:border-success [&>svg]:text-success", - warning: - "border-warning/50 text-warning dark:border-warning [&>svg]:text-warning", - }, - }, - defaultVariants: { - variant: "default", - }, - } -); - -const Alert = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes & VariantProps ->(({ className, variant, ...props }, ref) => ( -
-)); -Alert.displayName = "Alert"; - -const AlertTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)); -AlertTitle.displayName = "AlertTitle"; - -const AlertDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)); -AlertDescription.displayName = "AlertDescription"; - -export { Alert, AlertTitle, AlertDescription }; diff --git a/contracts/src/bridge/frontend/src/components/ui/badge.tsx b/contracts/src/bridge/frontend/src/components/ui/badge.tsx deleted file mode 100644 index afdfb44835..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/badge.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import * as React from "react"; -import { cva, type VariantProps } from "class-variance-authority"; - -import { cn } from "../../lib/utils"; - -const badgeVariants = cva( - "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", - { - variants: { - variant: { - default: - "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", - secondary: - "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", - info: "border-transparent bg-info text-info-foreground hover:bg-info/80", - destructive: - "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", - success: - "border-transparent bg-success text-success-foreground hover:bg-success/80", - outline: "text-foreground", - }, - }, - defaultVariants: { - variant: "default", - }, - } -); - -export interface BadgeProps - extends React.HTMLAttributes, - VariantProps {} - -function Badge({ className, variant, ...props }: BadgeProps) { - return ( -
- ); -} - -export { Badge, badgeVariants }; diff --git a/contracts/src/bridge/frontend/src/components/ui/button.tsx b/contracts/src/bridge/frontend/src/components/ui/button.tsx deleted file mode 100644 index 10c65cc717..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/button.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import * as React from "react"; -import { Slot } from "@radix-ui/react-slot"; -import { cva, type VariantProps } from "class-variance-authority"; - -import { cn } from "../../lib/utils"; - -const buttonVariants = cva( - "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - clear: "bg-transparent text-primary-foreground outline-none", - }, - size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10 p-1", - wrap: "h-full w-full", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - } -); - -export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean; -} - -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button"; - return ( - - ); - } -); -Button.displayName = "Button"; - -interface LinkButtonProps - extends React.AnchorHTMLAttributes, - VariantProps { - asChild?: boolean; -} - -const LinkButton = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "a"; - return ( - - ); - } -); - -LinkButton.displayName = "LinkButton"; - -export { Button, buttonVariants, LinkButton }; diff --git a/contracts/src/bridge/frontend/src/components/ui/card.tsx b/contracts/src/bridge/frontend/src/components/ui/card.tsx deleted file mode 100644 index 6abe706a68..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/card.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import * as React from "react"; - -import { cn } from "../../lib/utils"; - -const Card = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)); -Card.displayName = "Card"; - -const CardHeader = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)); -CardHeader.displayName = "CardHeader"; - -const CardTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

-)); -CardTitle.displayName = "CardTitle"; - -const CardDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

-)); -CardDescription.displayName = "CardDescription"; - -const CardContent = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

-)); -CardContent.displayName = "CardContent"; - -const CardFooter = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)); -CardFooter.displayName = "CardFooter"; - -export { - Card, - CardHeader, - CardFooter, - CardTitle, - CardDescription, - CardContent, -}; diff --git a/contracts/src/bridge/frontend/src/components/ui/command.tsx b/contracts/src/bridge/frontend/src/components/ui/command.tsx deleted file mode 100644 index fd81fd9b4c..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/command.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import * as React from "react"; -import { DialogProps } from "@radix-ui/react-dialog"; -import { Command as CommandPrimitive } from "cmdk"; -import { Search } from "lucide-react"; - -import { cn } from "@/src/lib/utils"; -import { Dialog, DialogContent } from "@/src/components/ui/dialog"; - -const Command = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -Command.displayName = CommandPrimitive.displayName; - -interface CommandDialogProps extends DialogProps {} - -const CommandDialog = ({ children, ...props }: CommandDialogProps) => { - return ( - - - - {children} - - - - ); -}; - -const CommandInput = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( -
- - -
-)); - -CommandInput.displayName = CommandPrimitive.Input.displayName; - -const CommandList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); - -CommandList.displayName = CommandPrimitive.List.displayName; - -const CommandEmpty = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->((props, ref) => ( - -)); - -CommandEmpty.displayName = CommandPrimitive.Empty.displayName; - -const CommandGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); - -CommandGroup.displayName = CommandPrimitive.Group.displayName; - -const CommandSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -CommandSeparator.displayName = CommandPrimitive.Separator.displayName; - -const CommandItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); - -CommandItem.displayName = CommandPrimitive.Item.displayName; - -const CommandShortcut = ({ - className, - ...props -}: React.HTMLAttributes) => { - return ( - - ); -}; -CommandShortcut.displayName = "CommandShortcut"; - -export { - Command, - CommandDialog, - CommandInput, - CommandList, - CommandEmpty, - CommandGroup, - CommandItem, - CommandShortcut, - CommandSeparator, -}; diff --git a/contracts/src/bridge/frontend/src/components/ui/dialog.tsx b/contracts/src/bridge/frontend/src/components/ui/dialog.tsx deleted file mode 100644 index e7fc0c8651..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/dialog.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import * as React from "react"; -import * as DialogPrimitive from "@radix-ui/react-dialog"; -import { X } from "lucide-react"; - -import { cn } from "../../lib/utils"; - -const Dialog = DialogPrimitive.Root; - -const DialogTrigger = DialogPrimitive.Trigger; - -const DialogPortal = DialogPrimitive.Portal; - -const DialogClose = DialogPrimitive.Close; - -const DialogOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; - -const DialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - {children} - - - Close - - - -)); -DialogContent.displayName = DialogPrimitive.Content.displayName; - -const DialogHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-); -DialogHeader.displayName = "DialogHeader"; - -const DialogFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-); -DialogFooter.displayName = "DialogFooter"; - -const DialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogTitle.displayName = DialogPrimitive.Title.displayName; - -const DialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogDescription.displayName = DialogPrimitive.Description.displayName; - -export { - Dialog, - DialogPortal, - DialogOverlay, - DialogClose, - DialogTrigger, - DialogContent, - DialogHeader, - DialogFooter, - DialogTitle, - DialogDescription, -}; diff --git a/contracts/src/bridge/frontend/src/components/ui/drawer.tsx b/contracts/src/bridge/frontend/src/components/ui/drawer.tsx deleted file mode 100644 index 2fd894fa7d..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/drawer.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import * as React from "react" -import { Drawer as DrawerPrimitive } from "vaul" - -import { cn } from "@/src/lib/utils" - -const Drawer = ({ - shouldScaleBackground = true, - ...props -}: React.ComponentProps) => ( - -) -Drawer.displayName = "Drawer" - -const DrawerTrigger = DrawerPrimitive.Trigger - -const DrawerPortal = DrawerPrimitive.Portal - -const DrawerClose = DrawerPrimitive.Close - -const DrawerOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName - -const DrawerContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - -
- {children} - - -)) -DrawerContent.displayName = "DrawerContent" - -const DrawerHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-) -DrawerHeader.displayName = "DrawerHeader" - -const DrawerFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-) -DrawerFooter.displayName = "DrawerFooter" - -const DrawerTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DrawerTitle.displayName = DrawerPrimitive.Title.displayName - -const DrawerDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DrawerDescription.displayName = DrawerPrimitive.Description.displayName - -export { - Drawer, - DrawerPortal, - DrawerOverlay, - DrawerTrigger, - DrawerClose, - DrawerContent, - DrawerHeader, - DrawerFooter, - DrawerTitle, - DrawerDescription, -} diff --git a/contracts/src/bridge/frontend/src/components/ui/dropdown-menu.tsx b/contracts/src/bridge/frontend/src/components/ui/dropdown-menu.tsx deleted file mode 100644 index a149167bf2..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/dropdown-menu.tsx +++ /dev/null @@ -1,198 +0,0 @@ -import * as React from "react"; -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; -import { Check, ChevronRight, Circle } from "lucide-react"; - -import { cn } from "../../lib/utils"; - -const DropdownMenu = DropdownMenuPrimitive.Root; - -const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; - -const DropdownMenuGroup = DropdownMenuPrimitive.Group; - -const DropdownMenuPortal = DropdownMenuPrimitive.Portal; - -const DropdownMenuSub = DropdownMenuPrimitive.Sub; - -const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; - -const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => ( - - {children} - - -)); -DropdownMenuSubTrigger.displayName = - DropdownMenuPrimitive.SubTrigger.displayName; - -const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DropdownMenuSubContent.displayName = - DropdownMenuPrimitive.SubContent.displayName; - -const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - - - -)); -DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; - -const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( - -)); -DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; - -const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( - - - - - - - {children} - -)); -DropdownMenuCheckboxItem.displayName = - DropdownMenuPrimitive.CheckboxItem.displayName; - -const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - - - - {children} - -)); -DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; - -const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( - -)); -DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; - -const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; - -const DropdownMenuShortcut = ({ - className, - ...props -}: React.HTMLAttributes) => { - return ( - - ); -}; -DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; - -export { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuCheckboxItem, - DropdownMenuRadioItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuGroup, - DropdownMenuPortal, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, - DropdownMenuRadioGroup, -}; diff --git a/contracts/src/bridge/frontend/src/components/ui/form.tsx b/contracts/src/bridge/frontend/src/components/ui/form.tsx deleted file mode 100644 index ae2070d205..0000000000 --- a/contracts/src/bridge/frontend/src/components/ui/form.tsx +++ /dev/null @@ -1,176 +0,0 @@ -import * as React from "react" -import * as LabelPrimitive from "@radix-ui/react-label" -import { Slot } from "@radix-ui/react-slot" -import { - Controller, - ControllerProps, - FieldPath, - FieldValues, - FormProvider, - useFormContext, -} from "react-hook-form" - -import { cn } from "@/src/lib/utils" -import { Label } from "@/src/components/ui/label" - -const Form = FormProvider - -type FormFieldContextValue< - TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath -> = { - name: TName -} - -const FormFieldContext = React.createContext( - {} as FormFieldContextValue -) - -const FormField = < - TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath ->({ - ...props -}: ControllerProps) => { - return ( - - - - ) -} - -const useFormField = () => { - const fieldContext = React.useContext(FormFieldContext) - const itemContext = React.useContext(FormItemContext) - const { getFieldState, formState } = useFormContext() - - const fieldState = getFieldState(fieldContext.name, formState) - - if (!fieldContext) { - throw new Error("useFormField should be used within ") - } - - const { id } = itemContext - - return { - id, - name: fieldContext.name, - formItemId: `${id}-form-item`, - formDescriptionId: `${id}-form-item-description`, - formMessageId: `${id}-form-item-message`, - ...fieldState, - } -} - -type FormItemContextValue = { - id: string -} - -const FormItemContext = React.createContext( - {} as FormItemContextValue -) - -const FormItem = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => { - const id = React.useId() - - return ( - -
- - ) -}) -FormItem.displayName = "FormItem" - -const FormLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { - const { error, formItemId } = useFormField() - - return ( -

+
+ +
+

+ Version: {version || "Unknown"} +

+
+
+ + Privacy + + + Terms + +
+
+