From a074694893f80941736fcf9a0cf5309b4cf7de7b Mon Sep 17 00:00:00 2001 From: yy <2572082773@qq.com> Date: Fri, 16 Aug 2024 23:51:53 +0800 Subject: [PATCH 1/3] chore: init low code by templates --- packages/omi-low-code/.gitignore | 24 + packages/omi-low-code/.prettierrc | 5 + packages/omi-low-code/README.md | 28 +- packages/omi-low-code/index.html | 114 + packages/omi-low-code/package-lock.json | 5696 +++++++++++++++++ packages/omi-low-code/package.json | 43 + packages/omi-low-code/postcss.config.js | 18 + .../omi-low-code/src/assets/icon-font.css | 4835 ++++++++++++++ packages/omi-low-code/src/assets/t.svg | 3622 +++++++++++ packages/omi-low-code/src/assets/t.ttf | Bin 0 -> 219428 bytes packages/omi-low-code/src/assets/t.woff | Bin 0 -> 107892 bytes packages/omi-low-code/src/assets/tdesign.svg | 83 + .../src/components/admin-layout.tsx | 70 + .../omi-low-code/src/components/appear.tsx | 28 + .../src/components/component-layout.tsx | 172 + .../src/components/customize-button.tsx | 23 + .../omi-low-code/src/components/customize.tsx | 248 + .../src/components/dark-switch.tsx | 89 + .../src/components/docs-sidebar.tsx | 100 + .../omi-low-code/src/components/fallback.tsx | 47 + .../omi-low-code/src/components/md-docs.tsx | 62 + .../omi-low-code/src/components/navbar.tsx | 269 + .../src/components/omiu/breadcrumb.tsx | 65 + .../src/components/omiu/button.tsx | 191 + .../src/components/omiu/calendar/calendar.ts | 208 + .../src/components/omiu/calendar/index.tsx | 308 + .../omi-low-code/src/components/omiu/msg.tsx | 73 + .../src/components/omiu/select.tsx | 133 + .../src/components/omiu/swiper/api.md | 37 + .../src/components/omiu/swiper/swiper.tsx | 270 + .../src/components/omiu/switch.tsx | 60 + .../src/components/omiu/table.tsx | 95 + .../omi-low-code/src/components/omiu/tag.tsx | 61 + .../omi-low-code/src/components/omiu/utils.ts | 6 + .../omi-low-code/src/components/pending.tsx | 17 + .../omi-low-code/src/components/prism.css | 550 ++ .../omi-low-code/src/components/sidebar.tsx | 253 + .../src/components/site-layout.tsx | 108 + packages/omi-low-code/src/docs/config.ts | 59 + .../src/docs/zh/getting-started.md | 454 ++ packages/omi-low-code/src/docs/zh/props.md | 107 + .../omi-low-code/src/docs/zh/reactivity.md | 96 + packages/omi-low-code/src/index.css | 69 + packages/omi-low-code/src/main.tsx | 12 + packages/omi-low-code/src/pages/about.tsx | 71 + .../omi-low-code/src/pages/admin/chart.tsx | 85 + .../omi-low-code/src/pages/admin/home.tsx | 48 + .../omi-low-code/src/pages/components.tsx | 151 + .../src/pages/components/breadcrumb.tsx | 29 + .../src/pages/components/button.tsx | 107 + .../src/pages/components/switch.tsx | 24 + packages/omi-low-code/src/pages/home.tsx | 163 + packages/omi-low-code/src/pages/icons.tsx | 34 + .../omi-low-code/src/pages/product-docs.tsx | 222 + .../src/pages/results/browser-not-support.tsx | 141 + .../omi-low-code/src/pages/results/fail.tsx | 36 + .../src/pages/results/forbidden.tsx | 54 + .../src/pages/results/network-error.tsx | 52 + .../src/pages/results/not-found.tsx | 59 + .../src/pages/results/server-error.tsx | 57 + .../src/pages/results/success.tsx | 31 + .../src/pages/results/system-maintenance.tsx | 104 + packages/omi-low-code/src/routes.tsx | 245 + packages/omi-low-code/src/store.ts | 218 + .../omi-low-code/src/tailwind/globals.d.ts | 5 + packages/omi-low-code/src/tailwind/index.ts | 12 + .../omi-low-code/src/tailwind/tailwind.css | 3 + packages/omi-low-code/src/vite-env.d.ts | 1 + packages/omi-low-code/tailwind.config.js | 85 + packages/omi-low-code/tsconfig.json | 25 + packages/omi-low-code/tsconfig.node.json | 10 + packages/omi-low-code/vite.config.ts | 18 + packages/omi-low-code/yarn.lock | 3509 ++++++++++ 73 files changed, 24406 insertions(+), 1 deletion(-) create mode 100644 packages/omi-low-code/.gitignore create mode 100644 packages/omi-low-code/.prettierrc create mode 100644 packages/omi-low-code/index.html create mode 100644 packages/omi-low-code/package-lock.json create mode 100644 packages/omi-low-code/package.json create mode 100644 packages/omi-low-code/postcss.config.js create mode 100644 packages/omi-low-code/src/assets/icon-font.css create mode 100644 packages/omi-low-code/src/assets/t.svg create mode 100644 packages/omi-low-code/src/assets/t.ttf create mode 100644 packages/omi-low-code/src/assets/t.woff create mode 100644 packages/omi-low-code/src/assets/tdesign.svg create mode 100644 packages/omi-low-code/src/components/admin-layout.tsx create mode 100644 packages/omi-low-code/src/components/appear.tsx create mode 100644 packages/omi-low-code/src/components/component-layout.tsx create mode 100644 packages/omi-low-code/src/components/customize-button.tsx create mode 100644 packages/omi-low-code/src/components/customize.tsx create mode 100644 packages/omi-low-code/src/components/dark-switch.tsx create mode 100644 packages/omi-low-code/src/components/docs-sidebar.tsx create mode 100644 packages/omi-low-code/src/components/fallback.tsx create mode 100644 packages/omi-low-code/src/components/md-docs.tsx create mode 100644 packages/omi-low-code/src/components/navbar.tsx create mode 100644 packages/omi-low-code/src/components/omiu/breadcrumb.tsx create mode 100644 packages/omi-low-code/src/components/omiu/button.tsx create mode 100644 packages/omi-low-code/src/components/omiu/calendar/calendar.ts create mode 100644 packages/omi-low-code/src/components/omiu/calendar/index.tsx create mode 100644 packages/omi-low-code/src/components/omiu/msg.tsx create mode 100644 packages/omi-low-code/src/components/omiu/select.tsx create mode 100644 packages/omi-low-code/src/components/omiu/swiper/api.md create mode 100644 packages/omi-low-code/src/components/omiu/swiper/swiper.tsx create mode 100644 packages/omi-low-code/src/components/omiu/switch.tsx create mode 100644 packages/omi-low-code/src/components/omiu/table.tsx create mode 100644 packages/omi-low-code/src/components/omiu/tag.tsx create mode 100644 packages/omi-low-code/src/components/omiu/utils.ts create mode 100644 packages/omi-low-code/src/components/pending.tsx create mode 100644 packages/omi-low-code/src/components/prism.css create mode 100644 packages/omi-low-code/src/components/sidebar.tsx create mode 100644 packages/omi-low-code/src/components/site-layout.tsx create mode 100644 packages/omi-low-code/src/docs/config.ts create mode 100644 packages/omi-low-code/src/docs/zh/getting-started.md create mode 100644 packages/omi-low-code/src/docs/zh/props.md create mode 100644 packages/omi-low-code/src/docs/zh/reactivity.md create mode 100644 packages/omi-low-code/src/index.css create mode 100644 packages/omi-low-code/src/main.tsx create mode 100644 packages/omi-low-code/src/pages/about.tsx create mode 100644 packages/omi-low-code/src/pages/admin/chart.tsx create mode 100644 packages/omi-low-code/src/pages/admin/home.tsx create mode 100644 packages/omi-low-code/src/pages/components.tsx create mode 100644 packages/omi-low-code/src/pages/components/breadcrumb.tsx create mode 100644 packages/omi-low-code/src/pages/components/button.tsx create mode 100644 packages/omi-low-code/src/pages/components/switch.tsx create mode 100644 packages/omi-low-code/src/pages/home.tsx create mode 100644 packages/omi-low-code/src/pages/icons.tsx create mode 100644 packages/omi-low-code/src/pages/product-docs.tsx create mode 100644 packages/omi-low-code/src/pages/results/browser-not-support.tsx create mode 100644 packages/omi-low-code/src/pages/results/fail.tsx create mode 100644 packages/omi-low-code/src/pages/results/forbidden.tsx create mode 100644 packages/omi-low-code/src/pages/results/network-error.tsx create mode 100644 packages/omi-low-code/src/pages/results/not-found.tsx create mode 100644 packages/omi-low-code/src/pages/results/server-error.tsx create mode 100644 packages/omi-low-code/src/pages/results/success.tsx create mode 100644 packages/omi-low-code/src/pages/results/system-maintenance.tsx create mode 100644 packages/omi-low-code/src/routes.tsx create mode 100644 packages/omi-low-code/src/store.ts create mode 100644 packages/omi-low-code/src/tailwind/globals.d.ts create mode 100644 packages/omi-low-code/src/tailwind/index.ts create mode 100644 packages/omi-low-code/src/tailwind/tailwind.css create mode 100644 packages/omi-low-code/src/vite-env.d.ts create mode 100644 packages/omi-low-code/tailwind.config.js create mode 100644 packages/omi-low-code/tsconfig.json create mode 100644 packages/omi-low-code/tsconfig.node.json create mode 100644 packages/omi-low-code/vite.config.ts create mode 100644 packages/omi-low-code/yarn.lock diff --git a/packages/omi-low-code/.gitignore b/packages/omi-low-code/.gitignore new file mode 100644 index 0000000000..a547bf36d8 --- /dev/null +++ b/packages/omi-low-code/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/omi-low-code/.prettierrc b/packages/omi-low-code/.prettierrc new file mode 100644 index 0000000000..d9e642ca6f --- /dev/null +++ b/packages/omi-low-code/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "printWidth": 120 +} \ No newline at end of file diff --git a/packages/omi-low-code/README.md b/packages/omi-low-code/README.md index 9e61405af6..0b18c83ded 100644 --- a/packages/omi-low-code/README.md +++ b/packages/omi-low-code/README.md @@ -1 +1,27 @@ -# OMI 低代码 \ No newline at end of file +# Omi Templates + +> 100+ OMI Tailwind Templates, coming... + +* [🎉Preview](https://omi.cdn-go.cn/templates/latest/#/) + +## Setup + +Install dependencies: + +```bash +npm i +``` + +## Development + + +```bash +npm start +``` + +## Build + + +```bash +npm run build +``` diff --git a/packages/omi-low-code/index.html b/packages/omi-low-code/index.html new file mode 100644 index 0000000000..f9d46b2ff2 --- /dev/null +++ b/packages/omi-low-code/index.html @@ -0,0 +1,114 @@ + + + + + + + 100+ OMI Tailwind Templates + + +
+ + + + diff --git a/packages/omi-low-code/package-lock.json b/packages/omi-low-code/package-lock.json new file mode 100644 index 0000000000..16e763e850 --- /dev/null +++ b/packages/omi-low-code/package-lock.json @@ -0,0 +1,5696 @@ +{ + "name": "omi-starter-ts", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "omi-starter-ts", + "version": "0.0.0", + "dependencies": { + "@popperjs/core": "^2.11.8", + "@types/prismjs": "^1.26.3", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.0", + "copy-to-clipboard": "^3.3.3", + "echarts": "^5.5.0", + "markdown-it": "^14.0.0", + "omi": "7.6.12", + "omi-ripple": "^0.1.2", + "omi-router": "latest", + "omi-suspense": "latest", + "prismjs": "^1.29.0", + "swiper": "^11.1.4", + "tailwind-merge": "^2.2.1" + }, + "devDependencies": { + "@tailwindcss/typography": "^0.5.10", + "@types/markdown-it": "^13.0.7", + "autoprefixer": "^10.4.16", + "eslint": "^8.45.0", + "postcss": "^8.4.31", + "prettier": "3.0.3", + "sass": "^1.55.0", + "tailwindcss": "^3.3.3", + "ts-node": "^10.9.1", + "typescript": "^5.0.2", + "vite": "^4.4.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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "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.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz", + "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==", + "dev": true, + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz", + "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==", + "dev": true, + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", + "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", + "dev": true, + "peer": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prismjs": { + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz", + "integrity": "sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==" + }, + "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/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==" + }, + "node_modules/autoprefixer": { + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", + "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.22.2", + "caniuse-lite": "^1.0.30001578", + "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/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "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.30001565", + "electron-to-chromium": "^1.4.601", + "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/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==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001579", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", + "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", + "dev": true, + "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.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "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==", + "dev": true, + "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/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "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/construct-style-sheets-polyfill": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/construct-style-sheets-polyfill/-/construct-style-sheets-polyfill-3.0.1.tgz", + "integrity": "sha512-vyAiTcS3i29IxjzJ12K2MGUUBYgrF69p6fKD+8ZPRLFhwTtuaxXLpazl4Yw4FITsQXwUMrh8juI1bOHWYjzkwA==", + "engines": { + "npm": ">=7" + } + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "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==", + "dev": true, + "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==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "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/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/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "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/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/echarts": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz", + "integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.5.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.640", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.640.tgz", + "integrity": "sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "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.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@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-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/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-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "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==", + "dev": true, + "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.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "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==", + "dev": true, + "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.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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/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-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/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "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==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "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/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/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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "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.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "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/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/markdown-it": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz", + "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.0.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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/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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/omi": { + "version": "7.6.12", + "resolved": "https://registry.npmjs.org/omi/-/omi-7.6.12.tgz", + "integrity": "sha512-G1qiY/4iJ+Q8oBncKcuBj5drw/8sGMFXiD8mNczXbAjB0/7pqYpV1bYKHaYPQLD+3BsUu7dGb3KkSfXIINRCMg==", + "dependencies": { + "construct-style-sheets-polyfill": "3.0.1", + "reactive-signal": "^1.0.3", + "weakmap-polyfill": "2.0.4" + } + }, + "node_modules/omi-ripple": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/omi-ripple/-/omi-ripple-0.1.2.tgz", + "integrity": "sha512-kgV5Jb8RVQm1n+xPA2yzexOnFfsygeoC33EmolSW3GlAbnTga20c0HgRyh4v9h/kqm+HqXKt478DqNCMk+ukdw==", + "dependencies": { + "omi": "latest" + } + }, + "node_modules/omi-router": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/omi-router/-/omi-router-4.1.6.tgz", + "integrity": "sha512-T1m47ZHNKI4zNVsZB1SFGj0aAX03e61s9nRfi5S4YdWlMm8PnCBEf5izOxfDwCUWyFR/gk4krbou909pYtTQuA==", + "dependencies": { + "omi": "latest", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/omi-suspense": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/omi-suspense/-/omi-suspense-0.1.4.tgz", + "integrity": "sha512-zijzn+H3e6+Tkbs2Eda/vEod/kH+9lOLBntiDBauMQyRh3HZnMjq1dClI9QySUD9c4LQneo8rQolG6kkuqh/Yw==", + "dependencies": { + "omi": "latest" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.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-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "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.0.2" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "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==", + "dev": true, + "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.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "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==", + "dev": true + }, + "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/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "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/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/reactive-signal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reactive-signal/-/reactive-signal-1.0.3.tgz", + "integrity": "sha512-UlbIDgdkreGW0QFdrxCsVQNcPkiv+aOT4bWIF3inHb4jZlBdvRCZtgO9Ie5ayFxlnjetQg1QvRhg5PlGKSxZEA==" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "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/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/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "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/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sass": { + "version": "1.70.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", + "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "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.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/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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swiper": { + "version": "11.1.4", + "resolved": "https://registry.npmmirror.com/swiper/-/swiper-11.1.4.tgz", + "integrity": "sha512-1n7kbYJB2dFEpUHRFszq7gys/ofIBrMNibwTiMvPHwneKND/t9kImnHt6CfGPScMHgI+dWMbGTycCKGMoOO1KA==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.1.tgz", + "integrity": "sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==", + "dependencies": { + "@babel/runtime": "^7.23.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", + "dev": true, + "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.19.1", + "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/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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "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==", + "dev": true + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "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/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz", + "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==" + }, + "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, + "peer": 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/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/vite": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/weakmap-polyfill": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/weakmap-polyfill/-/weakmap-polyfill-2.0.4.tgz", + "integrity": "sha512-ZzxBf288iALJseijWelmECm/1x7ZwQn3sMYIkDr2VvZp7r6SEKuT8D0O9Wiq6L9Nl5mazrOMcmiZE/2NCenaxw==", + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/zrender": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.5.0.tgz", + "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==", + "dependencies": { + "tslib": "2.3.0" + } + } + }, + "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==", + "dev": true + }, + "@babel/runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true + }, + "@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.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true + }, + "@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.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "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==", + "dev": true, + "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==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@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==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@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==", + "dev": true, + "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==", + "dev": true + }, + "@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==", + "dev": true, + "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==", + "dev": true, + "optional": true + }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, + "@tailwindcss/typography": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz", + "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==", + "dev": true, + "requires": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + } + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "dev": true + }, + "@types/markdown-it": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz", + "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==", + "dev": true, + "requires": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "dev": true + }, + "@types/node": { + "version": "20.11.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", + "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", + "dev": true, + "peer": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/prismjs": { + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz", + "integrity": "sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==" + }, + "@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": {} + }, + "acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true + }, + "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==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "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==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "autoprefixer": { + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", + "dev": true, + "requires": { + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "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==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001579", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", + "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "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==", + "dev": true, + "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==" + } + } + }, + "clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "construct-style-sheets-polyfill": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/construct-style-sheets-polyfill/-/construct-style-sheets-polyfill-3.0.1.tgz", + "integrity": "sha512-vyAiTcS3i29IxjzJ12K2MGUUBYgrF69p6fKD+8ZPRLFhwTtuaxXLpazl4Yw4FITsQXwUMrh8juI1bOHWYjzkwA==" + }, + "copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "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==", + "dev": true, + "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==", + "dev": true + }, + "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" + } + }, + "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 + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "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" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "echarts": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz", + "integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.5.0" + } + }, + "electron-to-chromium": { + "version": "1.4.640", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.640.tgz", + "integrity": "sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "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.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@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-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 + }, + "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-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "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==", + "dev": true, + "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.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "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==", + "dev": true, + "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.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "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" + } + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "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 + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "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==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "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 + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "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==", + "dev": true + }, + "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 + }, + "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" + } + }, + "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==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "requires": { + "uc.micro": "^2.0.0" + } + }, + "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.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "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 + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "markdown-it": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz", + "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==", + "requires": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.0.0" + } + }, + "mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "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" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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-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==", + "dev": true + }, + "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==", + "dev": true + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true + }, + "omi": { + "version": "7.6.12", + "resolved": "https://registry.npmjs.org/omi/-/omi-7.6.12.tgz", + "integrity": "sha512-G1qiY/4iJ+Q8oBncKcuBj5drw/8sGMFXiD8mNczXbAjB0/7pqYpV1bYKHaYPQLD+3BsUu7dGb3KkSfXIINRCMg==", + "requires": { + "construct-style-sheets-polyfill": "3.0.1", + "reactive-signal": "^1.0.3", + "weakmap-polyfill": "2.0.4" + } + }, + "omi-ripple": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/omi-ripple/-/omi-ripple-0.1.2.tgz", + "integrity": "sha512-kgV5Jb8RVQm1n+xPA2yzexOnFfsygeoC33EmolSW3GlAbnTga20c0HgRyh4v9h/kqm+HqXKt478DqNCMk+ukdw==", + "requires": { + "omi": "latest" + } + }, + "omi-router": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/omi-router/-/omi-router-4.1.6.tgz", + "integrity": "sha512-T1m47ZHNKI4zNVsZB1SFGj0aAX03e61s9nRfi5S4YdWlMm8PnCBEf5izOxfDwCUWyFR/gk4krbou909pYtTQuA==", + "requires": { + "omi": "latest", + "path-to-regexp": "^6.2.1" + } + }, + "omi-suspense": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/omi-suspense/-/omi-suspense-0.1.4.tgz", + "integrity": "sha512-zijzn+H3e6+Tkbs2Eda/vEod/kH+9lOLBntiDBauMQyRh3HZnMjq1dClI9QySUD9c4LQneo8rQolG6kkuqh/Yw==", + "requires": { + "omi": "latest" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true + }, + "postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "dependencies": { + "lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "dev": true + } + } + }, + "postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.11" + } + }, + "postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "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==", + "dev": true + }, + "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 + }, + "prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true + }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "reactive-signal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reactive-signal/-/reactive-signal-1.0.3.tgz", + "integrity": "sha512-UlbIDgdkreGW0QFdrxCsVQNcPkiv+aOT4bWIF3inHb4jZlBdvRCZtgO9Ie5ayFxlnjetQg1QvRhg5PlGKSxZEA==" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "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 + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "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" + } + }, + "rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "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==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "sass": { + "version": "1.70.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", + "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "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==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "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==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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 + }, + "sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "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==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "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" + } + } + } + }, + "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==", + "dev": true + }, + "swiper": { + "version": "11.1.4", + "resolved": "https://registry.npmmirror.com/swiper/-/swiper-11.1.4.tgz", + "integrity": "sha512-1n7kbYJB2dFEpUHRFszq7gys/ofIBrMNibwTiMvPHwneKND/t9kImnHt6CfGPScMHgI+dWMbGTycCKGMoOO1KA==" + }, + "tailwind-merge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.1.tgz", + "integrity": "sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==", + "requires": { + "@babel/runtime": "^7.23.7" + } + }, + "tailwindcss": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", + "dev": true, + "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.19.1", + "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" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "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==", + "dev": true + }, + "ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + } + } + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "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 + }, + "typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true + }, + "uc.micro": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz", + "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==" + }, + "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, + "peer": 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" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "vite": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "dev": true, + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + } + }, + "weakmap-polyfill": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/weakmap-polyfill/-/weakmap-polyfill-2.0.4.tgz", + "integrity": "sha512-ZzxBf288iALJseijWelmECm/1x7ZwQn3sMYIkDr2VvZp7r6SEKuT8D0O9Wiq6L9Nl5mazrOMcmiZE/2NCenaxw==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "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==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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 + }, + "yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "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 + }, + "zrender": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.5.0.tgz", + "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==", + "requires": { + "tslib": "2.3.0" + } + } + } +} diff --git a/packages/omi-low-code/package.json b/packages/omi-low-code/package.json new file mode 100644 index 0000000000..da87d81501 --- /dev/null +++ b/packages/omi-low-code/package.json @@ -0,0 +1,43 @@ +{ + "name": "omi-starter-ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "start-host": "vite --host", + "start": "vite --host", + "dev": "vite --host", + "build": "tsc && vite build", + "preview": "vite preview", + "lint": "prettier --write src" + }, + "dependencies": { + "@popperjs/core": "^2.11.8", + "@types/prismjs": "^1.26.3", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.0", + "copy-to-clipboard": "^3.3.3", + "echarts": "^5.5.0", + "markdown-it": "^14.0.0", + "omi": "7.6.12", + "omi-ripple": "^0.1.2", + "omi-router": "latest", + "omi-suspense": "latest", + "prismjs": "^1.29.0", + "swiper": "^11.1.4", + "tailwind-merge": "^2.2.1" + }, + "devDependencies": { + "@tailwindcss/typography": "^0.5.10", + "@types/markdown-it": "^13.0.7", + "autoprefixer": "^10.4.16", + "eslint": "^8.45.0", + "postcss": "^8.4.31", + "prettier": "3.0.3", + "sass": "^1.55.0", + "tailwindcss": "^3.3.3", + "ts-node": "^10.9.1", + "typescript": "^5.0.2", + "vite": "^4.4.5" + } +} diff --git a/packages/omi-low-code/postcss.config.js b/packages/omi-low-code/postcss.config.js new file mode 100644 index 0000000000..5f35430ad8 --- /dev/null +++ b/packages/omi-low-code/postcss.config.js @@ -0,0 +1,18 @@ +import tailwindcss from 'tailwindcss' +import autoprefixer from 'autoprefixer' + +const postcssDarkModeHost = (opts = {}) => { + // Work with options here + return { + postcssPlugin: 'postcssDarkModeHost', + Rule(rule) { + // Transform CSS AST here + if (rule.selector.startsWith(':is(.dark ')) { + rule.selector = rule.selector.replace(':is(.dark ', ':is(:host(.dark) ') + } + }, + } +} +export default { + plugins: [tailwindcss, postcssDarkModeHost(), autoprefixer], +} diff --git a/packages/omi-low-code/src/assets/icon-font.css b/packages/omi-low-code/src/assets/icon-font.css new file mode 100644 index 0000000000..1eb6a2016d --- /dev/null +++ b/packages/omi-low-code/src/assets/icon-font.css @@ -0,0 +1,4835 @@ +@font-face { + font-family: 't'; + src: + url('./t.woff') format('woff'), + /* chrome, firefox */ url('./t.ttf') format('truetype'), + /* opera, Safari, Android, iOS 4.2+ */ url('./t.svg') format('svg'); /* iOS 4.1- */ + font-weight: normal; + font-style: normal; +} + +.t-icon { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 't' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + text-align: center; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.t-icon-activity:before { + content: '\E001'; +} + +.t-icon-add-and-subtract:before { + content: '\E002'; +} + +.t-icon-add-circle:before { + content: '\E003'; +} + +.t-icon-add-rectangle:before { + content: '\E004'; +} + +.t-icon-add:before { + content: '\E005'; +} + +.t-icon-address-book:before { + content: '\E006'; +} + +.t-icon-adjustment:before { + content: '\E007'; +} + +.t-icon-airplay-wave:before { + content: '\E008'; +} + +.t-icon-alarm-add:before { + content: '\E009'; +} + +.t-icon-alarm-off:before { + content: '\E00A'; +} + +.t-icon-alarm:before { + content: '\E00B'; +} + +.t-icon-align-top:before { + content: '\E00C'; +} + +.t-icon-align-vertical:before { + content: '\E00D'; +} + +.t-icon-alpha:before { + content: '\E00E'; +} + +.t-icon-analytics:before { + content: '\E00F'; +} + +.t-icon-anchor:before { + content: '\E010'; +} + +.t-icon-angry:before { + content: '\E011'; +} + +.t-icon-animation-1:before { + content: '\E012'; +} + +.t-icon-animation:before { + content: '\E013'; +} + +.t-icon-anticlockwise:before { + content: '\E014'; +} + +.t-icon-api:before { + content: '\E015'; +} + +.t-icon-app:before { + content: '\E016'; +} + +.t-icon-apple:before { + content: '\E017'; +} + +.t-icon-application:before { + content: '\E018'; +} + +.t-icon-architecture-hui-style:before { + content: '\E019'; +} + +.t-icon-archway-1:before { + content: '\E01A'; +} + +.t-icon-archway:before { + content: '\E01B'; +} + +.t-icon-arrow-down-circle:before { + content: '\E01C'; +} + +.t-icon-arrow-down-rectangle:before { + content: '\E01D'; +} + +.t-icon-arrow-down:before { + content: '\E01E'; +} + +.t-icon-arrow-left-circle:before { + content: '\E01F'; +} + +.t-icon-arrow-left-down-circle:before { + content: '\E020'; +} + +.t-icon-arrow-left-down:before { + content: '\E021'; +} + +.t-icon-arrow-left-right-1:before { + content: '\E022'; +} + +.t-icon-arrow-left-right-2:before { + content: '\E023'; +} + +.t-icon-arrow-left-right-3:before { + content: '\E024'; +} + +.t-icon-arrow-left-right-circle:before { + content: '\E025'; +} + +.t-icon-arrow-left-up-circle:before { + content: '\E026'; +} + +.t-icon-arrow-left-up:before { + content: '\E027'; +} + +.t-icon-arrow-left:before { + content: '\E028'; +} + +.t-icon-arrow-right-circle:before { + content: '\E029'; +} + +.t-icon-arrow-right-down-circle:before { + content: '\E02A'; +} + +.t-icon-arrow-right-down:before { + content: '\E02B'; +} + +.t-icon-arrow-right-up-circle:before { + content: '\E02C'; +} + +.t-icon-arrow-right-up:before { + content: '\E02D'; +} + +.t-icon-arrow-right:before { + content: '\E02E'; +} + +.t-icon-arrow-triangle-down-filled:before { + content: '\E02F'; +} + +.t-icon-arrow-triangle-down:before { + content: '\E030'; +} + +.t-icon-arrow-triangle-up-filled:before { + content: '\E031'; +} + +.t-icon-arrow-triangle-up:before { + content: '\E032'; +} + +.t-icon-arrow-up-circle:before { + content: '\E033'; +} + +.t-icon-arrow-up-down-1:before { + content: '\E034'; +} + +.t-icon-arrow-up-down-2:before { + content: '\E035'; +} + +.t-icon-arrow-up-down-3:before { + content: '\E036'; +} + +.t-icon-arrow-up-down-circle:before { + content: '\E037'; +} + +.t-icon-arrow-up:before { + content: '\E038'; +} + +.t-icon-artboard:before { + content: '\E039'; +} + +.t-icon-article:before { + content: '\E03A'; +} + +.t-icon-assignment-checked:before { + content: '\E03B'; +} + +.t-icon-assignment-code:before { + content: '\E03C'; +} + +.t-icon-assignment-error:before { + content: '\E03D'; +} + +.t-icon-assignment-user:before { + content: '\E03E'; +} + +.t-icon-assignment:before { + content: '\E03F'; +} + +.t-icon-attach:before { + content: '\E040'; +} + +.t-icon-attic-1:before { + content: '\E041'; +} + +.t-icon-attic:before { + content: '\E042'; +} + +.t-icon-audio:before { + content: '\E043'; +} + +.t-icon-awkward:before { + content: '\E044'; +} + +.t-icon-backtop-rectangle:before { + content: '\E045'; +} + +.t-icon-backtop:before { + content: '\E046'; +} + +.t-icon-backup:before { + content: '\E047'; +} + +.t-icon-backward:before { + content: '\E048'; +} + +.t-icon-bad-laugh:before { + content: '\E049'; +} + +.t-icon-bamboo-shoot:before { + content: '\E04A'; +} + +.t-icon-banana:before { + content: '\E04B'; +} + +.t-icon-barbecue:before { + content: '\E04C'; +} + +.t-icon-barcode-1:before { + content: '\E04D'; +} + +.t-icon-barcode:before { + content: '\E04E'; +} + +.t-icon-base-station:before { + content: '\E04F'; +} + +.t-icon-battery-add:before { + content: '\E050'; +} + +.t-icon-battery-charging:before { + content: '\E051'; +} + +.t-icon-battery-low:before { + content: '\E052'; +} + +.t-icon-battery:before { + content: '\E053'; +} + +.t-icon-bean:before { + content: '\E054'; +} + +.t-icon-beer:before { + content: '\E055'; +} + +.t-icon-beta:before { + content: '\E056'; +} + +.t-icon-bifurcate:before { + content: '\E057'; +} + +.t-icon-bill:before { + content: '\E058'; +} + +.t-icon-blockchain:before { + content: '\E059'; +} + +.t-icon-bluetooth:before { + content: '\E05A'; +} + +.t-icon-bone:before { + content: '\E05B'; +} + +.t-icon-book-open:before { + content: '\E05C'; +} + +.t-icon-book:before { + content: '\E05D'; +} + +.t-icon-bookmark-add:before { + content: '\E05E'; +} + +.t-icon-bookmark-checked:before { + content: '\E05F'; +} + +.t-icon-bookmark-double:before { + content: '\E060'; +} + +.t-icon-bookmark-minus:before { + content: '\E061'; +} + +.t-icon-bookmark:before { + content: '\E062'; +} + +.t-icon-braces:before { + content: '\E063'; +} + +.t-icon-brackets:before { + content: '\E064'; +} + +.t-icon-bread:before { + content: '\E065'; +} + +.t-icon-bridge-1:before { + content: '\E066'; +} + +.t-icon-bridge-2:before { + content: '\E067'; +} + +.t-icon-bridge-3:before { + content: '\E068'; +} + +.t-icon-bridge-4:before { + content: '\E069'; +} + +.t-icon-bridge-5:before { + content: '\E06A'; +} + +.t-icon-bridge-6:before { + content: '\E06B'; +} + +.t-icon-bridge:before { + content: '\E06C'; +} + +.t-icon-brightness-1:before { + content: '\E06D'; +} + +.t-icon-brightness:before { + content: '\E06E'; +} + +.t-icon-broccoli:before { + content: '\E06F'; +} + +.t-icon-browse-gallery:before { + content: '\E070'; +} + +.t-icon-browse-off:before { + content: '\E071'; +} + +.t-icon-browse:before { + content: '\E072'; +} + +.t-icon-brush:before { + content: '\E073'; +} + +.t-icon-bug-report:before { + content: '\E074'; +} + +.t-icon-bug:before { + content: '\E075'; +} + +.t-icon-building-1:before { + content: '\E076'; +} + +.t-icon-building-2:before { + content: '\E077'; +} + +.t-icon-building-3:before { + content: '\E078'; +} + +.t-icon-building-4:before { + content: '\E079'; +} + +.t-icon-building-5:before { + content: '\E07A'; +} + +.t-icon-building:before { + content: '\E07B'; +} + +.t-icon-bulletpoint:before { + content: '\E07C'; +} + +.t-icon-button:before { + content: '\E07D'; +} + +.t-icon-cabbage:before { + content: '\E07E'; +} + +.t-icon-cake:before { + content: '\E07F'; +} + +.t-icon-calculation-1:before { + content: '\E080'; +} + +.t-icon-calculation:before { + content: '\E081'; +} + +.t-icon-calculator-1:before { + content: '\E082'; +} + +.t-icon-calculator:before { + content: '\E083'; +} + +.t-icon-calendar-1:before { + content: '\E084'; +} + +.t-icon-calendar-2:before { + content: '\E085'; +} + +.t-icon-calendar-edit:before { + content: '\E086'; +} + +.t-icon-calendar-event:before { + content: '\E087'; +} + +.t-icon-calendar:before { + content: '\E088'; +} + +.t-icon-call-1:before { + content: '\E089'; +} + +.t-icon-call-cancel:before { + content: '\E08A'; +} + +.t-icon-call-forwarded:before { + content: '\E08B'; +} + +.t-icon-call-incoming:before { + content: '\E08C'; +} + +.t-icon-call-off:before { + content: '\E08D'; +} + +.t-icon-call:before { + content: '\E08E'; +} + +.t-icon-calm-1:before { + content: '\E08F'; +} + +.t-icon-calm:before { + content: '\E090'; +} + +.t-icon-camera-1:before { + content: '\E091'; +} + +.t-icon-camera-2:before { + content: '\E092'; +} + +.t-icon-camera-off:before { + content: '\E093'; +} + +.t-icon-camera:before { + content: '\E094'; +} + +.t-icon-candy:before { + content: '\E095'; +} + +.t-icon-card:before { + content: '\E096'; +} + +.t-icon-cardmembership:before { + content: '\E097'; +} + +.t-icon-caret-down-small:before { + content: '\E098'; +} + +.t-icon-caret-down:before { + content: '\E099'; +} + +.t-icon-caret-left-small:before { + content: '\E09A'; +} + +.t-icon-caret-left:before { + content: '\E09B'; +} + +.t-icon-caret-right-small:before { + content: '\E09C'; +} + +.t-icon-caret-right:before { + content: '\E09D'; +} + +.t-icon-caret-up-small:before { + content: '\E09E'; +} + +.t-icon-caret-up:before { + content: '\E09F'; +} + +.t-icon-cart-add:before { + content: '\E0A0'; +} + +.t-icon-cart:before { + content: '\E0A1'; +} + +.t-icon-cast:before { + content: '\E0A2'; +} + +.t-icon-castle-1:before { + content: '\E0A3'; +} + +.t-icon-castle-2:before { + content: '\E0A4'; +} + +.t-icon-castle-3:before { + content: '\E0A5'; +} + +.t-icon-castle-4:before { + content: '\E0A6'; +} + +.t-icon-castle-5:before { + content: '\E0A7'; +} + +.t-icon-castle-6:before { + content: '\E0A8'; +} + +.t-icon-castle-7:before { + content: '\E0A9'; +} + +.t-icon-castle:before { + content: '\E0AA'; +} + +.t-icon-cat:before { + content: '\E0AB'; +} + +.t-icon-catalog:before { + content: '\E0AC'; +} + +.t-icon-cd:before { + content: '\E0AD'; +} + +.t-icon-celsius:before { + content: '\E0AE'; +} + +.t-icon-center-focus-strong:before { + content: '\E0AF'; +} + +.t-icon-centimeter:before { + content: '\E0B0'; +} + +.t-icon-certificate-1:before { + content: '\E0B1'; +} + +.t-icon-certificate:before { + content: '\E0B2'; +} + +.t-icon-chart-3d:before { + content: '\E0B3'; +} + +.t-icon-chart-add:before { + content: '\E0B4'; +} + +.t-icon-chart-analytics:before { + content: '\E0B5'; +} + +.t-icon-chart-area-multi:before { + content: '\E0B6'; +} + +.t-icon-chart-area:before { + content: '\E0B7'; +} + +.t-icon-chart-bar:before { + content: '\E0B8'; +} + +.t-icon-chart-bubble:before { + content: '\E0B9'; +} + +.t-icon-chart-colum:before { + content: '\E0BA'; +} + +.t-icon-chart-combo:before { + content: '\E0BB'; +} + +.t-icon-chart-line-data-1:before { + content: '\E0BC'; +} + +.t-icon-chart-line-data:before { + content: '\E0BD'; +} + +.t-icon-chart-line-multi:before { + content: '\E0BE'; +} + +.t-icon-chart-line:before { + content: '\E0BF'; +} + +.t-icon-chart-maximum:before { + content: '\E0C0'; +} + +.t-icon-chart-median:before { + content: '\E0C1'; +} + +.t-icon-chart-minimum:before { + content: '\E0C2'; +} + +.t-icon-chart-pie:before { + content: '\E0C3'; +} + +.t-icon-chart-radar:before { + content: '\E0C4'; +} + +.t-icon-chart-radial:before { + content: '\E0C5'; +} + +.t-icon-chart-ring-1:before { + content: '\E0C6'; +} + +.t-icon-chart-ring:before { + content: '\E0C7'; +} + +.t-icon-chart-scatter:before { + content: '\E0C8'; +} + +.t-icon-chart-stacked:before { + content: '\E0C9'; +} + +.t-icon-chart:before { + content: '\E0CA'; +} + +.t-icon-chat-add:before { + content: '\E0CB'; +} + +.t-icon-chat-bubble-1:before { + content: '\E0CC'; +} + +.t-icon-chat-bubble-add:before { + content: '\E0CD'; +} + +.t-icon-chat-bubble-error:before { + content: '\E0CE'; +} + +.t-icon-chat-bubble-help:before { + content: '\E0CF'; +} + +.t-icon-chat-bubble-history:before { + content: '\E0D0'; +} + +.t-icon-chat-bubble-locked:before { + content: '\E0D1'; +} + +.t-icon-chat-bubble-smile:before { + content: '\E0D2'; +} + +.t-icon-chat-bubble:before { + content: '\E0D3'; +} + +.t-icon-chat-checked:before { + content: '\E0D4'; +} + +.t-icon-chat-clear:before { + content: '\E0D5'; +} + +.t-icon-chat-double:before { + content: '\E0D6'; +} + +.t-icon-chat-error:before { + content: '\E0D7'; +} + +.t-icon-chat-heart:before { + content: '\E0D8'; +} + +.t-icon-chat-message:before { + content: '\E0D9'; +} + +.t-icon-chat-off:before { + content: '\E0DA'; +} + +.t-icon-chat-poll:before { + content: '\E0DB'; +} + +.t-icon-chat-setting:before { + content: '\E0DC'; +} + +.t-icon-chat:before { + content: '\E0DD'; +} + +.t-icon-check-circle-filled:before { + content: '\E0DE'; +} + +.t-icon-check-circle:before { + content: '\E0DF'; +} + +.t-icon-check-double:before { + content: '\E0E0'; +} + +.t-icon-check-rectangle-filled:before { + content: '\E0E1'; +} + +.t-icon-check-rectangle:before { + content: '\E0E2'; +} + +.t-icon-check:before { + content: '\E0E3'; +} + +.t-icon-cheese:before { + content: '\E0E4'; +} + +.t-icon-cherry:before { + content: '\E0E5'; +} + +.t-icon-chevron-down-circle:before { + content: '\E0E6'; +} + +.t-icon-chevron-down-double-s:before { + content: '\E0E7'; +} + +.t-icon-chevron-down-double:before { + content: '\E0E8'; +} + +.t-icon-chevron-down-rectangle:before { + content: '\E0E9'; +} + +.t-icon-chevron-down-s:before { + content: '\E0EA'; +} + +.t-icon-chevron-down:before { + content: '\E0EB'; +} + +.t-icon-chevron-left-circle:before { + content: '\E0EC'; +} + +.t-icon-chevron-left-double-s:before { + content: '\E0ED'; +} + +.t-icon-chevron-left-double:before { + content: '\E0EE'; +} + +.t-icon-chevron-left-rectangle:before { + content: '\E0EF'; +} + +.t-icon-chevron-left-s:before { + content: '\E0F0'; +} + +.t-icon-chevron-left:before { + content: '\E0F1'; +} + +.t-icon-chevron-right-circle:before { + content: '\E0F2'; +} + +.t-icon-chevron-right-double-s:before { + content: '\E0F3'; +} + +.t-icon-chevron-right-double:before { + content: '\E0F4'; +} + +.t-icon-chevron-right-rectangle:before { + content: '\E0F5'; +} + +.t-icon-chevron-right-s:before { + content: '\E0F6'; +} + +.t-icon-chevron-right:before { + content: '\E0F7'; +} + +.t-icon-chevron-up-circle:before { + content: '\E0F8'; +} + +.t-icon-chevron-up-double-s:before { + content: '\E0F9'; +} + +.t-icon-chevron-up-double:before { + content: '\E0FA'; +} + +.t-icon-chevron-up-rectangle:before { + content: '\E0FB'; +} + +.t-icon-chevron-up-s:before { + content: '\E0FC'; +} + +.t-icon-chevron-up:before { + content: '\E0FD'; +} + +.t-icon-chicken:before { + content: '\E0FE'; +} + +.t-icon-chili:before { + content: '\E0FF'; +} + +.t-icon-chimney-1:before { + content: '\E100'; +} + +.t-icon-chimney-2:before { + content: '\E101'; +} + +.t-icon-chimney:before { + content: '\E102'; +} + +.t-icon-chinese-cabbage:before { + content: '\E103'; +} + +.t-icon-church:before { + content: '\E104'; +} + +.t-icon-circle:before { + content: '\E105'; +} + +.t-icon-city-1:before { + content: '\E106'; +} + +.t-icon-city-10:before { + content: '\E107'; +} + +.t-icon-city-11:before { + content: '\E108'; +} + +.t-icon-city-12:before { + content: '\E109'; +} + +.t-icon-city-13:before { + content: '\E10A'; +} + +.t-icon-city-14:before { + content: '\E10B'; +} + +.t-icon-city-15:before { + content: '\E10C'; +} + +.t-icon-city-2:before { + content: '\E10D'; +} + +.t-icon-city-3:before { + content: '\E10E'; +} + +.t-icon-city-4:before { + content: '\E10F'; +} + +.t-icon-city-5:before { + content: '\E110'; +} + +.t-icon-city-6:before { + content: '\E111'; +} + +.t-icon-city-7:before { + content: '\E112'; +} + +.t-icon-city-8:before { + content: '\E113'; +} + +.t-icon-city-9:before { + content: '\E114'; +} + +.t-icon-city-ancient-1:before { + content: '\E115'; +} + +.t-icon-city-ancient-2:before { + content: '\E116'; +} + +.t-icon-city-ancient:before { + content: '\E117'; +} + +.t-icon-city:before { + content: '\E118'; +} + +.t-icon-clear-formatting-1:before { + content: '\E119'; +} + +.t-icon-clear-formatting:before { + content: '\E11A'; +} + +.t-icon-clear:before { + content: '\E11B'; +} + +.t-icon-close-circle-filled:before { + content: '\E11C'; +} + +.t-icon-close-circle:before { + content: '\E11D'; +} + +.t-icon-close-octagon:before { + content: '\E11E'; +} + +.t-icon-close-rectangle:before { + content: '\E11F'; +} + +.t-icon-close:before { + content: '\E120'; +} + +.t-icon-cloud-download:before { + content: '\E121'; +} + +.t-icon-cloud-upload:before { + content: '\E122'; +} + +.t-icon-cloud:before { + content: '\E123'; +} + +.t-icon-cloudy-day:before { + content: '\E124'; +} + +.t-icon-cloudy-night-rain:before { + content: '\E125'; +} + +.t-icon-cloudy-night:before { + content: '\E126'; +} + +.t-icon-cloudy-rain:before { + content: '\E127'; +} + +.t-icon-cloudy-sunny:before { + content: '\E128'; +} + +.t-icon-code-1:before { + content: '\E129'; +} + +.t-icon-code-off:before { + content: '\E12A'; +} + +.t-icon-code:before { + content: '\E12B'; +} + +.t-icon-cola:before { + content: '\E12C'; +} + +.t-icon-collage:before { + content: '\E12D'; +} + +.t-icon-collection:before { + content: '\E12E'; +} + +.t-icon-color-invert:before { + content: '\E12F'; +} + +.t-icon-combination:before { + content: '\E130'; +} + +.t-icon-command:before { + content: '\E131'; +} + +.t-icon-compass-1:before { + content: '\E132'; +} + +.t-icon-compass:before { + content: '\E133'; +} + +.t-icon-component-breadcrumb:before { + content: '\E134'; +} + +.t-icon-component-checkbox:before { + content: '\E135'; +} + +.t-icon-component-divider-horizontal:before { + content: '\E136'; +} + +.t-icon-component-divider-vertical:before { + content: '\E137'; +} + +.t-icon-component-dropdown:before { + content: '\E138'; +} + +.t-icon-component-grid:before { + content: '\E139'; +} + +.t-icon-component-input:before { + content: '\E13A'; +} + +.t-icon-component-layout:before { + content: '\E13B'; +} + +.t-icon-component-radio:before { + content: '\E13C'; +} + +.t-icon-component-space:before { + content: '\E13D'; +} + +.t-icon-component-steps:before { + content: '\E13E'; +} + +.t-icon-component-switch:before { + content: '\E13F'; +} + +.t-icon-constraint:before { + content: '\E140'; +} + +.t-icon-contrast-1:before { + content: '\E141'; +} + +.t-icon-contrast:before { + content: '\E142'; +} + +.t-icon-control-platform:before { + content: '\E143'; +} + +.t-icon-cooperate:before { + content: '\E144'; +} + +.t-icon-coordinate-system:before { + content: '\E145'; +} + +.t-icon-copy:before { + content: '\E146'; +} + +.t-icon-copyright:before { + content: '\E147'; +} + +.t-icon-corn:before { + content: '\E148'; +} + +.t-icon-coupon:before { + content: '\E149'; +} + +.t-icon-course:before { + content: '\E14A'; +} + +.t-icon-cpu:before { + content: '\E14B'; +} + +.t-icon-crack:before { + content: '\E14C'; +} + +.t-icon-creditcard-add:before { + content: '\E14D'; +} + +.t-icon-creditcard-off:before { + content: '\E14E'; +} + +.t-icon-creditcard:before { + content: '\E14F'; +} + +.t-icon-crooked-smile:before { + content: '\E150'; +} + +.t-icon-cry-and-laugh:before { + content: '\E151'; +} + +.t-icon-cry-loudly:before { + content: '\E152'; +} + +.t-icon-css3:before { + content: '\E153'; +} + +.t-icon-cucumber:before { + content: '\E154'; +} + +.t-icon-currency-exchange:before { + content: '\E155'; +} + +.t-icon-cursor:before { + content: '\E156'; +} + +.t-icon-curtain:before { + content: '\E157'; +} + +.t-icon-curve:before { + content: '\E158'; +} + +.t-icon-cut-1:before { + content: '\E159'; +} + +.t-icon-cut:before { + content: '\E15A'; +} + +.t-icon-dam-1:before { + content: '\E15B'; +} + +.t-icon-dam-2:before { + content: '\E15C'; +} + +.t-icon-dam-3:before { + content: '\E15D'; +} + +.t-icon-dam-4:before { + content: '\E15E'; +} + +.t-icon-dam-5:before { + content: '\E15F'; +} + +.t-icon-dam-6:before { + content: '\E160'; +} + +.t-icon-dam-7:before { + content: '\E161'; +} + +.t-icon-dam:before { + content: '\E162'; +} + +.t-icon-dart-board:before { + content: '\E163'; +} + +.t-icon-dashboard-1:before { + content: '\E164'; +} + +.t-icon-dashboard:before { + content: '\E165'; +} + +.t-icon-data-base:before { + content: '\E166'; +} + +.t-icon-data-checked:before { + content: '\E167'; +} + +.t-icon-data-display:before { + content: '\E168'; +} + +.t-icon-data-error:before { + content: '\E169'; +} + +.t-icon-data-search:before { + content: '\E16A'; +} + +.t-icon-data:before { + content: '\E16B'; +} + +.t-icon-delete-1:before { + content: '\E16C'; +} + +.t-icon-delete-time:before { + content: '\E16D'; +} + +.t-icon-delete:before { + content: '\E16E'; +} + +.t-icon-delta:before { + content: '\E16F'; +} + +.t-icon-depressed:before { + content: '\E170'; +} + +.t-icon-desktop-1:before { + content: '\E171'; +} + +.t-icon-desktop:before { + content: '\E172'; +} + +.t-icon-despise:before { + content: '\E173'; +} + +.t-icon-device:before { + content: '\E174'; +} + +.t-icon-discount-filled:before { + content: '\E175'; +} + +.t-icon-discount:before { + content: '\E176'; +} + +.t-icon-dissatisfaction:before { + content: '\E177'; +} + +.t-icon-divide:before { + content: '\E178'; +} + +.t-icon-dividers-1:before { + content: '\E179'; +} + +.t-icon-dividers:before { + content: '\E17A'; +} + +.t-icon-doge:before { + content: '\E17B'; +} + +.t-icon-double-storey:before { + content: '\E17C'; +} + +.t-icon-download-1:before { + content: '\E17D'; +} + +.t-icon-download:before { + content: '\E17E'; +} + +.t-icon-downscale:before { + content: '\E17F'; +} + +.t-icon-drag-drop:before { + content: '\E180'; +} + +.t-icon-drag-move:before { + content: '\E181'; +} + +.t-icon-drink:before { + content: '\E182'; +} + +.t-icon-drumstick:before { + content: '\E183'; +} + +.t-icon-dv:before { + content: '\E184'; +} + +.t-icon-dvd:before { + content: '\E185'; +} + +.t-icon-earphone:before { + content: '\E186'; +} + +.t-icon-earth:before { + content: '\E187'; +} + +.t-icon-edit-1:before { + content: '\E188'; +} + +.t-icon-edit-2:before { + content: '\E189'; +} + +.t-icon-edit-off:before { + content: '\E18A'; +} + +.t-icon-edit:before { + content: '\E18B'; +} + +.t-icon-education:before { + content: '\E18C'; +} + +.t-icon-eggplant:before { + content: '\E18D'; +} + +.t-icon-ellipsis:before { + content: '\E18E'; +} + +.t-icon-emo-emotional:before { + content: '\E18F'; +} + +.t-icon-enter:before { + content: '\E190'; +} + +.t-icon-equal:before { + content: '\E191'; +} + +.t-icon-error-circle-filled:before { + content: '\E192'; +} + +.t-icon-error-circle:before { + content: '\E193'; +} + +.t-icon-error-triangle:before { + content: '\E194'; +} + +.t-icon-error:before { + content: '\E195'; +} + +.t-icon-excited-1:before { + content: '\E196'; +} + +.t-icon-excited:before { + content: '\E197'; +} + +.t-icon-expand-horizontal:before { + content: '\E198'; +} + +.t-icon-expand-vertical:before { + content: '\E199'; +} + +.t-icon-explore-off:before { + content: '\E19A'; +} + +.t-icon-explore:before { + content: '\E19B'; +} + +.t-icon-exposure:before { + content: '\E19C'; +} + +.t-icon-extension-off:before { + content: '\E19D'; +} + +.t-icon-extension:before { + content: '\E19E'; +} + +.t-icon-face-retouching:before { + content: '\E19F'; +} + +.t-icon-fact-check:before { + content: '\E1A0'; +} + +.t-icon-fahrenheit-scale:before { + content: '\E1A1'; +} + +.t-icon-feel-at-ease:before { + content: '\E1A2'; +} + +.t-icon-ferocious:before { + content: '\E1A3'; +} + +.t-icon-ferris-wheel:before { + content: '\E1A4'; +} + +.t-icon-file-1:before { + content: '\E1A5'; +} + +.t-icon-file-add-1:before { + content: '\E1A6'; +} + +.t-icon-file-add:before { + content: '\E1A7'; +} + +.t-icon-file-attachment:before { + content: '\E1A8'; +} + +.t-icon-file-blocked:before { + content: '\E1A9'; +} + +.t-icon-file-code-1:before { + content: '\E1AA'; +} + +.t-icon-file-code:before { + content: '\E1AB'; +} + +.t-icon-file-copy:before { + content: '\E1AC'; +} + +.t-icon-file-download:before { + content: '\E1AD'; +} + +.t-icon-file-excel:before { + content: '\E1AE'; +} + +.t-icon-file-export:before { + content: '\E1AF'; +} + +.t-icon-file-icon:before { + content: '\E1B0'; +} + +.t-icon-file-image:before { + content: '\E1B1'; +} + +.t-icon-file-import:before { + content: '\E1B2'; +} + +.t-icon-file-locked:before { + content: '\E1B3'; +} + +.t-icon-file-minus:before { + content: '\E1B4'; +} + +.t-icon-file-music:before { + content: '\E1B5'; +} + +.t-icon-file-onenote:before { + content: '\E1B6'; +} + +.t-icon-file-outlook:before { + content: '\E1B7'; +} + +.t-icon-file-paste:before { + content: '\E1B8'; +} + +.t-icon-file-pdf:before { + content: '\E1B9'; +} + +.t-icon-file-powerpoint:before { + content: '\E1BA'; +} + +.t-icon-file-restore:before { + content: '\E1BB'; +} + +.t-icon-file-safety:before { + content: '\E1BC'; +} + +.t-icon-file-search:before { + content: '\E1BD'; +} + +.t-icon-file-setting:before { + content: '\E1BE'; +} + +.t-icon-file-teams:before { + content: '\E1BF'; +} + +.t-icon-file-unknown:before { + content: '\E1C0'; +} + +.t-icon-file-unlocked:before { + content: '\E1C1'; +} + +.t-icon-file-word:before { + content: '\E1C2'; +} + +.t-icon-file-zip:before { + content: '\E1C3'; +} + +.t-icon-file:before { + content: '\E1C4'; +} + +.t-icon-fill-color-1:before { + content: '\E1C5'; +} + +.t-icon-fill-color:before { + content: '\E1C6'; +} + +.t-icon-film-1:before { + content: '\E1C7'; +} + +.t-icon-film:before { + content: '\E1C8'; +} + +.t-icon-filter-1:before { + content: '\E1C9'; +} + +.t-icon-filter-2:before { + content: '\E1CA'; +} + +.t-icon-filter-3:before { + content: '\E1CB'; +} + +.t-icon-filter-clear:before { + content: '\E1CC'; +} + +.t-icon-filter-off:before { + content: '\E1CD'; +} + +.t-icon-filter:before { + content: '\E1CE'; +} + +.t-icon-fingerprint-1:before { + content: '\E1CF'; +} + +.t-icon-fingerprint-2:before { + content: '\E1D0'; +} + +.t-icon-fingerprint-3:before { + content: '\E1D1'; +} + +.t-icon-fingerprint:before { + content: '\E1D2'; +} + +.t-icon-fish:before { + content: '\E1D3'; +} + +.t-icon-flag-1:before { + content: '\E1D4'; +} + +.t-icon-flag-2:before { + content: '\E1D5'; +} + +.t-icon-flag-3:before { + content: '\E1D6'; +} + +.t-icon-flag-4:before { + content: '\E1D7'; +} + +.t-icon-flag:before { + content: '\E1D8'; +} + +.t-icon-flashlight:before { + content: '\E1D9'; +} + +.t-icon-flight-landing:before { + content: '\E1DA'; +} + +.t-icon-flight-takeoff:before { + content: '\E1DB'; +} + +.t-icon-flip-smiling-face:before { + content: '\E1DC'; +} + +.t-icon-flip-to-back:before { + content: '\E1DD'; +} + +.t-icon-flip-to-front:before { + content: '\E1DE'; +} + +.t-icon-focus:before { + content: '\E1DF'; +} + +.t-icon-fog-night:before { + content: '\E1E0'; +} + +.t-icon-fog-sunny:before { + content: '\E1E1'; +} + +.t-icon-fog:before { + content: '\E1E2'; +} + +.t-icon-folder-1:before { + content: '\E1E3'; +} + +.t-icon-folder-add-1:before { + content: '\E1E4'; +} + +.t-icon-folder-add:before { + content: '\E1E5'; +} + +.t-icon-folder-blocked:before { + content: '\E1E6'; +} + +.t-icon-folder-details:before { + content: '\E1E7'; +} + +.t-icon-folder-export:before { + content: '\E1E8'; +} + +.t-icon-folder-import:before { + content: '\E1E9'; +} + +.t-icon-folder-locked:before { + content: '\E1EA'; +} + +.t-icon-folder-minus:before { + content: '\E1EB'; +} + +.t-icon-folder-move:before { + content: '\E1EC'; +} + +.t-icon-folder-off:before { + content: '\E1ED'; +} + +.t-icon-folder-open-1:before { + content: '\E1EE'; +} + +.t-icon-folder-open:before { + content: '\E1EF'; +} + +.t-icon-folder-search:before { + content: '\E1F0'; +} + +.t-icon-folder-setting:before { + content: '\E1F1'; +} + +.t-icon-folder-shared:before { + content: '\E1F2'; +} + +.t-icon-folder-unlocked:before { + content: '\E1F3'; +} + +.t-icon-folder-zip:before { + content: '\E1F4'; +} + +.t-icon-folder:before { + content: '\E1F5'; +} + +.t-icon-forest:before { + content: '\E1F6'; +} + +.t-icon-fork:before { + content: '\E1F7'; +} + +.t-icon-form:before { + content: '\E1F8'; +} + +.t-icon-format-horizontal-align-bottom:before { + content: '\E1F9'; +} + +.t-icon-format-horizontal-align-center:before { + content: '\E1FA'; +} + +.t-icon-format-horizontal-align-top:before { + content: '\E1FB'; +} + +.t-icon-format-vertical-align-center:before { + content: '\E1FC'; +} + +.t-icon-format-vertical-align-left:before { + content: '\E1FD'; +} + +.t-icon-format-vertical-align-right:before { + content: '\E1FE'; +} + +.t-icon-forward:before { + content: '\E1FF'; +} + +.t-icon-frame-1:before { + content: '\E200'; +} + +.t-icon-frame:before { + content: '\E201'; +} + +.t-icon-fries:before { + content: '\E202'; +} + +.t-icon-fullscreen-1:before { + content: '\E203'; +} + +.t-icon-fullscreen-2:before { + content: '\E204'; +} + +.t-icon-fullscreen-exit-1:before { + content: '\E205'; +} + +.t-icon-fullscreen-exit:before { + content: '\E206'; +} + +.t-icon-fullscreen:before { + content: '\E207'; +} + +.t-icon-function-curve:before { + content: '\E208'; +} + +.t-icon-functions-1:before { + content: '\E209'; +} + +.t-icon-functions:before { + content: '\E20A'; +} + +.t-icon-gamepad-1:before { + content: '\E20B'; +} + +.t-icon-gamepad:before { + content: '\E20C'; +} + +.t-icon-gamma:before { + content: '\E20D'; +} + +.t-icon-garlic:before { + content: '\E20E'; +} + +.t-icon-gender-female:before { + content: '\E20F'; +} + +.t-icon-gender-male:before { + content: '\E210'; +} + +.t-icon-gesture-applause:before { + content: '\E211'; +} + +.t-icon-gesture-click:before { + content: '\E212'; +} + +.t-icon-gesture-down:before { + content: '\E213'; +} + +.t-icon-gesture-expansion:before { + content: '\E214'; +} + +.t-icon-gesture-left-slip:before { + content: '\E215'; +} + +.t-icon-gesture-left:before { + content: '\E216'; +} + +.t-icon-gesture-pray-1:before { + content: '\E217'; +} + +.t-icon-gesture-pray:before { + content: '\E218'; +} + +.t-icon-gesture-press:before { + content: '\E219'; +} + +.t-icon-gesture-ranslation-1:before { + content: '\E21A'; +} + +.t-icon-gesture-ranslation:before { + content: '\E21B'; +} + +.t-icon-gesture-right-slip:before { + content: '\E21C'; +} + +.t-icon-gesture-right:before { + content: '\E21D'; +} + +.t-icon-gesture-slide-up:before { + content: '\E21E'; +} + +.t-icon-gesture-up-1:before { + content: '\E21F'; +} + +.t-icon-gesture-up-2:before { + content: '\E220'; +} + +.t-icon-gesture-up-and-down:before { + content: '\E221'; +} + +.t-icon-gesture-up:before { + content: '\E222'; +} + +.t-icon-gesture-wipe-down:before { + content: '\E223'; +} + +.t-icon-gift:before { + content: '\E224'; +} + +.t-icon-giggle:before { + content: '\E225'; +} + +.t-icon-git-branch:before { + content: '\E226'; +} + +.t-icon-git-commit:before { + content: '\E227'; +} + +.t-icon-git-merge:before { + content: '\E228'; +} + +.t-icon-git-pull-request:before { + content: '\E229'; +} + +.t-icon-git-repository-commits:before { + content: '\E22A'; +} + +.t-icon-git-repository-private:before { + content: '\E22B'; +} + +.t-icon-git-repository:before { + content: '\E22C'; +} + +.t-icon-gps:before { + content: '\E22D'; +} + +.t-icon-grape:before { + content: '\E22E'; +} + +.t-icon-greater-than-or-equal:before { + content: '\E22F'; +} + +.t-icon-greater-than:before { + content: '\E230'; +} + +.t-icon-green-onion:before { + content: '\E231'; +} + +.t-icon-grid-add:before { + content: '\E232'; +} + +.t-icon-grid-view:before { + content: '\E233'; +} + +.t-icon-guitar:before { + content: '\E234'; +} + +.t-icon-hamburger:before { + content: '\E235'; +} + +.t-icon-happy:before { + content: '\E236'; +} + +.t-icon-hard-disk-storage:before { + content: '\E237'; +} + +.t-icon-hard-drive:before { + content: '\E238'; +} + +.t-icon-hashtag:before { + content: '\E239'; +} + +.t-icon-hd:before { + content: '\E23A'; +} + +.t-icon-heart-filled:before { + content: '\E23B'; +} + +.t-icon-heart:before { + content: '\E23C'; +} + +.t-icon-help-circle-filled:before { + content: '\E23D'; +} + +.t-icon-help-circle:before { + content: '\E23E'; +} + +.t-icon-help-rectangle:before { + content: '\E23F'; +} + +.t-icon-help:before { + content: '\E240'; +} + +.t-icon-highlight-1:before { + content: '\E241'; +} + +.t-icon-highlight:before { + content: '\E242'; +} + +.t-icon-history-setting:before { + content: '\E243'; +} + +.t-icon-history:before { + content: '\E244'; +} + +.t-icon-home:before { + content: '\E245'; +} + +.t-icon-hospital-1:before { + content: '\E246'; +} + +.t-icon-hospital:before { + content: '\E247'; +} + +.t-icon-hotspot-wave:before { + content: '\E248'; +} + +.t-icon-hourglass:before { + content: '\E249'; +} + +.t-icon-houses-1:before { + content: '\E24A'; +} + +.t-icon-houses-2:before { + content: '\E24B'; +} + +.t-icon-houses:before { + content: '\E24C'; +} + +.t-icon-html5:before { + content: '\E24D'; +} + +.t-icon-https:before { + content: '\E24E'; +} + +.t-icon-ice-cream:before { + content: '\E24F'; +} + +.t-icon-icon:before { + content: '\E250'; +} + +.t-icon-image-1:before { + content: '\E251'; +} + +.t-icon-image-add:before { + content: '\E252'; +} + +.t-icon-image-edit:before { + content: '\E253'; +} + +.t-icon-image-error:before { + content: '\E254'; +} + +.t-icon-image-off:before { + content: '\E255'; +} + +.t-icon-image-search:before { + content: '\E256'; +} + +.t-icon-image:before { + content: '\E257'; +} + +.t-icon-indent-left:before { + content: '\E258'; +} + +.t-icon-indent-right:before { + content: '\E259'; +} + +.t-icon-indicator:before { + content: '\E25A'; +} + +.t-icon-info-circle-filled:before { + content: '\E25B'; +} + +.t-icon-info-circle:before { + content: '\E25C'; +} + +.t-icon-ink:before { + content: '\E25D'; +} + +.t-icon-install-desktop:before { + content: '\E25E'; +} + +.t-icon-install-mobile:before { + content: '\E25F'; +} + +.t-icon-install:before { + content: '\E260'; +} + +.t-icon-institution-checked:before { + content: '\E261'; +} + +.t-icon-institution:before { + content: '\E262'; +} + +.t-icon-internet:before { + content: '\E263'; +} + +.t-icon-ipod:before { + content: '\E264'; +} + +.t-icon-joyful:before { + content: '\E265'; +} + +.t-icon-jump-off:before { + content: '\E266'; +} + +.t-icon-jump:before { + content: '\E267'; +} + +.t-icon-keyboard:before { + content: '\E268'; +} + +.t-icon-laptop:before { + content: '\E269'; +} + +.t-icon-layers:before { + content: '\E26A'; +} + +.t-icon-layout:before { + content: '\E26B'; +} + +.t-icon-leaderboard:before { + content: '\E26C'; +} + +.t-icon-lemon-slice:before { + content: '\E26D'; +} + +.t-icon-lemon:before { + content: '\E26E'; +} + +.t-icon-less-than-or-equal:before { + content: '\E26F'; +} + +.t-icon-less-than:before { + content: '\E270'; +} + +.t-icon-letters-a:before { + content: '\E271'; +} + +.t-icon-letters-b:before { + content: '\E272'; +} + +.t-icon-letters-c:before { + content: '\E273'; +} + +.t-icon-letters-d:before { + content: '\E274'; +} + +.t-icon-letters-e:before { + content: '\E275'; +} + +.t-icon-letters-f:before { + content: '\E276'; +} + +.t-icon-letters-g:before { + content: '\E277'; +} + +.t-icon-letters-h:before { + content: '\E278'; +} + +.t-icon-letters-i:before { + content: '\E279'; +} + +.t-icon-letters-j:before { + content: '\E27A'; +} + +.t-icon-letters-k:before { + content: '\E27B'; +} + +.t-icon-letters-l:before { + content: '\E27C'; +} + +.t-icon-letters-m:before { + content: '\E27D'; +} + +.t-icon-letters-n:before { + content: '\E27E'; +} + +.t-icon-letters-o:before { + content: '\E27F'; +} + +.t-icon-letters-p:before { + content: '\E280'; +} + +.t-icon-letters-q:before { + content: '\E281'; +} + +.t-icon-letters-r:before { + content: '\E282'; +} + +.t-icon-letters-s:before { + content: '\E283'; +} + +.t-icon-letters-t:before { + content: '\E284'; +} + +.t-icon-letters-u:before { + content: '\E285'; +} + +.t-icon-letters-v:before { + content: '\E286'; +} + +.t-icon-letters-w:before { + content: '\E287'; +} + +.t-icon-letters-x:before { + content: '\E288'; +} + +.t-icon-letters-y:before { + content: '\E289'; +} + +.t-icon-letters-z:before { + content: '\E28A'; +} + +.t-icon-lightbulb-circle:before { + content: '\E28B'; +} + +.t-icon-lightbulb:before { + content: '\E28C'; +} + +.t-icon-lighthouse-1:before { + content: '\E28D'; +} + +.t-icon-lighthouse-2:before { + content: '\E28E'; +} + +.t-icon-lighthouse:before { + content: '\E28F'; +} + +.t-icon-lighting-circle:before { + content: '\E290'; +} + +.t-icon-line-height:before { + content: '\E291'; +} + +.t-icon-link-1:before { + content: '\E292'; +} + +.t-icon-link-unlink:before { + content: '\E293'; +} + +.t-icon-link:before { + content: '\E294'; +} + +.t-icon-liquor:before { + content: '\E295'; +} + +.t-icon-list:before { + content: '\E296'; +} + +.t-icon-load:before { + content: '\E297'; +} + +.t-icon-loading:before { + content: '\E298'; +} + +.t-icon-location-1:before { + content: '\E299'; +} + +.t-icon-location-enlargement:before { + content: '\E29A'; +} + +.t-icon-location-error:before { + content: '\E29B'; +} + +.t-icon-location-parking-place:before { + content: '\E29C'; +} + +.t-icon-location-reduction:before { + content: '\E29D'; +} + +.t-icon-location-setting:before { + content: '\E29E'; +} + +.t-icon-location:before { + content: '\E29F'; +} + +.t-icon-lock-off:before { + content: '\E2A0'; +} + +.t-icon-lock-on:before { + content: '\E2A1'; +} + +.t-icon-lock-time:before { + content: '\E2A2'; +} + +.t-icon-login:before { + content: '\E2A3'; +} + +.t-icon-logo-adobe-illustrate:before { + content: '\E2A4'; +} + +.t-icon-logo-adobe-photoshop-1:before { + content: '\E2A5'; +} + +.t-icon-logo-adobe-photoshop:before { + content: '\E2A6'; +} + +.t-icon-logo-android:before { + content: '\E2A7'; +} + +.t-icon-logo-apple-filled:before { + content: '\E2A8'; +} + +.t-icon-logo-apple:before { + content: '\E2A9'; +} + +.t-icon-logo-behance:before { + content: '\E2AA'; +} + +.t-icon-logo-chrome-filled:before { + content: '\E2AB'; +} + +.t-icon-logo-chrome:before { + content: '\E2AC'; +} + +.t-icon-logo-cinema4d:before { + content: '\E2AD'; +} + +.t-icon-logo-codepen:before { + content: '\E2AE'; +} + +.t-icon-logo-codesandbox:before { + content: '\E2AF'; +} + +.t-icon-logo-dribbble:before { + content: '\E2B0'; +} + +.t-icon-logo-facebook:before { + content: '\E2B1'; +} + +.t-icon-logo-figma:before { + content: '\E2B2'; +} + +.t-icon-logo-framer:before { + content: '\E2B3'; +} + +.t-icon-logo-github-filled:before { + content: '\E2B4'; +} + +.t-icon-logo-github:before { + content: '\E2B5'; +} + +.t-icon-logo-gitlab:before { + content: '\E2B6'; +} + +.t-icon-logo-ie-filled:before { + content: '\E2B7'; +} + +.t-icon-logo-ie:before { + content: '\E2B8'; +} + +.t-icon-logo-instagram:before { + content: '\E2B9'; +} + +.t-icon-logo-qq:before { + content: '\E2BA'; +} + +.t-icon-logo-twitter:before { + content: '\E2BB'; +} + +.t-icon-logo-wechat-stroke:before { + content: '\E2BC'; +} + +.t-icon-logo-wechat:before { + content: '\E2BD'; +} + +.t-icon-logo-wecom:before { + content: '\E2BE'; +} + +.t-icon-logo-windows-filled:before { + content: '\E2BF'; +} + +.t-icon-logo-windows:before { + content: '\E2C0'; +} + +.t-icon-logo-youtube:before { + content: '\E2C1'; +} + +.t-icon-logout:before { + content: '\E2C2'; +} + +.t-icon-look-around:before { + content: '\E2C3'; +} + +.t-icon-loudspeaker:before { + content: '\E2C4'; +} + +.t-icon-mail:before { + content: '\E2C5'; +} + +.t-icon-map-3d:before { + content: '\E2C6'; +} + +.t-icon-map-add:before { + content: '\E2C7'; +} + +.t-icon-map-aiming:before { + content: '\E2C8'; +} + +.t-icon-map-blocked:before { + content: '\E2C9'; +} + +.t-icon-map-bubble:before { + content: '\E2CA'; +} + +.t-icon-map-cancel:before { + content: '\E2CB'; +} + +.t-icon-map-chat:before { + content: '\E2CC'; +} + +.t-icon-map-checked:before { + content: '\E2CD'; +} + +.t-icon-map-collection:before { + content: '\E2CE'; +} + +.t-icon-map-connection:before { + content: '\E2CF'; +} + +.t-icon-map-distance:before { + content: '\E2D0'; +} + +.t-icon-map-double:before { + content: '\E2D1'; +} + +.t-icon-map-edit:before { + content: '\E2D2'; +} + +.t-icon-map-grid:before { + content: '\E2D3'; +} + +.t-icon-map-information-1:before { + content: '\E2D4'; +} + +.t-icon-map-information-2:before { + content: '\E2D5'; +} + +.t-icon-map-information:before { + content: '\E2D6'; +} + +.t-icon-map-location:before { + content: '\E2D7'; +} + +.t-icon-map-locked:before { + content: '\E2D8'; +} + +.t-icon-map-marked:before { + content: '\E2D9'; +} + +.t-icon-map-navigation:before { + content: '\E2DA'; +} + +.t-icon-map-outline:before { + content: '\E2DB'; +} + +.t-icon-map-route-planning:before { + content: '\E2DC'; +} + +.t-icon-map-ruler:before { + content: '\E2DD'; +} + +.t-icon-map-safety:before { + content: '\E2DE'; +} + +.t-icon-map-search-1:before { + content: '\E2DF'; +} + +.t-icon-map-search:before { + content: '\E2E0'; +} + +.t-icon-map-setting:before { + content: '\E2E1'; +} + +.t-icon-map-unlocked:before { + content: '\E2E2'; +} + +.t-icon-map:before { + content: '\E2E3'; +} + +.t-icon-mark-as-unread:before { + content: '\E2E4'; +} + +.t-icon-markup:before { + content: '\E2E5'; +} + +.t-icon-mathematics:before { + content: '\E2E6'; +} + +.t-icon-measurement-1:before { + content: '\E2E7'; +} + +.t-icon-measurement-2:before { + content: '\E2E8'; +} + +.t-icon-measurement:before { + content: '\E2E9'; +} + +.t-icon-meat-pepper:before { + content: '\E2EA'; +} + +.t-icon-media-library:before { + content: '\E2EB'; +} + +.t-icon-member:before { + content: '\E2EC'; +} + +.t-icon-menu-application:before { + content: '\E2ED'; +} + +.t-icon-menu-fold:before { + content: '\E2EE'; +} + +.t-icon-menu-unfold:before { + content: '\E2EF'; +} + +.t-icon-menu:before { + content: '\E2F0'; +} + +.t-icon-merge-cells:before { + content: '\E2F1'; +} + +.t-icon-microphone-1:before { + content: '\E2F2'; +} + +.t-icon-microphone-2:before { + content: '\E2F3'; +} + +.t-icon-microphone:before { + content: '\E2F4'; +} + +.t-icon-milk:before { + content: '\E2F5'; +} + +.t-icon-minus-circle-filled:before { + content: '\E2F6'; +} + +.t-icon-minus-circle:before { + content: '\E2F7'; +} + +.t-icon-minus-rectangle-filled:before { + content: '\E2F8'; +} + +.t-icon-minus-rectangle:before { + content: '\E2F9'; +} + +.t-icon-minus:before { + content: '\E2FA'; +} + +.t-icon-mirror:before { + content: '\E2FB'; +} + +.t-icon-mobile-blocked:before { + content: '\E2FC'; +} + +.t-icon-mobile-list:before { + content: '\E2FD'; +} + +.t-icon-mobile-navigation:before { + content: '\E2FE'; +} + +.t-icon-mobile-shortcut:before { + content: '\E2FF'; +} + +.t-icon-mobile-vibrate:before { + content: '\E300'; +} + +.t-icon-mobile:before { + content: '\E301'; +} + +.t-icon-mode-dark:before { + content: '\E302'; +} + +.t-icon-mode-light:before { + content: '\E303'; +} + +.t-icon-module:before { + content: '\E304'; +} + +.t-icon-money:before { + content: '\E305'; +} + +.t-icon-monument:before { + content: '\E306'; +} + +.t-icon-moon-fall:before { + content: '\E307'; +} + +.t-icon-moon-rising:before { + content: '\E308'; +} + +.t-icon-moon:before { + content: '\E309'; +} + +.t-icon-more:before { + content: '\E30A'; +} + +.t-icon-mosque-1:before { + content: '\E30B'; +} + +.t-icon-mosque:before { + content: '\E30C'; +} + +.t-icon-mouse:before { + content: '\E30D'; +} + +.t-icon-move-1:before { + content: '\E30E'; +} + +.t-icon-move:before { + content: '\E30F'; +} + +.t-icon-movie-clapper:before { + content: '\E310'; +} + +.t-icon-multiply:before { + content: '\E311'; +} + +.t-icon-museum-1:before { + content: '\E312'; +} + +.t-icon-museum-2:before { + content: '\E313'; +} + +.t-icon-museum:before { + content: '\E314'; +} + +.t-icon-mushroom-1:before { + content: '\E315'; +} + +.t-icon-mushroom:before { + content: '\E316'; +} + +.t-icon-music-1:before { + content: '\E317'; +} + +.t-icon-music-2:before { + content: '\E318'; +} + +.t-icon-music-rectangle-add:before { + content: '\E319'; +} + +.t-icon-music:before { + content: '\E31A'; +} + +.t-icon-navigation-arrow:before { + content: '\E31B'; +} + +.t-icon-next:before { + content: '\E31C'; +} + +.t-icon-no-expression:before { + content: '\E31D'; +} + +.t-icon-noodle:before { + content: '\E31E'; +} + +.t-icon-notification-add:before { + content: '\E31F'; +} + +.t-icon-notification-circle:before { + content: '\E320'; +} + +.t-icon-notification-error:before { + content: '\E321'; +} + +.t-icon-notification-filled:before { + content: '\E322'; +} + +.t-icon-notification:before { + content: '\E323'; +} + +.t-icon-numbers-0-1:before { + content: '\E324'; +} + +.t-icon-numbers-0:before { + content: '\E325'; +} + +.t-icon-numbers-1-1:before { + content: '\E326'; +} + +.t-icon-numbers-1:before { + content: '\E327'; +} + +.t-icon-numbers-2-1:before { + content: '\E328'; +} + +.t-icon-numbers-2:before { + content: '\E329'; +} + +.t-icon-numbers-3-1:before { + content: '\E32A'; +} + +.t-icon-numbers-3:before { + content: '\E32B'; +} + +.t-icon-numbers-4-1:before { + content: '\E32C'; +} + +.t-icon-numbers-4:before { + content: '\E32D'; +} + +.t-icon-numbers-5-1:before { + content: '\E32E'; +} + +.t-icon-numbers-5:before { + content: '\E32F'; +} + +.t-icon-numbers-6-1:before { + content: '\E330'; +} + +.t-icon-numbers-6:before { + content: '\E331'; +} + +.t-icon-numbers-7-1:before { + content: '\E332'; +} + +.t-icon-numbers-7:before { + content: '\E333'; +} + +.t-icon-numbers-8-1:before { + content: '\E334'; +} + +.t-icon-numbers-8:before { + content: '\E335'; +} + +.t-icon-numbers-9-1:before { + content: '\E336'; +} + +.t-icon-numbers-9:before { + content: '\E337'; +} + +.t-icon-nut:before { + content: '\E338'; +} + +.t-icon-object-storage:before { + content: '\E339'; +} + +.t-icon-open-mouth:before { + content: '\E33A'; +} + +.t-icon-opera:before { + content: '\E33B'; +} + +.t-icon-order-adjustment-column:before { + content: '\E33C'; +} + +.t-icon-order-ascending:before { + content: '\E33D'; +} + +.t-icon-order-descending:before { + content: '\E33E'; +} + +.t-icon-outbox:before { + content: '\E33F'; +} + +.t-icon-page-first:before { + content: '\E340'; +} + +.t-icon-page-head:before { + content: '\E341'; +} + +.t-icon-page-last:before { + content: '\E342'; +} + +.t-icon-palace-1:before { + content: '\E343'; +} + +.t-icon-palace-2:before { + content: '\E344'; +} + +.t-icon-palace-3:before { + content: '\E345'; +} + +.t-icon-palace-4:before { + content: '\E346'; +} + +.t-icon-palace:before { + content: '\E347'; +} + +.t-icon-palette-1:before { + content: '\E348'; +} + +.t-icon-palette:before { + content: '\E349'; +} + +.t-icon-panorama-horizontal:before { + content: '\E34A'; +} + +.t-icon-panorama-vertical:before { + content: '\E34B'; +} + +.t-icon-pantone:before { + content: '\E34C'; +} + +.t-icon-parabola:before { + content: '\E34D'; +} + +.t-icon-parentheses:before { + content: '\E34E'; +} + +.t-icon-paste:before { + content: '\E34F'; +} + +.t-icon-patio:before { + content: '\E350'; +} + +.t-icon-pause-circle-filled:before { + content: '\E351'; +} + +.t-icon-pause-circle-stroke:before { + content: '\E352'; +} + +.t-icon-pause-circle:before { + content: '\E353'; +} + +.t-icon-pause:before { + content: '\E354'; +} + +.t-icon-pea:before { + content: '\E355'; +} + +.t-icon-peach:before { + content: '\E356'; +} + +.t-icon-pear:before { + content: '\E357'; +} + +.t-icon-pearl-of-the-orient:before { + content: '\E358'; +} + +.t-icon-pen-ball:before { + content: '\E359'; +} + +.t-icon-pen-brush:before { + content: '\E35A'; +} + +.t-icon-pen-mark:before { + content: '\E35B'; +} + +.t-icon-pen-quill:before { + content: '\E35C'; +} + +.t-icon-pen:before { + content: '\E35D'; +} + +.t-icon-pending:before { + content: '\E35E'; +} + +.t-icon-percent:before { + content: '\E35F'; +} + +.t-icon-personal-information:before { + content: '\E360'; +} + +.t-icon-phone-locked:before { + content: '\E361'; +} + +.t-icon-phone-search:before { + content: '\E362'; +} + +.t-icon-pi:before { + content: '\E363'; +} + +.t-icon-piano:before { + content: '\E364'; +} + +.t-icon-pin-filled:before { + content: '\E365'; +} + +.t-icon-pin:before { + content: '\E366'; +} + +.t-icon-play-circle-filled:before { + content: '\E367'; +} + +.t-icon-play-circle-stroke-add:before { + content: '\E368'; +} + +.t-icon-play-circle-stroke:before { + content: '\E369'; +} + +.t-icon-play-circle:before { + content: '\E36A'; +} + +.t-icon-play-demo:before { + content: '\E36B'; +} + +.t-icon-play-rectangle:before { + content: '\E36C'; +} + +.t-icon-play:before { + content: '\E36D'; +} + +.t-icon-plus:before { + content: '\E36E'; +} + +.t-icon-popsicle:before { + content: '\E36F'; +} + +.t-icon-portrait:before { + content: '\E370'; +} + +.t-icon-pout:before { + content: '\E371'; +} + +.t-icon-poweroff:before { + content: '\E372'; +} + +.t-icon-precise-monitor:before { + content: '\E373'; +} + +.t-icon-previous:before { + content: '\E374'; +} + +.t-icon-print:before { + content: '\E375'; +} + +.t-icon-pumpkin:before { + content: '\E376'; +} + +.t-icon-pyramid-maya:before { + content: '\E377'; +} + +.t-icon-pyramid:before { + content: '\E378'; +} + +.t-icon-qrcode:before { + content: '\E379'; +} + +.t-icon-quadratic:before { + content: '\E37A'; +} + +.t-icon-questionnaire:before { + content: '\E37B'; +} + +.t-icon-queue:before { + content: '\E37C'; +} + +.t-icon-radar:before { + content: '\E37D'; +} + +.t-icon-radio-1:before { + content: '\E37E'; +} + +.t-icon-radio-2:before { + content: '\E37F'; +} + +.t-icon-radish:before { + content: '\E380'; +} + +.t-icon-rain-heavy:before { + content: '\E381'; +} + +.t-icon-rain-light:before { + content: '\E382'; +} + +.t-icon-rain-medium:before { + content: '\E383'; +} + +.t-icon-rainbow:before { + content: '\E384'; +} + +.t-icon-rectangle:before { + content: '\E385'; +} + +.t-icon-refresh:before { + content: '\E386'; +} + +.t-icon-relation:before { + content: '\E387'; +} + +.t-icon-relativity:before { + content: '\E388'; +} + +.t-icon-remote-wave:before { + content: '\E389'; +} + +.t-icon-remove:before { + content: '\E38A'; +} + +.t-icon-replay:before { + content: '\E38B'; +} + +.t-icon-rice-ball:before { + content: '\E38C'; +} + +.t-icon-rice:before { + content: '\E38D'; +} + +.t-icon-roast:before { + content: '\E38E'; +} + +.t-icon-rocket:before { + content: '\E38F'; +} + +.t-icon-rollback:before { + content: '\E390'; +} + +.t-icon-rollfront:before { + content: '\E391'; +} + +.t-icon-root-list:before { + content: '\E392'; +} + +.t-icon-rotate-locked:before { + content: '\E393'; +} + +.t-icon-rotate:before { + content: '\E394'; +} + +.t-icon-rotation:before { + content: '\E395'; +} + +.t-icon-round:before { + content: '\E396'; +} + +.t-icon-router-wave:before { + content: '\E397'; +} + +.t-icon-rss:before { + content: '\E398'; +} + +.t-icon-ruler:before { + content: '\E399'; +} + +.t-icon-sailing-hotel:before { + content: '\E39A'; +} + +.t-icon-sandwich:before { + content: '\E39B'; +} + +.t-icon-saturation:before { + content: '\E39C'; +} + +.t-icon-sausage:before { + content: '\E39D'; +} + +.t-icon-save:before { + content: '\E39E'; +} + +.t-icon-saving-pot:before { + content: '\E39F'; +} + +.t-icon-scan:before { + content: '\E3A0'; +} + +.t-icon-screen-4k:before { + content: '\E3A1'; +} + +.t-icon-screencast:before { + content: '\E3A2'; +} + +.t-icon-screenshot:before { + content: '\E3A3'; +} + +.t-icon-scroll-bar:before { + content: '\E3A4'; +} + +.t-icon-sd-card-1:before { + content: '\E3A5'; +} + +.t-icon-sd-card:before { + content: '\E3A6'; +} + +.t-icon-search-error:before { + content: '\E3A7'; +} + +.t-icon-search:before { + content: '\E3A8'; +} + +.t-icon-secured:before { + content: '\E3A9'; +} + +.t-icon-send-cancel:before { + content: '\E3AA'; +} + +.t-icon-send:before { + content: '\E3AB'; +} + +.t-icon-sensors-1:before { + content: '\E3AC'; +} + +.t-icon-sensors-2:before { + content: '\E3AD'; +} + +.t-icon-sensors-off:before { + content: '\E3AE'; +} + +.t-icon-sensors:before { + content: '\E3AF'; +} + +.t-icon-serenity:before { + content: '\E3B0'; +} + +.t-icon-server:before { + content: '\E3B1'; +} + +.t-icon-service:before { + content: '\E3B2'; +} + +.t-icon-setting-1:before { + content: '\E3B3'; +} + +.t-icon-setting:before { + content: '\E3B4'; +} + +.t-icon-share-1:before { + content: '\E3B5'; +} + +.t-icon-share:before { + content: '\E3B6'; +} + +.t-icon-sharpness:before { + content: '\E3B7'; +} + +.t-icon-shield-error:before { + content: '\E3B8'; +} + +.t-icon-shimen:before { + content: '\E3B9'; +} + +.t-icon-shop-1:before { + content: '\E3BA'; +} + +.t-icon-shop-2:before { + content: '\E3BB'; +} + +.t-icon-shop-3:before { + content: '\E3BC'; +} + +.t-icon-shop-4:before { + content: '\E3BD'; +} + +.t-icon-shop-5:before { + content: '\E3BE'; +} + +.t-icon-shop:before { + content: '\E3BF'; +} + +.t-icon-shrimp:before { + content: '\E3C0'; +} + +.t-icon-shrink-horizontal:before { + content: '\E3C1'; +} + +.t-icon-shrink-vertical:before { + content: '\E3C2'; +} + +.t-icon-shutter:before { + content: '\E3C3'; +} + +.t-icon-shutup:before { + content: '\E3C4'; +} + +.t-icon-sim-card-1:before { + content: '\E3C5'; +} + +.t-icon-sim-card-2:before { + content: '\E3C6'; +} + +.t-icon-sim-card:before { + content: '\E3C7'; +} + +.t-icon-sinister-smile:before { + content: '\E3C8'; +} + +.t-icon-sip:before { + content: '\E3C9'; +} + +.t-icon-slash:before { + content: '\E3CA'; +} + +.t-icon-sleep:before { + content: '\E3CB'; +} + +.t-icon-slice:before { + content: '\E3CC'; +} + +.t-icon-slideshow:before { + content: '\E3CD'; +} + +.t-icon-smile:before { + content: '\E3CE'; +} + +.t-icon-sneer:before { + content: '\E3CF'; +} + +.t-icon-snowflake:before { + content: '\E3D0'; +} + +.t-icon-sonic:before { + content: '\E3D1'; +} + +.t-icon-sound-down:before { + content: '\E3D2'; +} + +.t-icon-sound-high:before { + content: '\E3D3'; +} + +.t-icon-sound-low:before { + content: '\E3D4'; +} + +.t-icon-sound-mute-1:before { + content: '\E3D5'; +} + +.t-icon-sound-mute:before { + content: '\E3D6'; +} + +.t-icon-sound-up:before { + content: '\E3D7'; +} + +.t-icon-sound:before { + content: '\E3D8'; +} + +.t-icon-space:before { + content: '\E3D9'; +} + +.t-icon-speechless-1:before { + content: '\E3DA'; +} + +.t-icon-star-filled:before { + content: '\E3DB'; +} + +.t-icon-star:before { + content: '\E3DC'; +} + +.t-icon-statue-of-jesus:before { + content: '\E3DD'; +} + +.t-icon-sticky-note:before { + content: '\E3DE'; +} + +.t-icon-stop-circle-filled:before { + content: '\E3DF'; +} + +.t-icon-stop-circle-stroke:before { + content: '\E3E0'; +} + +.t-icon-stop-circle:before { + content: '\E3E1'; +} + +.t-icon-stop:before { + content: '\E3E2'; +} + +.t-icon-store:before { + content: '\E3E3'; +} + +.t-icon-street-road-1:before { + content: '\E3E4'; +} + +.t-icon-street-road:before { + content: '\E3E5'; +} + +.t-icon-subtitle:before { + content: '\E3E6'; +} + +.t-icon-subway-line:before { + content: '\E3E7'; +} + +.t-icon-sum:before { + content: '\E3E8'; +} + +.t-icon-sun-fall:before { + content: '\E3E9'; +} + +.t-icon-sun-rising:before { + content: '\E3EA'; +} + +.t-icon-sunny:before { + content: '\E3EB'; +} + +.t-icon-support:before { + content: '\E3EC'; +} + +.t-icon-surprised-1:before { + content: '\E3ED'; +} + +.t-icon-surprised:before { + content: '\E3EE'; +} + +.t-icon-swap-left:before { + content: '\E3EF'; +} + +.t-icon-swap-right:before { + content: '\E3F0'; +} + +.t-icon-swap:before { + content: '\E3F1'; +} + +.t-icon-swear-1:before { + content: '\E3F2'; +} + +.t-icon-swear-2:before { + content: '\E3F3'; +} + +.t-icon-system-2:before { + content: '\E3F4'; +} + +.t-icon-system-3:before { + content: '\E3F5'; +} + +.t-icon-system-application:before { + content: '\E3F6'; +} + +.t-icon-system-blocked:before { + content: '\E3F7'; +} + +.t-icon-system-code:before { + content: '\E3F8'; +} + +.t-icon-system-components:before { + content: '\E3F9'; +} + +.t-icon-system-coordinate:before { + content: '\E3FA'; +} + +.t-icon-system-device:before { + content: '\E3FB'; +} + +.t-icon-system-interface:before { + content: '\E3FC'; +} + +.t-icon-system-location:before { + content: '\E3FD'; +} + +.t-icon-system-locked:before { + content: '\E3FE'; +} + +.t-icon-system-log:before { + content: '\E3FF'; +} + +.t-icon-system-marked:before { + content: '\E400'; +} + +.t-icon-system-messages:before { + content: '\E401'; +} + +.t-icon-system-regulation:before { + content: '\E402'; +} + +.t-icon-system-search:before { + content: '\E403'; +} + +.t-icon-system-setting:before { + content: '\E404'; +} + +.t-icon-system-storage:before { + content: '\E405'; +} + +.t-icon-system-sum:before { + content: '\E406'; +} + +.t-icon-system-unlocked:before { + content: '\E407'; +} + +.t-icon-tab:before { + content: '\E408'; +} + +.t-icon-table-1:before { + content: '\E409'; +} + +.t-icon-table-2:before { + content: '\E40A'; +} + +.t-icon-table-add:before { + content: '\E40B'; +} + +.t-icon-table-split:before { + content: '\E40C'; +} + +.t-icon-table:before { + content: '\E40D'; +} + +.t-icon-tag:before { + content: '\E40E'; +} + +.t-icon-tangerinr:before { + content: '\E40F'; +} + +.t-icon-tape:before { + content: '\E410'; +} + +.t-icon-task-1:before { + content: '\E411'; +} + +.t-icon-task-add-1:before { + content: '\E412'; +} + +.t-icon-task-add:before { + content: '\E413'; +} + +.t-icon-task-checked:before { + content: '\E414'; +} + +.t-icon-task-error:before { + content: '\E415'; +} + +.t-icon-task-location:before { + content: '\E416'; +} + +.t-icon-task-marked:before { + content: '\E417'; +} + +.t-icon-task-setting:before { + content: '\E418'; +} + +.t-icon-task-visible:before { + content: '\E419'; +} + +.t-icon-task:before { + content: '\E41A'; +} + +.t-icon-tea:before { + content: '\E41B'; +} + +.t-icon-teahouse:before { + content: '\E41C'; +} + +.t-icon-template:before { + content: '\E41D'; +} + +.t-icon-temple:before { + content: '\E41E'; +} + +.t-icon-terminal-rectangle-1:before { + content: '\E41F'; +} + +.t-icon-terminal-rectangle:before { + content: '\E420'; +} + +.t-icon-terminal-window:before { + content: '\E421'; +} + +.t-icon-terminal:before { + content: '\E422'; +} + +.t-icon-textbox:before { + content: '\E423'; +} + +.t-icon-textformat-bold:before { + content: '\E424'; +} + +.t-icon-textformat-color:before { + content: '\E425'; +} + +.t-icon-textformat-italic:before { + content: '\E426'; +} + +.t-icon-textformat-strikethrough:before { + content: '\E427'; +} + +.t-icon-textformat-underline:before { + content: '\E428'; +} + +.t-icon-textformat-wrap:before { + content: '\E429'; +} + +.t-icon-theaters:before { + content: '\E42A'; +} + +.t-icon-thumb-down-1:before { + content: '\E42B'; +} + +.t-icon-thumb-down-2:before { + content: '\E42C'; +} + +.t-icon-thumb-down:before { + content: '\E42D'; +} + +.t-icon-thumb-up-1:before { + content: '\E42E'; +} + +.t-icon-thumb-up-2:before { + content: '\E42F'; +} + +.t-icon-thumb-up:before { + content: '\E430'; +} + +.t-icon-thunder:before { + content: '\E431'; +} + +.t-icon-thunderstorm-night:before { + content: '\E432'; +} + +.t-icon-thunderstorm-sunny:before { + content: '\E433'; +} + +.t-icon-thunderstorm:before { + content: '\E434'; +} + +.t-icon-ticket:before { + content: '\E435'; +} + +.t-icon-time-filled:before { + content: '\E436'; +} + +.t-icon-time:before { + content: '\E437'; +} + +.t-icon-tips-double:before { + content: '\E438'; +} + +.t-icon-tips:before { + content: '\E439'; +} + +.t-icon-tomato:before { + content: '\E43A'; +} + +.t-icon-tools-circle:before { + content: '\E43B'; +} + +.t-icon-tools:before { + content: '\E43C'; +} + +.t-icon-tornado:before { + content: '\E43D'; +} + +.t-icon-tower-1:before { + content: '\E43E'; +} + +.t-icon-tower-2:before { + content: '\E43F'; +} + +.t-icon-tower-3:before { + content: '\E440'; +} + +.t-icon-tower-clock:before { + content: '\E441'; +} + +.t-icon-tower:before { + content: '\E442'; +} + +.t-icon-town:before { + content: '\E443'; +} + +.t-icon-traffic-events:before { + content: '\E444'; +} + +.t-icon-traffic:before { + content: '\E445'; +} + +.t-icon-transform-1:before { + content: '\E446'; +} + +.t-icon-transform-2:before { + content: '\E447'; +} + +.t-icon-transform-3:before { + content: '\E448'; +} + +.t-icon-transform:before { + content: '\E449'; +} + +.t-icon-translate-1:before { + content: '\E44A'; +} + +.t-icon-translate:before { + content: '\E44B'; +} + +.t-icon-tree-list:before { + content: '\E44C'; +} + +.t-icon-tree-round-dot-vertical:before { + content: '\E44D'; +} + +.t-icon-tree-round-dot:before { + content: '\E44E'; +} + +.t-icon-tree-square-dot-vertical:before { + content: '\E44F'; +} + +.t-icon-tree-square-dot:before { + content: '\E450'; +} + +.t-icon-trending-down:before { + content: '\E451'; +} + +.t-icon-trending-up:before { + content: '\E452'; +} + +.t-icon-tv-1:before { + content: '\E453'; +} + +.t-icon-tv-2:before { + content: '\E454'; +} + +.t-icon-tv:before { + content: '\E455'; +} + +.t-icon-typography:before { + content: '\E456'; +} + +.t-icon-uncomfortable-1:before { + content: '\E457'; +} + +.t-icon-uncomfortable-2:before { + content: '\E458'; +} + +.t-icon-uncomfortable:before { + content: '\E459'; +} + +.t-icon-undertake-delivery:before { + content: '\E45A'; +} + +.t-icon-undertake-environment-protection:before { + content: '\E45B'; +} + +.t-icon-undertake-hold-up:before { + content: '\E45C'; +} + +.t-icon-undertake-transaction:before { + content: '\E45D'; +} + +.t-icon-undertake:before { + content: '\E45E'; +} + +.t-icon-unfold-less:before { + content: '\E45F'; +} + +.t-icon-unfold-more:before { + content: '\E460'; +} + +.t-icon-unhappy-1:before { + content: '\E461'; +} + +.t-icon-unhappy:before { + content: '\E462'; +} + +.t-icon-uninstall:before { + content: '\E463'; +} + +.t-icon-upload-1:before { + content: '\E464'; +} + +.t-icon-upload:before { + content: '\E465'; +} + +.t-icon-upscale:before { + content: '\E466'; +} + +.t-icon-usb:before { + content: '\E467'; +} + +.t-icon-user-1:before { + content: '\E468'; +} + +.t-icon-user-add:before { + content: '\E469'; +} + +.t-icon-user-arrow-down:before { + content: '\E46A'; +} + +.t-icon-user-arrow-left:before { + content: '\E46B'; +} + +.t-icon-user-arrow-right:before { + content: '\E46C'; +} + +.t-icon-user-arrow-up:before { + content: '\E46D'; +} + +.t-icon-user-avatar:before { + content: '\E46E'; +} + +.t-icon-user-blocked:before { + content: '\E46F'; +} + +.t-icon-user-business:before { + content: '\E470'; +} + +.t-icon-user-checked-1:before { + content: '\E471'; +} + +.t-icon-user-checked:before { + content: '\E472'; +} + +.t-icon-user-circle:before { + content: '\E473'; +} + +.t-icon-user-clear:before { + content: '\E474'; +} + +.t-icon-user-error-1:before { + content: '\E475'; +} + +.t-icon-user-invisible:before { + content: '\E476'; +} + +.t-icon-user-list:before { + content: '\E477'; +} + +.t-icon-user-locked:before { + content: '\E478'; +} + +.t-icon-user-marked:before { + content: '\E479'; +} + +.t-icon-user-password:before { + content: '\E47A'; +} + +.t-icon-user-safety:before { + content: '\E47B'; +} + +.t-icon-user-search:before { + content: '\E47C'; +} + +.t-icon-user-setting:before { + content: '\E47D'; +} + +.t-icon-user-talk-1:before { + content: '\E47E'; +} + +.t-icon-user-talk-off-1:before { + content: '\E47F'; +} + +.t-icon-user-talk:before { + content: '\E480'; +} + +.t-icon-user-time:before { + content: '\E481'; +} + +.t-icon-user-transmit:before { + content: '\E482'; +} + +.t-icon-user-unknown:before { + content: '\E483'; +} + +.t-icon-user-unlocked:before { + content: '\E484'; +} + +.t-icon-user-vip:before { + content: '\E485'; +} + +.t-icon-user-visible:before { + content: '\E486'; +} + +.t-icon-user:before { + content: '\E487'; +} + +.t-icon-usergroup-add:before { + content: '\E488'; +} + +.t-icon-usergroup-clear:before { + content: '\E489'; +} + +.t-icon-usergroup:before { + content: '\E48A'; +} + +.t-icon-vehicle:before { + content: '\E48B'; +} + +.t-icon-verified:before { + content: '\E48C'; +} + +.t-icon-verify:before { + content: '\E48D'; +} + +.t-icon-video-camera-1:before { + content: '\E48E'; +} + +.t-icon-video-camera-2:before { + content: '\E48F'; +} + +.t-icon-video-camera-dollar:before { + content: '\E490'; +} + +.t-icon-video-camera-minus:before { + content: '\E491'; +} + +.t-icon-video-camera-music:before { + content: '\E492'; +} + +.t-icon-video-camera-off:before { + content: '\E493'; +} + +.t-icon-video-camera:before { + content: '\E494'; +} + +.t-icon-video-library:before { + content: '\E495'; +} + +.t-icon-video:before { + content: '\E496'; +} + +.t-icon-view-agenda:before { + content: '\E497'; +} + +.t-icon-view-column:before { + content: '\E498'; +} + +.t-icon-view-in-ar:before { + content: '\E499'; +} + +.t-icon-view-list:before { + content: '\E49A'; +} + +.t-icon-view-module:before { + content: '\E49B'; +} + +.t-icon-visual-recognition:before { + content: '\E49C'; +} + +.t-icon-wallet:before { + content: '\E49D'; +} + +.t-icon-watch:before { + content: '\E49E'; +} + +.t-icon-watermelon:before { + content: '\E49F'; +} + +.t-icon-wave-left:before { + content: '\E4A0'; +} + +.t-icon-wave-right:before { + content: '\E4A1'; +} + +.t-icon-wealth-1:before { + content: '\E4A2'; +} + +.t-icon-wealth:before { + content: '\E4A3'; +} + +.t-icon-widget:before { + content: '\E4A4'; +} + +.t-icon-wifi-1:before { + content: '\E4A5'; +} + +.t-icon-wifi-off-1:before { + content: '\E4A6'; +} + +.t-icon-wifi-off:before { + content: '\E4A7'; +} + +.t-icon-wifi:before { + content: '\E4A8'; +} + +.t-icon-window-1:before { + content: '\E4A9'; +} + +.t-icon-window:before { + content: '\E4AA'; +} + +.t-icon-windy-rain:before { + content: '\E4AB'; +} + +.t-icon-windy:before { + content: '\E4AC'; +} + +.t-icon-wink:before { + content: '\E4AD'; +} + +.t-icon-work-history:before { + content: '\E4AE'; +} + +.t-icon-work-off:before { + content: '\E4AF'; +} + +.t-icon-work:before { + content: '\E4B0'; +} + +.t-icon-wry-smile:before { + content: '\E4B1'; +} + +.t-icon-zoom-in:before { + content: '\E4B2'; +} + +.t-icon-zoom-out:before { + content: '\E4B3'; +} diff --git a/packages/omi-low-code/src/assets/t.svg b/packages/omi-low-code/src/assets/t.svg new file mode 100644 index 0000000000..6d57540330 --- /dev/null +++ b/packages/omi-low-code/src/assets/t.svg @@ -0,0 +1,3622 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/omi-low-code/src/assets/t.ttf b/packages/omi-low-code/src/assets/t.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d575a4fd06e4ecc432ebeceea390beede217983b GIT binary patch literal 219428 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�&h3*(Pph$!nipmu2WfQ~uMA`5dnmv(Fw z8xhI?xjuONc>J0pmLn82`cW zZw5vnF>E8Jsx!uP5GcV!Xrw3fL#pOdOqI(Dl~@H?BqTMuX_;gt^P4`Ks@B!jt*iRh z^sQp3qDP`qqROM9RO^5B$zChj=q9o4@^n|2EdJMZ5bV1B@>z~11rqf6ooCOMpYHn6jp^MzkehOTTHx>6h;q z$k?NfX{KYWK}usZUsxg^*=RCLham*o0Eoxp8{-XrjM)Y7BA73*>lpbl&dB5s`gR3( zp;xdA1AZ79M1i$yqx5W!vujsC<_2~(*2PWn`lh}PI!=sjb;FM)V^oCO`PVi5M16vx z)L$cynbz%}+tr8yXQO8AK|^r|$-^R#2(EB`o;)O(`Uo|?93|t3VR#HfDMI&6rrvA$ zxRvA{3ynMBH3;leF>_4QOHVZ!x!?uVqag`d<;a zk{Clq=o}%QxUx#Tz=7*mVP)J%+oKiIE5-XUy8^pSV0TgIy%2j~){)hAR^rT~wWeVv z#z@eJ4AeC~m#Aw;hVl))fx?J$BGwd-ngioah?2?;flbJrVq$M+`f}jy$LPyo7p^^k zuC2kHf_ExuH{wJ#`*8584u|>TTp4&WfukD{&I!GeBG)if24Gu09F4y7LUOZ7Kf38I zv~@@DV#{v4iiT!^^&Q=a$W>Do(nZtr@QXZ-=YZE$;u_b+%D-Oo`1yMjZHgQkNT=ic zp-?R=%`lxEh3+^!95T)d`mPBPWf+r$ zc{O;=up$nPtFm}0B``M^p{{%!eW;r&k6?Bd&K7#R^1_6?k6FWen^z7ks_vYVREVx> zSV?|yaekmfL9ni%LtY8m**?5Ku&X0K7FcFDEHCwp<}EU^axzkr+5|!`Ra$>ex6I7M zwpf>QQ#+_3!k_XTu6Q(h!^> zbfo^V%P;Rx;SOkgKe$p}qd`za->s6nL%tK`qc*|t4nsxgKEuf>=G>+ivX1A)dNemStI+C0Uld$g(6`vMpP(EibaIBzByAmzFVm-v%cqjpLd&@lCY~uGgDKu*#lEdGc^U`lFsI5u?DA0_1L07!>0IkQVx>0 z09!kBf=rXE5qZieTLS`HbTI;cL*Pps2@&>&Gi>-rKa##VJv2KzG@Ut!Kk>h%H*o3= z_R-wX%*;^k2mi904IbK!@?_kWc>Y$+dOp`2;8{R@XgyUs8w5x{F)X$yBYPKm7laUm zT?|VSM$YmygWS%XTowXFljkE=H46%7JpsK%>i3#0oK=Q(N;&b^ikcs&+Ld!%mzFbvsdc3=mQ>?U#qQi*7Gy$+a+gGt)neHVe9HBey)=~ zTJ0$P%#J|5RQ7YSwW`5rc5oU5z68xcW3bskW;P3cZUz)#b}Lp`1GB=s+hyhS7uM!F zvdf@N4`%(rr8PB6gDf5X^fjS+i*b+9QXjhJ)8X{(SA?5PF@Mg~6u#p2cVWoLFPaT$BG|S-IXW3fb7POc--d=3R*nkZkPbbDjDe zM3CevZu5@%6wKX8t9`DuJ6X9GZQaRQ3V`lBYj@So9l&mJF5uQi%y;0>#oZnIvX6{; z;y8#jH?!G1*vO z)5!~-%KI7Lvz5}sn|^;fIr-Gcyu#$UKa2WlH5K4UKv6?jfKs z@Uoz)m1*YQ&ItR`xw%LG_(wsastH?5+A3x_mrC4ep?%bq^V^0MMeZAN(*z;E^^boP zH>Z`g1NZ~C0euJRqtpXn19b_n0r-Q`Tg&V1H~0#Tb730wrJGm77i5O zmtKLcTNXhAPgvb#OgK|``-%D26#FeFPI2B1^q2E%e&CK=MUe(I zn-#LNcoC;E`PmHks&EE*OXPOHC_ab1A5yDbM+~%HS1-t{4IMiKGE9Z#90{hJzs5WM z^)Rk-agGNBM;2EV6EIL4V#4tVCg`d}@2psTfAW*e=3T!(wrs`nr6ZAct0}N$f3)nA z$@{Atd`Z35{8aKOi^CIJ#{|928coz!SL-XywX4>TA8~u_)jgeK!iu$9HmqJdK2`1X zR2a(3MWM_ca@Bf`LPG-;U)H&AOTc7pkBlrGTe&Q@f4$ensCcm~=5bh1yjiPH-fJ{^ z-8CV%D2nC!3WLW{JvF{|^@c5LR|sRBJ=Jzk?UC{ID?Mgod3AMNU({;VV}i>v2hk`i z)?gjCr=;1bZ1>oA_@0CQCOHG^QO`Ld+Jvxc*qm#=xyET@8f-Kf;$5e=uK{QBvL2h8%xKgx zA8{0ly`*aX2x5sfM3A!sb)=zyjLddt`i)L=V+RA>fhjj$8qH2)e`fjP*YEuO&V4CU zb)~1VmV4Vs>Doq5Wwj|KoLx8VU(vLpv2|89>7H$E#7F=1x)jS~cARM)@eY}cPcp7` zkY=7Vnufe1t!I?Ik@`-tdA2(^#e(ikrexq1dT5&3eLVq47}^{Q!^J2Q4rlT(`lI)7 zKa$C0?w)V63#89|`yPk|v-sn_Dwlp+`XTH5Hmw6$-$3^wxya!saV~+K0?f#~_dViF z%%Aps+?V!$O?i!h>-bXsOTy&C59c2iHh!t}J=b@0+Ryu6wWrls8!_-Qv`;3ggiKj| zBu*&Sr#-C9jTI{|rG0!W7!7&|UFq*uYiO&R{o?Bux+On)I*_ zvVhjt69J)|0q+Dk3{Y?OPU$!7H_R$NB~7x2=e|c$df}P<)1UrC{itG&)Q^q8&cm80 z_GOKo<5Ez%1A{tm^f32Br11{YL6_i%SXa*4vuxLEyO#A>ivybO2u){~empyTcRDn{ z#N1uwHD-syTvL8m>9DefN^4a517m_9y~|7$Ug;++X+5s&!FfdFG{au9m3th40U%RW zJ>0xP37ARh{SLj$5qBkE#T@GK>*1d_EPy_TNYG;h50mvTOrNn_1kK5pP8R-;eD;X? ze_2aQ$J+MxwKs%XmtQqDcGdFMP@mshU+?vcbA{_qzEr1Pk00*a_~b^`v2Odij+Lgd zt4>@sX0mk#CwET72^#=D$V0+(bkE21I+ zbSgv#+QYdupmCv~wwF%p^x#rSkj57-ywc`E%Y`1iNRqfANCK3Bf2Axnkz6?f>=W={ z!le^xy`xLr4!cm_pQHKaG-ubMl}4?lqRKr!?y0p}YP3$L)f+KJd@kRPt{u%`Z(Z1Jv{;%W zS6&%0R#ck(>E*mK)pd?qV>yfY12vw2FVkLWja+#o(j?u+jOIpfXi4YF&Xx+3$vBiu z2H@UQ_U^kh(XgM}q1_vT)>4D<;qIvl5C$VW>`;r=Ljj3~$CsF_Ul(a_kF2X7sv8Xi zgMraH>5JUMtl(ouZ}NYh=VJGBa=K$PaN`o6t>3)=(60{d-&{Y~uzYgIKkt}a-q1GB zv+rx<>nG*77hJ)$kKQnH1e?w)dvI9j(rZ6eSdHig4&S6zC^siv~B+HUulJLIgt zZp*~VmiTH*XR{C@Pd&%pTc19nWGMU!g6g%>zmIEUbw**6NYyITH(mPUH z2Na`{eMYC>qSwpUZCdV+H}wqDWt%H4t7EP1*7|mXNf~D*-hjRcX}U=tWT!@RX9sEy zp)Yz>C5Cnp^Covvpp>S}^ZVG=aNXvKGZUMyYf#@DZ8~+yrN5LLR(uOLu!Yp3f`+OY z3f?lIysnyhB-$yrqwr3))8}x7sxO7oRG~EwBPu+hfq^@ zz)l@I@rx73rMIQ~ZeqJ1WV?4Bzy0zP$DHgncIr5N^9i>5Ch0z*NxE;x@e`MyIIhy& z9Og~CCIy|t3R)9jk5D|i3@ixo>#%qBt9^t`Bu?x+8QY@^Ls%`G@rTlkGyI@TWO+;v z*15O)aQEINTU(OWYY#GZ@LK0&a`@Ka-IN?!e8ix+7yVse>aU2U9a+N9tT~ zS%p+s)NgCC3-)5AkD^s^GQ3fS6x?9Q;qqZKba2-`2WgT+Xd--=f*~Ax0FD6M5B1mq zD1bwX!}$*eh3uB!lXC9>*Ykm60B$z~@eu;#K+S>C$fldT1N`I6%EaLp6Dw_E1WwEw zxaxZ#l0BSE9=njX#Gb=km@ZN{>ls|PN-i=P17@teWzRqS)p1y$Pze`8hJkQ2|q zdz?_5s3wj!5KD~*afZZOp^EbE(4$A|&8xXbzTgS2tR!*hosy%*~{R zg(^!!b*<|rW-(Spt18W?JKXvq4nuE|5zmb2&8}8|dpZJ+E0S*ax4O*wv9sP#xzSi2 zx&nF)E>&i;h5Ee?oh^B55!Vm@8EC+9W7u}+LoV>%A(}bF&l0as)q$;~rOiAGPTt&h z2h(ID8FFGk-2*)t1d^sd+ zpeSgFug6cA86;=kEPQm3M9H#(CW24`EE7Rl085qI0G9*rJWb7-o<=jNqtV!DA$ce)6W9PX42`O8Uk0G;=*eyoMa9}1{*0T9JBiD0JS$uwc|BMgJfhl7xi zg_TJfdNfR;v_SWmg_RJ;g}6KdAHNbE3Pw!Uq2M)v@>Mg9d=APJsO~cJv>~t(DfZPY zu%HI)B%3vdH6Otkfyi<0OZBPambM^@I1lpI1Z6ht)OC7DoIO~e@h-r1PB{Ey|HRis zu7iC0N%Z18csvClz;CKubO|BOE!B;vyj2croS*r+i)5q7qVGtCfgDYw`6D9!{PQU%^^JM&Gru-44UwyY4$|T)?pTCZmO6Pded-iT5!u{zJUev# z@#L{9l1GlQu5|h&ojggj?^K#!mX^*O&nC0SlgE!Fj~s`*%OPV>Sn3;eq%vNz_Fb(D z%rki(VYR~Kj;h6J+_RI|k$4e;=EE-j;9`B`D*ftvG|GlNnwX zZ)ONcr{-eh>95H5sdaIKs^PBcR!YDb)j;If_qq22&^CoHpyE01zJU#`UK|8x$Tn9&;Qs|))AuHgsLtmPJ zx}W<)g|MykfZnSQFjlfmhfoMb$xL{(b?p_^m79&`4T;wLJ?!wv`tif-S$*WXe>i%{ zC-yA$`!l+RhTh5BHt)P}@1xu6Hr&)<*%4wfAU74pO-5~vrB!^==(u8StFtw+!E9V5 zy|MoA`1%p)F28^2o=;qI^dGK^?7eX3=G!KF8ya*khjv&xZrV_{{n4(Dku4LxK6ycMax!_rB#!wnF0wV^7x_c}Fi$acM@&9ILoPfQ{lz~Xv%mGw#V?+i6yDONg^$dAeUVibFaL;;*1jc7o?wftG4D=(cn-3q1w0-Q zQUidk;+!TQ6L~_@bPk3X8h}ZX2>EfAI+Z3ppn)M@vpR_f;x8t}q@-z&DN}f;SGtVa zP`R>WN9bjm-A&7zG10}WG*suJsoUJNG}!S1ewDwqwNah7{wTsuys_RHS-0a+n$hvj z9-7^#udMS?=fUDI{p17*U-$dv>waWnuC_ z0>LlzHSqw|K+n3-)2r0J20A9hh6OpcONl2Pm~WjPvN(3l1g0v}$3wa%yK1X44?Gey zJc3H+mP1DmZRw;iEmE`)&91+1r*~(58i&4q*693|GrGI0G?WmBpT#VX@iKIHb6eZy z!$UkQi!^iTHaURawo4D~nCt?lk?oq?A^m0dZWEi80}N&0A=9yL2OX3>Ckua*YNS>e zCxq~C%_cd}h#V7y!y`Q$O2kHlH=$s`GH0RIQZpZ*z%l2vx1;S-yQU`no&MfymSvV* z(~EbLQ@cLZ*1@vpH+yPcDZDsorr^uF|DyD!DPzPqRI}XO+^!V_ZF{qOdCd?`O>Ig) zP2rf9BgPWp{T%dH_uW~b968t@|&HNpoBNQui+0*m@w&=kXS3!*_<+?Pzw zy>&P{b67Zh(6g)=*pACFR1L5**zn)%!ql7TZ>9d^Su4IZcW*K&jgc9c+F z+ozt;1>_TxbyY&eBm1jYtupZf{HE`s1b^idCR2aqBiEp-mA-~eM1lWCUjx%2uz@T% z@pOSRB)p1Tfpa+tPjJiJa2H0Ku%!SOC;)9Bn@t?yf-CcJvnZ2fI}7+-vYE4z6vvIc z@Lmq;qd($Xb}N z@*Z`Ua0>4*Zur*a)8m4>=6?JGcI%6*jNO@jQ7uE50tSL#z^4MHd$1WsDQX$QDa4E5 zWpIxRt8h}f?AVJU%3*iC$Zn-7@OlVmK7$o>2i(B~>h6n=P}X{>SZ zXfDx5@@PWz2e@pAeGU>K>`r2swoSo+`sRCC_WXx7eq0hA!qI$v?^U-6X>R!=f`biY6E7*C#p9u z)}lrfKV7T?Tg{%oIDh;4bE^QXjNcwoTO^-;k9*UcGeBym$W>fY<$@KYU>;)y#-;Lx z#f@$hCrjA`2bN$WMYn;IRyxdgkTl<0!sLOH0VRW^NP2e6^jx|pKCx|oB*MdkrJ;#I zz#xS0O3%}Qt5${_p)O!6kc+UOdN?VgMb<-_Z+h4vv1=i{tI{nYEyOlNvIMbY5r7A{ zA|iKbvcOTXHV8lEe=tu%5L=cFlM@$AxqvTHpj5!BAg8#3#zo~ja#)F8*egYdmuC+6 zM1hLJ$ioUfx1V&~J$5obwMGQg1auaG56M&w$QrOZHj_jkOaxbhLk~hqCTBobQKbxU zPAN^nkO0zuV0)FAi&l&u8pbuWaB=Dq<7WDm8H^RMr&~RXss1L{{_MFa$Cujqn*B_WJ#SZDa^2)xFF8P=K ze%4jmDQnjjyQLKKvO`na4&OuKszI$WNePzVXc8ex44P0fv*ZV?sve(Rc20$!ftw6z z;nhi|L$p~$NT-1roWa@+b#Ob&HQd;;BLr0d7C1%_N1#MFVnQnl0Su>fkBiJK>FGN7 zE)ViM4TolUHS;3|QmykW*G9BrM)#9WlR4nb$Loxln*f}GX^ly)Uu?C72xd88Mz7aF}4P;e#tGIwaZN>9>EQ5yf>$s7wL#DxnrdTHyx#KPb>(5CotnQ1=Dk`?tMBe7mRi!qkSRH>57C^@y4ax}^|_ zFWI2cT=R?aIT_++@Br5$d;f+@e3_<;oDFC-2B$!SPMU$8M zbXq!l;f2gW!0c3G;}jxvg0m^|5X93L?xE^x_zp$!T6(Z&@Q13IA%-#%2I3D4nXC}$ z-a?M+2Y!j$IO!IIF4HX(dL+l5G+=)wq})xKQ1Z1w3`!GRv$bR&9zzy*qLbE59dlcQG>MLk~T)>LKZ?4?V8B5T=JXA9A3vRIn!cOvA+Krm9u!qit}(wug39)l z7JWC$WRT=}eU&mjDDA}jvgENwS?E^ziB6{e1-EA<`+NMOPlcSkvBBOIA_)(kOAMe8 z&cobS%2Ju7>%R)SYBM;4fkG`8Uik~2EyyQI|H}dU@8p3SI9z}P1SB5)KtYlKC$Skt zUXq)eC2y=|NcaWYr`P50r+O2}oRMqb9_Jk}|L1&xTWU}hCHhXJhs3sZ;R##V4Rkby% z-wJ;E)@lzov|tUD^raRQJOU(Co%QF>9O$OB@cYztAVxOXBLrZV4}qc{u#h~F&eHZ) zS$UM=A|u>!o!=`xQdZ}6_jlDXuiHD~W)n=hw#;hQ8t_zFFiSt-TON;)T<7?1L%+q$ zys`c+v!%@b9li8lnR+P;%7_#3I(2s<`i!a*e!y5)&Ilct0SS>8e>Je!c^DPxAdu{FvvDlqz#p> zTBT-SqLse~nwlC0dshvECt5R>POWe2?rvM3%8agwM8-x|^}>Z>K79!*zGtQMg}h#6 z!^t7Y@^ZLr?)VDHn%6x@;w&|bR1owkPm7E{-WF`Rs3q8zc84M%H>k?`_H;~&L304K z4JFZ1|vU(4~lDXvVR zueBVo=QZZ*l2=;pS8l&UahO$1LLG}jrA1AJ$?NBx+Ej;5tuWTqh9XyoTWVdE2C~UO zl?(rBZCEZAb0)97-bSs|ERy^{f6{C05j=hoXP^mEZmp2wj_{N8XWU--*4$CN{nzeV@f&*)_lI0nKV2dH)vT(i(c|5pK}%DGZ=D`qctWfFl;h>1|dcX=W4{#g#4&eZKJ6vI}=#vTn)nW>fi=a?9Q|8+KiL?C7R+ zyrpIP&TGR5!&^_sd+g<#4dzJrnib(23`3ahw5p-3zcL}dhlkZD^LxMzw8 zq@XAYS6Tp@L1#(T>%&v4o+Ls{L|7)kS(!J3Fhb^%WT6DHj^`smY=De}T|%K?5YI^5 zTL)XMbVTL>W9e{FMxy$Z$S&t_UEsI?CHl!~6vBjm9@oWT8?wtfhrc~}@|P@?pT)~5 zWxVMgY8(tu9aRpaNEoU_qFQpo{FBQe#b8@mp!tZsq6i@9Le9ID5u3BHzc4~Hf-l#L zKusXe{wx3LWx#V$NQcC}11sDCe)261(DFFOvZnGWFw8KliU5Th`;c=sgjP>EYGu zUg5%RagU+;_P_7imPm*1tHxxM2VKhItNSipp2?z%|L^-4(v=eKlK1Q4`k1Q}7GGaB z0_(99q=s|ryH2y|{q{1jBl5(7K7w=<#AFqjK?>>?EHR5%Tw~abr@h>~p~|*30ea%E z_f=Uk&DAYtE7rDR-m#cD#Ht(JE#B7H2z*>y#$C16YHLqVG~#Zo^jG_1(p74#Rdqd( zMu_j@i(L)O3NcDemaw>{2^z|uwdiHQE|v0dnPQ;={-LbhUXASi^1kXDAb)ns%i${K z>3|?l9whH;d9WF0!-0nTgClE301IZ*Q0{S7ZV~JH7Y)wFMrT91F*p*$f1`AkIbd&y zbyHmHX5=3P9}KYtoInf$Cs*VL?S-}?X8T_yR3vk-J+^h$`s+V+eZ6&^t$NG;Ew}Q0 z%j=ErV&5%pVXQ!fcnhTO_Bvx8FMBrB6dFsX$MDk8-!F`F?rO`r)x*<;eN>7R$R3Au zFLL!P8$&x(Oi`w>?{h}IuVGkxuM=I8`}Yj?CyJ$j*bcNe>FrkRA$o!t5-C7{d*4iB z|F~KS9-Pakzbn?~@7pbC?&YU`e_lBx!xqXZwFEDgCV7v;j#~N07FsBC^|52g?(rGA8870Pv4LqJ$u)`%F+KluIh4#9u+2a=z?vje3~-!0rN*_W|t$K0>) zPA?S>QCsDGPHijg`6Z6sZ|Hs_Y(CcR&=R@xwUe&r4h#J$3H zg!K5Jg|Ik@m6U$6^&-E=ZudO;C>{M5tq%sx?G2VIuCO$=mELuAZH2#f#W-CzzM|G& zacMA!E6hiZnA;lF^=bn4JRGM3(;PbV59u zPn$57a6h5H!dU)Xd`m;Vdg!G9T7ek>L=x#!kom%Ag>BH`Wav%ynYW}Dq|=uJm|T?+ zjA`+%WN7Xy-+hZEcMF60mjq;BMR_ttdrloodQ8D&X#`68=L{)`5ox=$FMxU@bPw`N zWwV8PzJ)-i#=4&=JE79g{!(UG`*Gh1Z+*0 z8+^n`cSToLj@zuReYO21bEVkY(nglhifVAkng!#qi!Ov$29#c;S!xp5B~Vo-r5B%# z6lhZ6jbK&2Q`ePhmkFKvf_GUkHw2Ld=2B?VJVLopg!lYeq%uQ|_+C)Za`86{CY$+| zd^v_!p-n#(jd;gt6O7yvS_33x#%T%@e)mT54aCtHlzx|dncX_~P| z;~)OX+I5Xq_KH#KcX|S4mP=bkH;h(G->$pmg`;pq_YVd3N}1Xq&EdzDu;UxYTEyq` zKhv^ct-Ze7Dp?yodD)ShSKia+@C0isjp6>XG6Zi6HeP)6gmr){7#r* zw&dnS*pD6qVGZorgK&<`t(Wzf#~NEZ+SZM%>2?{sjm>-ZAn$FUam&`=@Z^e#?%wUv zebs$^t!8s8j#UU?;NY+H$!r$if}hgn(bcKJW&MF&JNyA8%-yr6xz%N#x~9KRYp}TM zTLKfC8=Da~a?hSXqqm|a-dtxj>UK!aRI5dzDCw7usw%li9Myg(S%-hinzbnP2V9_U zAOZ6k4qA}s2wbvU4?|((B9gg-`Ri~YUGe`;PvdH3%?Pguc~Eg9abI8wT-;V46yW9L z>C?%V`H_{qoIG_Z>EuUst--F&ru@sWr54d8X@EmHNuIey<2u(yk-dR;eeum{+v07F&cb@M};r0~5}kJg;mB)Ze%o~n*16Amc1?ZssTa^yVLs1->X}Puv4HT{v zUg7=DYpV>3GDPaw2wy-h9C`fUUr`tm=HO!^y;`Wt-#0ciG>cz1Cy~Gl$)^|CzZP0I z>=Im_%bhnibW585I0|#~#^&XrQ>TYs;m5+*45?$o^Hl30>!7#ZE?FroRkDWgGi9$_ zU~DMQY@)bsrsUQX*3DtLy7K-c+^38UudVQDdG^T59QTmd)^p0(pd|*zw()g?1@r&k z*t`##hGagNT#Fu?AdRGw$ESp*p@;M#+Fa?*yv;IAn>SGE*np-D$?GjZ{3K{09p^2T z(t-M$V^a*ZFCp6xwWcsOkIB_l`u!E*KE5V+ZIyZ|L!^$4*djb9uN(49D$umTAgOH- zUlN}|l+z;^Qc}v*bFAGAr6=Ju+!+L-vaGh_c`&%`KJuLKOtJ{q=&uquVnFb8u!kUf zQbFmRE;&v&QU&v%a-CiJC^qO&7et~ior6bj7AGny8k`L_tEsNGt)ng0)NpWa`e<)` zBZZgQk>@dmWPdE zSw&e{r6960L9Z1rX9E1M8{IZbltvei7AO=j$>+dnYYu^!4gR@S+y zEfOIEz#H1@n`#=Imde_4sZ4jcOkbwcYqg?D%LG;#E{EHIpP&U%fq*2*XNbc_bBcmRrqz|jnnZ26JCd9@bhmyc?##imUadp_R`^HQ6`z@}mDntL^Wlc2da1Zyd>dxUuu zg?OZ>3TnT~_b^kuGgv3l9ioU)M7QW6o}0>tLB;G2afj4bl{WP~xGpD`oX>w=&}{qs zW1C>IJogxPz?BOw*1a6|05)h|z`=tN(SnP2i3naB8bMoN(oGh#A^l4BcEWNwi_Cq# zV^j0zFSY0#(%X*zfbA=VLVxw~zLU}&!nGmTNY!>f!CR2czR9sFJ#Pf1(d=jfH z;R^L)(aL^JTx}*#CdJK`%Hk1^xO&jVf6K$w(IV9b=~}7*J;;EAs5($93?&+QM*v55VTMZCwtaVR%Wj>R+ck^sBNwG*6Q~S!5e;PpT5>x-KrH0 ztQ_Ck%gPMS?LTuj**$JcpS#u5V76K+oxwf>8;E^;{ZRkXI`{U8>Z&HKSYh`O*2yDXC2H&A7@+uK^qHe*eh-CPCJgUTw4sb0FO##N~|=#U=5=5%|S zJDuh-t+TE+GWMB9gJEKAva@x#vB5nOZLF<#_{2yA_IvfUjnNTzL*sC3XL9X?!O&P^ ziw0oyVzbrT&N4BDVid?0eV z%2HkB@l;h?s!l(zHR!4;>pHz5o%T`@=58{+LO%I+_;3Wdl>=uW$CI5&(CO83ZTbUj9%!0#gHu zMr~JV&KtO&Vj;%pM#u_7WQOi2drBarK3U3WJx&35k)g!gfARQ9>fn4WcOS zk^pxZHjVBkNLKMYAjb^e6mn9*6VY=D_j-)?4q2mOfe>6o=6SHlb0wf~biDGo zMA2t7F3|Mirh+^y$R0?eBJWxlm7k8={Q3XkExCW2^woJ|@>9%QivCIaEihPYS(rgM zAQ-=%l+p-J3QSg$gLW7tagPE_84cMNro}ftD*gD0KT8LNck>h6BGCE76VfkX3V6f# zc>a2&uhjik9vRddo`mQr)Ss$MBVQPjoE%9VP#JE4J^~DjKuQ!b1nJM=JOYRG2ukPC zY%#+~kEqh7XJB(9$4R2`&^tni21MRF*m~6a028D6%Lm_aGMhblif#lQHr*(dV$-P< zztuCxK9@>;?%1)sQ~0Gcmr6;OqD|wI>o>!RDJa$Kc!2;%q0%aOl zwBz%^4y9GbG%@Nu{yKqT#_<=5pyE>LmEu)|#ZCkZCeaj>C5z5hC>MQ}sUm5ev2B1J z;s6#5e;{JS?WyzO>*81Ve4zO1%`~$Uh!}=`g83;CV)Rx>X2&qQRkIHSSes_nHZ!8a zw%tKfVitGEV)kJrp=j}m0|y>lWys$m95<}0%7a-GHgCx9z)NQBhU@sfi*$}G>w4io zPTs*iaYV=C50Z5{yFive7|0_Y^MiIxIolugg~9;oh|xtYF?&zd`!c?IZ&Rb!Ziryd z#3JM`2D`VhDZr4Fk9dw+v-RJ3bThG|Ayr?WYVf+Mje1lc#vT+1Ii1!Ut6g`Yl2vAp z*XuD?VJm>iE(;gd55-m^>v|e3&@-@%R81QGI2cJDrw%+Vsb+Z1$OaGtCA5ERJd)Q$ z#y{46BhzF*C4Hx#O~d4vSBCQ6iT|D({m>NDEFc|I9~!kh_+VQ4N(6fl5+Bg=E!JDNvl$!9)lKD+>es>`&0|r$DL18~`4x2r-&Go(@?=jR4-DU_j z)iu|8j%4bTA=K|b}j7zw9~6~0r9kA`$beig>+7XZcdA5KKi<{wPW+8 zBoM;7@jR5#@>=|Z_&DY+mro1=CIKM%UT7u60CyLUCxi*OH{9`3{(GNpbh#SYPnc7B zUHUO=mOh(syKnlAS^Sc;N4hifY2Vff-@h{lzWA~9`dbP2xceq3DT?=?{Tm8a}^kGn3cw<67-Qk#W1%muYq`%3P=00g+83hU1$ zzbV%F3}RL&`JCW`&M*;~7Wz~~@U(LLlw)o{$G^sO(qE(#(qEX4ZIE8UoNk->d`XGo znZnmcnJzseUs6?aMe&|Q>*aWD1)UYg(K&`xf(ph|MLaa}Mf~ZrC1mP7H+^umb={$% z4a=7JtJhT5Y)^D-M2bgWa_`{a-lR`g-n+3QvAqUg`Iju)Fm!0$N2Pu8@7cX*chTnV z?`{WL0cJoSdf)9hs$}r~``W?teIwr{5}2#)fDdUFo^4P+k+Ur&p5eB|&?!>FO<0gd z7;;`|xv43Sq&z?6W^aPcz@oTJ-xBGA@W*C&e3ocPXGl&;4LWX^w4-&hjuYUeE5~^6|@3fd61qyyO7b-Qrrm0lVIS zW)ijKj?C~F=1MTVoccyi0}50P9>hRJ=%2s}l5_nO44PhaWMh49JGo0N;-QdAmEGk& zaKiz2d?IEwdm3BB|)EV{7iDv9@|{&v|DX(05KR^492nc#>DQ<4Ty#w z^0#}V9`-SqEg3Cik&v!pVz6A)^pB7Cv+jxRK(o)|GgsS(FCD_CzMU@P@?$G1s<#j8 z`@`kc)*zKA=tJSY`rVzIyDZigLwSDyo|3_(A+IOY$(oa!b+qne`}Nnv*O0wr64|MC zYcA0oK#vfXL%QG*9s!yoxTIy^7Iwt0&`6?vk$D5nmsbZI852B8CuQ&etb~rk7l4ig z*dHStY=oEyuo?VS__s2K%&3O)SQ#>V)zq#V3Hd@TUG<)FgTDnDwAH7~ALQXki_;kprXpaLS%egY^Lihoksfyxc$uTgzg- zyZrSlLd&nHwXU~Xmq&bq)jF-cxqDrewrf+T)zVsS=nvG#P4=~R*Y+#WmrMKmRv89% z4ru>X5UsnG>YU8qTfXc-%DhCn8P>jFIOYBHHStwg>GWx~FW6(SwpJ(6d-jLE$-m$f zLKhc0xzI;(ZCMxkXyo9Cw5?~d_xyek+U=NWE$y1R zl_5-{_}1?J`ArwB7xJbj^vkA3%&BX6U$q#}S6-S(!IEwS=Yqd723|n6M_!4@QKj<< zhzF?yDW|TMa#0a*3HToqgR*e~EP^fyssS?V#Du|F*}4-um@?;Jl)zVR$Z;h7f32ZvW0ojb4C?!vS&#TuFi z$_=d+OV_3@ooRh{GeZYO#;un1*4itUcTF_*jDTE4N9$2~OJju?-&l_*4SXtL_nzN( z5zHv+Jq?)PVy{uxaB!9m=T0q|n!4|Hc@d=b)odbo9r`VN#C>y!Nxq@>cWX^EmMM|v73x<>X7 z#V30DcRGzLhX=>&-5cX#MPmz!OQV}CmR3XgK(n{2F0^DVGH*3^uQ%yPHjr%^f6jG= zunmAN15+nJT$bMb^3dtiL+mULFTboPt7Kz=;_nc1hhm#^i%w(&CY3pYXeOBW7Jhsn zxhd}+%Ff{Jy+W9mFqM2vc#BRYPv4uLK{@i;{<(M?%8_jsc@10u^-F7U`!_a!gPBTe za=(yw=|8{!PMkga^`lESPkrQbZ5M4@G2A8nVrcEsoo8)d`QQ^L4{!OTbSL{J zK8UZq^L_q<_&eWc&q|h~OD-5#ThVR=&g{B>Xl>P=v#Y+s)|anLZ2uH~aSuMBo~le! z^d(TZy0{%drQ9qa`eYsaS59wT&elnv8DXC-a&ywRKFpra|Ma8Mnti?9l^`y{Q1 z2FRq(q4kqZB?Xy*Q?pOhAk>nOi{v8+Qmy7h7a`c6OrMm)t4mpR91bEzq6<9-TQZ7? zC@U4wX;re`fU-qlbHRhWcdVq=5b+(~b|9&0y1li`?MVdM&E}z`gl<#0o(tOx)XxoU4r?zI;`G;~!%7(yTGT!Y)KL_678DYO>vdZUCv5T>-He z&j}01^!eX2{nTv!m*mZh%(zq7!O1xk!3|!IZ`;4MyL;>YZE^8mq)X-=ej4&B;>{~x z!+~_Fds|$&NS$}5kf+iB%jPAB*0-7OP~0B73Fe}zK{o1A)Wh-=1*)qe>K9=^C^*-K zT0_eOqJeFl$By!gi2gz$q{5wHjMyB@z#~R=gYL*=c&;aSHzSQ5_i-*g1yF~a zYWx}c&3H`W5&8UL3TN;!_g8;gC=OWayq_zD$$JrxDJ|O`6Ux~Dd?Nx$VGQ)d73{_= ziMc4lA{?MXWJL?tIf@lpFNhT?D;YH{FjPf^)UVFYd z=7%ceEteJ@Z)-J=cGZRTCM)@{L`p)6aD_aKR&lcE{-+hSb{DKb7OU@I`>v4gzhboO zbk}0#++X8*wrlis*J-LIuj?0JgQD7mBh)a`ARx{$85corWSh>OoqP4<$yeD6+$cpj zD}~RV&71`Gsu*$=X_bsL0(G!Mp8&7{^OLY~(&ZAT>PjHR7xwRyXIVrbZ&H?ZKYL9w z1uXF_V$1r>kw_9yXjb_I@RMK>V0sAWPbk#< z^5lrzoMQ9x(0&5)T_~3xs`V6Qf(!uk9=1in~PvtpkI{X0TG_$eS^*w&hqo5oRH^7PEdJB zrs(GvU(`3qa@;%e{Onulc|U#c zTt^K`6i<{eFB_M-Ua|^bu6SbD`OKqT$yeyvJXCu;EH?rK=b-u_O(cJ%IV_hmi@1su z0eXP?$IiKRWL)9WGmgZc5@(7uF-VCcA1PvJLNyxpo%be!B(bseRZUgv_wZv3g31D? zPQpmOHxOWf`LBWomnSKL-OS)P*2;60RxJMPg7uj5QGMs*(*k0)!7)7;+E9Hg$Gxiaqe) z`0-}^9Up&i`m-xO=nn+^A6)U-&&IZNc5aD%R!$Kk(wX7Bh|VTe=bkApjABWGeXyu{;4uDS_=U%dU~iq%wA9RGMQSYTcXMOV5E1WuIkp zIQ8OaR(uxQ(T8x!99<(_Q+myZMp+py!EKebMsZ1rC$8e$Z~|!!D1{HCA9w+>|C~$R zEqns1p*s^d-<-G;p{LGdgjDYI@gh1*v`yB({+sx3=w;fms}Ut)JtA1|)qH@Dbx^MZdj$!J zq)R+|xt6T~85F?{@`G$$7~+|C$*{0@M36OcBv)|&4@-({>~V0K1rQ|qg02KgrPG2= zgh3kyQ{awrYdsACe$t_NYxl%v8NoTSp*EqWx647-_*Y&S5 zn;L8ZN6^;qLF(+PVV$v}s`8)Kr8*<=wR)|^G5nX+{mZUj(o`iTpY}F|dqW+yQO{V? z;TpV6`tj5C71erUL${;Z)?jv)>&1=XZDmGdWNSF=um2Kmyezd#E(m`ua-WbBmj_c)h--d&|V0 z9h){xS*~USoq=$`Z(TK=yZY+f^g2rmJ~nhzSxT;wPVpU0s9dsS@BU*Y@0p)M@1q;| zn3Q3_6xv6zyGS#SadjYsGGeY`SV}`XBibGU7qc1Uyy4L(XJ-**onkd$%#nnQ465K} zh)6=16d6^H_&JaFPIN=ITLUl!-WjU@cnIbQh+|{zvchhId}7J9o_sO)&AsK0?0Yfi z77oL3O1LZiR)!5p?iXigx&P)qz&lx<;Rot(Xu1!>^z5xP-C3Pyq$g72RzSj{Ipn~@ z>I-0M6=P=7bd@3~7106#6v2cA>D5Z-h${1v#l_-xePsf;Xi{;M15;=rV!q(6Pxe*m zl@+#l=c-5~8m}-ede7$>75=And9yFw9D-%cIlRjlsP_A41w~)N0!4q(!o=1jN1KYm zGuID_9qUajwn;NNPzD%Fv#)iW-F0$p2&VH~USCZJeClB5R1OcDP)Q)e%EB z=Wse5=Z@9?eVz`C-TP>lnx`Y2S$sn%tbHzr6@n>8wCFL=BEl=Ub+@Puc$hX|hlX8? z1W-{1FdRnS$V9eToQz60N;gJAtc|sW@~4Gnt@K?Mwf^?E<(abk?lVX`v}{oNI%fCx z@3=$w_x#SwFBcw2Z#*fzG&y-^dT{X5>rWNt#8<_C0%FwxIcp{6L@%hF@}McJZr0dx z`G)NxER=si1h9$H*y=bfMC2k0TtKRE&_(=CI66Am-(F>^s%+5eoSlz+@lO7^(p*`u z(>kM%d@(n$Z1qF2c6%ke`1Cyw`K~{9_M$zhEt3=JjVGjlzeV}BYTv0(iw`>V`bOj% zwzc;SF8kQ@7dy`R?6B z^7MV^V&2c+gdKwiXyp#H7%hW42x=_re|X+qr;DuJ{8|cD4j~C{BY+@j6U8Kc>oJmUu zpq_zxB4c&Ct!EBU!1v-OwshXLC54FkOjoS8`+^;pg$?1!li{{#$GS8NpMdy!v*oaEUbg(ZUbW2eRJd4)GdDV&o01<=mP`z8s;%&BDKY^$(~2@S!Vi-z7D? zd$ah#{7rv6{l~8gqtcZhlIq{xiQkvvLI!a9QHr=D`xM7Te^UY}0fHeenCn6?PJ^E> zj?^y*{pEunFggfk5$IDWTsahQjlZnp!vUrXIBhjc5whFn&LHGbrlA($l4E&yt+`ewkpeuP)i#-L2|$F$|`$6XRgxH9HBCh+)VxJp4Vx&E2f08JFy2=V-fB8=-gsTcU)K=qIuHvs)q@qa+ua^djonJ&RUnd?w>OVuP@8a zUk0t9eJ#Y}22fNH&?_x+8N?VaJgn$^B z!B@PMEHfkt3-$vn-+nX1Y@_lIh@8l4iF_AoxIGG=P!w$$nhg*T{*ERZvlh{EoTMF< zk{tl_kv|EVO=F{>)(j6zmq9LwG4@h-Y+~Ch+a_Y&5hNIpy%~@oHQU-UwtTZR$sUF( z6$(&#w|V(kOKU#D9=`N~t?{0o_|^+9l_p`D`7o#oXbZhZU1i>zu*cHuiZB5rHk+G_ zBH}yPKBNT1$1J!jDI1<|R0LyN||+ zl<->0h|F(906N{U7zYkIJNR*6RsE~5p`tx}!-*Th?ZQeJ--45b1w9@6dnPBoIWgJO zpNIW?7Ut5~waNbB;r`?U#Ab3u7AkY)1zS2hIy$#pa3$)j5ez3sakGezorA|i1dbm>KjHmBE;Pt6%|YUh8GHhJQkXY# zPDeSTBjrbu?}-e>A#m(quJNS4WCr$jco$g`@7l`la!4Ql2eO1ELrjFJpUz{z1Vk)} zkZCH9q^u!l8+Dw1#=QmjJz!;6IyWh4iPewHG&DH@=|IpZ&dzc6ou4t_^x{vY$EBLW z{QS98gE{(b>8B-gRK;d`!3QrQ`&Lnvbq@Mo*glF^B-BuUi)9_T9hwq}Qu^e)u$DXu zQGBLS@d(k7r3`Z^R&jbc533kK56!vQfdSMb;L@dlHb5>=;m4(-nu7 zN6yv>?G{$tOpadCGmrsGKPsvo62zhZAka{Krzn&P<4j}VfsI0vcI1LYMJ~+PXBC;6 zf6^iV4mb(edVyBD5&(-x$R@oTv6|gcrd6SSrOQG40+GPfNQ#TjYsOnWtpjYyuWD4a zMa!=bRk>0lQ@99}(q1LqFL#RE#sBZ*MBK5;IW%?nT?$9zs@hm(PyV`PhmyRk=GQN_ zj<3n$E9WW);#6EZJkYv^x^x`s(Bd4PMa!1M!tFXxhECp^!dxLP!_hDBDO2Py&}itM z=yS`jh;kq(55nR*Wz~r?*)whKdS<#bSdbz?g_LW-FbsnsG*C z2fu++cAUbW)r<_%!WmPA-QloTNN>h%@izzz(0V%}^Z<_vu-~9em5(#yYa10YS!!UmjkbgtX z?@r@%fj(uxcR4V=3Cvp{2_Z1INY}%~16f5Gf}~80u6nWw+$P`#W*61e=Kk`iTO@F4RA-WX|c7G+7H! zxiXI(5kJrMJHYW+f>{x=ZTqL#6XNIRKEggzCjGad=AKsfcZvkN1T|PRUPrV6HXeT91a)zQZ4J;k`Rkf zE0kNLi|9qfv{u+2}g)yAx!#GA~g`Dg~Ng5+(g&XrGsUk(AMMM?;s zaSlNtxjG6ay?$(`A-zArqhKJm1~+a;CORifew#ve8N`%vOCi#_EZB4)7zj0o{DI3Z z+&%Tb}f*7pOI;9eslR2}h-e&nU3bAkYXE+>J1851Jx)FWu0;I& zM0Ngond-=<28rr~02l)&VQxe|gy6+xT*U|upYqkY&;!tJNB(&tvvd2F z)SKERsr^&$OzlrC(WYZ7TQ_ybGm|e(X5!sF7mjRvdgI82J)-6k?^>ycG(|jTo!8Xd z+3c#Vs<+f8Yc2IvwJv-%d6BfvP;S=g%;n}PlQ^@bsd1B}xoXdaef|A?7w)-=Sw}ls zqe?r)f@I1DuI1(Qvxr#8ZppNLLBQv*f!O1B(4>G}V$lbg+{(kU z4=r{v3YvhJI~k5Skx3t{AHfk)3@24&~Ur*yakqKgE9!S62ExrYC;Su@xW8F;7z5zmsrXMVeIXq0&D2 z1iP2Chr}a+=ft1lqh1BxvsTjxn{v(>L+|J(CxL(n5rme$j3r}3gwHcnlhi|es!&2W z@ShoR=trj+LX#oMS0396-&;t}4OA+hNh7RBj=F`sTxW3&(BIQPk`4n{%4GoapnGQc zdsTn`d%ma9sPMcuw4ucvE->rLJ5j5bEnKp2SAcMF^28nN>2I^F5Sit|zMz3UYc72s z`|6#$&^f%F6k`|MaDaNr$2$uFH>l6Z8=k)aNI-Nk&9lk0^j2o**=L6`%$-g?i_gq0 zf0o`#C*ALHp01ZxBLY$4B6WB63e2 zY#y$VaNumt`_J+G&jKw=f?b=tMlLd6<33yQXw5fj*foe#bZg&#RJMCs5?)t1d`x!b zD};JOY(=DVQ*_N>`lNTVLHaEF|9E>7z_zL@e^~cD%km;?-)+g3WLdW4-InD=vgO2y zvpTDkJp@8Xh)V*L02!c&J#?WoZ2~DR&@xl{k11uQ8*PEQK--yiN=sUM3T0ZRrKLk! z=t5^Y{G*reckX>!?3gw%-}iZuo}S)&cRTmobI~PG*sIr8mT&pd&wsm+LY$(m*twhn)wz>(Ay{fXq?{hmmmj6ILpfb6D?BTOC(s-$67i1zLRIm@|!^kB(cSU0s+^u_2cw5&Ne}Bs{FD&MzV6OUHK*R zj(&V}Z6I(>?)%qV6JS%J2IS*y2&r$-Ve{EiQdioWQm#md#s0ij|g@+w3bPO@TLxk1?VH-rQPock_DqxVO#0d^G{!5zTETzH4=v_{Cv`wtt z*$j1e8W*t}4qbfVz|hdZg%=-EZc$G*?_4|4)}cgkm&H9b#ouWBh2EIvpc@tk;dcQm z9gh!IjHXZR3Id&mDHM0w$&`+E>dLv@)*3Pb>4T^$VVY^=6-Y7voNZ+isSwXz20b7S zE>qrf=?F82*Xi{4WmbGB{dI$`uNSFamyQni9AU4eu83asmGsWujp^Mx)~|U_ZkNAF zx<`rzD(9j}hm(8#Yes?%gPYu+>wM&eii_5-YwvWqqRhA@bo1u$qsdGo0tZG~?pAJU zy>tM1-_$XBR(=*OCG-_Al`vjnwi_8t(oA~pzjAl{mvs1s8*WG_$8TW!5-%LL<`PHRPsO(VKndJyp;E_J(~PK;cd zN<6-Q>3-y)dNrvi|Em1H?fXiOjeOO9<5%UI-MDBRSEVi;Nu+SqDmc+G`Cr?a>0gvM`dE38u~ojF_*EAz3JF690oN zJziI|<I zcwFv4xb>~upM1t-wwf$e__3I*X45ktV9S2_%U=}g_7C!BpbHuX;u2nmFrq`=cT!+! z^gAbL6&b0+2QFUH(m=l)Yl(w;xep>|J43WXOb7ZEcNip+KOF+Wp<6+clY)W^(QWNI^;69vpLx2YuASjjvCMHWA-~5+_tDT zdgzLKUCi7DA=KV%2)hCvZ%}JAuZ%XWUE%eZYii02m1d_WVv@^z(XOzgrD2t=FMEAQ zbfnpBa2Ue+c3)et*@@VX4(G)Q6xQ3_9CVtDWi{nhHJ;54ci6}Ju5B%AF)KfF-D_&8 zbwU8u*3_6i-W6+`qAQV{FzEFJTwz1A9Wrqnh+gbRvQi31q_u=ZFGMiXNDv-5CH^J6 z<7eJJc1~uYdHiMJY;dYLhwZEXymd%v66PUEVi`JLtr3M&CKMc(frVU#w3!rpg_+4s zA}^Scs#>O8pvv`=$>*O>PO@7m&94H#x%SD#^QRJ%$p4!KtqFZwM%|~9^v-o3Q~AJH z*q-t{5~4qaKFGy04Rh-^7io&lUu3njLhZd!^puSd=pozB5U1r)z6%G)u$m$uUy;A( zF?i}KbzUPdH|NltSpN%w?n=@P{ScO*-ogzFMoI<(zO;@C)}XvkCi!D>1iHw{0nVVD zDf^i8W92w(t!VF=52dB6rca-SM_0bTr6|^6qDzdLnkk82J4Io^awYk`M1Qwn&5mov zarOD@Rh)LP<}f0MLMI%jKogXOhS25#FopA`P|w{*de%&^?@p}gIdZr1&Ag7&E_5j8 zO|%p1hA$Z#YHb}FyJUEsa#|=mBcZOr!LAVcr063;<4$eOK*oO8tv&DE_q*$cuT#eO z^V)qc0K{LAxaM@vW9Pm71_j|qp2qx_!2z(US)pzx&-VOw46)U5=2-f`sl=mR$;k(g9?FjuturvF5v|uoIufddzWm zVI5Q|q{&BpMz-(a;#Z4hwK+g@dEbVW;o!Y&jQu6Cad_3lM*gk0ws*tb%?<~@VDWIG z=i`gEy!8mXZv9$AW4-)H3$dgd_iPUb!z(xNR0RR^>VWcuQjyruTkGZDZk$*(yz%ay z#PDK%0TK!xsxj(p^8^^46cnJxSTL zeD3x9&fB-ny`0}zm3!f>EwX1EILYFeP<<(X>pPiuq{hI?2dy5@0Dry{N=;5jTA%Y@ z`EDf8c{;18y3(_+pM9NU`a{q*63UrS13*~$&8l;q6LDk#eS^IgTf<&x!hrMPHx?c8)4(+8==h?pE;P^ zEACV zrn1&!y8wdMV!8w4QQ|kp1&SCP>Y+fLzr7>ehk4XgZK$d)to3vNe1P(!Oy*L1Rby*om3^h%zIy8_hh6e6UhMbd zU;f3;4*txt3Z!AJEJ!V!8}#?J*jifK=cY9wkk_t|#o@4oTAG^L+M1e_R|52?z~aJM zmj!PX(aE{h2{g)mUSz(ZBJRrdgv4cM^06%1Pr=pvm@-W&hWx+k#Q?z7?ZA+0L^Rx2W^@YCj!~%dm#4FFO-&c${}7;^ImQ@;T97X0W^X1uVj^% zHS{e{7mgqjJk5AF@Ch?8pU;z_|39$><@4#iV@YN~ThQmz1&QB_?V2=5w$ zHEJ!**?gulC!`E8N;_0;s9m{EwNOK;iL_+|i$S!RxKn+J$$-I|s!q3R= z&q|ipa~kQy3AhxIa~$R1i;f%4vb35&`_EDq>!pR_o(}j_?GYbcYN31gd-&jKm5-0Xh?lS1)rcmAEI}r5m=zf|6R+( zcP(_(1ZVuvXu4Cp73(O*nKHSP=9QyQ&{ZZ`)6~#cIs!K+lmq8>ozqK!1 zb4}ulUsMiFPoo6obp&TnoA%(LLrH|-er_(UiZ*E2oEE^Sg|!3mSdYFA>l&M-%IA*4 zXK;pU{kk+onKP)?nH+#u)GdNeLx&ZX1*W}{f)i~?uF6A7Wez>`l+<|_*tetv)Q z2R}&eXCTYcxkdGbU)_=%O6YZE;SRVdI-OLRwT8OAMA1$cB&u=gx~nCiC6TC9YUf=j}>#?W&zOD##!3 zx#Sf~0^Y7<*N%n)tx4BVC91DsALp+gaO_?(oxiOprYBSAFoKT9x zp|)qb@O&PTZ9d3`4};v`MHTpds&%&+x)|&bT8H_(W`}(its0*CyT4p zEZ>C9SxaW1T@<`kj1fJ{2TaQRr_ll>u!rFL5Z~>z%OaLPzYL&WRawznRW0O4K4yg_ zF`Ay@oF1!zbSba}7CmhG=gi~$$N}DoU*eoa>YYm4W zK$OH#WUL2Y#ns7)Sqbeg$rn>66w5(R`XdK3?nL_F5X~>O!N}499xlCpBAfOc#3k;7 zSWS=+MCBWwROysFvq?iSxB%ZkzX}#XHHqOr{~6MQ;30yelq@GI$H={Uzq6sixg1$p zqR08+{pslb2It*ZTyX`-K_%>>!MWGjkVW2)2Is2?K91l(K4$~iN*2R&&iGJvjB|KI zzE+}^bH|2A0FmDSt`g!`abQ3OV~yRHJTXS)h&@uCm$skV7l0`Vg#x#S&WUA5T!RWN z6`^!dH+R*7S4NsU{b1MZjwU~XFeD|+9FY?SFTy2o=^`&qID|so5J?_As?vO(mv|_G z{yCfk5IM2}A;f7MGBor>!?4sAD-$playq`_z>c_oS#rEP5#JG?Tcv6BB3yY0U*a#(J)T_VkMAhf>nCcxI(V$8d6F$T zcG9*)ROQ?($~@-1P#W}M8$#+6U9s21;%jLO^hA1eI=lqhGNm6Hs;Z>waC^8~${)<3 z=06Wr2fQo1&UPnW1Jy(GK7Pg8YL%@H2VT^JLSGkog8du{2VjSm=6RHj9saqz4Ma%x zATfT&)qYZO`tzi8t_o8f$2cj0*TkVIBcN-sLyjwUT8ru$(=AITmb5r+Bblw{#&JHK zN+@Z{Z;M95BaMwCVQ;rJ;a!wAw)lmuL)0Zt%WCG11?s|qVJfJHdjerQSrkQzi{hV^ zYz(2R>w2sRbYr?{cFq9sbx}FZ>25sP*p1>!`8(Wu@k2~z7X2>xh$ttZ&f2_;4}Q)!U7WMWc$$tFsZ3FH z$;g6L6@HlJ#GKOTJ7Q(@XE{Ohp|m_&zvi{7)9Wat#FUszkdgE zEdpd9=W;TW*`a`gD&hB51J(R1pJE^vT3n@UVzTmCC3j`S>&%x5v>aKA(Yb_^5q9Ie z_pCrSMya1MtVAymL5OZj#CF!L71_9Wy={v&`paKMCG4QZ*cb;o5; zu!&L>`nsDoZFp+TZ4&x92VMZw$3lU0jVbz~* zVTIs=XBWO!RY-Zg`^HwRE$F7$)j?k>&^T9DN)aNV0Y`44qw30toNc6H2Cn=gTv5)K zK`DYj2{?6>f8yuqqPe#TmDax1<74}M4Fz>>PUH5CZrHSQE)XXzW$AfXhPe_OArpc_ zN9cKt>KRlcFf?(_nIqz^NPc||3>D_xanOesvfBvgK?VJ(_z-Bn_%H8#_(D?*STn89 zNOMBMGOQ6$K>(gHOqK@xJ}qkq@)+>erL_nW)_si_nGYo|$AP)@f8 z24Ww$_XDwkK)Y<0Wn+z@0zZZtqb$p1_@t|-(BV_rEq41)mA}+1ihP)DYgDGLKt=;L z&eDyo*tr`m@X~YoiPX6q4F4n2&F5(yk@|%$U8`#7Lrwrr1=z+ZU$=NMS7ztFlGn6< z{inI>e=4=_&g|~kt=zs_et_%E{fmQK5#P~ncqw=NOYFGGupyD- z1w5HqYgjdFlkx={!EeBYD4rNB1QJ8AR-jaYNo8p%pep8-^&7wW&5awUr(cO*et8`K zWmv<-HOG#9N3FyA`4t;CzI-s=fAC;GT>0|6^LKI`{ zjPm_OdPP6Hj5dK9it!V$4S|45+L>a#p&AW~`r%v31A*`P6}5>cN zB0_P@GGRf4&(&*q_*1np9(N~j?k#o)ZxqrzWHQ*6DzC+3Tbo)!OCu2}N^Kk*q&8+h zb5Bz+eA~ye+t;pc>!6gt+q2LWqM0Mv%^TM(4R!_-W6M@%x#L}P7QwXPfZ{!Qa&p_| zZu?4Gc**z%7~6#|huUt3S7jfp;%gA4|C0PT^#E!IM`;nb26|O!tw?VrtmWi*3a@B^ z;N;0N0WM@@=j6E$oF(qlNu=RI!Wy!(jqt;Kj4D2~SM5lnDM&lK2H|8g(vRypJ$1Z; zBH=pacTtQThPfr$?eS$iPS5uW-NBr4d3OuCYRTBY@^ZPZumeD0=byxG^>QeSIvu*N348TqNT6*|wA+b>$-@<%QRbvWEx z8cYtYp=P49m96mltIJq&a4gml83|PDu0wJRIXPID7>;-LMJkOoPFEzjtUheBM0_L_QdKqU>y0*q?8dc5W39{Aq|Ej%ijVZhT6`X@y`nOzWd^;; z;l8cAWnhd+HT7QQ%TcJWyjp|VyDKuX!|P?+kd8y`?~j6aRzXsR?;dsze%a~|V@rm^ z9v}&zV@IMhyl2^7hrnCeK++-V1`5H`=RO>f8uzAOTC(IUe3*-mrRWR@XkL6S=`;jJ4bnZr zy@n7XBq+}yCI=%|&$N_QJ}mw6W6F|$XW26xPblg`Yeg|GDx_T~O3_@{xd=Ef!7~Lh zoMGW6!u1@U^nyqxGqjrKn?CVGJe;| z8>f^P+gnkEiZUarp#0*$cojYlQL)0<+#hd74a|*8nvgt6`PVhATOOAYh(TJyY`Kr~ zItU#o(FtLH26)u0cY^*Q5tf!G0Ym|a2D1VG=WC;8b@N;?5#Q`&`n-+RHVz+*sK)lo z)%cc`ymPZ$PNF<3WDWBIL&GuN!lX*NRiR%+hFaLI@?LwTPFX}xEP5=Jel44wJ(f-( zgU0FHG!!oqwruItF)4j4rQka`iw~I2sY%72mQsjHgDe!O^fBC$;(aXEcdAc*KPhUY z0sM&kxq0c-b5LjFmFhy~8sry1x_QV)Ilf;^9b=P}!W3{13bv2)la#_VJBy-H*iYu^ ziN>;)M^oqimt>$fNTdlvo-Ak_kbxrREY;r0g&;Q3RoV4bH{V>fKD#PYJdAQTB6##H zIdq>Io@QqLHRAFa?)bxB&T60(q1ZEmzNQchv|ZD!dRI~wFp^=M4qBD+>utH%G{q^* zAjxYyHVj{QX!3>dPXj{l?3C5!v=8*JoS3NdEGjEQemrYs`NbFQTDq*(ERXLpnc$e} zT;r^ed_LdAy33XCamy1p71CrzW@izB0f`&rSI3vFU(+AA+wHoVhUKZH;c%1L=&Gw* zy6ocNq2LXx)~qQr^*0RIDlb3yp0(?JxlLerv~LGTqsdGCEXI>GY~+X3FD!5vI>ZTt ze2%aa`Kh*&GZvG~zU3jKIfIZBu@n z$Tz6i61Dc+>xTqNk$(;ABzX_eFPAeRXQ^r1N=FK7hMm1g*`2C-eeIdio)9uW1^i3) z+1r}?{0*5%0}`?EL{G}@a~mP2J2!Ni%-x-c5E9#L(k@RX#w&TsG+%NMB4f)Mvq-c? z%a9lrm7mTcKaGf2%~u`L)R2jl=312PPqWi!C}4sznvv`|+#(;_k08m@Us^G#{8@Q$ z-ZS`0L$Q#!xe442qlM8W#ogRzO$#`Ncoq=cn#pMaRU}g3YhjrN^{P=V|5!~?C8&x( z%;!8ajk=wtV7qdfz>Zne5Q#b_bH|VpL`8V0I$rGA>6s2#aey(UH5Qf2KbMak{KMZC z^B`IvN}E(t(rXaIfqB^ZJ;FS+5awZ|Gc($VEn5fPP>b0tuLOk=;dqDdS#Vub6Rv9< z&2(UgfH!Jyeoe`bgSuiD`;nB)c@8|cAHm2#k_f4w4h!!}Wtyg4THXKV)HaLJMIWmD zh}p(%>GPT;OGR5cIugFLyb$Z*K=Ktvv$r$oBbm;NmdkZNQ;a2!9RAYuJGA z-;e$ma?QE(04t3@Omf8BK6h~IZwcw5zvn%J$J8kuKj?Yz&{KQ2sDh{uy3OaC@4?~NYFS@tGm^I|0;jp3o0 z$=nNR>G@P7m&IwzlNgYh!gJpOUFg)zUre zJWC_ll@!a&9g7;w(oU7ainElj2<5si4nrdRvJ(J!2vgiS6bN@`yp$qnntlnkG>gd` zadDg4cVQcYJx#Tgp#sYEYn;IC^?ePlD1vfvliDx2u`O?UEA-h<_*^0!zB-!<+~Zx? z(Ml_t2H;IoYC8K{cC=&rVV~v||Gp@3ulOt6bYEa*Fl#6}lD*Axb@ljWN=W@pmj>rAxyxp=`d^!|Uik zsWO3c>|S&D0L}ddFaf(2F4?9jaDgHnQ*Mr6p0j~|^M(m}hifCPX#5|c$_kx8!AbD* zT85EinVz9Fh*rrQ?OX9TIZdySI=Fl*_ImmL&#$_i+Z3M2SKPu=z%bE2Vx9O;`M)_P z$AWqS-N9-ZqcxT~3LtM8IpO@+1e<#(F&(r0CxDgd|763LU6#J=GQ6cPlm9z619`5O zEOBY(QGQMTs_lqmvJBxs_48P6!Utlw>6CoS&6N7xcz0s@Q*adD-? zpclMnd63-h|7+Yn1n)fj4Q)4W#WOlfPjpiB=(%U`EMTiBz^?j-ZY{{%rS>a~ijah` z+3}N@M!$InbDpq@HWeCDu?w>l_7-5T`!UKYEg|*4PD{m}UIae&{5y-~2Ax z{Q_u0kz@1pFE4N(4+(b8eSrG%+upuBDih@)!#m50;B7oeEfq@b7BoMF4-^9ld10)C zX?N0#jw0};qcWnDW+`pkNgQWnP1Hnp(fF@F)~!c| zlq%(6)|PsB+obPXzU0HchbMijeJSPI4Q$;?<@+1XEcWg9$+P$Pwr$;ZB%%C>ZDId~ zi+_oW4}Yfq;a~bz`JQJ--miSVjrF|$jI^(Q(pTs+@|UGOf?4R2NT^3U!Ei_##{}VA z5-?coz9BFo#RU1=N{B);1)9Nm9N-i%R+NuK9S3@51)k^;+?IztQXfmA5->z~a*rL` zLb4mjdct_l!E6FpStiAs$Q(LErh}q z=^G$NapN?6{b8skJQ$b`N}@C{6f}-f=b;8jpNB)L0_1MkA_OnrC-38J!A@PRHSZqY zj=j^5D$|+iT$ZIW(~0Rv<>)k)iASfAxM})PoWL+s<>Zu{!uV_WjZnH!Wf+1*U`0{( z;t2pyJ}Rehivp!->QPEsFUlr*ZlkCkpgOLb7BQ5dl*Tee$^qyJXl+0bV&e(RAm53a z$p#B;0WikbROo^Zi&jcYTC1yx-F(tN(bg5;u`)e%XGN3CN?(*!>Md7{u3H>884%xk z#$?%Y=)&!hvgn0-Z`dWL2Ul6`W#vn*nN3@FU31ZPxV8_Cu2{_O$Ys}RwQ(ba;bL90 zn70(|NBGZhT@r|huvyq6)9zS+i%I)Vu{1cmI89+b$&87Jo^r-)*tyeS&g`E|n~Xbm z8cpfR{W7EokU$34%xtp;YF1C^gVt@^HgDdx%^K8CtgZ=&PpF6J>kM>DKrL9ot$>UG ztE*(>z5NoqP0-dLKuw21+ zUO>Ic{!2JSE~7xP?$`OPau22nas(GkjG=fgsBD(kb}B!QD!+*;KhK8ljIyKAJ3~sd zC_BpwhE@de%b_--DCU!*L@HDC)y4ADq`|3VRwqN#;B5t~v+Iu&%IldwtzIENoqJhw z1aqJM#ecA$9EqrF%D>5f=Fvv3MTc{HqtJc`%L||v^{2?t>y4nHSb(rp1^ChRC6 z1_<*!tp?*stw6f?)sg9jOf~d8?$6pMh`LDGz_`$th?;wh$(6o+%R74*v)G!`_dDw% za6PN4>h4T-ws~tU`Wk;|aBRe7sjkpf#0N&}JXKXIkcpv9mioEtc zbN%$AcZauit;=8XX{ttj-AAS9AY?;VEV*g6^O zDUVSsBd;1d%h~Ph>*<4+6*lbP-yHIYAW>xhqt%ydIPeuV)O+P?@uCb?nWPJQ-#h9u z-S*zP_l7G{EloaOQ%kC1`&WMZ(o4Vn3VW|)vYT9^@9n)D-{_K`&GQ)?<#$j zGSGX~B4>cTt~cdI-dp=#=_k$I%;jR;&C0qj(?h<@K3SzV=@m=Bx#+6iD{u+>-rnS1 z{Gq8TZ}=E;h6$OZQG+(pT!r+&z2MMJJ2H}C%0L81_!9CagE6}|@6(8F6>R1{*t#hk z21Ppn)TSOG57M(#+rud5tfs~~U3Rp}#M-OOWvk?hs*hJx-fq2xcFPT24Rs%H^wq4= z4>u{N>blHdX*RUGw#%oF9z7`9_<+TrY>euj((9{UskWDI)&9s}X=v!9zxSE8+9#S{ zX>4=b-$>XkTC5ggUHcmH(0DOsnvft7ECztoff>l{R7s2+2zi8A;gLZh)!>f_nzA~u zl9ZD{x125Jo6+H*@3C-$VN=cG7Uf}YpXIrzvCDmV*5dxRs*`#<+hTB(ZPHfPJXWRu zsC!!MOpjUiI?}C7ZtnEBls89_-o~Zu!lvZqPQy!PlR?QD>niqYPg`j233>K4h!!=7 z;W&nV2j7iB3cz}6j|ZK3JNkkhj5u2hj|HHt5&eem;3{JpiT`+<3jBOlD?QP`f}lwW3|gCgu5Bm2kFQ%}K4$^| zT@_XL=_>EA%7G;ze_#VP>=(3zn^vv;Q+m%kY@nd4Z_589=t_Kk9wvh2?c69xcXp&t1YKFlcb!w@03WSC+E{4+j0&aDi4>^VPQ^B$?u1R?0~<) zD$P33RudQ|v>r|?w%VvrKeHlAD9qgy2M^JX>e&Ex3Y`NqeJSWYger*6VZ8* zm-azZrt9kL0yD-_Ad|FeO^7MCefuYXMKB#d@Pme5y|8h$UhlH?#canJJ8p~h*<5=4 z>WvpEH#9dZHz4eL^b^~+BLbdDd)y?msvlJSN{*Hzt>cs5>0p}jGUhZL&;4@beLw!v zCw(JMtHEf!hp~ICMuXKk;``*6lz)5ub=LCTvhuT40y-mtsd8eeIiu(Jw_;YYHxwcK9)N|j#!lrG91F<8{S)XVZW zu+old4roZyQ>~DY;Yi)%>_R9Nen6&4oZ#v@{_Z2VG=Ku+P*4tm4dh4}nY0l3Nfc}v zmYga*LwMnI&0}~$f}jlyzX*#Ne;xw!oDEL&xt6-xMuWfB8Y;_PPAad`JM$!7*49*M zf1bEqYpBwGHFD*Z(Z-;^(tQDPYcVfEFM{N4&Pt`-VuOfQUg6O7uJDzY+j?WxTV$Kj z(bHaYK~Ue`)i|_vVq)#kyu@b2JO$2%%iQU(JH@A z{G8rjM!7isc+}@Zx!W&_J|wZSvPoTqwyeqsnX%DACF!)j6|r*UY_l2+)>|wM)kfLr zd}!!MwySXvmR9@VSFN#LTlu|I%u*^4^F;8m4`9uSYIdUE2~z-}1;poN{0%IN#4UI$ zQj*Rlk^mh}?kwOW1sriSVrQJs`6M_u3eLxU9KZqT3QEYp-`PKuCpQdh^)OhsjP^Emp;nGv7=Q+W0i8CWX<{yXhVCzC27s#8R}v|J2nOA1|0On-tDrr;XB{iuyrQ0^U8w< zuiW|WR;^*AY)JoU?P4c>7Qf?FON{k&e$7&4dlGO+SPO@sa0QQuhd8&__BI9m&<@cE zJDgev$$BI<^~tGH$wtYMWW)4avSAOpElPusY?z#vY~IzPC7=BhnBrgLX~+)|EU6VTXFoF-Sb1fo+$mYAzff6m)i>*g+U_C^MT{m8bJcK{h>kOW1*_KN(&V>ix%E_);Z-%e?=lcw4e;HTqzzQkgz6Z7iqt&n$vzAbJh*_scX<9`8}E%Nh-gQ)X8Ea8J01F>#;{G+2_Qq#r-D`=j6pX z67W6N++fVq07mgypV*^$4kEJBPb&XUjh$^aIJ6nQN2~sr`yI0~42#N_P8IkPt&W9} zkx298d|SRG2FBS#{OKINl=H0*`kThU-&Zw-TP~=7?cH;wW4;XsCV#$d>rDDROu8<6 zf$w*EjEi2mE1}!Yxl;9My@8dDfh&oDVX@}lhL#GhwA>Z0z{u2&V85)&(X-%7Htci= zZ56{V+8peIp&Za89lb*F;)HQ1&sGSl06>8=?u-+<3ZV`tg=@D%p82K|(5I$FF4v+a z95}xzX#|%@FgL(d?kwV;ByuMxWIRiYZ_?6Kc*jJ0eQj+$40_=l&_lv_cL%v!W|LD> z$yuZn5-ft)!u(iiAzIKrG&ilYc$8(CQ<0yQ>HP0hkh8EUA(Xj4Z=Q^DqR9Bag=W`$;hMiUoZ zYby^6#Rl{+$TfnU0J%I-uoVtxfJqh32<6ap=wfqE8W^Hbh=GHyMjV{3r9>!AkF|`g zThbhFtBQJ91VLXq68uD>qq|X=ZEx;K@C-$Xj*f&h?P;R?D7mkTJEuc^A^fF;r%C5( zle4aUqNCifrdyopUSlY4>~>sPdg2#`HS8{NpLoSs3VCG~u~GG!1{%W>4WDjU!qNxO zmERyiGDRkH7=p=u~AD^t#>hsqf#tA0yvZ=DmZtrMLY^(}ADnF1!G z(6`_;6ilI@*+LH@{xABLWMkT#70uWrD+R*#xhIjbKK}%$n8c(0*L^Fe-d*P^SI+I+ zyzTKx>^JKXU1|)OW60uUp3??1Oxev+tYhQQ*;J%P=B zkd@ucjW2@0$P5FLLTnac^`N~WxB>LE@JNzUGg)NTwZoODYcNe7MfjVX#5Xg9+L#5} zDm^+R+u?2mtm6!leByiMkY5DgNcU{P6X4MNtp}6C-~RS+Qsu8yzZ%#>^R}3RU>o6^lUaem5w0z2!7NaLHi%@i#|#5kR&tTN~OLvJQS)JhQ~4hrOMiTKKna*@rgPy1XOaU=#27rXY@8 zwY{6~6bsdc86-#PynyrgE&EoCE$XcwtWT}ouWidhw#-j7B$Gww<|xscX8eZ@qO53Ea3dxH3u~}Xg;j@l;$5b zPosYjM2N3oFoIE=(NM@Bv^>Lejd}x+EA@rj!usMcc<~qN5iA(AY(Q|qZcnz+Lct${ zE~cx)f&5c(2Prt6@gaGPNC-jdWw;8)0lYwLBX4zz?$oElW5o%A{WyAf zjd2gr8Xrq(tSMgJ=rkBY9)roKk9^azV=%PH<*Dmj->Gl!cQiD1uJ39I1>G&}vCZ~+ zf7kjBox5)3U~&|$O=}H(;h@K8X3XFo3Aq1QRu=LYjoKmAWH8eZIeGY4Dj6DAcljIan_}(F?&U3A>pQKMdPje|9u=0guEzFT%EY@mu^o5I=QmJgJ-Z~4Sh?3=7_GWvd(L2Y&N^v8UykR zQQhT{MQuj@{Blc~B*TRYubzfVS+^YbC#pIPbj&Lg0a(OiOAA!a;m$|vow5>&x4g9#?Cz zaLH;KVkBc(s9;34r}Fc1)RXYNZbrW039eIw3_(IQBEukBWl_@R^S;Lk9R`p`*erw* z;Q(Bkv#h){%dLl4{v^3n27!8#M-K$|kfR?-MBR?0Js2DxWCdk5Hzix#`)`Uh;yZWr znYN`>mCZJr8XIV^Oc!qLw>7r^z7Xpm;OS_z@@NP06CX)pRwW&cv77e0Ed|pwHzc#c z@n8_&xuY`!(Xg&8A4bS#Yp$$X+U99*v?(*ia0k}L4&Yc3@PNidtZh$#ha2IG5QdHs zr=eqn#udL_TIb_^PJcd+JNEESf_jTzh`JCsA!dSOVmm_0{`j9_@BhU6V{vbNPE+r# zlhzu>nh#_TG>>`64eIM1AEdVrb_~fHN?m^vZQoI|sD))(7S+h>Tie=N+eQ|xiA2^c z8u^FK{efUG(EkHks&5$IK~lty@e8B8y9T47&dw0(KX-3Maa4y0z5EXLRv>L)q+-|> zzN?KD@GX?FVd~v&t9a^$xjU*ny^48KlJV0DNsDlnz)m42Nidd2YwlMfNcNQy07zs8 z1N7!Gw)U;JFzxc=J9o~B*~YPaa5Tc~Cf|$v(**VtP%|KQL^@pZ>eL__3D5l^_CHhd zV_YsI=^W&M+X)v&a4`Ch!TUAlk6ZB_d)7UJXk#-!cm4NSP3^|Q2d1g*a?UvA&;0t0 z%3r5v(|A=6lqY5Z8C2;KIo7z%-->;{U*!@cZ-OtuaTUTJ`U6HKKyY9TAZ~?xoZOv9 zL09BCkR{+&xA}$#unOJ;+MO0A$*N} zp#&b++M12#?qF?Og>kLHvN;YFO3>#wm@=8@oIo!;xd(gE)u0dBg5C9=W^Z$M3Kuso zb$QG-Q(s^EE1bO4y^*Ld`DacLPMa3zV)zH1`Gd{l**x|Q;B`G=F1!7e)-0qkk&@@u zmOGL)zD@fUNaMh=b3@GVCtjV2^tHFXZL{ajb)7)n@s*gU{Otw<-ND;OTb}&1Ri@4z z15x=2Y;^cUrkVZz26uB^bI%BLA8OafVjWR;J%**RTREiqR7t->t|*xhx}iBe%H{V3 z2t91+^dep(-}FMhLgUmIWU!^G?=O5_!gf2spGUb9#0*kRTWpKGAEN$2bktK_W`D< zFV^?xbR zG~3svdmaF?G`V&66@RyHPa>J_?p(jIe>}NMd8({x&+2vCqtPpO?;0M_m&sDV6NyI3 z%JAX|qywI4gg!)~o{{V+Rdsb$xp07w?&U6bRp*U7VRDnopQoYQ@76%~A|lK1 za4IpZC$V6mPm23j*!)Qz!X}b4Bg9UKhhy?Iuh12{wsIfn zDodB?M}~LpzLIx?Vn3d^UefU6Sl5QT5ZP;edz7yJHnpfVa%^j)GIDUow%$H^F#9{@ z^<#+}URQBTQ;17IIpDB9A$9}c+)x#1d(1cn1_n54%yBGt1l(2tM#r)IedQCm-%2)R z5gcWXGq3VXxTgWLsLr=1<*$KSEzq?E=!qC}k-8J^M}B*cIb_B1iX}BK`$Lz>p6Kt$ zWjgu+nuMPFtOogs(uAg!zp5NcMU*6ax@Gi|9%VU-d;FE$#X#F4j2T^1D3jz6imp^k z>mty}(Ac0W(g6kW~vWA_`-o z>tH?g(g^c!khgXyH!C+s!vv`h=N^#iw9AzbR5l6bGLG8>(-BShK7bdiS`J3oh;~H8!;|_P4k-98w%BHCKtirKm`ibYg&pZ z$Au!WsCr8285xn*9oH`Hi0m;;Q}9twD_(MsUM|mXiM7f^U7z8-c&%cx2*B`>+~*{zHT(V z#aTb*vKtI`*I2#hYD2Zl)Z$RSX)@XR`&*1go6lFjE`6U;`)m1wxV)i$O-t@{Amufl zk-a{DdP@io9<9@F#(lWK?y5GlUHVfz&}3pGjusQ1+k(@0NS*Fezh=MUWWryF=B*e- zcwoaV0y-fzl?=E#bUr;{gv5veOb8wz_JZhn_=B8WcE}%SjVxcWY1P>1R^v;vs^+kfuDedoFkm$PjJf~^MxAAr|hAvo#QeO+q{tTw~tBI)@IH{ziMFkB7 zjN4p4!G=Ye2#VhZf1cS_lT$M%GWj5jCE*hPT}>S!_U*Ysy&{m6dd|CUlmj(H+8KD$ z^r*EvlbFWxfH2q#)Gqdz@-L4uQykJ~{C#ogi?C9lmO0$AU@bpL*WVKl_uq%h)p2{d zP}lSBL(-OTEfWx|f4dLwJA7^O@ZsdOhZEOciz@z&j#RF_Hj%#pv@PVk-yp6E`3~B# zUxrQ(YEvlCkb>18Vx(TDT?2B)#G#poW}KPh2qKQX!2tx*awil-kI4OxbU-=P7L0~Q zLas$mC7I7&p8INs{c4Z=DlSXN?j%CQ=FF_4&4o)M!NpG}wdF{to5@|gj44=gMLmk+ z8l#ME*wLH^#i>zfP)%g>Ml=+`_OL=i9z}KAnc9U9Cnjgey>Nknez9@55r1`EA$#Mn za&~CXwR?s_8xtG*7bo@%2{j>x{o&-~!o&Wj#^L3|jrLGi9UgK!ZW-E>Slo~MLqmHC zeVo^&=+VoNoM^WeM@(FDkBWyDoJy$onUfi5v2t{VFO$r9&itVrT815%IU=1v1s9(i zWmK#SQ}FE*J`j)stBAwL?=;=su z<;rA!jiF}=zgRn-MNWe7v&IX#ssc-mUUz1rawazur6+P%*@t{b5-V3GN}n0`iHGLv zHw(%OARl@Z9G0{+_8ufHCl^Wx5nPLmtR`Twq`@L29|S<8Izg#l`(S46=Rd!e8I?a| z#G&#BX8fvzW%2zV{GjsM(2x|8vBSa7*0Y));s*y<#%IWww>2H51es#37P3SWuV7})EUS}x`5t7+Mmh5Gm)i01EQTp{RDWyf~731pD_2hNk?(sDhLgBcjv2W zIF4kb({P2(_rnx)XJR)>o|9(kc6$%$I<=6wKrx`Wof-CeW=eU2{dXewTtYg@UQ|BA zw*J$bZ$9wAcdoqh_h@dRPif7fy#hv+7LK@+6s9zekQWK@Ag32mSdYWUOd9nY%9HK{&yjFNRxtYM*kx~%xtd!#E6uwQKLBbm@ zUY~@q`av>UBe@#YRq!5~pB3CAO2lx>=ZsN>eDr{Dc+V?7rRXH3q@3i|0_i0Dsxg1K z8kLlYTn(!HP)#J$iM=;FiRpk{mQaZ5cqe^JehHL8zVH+;m**wGhS?u;`a|RsFW4X8 zNYrrxfHZ^s+SJX`TIDA+G5MeS5BDUted)|YXmwQn>F*94aQ}nyk65XY5Rs8ju15LE zAMZ(Q{n9sRKPA@BsX65$I?;lqqIbpq@D^Skw4(Hv%ks!@^9$ky@-3T+|0G&3hvd)! zU!@edIW%%s1Pv?KS-EmBC!fU%<3=B4?k1#94emX}gLo;#o~rnAC}k=GrnS=dH+xTGZ1PHK7aR#O7r9eb*L^xfy;h ze|MIRISFjvnu8e=^OWpy<wLJy9Sizf<4AH+d^ zHj$8?O&ra=`UVVW*a*Vx^2~H{I<2Il*QeKKxddZT;_s?L0 zQU40tMV9kL3vg<*C~*!}38suW8pAHM<3%ZxR>oL_Zc-5F1nlSJi%7i$TOt)l@eJTu z4aS(aO^7+4$H@?)hsy+3%z7=D80q`+|L1(h%q&D4 z`QZo375+0xjpJ({Qy_s0T6y-t1cS4?N`a$~tA;&z^t&c|z_`u;${s{OA|H_{B||Hl2C=@g0vp{t$mH zJUcHlQD2GP0dqvxSLuCg%QOtr3D?X z{!jxEZx(7Wif;gSTGSGeOc10L2{CEbft{jWf(B>dKkMWYOBl8Wl9x&A$+dih0pQ>r z0Qsz;I8N38*-uUhIyns9)fC1|AM^RQ_w>aEdoJF#<&LH%ASm3Uft|`jFSiAPSd3Sf zw}p~z2NQLheZxz}`s7z}LtxZXYcz*LM>cQ2xMwid*Rw64e8%^3-`LV?>XHZA6QOo3 zTWwJust)?$>#WxEY51u7k>6w-S#8jNtti&I6pDS+56k9+_e64)zkYju4Zm~9k5s$1o7y^idItwm*9Uy%h`Z~ncJDCl zykuZ-r(@Ry*-_6rtL12g%dZ740hbZTxOlg;J1{yJ8KvB4GgF5QGO%NXmMr? zXC6-`6I&7N_mB8j=kHB@FLA9JdY8@i@=^py%9uCKm4^&HtsBxOuV49)clQ78u7{ay~Q%o za_DntCy@Vz7cyKif}%_+m+Bx>KTyb=ZfrKye&%IU?3&{Jn4T2kf;tHQuwwALh?ADy zLuD4)iQrRYpYTgl$}~`zwQT>-?!?@U%IQ#TZnicAId_Ivx>#p$WrjAA2ASk7Fl^RB1;dr4H=vH z<)3&ZRC{{%!$>0qsHnKOSRWfv4t znZsd3^St7Wc{y z)LVw+!0Q3~8gSy|CI$eC19AZdKBZ(h*+gnXh&0Bl0Lqc@F;uITPi?2T37Y&Ifsmnw zXhAQk71>WWT>YhLedev&d~HItXEmOt6P0e`u1!D6PkJ$4-^4RX3Rh`gg(d{iD5M_1 z3`(JQ9Lj4vLy+)swAwESk z$tj-rgIUU=+i0E=iO`6HrOv@6i&q*k>UY>=I18Xr&X+1m#+VoQFXs!;pOeQPCPEn6 z0P>inkaw{-pC)j1owh@{pSIs|hx#tv>uR{|w!81X?Y0Kjy`{$`?J>=NCaNa=i=G~& zzds{=%51;uj>jIm<1V}TMdcNSoIxe`ay|#L2bY7Xh4a@Klb)%yDfh6&%9FJ=b{%-# zV!6pyo9&GJdkG7NX2y(GFuF&*Q4$ zU+i$6x1!+q>}PkwCyKrx1?Eic$wY^xBq%Gt2O(~t_q`m*$el?&s0%XAyM_cYAvpOit*wh1W0uAqFHR}{eZl%Q?VX+NYt~;74mL!s z{lN{L$Q-;r9J53lf(n#IAWqSq0r>@FvkXEz9s_wGSTk0iAhk$BG+CWr;6pKF0NgvV zRD`X5+Q;@FL2nP*K{yNu$2ASE%=$`ijj7V6{NJc0s{CJTm8r&Cxjy4+_z+Z8w<>?B ztgkVxkKP+yXRN7z9IA{L-m|9iRC@oB;o-)`Cr>VJ93DQhKYgllP4Lfu?on>J;^+v} z>cb;P*%dU6RGJ&Wew6H(F)j~k7%g2?U4WSvt~5QprRjCo|dpW$E}(u_;6G^s@eJ28LT$ zZU@H42WCdbM1z*FVQNsm?`Od?g(rk)jhXVZl=OVeY~^;+e19hqvzFS*>l~R^+eo^# zP`6f6H}Tpj*_*yytl773VqlZmJAWXm^MgCHnMh=c_pzu`Ucc9cJ@`AD)i7?_dt~6> zIEa5MK>USFRCKT)(5Pd}1Ha$$z?&E0=X_`CDD+1&O73&Fe6G-sQ}R*B09MRPV9>14 zzr-md4s@($=ZMhk7Sy|M*599u$CLLzK(AkkVk3t%HrOLkJma+d-ued;aiuYycmVJ0 zrFi0^f(lt(yX6`AE0`|{%oW%O1t5r9{*Ww=Fx2_@2XKbQw+2`R!4;g?n6%RY&~IS; z@+$A@)pf|A)OPsr)`o_*BW;JTZCjKa^{!g&J>s?5l+Soqui{68^RB!0a9e*;Zm+Z1 z>JZbst)XG-;lsGSzP@cyVib3JkJPPR{Yw5|;M~jlQE^CB5Y(TOpHuhC^{_t0fgPpn zUC?iapspqrWC$8N)v8GcuzjA>94GDS36Dv7(Z`P`?qP#z<%Q{KDRp!5=FsllD?Fai z&54^4gP|oJS9XhcTj_V~zUk>pGM~IBd5?VCJ&EJDPfsf^q@Th)A&+Op?%koAaCbc3 zVld!t{%*$^^}Cys8#0$5D+X>B`wscz^2fQh3VH~1H6IqW>KG_e-JUxlQapU=r4w~^ z;hT~-J4~jwWYT$4;-y!UufDE+bljY{DSwH)DO^`Kap|RDRKk%=wwX+ho0B);;#*5T z<}Xp__$m1m-%t6-VggD)JpKR{f!;Xlf!b$8ijgURTgsea^roCTdP+I!9(OCh#-3UHYIF+M&?N_-c?PpN zuOp4BV=Qu+X`l%Y!sOr&&wB@}n3bR#nVt6zoimS%54}uA$PPT#e+VrR(5WI65y1$+ zhOuxI1px$zor%sx2Bzn*gndzYW)AxB#%Q#VH1CJRL5Nhj{3bsrKgfHqC|&f#ib2OX zti|5Lk&=?;iVJtf2L|FhFT5hXY#f1zTgI22q=S8QPJWPHe?gb*D||x-X?~l!hm{}0 zTBFBIkDvlrx>n;=AzT%U%0QS>ecx0^SAn?2mQA` z-+Sgkxy11?DVcJ4HQSR%IsFPJD_IpQ zC>bSA^4{P>gBz@Tg@g$T3!$XpAf2w}@t$FiXSip)xr-vgt#g@dw#D%^ZBSHf+R8hA zux(9zvCSrn7;#x1ux;axRTKR^c6(3%#Ht-g>4iXUXFhGx8_e-!deea)k=qvT-}0ja zo6^a+*&uzc5Tak5pa1K&z}8o=D!=2l+_G(3BL649yB3|u-;W2W^E=4+7NNH%ZA+@2&cttvW1@b6L_(49!E8b<( z@6qb?#@2YNQLih%=KBosZpy9YWn~Qd8=9nYz8?nObuU09e#b5S5f9k^?gq0B+6J+g zp*+eRkm;8oqv&DOUj@lQe?hW(k>e11!^ESL;#WA!74V;PkSu=-HM&s#Wj4cS6>-Te z&lB`+sBNNuk=n&EAvYi}`2Zh31aE$bhg3OC9i$pG+KWnQj6-z73l{Kc4 zSw2HWjdy3@cCLbP#^)t;p7-%@_bqW}p6a_|Y^b$+; z1_=h`N!okJ`oV3z+=W<0u}uuOxE?1P!SS@phl;p4@+tdkxH*)zFl3Gw^|pXHl%&cP zK+DWR&Y~!wBsXGZDwYRf5bcBhvcyk%&ibihTLj3AB%Tm~u48JAGPzj-G8K?~Y=-Z^ z*NwHbj48h>0?MW)C)so&QS_~zbST+O0pX`ib5C|2A>kO`(gTDx@}Aey)oXCml^Ru- zmgVsUphZEfU2fV32o|<5G$6}P97~)zlQ^dAWizvgjHjUE)ibB1Z2Al|xOo{%#DX_+ zi~x|B1s{eUD-wF>z{|rVCOaW4sA!mzihuu!E#0^GZ25-`Eu^Z2Ob1AUu)IV0`q|Ga z@2^M$n9n62m6n7Z$zDXOLS;z!f3CuX1ArO%=+N!?A|n2TQ=iEUEr}?aS!E{wd}en$ z^|!LQ|^Hj8K%PvNR`wXsSvRLA{Z9P17In7vGBBH(Rl$>IA|*!}jP)`Yu(q-J$O_Q6Pk zPpkfWapaxi%c|W^%)FRs>g!t%ymesf${iQ<^`Fu7_g%1q-93C&_qJGE&ctKey0226 z22=osNO{lw0|WO*K0Utwvg^|6>n__r{^`2|4TC!`y!`SDcMdiLW-)qsdb$=>>Jsry zcrXg#?G3vcIc^UVz#2>d3p<6r0^pMLUn8tt<{sZ+$djZ@vXcp}PkJCU(%anC-;lU` zycVujOWJ*{-J!ashDLWotj+H9BBq_Sr^(lBvbqQ3t!>Ua7Fz4EH%R3={|bN(9CrJn z?9QR9FKzBwX0_{$`e5AWAF(>BtJ_!fbu4Ms*94o*+BLP~P1O}FQtuoOm1}h@tkT-& z<<~(A7it~>hejRA%bZ49EPo`UKng_}&aQ3*q~IU<>wrW8c~D(4gY-pLInH$P)e?d! znjY-w>Z3)JM{wzZtmvVV+Yc^Hr?X_0D&C)&OaT}e?R&8pwRNI-O z#_1gD^F@O0T78YKA{e@EoUuB;)hFAmI6+^xe*=9;xT)ZwI;W<5)sR4Yi*4Vi_UKGTivYA7AT93%A3`ivGOj5FYMG-*gS#% zhqX5WY_u-($NPQXCTXrFY3`=YeY8p2q)pTGNP6F$wlkec=Iq=sLx=lNMnD3hfCsKD zGhV3d$|2KLU=9&71fA zzTe}ypU=}Y(qhr-lMZJr)L?KJTbZ&Nu#O6as8&}inUHYxCi(`3CI+W^vuKi9p@Yd- zQDabQwh1-WdR8L>JrjBIIJP|+?dt49I!ja1f_oK374Y>`Dut#7+18G_4o?V1D|a~2 z)0Yf+L?32pnRewtwHm6ZE)$_UK=N@5kU}ZM*-|T@I5(6B=yO;(0kK2`h*{ZbF4Jt_ z%M7n{(0~B1DuxZ=ib7`>w+>Qb3A4r~I_n)yQ?1+M>78pkl`jCw!Rs3+EOn;So#dC3 zmK*A)S~{9S4y#rz{Y#Chp}p0k1_Zi6&CY|t}7gicw=eZh@^4xu1w>5u*#}Awgci10{xvhT8t?EELq_5Ql{F&J;vm0FI zh~HYKA6%a`fd(6+N~R4UOZ_COB!AumAySIGg{(i z;ZjtcMS8Bj(e->?{$!bl+@4aPc+s=c#wrsi~ByAr(VxBgK2R00ZLxURz zdDPwY6Qd0iOZs#2v0mb7~j_4Y`fH9DdM?brY30nQ|?)?{YJBbqz zq)%STH^W2DBhwqUjPzIQXA_fs!|9AeqfUhkK6kUI)jL%+O^Ho&x%LkXweJ=#ZU_h8 zwJ?>~U{mX>Z^=YKCn8$CT4Rr2a-d%oZ>uvWH#$QM3ZTijIi8@wx_)kIBC~xz-yFMv z_0Apj2W+}(tGd?F5RFI|=xQ(D8x8qgg1TmKWIQ_=@N2s=DrK78KQ^;%Zo`GPmcc`J zbPw9T7Vg$S3-qUkdq>j^Li^&E1>_v#BqMmFue`a$v{LO1;cVg)HbQLcaL z;g}C0g-JnyS0wkT6d}99luo6sDl70dQA0P>$n2?u>`r#4bWpUHL!-5 z^veT}9yn0E{Lus05?+4!Whwab%fg|ao}Tt2M|$tRd-`taOT8;g`+KhFSy@`?Ws`TW zT+wqy8Gk~KDJ1DR%ro|PVa@WH5>{B+$$*Aw7LF)I5*e^j%R=(5fIp2DNVFM~Fa#uB zzK(4Q&Q)n%@~K;@b`7Eheuzh^6BS}EFn{*bS?L#cTXX+s&o|aR-qmq*cz(jswfj?S zQ^J{@*JcNjf3Ii`9J<0{9vU5#etW_0j_kllTg#NxuMUT=oy+guzkTaazb~K~8@cHG zD|T&J7#xd4#C-TYn^k=WPqWefY;tSCAM}q&--^UMAG+1^_7m6L)cURs`stnvT4p+% zn)J8DN1AMQ?e>4m&&^!n3q(SrLkqb@z3!bC9O_B=ec7R{I}X4h&HdwI7dVs&{Zo=Y zC?Z0XLmQHEh8T8`FBZNA0=-GG+}PX3PAxy2y;@qi>n>J>qEUCdj=)2Fq|6KRzal zD@k{5&0m`61F}VignQ6U8~`F(f>^?Opa=?_j>xlYuo0^EY};~UAk^G^`=YT% z)!W=yrxrDOjYjR#skDtwozfL|`xK6BQ_AH{)Br2GMx!^|T%Po`-Q7{E#wfCygtwuy zIa{k%t7=S(A8KwULMg6=+-G|?G=|zK3 zq~-ov7QbJ0J!T+y3dIS?c6E81q6XUSu;x-J2mB)xj)Z9}0^U>f3VtMZCA-j*rT*&h zkVa7IG4xg-%^5o9K*BtZVGFd$1YDnD1FEWM_#!)o$3wuV#trZtEi%R3_D z4u{E^h{U6f4iw^X=(cqq>ZxIZxyDuvQ?spmZ2b1|v2L4LrL4Bqm<3kTbEtcpF3;2| z&Gf!hxV6!5vUb#I6k@fSwGJE2BY!nwHVw6k??ixDEmGQMXOb-q4uf8)8B`nX9>d8a zK2IZL^jU{B)MzjnS^}1M{-J%-zF>R83>;~u(6*RNEm{RORpvx{&^NvBp?usDX!-7U zJ$9pdP@~kNl5tCNX13ens5Scn8XRmk<7bE-Dbbt%z+A84@tH|8Jx~xwM5LU`_npm4 zFE4HWic~Ar{^llj8@uhMyz~)F^ru))@k#03>>8xPU4;nQID4N24ue1Ox8heoMS3~f z&LSjAOjUW7lO#rSlnW6YrHO_@fssM&3m+XukAR=YmitJEASJ8amIfPue9;w-_*FJQ zC#z^t$Y)Wq2c6p|BffyMjrn|;?A_b*3tL9#;|YO9EXu=DbzQjQuet%*WK=2*hRlv# zhnqKToG}{MQcdkH313+4@dn>E;eH@SwY2z}cNd=@IT956diS6AHnaIX)9MIgT5WyX z{OFd2{Pw%E8LvN{*fP1J)gK&C^ak6a)gHaN-mV#m5 zhvF?vH!wKz!7;nzs`K{u_6gJIBCfZK&x_B&FE)yK{(ek*;%i)C5;yvP2La#ZuGxir&g*1 zOlYUxF=Yp@T{@KMw|H6H8Spms?VMehpB(FKX<-UqYcOW%&l^-tMako|rM$WJE#vR) zoSECYXJKOpvsJr;T20(;b2X-WK9OwSoImgUJ%@$=Zt&N*UGCc2uI91g`L6av&f?PO z`)k6@cE4gvTWf=B%jlLw93<7$pESzxuP3op= zrh*|wBr@CX@wJVFBdxIwLU*gLUSM`>YjSLIeqp}4`e1%bd&lse!x*1c*?6|yYoa{473!Pz3WK#9CC+TZy^tr~M@Yhs}kol`?YK%=|E?;Al zFX@^7iw8X1@9k(XE9sX?b3=!>-<|N>;YqmH-^~un`D)+hP^t?kS2Qa9Zs5WKSsU>p zuDs>zpVPqYZ=xBit$Q!ZwFc_z=bJ`(WAJi}r|R++fjn^<^$3<=uIhbNe+3?czAnp- za^4Cle^6q;TWFQEyTO3u2bNAnuEfgWx((`f;oFjhhlUx3El?*hO*{*{iyH>G;iwOQ zkN7^z>=@KIWn=Qe<<1piY7`>X4u$D-Y+&^7Mh9XMOC5_?wT(<6Ds|0fwMK1p=rs3Hl0#bum+tqg4$q_`8r!T)1z-q#2gBR zBbI2@_hiDhx&@_LV`()Q-JaI=8)0qm7!0izjZRdm#cTV0!Jw}{Jv}<(+}{=2k*%-O zsm%&-Bu&t(Qq{FvbT!oikm*z^fY}MvH9AXsol4~mYQSnl!Hjx(_1PVvuKmuL(P>Fh zI38+h^&&10fObI86HG~OYg6d>yX)Qlp}8-9`mupk{K_lMfYV?C56#edH?_<_ZuIEwS;%b?S&xpav#`0 zP*5MkW^JdSW<+x)5xUwge-5;+-9o&#? z)u;tAXf$>97>xnnmE-EU>;P+?DTJU&gmh-RX1X;oeDyYq!;$UXrL|ksf~K?4o$6RV zuy}W8N@7lk-6(a7mlbCn);6BZrch)%5^13(8*lGvX|6Lljc#9WN9vp9BOWVnh%$>;28o#5O>d8zbPKTBcqiyI`ue}C_ z&-gfoU}GD`Xl}tMVk)ahvM;gS4h*L~41Wd*yJESPu)Vy&p|f!`jXgzMVl39l87bZuJ8ZtiEm~>+cpQqSFhjoH}Uo(XiU)QETU}zgw=c}me@Q#`I*V_EnCJX zxAdhCOJBhO_~swvHx{*JuWZQG0rD%&W6n!)|BoZiuMINcBA0f;F%sS7icg@DxFg&tOiAQwhIx%F zY*hb@+m-MIm?RyAf2fyS>gRm{9*JY1ZpuG_Kbgngh`cjxc62YTiHiNouJVEYrXxhn zk$+r9dKLSbP@N1asM0}arqAdKT;C{5LJpMlQK)Ip`F(qM19Rt( zi1awrWa+Q^a4tE2 ze1Hs55GzM~iUKpthiPlq1B5Wmu4Bq+Z_?N7_O;jQ6r_|fg+f=`4y&av>7ADT^akHv zfLURzp`X+k9idFzJ;SPI-0{rWdtalyA7ocb@6TT$9uumS<@0-{J4pPKFRrW>)_moi zPOM%TU+t_mI75AL&rEd26YmQ-4f1u@+j;2w-)Hsj87b?Ew~C*_=u+f8;t45~E*;@X zG$x;T>*?$<=`j1qvFuBf$;4uUx|ltdJDwRO05b$7u9dAVC7kaR&cuZvE(de@my1Sg zBFOnzaf2SbvMC>)a@h5mp>h*ZmG(X+J_&yy zSx+NX2+3on5P@C>RItgxE|(OOc9SX)qKSp3LJ+~cA&;;MRGok9f`tL;Oy3FDY{)yG zVZLiN#^XQv&bNOmJnC*R==FvMl01h|DBeBWTLrX;FT}?r4MCAM8uE`n`dG*Wa4#3;Nv+QTMN-g%Pr=HsLRc6?~AEvi*zdXdP@LswnWK8k)AyZ2gQJBmi zbfGn&f@~wIhzohDzkM)#NRmz!gaQg=Bd_$K4;Q2l{c7-@yDyd6J7zmSF1%g3kp1Hh zY4)cjfE&ykC7xB>?nm={tZJcZYt`PjHq((Ik2zK=P<%0R=n=k%)caHkDMhxks{EFY z&I*3~dKn|@EeN5i@8FO+nN$xQ?8~oi#!}lmJGU>r=t8VVwb%@@8tMS5t;7~pe4H9oOq+~M#q7vFowW=M+ z%#9*qB*U#;Tje`Yz_Vfp@j|lMXZaW^n?5liYq@T4pysF zH7eCaOMeUg*6(ak;&awSYjo|L1q(nu<#XnxI4(W+aOUVM{9;F#b>g3&J^O0+NzXo< zx%w5lmMo9GR=Sp(BbTkWLP+biL!H1i0l=n8+rg60y|$3seb;%_pZG-ed3Wt@9&Z&! zM}^jL-Vm&W1BcFT2b;MyanpU>-S^#;sLfbW(;*lC~B<8k_=`)hag!Ow;KQC{~ghwZ5} ztA=gD))-g_G}>U(s79cHwtl)^t5hrss5X+g3aJXdgN#qbUL#-H4OlAivv z`_JWQH{nD<2QLEL0J{5yYJH7PA4i=Ss)o`Y*F*jftogQ9b>_FK>fIZ6e-F<}tjym- z1~RQd*8zp&G!8`COj#TzxQs#gOrj}*2R;sd?KdZ1!t>;h9z4d*dv|{6h z((gAG|9Hz~dzo>gpq4)UiR%w-lkR7ebMN_`bbNqq1y<=r1JYlMY-vD($wTH9#mYJ- zl&SSsI?6t*0f$>>4gAfSU~t3-)}=GdbOs7s*>^3+AgU_)LXeFr(T>n$kp4wav` zI9#D13aa$^rCFo0M&00TY0Jn(?=x*J-Uf9IGoQhS_T{9Pz`UN#NuL2PBYG*%lLyz_ zGwOWH8LFHr{V(tNjNF#De81nlZwDp5?6{8-U;a;b3w5Zka{&tBbG{LSm{yH?FBtO2+q(75LW7=bquR}L-s1Rx~d2RLeHZOALyS$DX zjmFy$w!71d7cZvW_Hct&qsak0;&n;NNpF`o)Z`C1Y&J*0-xR_}X}?jSQrEj)4dR(C{Qd2Dj~O(B1Fh?1G=-`&DcCkp1W$iL^LlOGyf-`;3Jr$6z+tfFjv!>DB%73FzSoz%VBCq2>}6l4A?z-;^zg&E zy?c2BPM(~YTR2Awu}V{yUdr}A-PiYYNr$6(U#d&S%K6WT{N@0IG;MLuL}!Vxd4x28 zftHcnN3hWp?hOR4iytfe;fFgDV*pJ?ZWlmUfL_XS(CiA*M~dJ3!wq%uo!_e}`Nhj} zKJWFla=qNEYvpmehjXNAzzPvzg1$g>m}*t_Lu%R#d;S4f^w(dpWEg$(1R431=wWm( zU$SOYVTG(gwX+oANE#MXgp(<;F~H7U$)dvfCdhTc73vgD_!_Hoh|tgL^}=Q02DiuQ z2ub5^SIq8c^8Y&K^(tL1;Iphp%UQMQO%d~~_rIB@1^#_n;h(PgTdP60QKPe7r8iF3 zYD{xBxQ}uI?gD>ujMS^*A2B0&?S6AJ>()eTazS?j{7xQ6>P)Jy~|{LSx5R z!Q*<*dt9EJR=strTKh)x{P(^d)3$Ah0R8yKwPs~ckJ7CDc%@B*m#7C~{V30|gNuf^ zG-e5{c)XE>4O3LghdgAG!^lrfsMN&pfTLy-OF>*#S;hvVw{zYPaR7F9awb4m2_-rW zb#;c$#CP;9@$1`KktG2@uFW58dvt5NF=cZZ-EO1HmNK&T{I@|3>x`zT1Mi-$Z}~V4 z1og^vOk~AEG92$V8VttncsQBt3r8a1zT)oOtt~sJu8OnTo^FR#XR+w4j_#f>GQD(# zH|2H2jLcYvy2dH*FFG>m#jY+Qs@@3%B+Fy+tSH-U!mvrLp@3^GH*ew=&o$_z-snci z%=6e|gV(&{Y%|ZN-nhx7HvgbRw>uG+yr#`-wM2xsP_BlIa!bS--sDIcDXdt~UFp=i z33BJ?ltQ7^pNu9|D!lkx^J_nVB?;O{TSP0AH(sCA|KY3*wzEF2m(X_RdLb0&*SSwW zOy`vLg%}p@dIVX5{}2N3xobwq**t%c3aRiwxFKnVS<`sKU*J!~lZZcA%`lr9kr!3! zf0=g62z?d$4ftK8B$?8Lf4r84Q}qNwj?0sEuT00K*g>J@Agn?Y?9SrpgY3o1dORgQ z#XTg1xqx%4VDSlwNIV`Z}TCi47>r0np8%c9hmuPs0ZbL4&VQw@WA>(-8=vPK(|E{>2ao*drPpiG?^hH|jzMfv$(sy{r z{A?F%xjmP=U3$K2c76x9u@{3(CH+ruO_`hPk1m}*s8aR!t5k#MFO}QB3_7KNHP46k zqc=xki9*sX9yDd-hb%#W{+Ay7dx!-@W!hnHfsjE*Qd9*6S)vLRWfjrEg!CU4Z*A_4 zyBh-y9!tGa;qJI>?-iF!Z%zhk)rp#3Hr*hVY0hYa~zb9le ziMG0+S5a+qwu`RK@uhA1=DSg$Ri~|O(VA?H-f*%DMJy(>O%Ybz;*Qq_lAEWOE?zv+ z;a1g{tu3LB&N|Jn`!7p3by=BxVb_*}ZSyX%-D#^7;^8uG8_koDbD3Sa`^CH z181y4f0uzrcE;}&)`$X*L53&)y_mnZxRC%o09}TkfA28r)u7}~t~6(ec9iD~C^)y_ zK$pORMgpvrH>GToDc8i~u!ph*=C`m2OUDJc74y`j%01CJ$w%laossZmv7SjIAvql0 zQhK3k00j6>h5LYr$ZCM9e#R zFEk0B9l&RlJUdfnKH20TdpM_IO|8_B0X7L1J9sXsOeu16Lt>3_I}Lx4ClfDLF8wPn zDwAsp--;^2RV$ls4L6BZGET>eT>qVss4xG7zey|Q3Nz9C%;a88Yd+tq**iItUn5sj z-iHph(;nEOxaLzy22fB`u$;glw-SMO$^hC(CSo;}^rh$+3VJ~f7ImSpyt-Kp%XE?^lqxk;hY^n_S9LZ)cY#b&7mp$v)qfZ=1I- z(c-xV#_T+-;n$$7(u!Ql2QY-r-o>scVB5MDd!6-zgSkjsTO>CKqSie**^P~oorva( zs*-&aMBn>>MM-KoWn|M91sR91a>Rg&T=^+G8ZP`v((M#Z>}+b=oR{vmcd@ZH>A%_J z(d@`*28jFMN*{fucv2XA=9N#J`UwiE{e!ukgk&)M`E{Vl1p|v6NDjItk zZ;^*uavLL;Rd|#It=jbv`5CHPo`sLYJ^O@^Oy`!@gM4ney3?ww;V;Ay5V3i)?$Y0a zLqy-KAM^xTwkn?xjj2!FkgHq_s~P7^Sp$y({dke9CmM_)*K)pg_&NmIKF{vmS#DCN1@ZpSpIM9 zmmMU)wiAH(&z%sKn&5vWPwcnqXe$gCY-lK#kl*g%eZch(@M~&c3Eye8bu!Sum6*zz zZGhO1)H+JKg;hvgSwRE@;HG)qFceUb`;OMk+57?Hq5!lS0!JfcB*a}6^Em<76wf{P z+`X->t>7@Ss8+;JXQUm&!yl-v-61_(KIi`{wbPE8$C0Wkk|4`HsQ`5dA?4KoPhK2) zJM^Og#JSN&fNCP&U+zDu<-x8Q8S(i?M*KgB@7^89^IN6Q!1<jHA-dcNSfJ7&8N+6u_${JkluhlucrjO*( z4J5`=-xQbeLs@tHA#lf4prjd&8KCkY<`2~dOF2>yNof^xV;Iu-IH~AEd@t9DzzrbG z(vdtUIE=0`;J0bv?rhfQ&u0D7A7`%%1l!tX=fAvhuJ!Qtd`G8rqOW`3fh(s&A&%zM z*f42txO&s(#VZf&>+VCU^Tb3XGC3(;=JVkkzU&_3-toyzi}SN>ZSmGQz&zx492$~- z%a0x$%yW*Ts2$7Q6bjRM*?#<-PEnI&hXwcH}WdJZ=B|Qta{+{j9WCra zeM3l|I83UF#R{JTYN*Bbok^OV!pMU)rdcn+E~O^dFcSZ)k8DP2qCe{|B*z)q4xStvj`JBbG!U-lRS-9H-bSQKXIT|AGFukjE>gS+k?qrth6Vd2sI20G=vD-9(_|VcSW|gDlh;_;FaUv)Ir0X@U6A;+eSMxxuSQUGqrf+-d9c;RG z*V}g8fimEQQz%jtr=4JDxCR{V1j4*SK#06TC z{xMm(NSi`UZ)*}FH1scsBeIs0T0VoOewhd~i)Qw913tTZ-$y0X@&x@B3KjCZxP}xj zveTN0i~3KW?!Rb4dURP<0MI5b1B!&NNr+eEyM<+nOjIUv;*!2uHdsONYpbCE3#n?!+08IPEfz9di~t<+iYyXJG5TbMI?aewr5KH7hAROs{A z>!Syj4n*tio<3s(@)omfuHwIUQbFQ$rb14h()z2|)@njrZr5&e|V@3xv6Je~%V z)!i@M&OtPHuzLZbnMBZYiPkQQUx1y(N_T03WtuNnfUZI3LKKH7!b{rX0ublmD+LpR zk?ixAqY_*3pO%+}-?bJ$472#vIX2$2W;|rBZ!J~3@>x+%2Mi86Bo!u3rxf@|vms44 zie_K{;A5p)Rur6qfdSqyFLEO;KWc`ZW|LVHz7RzwbI)v$Ho-80KN^4WHR&};EQ&?M zB5$mMky&<(Vx^%nDJ4J=>*FMfcm^OLy7)d?iJXn#6`3KWkED@fMDURPV)z9zW;vP* z6n8652CE)@iC09$*t0|3-HGOq1sNH}Ozi!gQwf_(ZPjR1DtACqCKvLHhaPSYYc(D2 zra)72P_5Ow)P7sQ7YN1@2Yyp6*z1D6uD}3%adowElU}KOdtIUnxjAhqhxq7_Gm&bv zdTSaR^es!cR=}-NX*E{0%a)kxe19xsP*rOzq2@$)_t1|!G}>_U!{_hLFC-h4O1&vw zTW3p}`h#7*V4Yp4{>{O7O8}R(`PDAHRy~+(4n(9M=o=bqyw=84!ZG})=t#BsGR9P* zF1%El!!L+G!kh?0CY`N%H~N*FfXIwNpFsGAK#k5SbuvuD)Ge^ibg7U^1D1#Bj85-o z3S>T(x|er*xoc(q&3n2G%26^**D{W8wfZ}rpHu#wpttSs3l2MLk_#J=46`lK+m)QP zq$4(!QRT4tAJ$lA0SBqmi?u3Md{bJ5fFMts&C?b$x}V|3*FsSO*)W-t&~S=pu12p{G#MJb?cJGc^twiKz|yGb z7!j{ck2&l$$-27x8{7{2=1ynW*5<8sIlN!crZ(FhZ2oQ*+t8}2W(M@d=JBJh{y?=s zTUTeZ2e+yeI<397UeP`IoS`=0>^>MB^&+w(;a&dg5^4kx0<2BxhySezpribhMo z+^ExElj&~vBDY`k_F~Q>UkvdAKZX@CNL&V$HV|3^pLW(~w&X<8KZS2ca#e0yu$d9!PrsB>Z$JIP4!)umkNEKuW zigvDor2(}gRvTn3Uzi~}X{B=QQrWXYu84hdZCd*sa$qOcwaiOpI$952il`RQbdv2! zHU`ZoVT^ERp}lg6bF0$AK^60TBn-=B$7Mfxs)Q7|Uy}mXqL| zbVRN|bf(PPZvtm06g^lu*7Q0iF$h}ap7C+D-_41p3_q&DLi+|pRQV3f8I;XVbJ;4O z*jp?{3jJ@$ED+;@8L3{yLPdlt7GnNB3|)**_)|!Q6cI+1VAtP6o!j*-e&Y5luz5I8@09d6>wg zUy6NNBV^`(uTIbHm`kgFpZ^biYA~hWj~3-%NE*A!#SyKATxqTsgz^wvZ%Pk-)RjES3Sr7!kafK)pO{QmXJClcx_eC@ePZ$hLfWA@Mot${( z$csk(vAsiV-{yI~C3k~4pnKk&a*LcB`D1ho@_kUPDI|YTwJf?EFPh}zMYkaG!mI`X{qeKB{#^+Mm?%gJZn%XfnmUw8*jOBdpE#YERYm>jQDm4dEAk8(rF zphn55ax6A*_D&xnC$DvL!t71R#HJSdQi{{{<;P`CdMqcM9ZlR5N`Lm5kru1Cj1juF}A z?=y=>q@tKTAKzpSWfLuRrpfw79%MW-7;?jbE{_GZn{2D-q18oLZaDRtfS@Xxd^~N4 zrXbb9CcJPookmu^0V=9k=?fYstV#S@M5Q+=6B7NyULx!uJt2pAcBMK1y!N3#GX z90NJefFQ!>&`JA0@Za zYm|@&`sLIhq@I`2@vvxt0NvfavAcUAiqH?lgtSK+Jc%v)whKu@m7b^F#*HQtlF7v;Vb zs`x^Y$L43~A3hgC0m6utH59r}DBO`V!b`i-?BzF_3&(&E_XbnpoVg&=WDp``;>&Y6 zMfRVycR=eD>zbQ?D$@XS0!m7m$K5I32@NY-wE^SQmA02+sJIQC47;*!3f-5Z_Fw>2 zV5yNXeUDXYC#{uhx~hnXdUg@|iCchLEd17E*l1}1nzG)gH+1gwWN#hYJhkx(qtRlT zO?!5BP7O|W>@j#kP0d|x3BUVSx5qs`jYbdP9%o~QMfdzPF;r`?&tEvyeU+F@MC-Ey z&F!hw)Zi4(m7X6MF;8Q1lD4T1b#lE8&R9K?gX(O9nfva`3`YKe5TC6<>1W3H@8&hrLu6A|aso6~3!AmY#a z-8QRMBPsxD6d7n6%-(ljcCanq*V$lERU3?r{`wu@Kz4)#d@TcLdC4Gy!GjTO0C2!mc_o5pST1V}i)xqy zS7U0E$zPF7<6iO3r@Eb42QS^Sp|iWbDdq8+jb3Zt>Bk1Udb%RrW1C$5yv5QK%Ipwz z=RF`)n+8VT;dk0=nR?Nwn}~?4_#bAC*6p!~v1oXF_ENVUkdf6&QM!v&Y2IsDT##N- zDm98{9CPO}T&gs0Y&-@0p)5_?)u#xiWm=xeClSO(JV+ij=lxOip zImDufQV7Kr@pc%-;h7l8Wnf;Q=(O_r^4L-%vJLhUGpA7WVux6lQUD!{iY7%=xtLH@ zT#;X53^gCzpXAp7Bd2raZg+nQp`#ZN{E#^UFp3f+ zrWukZ6kU5-4(G@h^LI8Jxbi?l@m1l(b6UgT#zBMjMwt3xeWoK`I(DqRx3@jVPD+FI z!IqX_J-hw!Z2pHo%$I5|3$J1hiDW$>CP?taYQ~P_*}uNWBao+ecV~ z^vf*5H~Do9(l4c7W?pz7g13~*KEO| zMRovQJ%PUqF}P{Sg5A9@1D6q3`4JHzokFzcSRcp^8GWJ!7gbsoQ;KfYg2`Mo}(E<@}lj4KS zB}U4lC{Iu!mYyoamSeHgCt`RjOr)ky~inkOPNpl9)MdlzqZvqor8rFxJyxIfJ+&<)2aQ=?p>kjBh9b zbN$~4RlXjduV3?uXgW|_wMNy{>4vwM#=~8>E_>wIbZK+ zuaCc6*R!vuXW!-Y@~3t8KCrDgFalKd;~O!0?zqq*9!}x!!LHn%zNtgTRcab)jQ`4Qei2aHu!Ku9D6D zPs>Jlc8B~?79yV6mhVXF+dBv2&Kd;_#tP$f=YcI7_msqmp}zi&`F)$NumRDS2`a6_ z<*XNs8oR~h)))q|OGj8P*xrs>Sc~#oKz>92ah(8oH}3%TjiBdDJd4o_aal0&j_{V_ zJG_u3Oprjl=p1onz}4D*rzG9k-s&3Q+f1NsTT}FI>34TWoAAyoco&ZrYt8VHc|35z znT1y?+q>0jpHHnW{$75kv6S2L4(_W*Tg*Q0rZQ5RgO5A^jFkUCBW8qjTf!K9%JY2JL3OLOW0@duDEYN0EUzm)r$IU%>V6JrEOlmaPx6j3N_xG_JM zIepD&L#^<$!Pv0$OmX;67i``ve*cliUrB!UlLhHX*1K@6_0Zq#dP@4Ah0=YJT+mlF zk29BCom>bf0bO=<%5u6q8EqVooeOi60YV#Gm{k$2;qgi(>pfZU*>;P1xY1^D)}uDC z-PwA5%XuUm8Y-1LRmd|` z2`%JE1k90lsQ@C0ms5q6axO^}^5EKYQ+yctm3UN*nNNH;QDIy{pPOi)?64S-cLMW5 zEDZ^gf;c<`F^4~1%j&Of@&Ub_NWDv~@hKsW!j!}s{1>0T*xvv?gg@~!t*y0n3PoLU z00!lMq^-r`#ex+c_m_m*4Z5Z#ok9A+;NUT&y_DoMS+}7IZR=a|MKB~Yp6f+tw-gGe z3I$%gW!17yrBG0h27zo6Nx}H5U|^9QeJw@(3lZ8RZ9=Lwt>+b357desgR$|=`;oTD zZA7M5*$1;$&wDHFME6iPz1eo6a18a^o7U+{4W+K+>p)l*};lkNX zC)~{~o~iM{bTZ(5k#!&ThS6nRBr-(-o5beAUOc7);R(7L$E;S7P_IL5qViT}|vqkLfPi z*H)UBkAQY}12OFaw4Lj$SR|Zu5sB*}$}K-g5$6^gPReL0@#Tb1DAt8n`TJ6gB>#@n zM523?O(_#XuIVCmjum17j}z^31!6IsrA8F3wos@kkc=dB`dDOf)756P+4|7oT`q&V zrlCGEv}I~W6z!haZIQNQyesOmSX3&Vbs~3MqYehNIL1(?R0bmFEe8CWnowiJA8o65 zC{$*XxMDKY*BeZ^I$Mnz=%cz?M<6}EaPY{1;Xbbs<+R2RFJ3l0(%;n?=(W@Vb-n4M zrfRX)7;%J~HJz!;#~H|7dA z2gyB)LqUyEhd{i|Y2D; zqB5*aZ>+QWckc8-s1O8Ps7~*pt6IBvMg4AToo;NTC1x^tvhF(R^JV+)w=p*iE4Ir3Pro~SJ$5MneLOHEO6`=b7Hbf021jtDdCj9vS zW$-Be`-_4>nz)EP{(|&}4AY3;kaxfGBKwFmdJ%i{R_VX6yR=rnDt;BQMBGZxGe~hB z0QLchgdnz+=nQ7hecTzZ6W;#a;;nU-yl&UlUAnqQ^6YQ7<}9VXap%}r9slB^{SKi=vS}|!vfmar-kQC&e7;|ZzbV;z5J3^axzIRO1UMlqBK}+oz4(dDogVhX z*#*D!8B_LJw*4aEUMcMUME1@X*^mBcyGXk4x{Q%+^`U9pM<9L)YYV)S5)lkcgas;u z)j;=6pA}~QLHP27|AL{rJ+EY6Wn#v$z3;~8jcsFf^OCdg`Q$?Vg!rKwvpXFbsrYK< zRnNUchy7F2Q?5-N-|u5D&Y36THYo0@9S}?b$#sc zNh8Sskr}yljF0O%)lX2=UOCt0ICxJDmv_(fgPf@sVy0kC$cy8QZ&($A@DafO;3|l} zaJqPLMz}q8&KF`VoT7;RK_EAlYMx%e4=uh-ar~*!Ag{!^iN3|S$?{$SYnW_wb%?n@ zUz&Ze1(+djMAmPQ2xA7%@`Eh{>z2~@uvHN1UPh{tkbmOhb6RzzZ7zNSfgW(~Q_yZ6~0RHezmTZsQ*30un z%}_|dv^dvqPw*O;Wb`8b&RIWK&UyV5?BOg(=49yrOZ2dtMeV;EL_vXS1%k1`8;Ugn zSfXn%dx>AKLX{suFx;Uum|UUc(AKCinrdzFIgPc79}9LEEAPJV{6W7(jgl&AU2O!v zOIghgttP)SGP-p4J=?Y&&RsdN!&I}SMvF2eb9)yy7oX;&i@%Vso^pW78NrbF;oc|6 zw>8f)Dlft_NUW#-GBEG*@@rKHBI17%iK->K^L^Au;&IEId?7Oi8TR6H(knZD{&neR z8Rq%MFLsEho|C??;}_rHpTGX|9r&%RNBu(l1%6Ah4ffSvn?VWjPzitho%H*~SDur8 zpJ9gQUR}K7=r(4&Ui!k;qvFqBlD@F`>htuC@wr!bOTy8uY{NUHSGMt(G5Opwje?H0 zZd_2rgm|@cW4dhYu64ACU$GZ{k2bIB5MfyETDUa3>VK)IvuhnvSfV7@sW>3_+MvNT z#P4t{c4kAU;`ol|Shw`e{3L^gmcj>DDPQi4AhhdaF^-Dy;P<}As`e)M!MVcPwi4!V zi|hfWDZ0w_-@sSIo4clo6@SmV+Rh-mOWK>eYfT&9*fn&??|;uWd}&vSuaEvrO&;p=#;)u{Co?UV|F)=9lx-^a3!+kTQ9i)*AG7 zbY>o%NnqIIl;|t%2iMk|h!(4#!S8YrQ10(q5 z0AoMyncJ{o?g|V3dZn9>-s~J6Za0~nH($-}Wi3iwBsbFDq0p=?`p!%`AVa z$=s9(yDi0^+@cFQ^|#=@WIHj98_8)FcmcXeGN#c(>^}w$7L*Q~MM*U(Dl7wHF!=@6 z7~R2DX{Ex}LZAt$9Q^bsX3k;&{+D^{2LhZ|23oriSql?&zoH!ESQ_l;r~zX@olk$(C0F(J&ryXIgNo0fSdPZl}=7V z0zoYC$1`*e((;h`{YU>?OKZAo=bj($+1ZtDZJG0T__KjvOLTJPb2F3CmS7<3Cu|(H zJnihxZ98x=9Y)7rd|+Fy+d1ZJ9T}V3Iz1I_X^BovZ=D+(X@%LWT=SuvujAygxs*>P z`wmNeh71cB%n?O~cu-%enOS{=d&`$P*?VFz8J^A*#b7aWTH2>=vXf83-lUa2CBWo` z1fJ8UvqcsyW>2@lb44ygCyvA~q>q~IuzB0f`TP>T#Zfl;wnSTyw^WIPW~jJ}OPMip zFG!EJ<%@`dE?&+i822ekD@R`~&5xJR$E1CbN0D-@5T!-od8vS@k0IiO{4%slgoH$~ zVi19jpDdm@c^uwMsp{C00K{9e$&icfloSK_;7S3L7IHNv;R#r*%5>o$#b+Rg=Bh5L zx)FWFrJR2Gtpe#2Bl9ket?W!7@*s;igyo7+wc~49K;mbw?M=GrO7TYn>{UM_Y?( zKz2LIBi7hE>m)~=3CO|KQIDZkqv}wp9H=5LJ`-$C)U=`?xZ2^0b?x82>%c(J>NKd0 zMzz6Z4G!#I+`7Lj=5nB{WKCFSw*~G|`_c>3`Hf>)i&#^QBH}foB|Ek;KfRFlsW&wZ zZ=Kn)b;eSs);T(Io99El#x^b0$k4V0K7N1Fp{=R2%xv8(7uIVmAC=v7(R{3cBr8M`u3!)1lYrzKrHm)g zuoFmoqX~;QIa4hLA*2APf)%_WT9fBQsW6|b#QzX)1VngW#a6!3%95v@Leri-iO(>7Ztuv|?KfXN(Jr*MiZ@CREEJz*r|!QW%Z^1K zcmQ<{aJ7X6Tn79S*CN`!iiIHeNB};bBq%0u%1YUIDKKe5vPvni4k-7FP#5T(BW20^ zspohH(SAA(_H(N3vP^HemE!SSj;-W!$MA+80pb_`7O1z>UpZ+I`|$)_DzNCv3OGN# zVNdQQJmCul(^!!YhJ_owRhCH$&}WDSVU=p3z$FpK!p$}0G6!rsL1K{$9sCvf0toF& zu@~4Mq?zx1;j+IuEWF)RyL)%7DZg|iXEf~IZ7}AJEKv-@2=nFdXU?5wzkYTOl|Xmy z+_r7!PDIeo&FcN~C+a>~em#jkBz;r%0HCK}1Vo1^xE@&v2Bd|^8^afNiksp9CytI9 zglKZ!uX2|P=S#=xoH7Tr7#lR&yitLfZm3Z!RL(5TqGIl8(OvxHexd4^v#tUt<#8C5 z)rP30Rw1Ga8{%$M8ozUeCY0PhnSWEYTk=o=yxW&5`#sj?7m%EF>J&tz98&mB9Y3Bs zb__8jFXx0qdF&%d2%&0__U4Y$y~{Qd;<2#koRuw&06`F~G?BVBY>SKW$f4wWAv16@ z8iKuL_c5>23W=!_N(nSK2MS@OC;Yvi0EIvPQd;ccBEu&{d9 zbm4emI(y-e_)hJSh1|YMHJQWxSG4<+i0+u&aHf(VU8OeI8cO`=GGth^%2kF3I&gSk zbL&iDdb%((`nEYuiH4jKe~D4oV};U+K|nRCVL~JVw+JzikV<^$8P*S49kfzl!g@yd zcJy?C{f1qH)j)BKGBQ4#``p8i+$a2rANfcTWJLJ*f1ZAd_zug-9$zX+S4shU0PCkL ztC3DhJk7x~y<7PT2DJhs!`dVx2xjFvHkop(AT*!IQ~WaoXN1n5-K5v5c#{f6qFp4O zV@fQ)PJ86_`C0L^ux}7XrjvtE!n8cg-gy*rcNcF?5LdaupA&limVy+#NPSgj@bgVWJ*UN-D*`h!2^Jc_lx1JY;^%=Q^1)pbCMemkRHZbAx+t%#dLynvDI60KDjS zv8Fkc@HK=(;r8rcXDD#(RJGqXcG%k5WY9<3=LaIbTrSd_0KBw1&=gUsXS(b?m=|KM zeIa2qHL2A-A$Lb@-E5s>*JX=#?PNAH!PKTb!%AC?#=E;~>@t^e?iyBglhHI0_4Qel z3Ujb?u2#WQs!#AxTdet28E^>rc~gj`*aW#|JL1yC2i|li zoYe)5G?fwjf&lupTW_gXOlS89@gsCC7M;wmiN2oMAOAn}h8YW%*aaJC-yP%%QxN_{j4;Z z-yD1AJ7b&k>`R|Ty@yY(kvCM}i`;8O5+oj^2tsfc`RyWFHi-}mC}hx=0GCr(fqb`u z6$6mC@`fnSv2(#3M#v74(<)VYbP1msm2c zA0WyiR9&)fvDZFnAG_>IroHmgF~_96clW+ay7x33d*lOG(eNsSt3sgD6 zW+t|cUA4JI>@8vus-F`0+RA*rPBkIWr>Z`gVsFFd#Y+Ge~ANOuE)_dHW(8+ zVt^$Ac;i2zPB4Su**d@qxQf9cCT?&IjSsmxkF>S>f)Mpgo#t4u^U@n`xU@4EGk2O$ z2s7wwZ#(jNzbAfPOPklHSEwJ9XZLGWgM}mc z{1v&}i{OwSZS;5=(;wcvZS&3zeXSi4gI29F8dYkoA=1&>w_zu~_^{iTylsB-{N~Z1 zquvg%`sx~$z$T?H2`W_KuC~`Zf}{9${iZ08bVD)iR*soxdz6+&2SRhX=q z&bjeVj?bm~tR_WkCEppIqCEcjtj<$80nrEmzW*|Gu|>F4g9+S{-evx&Gd@ zS zIC`;aUsvx3H+-OL-zyIb{a;uz?%42=<1;&r$Fm=P_`{hGi`Vw{U0gb}P0H`<`oM+{ z_IB-af1&u*hwpjM&JFBq$2aVdF2Iowe>nSLv`yBhZV*4iE1hu$0V7l?W#&T^KXJ(7Lqnd}kPwrPAc(#)18uky*Pu=hyjnP)RccnUE0J<8X) zPQH$rL{Sv(^2r%qNgv$s6f#|6-S6U;0aE92`7*3czKrzj8((Hs?=0IED!h}j1n5!b zp@fr8S`G3wE8O%L#H$j`r+L-}eoE42Y2B<+$TSSi=hDYUa+nba(nf?=yLde|K~X;NxN%6=;s+cph#?G#mMtqb@U=J>0_Oo#bp3OLL%O4zNpV z8_sT}WT#qFmg_5_D}q?dJf!#bn>oNL2_O6oAkOIr*`BkXV4uEA`FZVEo>u>% zngXXJO{h@&bU)1(<2T4}WPz`u3tAFY`z;s-(yT(!-c4zSyJ0Kv5P(D^5M<%bYc{X% zURZ4`Ev^~QAnzHgvX&}8W<7GD@)T<_*8l69E8iyny2#q!vt{QEmmk@-JeiEFPA*=Q zTH2FLy76o=2Ga6LNN7Tf3VWPjIw&_aP)JE#D6OuGo1fxN9v$yee#M?60cR1=#UUA^S6(?zLJ!^e!z=ppYFW$KE;u~piK>0&BG1lKdmI$W+;~;00 zsdb0O#twao&i@qct$XO@flaB@rW*MpLKo1O7%8j;D zr;9~m0ER3n?5Az2z4C^PRh|J}UT zVf8h&cv?3)7IirK9SfGld)lLo7nOTETUy#6h@a-MVhAwPmkmP4eSF~2UHdM!+f3Dn zOl@t{dyON;>SB`_PiYA(->~i@k&+Fm)b&Lb_PY9SpBOIccK5gzRU6C8ZW>gcEN}2Q ztJ$JdLIWr=n;J1d#rzZVnKXhbay?ltgyoi|079iynm5BNi}*(hEIY>p3wM76Fseq@ z>^#%_U>u}}*KF_rB0}%xYvRe`kM4$zEehjcAJYuFIa^8A&`gKqy6mcnY+Z z869ki-)1IeQYLO01hopKq!0j*(>U-_Y6;Dk9M57m%-!3BX*hN(9QUx~iP-1QILVM_9Yf?QV6u z6(+VQ+5~5a!k_xoZ;zP#iBN8HUWSF>AuYU>E~wcxk7 zMYaht7HND*uTP#2q}Jy=7P?l|T8Oot;yDX2K2Tqr&q!U&-*hc@(vtNwnQOx6p0Jeq zriF|&k7izzb>sNM^t_vuk89(NeDAba3uqR&^dF<-+t57YzMw(;J%#d+p$sbIiR2Vs z1g_0qOftLjWJ);!XDL!Jr_<;cQO0k|Uqyyo!exb@1jsI54TZ48XDlciSY*N+;W6q+ zbHbGxI0nW!D7`ECp$|nHn^JXk(V^{Iw{9OAsIB$HUWmWYaWozdckgY4Ghya~T83hz zDwYe#y|8g_cQ`yeFxa)!UQ=UVn%KDE!C_n!XiPOV;*QF{jvYg);y#|Xn8r}9tYsX< zr4?wQPHB-O;0uYeXyxQ|3NkV;*=Qgz`k@cuQ!&ge-SC4OHYWJ9d3nT1_&hwbJTXsg z?Et?LWzfd)OI*U~BFrgxwg~Gm=wW-X5W#NZ1qc)3_uD&Eu`_Cf7Z7K!QBsP@wZ*Vx zO)lx$oLE_7HCI%atu-qXo4b~<$qM{cTZR^_X^twB%4D>8&4M9IHItQR9_~B#n*6tM z<$+`S*AKP(%8Ct*jqtAXwGXY|e~fK9`{zczK2=oW3CD*vY-e@HjwyfKzF{aH_LLM! zt#tWu?u~ROB%-}WnZF)0>Df4bc`O4(K|D~Zjb0qb<-=)~)-pp_A zk~@wciyu4IckFoI@niC1%J7~wHs*LW_3AxqUSf|;T!UZe$N2GU)c)enks%T4%*70@ zAMikqSa9F7Wp}MgNgtql(`}St_E`8;3WI)?>!i3WS)h~O1KuqN#f^=vVH5Y(>bi}#IrvhcY3#7w#^G4{kFcudlP+auIx^q`qOnHLQxGsg%kTT z&s1#1_|$xJ#(2BMbi;%+#x+E5s@2G%($75Lw`h$CV(I5CMh25gSG3;gtdGL8f57Ya zdk37-R&B3O`%SssS?}@Gqjj3v+M1kfRBYqo=$e$=>g*mGzH4}>8>b9x*!1;H8wQ-& z9XOb(KOP5wb_!_JxXfY4(6|@7w$Q-u`ZS=A36P7+iYC@X!Je^x--^$0yOr`=P_7 z2#Y@0j(~GTb0Ic!e#kTXG?sNSBR4v&p}0+dj=3gJ@>%Qyp`#orj z8ap+~(_+-`RllNz@Z(N8Z^o69ZZ$8u2hH(l@}fahcfrswD+}&Curuh1x$Bp%qDFb2 z80H(a?`S0YeLbCg=gb@A#=gMVBfqo(v_a0}^$mP9vzjxE`c8~~ibNn(h&+YB1^r4@ z4cc=SBb@AvmK7F`9bw7S5WJx(?XaI91pOgD;YyIZTAq$m)Aa~UCtC5rVG;*ITL!{q z#yh9w$+96C^6)^~jx=DCr(_*%!FryeW6+@r8JT?Ld(c|2B+tO=0}BRuIKuT3ydB}a z!?W^mpMLnE!JVJHs-O?TDf$?UAQm7Xz~`v!e@YjVvP;<_aCd@)+V2r`Uh1n|il zJNw*^B#5a~@{4DmgK0FgPuSiBe=#Y)1jdzeVql`Z2<%t_>?cZcV=%E~fNNvq5M9&#wp!6K$-d5hyTv-PI^O4Zl$AOBeeu;JfVl4O>{G&Ns(4x(3nbT5zqFJ5d*MEb z@V?-mebDdFw+nU1jnobF&d>*YgZ{|&M&?H|`hqe&8qpsyjzUH)2rUn3dhiCCAIWW` zkKvjh-WfcHrUgETd0hiP4*|>*_I0LH$k*QK1NaR`zX>DUj`4WA%tSu;4Z>gnaSN0J zZ)ZBGgwf1XNdg$cKOAcXGE?i+6cu|)8{=O@TUJ3IN;ah>psZ+5lF8Nbk&h_BHK1hY z8|?;;rq74FaM@^MGKT#7r9X#^mRc%rwGCM?QfZ4dZ|GaUiT0gHz27Nydb~9H5x{FM zEGV}A9#i1j=qjh;K=EI&^|%e6Q`Yjy@WsNJlVOXuSxgCwv8KYYn9m2n8D%E{;Sl?n-2n zlA&>@67?PR_)id>5dL4&^7WvtWoSn$R;ONFLge>~b^@x67_C4Q{_0+6nY+3pHqO#= zAq8s{pk+zDK!C6oa+0fO{$Qkn#k?^mBc@Dx`OXcWO(qVlwbbU1jVX)=QJaH266N zfs&H1pe=2N#B;*@`5ZfwIs|L$bNDWWNBf?6rf-x%p+&qac2lE3e^U9@w0ugtC-;Da zP6aT-Q4b~jLdO__b6+o?(jKK)vX9EOKk3*?RJ)2BqnWs3n;A6BPpPtOUNfXbIVdBI z1EtUkMr2z2q3ZS;WDq-!xj=?r4JCjF9q^8WBI5Vk9#}oJghjTpWax&UfAe$UOSj*@ z`rXQpwki|h>wo^u$!50jgUgnEaM>Rh@7Q$+XkjatANB<8_O^i?yRN9UZ&*cNYwfb` zv#e3y;9mUcMCy$441%{xa{ zE{iAIJEao8{}{fmU4d%NB{T61qeQy7s%qXc6M9io2kNpeGxL#`;5+~&q4<9@veKY- z5iZS*2N9c$n0IL5;R8dOQOs7%Q8p;WGrAW~Kqop5A%irc(u)UAWS|YDJYmQjksVXw z9yH%`_n7Hz4mO5JE+$?e@4i!-d%4-T_UP-ndrR&4Pf@1qM(+9s9=W#Fv^2Tu{bda> z+i2rXi>nrViSVDuF9GHV`E~Gdjj_!=7x6vs`EdLv-;)qt05ikFnE!a8`bTE8Dg34R zycE2g=4;XhzrrEZ`Ax~oqD;^nzGayiAe~A0p}lpf85Yd&(sSfyLA&pVjnV`kJj5S? zV{es&tOsKqNq1iGp8y;nV=p2-8IdA75Rvjt^ z;7TYY*09jbZ>PB)SM#5G+S9E z_q)XGCH;tp=0DyvduY{GbHuY$COtl$NXQm^jOQ$3NGwQEXK+uX?wZ+WZ(65BdKsFj z`nNbg;PD8zV&&{x)G3LSAFs}u9p~1G@L1l|yr;J02m-<))c=rce}_KKOis29&S=6a_(wJ6<}{>I9J-U2p<1$|@Gb8)G3DbCLNa zN^dC~>f84~-)FzPFCJR5BoyEG<H1Ao!|%A&uG0$0E_% zK#kQ}GvMrVb~ZG0I#EpB%Ubo%wx)%7jT8k4C8rjD{Qmprp<`&|R%wlM%pL&v+` z)xj@3ew<&pdUbuJ6LH&i+_cPB=2YkZE!jGdTtBP)`Nf@CMD|*KiJY^FQSWTYJ=KZ6 z6tw1V*=O;%uNiGmDo2eQn%M_G*}Nsbd2@Wr=DsakW<95B%a*wIuks?{>@##N1O@A- z5A?2H4l75Weww{sfo>Nl*RShh=+oaQKU8~FEo0vJm|aFaW-w+6NE7D6%+`RH2oFG* zRlI_93fXURV|hATwt5~Rcus52upGfcC&tP-!(&4&c?j1I)>^DqOKqgq>BN2+E3cjP z{I-VR)}32}4Uq=N;-!ln4Z()S-HrHW3L6{H*;FtYsi@(Tq$3R$iD+reAh3C0c_?Q^ zc8w7B0iK!W%}_lq@u}{?^W<>BZDGgf;$uS`7ilTTrXz^z=dCL zZULEn2Rp7jdr)~=dHSI8EITg$QMs$=1?8i^_yybl0t85*L;VN8j&Mq{SH{QzCuSpa z{p@?ZqyHNpi`{*9>|@`UdAA*3DLDGog9pEQ6ayZuiuNTtfeddK5jRU7zB=;!hXn!% z1W=zvqJBLki?TsG5tDABW z7l^FAkoF}GC7(owCk4{H^QE0!D2US0ScYCqc|7wH)IrD& zdWVuGl1TsunU|EuxuX*jnknHs*pnczYC8#D3|QlHjstqaT%aq>sLj+2cYY4ysKBd= z(FDtODz-y%SQb%oq1e>U*Gzlml(Y~kT+wmKX2k!fZ%*^n&;(+$Fo+2b3fug{f z7?-9qA+PM{Oe6s#kQj$SYqTMAMT0z^4F790&u0V2_syGW_+h5v(b=({zgAQ1Hutxo zL7|sPS8R|CAfI?9e+#WF@H;QryI~(&yl=x^FM)a?=tlDg+NJ5=R_$h0R6DP_%@FJ7^Ut>YWz!DjaN+*5WdKU>lL$)-;{ ztvtdvD;R)ka$_=$HZ!2jym__h;`op>g~Q)Nh&>S%$#4@aN;&H40OO4Ll3^ zf_yj7DRQ_jzRf<5>O~%%-CTER@xY1#%D{pDj2_rq&~{LaUm6N!fZKa#3=zlt~r8W~Z_l)0qhca8Y*3D8PLL8&I(YU;mPSCkg7pRQ z_;ih+lbRe-sw4EVM(EPPpF#=%`{|+1o&^k{!#tMwi&&p22?HV#H1b8<`H zW;P1NE28iy`C02oCIgJ6P&$2fdPXj9=zJaka{(6PMySGhOWyEE&`pRY@G|Zh6S#UHY74C)N`{m*k_qz zUjh%*&kfVS2_>5gSZZ+GWR-+&mm_rRU9bmo~sZx`afg(t%M{>a+y>=@D;yZ_@$|17Y4(0k>Yllwg?+3Xj&b-?p zrbQoQ0q$q}sfn>Y-&U9sfeKk*13?#0ZGxYPU-E`jVuc1>xHzkIh zi+N&^R;)tvZSgEpm2!1)TZ2F4Z)htnQ9gF%yUM*j?|fTZ1Flj&*u27GvsqR&N0Jz8 zbJXum&NHok7*+qKd6up3Z~r}0O@r)u!?~8@v+FU>F4kR*;RP)U?9Ke8hIzV(vcMjV z5kO0%dn!79UFe(p$0YL2WsFIW=%M($6Dtst8Sz0?@oHuyqYa57m)jBGL` z=}XFuwtCMRPrc1pUZR&$hD!S?d!_QPy%(D*?e|Wj5?o!QcA2 zS%(U>)0GcRpYNUqd8zWD^IrLR^~r{F%XHowhR!KkwjAs*=9REb5O)vsy{~%mj5_CZb}E_~BPjr5h)V-R=rG32#NojhY{omskI(YMgM9{u^tqk!z@RC> zU?S=XhMj@;A^h4p@XsBbTPH;!o<%ufVCann;MNvF1Z%X5S{O|TUl9&5D^bb7xdX5k zi7ykl42IRsFuM z&`EEg%b)Q15-a=t1@6y$#$Dj=UrFDQG2VMJ)b*ZguDM3pW3ZLuvanN@x@BkB<+79m z`akKS01_7fl+l3xmgN<`9bY##1QILw_o~XO9Xs&Bf5o8&taD38QeE%?CU!yk-|bg^ZhIsE?|z3Qr!NB(jI z|9{bB#WbF!#hU0y0tZSPId4!WldCMVN&C-EeJlB`j52UQc@{cDm>bhbpZ=tTZe=ej z_6c;P;DK{|JY@;7P2@fvqDOA@9UQIwk_x1rIGugcCU zy`i|)8E)?BiCqGi=2%Zpa~M!U1|ScSC05LLNIQJK3yCqmF6R%l&MP!*1jxDI8g+e= zXNrx&2WmR=KK278nl0P-+yT>LG~edYPt-po1=B0nPY5$YCO*WNLkZ38%?lL=dm;I~ z@7+bwW?YAtTc;_HnAZOqH3M?E0f4gPxRIq=)986W%hC%M` ze%j4v28MUMb2xr>w>mAt$n%3D;9TI9vnrFjI}vqr!18W>zI!+x#sCy!w zN25G3aB&Lr`?C9&a`_no>@WN)tc#vEs86(;V$aCnxW`^OaW+ z1NiLEQ_6p59)f}!<$)$g(=$CPe*>+x5T14y=`PhB(jCF*ht`0Tya4g4LB1;hWQZ7A z3yI?may}Ls1-v*5+)Y2hp-FrbQ1Q4A4nXrj8VGt>`T4Ds^9C;gDg&rdPz7lqx+m!sU9m}*07D5?Cn6W)|HZ7+SsGCZi$@`p43dC=qgJ8Tt?9SiG zuCbbKT0DzpCF~P~#czy|-I`vSW_kj_z+{TxDsTEi0KVc)WKS#m*zB@v_oTUD!Cc3y ziD6bmQKy8QKATRmM2e>;rxfK0Wt4xOlE*S3iHIAlY((Uy(i$Dfm09C8_?=-zAiXwd z2kDx%QjA-BT3DM}8ugYc&4o=M!2bP%A~xqE7DF8V*rM*wdVQGPrH4I*6g^hUFLjq|#AR{^qaIUSz5=I*wz z%~MriwbWEpF}bN@%-B*}R$%Hh6_nMs7{@xAWL8yCW3d)gc>?tOP#mv0&@DK0FK3qg+{ODlaZBPjU}GbW6S-UqdBr1t%=# zC};pcpn?&bCzds#%!u9rwGzV5jH4Q7wDCBu0H1oA6n}8nnrDCUg^N&K*-2?S9^%*faPa` zKn4)d4!+=Jyo9*gfR2*xRJ6fs zXajlEk#~HARRIesz)#1L((0HJ8AaGnUf@N2xHWd01 zqA8p#aM@3g1)>mh34d%11bH0EwaG(ZJRzk36S30W?W#7qt+lmQx3SvQ?UoB|B_(c0 zz~~J^V;&2jo#&%dw7V10+LOTzz)6=GhWv7NOg|;u9nO;8;FRu-uzOn zqa8UzpsB=Mz+A(8qlFr2Ly15}J!Xs{gBnNyBy+y#Xt`an-e`+cOz3^Za>Skdt+ozY zr3{4<@-j`b@H9D&!kL*|3EX4d(Y9cN!&+5VTwGRVg}+kU{@Dk*I>N4+vci%IV@;hm z&>42x%See_<7hx5oCSLZh7H~t(1T>K{@-40blKgun(Au1&24uYtE-Jpe79Fu*WkO$ zSe>e?c2|}ek%h6`=rFsh%BrwiQKhcEX|#o)v7BF=lg<+7g%|I`S@f1FCEmPjIm!!e z1q-~;A6yUlP4FX5l>&p;(xg}Lz+49mc>>Rf!lptHP88%uKm!tX(Y6$n41p`Dte0g( zk_1f){LGpO-@agJq10jWbzYoQwp13xHg*nNW-eq%4KW=i%iPp7Ox%r&t*KPQ;Xw(} zT|ewx-#)U)WTCMj%0~Q~hDpdZs!UK1@Pou0sAB?*VT^N!gk)tSpA!5cxLjZ#zy}3r z;ed{!NF=~WAq@dbS(J1FX$l~1Bd$uOu&U(nhcNx1=uIX+G@J}$Jxr%)KB{jjlaP1w zdCDATO?a+(Ts0|+5pXq|tIply320T+Oa{fodgiLaljCBX!(9`RjPb!Rw9%>XU>sRo z;!i#)lf6w1priGKL#HL5e3Hs1=xxrAfv9e_gam2?bt>q(D%XfqK?OCL}` zqz>W^B4`)fd;N)9<4J@=on;al$b|iX?VFLt+;hUzC@SMhVJ#+zfwN*#J-GvJBORt89!azYhr` z4G6obJa?c|nA;=?(e+_Djd-J49(fH4MX;2CAZhlYtj4`OLcOi`sCsU%hv~331HUTX z>GlF1izX(=yi$I{bRiyu?N!hq8QsF2SM7GxuWLcLH!TR9g-da+O6@w>114<&&Q$^ZedF^T(-0z2WErm&@-MFjcwh0`^AbLHQjuWu=bl7Td6`(P%Lg8yi>E zSsIazH$2eUto$(5vt=L>cGi@Y;GCMJ*>i%98dGJdfwSgX-O@tm$&9Lr0uxeA$^bV; zi$_IWgjWw7N+5U3U4;?DvNmb-~9(huw`wFl!AY<5w@PP}*SmEu?jY{Up{n z;QvEy$f6(Cx4Sa`{N+vTOT)_dJ<9u2y~T$1Wlj4Xt+i~z)uc2iKVnPR)k^9cj%Hdy z6dDF9o&2QyuxMBE{U=kelNn?vk0Hs#kkZG4<=os2I87LX*|)TI?JQc>mbsnURkCDj zC_k(DwP8j5#PfK&p8G^ZJpk-7?~y@y)CCeKuL&y^-@ZVAnd~t8SyUWx0=*o+osQbZrQ~XpOwRm z(p*$E6&LmRoRM<#YO`(Y;ceE^Ws7=;S&?xEPjlhg*1hy_t#Je?F2bIk>cT=Z^L34s z7yjo5l$TpSz^b%y`b+tjsNH75m4srM($hqcl#l$}R09M>l&BR^lXU=P<^m}{7D+KE zk;qxjh2^7Fg2LLY)?E633mDSO6c=?C=-Y!ewQG>bBiPvCtSh249tKL|Q6ry|{=?-Q z8z^6TS??!GN{04XS{qrbseg3P5K1i28swLeqGH^a6?ArQ_d1sadBu&!rQy8X9%wRS zRZ|gV2FW&=t#t9i1uKesw)N~;UfyN@aGu2gN>t0!07;GA9>}YKCH1@A)@-=`9 z>DtogZ3FXRt#wo_WewnOKD}{Lj3BHaLw&d}-brb=chT}v>$byNZ5T=Aoi1NbQE^jM zRmb{{!t#+W9}6rFgolmLqtqT=+Og3c?FaMHHs}O{)95adBkP>0yS1ju^3h_>P{tH! zef~}JhD;lNy#KHB=hraMK|}EGnMTUTajP89n*wj4=0^g7$1EZQFD$R9xofSTJz!UUyL7971aThG^O@$Q!A-8iyQ*200#&4Y?iLG>6d2S+p0(4Q( zf6b?_4Nu5LrRV(m=FH#Cf?&4hwC&EBxqEUlb!$$kmkrgKD`&Uzoe36HGWq2@1xb^< zVRVo@2-6heW01=EJL}0-XtV6DA4d_p6Yj@X}8w_B+fh!UAwv7lc)>t z^_4Z0`G86tswqBmNlhYAbBWnlQ8W()yrI%4)a|UO*i>bFBZa%M%47<^yP>SCL845D z`b{-eRW+LoCB;Q=tb<45imbdT;(Pju=De8^3A08k;?6;xA-n)o3Vf5z3#>6(xVD`GwZ7F3w|@Qm*R{AE@Ls$p%dh-e{vnqF zAiJp^msp}?st$a&QJ+FlA%;ETP2g|Y4^*~T5HKc&AhQj8aPeT*pxtiyRp0AHR$r{^ zmcg$)`<2Q-WWnvrYnZO@SDQC&9qe+{)|D)~Z_7z`^4a*a@)zrB9bJQ4H*Nk^AJf$= zzdhC!sKiBs?}@~G)}q&S@n2c&cHDLG2M6j-Zn2rU!zGhV$oIh6>wmX z!GRHO50C`(pqJ!xKzb^A)Baye%F9cn{>(S)JL~bkUkYbnmYh~X2>ejeke!qXXylPq zH(6#XOL4>(SlD3HBRGZ-mvzOwq!>Cs=H(L1OVV9~althg&wP|@P-KlvV~sPExc{@##=+lK$*EJ9Ii5#1(Km# zH?F>IA#@4K^x_R88$P_#R_(Jm92Q@-ZRdw^U@@&hygt&j{37%RA_5uE-e|f=9RuTO zkg*Gb-_)X{TAEr;2AZ2UFrED3J2M}fnvyQdd`w#0+??4D@D6dGFL7NhWq8&xXk-Nf zC&H{aUtTxVq?p^HgEMMAnZ&!t*!rN&JwgzpT^4m9WuH4!i z7_7`|LHmd1r@=wv zNPH6tYkcMnCJZDOnMrelC?pq`7%la-+TwxNb<4`28d!vP*|OJl1I4wrdW*577!ff{ zDk(KqRLQ-U^~zNh#?lh$dUXgTmW?dmF}$DwKtUy5v&CZe(q6-Y;T_9ImL>Q=8eF|$ zb-YV*yQQu;b_cmqLHI+FPQd`J5y{Qkylf)f1_DXpZ-^Dp7?go&Z=^I@#F7!qn!io{ z<)f$ndUk>#4eQsx^~B|{zrz15Pq!()%aixtue^}?E;N8C_T3lo@ynmU01h(=RM^~+ zim$&yH=C9pM2V_Y-HjQrKdLedYpJJAG9Y(@N78-V#BN@b(XF|enO1c$U576m{;~3C z2b++;pnNdMVKx)N;L)S0efyN>-=^tRi3X9+S0k*Hz|SLH{4C`NrZ$u&q>V=1^;%4b z<(wS?vmg%$C^2<>gTVub0^niI`Ue(V5-tv8CZr9p{-ueuh~@Y)FuZU+ZFshdoW9(Q zG79bzTo?FDXlH3Yz=nc-Y>`@?HwszcEJ!(kTsK~e5mSZypkc5?+F~>={6OFfLjIgk zpC{cg4-6)I5k3q;|tBg=QWW%qgV9 zO~T=gJQ0aHPvQ$4-=?Ir$`jp=m{AkP7)AUdJ(7)($!J2OR&+Zfvmp;~k{!CW?*tOD zDwK_t+540inOz?gDKcW=|;a`v_I#Z3^r z+5&+#kP949mgbI3IGT#t*NU4Q*eXklo21>so}U>MH<9iT-{o}9LO=JN#J%ZhBXlFW zp?c#x#if~~*ow~_y?PAe-Gk8%Um1o5_Y@kidKs{ik$nxM2{KCz)Tlc~L!QaRI|H95 z#w@2;e?!byXI^D)XzLmFhy8074~zgGcWLjsQ2Z22{_pCxf3~gu^aC5@$+2W|SsSg4 zi+dI}0e!c%zrPimriHt&NscK$%KWE)_iq13zKlW%+Xm5`N>G~svMItgXy!{lbrHq_ z#srGe1??4996zbw>tRJ8Wh$0zix;{IQWyf*3jnx4#HSqMG1LZK2l5*Q%Dea(OP4W; zeu2W>OU%H8-Iy}kX{_R4(rzNP{bZ}5JYk|tvNx^8szR017lOyJwtn9+`OYsm$>8cj%1mNGSULQrpOs9zOMCK9jfjP?}H zBE5WWPCLMTP%dT4mj+plFR$btpS6n@8u;Q1`9O@dhC zp;3+i)t8W*G&=|fA1<`;_MUZ=>w3lXLeJ6^6i#{Bbvrw$vOCgEU>O92Wbf9>c53AI z8As3s#8qTZ*^I_T>@!i#%)15klsd(CIk{jNPawQ(f!(B}O!n+o++-r#XcM@Dno3BS z5{;)!i-^7ax)-7DYZ2iD-G=6~Gqb~}LF(ZLMTAA`QW~!0kT~loak#8QyARF~ohzyN zh}X<0Tej45RDuBkFu&?@S`_?WvzusUBhJ~ZSh3KE+JCm+g{?vLjwaJ)kdHmsV?nYp z)oAs>cm!Vnju8_wDoqjhgyDAAZn7HgzKiyU?@DK;({eIx9b@4!<;|?bUHWI=$RtQ$BXvH$^d-{_ejDLr*5NO*og5wZq}pnvHF6K$Yqi7yO=jKO3Hjm?8<-e7>FKjYL z9N({L@tQNI0pvHSjIzYbiNwpNPw%l<_9$;FD%yB*Q9>>)D=|o{KWTMYI~oinu9jL? zv|?~Ei*7Po%ndE}&F|Cb!ViFjUImGVyv4Sleq63bfq5PgQowNiXI2M6;xnK5`PH3I zU8Sk2^4ba`7QCuTdqt(wYPSvxZoy)&QV!0l`kilB^HHv8kOStH-_N3UYBnJcT910kY^B2Qz6lWr``g@o(iUEwnp+h6z`Ba zFe&{C(fO8MY1T+UGYZC<4;1O5x)m#8K-FxxiTaVX-whnj*oqZ(Eq{|Gdwx&X7GZf@ zfAEUt<|__{nw`$(v%gCuQZq)#d&-MTt(D)W=9A0R`#@>bVlOSdTYXHk@>{0Q9|5Iu z^PvOl-B!Qf>TYU&+uNGI_P)F!BNdmrtZ2DBIj<5DLqxYqw@){Qc7b71ghz=)0Hh3p z?M(|vB?*B*oAsS!j3;j%1Tej|5i=%0Ha!kYO^wCzI{-$L5RabXy>J~7e?MIbY=0A>PzWylEZy|4U#CsON z)JFg_X1*W|Z!}k`Ibpb_%u;*_W32Gr!lJ^G@qpBO#loenR<+B7OA| zOVsf*dz;Uk`RVfI(tB8O@g-jz7%V8SC@qquC8-*3&B8!oiMy@V(_OKADOx zvlpd4O2yD{DUt12dF?H-9+da_ z)NFp^|5zvD-@(gA-!fMP-4U=-zxNiaB(PGIS+&x11&>3&Q;l)#(79=J7=l>&4A8)n z@(H{*1OsA0NhL|aK9UYep;Ke==gy2v6XRzz1Tbj4D0)wR{KtKx%1>DPXy4Zkc4y<`sqy$Avh19lmQQ5j<8=9W{PgrR2`4lU1kXq^P!YUJtKs)T z2&jPo>h5ifGS96vJA^{gHU zbld~N4-OAfGo|a9owJ7$db1EdNb{pi;~cow?;E1j7amDn+8EY40yXDpeN1rAKpCNg=c@|a1UK#RS?86(a)jlv@g=TednYb z+?4AQp<5=KmY`QHkPitz8s!vz&S>cwG$D_gdZ;hpQ;9f5Bmsts7M&vLP+pZBDSuTd z5y;Uvx`?IF?g&#wcf7K2b8YSBg|ASj%uT(Nq#&+o?j0YRShHq=oa1Rt5j5guwahMV z^UW{sjPXLajkXv$2h6nwurc1*Jjn5XRI+|_XOF!3wcF#HA3nQ=N*zY2X$UD)aD?p5 zxfaN;-rl$6VTH|J5ky&E%a#=`zvpjT5!p9iV)m*C_RHK$qv66!fpS*i>0@{0IzGEL zlRm8m_MOGh3Lp!q;A7!X4MDIM3@SFlHQ!AA%e^^CE#29jr(@H=SVWXnU`7RJbcU)` z3i_=Fho*-PTKz%t)4CCTFpakDJa)se%#~S{TXT4I|LT#?jo>rf%%f$Zi*?vCtIT0X{i3?0! zFj9ypL z>HT@-e3P?5TB|{u0|zRzao%%cod%ZPw|R@=pFJ})`l`+2M&v8oirDg*^J7LGi1q-X zOyo!MME%0M2A`1C(f;HV0X+|YL6AqkkPZldQX;~Htdw|(xD+yAT5aqM2%^edO{v`0 zy1}LiG;%r(>dJ1AYy}17Ro1$O#JMl0(Q><@~Kpf=GnoCSwuL zOe)5`r@ZGI8*FMadC_7ez4#)*^sB8qF{dn>f&qCA2ji!a3JXT7r!=Kf05da^>?NfOadB(Vy(HknA!%B*^ zgzFvW$ttpcxT9`&G(j*V4Mk>3*60H{qPM?hmbsk1DN3GsB z3mj_J*9&7s3I4f5ME~Tq%ZwEanOJx(4T8DC5|rJ4vn%p*mc~ZPQthxTu$rr}S6pPx zY@7GWeAGX5&r+BhJFe{XyZzp^4RFh;Y^d}ry|Y(o(eF>dAKeeH#Ue>=1&;5Du zeYR2-Gr${iR!5w#6WCtXb@6}x=Ldox_&_l8GPVDObv&oOth~l5E*ZJ&u91A!Po2v- zxvCjdd$wFPgAQBDyzM9HO7h(!dwB&%G@JT$t~wF%8UbdrH13I zr~=jO?@42M4WL$x)m1g+#{7K{dm&$^)&5pdsq$9#8Ets3UJR=I`76XEa`rr5m1e5K zxEhR)Mefh#z$(-YAH(%o8WFL8HuL2f9V2`VVNruHx1p)hxl% zLX(1}Hq{bd<_%);3{UZ6vkfO{{FJ8C$(>t*HwgY^xae{qgO-t}6*>a_ zk!%hx_cmfDvy%*Cjo#(qW*U>?q)>?ZZ((RMH!74{(BVvnu0=9#9F_>-h@jAbC1Ws05ik=F{?Da5%dpcQ!>+-V{fKv<)+7&mY9q2>YOsT6L`=dlc>F=3UhDQH;UtyxXTEj{e*|bF zO#+)ObxNckIo6;KvT#Gqa1(s{&}QLq)9|M`@HD5r=+9KvZVZoAi{I!6c|tk|isGVp zXbGlog^=i{rl+~vYM6r;C7*aGGdB4Mt2xfb(m&wvsIY#D^_%qFWw49W7$Kbqrj3{! z5Ma!t>;}<>Cmi&IAoW0yLO7w(5VgcCZH!FS?F$*T3$>4A$=PUsUF(2xX4N${&D~hI zt%waqre=WUOeKYHxtwksf@YEH7?mm4>JUKrH!XFxuG!kC=nf>=v&pgVMSdRn10hXO zv*BN?KY49{EN`>h0M2^U2h=0gg_fr!VB|3}tuDDF;PKQ%4v*^%CN4&?*FATcA@r0-GsziYg+nq+XCFp4fFI zIzm~=v-+h(KjhWR4a%N>M*^ckZoq7>K$i;?D2ibqclR03k-}pT75Pd8Y@vw>F|=kr zcO?K}(_+cOuq^trG7SeLAY6+1hg=O$z+a*q(j1p-QLRXjcRQ9sKim@x769RpR63an z9}J}r!8iKb>;&fdbn-g+&GWyUH5*#3YkY=OW`uAnXBUs-Y0OHAP4SC z`2`!(90<3Y|ksNuvL#j^OL>Doc`PbWmvmS2D6ykU4e`w+_@*jmgtb6fvIf$Fb+iE zCb_2~08>Ph2zVjYDV+N;h@2*;f~3vBDI z@9+LT{&%m~y?eKU$&F~WbgmAQpjCvkTR|nDWrjZT@tZh^Qy9+qh-yn=2>@lI2GD4* z<{eX~^#*|)@|T@5$5MOHOAy=dCBF}t{_iO-U?V7N4&x8(7d-Mc#6LVjqotErXDAmN z=m_XMH8Z()z{3bMRSPAV!5EUfOAkd)rm&Dd(>FdPg+OK(iwTqmD*F)z=O}Q>h!;vK z`=+0Xk5Ao!EH4c9*W8asD-*9fArq5#7Rm%t%q2e>i6ALFW{cJrDGl~vLItXm zl6E7d9Z9EUIvmbSVq{aiAbi0QgP6T{8r7y)kT7I@%or$Q=-wbJ@MH84;tDu}e(ZT< zU=QI7kGP?5Bo~rKv37Q^wGCK-i8iaU1A9of!rZ0Gf30N`Smk(BkbPq*D=96|eXej> z2jxrXSXTHs+Gi8kLxysMf8|bwJ5zSeeG%mfLURT_Zx|#XNojAz3m8_5g$eh{AsP2J9l8vGjP=B-# z-|~#mXbSS<<|nZZ?*P!;YP#2W|E#YlE_faxp0s7P@#po(>Ga$9&H9QG{bQjkuMGRV zo?`oUrY~gmXbvVxRjWvv~)-nDDi ztnGcYy1cx)P(D`EGT?3ZuIaA%LqTzc{7ZlvEb#i+v`#zd`R@5iPVB4Caao^Nl8VX{Btl-Pe0dy2IB)&}lu7!RlU3 zyqaj=zsj$oeY>!Ut-l$!14KKT{u!FKA)OX;=- zgQYOK!l^e%~q$Jdd*rT0FYO|C3;n~sS-MlYbRl|S|Umiqp5sbsDyDH$y& zVA6fzom;&=>W@e9lm6y7Rt{>|X{u58@ z43(~i*7ni%)&^Ilft8krEo)ZcEN1TxN621 zrv4W7dyDE@+T(Py(&8e2pEo$Po_q_X&wW%jl$SvT10_sZxk3J@UJrY; zAD-G7E;3b_YCMh5)w=E2#lPL%G~+TuVFm7CFyI~)h01N(Jqw)9c(f3AD_{kofz?Az zoC&68=W7z${&v`sBJkkpB^nLd3?MN+tkre{TdTo)fTbn!2*PcHSldTuI~m2b^YzQk zPBr@Cm%1z~ErFrolS`L0Hg)lE2-45Y6M+6u9y+jAOCcb9|2!J zD)(Re_IHFTLLVEy^X;C$EavR)3*VA<)CHVdK3;8CVsB#?Ew8Jy8a5c}0)bt1%CDoS zhoDt|z;mm04V)um2GA7#s8~=e3jk-$f4YI^0xdz^i){^V_|`k;mFTXCH{ zxb52G*M&<%C*J?z%bk6S)4tU1+OnCKhn*}8HsG}Wx)Z@Z7fuhoQ~Av$O^wFFWTCmW z?Ep@H)^2xh*^(`nz}*UA#Gwe7o}yr+!E~XJSb)?6oWkk}ZUa8tx2)Z_`Vj!v1$03r!jDUbdqmq z{Ql|gOqm=`X42h(v%CKF+P`-FOBCb*nX*QEucqoK+K{-$m7O zB^RY82qCWd(#kEJ$|SgAplOtAL%|eh%X*%2Do}`O1=RX57w1aY6liT?{N@v1!jYSz zF+D^aEvpiNfHiVDkB9f1Oatn2`1$e@%3lV zzUvgT+$deF#Hly{<-UI!y!6?F@%2*rlyVxmwx%YOniPwtl0$&15ci)%-PI^)eoxBJ z7xfx2MG^R&M$8FS=(IF}Vnf^l@C(v8OsVarjSGr#eN%Bq+4xp4f}Ie3-t3@YS^(>h z-{P21qg6jSdpw9X`KJ6;=;ef!C7UeU&(}U;oC--(Pq=sVLOyM-_!6NL(z`&1M+1RT z{;3!QIUcC3^~7F?zcBpZhK-4(M0VL>ktnDjs-24~4)dRuCN^$(a2RLDJhin0{03F3 z1w!jHt$d`bdgJohq8`h9%k^=9H_xw3e-dEbh;#ie1bq5~{{sJ{eFc)O`u7387fiaT&*VtNR7m->dHH zahJ=~{X!hSPTeoTm1%Xq6x!G6qwDwVyXwHDR~|i@+H>WR{f7>^J6hY14(~a*=gLcu z?%D0$dE9;EZTmWp9^LESd*z|a-AfN0Ji6z=fkW;qt~@llXV=lz%Z?tsqNlBGuX?<7 z*P+XGM_~oqgXqqybO(@A?Mi$$58y&2ZMOYV$vTiVf z3)n)|gM~Q`zIqW53=?dCEe3k@ARA&!*)Utima`RXC0oT-vo(OuUdz_8_3R?H0XQ)! zwvlaO7qiW53){*rVcXbtwu4>DcCuY;H`@cF_C9tQ+s{UUwQ+!54i@$hyMi5NSF$7Q zC|n)i#;#_^*l~6ZdpmmvyOv$Y-pSJJdUgZ5k-dxE#BOHqX19P{elL3;dq4XC`yl%e z`!Kr|%ngw`xsA13Dh)5+ogLe89L7$(vv+4Z%*@GqVd$CB&h+g}cVENq zjl;|wGgE9Qwqp!4Gv|ewnVH^SQg=`9-Fu(EZT(d$L93-wRY~VL**V2I)j7>M-8sWK z(>cpI+d0QM*E!EQ-?_lK(7DLD7{6$BiF2uQnSs;qt z@4Ur%tMfMJ?an)#cRKHK-tD}{d9U+6=l#wHoDVu5az5;Q#QCW6G3VpXC!9|@pK?C! ze8%~#^Ev19&KI07I$vVL%=wD*Rp)EY*PU-T-*mo(|2_0~obNi{bH0y*q8~axa(?Xm z#QCZ7Gw0{dFPvXGzjA)<{KomM^E>DF&L5mVI)8Hh?EJ;~tMfPK@6JD*e>(qi{_Xrn z93~tggcKx{sEN90h^AyaSw4%aW8RiaUXGCaX)c?@c{8a@gVVF@euJ)@i6gl@d)uq@hI_V zfu8~pj}ea*j}wmSIs?cyEco#I{M-Qqpsz2bf1{o(`SgW^Nt z!{Q_2qvB)YZl50np*50(#+ z50wv-50{USkCcy+kCt#GTbzC1g` zLyqM{1~Qb9+%IF9$W&%>Q*Oxvaw<=fPm@oV&ydfQ&*I;#lh2jUlh2ngkS~-kk}sAo zkuQ}mlP{OAkgt@llCPGpk*}4nldqR2%Twg3@-%t6JVTx-&yr`$bL6@5JbAvnKwc;> zk{8Q2$V=p<@-m5^Hk6mkE98~(&GIUFwY)}NE3cE+%eTn4%D2h4%Xi3k%6G|k%lF9l z%J<3l%MZv8$`8p8%a6#9%8$v9%TLHp%1_Bp%g@Nq%FoHq%P+_;$}h<;BZl!6`BnKf z`E~gX`AzvP`EB_f`Ca_F@%QBq_V(-Cw7I+Bi}qv?ip4Bd#1r5n>t=%#ctx;fo~Zb`SIThndmwsbpk>GpI7 zI*wMUOKY^7_RwBBo=%_>>5g!E9jNCJQ%T}{`}wR9a_Pj8{O(%b0m^bUF_y^G#W@1gh7`{@1j0s0_) zh(1gop^wtX=;QPW`XqgdK24vY&(i1U^YjJ!B7KRzO#ee)p|8@{=9YO1aps;OG4tvYH>&8r2qh-0l~wW4;YoobglTpgiqppH~W zsiV~m)iLTu>R5GSbrW?{bu)EybqjS%bt`pibsKeCbvxy%+p9aMmSJNw`2G3v4Eaq98v3F?XJN$Sb!De9@pQ$5vJ1Etlv8mf`<)jqYM#%iJh z6{<+>SFuV|sxq~yw$uSNRVS&Zsi&)FsAsBYsb{O_sOPHZspqQ~s28disTZr4sF$jj zsh6u)s8_02saLDlsMo63sn@HM)hX&!b(%U|ouSTDXQ{K*IqF<>o;qJ$pe|Gwsf*Pc z)FtXtb(wmjdXu_bU7@a2Z&p{StJO8?T6LYe{;-DEPyJ0loi2KVf$IeWH_3Ww3~q}V zeLwDx^&G<(W~Ubn$6A8w;4jum;`YLD1Csl)B%SCW?Rb71jlHS66xOo43XvSo zc>yHHVSi)GPtdu@$6uuIH`Z-_qFyeu%ZvLXKgC;Qv35t9?uFvBjd2}@Q>kd-Aog;Fj{V^%byp8%bq{5&9ezkb z`=#=pns&3O{Cu;{WKrI47Rf8NE!zt6iY=?s^F`a>jK8zWD4Uw!&TUu7BP~v2-^?OA zzU%&YtOqOqN7fMs@z8`7&Ih}!CyVk?Ejuxz%?qp^M0XFO*YZI_`N|77Z2MURkoH0^ z9$}yfj=gL+>h!z`7N?tx!Z3wcfd3#C z_jEtg5R3chCnkN4Af9Nf2(wh$J#<3HQ(n4@1@4c$c<2YiGIJbmp|laCp7sJfbc{#p zHGBSg7Gv3I>fr;odb~PO-Vd6+ai&xBXhgj*KtG^9+%VE84AkMr#EUm?y!r)WxMbNU%Bs z)_AL}83DPl-w((BJirzPaOhz^$5V(H5(*DBFhnP^WYp?qLwv+2j8h2+(jN~nrd(+O zyEC{pgS%%Cy~}0Wy$sEzQRoNw#95k#LA~$wdfre|-`mi0(5QWc8LY}|SEx>b!x(MP z2!=WscsbX?F4tqB9{B0}jM~H+XcS}(VC=4PGh??8#jVFII(FB?nCGS*a6Mz!4-l-t zOLM`oiy=Z^$73!%aaS2nkTXFb1m7wLUG&Rvct9;wXkjpgcsxKW@nE7SJ%mz5ezXWu zr*GJ9DM zi?D48tbuG&Vkn*^%OCrJb_aL~cQtRUZ-cS1UOqJ&snkG5jPA*Qd@EY?FG$X-wF$f$1ZiFaBPMsbrX#pC>Rp6(P35x;9y} z$!?qEd3!Adoys+wV3QN)4TT-bXB%#HJK612bBT#%v(9)QgZsg2#9duHn57J31&#>6 zq;Z?dbyMNZS%DC~)G!PdELDy(DnapiJhOpW5#!JsbS#-gOt3^YXqo2}nsvIA!@#%? zF>EX=KXnbKoo81wk}L?OHEaJhOky@+*n#z!8SS$K+-ss?cwvE@ELlODosTbPl45M}A&jE09AW@$x$w~DYrClO4@DxK;m zsZ@|``DuTI5el#aW6V>AKnbQ3hSWmH1B7E29&yT(2craAmrr<>fMQsFyh|t3B-IlP zeKdtYG&Rc^WE|idWf((FVz{>bC{uklYUleg8)7gx;Ia>3|IA2y$<~aV>&GynHJp0h zOhCb;hl_6<1c*&to=js{QAq;RB3FH1#jy_hQ&%6rUJwkStI>WK*O8=nS%q{{ zykuk$R7Qz`U@x#g(lN-) z6g{xSz)v{7fJz`^_Bm7nm|&mlkBD(&pkWlV^^*fOjcOJvB=AoLI^yVs9sniAvs$g^ zh|>sx1QgixF$d5fh99%odY_Gg=8ObuAX(=K3OMjvyv6h`pi9)7qj*h~XZU=o?y60?4MXwbX3*4w48{)n+R(!xMiI6<&J_J9@sl|{30?egE}}5T#8i5J=8ad( zARnaBs=Rqi6#lp}WD`>du@<~uJx5FWK*V!zwzwB^PO+lfprK_ny96j@a06+WAYe16 z52QNalTyw`^*ObG;n&!x(lFy4X4vA-;hHJ4xbBTGk4G9KVurP|uJzc3&7(25n(G?A zn;&Kg*m3M9?iTElaSfjtQ>SGTtSx+>0xno!ymb@nGPLn+^`LDCt5cgLE>JX`GrZzc z+v+hgdTa~wYsRS+_n|hd03uvNZ3TQNQ>b23i!~Olh;e;$m?eI{V z*G&Sg8n7>4kSQE+^koUT>@&hXg5AKgwPQGG2o=}gm@5bz^9QLiUR`rN9NOL6AhTUd z@EYsknD@ukP7cicY|V)I9OiSfAO{G^_~T?Q&$V-{pzOpdDEqmJ`px8O=fzkF6>Z_Y ziV_^WfvU}gm@0CtN-jE)&zCY2?iS)^d9h-i6!l|%)NB?Ko{ofMgCCP)_<=P%(<818 zA@@SWKmPx0>oyC|TPg_5Fwf}f zl4JcMtc0=vbLNWzQOp7OGLOl!9kWyKC?sQ4Tm-b14`t3+#vD%2Vp);-Am#fY3-Qlv z)*-kyvmSuxt`yaS;GK(Ku{GnB@3!Sfh;bm3hW>h58~Q^WlC*~SY=}VO_`*Qgo)c`r z%tat;h;apqFafZ4?awfzyO_bD!Nlk20F)vZNDgL0nQg*ooZl`jhf$)2u@~u`Lj-SF z4W_W%T-fYp6Yo^HZ4j7pVZfFE8_H}$HVxSH^;T_|`KcE-M~EM1=xMA*`1aE!ELeT0vZ3nLpkDMA(XoTgDYL3ctJZg3i~Qxvc>3ezMCQ+pgWf*C!8+D?#d_u!dENfXwei`D5(hFXkS;VGQJBJ+V&jp|&JC2(CAUJ3j#>;-N9v(DW6_$h*xZuO>;NWR)v(6XvBt*Pj*K=}(Q$NkvsIw*! z?34^CE8!2xI{^b(h_AQ+APsli4K%#TB4H{%>+jbzn6dRX36LnWF{rFQibTY zX2gPlY*yHKL)*ksVei5ysR3_bUp5K0S5U+c@b_n742(^c9gsRdP)7?}e|}J~ql7xZ z3GPs{wL3p!@+{v~k`c~pxDVJK`g*x!V|UNYwzOEXauc9YFc{$U2iCp?_z=uscTFMa z?FT#Y456LEo_3*6aK_BOGny{BaDCDcM_ka|==GuOj%5b$rToE?CHP=C*H3t9F2fuv z+0#&)<~6|Yk8t&}5N#V#%bK$o0j-I*dtghl=?~)vZ_6b?B-k?$->|Z9-g+D^w-j4} zd|G9jU-yR-&sJ}&gBXK|I-uc4SugLX&9?oAtmfC%g7YAw1f=W<-^njUKyW(V%TGx7NbZy!qi0=A(@-N8HRmlPP13HQQdYWk1-4u z9U*=NDIBc0V;}ZSJgwQ2w?)*Dxt04CO~YU-9%Yf0VN}NhVhjefiVN>|oOC8Wf>b7i z0ZmsSx~&;OaGy3-j61S@XG8%U{pP$~mMATWe5x)S#8!r`O?=j4^LEQDrd&HGSv@Z0 zc=p{Eat;(uoFed56yD^KNOjF-Hz$0ujwshg%OInrkvG5>RoEl-w1H=afk+{WIkt|i z91Q~@41w=YjPZyy1QS??a6~OYaTqQjHo=3$rk=wC%fFB98DFMh4$`7AT7X;z7rFr5 zn&q^RK&^#&mVtHf`07EPc2_Jt8%HcrWq6CTvB1*C!8Qem#LNXDLWRao$C9Z9VK{)} zfB=MV&LMdjp@x-h47+13Z{wNB(RMLwMs})VZ44cs^t#8v7%OqfU9E6eOK!Kq?UvlN z3U{sK?yhimm)t!S?w*pnx5C|9a*wZYk1x3=RJbRU+!HI@6J>x&754ase`#eK2OHl# z9Vrt$J{(aL*!QzLR~$ddCc#3^PvEffhQ4TNY(zPuhB~kzwIbN=SQ>GXHVuT0KClS3 zaoUJ*LkpJgY5}?hSS!Hpnw3EzW5r?SmmN?ze0Lps1!1&#V*uZI(d zHUL(`292g&%y`0QM*XjBvjZ z{N%_*4{NV!0N>9rELM_+wIA0k#;7Q$B7(1Y5xJ?IY~%LN&1i+5o-D(NSf>XY~lq0L;7&jwiecT*iqv z_3AlM+ixxtH4!dG;2OKiobhO}?gLy0)CyFll{uNOn}Zfi7@Kx$oZ?;#pP{&zh?`Rj zjm~TvE^jv31O@z{7j8AncdN&G9igF7Bi1$`(6WFpGq$mzA^vIHz8d3Ajf4lI8M9l* zU!54KIK-T~$!_{;Jx86~Vlb+;W{G-&D_}6s+X-fMeo==Q zH}SwR4+oA4)MX*VV>3O+4P0Q;m?cwGh=ZUQ{Fu*5P%1wi1;?Oz!eKsyy-eEVXT+DN zI=H8!#{+wSQv-p`5DA;{HtE`A%_h5TvWHj%I7ZNNi4(XuvpC>F&MDPQGQyQ89ispY z)2NmBlYDe$u-hoO^VoUunW0(DS(!}yNFmacjPTT&v3Wy|8le|k%1Egsz@4{df`~Wb z!5dmZEBO6Z!jr+qi!9^_M$iWI60(KwdBoEUcPq6|wlPxx& z5fNz_WY0et){`x$ZJy00#m6#7r8oh|!P;^TDt705&MFROa*|!Lr4r{y)5(m3-O?P# z&gC-p_-`?%Or(U}wuPJlHDH!*A#T+|tIQo18N8by(4A-GcW}yfWAo1dSqBvIc8wM< zk*}kY%p-4kZ5Z^T;?n9*yG z1o>85CP5*X0tM_Cko#O#z-X2^!!O1Jt)K$?;UEmu!roxc|1LK#?ry2k3&HA3tjv(U;dX0&`XX>hKotymAfD4PiLCM#DpSUXkHR$&e2md)UckXFVh zBwXq;eB4;F+NNnpo;0?w)z=nVO=X+sOH6!DZFBO&Z&TJPX4^)t&#Vyi1=OV-1%qKK zVZNF|Oy>y8&Ng8_8qRiXRmFL^5ihj39qUaTml<}UF_|!R3^BJ&02ghSY&SS7VBSoAto zTOMD_!V^1y9*04b{~eOGEetaAu>oshoQ^QrEvRkr9sd-`x(^j>67vlk1tbQbI0DMW z41geRpu6mtC<7rCY;-VtV3lH`;S{f72-HOknp-&6Gj?PBB#yxNLBpi*!wx&_e*q#j B#kc?f literal 0 HcmV?d00001 diff --git a/packages/omi-low-code/src/assets/t.woff b/packages/omi-low-code/src/assets/t.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e9fcbb48868be7244278a5a596df2127d839a44 GIT binary patch literal 107892 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%0Dcws8sth8jWR>`5V?}Kv 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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ⅈ{}M>AiW(nYI*ie@X)TOkFr z-NsSG*xj^k%L}ZaYIfZk{?T2-mMX-Q=IY3>C)FS?uxMG?h$cxsE)^}J>R2Hv-c&wD z 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 literal 0 HcmV?d00001 diff --git a/packages/omi-low-code/src/assets/tdesign.svg b/packages/omi-low-code/src/assets/tdesign.svg new file mode 100644 index 0000000000..325e4b0dcc --- /dev/null +++ b/packages/omi-low-code/src/assets/tdesign.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/omi-low-code/src/components/admin-layout.tsx b/packages/omi-low-code/src/components/admin-layout.tsx new file mode 100644 index 0000000000..0c550100bc --- /dev/null +++ b/packages/omi-low-code/src/components/admin-layout.tsx @@ -0,0 +1,70 @@ +import { Component, tag, classNames, VNode } from 'omi' +import './sidebar.tsx' +import { navbarItems, activeMenuItem } from '../store.ts' +import { sidebarItems, activeSidebarItem, isSidebarOpen } from '../store.ts' +import { CustomizeButton } from './customize-button.tsx' +import './navbar.tsx' + +/* Because the menu needs to update user avatars, a separate component is packaged for local updates */ +@tag('sidebar-wrpapper') +export class SidebarWrapper extends Component { + render() { + return ( + (activeSidebarItem.value = evt.detail.item.value)} + items={sidebarItems.value} + active={activeSidebarItem.value} + isOpen={isSidebarOpen.value} + onInstalled={window.refreshDark} + > + ) + } +} + +export function AdminLayout(props: { current?: string; children?: VNode | VNode[] }) { + return ( +
+
+ +
+
+
+
+ + + +
+
+
{props.children}
+
+ + +
+ ) +} diff --git a/packages/omi-low-code/src/components/appear.tsx b/packages/omi-low-code/src/components/appear.tsx new file mode 100644 index 0000000000..070ffd0e6d --- /dev/null +++ b/packages/omi-low-code/src/components/appear.tsx @@ -0,0 +1,28 @@ +import { tag, Component, VNode } from 'omi' + +@tag('o-appear') +export class Appear extends Component { + static css = ':host {display: block;}' + + isLightDOM = true + + ready() { + const arr: string[] = [] + this.classList.forEach((item) => { + arr.push(item) + }) + + setTimeout(() => { + this.classList.add('transition-all', 'duration-300', 'ease-in') + arr.forEach((item) => { + this.classList.add(item) + this.classList.remove(item) + }) + window.refreshDark() + }, 10) + } + + render(props: { children: VNode }) { + return props.children + } +} diff --git a/packages/omi-low-code/src/components/component-layout.tsx b/packages/omi-low-code/src/components/component-layout.tsx new file mode 100644 index 0000000000..31ec644a38 --- /dev/null +++ b/packages/omi-low-code/src/components/component-layout.tsx @@ -0,0 +1,172 @@ +import { Component, VNode, classNames, tag } from 'omi' +import './navbar.tsx' +import { navbarItems, activeMenuItem } from '../store.ts' +import { CustomizeButton } from './customize-button.tsx' +import tdesignLogo from '../assets/tdesign.svg?raw' + +/* Because the menu needs to update user avatars, a separate component is packaged for local updates */ +@tag('navbar-wrpapper') +class NavbarWrapper extends Component { + render() { + return ( + + ) + } +} + +export function ComponentLayout(props: { hideFooter?: boolean; current?: string; children?: VNode | VNode[] }) { + return ( +
+
+
+
+ +
+ +
+ +
+
+
+ +
+
+ + +
+
导航
+ + +
+ +
+
输入
+ + +
+
+
{props.children}
+
+ + {!props.hideFooter && ( +
+
+
+

友情链接1

+ +
+
+

友情链接2

+ +
+
+

友情链接3

+ +
+
+

友情链接4

+ +
+
+
+ )} + + + + {!props.hideFooter && ( +
+
+

© 2024 Tencent OMI. All rights reserved.

+
+
+ )} +
+ ) +} diff --git a/packages/omi-low-code/src/components/customize-button.tsx b/packages/omi-low-code/src/components/customize-button.tsx new file mode 100644 index 0000000000..c07e185f1f --- /dev/null +++ b/packages/omi-low-code/src/components/customize-button.tsx @@ -0,0 +1,23 @@ +import { showCustomize } from './customize.tsx' + +export function CustomizeButton() { + return ( +
+ +
+ ) +} diff --git a/packages/omi-low-code/src/components/customize.tsx b/packages/omi-low-code/src/components/customize.tsx new file mode 100644 index 0000000000..add536894f --- /dev/null +++ b/packages/omi-low-code/src/components/customize.tsx @@ -0,0 +1,248 @@ +import { render, tag, Component, bind, classNames } from 'omi' +import { isDark } from '../store' + +declare global { + interface Window { + setDarkMode(): void + setLightMode(): void + refreshDark(): void + } +} + +let currentTheme = '' + +@tag('o-customize') +class Customize extends Component { + @bind + onColorClick(evt: MouseEvent) { + const target = evt.currentTarget as HTMLElement + this.state.selectedColor = target.dataset.color || '' + currentTheme = this.state.selectedColor + this.update() + target.dataset.color && setPrimary(target.dataset.color.replace(/hsl\(|\)/g, '')) + } + + colors = [ + { color: 'hsl(219 100% 43%)', name: 'T-Blue' }, + { color: 'hsl(220, 50%, 50%)', name: 'Indigo' }, + { color: 'hsl(200, 50%, 50%)', name: 'Sea' }, + { color: 'hsl(221.2 83.2% 53.3%)', name: 'Blue' }, + { color: 'hsl(149 93% 39%)', name: 'Jade' }, + { color: 'hsl(160, 50%, 50%)', name: 'Teal' }, + { color: 'hsl(120, 50%, 50%)', name: 'Cyan' }, + { color: 'hsl(100, 50%, 50%)', name: 'Mint' }, + { color: 'hsl(80, 50%, 50%)', name: 'Emerald' }, + { color: 'hsl(142.1 76.2% 36.3%)', name: 'Green' }, + { color: 'hsl(180, 50%, 50%)', name: 'Azure' }, + { color: 'hsl(190, 35%, 55%)', name: 'Steel' }, + { color: 'hsl(210, 30%, 60%)', name: 'Silver' }, + { color: 'hsl(230, 25%, 65%)', name: 'Lavender' }, + { color: 'hsl(250, 20%, 70%)', name: 'Lilac' }, + { color: 'hsl(25 5.3% 44.7%)', name: 'Stone' }, + { color: 'hsl(220 8.9% 46.1%)', name: 'Gray' }, + { color: 'hsl(0 0% 45.1%)', name: 'Neutral' }, + { color: 'hsl(240 5.9% 10%)', name: 'Black' }, + { color: 'hsl(47.9 95.8% 53.1%)', name: 'Yellow' }, + { color: 'hsl(60, 50%, 50%)', name: 'Lime' }, + { color: 'hsl(30, 75%, 65%)', name: 'Gold' }, + { color: 'hsl(346.8 77.2% 49.8%)', name: 'Rose' }, + { color: 'hsl(0 72.2% 50.6%)', name: 'Red' }, + { color: 'hsl(24.6 95% 53.1%)', name: 'Orange' }, + { color: 'hsl(262.1 83.3% 57.8%)', name: 'Violet' }, + { color: 'hsl(260, 50%, 50%)', name: 'Purple' }, + { color: 'hsl(280, 50%, 50%)', name: 'Magenta' }, + { color: 'hsl(300, 50%, 50%)', name: 'Pink' }, + { color: 'hsl(320, 50%, 50%)', name: 'Ras' }, + { color: 'hsl(340, 50%, 50%)', name: 'Crimson' }, + { color: 'hsl(360, 50%, 50%)', name: 'Scarlet' }, + { color: 'hsl(380, 50%, 50%)', name: 'Coral' }, + ] + + state = { + selectedColor: currentTheme || this.colors[0].color, + } + + @bind + setDarkMode() { + isDark.value = true + } + + @bind + setLightMode() { + isDark.value = false + } + + render() { + return ( + + ) + } +} + +let dom: HTMLElement | null = null + +export function showCustomize(): void { + if (dom) return + dom = render( + , + document.body, + ) + requestAnimationFrame(() => { + dom!.classList.remove('opacity-0') + dom!.classList.remove('scale-0') + dom!.classList.add('opacity-100') + dom!.classList.add('scale-100') + document.addEventListener('mousedown', handleClickOutside) + // 后来出现的 dom 需要刷一遍黑夜白天模式加上 dark class + window.refreshDark() + }) +} + +export function hideCustomize(): void { + if (!dom) return + dom.classList.add('opacity-0') + dom.classList.add('scale-0') + dom.classList.remove('opacity-100') + dom.classList.remove('scale-100') + dom.addEventListener('transitionend', () => { + dom && dom.remove() + document.removeEventListener('mousedown', handleClickOutside) + dom = null + }) +} + +function handleClickOutside(event: MouseEvent): void { + if (!dom || dom.contains(event.target as Node)) return + hideCustomize() +} + +export const setPrimary = (color: string) => { + document.documentElement.style.setProperty('--primary', color) +} diff --git a/packages/omi-low-code/src/components/dark-switch.tsx b/packages/omi-low-code/src/components/dark-switch.tsx new file mode 100644 index 0000000000..475c8b37b8 --- /dev/null +++ b/packages/omi-low-code/src/components/dark-switch.tsx @@ -0,0 +1,89 @@ +import { tag, Component, bind, classNames } from 'omi' +import { isDark } from '../store' + +@tag('dark-switch') +export class DarkSwitch extends Component { + @bind + onLightClick() { + isDark.value = false + } + + @bind + onDarkClick() { + isDark.value = true + } + + render() { + return ( +
+
+ +
+ + + + + + + + + + + +
+
+ + + +
+
+ ) + } +} diff --git a/packages/omi-low-code/src/components/docs-sidebar.tsx b/packages/omi-low-code/src/components/docs-sidebar.tsx new file mode 100644 index 0000000000..a946404818 --- /dev/null +++ b/packages/omi-low-code/src/components/docs-sidebar.tsx @@ -0,0 +1,100 @@ +import { tag, Component, classNames, bind } from 'omi' + +type SidebarItem = { + text: string + href: string + target: string + name: string + path: string + value: string + type: string + img?: string + inner?: string + children: any[] + tag?: string + childrenHeight?: number + isOpen?: boolean + icon?: string +} + +type Props = { + items: SidebarItem[] + active: string + isOpen: boolean +} + +const theme = { + base: 'block w-full pl-3.5 before:pointer-events-none before:absolute before:-left-1 before:top-1/2 before:h-1.5 before:w-1.5 before:-translate-y-1/2 before:rounded-full', + unactive: + 'text-zinc-500 before:hidden before:bg-zinc-300 hover:text-zinc-600 hover:before:block dark:text-zinc-400 dark:before:bg-zinc-700 dark:hover:text-zinc-300', + active: 'font-semibold text-primary before:bg-primary brightness-125', +} + +@tag('o-docs-sidebar') +export class Sidebar extends Component { + static css = ` + :host { + display: block; + } + ` + + @bind + onClick(item: SidebarItem, evt: MouseEvent) { + this.state.active = item.value + this.update() + this.fire('change', { + item: item, + nativeEvent: evt, + }) + } + + static defaultProps = { + items: [], + active: '', + } + + state = { + active: '', + } + + install() { + this.state.active = this.props.active + } + + render() { + return ( + + ) + } +} diff --git a/packages/omi-low-code/src/components/fallback.tsx b/packages/omi-low-code/src/components/fallback.tsx new file mode 100644 index 0000000000..1a3700cb40 --- /dev/null +++ b/packages/omi-low-code/src/components/fallback.tsx @@ -0,0 +1,47 @@ +export const fallback = ( +
+
+
+ + + + + + + + + + + + + + +
+ +

网络异常

+ +

网络异常,请稍后再试

+ + +
+
+) diff --git a/packages/omi-low-code/src/components/md-docs.tsx b/packages/omi-low-code/src/components/md-docs.tsx new file mode 100644 index 0000000000..2ba4d8a99c --- /dev/null +++ b/packages/omi-low-code/src/components/md-docs.tsx @@ -0,0 +1,62 @@ +import * as MarkdownIt from 'markdown-it' +import prismStyle from './prism.css?raw' +import * as Prism from 'prismjs' +import 'prismjs/components/prism-jsx' +import 'prismjs/components/prism-bash' +import 'prismjs/components/prism-tsx' +import { tag, Component } from 'omi' + +// @ts-ignore +const MdIt = MarkdownIt.default ? MarkdownIt.default : MarkdownIt + +@tag('md-docs') +export class MarkdownRenderer extends Component { + static css = [prismStyle] + md: any + + install() { + // @ts-ignore + this.md = new MdIt() + } + + installed() { + this.highlight() + window.refreshDark() + } + + updated() { + this.highlight() + } + + highlight() { + const codes = Array.from(this.shadowRoot?.querySelectorAll('code') || []) + codes.forEach((code) => { + const arr = code.className.match(/{([\S\s]*)}/) + let pre = code.parentNode as HTMLElement + if (arr) { + pre.setAttribute('data-line', arr[1]) + } + if (code.className && pre) { + pre.className = code.className + const temp = code.className.match(/language-\w*/g)?.[0] + const lan = temp?.split('-')[1] || 'markup' + const pl = Prism.languages[lan] + if (temp && pl) { + code.innerHTML = Prism.highlight(code.innerText, pl, lan).trim() + } + } + }) + + //fix line-highlight + window.dispatchEvent(new Event('resize')) + } + + render(props: { content: string }) { + return ( +
+ ) + } +} diff --git a/packages/omi-low-code/src/components/navbar.tsx b/packages/omi-low-code/src/components/navbar.tsx new file mode 100644 index 0000000000..bf24fb29bf --- /dev/null +++ b/packages/omi-low-code/src/components/navbar.tsx @@ -0,0 +1,269 @@ +import { tag, Component, bind, classNames } from 'omi' +import './dark-switch' + +type NavbarItem = { + text: string + href: string + target: string + path: string + value: string + type: string + img?: string + inner?: string + children: any[] + tag?: string +} + +type Props = { + items: NavbarItem[] + active: string +} + +@tag('o-navbar') +export class Navbar extends Component { + static css = ` + :host { + display: block; + } + ` + + state = { + isOpen: false, + active: '', + } + + install() { + this.state.active = this.props.active + } + + @bind + onItemClick(evt: MouseEvent, navbarItem: NavbarItem) { + if (!navbarItem.value) { + return + } + this.state.isOpen = false + this.state.active = navbarItem.value + this.update() + this.fire('item-click', { + item: navbarItem, + nativeEvent: evt, + }) + } + + @bind + onSubItemClick(evt: MouseEvent, navbarItem: NavbarItem) { + this.state.isOpen = false + evt.stopPropagation() + this.state.active = navbarItem.value + this.update() + this.fire('item-click', { + item: navbarItem, + nativeEvent: evt, + }) + } + + @bind + onClick() { + this.state.isOpen = !this.state.isOpen + this.update() + } + + renderNavbarItemChild(navbarItemChild: NavbarItem) { + switch (navbarItemChild.type) { + case 'title': + return ( +
  • + {navbarItemChild.text} +
  • + ) + case 'spliter': + return ( +
  • +
    +
  • + ) + default: + if (navbarItemChild.href) { + return ( +
  • this.onSubItemClick(evt, navbarItemChild)} + class="p-1 dark:bg-background dark:text-foreground" + > + + {navbarItemChild.text} +
    + + + + +
    +
    +
  • + ) + } + + return ( +
  • this.onSubItemClick(evt, navbarItemChild)} class="p-1 dark:bg-background"> + + {navbarItemChild.text} + +
  • + ) + } + } + render() { + return ( + + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/breadcrumb.tsx b/packages/omi-low-code/src/components/omiu/breadcrumb.tsx new file mode 100644 index 0000000000..cb29e8e931 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/breadcrumb.tsx @@ -0,0 +1,65 @@ +import { Component, tag } from 'omi' + +type BreadcrumbItem = { + label: string + href: string + icon: string + separator?: string +} + +type BreadcrumbProps = { + items?: BreadcrumbItem[] +} + +@tag('o-breadcrumb') +export class Breadcrumb extends Component { + static css = ` + :host { + display: inline-flex; + } + ` + static defaultProps = { + items: [], + } + + render() { + return ( + + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/button.tsx b/packages/omi-low-code/src/components/omiu/button.tsx new file mode 100644 index 0000000000..43c2722700 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/button.tsx @@ -0,0 +1,191 @@ +import { Component, tag } from 'omi' +import { cva, type VariantProps } from 'class-variance-authority' +import { cn } from './utils' + +// In order to have tailwindcss scan containing these: +// border-primary !bg-primary hover:!bg-primary/70 text-primary hover:border-primary/70 hover:text-primary/70 +// border-danger !bg-danger hover:!bg-danger/70 text-danger hover:border-danger/70 hover:text-danger/70 +// border-warning !bg-warning hover:!bg-warning/70 text-warning hover:border-warning/70 hover:text-warning/70 +// border-success !bg-success hover:!bg-success/70 text-success hover:border-success/70 hover:text-success/70 + +type Theme = 'default' | 'primary' | 'danger' | 'warning' | 'success' +type Variant = 'base' | 'outline' | 'dashed' | 'text' + +const getCompoundVariantsByTheme = ( + theme: Theme, +): { + variant: Variant + theme: Theme + className: string +}[] => { + return [ + { + variant: 'base', + theme, + className: `!bg-${theme} !text-primary-foreground hover:!bg-${theme}/70`, + }, + { + variant: 'outline', + theme, + className: `bg-transparent text-${theme} border-${theme} hover:border-${theme}/70 hover:text-${theme}/70 dark:brightness-125`, + }, + { + variant: 'dashed', + theme, + className: `bg-transparent border border-dashed border-${theme} hover:text-${theme}/70 hover:border-${theme}/70 text-${theme} dark:brightness-125`, + }, + { + variant: 'text', + theme, + className: `bg-transparent text-${theme} hover:text-${theme}/70 hover:bg-zinc-200 dark:hover:bg-zinc-800 dark:brightness-125`, + }, + ] +} + +export const buttonVariants = cva( + 'inline-flex text-sm items-center justify-center whitespace-nowrap rounded 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 box-border gap-2', + { + variants: { + variant: { + base: 'bg-zinc-200 text-zinc-800 hover:bg-zinc-300 dark:text-primary-foreground dark:bg-zinc-600 dark:hover:bg-zinc-500', // Adjust base variant as needed + outline: 'border border-input bg-background hover:text-primary hover:border-primary', // Existing outline variant + dashed: 'border border-dashed border-zinc-300 hover:text-primary hover:border-primary', // Add dashed variant + text: 'bg-transparent hover:bg-accent hover:text-accent-foreground dark:hover:bg-zinc-800', // Add text variant + }, + block: { + true: 'w-full', // Add block variant + }, + disabled: { + true: 'disabled', // Add disabled variant + }, + ghost: { + true: 'bg-transparent', // Add ghost variant + }, + loading: { + true: 'cursor-wait', // Add loading variant + }, + shape: { + rectangle: 'rounded', // Add rectangle shape + square: 'rounded-md', // Add square shape (adjust as needed) + round: 'rounded-full', // Add round shape + circle: 'rounded-full', // Add circle shape (adjust as needed) + }, + size: { + small: 'h-8 px-3', // Adjust sizes as needed + medium: 'h-9 px-4', // Adjust sizes as needed + large: 'h-12 px-5', // Adjust sizes as needed + }, + + theme: { + default: '', + primary: 'bg-primary text-white', // Add primary theme + danger: 'bg-danger text-white', // Add danger theme + warning: 'bg-warning text-white', // Add warning theme + success: 'bg-success text-white', // Add success theme + }, + }, + compoundVariants: [ + ...getCompoundVariantsByTheme('primary'), + ...getCompoundVariantsByTheme('danger'), + ...getCompoundVariantsByTheme('warning'), + ...getCompoundVariantsByTheme('success'), + { + size: 'small', + shape: 'circle', + className: 'w-8 h-8', + }, + { + size: 'medium', + shape: 'circle', + className: 'w-9 h-9', + }, + { + size: 'large', + shape: 'circle', + className: 'w-12 h-12', + }, + ], + defaultVariants: { + variant: 'base', + size: 'medium', + shape: 'rectangle', + theme: 'default', + }, + }, +) + +export type ButtonProps = VariantProps & { + // 使用 clsn, 避免使用 className 同时作用 host 和 内部的 root + cls?: string + tag: string + className?: string + block?: boolean + disabled?: boolean + ghost?: boolean + icon?: string + loading?: boolean + shape?: 'rectangle' | 'square' | 'round' | 'circle' + size?: 'small' | 'medium' | 'large' + type?: 'submit' | 'reset' | 'button' + variant?: Variant + theme?: Theme +} + +@tag('o-button') +export class Button extends Component { + static css = [ + `:host { + display: inline-flex; + }`, + ] + + static defaultProps = { + tag: 'button', + } + + render() { + // 取出 className 不使用,防止覆盖 + const { + tag: Tag, + cls, + variant, + size, + className, + block, + disabled, + ghost, + loading, + shape, + theme, + ...props + } = this.props + + // Add disabled attribute if the button is disabled + if (disabled) { + ;(props as { disabled?: boolean }).disabled = true + } + + return ( + + {props.icon && } + {loading && } + + + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/calendar/calendar.ts b/packages/omi-low-code/src/components/omiu/calendar/calendar.ts new file mode 100644 index 0000000000..0bd4c8077c --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/calendar/calendar.ts @@ -0,0 +1,208 @@ +export enum FirstDayOfWeek { + Sunday = 0, + Monday = 1, +} + +export enum CalendarLocale { + English = 'en', + Chinese = 'zh', +} + +export interface CalendarTranslations { + weekdaysShort: string[] + months: string[] + today?: string + cancel?: string + ok?: string + weekdays: string[] + clear?: string +} + +export const calendarTranslations: Record = { + [CalendarLocale.English]: { + weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + months: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], + today: 'Today', + cancel: 'Cancel', + ok: 'OK', + clear: 'Clear', + }, + [CalendarLocale.Chinese]: { + weekdaysShort: ['一', '二', '三', '四', '五', '六', '日'], + weekdays: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], + months: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + today: '今天', + cancel: '取消', + ok: '确定', + clear: '清除', + }, +} + +export class Calendar { + private locale: CalendarLocale + private currentDate: Date + private firstDayOfWeek: FirstDayOfWeek + translations: CalendarTranslations + + constructor(date?: Date | string, locale: CalendarLocale = CalendarLocale.English) { + this.currentDate = date ? new Date(date) : new Date() + + this.locale = locale + if (this.locale === CalendarLocale.Chinese) { + this.firstDayOfWeek = FirstDayOfWeek.Monday + } else { + this.firstDayOfWeek = FirstDayOfWeek.Sunday + } + + this.translations = calendarTranslations[this.locale] + } + + public getYear(): number { + return this.currentDate.getFullYear() + } + + public setDate(dateString: string): void { + this.currentDate = new Date(dateString) + } + + public getLocaleMonth(): string { + return this.getTranslations().months[this.currentDate.getMonth()] + } + + public getMonth(): number { + return this.currentDate.getMonth() + } + + public getDate(): number { + return this.currentDate.getDate() + } + + public now(): string { + const date = new Date() + return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}` + } + + public getDateString(): string { + if (this.locale === CalendarLocale.Chinese) { + return `${this.getYear()}年${this.getMonth() + 1}月` + } + return `${calendarTranslations[CalendarLocale.English].months[this.getMonth()]} ${this.getYear()}` + } + + public getMonthString(): string { + return `${calendarTranslations[this.locale].months[this.getMonth()]}` + } + + public generateMonthCalendar(): string[][] { + const year = this.currentDate.getFullYear() + const month = this.currentDate.getMonth() + const firstDayOfMonth = new Date(year, month, 1) + const lastDayOfMonth = new Date(year, month + 1, 0) + + const calendar: string[][] = [] + let week: string[] = [] + + // Calculate the blank days of the first week + const firstWeekBlankDays = (firstDayOfMonth.getDay() - this.firstDayOfWeek + 7) % 7 + for (let i = 0; i < firstWeekBlankDays; i++) { + week.push('') + } + + for (let day = 1; day <= lastDayOfMonth.getDate(); day++) { + week.push(day.toString()) + if (week.length === 7) { + calendar.push(week) + week = [] + } + } + + // If the last week is less than 7 days, fill it with empty strings + while (week.length < 7) { + week.push('') + } + calendar.push(week) + + // If the calendar has only 5 rows, add an empty row + if (calendar.length === 5) { + calendar.push(Array(7).fill('')) + } + + return calendar + } + + public prevMonth(): void { + const currentMonth = this.currentDate.getMonth() + if (currentMonth === 0) { + this.currentDate.setFullYear(this.currentDate.getFullYear() - 1) + this.currentDate.setMonth(11) + } else { + this.currentDate.setMonth(currentMonth - 1) + } + } + + public currentMonth(): void { + this.currentDate = new Date() + } + + public nextMonth(): void { + const currentMonth = this.currentDate.getMonth() + if (currentMonth === 11) { + this.currentDate.setFullYear(this.currentDate.getFullYear() + 1) + this.currentDate.setMonth(0) + } else { + this.currentDate.setMonth(currentMonth + 1) + } + } + + public setMonth(year: number, month: number): void { + this.currentDate.setFullYear(year, month) + } + + public setLocale(locale: CalendarLocale): void { + this.locale = locale + } + + public getLocale(): CalendarLocale { + return this.locale + } + + public getTranslations(): CalendarTranslations { + return calendarTranslations[this.locale] + } +} + +// const calendar = new Calendar(); + +// // 生成当前月份日历 +// const currentMonthCalendar = calendar.generateMonthCalendar(); +// console.log(currentMonthCalendar); + +// // 生成上个月日历 +// calendar.prevMonth(); +// const prevMonthCalendar = calendar.generateMonthCalendar(); +// console.log(prevMonthCalendar); + +// // 生成下个月日历 +// calendar.nextMonth(); +// calendar.nextMonth(); +// const nextMonthCalendar = calendar.generateMonthCalendar(); +// console.log(nextMonthCalendar); + +// // 生成任意一个月的日历 +// calendar.setMonth(2022, 6); // 生成 2022 年 7 月的日历 +// const anyMonthCalendar = calendar.generateMonthCalendar(); +// console.log(anyMonthCalendar); diff --git a/packages/omi-low-code/src/components/omiu/calendar/index.tsx b/packages/omi-low-code/src/components/omiu/calendar/index.tsx new file mode 100644 index 0000000000..302f71eecf --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/calendar/index.tsx @@ -0,0 +1,308 @@ +import { tag, Component, classNames, bind } from 'omi' + +import { Calendar, CalendarLocale } from './calendar' +import '../select' + +const theme = { + td: 'text-center data-[dpk-cell-disabled]:text-neutral-300 data-[dpk-cell-disabled]:cursor-default data-[dpk-cell-disabled]:pointer-events-none data-[dpk-cell-disabled]:hover:cursor-default hover:cursor-pointer group w-6 h-8', + tdInner: + 'mx-auto box-border group-[:not([dpk-cell-disabled]):not([dpk-cell-selected]):hover]:bg-neutral-300 group-[[dpk-cell-selected]]:bg-primary group-[[dpk-cell-selected]]:text-white group-[:not([dpk-cell-selected])[dpk-cell-focused]]:bg-neutral-100 group-[[dpk-cell-focused]]:data-[dpk-cell-selected]:bg-primary group-[[dpk-cell-current]]:border-solid group-[[dpk-cell-current]]:border-black group-[[dpk-cell-current]]:border dark:group-[:not([dpk-cell-disabled]):not([dpk-cell-selected]):hover]:bg-white/10 dark:group-[[dpk-cell-current]]:border-white bg-background text-foreground dark:group-[:not([dpk-cell-selected])[dpk-cell-focused]]:bg-white/10 dark:group-[[dpk-cell-disabled]]:text-neutral-500 w-6 h-6 leading-6 rounded text-[13px] group-[[dpk-cell-current]]:leading-[21px] ', +} + +// dpk-cell-selected +// dpk-cell-current + +interface Props { + value: string + locale: CalendarLocale + range: boolean + className: string + hasFooter: boolean +} + +@tag('o-calendar') +export class CalendarComponent extends Component { + static css = [ + `:host { + display: block; + } + `, + ] + // @ts-ignore + calendar: Calendar + + calendarMatrix: string[][] = [] + state: { + selectedYear: number | null + selectedMonth: number | null + selectedDay: number | null + + currentYear: number | null + currentMonth: number | null + currentDay: number | null + } = { + selectedYear: null, + selectedMonth: null, + selectedDay: null, + + currentYear: null, + currentMonth: null, + currentDay: null, + } + + // @ts-ignore + years: number[] + + @bind + onClick(evt: MouseEvent) { + // @ts-ignore + const arr = evt.currentTarget.dataset.date.split('-') + this.state.selectedYear = Number(arr[0]) + this.state.selectedMonth = Number(arr[1]) - 1 + this.state.selectedDay = Number(arr[2]) + this.update() + this.fire('select', { + date: (evt.currentTarget as HTMLElement).dataset.date, + nativeEvent: evt, + }) + } + + @bind + onMonthClick(evt: CustomEvent) { + this.state.currentMonth = evt.detail.value + this.calendar.setMonth(this.state.currentYear as number, this.state.currentMonth as number) + this.generateMonthCalendar() + this.update() + } + + @bind + onYearClick(evt: CustomEvent) { + this.state.currentYear = evt.detail.value + this.calendar.setMonth(this.state.currentYear as number, this.state.currentMonth as number) + this.generateMonthCalendar() + this.update() + } + + @bind + prevMonth() { + this.calendar.prevMonth() + this.state.currentYear = this.calendar.getYear() + this.state.currentMonth = this.calendar.getMonth() + this.generateMonthCalendar() + this.update() + } + + @bind + currentMonth() { + this.calendar.currentMonth() + this.state.currentYear = this.calendar.getYear() + this.state.currentMonth = this.calendar.getMonth() + this.generateMonthCalendar() + this.update() + } + + @bind + nextMonth() { + this.calendar.nextMonth() + this.state.currentYear = this.calendar.getYear() + this.state.currentMonth = this.calendar.getMonth() + this.generateMonthCalendar() + this.update() + } + + generateMonthCalendar() { + this.calendar.setDate( + `${this.state.currentYear}-${(this.state.currentMonth as number) + 1}-${this.state.currentDay}`, + ) + this.calendarMatrix = this.calendar.generateMonthCalendar() + } + + install(): void { + if (this.props.value) { + const arr = this.props.value.split('-') + this.state.currentYear = Number(arr[0]) + this.state.currentMonth = Number(arr[1]) - 1 + this.state.currentDay = Number(arr[2]) + this.state.selectedYear = Number(arr[0]) + this.state.selectedMonth = Number(arr[1]) - 1 + this.state.selectedDay = Number(arr[2]) + } + + this.calendar = new Calendar(this.props.value, this.props.locale) + this.calendarMatrix = this.calendar.generateMonthCalendar() + + const currentYear = new Date().getFullYear() + const years = [] + + for (let i = currentYear - 101; i <= currentYear + 101; i++) { + years.push(i) + } + + this.years = years + } + + setDate(date: string): void { + this.calendar.setDate(date) + this.calendarMatrix = this.calendar.generateMonthCalendar() + this.update() + } + + static defaultProps = { + vaule: '', + // 直接在一个日历上选择范围,默认是 false + range: false, + className: '', + hasFooter: false, + } + + @bind + onYearShow() {} + + @bind + onMonthShow() {} + + render() { + return ( +
    +
    +
    + { + return { + text: month, + value: index, + } + })} + > + + { + return { + text: year, + value: year, + } + })} + > + +
    + + + +
    +
    + +
    + + + + {this.calendar.translations.weekdaysShort.map((day, index) => { + return ( + + ) + })} + + + + {this.calendarMatrix.map((week) => { + const year = this.calendar.getYear() + const month = this.calendar.getMonth() + 1 + return ( + + {week.map((day) => { + return ( + + ) + })} + + ) + })} + +
    + {day} +
    +
    {day}
    +
    +
    +
    +
    + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/msg.tsx b/packages/omi-low-code/src/components/omiu/msg.tsx new file mode 100644 index 0000000000..5db08282b6 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/msg.tsx @@ -0,0 +1,73 @@ +import { render, tag, Component } from 'omi' + +type Props = { + type: string + content: string +} + +@tag('o-msg') +class Msg extends Component { + static css = `:host: { + display: block + }` + + renderIcon(type: string) { + switch (type) { + case 'success': + return + default: + break + } + } + render(props: Props) { + return ( +
    + {this.renderIcon(props.type)} + {props.content} +
    + ) + } +} + +let doms: HTMLElement[] = [] + +export function showMsg(options: { type: 'success' | 'error'; content: string }): void { + const dom = render( + , + document.body, + ) + requestAnimationFrame(() => { + dom.style.top = `calc(1rem + ${3 * doms.length}rem)` + // 后来出现的 dom 需要刷一遍黑夜白天模式加上 dark class + window.refreshDark() + }) + + doms.push(dom) + setTimeout(() => { + hideMsg() + }, 2000) +} + +export function hideMsg(): void { + if (doms.length === 0) return + const dom = doms.shift() + if (dom) { + dom.style.top = '-3rem' + dom.addEventListener('transitionend', () => { + dom.remove() + updateDomsPosition() + }) + } +} + +function updateDomsPosition(): void { + doms.forEach((dom, index) => { + dom.style.top = `calc(1rem + ${3 * index}rem)` + }) +} diff --git a/packages/omi-low-code/src/components/omiu/select.tsx b/packages/omi-low-code/src/components/omiu/select.tsx new file mode 100644 index 0000000000..5118d8a760 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/select.tsx @@ -0,0 +1,133 @@ +import { Component, tag } from 'omi' +import { createPopper, Instance } from '@popperjs/core' + +type Props = { + options: { text: string; value: string }[] + value: string +} +@tag('o-select') +export class Select extends Component { + static css = ` + :host { + display: inline-block; + } + ` + + state = { + isOpen: false, + selectedValue: '', + selectedText: '', + } + + install() { + this.setSelectedOption() + // 添加事件监听器 + document.addEventListener('click', this.handleClickOutside.bind(this)) + } + + setSelectedOption() { + const selectedOption = this.props.options.find((option) => this.props.value === option.value) + if (selectedOption) { + this.state.selectedValue = selectedOption.value + this.state.selectedText = selectedOption.text + } + } + + receiveProps() { + this.setSelectedOption() + } + + uninstall() { + // 移除事件监听器 + document.removeEventListener('click', this.handleClickOutside.bind(this)) + } + + handleClickOutside(event: MouseEvent) { + if (this.button && !this.button.contains(event.target as Node) && this.state.isOpen) { + this.state.isOpen = false + this.update() + } + } + + button: HTMLElement | null = null + menu: HTMLElement | null = null + popper: Instance | null = null + + onToggleOpen(event: MouseEvent) { + event.stopPropagation() + + this.state.isOpen = !this.state.isOpen + this.update() + this.popper && this.popper.destroy() + if (this.state.isOpen && this.button && this.menu) { + this.popper = createPopper(this.button, this.menu, { + placement: 'bottom-start', + }) + } + } + + onSelectOption(option: { text: string; value: string }) { + if (option.value === this.state.selectedValue) { + return + } + this.state.selectedValue = option.value + this.state.selectedText = option.text + this.state.isOpen = false + this.update() + this.fire('change', { + value: option.value, + }) + } + + render() { + return ( +
    +
    + +
    + +
    (this.menu = e)} + style={{ display: this.state.isOpen ? 'block' : 'none' }} + > + +
    +
    + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/swiper/api.md b/packages/omi-low-code/src/components/omiu/swiper/api.md new file mode 100644 index 0000000000..93e0491ce5 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/swiper/api.md @@ -0,0 +1,37 @@ +## Swiper Props + +| Name | Type | Default | Description | +| ------------- | ------- | ------------ | ------------------------------------------------ | +| direction | string | 'horizontal' | Direction of the swiper (vertical or horizontal) | +| loop | boolean | true | Whether the swiper should loop | +| index | number | 0 | Initial index of the swiper | +| navigation | boolean | true | Whether to show navigation buttons | +| pagination | boolean | true | Whether to show pagination | +| slidesPerView | string or number | "auto" | Number of slides to show per view. "auto" will automatically adjust the number of slides based on the viewport size. | +| spaceBetween | number | 30 | Space between each slide in pixels. | +| autoPlay | boolean | true | Whether to enable auto play. | + +## Swiper Events + +| Name | Parameters | Description | +| ------ | ---------------------------- | ------------------------------------- | +| change | evt: CustomEvent | Event triggered when slide changes | + +## Swiper 属性 + +| 名称 | 类型 | 默认值 | 描述 | +| ------------ | ------- | ------------ | --------------------------------------------- | +| direction | 字符串 | 'horizontal' | Swiper 的方向(垂直或水平) | +| loop | 布尔值 | true | 是否启用 Swiper 循环播放 | +| index | 数字 | 0 | Swiper 的初始索引 | +| navigation | 布尔值 | true | 是否显示导航按钮 | +| pagination | 布尔值 | true | 是否显示分页器 | +| slidesPerView| 字符串或数字 | "auto" | 每视图显示的幻灯片数量。"auto" 根据视口大小自动调整幻灯片数量。 | +| spaceBetween | 数字 | 30 | 每个幻灯片之间的间距(像素)。 | +| autoPlay | 布尔值 | true | 是否启用自动播放 | + +## Swiper 事件 + +| 名称 | 参数 | 描述 | +| ------ | -------------------------- | ---------------------------------- | +| change | evt: CustomEvent | 幻灯片更改时触发的事件 | diff --git a/packages/omi-low-code/src/components/omiu/swiper/swiper.tsx b/packages/omi-low-code/src/components/omiu/swiper/swiper.tsx new file mode 100644 index 0000000000..810985b42d --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/swiper/swiper.tsx @@ -0,0 +1,270 @@ +import { tag, Component, OmiProps, bind, VNode } from 'omi' +// import '../collapse/collapse' + + +/** + * copy from omiu/src/components/swiper + * Changes: + * 1. Added Props: slidesPreView, spaceBetween, autoPlay. + * 2. Added a timerId to store the ID of the autoplay interval. + * 3. Added startAutoplay method to start the autoplay with a default interval of 3 seconds. + * 4. Added pauseAutoplay method to pause the autoplay when the mouse hovers over the component. + * 5. Added resumeAutoplay method to resume the autoplay when the mouse leaves the component. + * 6. Added event listeners for mouseover and mouseleave to rootElement in the installed method. + * 7. Cleaned up the interval and event listeners in the uninstall method. + */ + +// https://swiperjs.com/get-started +// import Swiper JS +import Swiper from 'swiper' +// import Swiper styles +import swiperStyle from 'swiper/css?raw' + +interface Props { + direction?: 'vertical' | 'horizontal' + loop?: boolean + index: number + navigation?: boolean + slidesPerView?: "auto" | number + spaceBetween?: number, + autoplay?: boolean +} + +const theme = { + paginationButton: + 'mx-[3px] box-content h-[3px] w-[30px] flex-initial cursor-pointer border-0 border-y-[10px] border-solid border-transparent bg-white bg-clip-padding p-0 -indent-[999px] transition-opacity duration-[600ms] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] motion-reduce:transition-none', +} + +@tag('o-swiper') +export class SwiperComponent extends Component { + static css = [ + swiperStyle, + `:host { + display: block; + } + `, + ] + paginationDiv: any + timerId: NodeJS.Timeout | null = null // 定时器ID + + @bind + onPreviusClick(evt: Event) { + this.swiper?.slidePrev() + this.fire('change', { + index: this.swiper!.realIndex, + nativeEvent: evt, + }) + } + + @bind + onNextClick(evt: Event) { + this.swiper?.slideNext() + this.fire('change', { + index: this.swiper!.realIndex, + nativeEvent: evt, + }) + } + + @bind + onPaginationClick(index: number, evt: Event) { + // https://www.swiper.com.cn/api/methods/417.html + this.swiper?.slideToLoop(index) + this.fire('change', { + index, + nativeEvent: evt, + }) + } + + static defaultProps = { + direction: 'horizontal', // vertical | horizontal + loop: true, + index: 0, + navigation: true, + pagination: true, + slidesPerView: 1, + spaceBetween: 30, + autoplay: true + } + + swiper: Swiper | null = null + + installed(): void { + this.swiper = new Swiper(this.rootElement!, { + // Optional parameters + direction: this.props.direction, + loop: this.props.loop, + initialSlide: this.props.index, + slidesPerView: this.props.slidesPerView, + spaceBetween:this.props.spaceBetween, + observer: true, + observeParents: true + + // And if we need scrollbar + // scrollbar: { + // el: '.swiper-scrollbar', + // }, + }) + // try { + // console.log('swiper',this.swiper) + // this.swiper.slidesPerViewDynamic() // 动态设置slidesPerView + // this.swiper.autoplay.start() // 自动轮播 + // this.swiper.loopCreate() // 循环模式 + // }catch(e){ + // console.log(e) + // } + + this.swiper.on('slideChange', () => { + this.setActiveButton(this.swiper!.realIndex) + }) + + if (this.props.autoplay) { + this.startAutoplay() + } + + // 自定义实现:随窗口大小动态设置同时展示的slide, + // 原swiper组件会因为封装多的一层swiper-wrapper影响判断swiper-slide的宽度 + const updateSlidesPerView = () => { + let slidesPerView = 1 + if (window.innerWidth >= 1440) { + slidesPerView = 3 + } else if (window.innerWidth >= 768) { + slidesPerView = 2 + } + if (this.swiper){ + this.swiper.params.slidesPerView = slidesPerView + this.swiper.update() + } + } + + if (this.props.slidesPerView === 'auto') { + updateSlidesPerView() + window.addEventListener('resize', updateSlidesPerView) + } + + this.rootElement!.addEventListener('mouseover', this.pauseAutoplay) + this.rootElement!.addEventListener('mouseleave', this.resumeAutoplay) + } + + startAutoplay() { + this.timerId = setInterval(() => { + this.swiper?.slideNext() + }, 3000) // 每3秒自动轮播 + } + + pauseAutoplay = () => { + if (this.timerId) { + clearInterval(this.timerId) + this.timerId = null + } + } + + resumeAutoplay = () => { + this.startAutoplay() + } + + setActiveButton(index: number) { + const buttons = this.paginationDiv.querySelectorAll('button') + + for (let i = 0; i < buttons.length; i++) { + if (i === index) { + buttons[i].classList.remove('opacity-50') + } else { + buttons[i].classList.add('opacity-50') + } + } + } + + // 在组件销毁时清除定时器和事件监听器 + uninstall() { + if (this.timerId) { + clearInterval(this.timerId) + } + this.rootElement!.removeEventListener('mouseover', this.pauseAutoplay) + this.rootElement!.removeEventListener('mouseleave', this.resumeAutoplay) + } + + // 不需要更新,不然状态不一致 + receiveProps() { + return false + } + + render(props: OmiProps) { + return ( +
    +
    + {(props.children as VNode[])?.map((child) => { + return
    {child}
    + })} +
    + + {props.navigation && ( + + )} + + {props.navigation && ( + + )} + + {props.pagination && ( +
    { + this.paginationDiv = e + }} + class="absolute bottom-0 left-0 right-0 z-[1] m-0 flex list-none justify-center p-0" + > + {(props.children as VNode[])?.map((_child, index) => { + return ( + + ) + })} +
    + )} +
    + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/switch.tsx b/packages/omi-low-code/src/components/omiu/switch.tsx new file mode 100644 index 0000000000..5374cfe818 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/switch.tsx @@ -0,0 +1,60 @@ +import { Component, classNames, tag } from 'omi' + +type SwitchProps = { + size?: 'small' | 'medium' | 'large' + value?: boolean + disabled?: boolean +} + +@tag('o-switch') +export class Switch extends Component { + static css = ` + :host { + display: inline-flex; + } + ` + static defaultProps = { + size: 'medium', + value: false, + disabled: false, + } + + onChange = (e: Event) => { + e.stopPropagation() + this.fire('change', { + value: (e.target as HTMLInputElement).checked, + }) + } + + render() { + return ( + + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/table.tsx b/packages/omi-low-code/src/components/omiu/table.tsx new file mode 100644 index 0000000000..d1c2846289 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/table.tsx @@ -0,0 +1,95 @@ +import { Component, tag } from 'omi' +import './tag.tsx' + +@tag('o-table') +export class Table extends Component { + render() { + return ( +
    + + + + + + + + + + + + + + + + {Array(5) + .fill(0) + .map(() => { + return ( + + + + + + + + + + + + ) + })} + +
    +
    + + +
    +
    + 产品名称 + + 颜色 + + 类型 + + 附件 + + 有货 + + 价格 + + 重量 + + 操作 +
    +
    + + +
    +
    + 苹果笔记本 + 银色Laptop + 带有 + ¥129993.0kg + + 编辑 + + + 删除 + +
    +
    + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/tag.tsx b/packages/omi-low-code/src/components/omiu/tag.tsx new file mode 100644 index 0000000000..915ed97075 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/tag.tsx @@ -0,0 +1,61 @@ +import { Component, tag } from 'omi' + +@tag('o-tag') +export class Tag extends Component { + static defaultProps = { + closable: false, + default: null, + disabled: false, + icon: undefined, + maxWidth: null, + shape: 'square', + size: 'medium', // small, medium, large + theme: 'default', + variant: 'dark', + } + + onClose = (e: MouseEvent) => { + e.stopPropagation() + this.fire('close') + } + + render() { + // @ts-ignore + const { closable, disabled, icon, maxWidth, shape, size, theme, variant } = this.props + + const baseClasses = + 'inline-flex items-center justify-center border border-transparent text-base font-medium rounded-sm focus:outline-none transition duration-150 ease-in-out whitespace-nowrap' + const sizeClasses = + size === 'small' ? 'px-1 text-xs h-5' : size === 'medium' ? 'px-3 text-xs h-6' : 'px-4 text-sm h-8' + const shapeClasses = shape === 'square' ? '' : shape === 'round' ? 'rounded' : 'rounded-full' + const themeClasses = + theme === 'default' + ? 'bg-zinc-200' + : theme === 'primary' + ? 'bg-blue-600' + : theme === 'warning' + ? 'bg-yellow-400' + : theme === 'danger' + ? 'bg-red-600' + : 'bg-green-500' + const variantClasses = + variant === 'dark' + ? 'text-zinc-700' + : variant === 'light' + ? 'text-zinc-700' + : variant === 'outline' + ? `border ${themeClasses}` + : `border ${themeClasses} bg-white` + const disabledClasses = disabled ? 'cursor-not-allowed' : 'cursor-pointer' + + const cls = `${baseClasses} ${sizeClasses} ${shapeClasses} ${themeClasses} ${variantClasses} ${disabledClasses}` + + return ( +
    + {icon && {typeof icon === 'function' ? icon() : icon}} + + {closable && } +
    + ) + } +} diff --git a/packages/omi-low-code/src/components/omiu/utils.ts b/packages/omi-low-code/src/components/omiu/utils.ts new file mode 100644 index 0000000000..d32b0fe652 --- /dev/null +++ b/packages/omi-low-code/src/components/omiu/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from 'clsx' +import { twMerge } from 'tailwind-merge' + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/packages/omi-low-code/src/components/pending.tsx b/packages/omi-low-code/src/components/pending.tsx new file mode 100644 index 0000000000..2328e7c822 --- /dev/null +++ b/packages/omi-low-code/src/components/pending.tsx @@ -0,0 +1,17 @@ +export const pending = ( +
    + + + + +
    +) diff --git a/packages/omi-low-code/src/components/prism.css b/packages/omi-low-code/src/components/prism.css new file mode 100644 index 0000000000..91c895c1ea --- /dev/null +++ b/packages/omi-low-code/src/components/prism.css @@ -0,0 +1,550 @@ +/* PrismJS 1.14.0 +http://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+markup-templating+json+php+jsx+typescript+scss&plugins=line-numbers+toolbar+previewers+normalize-whitespace+copy-to-clipboard */ + +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +/* stylelint-disable */ +code[class*='language-'], +pre[class*='language-'] { + color: hsl(var(--foreground)); + background: none; + /* text-shadow: 0 1px white; */ + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 0.875rem; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + border-bottom-left-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*='language-']::-moz-selection, +pre[class*='language-'] ::-moz-selection, +code[class*='language-']::-moz-selection, +code[class*='language-'] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*='language-']::selection, +pre[class*='language-'] ::selection, +code[class*='language-']::selection, +code[class*='language-'] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*='language-'], + pre[class*='language-'] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*='language-'] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: 0.7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: rgb(214, 2, 118); +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + /* background: hsla(0, 0%, 100%, 0.5); */ +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #dd4a68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre.line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre.line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.line-numbers-rows > span { + pointer-events: none; + display: block; + counter-increment: linenumber; +} + +.line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; +} + +.line-numbers .type-terminal .line-numbers-rows { + border-right: none; + top: -0.2em; +} + +.type-terminal .line-numbers-rows > span:before { + content: '$'; +} + +.prism-previewer, +.prism-previewer:before, +.prism-previewer:after { + position: absolute; + pointer-events: none; +} +.prism-previewer, +.prism-previewer:after { + left: 50%; +} +.prism-previewer { + margin-top: -48px; + width: 32px; + height: 32px; + margin-left: -16px; + + opacity: 0; + -webkit-transition: opacity 0.25s; + -o-transition: opacity 0.25s; + transition: opacity 0.25s; +} +.prism-previewer.flipped { + margin-top: 0; + margin-bottom: -48px; +} +.prism-previewer:before, +.prism-previewer:after { + content: ''; + position: absolute; + pointer-events: none; +} +.prism-previewer:before { + top: -5px; + right: -5px; + left: -5px; + bottom: -5px; + border-radius: 10px; + border: 5px solid #fff; + box-shadow: + 0 0 3px rgba(0, 0, 0, 0.5) inset, + 0 0 10px rgba(0, 0, 0, 0.75); +} +.prism-previewer:after { + top: 100%; + width: 0; + height: 0; + margin: 5px 0 0 -7px; + border: 7px solid transparent; + border-color: rgba(255, 0, 0, 0); + border-top-color: #fff; +} +.prism-previewer.flipped:after { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 5px; + border-top-color: rgba(255, 0, 0, 0); + border-bottom-color: #fff; +} +.prism-previewer.active { + opacity: 1; +} + +.prism-previewer-angle:before { + border-radius: 50%; + background: #fff; +} +.prism-previewer-angle:after { + margin-top: 4px; +} +.prism-previewer-angle svg { + width: 32px; + height: 32px; + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.prism-previewer-angle[data-negative] svg { + -webkit-transform: scaleX(-1) rotate(-90deg); + -moz-transform: scaleX(-1) rotate(-90deg); + -ms-transform: scaleX(-1) rotate(-90deg); + -o-transform: scaleX(-1) rotate(-90deg); + transform: scaleX(-1) rotate(-90deg); +} +.prism-previewer-angle circle { + fill: transparent; + stroke: hsl(200, 10%, 20%); + stroke-opacity: 0.9; + stroke-width: 32; + stroke-dasharray: 0, 500; +} + +.prism-previewer-gradient { + background-image: linear-gradient(45deg, #bbb 25%, transparent 25%, transparent 75%, #bbb 75%, #bbb), + linear-gradient(45deg, #bbb 25%, #eee 25%, #eee 75%, #bbb 75%, #bbb); + background-size: 10px 10px; + background-position: + 0 0, + 5px 5px; + + width: 64px; + margin-left: -32px; +} +.prism-previewer-gradient:before { + content: none; +} +.prism-previewer-gradient div { + position: absolute; + top: -5px; + left: -5px; + right: -5px; + bottom: -5px; + border-radius: 10px; + border: 5px solid #fff; + box-shadow: + 0 0 3px rgba(0, 0, 0, 0.5) inset, + 0 0 10px rgba(0, 0, 0, 0.75); +} + +.prism-previewer-color { + background-image: linear-gradient(45deg, #bbb 25%, transparent 25%, transparent 75%, #bbb 75%, #bbb), + linear-gradient(45deg, #bbb 25%, #eee 25%, #eee 75%, #bbb 75%, #bbb); + background-size: 10px 10px; + background-position: + 0 0, + 5px 5px; +} +.prism-previewer-color:before { + background-color: inherit; + background-clip: padding-box; +} + +.prism-previewer-easing { + margin-top: -76px; + margin-left: -30px; + width: 60px; + height: 60px; + background: #333; +} +.prism-previewer-easing.flipped { + margin-bottom: -116px; +} +.prism-previewer-easing svg { + width: 60px; + height: 60px; +} +.prism-previewer-easing circle { + fill: hsl(200, 10%, 20%); + stroke: white; +} +.prism-previewer-easing path { + fill: none; + stroke: white; + stroke-linecap: round; + stroke-width: 4; +} +.prism-previewer-easing line { + stroke: white; + stroke-opacity: 0.5; + stroke-width: 2; +} + +@-webkit-keyframes prism-previewer-time { + 0% { + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 100, 500; + stroke-dashoffset: 0; + } + 100% { + stroke-dasharray: 0, 500; + stroke-dashoffset: -100; + } +} + +@-o-keyframes prism-previewer-time { + 0% { + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 100, 500; + stroke-dashoffset: 0; + } + 100% { + stroke-dasharray: 0, 500; + stroke-dashoffset: -100; + } +} + +@-moz-keyframes prism-previewer-time { + 0% { + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 100, 500; + stroke-dashoffset: 0; + } + 100% { + stroke-dasharray: 0, 500; + stroke-dashoffset: -100; + } +} + +@keyframes prism-previewer-time { + 0% { + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 100, 500; + stroke-dashoffset: 0; + } + 100% { + stroke-dasharray: 0, 500; + stroke-dashoffset: -100; + } +} + +.prism-previewer-time:before { + border-radius: 50%; + background: #fff; +} +.prism-previewer-time:after { + margin-top: 4px; +} +.prism-previewer-time svg { + width: 32px; + height: 32px; + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.prism-previewer-time circle { + fill: transparent; + stroke: hsl(200, 10%, 20%); + stroke-opacity: 0.9; + stroke-width: 32; + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + -webkit-animation: prism-previewer-time linear infinite 3s; + -moz-animation: prism-previewer-time linear infinite 3s; + -o-animation: prism-previewer-time linear infinite 3s; + animation: prism-previewer-time linear infinite 3s; +} + +/* custom */ +.docs-pills .d-flex.justify-content-between { + border-bottom: 1px solid #e0e0e0 !important; +} + +.docs-pills .nav { + border-bottom: 0 !important; +} + +.docs-pills .btn.btn-sm[class*='btn-outline-'] { + margin-top: 0.1rem !important; + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.docs-pills .nav-pills .nav-link { + padding: 10px 20px; + margin: 0 5px; +} + +.docs-pills .nav-item .active { + background-color: hsl(217, 91.2%, 59.8%) !important; + color: white !important; +} + +.docs-pills .tab-content { + padding: 0; +} + +.docs-pills .btn-copy-code, +.btn-copy-code, +.docs-pills .export-to-snippet { + position: absolute; + top: 10px; + right: 16px; + font-size: 0.75rem; + font-weight: 500; +} + +.docs-pills { + position: relative !important; +} + +.docs-pills pre[class*='language-'] { + margin-top: 0; + border: 1px solid #e0e0e0; +} + +pre.line-numbers { + position: relative; + padding-left: 3.8em !important; /* It's important to overwrite px-3 class which breaks showing numbers */ + counter-reset: linenumber; +} + +pre.line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.line-numbers-rows > span { + pointer-events: none; + display: block; + counter-increment: linenumber; +} + +.line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; +} + +.code-toolbar { + margin: 0; +} + +code[class*='language-'], +pre[class*='language-'] { + max-height: 450px; +} diff --git a/packages/omi-low-code/src/components/sidebar.tsx b/packages/omi-low-code/src/components/sidebar.tsx new file mode 100644 index 0000000000..4260ee773a --- /dev/null +++ b/packages/omi-low-code/src/components/sidebar.tsx @@ -0,0 +1,253 @@ +import { tag, Component, classNames, bind } from 'omi' +import { createPopper } from '@popperjs/core' +import { Router } from 'omi-router' + +interface ComponentWithRouter extends Sidebar { + router?: Router +} + +type SidebarItem = { + text: string + href: string + target: string + name: string + path: string + value: string + type: string + img?: string + inner?: string + children: any[] + tag?: string + childrenHeight?: number + isOpen?: boolean + icon?: string +} + +type Props = { + items: SidebarItem[] + active: string + isOpen: boolean +} + +@tag('o-sidebar') +export class Sidebar extends Component { + static css = ` + :host { + display: block; + } + ` + + state = { + isOpen: false, + active: '', + } + + onMouseEnter(item: SidebarItem) { + if (this.state.isOpen) return + // @ts-ignore + item.tooltip.classList.remove('hidden') + // @ts-ignore + item.popper.update() + } + + onMouseLeave(item: SidebarItem) { + if (this.state.isOpen) return + // @ts-ignore + item.tooltip.classList.add('hidden') + // @ts-ignore + item.popper.update() + } + + installed() { + const triggers = this.shadowRoot?.querySelectorAll('.trigger')! + + triggers.forEach((trigger: Element, index: number) => { + const tooltip = trigger.querySelector('.tip') as HTMLElement + + if (trigger && tooltip) { + const popper = createPopper(trigger, tooltip, { + placement: 'right', + modifiers: [ + { + name: 'offset', + options: { + offset: [0, 0], + }, + }, + ], + }) + // @ts-ignore + this.props.items[index].popper = popper + // @ts-ignore + this.props.items[index].tooltip = tooltip + } + }) + } + + onItemClick(item: SidebarItem) { + item.isOpen = !item.isOpen + item.childrenHeight = item.children.length * 36 + this.update() + } + + receiveProps(props: Props) { + this.state.active = props.active + this.state.isOpen = props.isOpen + } + + install() { + this.state.active = this.props.active + this.state.isOpen = this.props.isOpen + + this.props.items.forEach((item) => { + item.childrenHeight = item.isOpen ? item.children.length * 36 : 0 + }) + } + + @bind + select(item: SidebarItem) { + ;(this as ComponentWithRouter).router?.push(item.href.replace('#', '')) + + this.state.active = this.props.active + this.update() + this.fire('change', { + item, + }) + } + + renderChild(child: SidebarItem) { + return ( +
  • this.select(child)} + class={classNames( + 'py-1 h-9 indent-10 rounded hover:bg-accent flex items-center text-sm text-zinc-500 dark:text-zinc-200 cursor-pointer', + { + 'bg-accent': this.state.active === child.value, + }, + )} + > + + {child.text} + +
  • + ) + } + + renderToolTipChild(child: SidebarItem) { + return ( +
  • + + {child.text} + +
  • + ) + } + + render() { + return ( +
    +
    +
    +
    + + + +

    + OMI Admin +

    +
    +
    + +
    + +
    + {this.state.isOpen && ( +
    +

    重点公告位

    +

    + 公告信息,公告信息,公告信息,公告信息,公告信息,公告信息,公告信息,公告信息,公告信息,公告信息,。 +

    + +
    + )} +
    +
    + ) + } +} diff --git a/packages/omi-low-code/src/components/site-layout.tsx b/packages/omi-low-code/src/components/site-layout.tsx new file mode 100644 index 0000000000..26afe588d1 --- /dev/null +++ b/packages/omi-low-code/src/components/site-layout.tsx @@ -0,0 +1,108 @@ +import { Component, VNode, tag } from 'omi' +import './navbar.tsx' +import { navbarItems, activeMenuItem } from '../store.ts' +import { CustomizeButton } from './customize-button.tsx' +import tdesignLogo from '../assets/tdesign.svg?raw' + +/* Because the menu needs to update user avatars, a separate component is packaged for local updates */ +@tag('navbar-wrpapper') +class NavbarWrapper extends Component { + render() { + return ( + + ) + } +} + +export function SiteLayout(props: { hideFooter?: boolean; current?: string; children?: VNode | VNode[] }) { + return ( +
    +
    +
    +
    + +
    + +
    + +
    +
    +
    + + {props.children} + + {!props.hideFooter && ( +
    +
    +
    +

    友情链接1

    + +
    +
    +

    友情链接2

    + +
    +
    +

    友情链接3

    + +
    +
    +

    友情链接4

    + +
    +
    +
    + )} + + + + {!props.hideFooter && ( +
    +
    +

    © 2024 Tencent OMI. All rights reserved.

    +
    +
    + )} +
    + ) +} diff --git a/packages/omi-low-code/src/docs/config.ts b/packages/omi-low-code/src/docs/config.ts new file mode 100644 index 0000000000..5bbd6b457d --- /dev/null +++ b/packages/omi-low-code/src/docs/config.ts @@ -0,0 +1,59 @@ +export const docsConfig = { + zh: { + sidebar: [ + { + text: '介绍', + children: [ + { + text: '开始', + path: '#/product-docs/zh/getting-started', + value: 'getting-started', + }, + { + text: '响应式', + path: '#/product-docs/zh/reactivity', + value: 'reactivity', + }, + ], + }, + { + text: '核心概念', + children: [ + { + text: '属性', + path: '#/product-docs/zh/props', + value: 'props', + }, + ], + }, + ], + }, + en: { + sidebar: [ + { + text: 'Guide', + items: [ + { text: 'Introduction', link: '/introduction' }, + { text: 'Reactivity', link: '/reactivity' }, + { text: 'OOP & DOP', link: '/oop-dop' }, + ], + }, + { + text: 'Core API', + items: [ + { text: 'Props', link: '/props' }, + { text: 'CSS', link: '/css' }, + { text: 'Event', link: '/event' }, + { text: 'Ref', link: '/ref' }, + { text: 'Slot', link: '/slot' }, + { text: 'Provide-Inject', link: '/provide-inject' }, + { text: 'Lifecycle', link: '/lifecycle' }, + { text: 'Directive', link: 'directive' }, + { text: 'Mixin', link: 'mixin' }, + { text: 'Update', link: '/update' }, + { text: 'Cross Frameworks', link: '/cross-frameworks' }, + ], + }, + ], + }, +} diff --git a/packages/omi-low-code/src/docs/zh/getting-started.md b/packages/omi-low-code/src/docs/zh/getting-started.md new file mode 100644 index 0000000000..045e27f412 --- /dev/null +++ b/packages/omi-low-code/src/docs/zh/getting-started.md @@ -0,0 +1,454 @@ +# Omi - Web Components 框架 + +Omi (读音 /ˈomɪ/,类似于 欧米) 是 Web Components 框架,内置 JSX 和信号 signal/Signal 和大量开箱即用的组件和模板。 + +--- + +## 特性 + +- 📶 信号 **Signal** 驱动的响应式编程,[reactive-signal](https://github.com/Tencent/omi/tree/master/packages/reactive-signal)强力驱动 +- ⚡ **微小的**尺寸,**极速的**性能 +- 💗 [目标 100+ 模板](https://omi.cdn-go.cn/templates/latest/) & [OMI 模板源码](https://github.com/Tencent/omi/tree/master/packages/omi-templates) +- 🐲 [OMI Form](https://omi.cdn-go.cn/form/latest/docs/) & [OMI Form 游乐场](https://omi.cdn-go.cn/form/latest/play/) & [Lucide Omi 图标](https://github.com/omijs/lucide-omi) +- 🎉 [官方 OMIU 源码](https://github.com/Tencent/omi/tree/master/packages/omiu) 进行中.. & [OMIU 预览](https://omi.cdn-go.cn/omiu/latest/) +- 🌐 你要的一切都有: **Web Components**, **JSX**, Function Components, Router, Suspense, Directive, Tailwindcss... +- 💯 面向对象编程(OOP) 和 数据驱动编程(DOP) 两种范式都支持 +- 💒 使用 **Constructable Stylesheets** 轻松管理和共享样式 + +```tsx +import { render, signal, tag, Component, h } from 'omi' + +const count = signal(0) + +function add() { + count.value++ +} + +function sub() { + count.value-- +} + +@tag('counter-demo') +export class CounterDemo extends Component { + static css = 'span { color: red; }' + + render() { + return ( + <> + + {count.value} + + + ) + } +} +``` + +使用该组件: + +```tsx +import { h } from 'omi' +import './counter-demo' + +render(, document.body) + +// 或者 +import { CounterDemo, Other } from './counter-demo' +// 当需要导入其他东西的时候,防止被 tree shaking +render(, document.body) + +// 或者 +document.body.appendChild(document.createElement('counter-demo')) +``` + +## 安装 + +```bash +npm i omi +``` + +快速创建 Omi + Vite + TS/JS 项目: + +```bash +$ npx omi-cli init my-app # 或者创建js项目: npx omi-cli init-js my-app +$ cd my-app +$ npm start # develop +$ npm run build # release +``` + +快速创建 Omi + **Router** + **Signal** + **Suspense** + **Tailwindcss** + Vite + TS 项目: + +```bash +$ npx omi-cli init-spa my-app +$ cd my-app +$ npm start # develop +$ npm run build # release +``` + +### 包 + +- 核心包 + - [`omi`](https://github.com/Tencent/omi/tree/master/packages/omi) - Omi 框架的实现代码。 + - [`omi-form`](https://github.com/Tencent/omi/tree/master/packages/omi-form) - 强大易用且跨框架的表单解决方案。 + - [`lucide-omi`](https://github.com/omijs/lucide-omi) - Lucide 的 Omi 图标集合。 + - [`omiu`](https://github.com/Tencent/omi/tree/master/packages/omiu) - 希望打造最好的 web 组件。 + - [`omi-router`](https://github.com/Tencent/omi/tree/master/packages/omi-router) - 创建单页应用。 + - [`omi-cli`](https://github.com/omijs/cli) - 快速创建 Omi + Vite + TS/JS 项目。 +- 入门套件 (未发布到 npm) + - [`omi-elements`](https://github.com/Tencent/omi/tree/master/packages/omi-elements) - 官方推出 Tailwind Omi 套件。 + - [`omi-starter-spa`](https://github.com/Tencent/omi/tree/master/packages/omi-starter-spa) - 快速创建单页应用(SPA),内置了 Omi + OmiRouter + Tailwindcss + TypeScript + Vite + Prettier。 + - [`omi-starter-ts`](https://github.com/Tencent/omi/tree/master/packages/omi-starter-ts) - 基于 Vite + Omi + TypeScript 的模板。 + - [`omi-starter-tailwind`](https://github.com/Tencent/omi/tree/master/packages/omi-starter-tailwind) - 基于 Vite + Omi + TypeScript + Tailwindcss 的模板。 + - [`omi-starter-js`](https://github.com/Tencent/omi/tree/master/packages/omi-starter-js) - 基于 Vite + Omi + JavaScript 的模板。 + - [`omi-vue`](https://github.com/Tencent/omi/tree/master/packages/omi-vue) - Vue SFC + Vite + OMI + OMI-WeUI. +- 组件 + - [`omi-weui`](https://github.com/Tencent/omi/tree/master/packages/omi-weui) - Omi 版本的 WeUI。 + - [`omi-auto-animate`](https://github.com/Tencent/omi/tree/master/packages/omi-auto-animate) - Omi 版本的 @formkit/auto-animate。 + - [`omi-suspense`](https://github.com/Tencent/omi/tree/master/packages/omi-suspense) - 处理异步依赖。 +- 指令 + - [`omi-transition`](https://github.com/Tencent/omi/tree/master/packages/omi-transition) - 提供进入和离开动画。 + - [`omi-ripple`](https://github.com/Tencent/omi/tree/master/packages/omi-ripple) - 用于为用户界面元素添加涟漪(ripple)效果。当用户与元素交互(例如点击按钮)时,涟漪效果会从交互点开始扩散开来。 +- 综合性例子 (未发布到 npm) + - [`snake-game-2tier`](https://github.com/Tencent/omi/tree/master/packages/snake-game-2tier) - 基于 Omi `Signal` class 两层架构的贪吃蛇游戏。 + - [`snake-game-3tier`](https://github.com/Tencent/omi/tree/master/packages/snake-game-3tier) - 基于 Omi 响应是函数三层架构的贪吃蛇游戏。 + - [`omi-tutorial`](https://github.com/omijs/tutorial) - Omi 官方教程源代码。 + +**如果你想帮助项目发展,可以先简单地与同行分享!** + +- [Share via Dev.to]() +- [Share via Twitter](https://twitter.com/intent/tweet?text=Web%20Components%20Framework%20%F0%9F%8E%89http%3A%2F%2Fomijs.org%2F%0A%0A%20Everything%20you%20need%3A%20Web%20Components%2C%20JSX%2C%20Router%2C%20Suspense%2C%20Directive%2C%20Tailwindcss...%20%0A%0A%20Tailwind%20Element%20Omi%20UI%20KIT%3E%20%F0%9F%92%AFhttps%3A%2F%2Fomi.cdn-go.cn%2Felements%2Flatest%2F) +- [Share via Facebook](https://www.facebook.com/sharer/sharer.php?u=http%3A//omijs.org) +- [Share via LinkedIn](http://www.linkedin.com/shareArticle?url=http%3A%2F%2Fomijs.org%2F) +- [Share via Pinterest](https://www.pinterest.com/pin/create/button?url=http://omijs.org/&media=https://repository-images.githubusercontent.com/36606437/66abfcfb-096b-4c9d-a290-77165213e605&description=Omi-Web%20Componnets%20Framework) +- [Share via Reddit](https://reddit.com/submit?url=http://omijs.org/&title=web%20components%20framework) +- [Share via StumbleUpon](https://www.stumbleupon.com/submit?url=http://omijs.org/&title=web%20components%20framework) +- [Share via Vkontakte](https://vk.com/share.php?url=http://omijs.org/) +- [Share via Weibo](https://service.weibo.com/share/share.php?url=https://omijs.org/&title=web%20components%20framework) +- [Share via Hackernews](https://news.ycombinator.com/submitlink?u=http://omijs.org/&t=web%20components%20framework) + +多谢! + +## 使用 + +### TodoApp 使用响应式函数 + +> 数据驱动编程 + +在数据驱动编程中,我们将重点放在数据本身和对数据的操作上,而不是数据所在的对象或数据结构。这种编程范式强调的是数据的变化和流动,以及如何响应这些变化。基于响应式函数的 TodoApp 就是一个很好的例子,它使用了响应式编程的概念,当数据(即待办事项列表)发生变化时,UI 会自动更新以反映这些变化。 + +```tsx +import { render, signal, computed, tag, Component, h } from 'omi' + +const todos = signal([ + { text: 'Learn OMI', completed: true }, + { text: 'Learn Web Components', completed: false }, + { text: 'Learn JSX', completed: false }, + { text: 'Learn Signal', completed: false }, +]) + +const completedCount = computed(() => { + return todos.value.filter((todo) => todo.completed).length +}) + +const newItem = signal('') + +function addTodo() { + // api a,不会重新创建数组 + todos.value.push({ text: newItem.value, completed: false }) + todos.update() // 非值类型的数据更新需要手动调用 update 方法 + + // api b, 和上面的 api a 效果一样,但是会创建新的数组 + // todos.value = [...todos.value, { text: newItem.value, completed: false }] + + newItem.value = '' // 值类型的数据更新需会自动 update +} + +function removeTodo(index: number) { + todos.value.splice(index, 1) + todos.update() // 非值类型的数据更新需要手动调用 update 方法 +} + +@tag('todo-list') +class TodoList extends Component { + onInput = (event: Event) => { + const target = event.target as HTMLInputElement + newItem.value = target.value + } + + render() { + return ( + <> + + +
      + {todos.value.map((todo, index) => { + return ( +
    • + {' '} + +
    • + ) + })} +
    +

    Completed count: {completedCount.value}

    + + ) + } +} + +render(, document.body) +``` + +### TodoApp 使用信号类 Signal + +> 面向对象编程 + +在面向对象编程中,我们将重点放在对象上,对象包含了数据和操作数据的方法。这种编程范式强调的是对象之间的交互和协作,以及如何通过对象的封装、继承和多态性来组织和管理代码。基于响应式函数的 TodoApp 也可以使用面向对象的方式来实现,例如,我们可以创建一个 TodoList 类,这个类包含了待办事项列表的数据和操作这些数据的方法,以及一个 `update` 方法来更新 UI。 + +```tsx +import { render, Signal, tag, Component, h, computed } from 'omi' + +type Todo = { text: string; completed: boolean } + +class TodoApp extends Signal<{ todos: Todo[]; filter: string; newItem: string }> { + completedCount: ReturnType + + constructor(todos: Todo[] = []) { + super({ todos, filter: 'all', newItem: '' }) + this.completedCount = computed(() => this.value.todos.filter((todo) => todo.completed).length) + } + + addTodo = () => { + // api a + this.value.todos.push({ text: this.value.newItem, completed: false }) + this.value.newItem = '' + this.update() + + // api b, same as api a + // this.update((value) => { + // value.todos.push({ text: value.newItem, completed: false }) + // value.newItem = '' + // }) + } + + toggleTodo = (index: number) => { + const todo = this.value.todos[index] + todo.completed = !todo.completed + this.update() + } + + removeTodo = (index: number) => { + this.value.todos.splice(index, 1) + this.update() + } +} + +const todoApp = new TodoApp([ + { text: 'Learn OMI', completed: true }, + { text: 'Learn Web Components', completed: false }, + { text: 'Learn JSX', completed: false }, + { text: 'Learn Signal', completed: false }, +]) + +@tag('todo-list') +class TodoList extends Component { + onInput = (event: Event) => { + const target = event.target as HTMLInputElement + todoApp.value.newItem = target.value + } + + render() { + const { todos } = todoApp.value + const { completedCount, toggleTodo, addTodo, removeTodo } = todoApp + return ( + <> + + +
      + {todos.map((todo, index) => { + return ( +
    • + {' '} + +
    • + ) + })} +
    +

    Completed count: {completedCount.value}

    + + ) + } +} + +render(, document.body) +``` + +这里不讨论哪种方式(DOP,OOP)的好坏,使用 omi 两种方式都可以任意选择。 + +## 自动导入 h + +vite.config.js: + +```tsx +import { defineConfig } from 'vite' + +export default defineConfig({ + esbuild: { + jsxInject: "import { h } from 'omi'", + jsxFactory: 'h', + jsxFragment: 'h.f', + }, +}) +``` + +你可以在构建时候注入代码,这样就不用手动导出 `h`。 + +## 定义跨框架组件 + +在 Vue 中使用 Omi component 例子如下: + +![](https://omi.cdn-go.cn/s/latest/omi-vue.gif) + +my-counter.tsx: + +```tsx +import { tag, Component, h, bind } from 'omi' + +@tag('my-counter') +class MyCounter extends Component<{ count: number }> { + static props = { + count: { + type: Number, + default: 0, + changed(newValue, oldValue) { + this.setState({ count: newValue }) + } + } + } + + state = { + count: 1 + } + + @bind + sub() { + this.setState({ count: this.state.count - 1 }) + this.fire('change', this.state.count) + } + + @bind + add() { + this.setState({ count: this.state.count + 1 }) + this.fire('change', this.state.count) + } + + render() { + return ( + <> + + {this.state.count} + + + ) + } +} +``` + +### 在 Vue3 中使用 + +```html + + + +``` + +如果在 omi 组件中使用: + +```ts +this.fire('count-change', this.state.count) +``` + +在 vue 中使用组件监听事件如下: + +```html + +``` + +### 在 React 中使用 + +```tsx +import { useState, useRef, useEffect } from 'react' +import useEventListener from '@use-it/event-listener' +import './my-counter' + +function App() { + const [count, setCount] = useState(100) + const myCounterRef = useRef(null) + + useEffect(() => { + const counter = myCounterRef.current + if (counter) { + const handleChange = (evt) => { + setCount(evt.detail) + } + counter.addEventListener('change', handleChange) + return () => { + counter.removeEventListener('change', handleChange) + } + } + }, []) + + return ( + <> +

    Omi + React

    + +
    + +
    + + ) +} + +export default App +``` + +## License + +MIT © Tencent diff --git a/packages/omi-low-code/src/docs/zh/props.md b/packages/omi-low-code/src/docs/zh/props.md new file mode 100644 index 0000000000..fc0104d43a --- /dev/null +++ b/packages/omi-low-code/src/docs/zh/props.md @@ -0,0 +1,107 @@ +# 属性 Props + +## 用法 + +通过 Props 向子组件传递数据,比如: + +```tsx +import { Component, tag, render } from 'omi' + +@tag('my-element') +class MyElement extends Component { + render(props) { + return

    Hello, {props.name}!

    + } +} +``` + +使用元素: + +```tsx + +``` + +你也可以传任意类型的数据给 props: + +```tsx +@tag('my-element') +class MyElement extends Component { + render(props) { + return

    Hello, {props.myObj.name}!

    + } +} +``` + +使用元素: + +```tsx + +``` + +你可以通过静态属性 `static defaultProps` 来设置默认值,使用 `static propTypes` 来设置类型: + +```tsx +@tag('my-element') +class MyElement extends Component { + static defaultProps = { + name: 'Omi', + myAge: 18, + } + + // 不是必须定义,当您使用 omi 单独写组件时候才需要定义 propTypes + static propTypes = { + name: String, + myAge: Number, + // 也支持多类型 + color: [String, Array], + } + + render(props) { + return ( +

    + Hello, {props.name}! Age {props.myAge} +

    + ) + } +} +``` + +需要特别注意,如果你的自定义元素想要直接在其他框架或者无框架的情况下原生使用,请一定要加上 `static propTypes` 才能生效。比如,这样就可以直接在 body 中使用: + +```html + + + +``` + +## 合并定义 + +如果不想单独定义,可以合并到 `static props` 一起定义,该定义也会合并已经存在的定义。 + +```tsx + static props = { + count: { + type: Number, + default: 0, + changed(newValue, oldValue) { + this.state.count = newValue + this.update() + } + } + } +``` + +props 的 ts 类型定义如下: + +```ts +type PropType = String | Number | Boolean | Array | Object | Array + +type Props = { + [key: string]: { + type?: PropType + default?: any + reflect?: boolean | ((value: any) => any) + changed?: (newValue: any, oldValue: any) => void + } +} +``` diff --git a/packages/omi-low-code/src/docs/zh/reactivity.md b/packages/omi-low-code/src/docs/zh/reactivity.md new file mode 100644 index 0000000000..2d1ac80479 --- /dev/null +++ b/packages/omi-low-code/src/docs/zh/reactivity.md @@ -0,0 +1,96 @@ +# 响应式 + +## 深入响应式信号 + +在本教程中,我们将学习如何使用上面的代码构建一个简单的响应式系统。我们将介绍 signal, computed 和 effect 的概念以及如何使用它们来构建响应式应用程序。 + +## 了解 signal + +signal 是一个包装了值的对象,signal 是一个具有 .value 属性的对象,该属性保存了一个值通过 `.value` 访问。这有一个重要的特性:信号的值可以改变,但信号本身始终保持不变。它允许你观察和修改这个值。当值发生变化时,它会通知所有依赖于这个值的函数。我们可以使用 `signal` 函数来创建一个 signal 对象。 + +```tsx +const counter = signal(0) +``` + +上面的代码创建了一个 signal 对象,其初始值为 0。我们可以使用 `value` 属性来访问和修改 signal 的值。 + +```tsx +console.log(counter.value) // 输出 0 +``` + +## 使用 computed 创建计算属性 + +computed 是一个根据其他 signal 值计算出的 Signal。当依赖的 signal 值发生变化时,computed signal 的值将自动更新。 + +我们可以使用 `computed` 函数来创建一个 computed Signal。 + +```tsx +const counter = signal(0) +const doubledCounter = computed(() => counter.value * 2) + +console.log(doubledCounter.value) // 输出 0 + +counter.value = 1 +console.log(doubledCounter.value) // 输出 2 +``` + +上面的代码创建了一个名为 doubledCounter 的 computed Signal,它的值始终是 counter 值的两倍。 + +## 使用 peek 偷看 signal 值 + +```tsx +const name = signal('Dnt') +const surname = signal('Zhang') +const fullName = computed(() => name.peek() + ' ' + surname.value) + +let effectTimes = 0 +effect(() => { + // 访问 fullName.value 会触发依赖 + fullName.value + effectTimes++ +}) + +name.value = 'John' +// 因为 peek 不会触发依赖,所以 effectTimes 仍然是 1 +expect(effectTimes).toBe(1) +``` + +## 使用 effect 跟踪依赖关系 + +effect 是一个允许我们在函数中跟踪 signal 值变化的功能。当我们在 effect 函数中访问一个 signal 的值时,该函数将自动跟踪这个值的变化。当 signal 值发生变化时,Effect 函数将重新运行。 + +我们可以使用 `effect` 函数来创建一个 Effect。 + +```tsx +const counter = signal(0) + +const dispose = effect(() => { + console.log(`Counter: ${counter.value}`) +}) + +// 停止跟踪依赖关系 +dispose() +``` + +上面的代码将在 counter 值发生变化时输出新的值。例如,当我们将 counter 值更改为 1 时,Effect 函数将输出 "Counter: 1"。 + +## 使用 update 触发 effect + +```tsx +const testSignal = signal([1, 2, 3]) +let effectTimes = 0 +effect(() => { + console.log(testSignal.value) + effectTimes++ +}) +testSignal.value.push(4) +// 和 testSignal.value = testSignal.value 一样会触发 effect +testSignal.update() +expect(effectTimes).toBe(2) +``` + +## 总结 + +在本教程中,我们学习了如何使用 signal, computed 和 effect 构建响应式系统。我们了解了如何创建 signal 对象,如何使用 effect 函数跟踪依赖关系,如何使用 computed 创建计算属性,以及如何使用 batch 进行批处理更新。 + +现在,您已经了解了如何使用这些基本概念来构建响应式应用程序。尝试使用这些知识创建您自己的响应式系统,并不断学习和实践以提高您的技能。 diff --git a/packages/omi-low-code/src/index.css b/packages/omi-low-code/src/index.css new file mode 100644 index 0000000000..cd60a20341 --- /dev/null +++ b/packages/omi-low-code/src/index.css @@ -0,0 +1,69 @@ +body { + margin: 0; +} + +:root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --primary: 217 100% 43%; + --primary-foreground: 210 40% 98%; + + --danger: 3 64% 55%; + --warning: 27 81% 49%; + --success: 155 58% 41%; + + --secondary: 0, 0%, 90%; + --secondary-foreground: 0, 0%, 20%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --accent: 0 0% 95%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 40% 98%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + --ring: 222.2 84% 4.9%; + + --radius: 0.5rem; +} + +.dark { + --background: 0 0% 10%; + --foreground: 0 0% 80%; + + --card: 0 0% 14%; + --card-foreground: 0 0% 90%; + + --popover: 0 0% 14%; + --popover-foreground: 0 0% 90%; + + /* --primary: 219 100% 43%; */ + --primary-foreground: 0 0% 85%; + + --secondary: 0, 0%, 40%; + --secondary-foreground: 0, 0%, 80%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --accent: 0 0% 35%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --border: 0 0% 30%; + --input: 0 0% 30%; + --ring: 212.7 26.8% 83.9%; +} diff --git a/packages/omi-low-code/src/main.tsx b/packages/omi-low-code/src/main.tsx new file mode 100644 index 0000000000..98ccd1b407 --- /dev/null +++ b/packages/omi-low-code/src/main.tsx @@ -0,0 +1,12 @@ +import { routes } from './routes' +import { Router } from 'omi-router' +import './tailwind/index' + +const router = new Router({ + routes, + renderTo: '#app', +}) + +router.afterEach(() => { + window.refreshDark() +}) diff --git a/packages/omi-low-code/src/pages/about.tsx b/packages/omi-low-code/src/pages/about.tsx new file mode 100644 index 0000000000..64c8985df1 --- /dev/null +++ b/packages/omi-low-code/src/pages/about.tsx @@ -0,0 +1,71 @@ +export function About() { + return ( +
    +
    +

    关于我们

    +
    + 头像4 + 头像3 + 头像3 + 头像1 + 头像2 + 头像3 +
    +

    + 我们是一个专注于为客户提供优质产品和服务的公司。成立于 20XX + 年,我们已经在行业中取得了显著的成就,赢得了广泛的客户认可。 +

    +

    + 我们的团队由一群充满激情、富有创造力的专业人士组成,他们致力于通过不断创新和改进,为客户提供卓越的解决方案。 +

    +

    我们的使命是成为行业的领导者,为客户提供最佳的产品和服务,帮助他们实现业务目标。

    +
    + +
    +

    关于公司

    +

    + 我们是一个专注于为客户提供优质产品和服务的公司。成立于 20XX + 年,我们已经在行业中取得了显著的成就,赢得了广泛的客户认可。 +

    +

    + 我们的团队由一群充满激情、富有创造力的专业人士组成,他们致力于通过不断创新和改进,为客户提供卓越的解决方案。 +

    +

    我们的使命是成为行业的领导者,为客户提供最佳的产品和服务,帮助他们实现业务目标。

    +
    +
    +

    关于愿景

    +

    + 我们的愿景是通过提供卓越的产品和服务,成为全球领先的企业之一。我们希望建立一个可持续发展的企业,为全球客户创造价值,同时为员工提供一个充满挑战和机会的工作环境。 +

    +

    + 我们相信,通过专注于客户需求,持续创新和改进,以及致力于实现我们的愿景,我们将能够在竞争激烈的市场中保持领先地位,并为所有利益相关者创造长期价值。 +

    +

    如果您有任何问题或建议,请随时与我们联系,我们期待与您合作!

    +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/admin/chart.tsx b/packages/omi-low-code/src/pages/admin/chart.tsx new file mode 100644 index 0000000000..f0ef16c216 --- /dev/null +++ b/packages/omi-low-code/src/pages/admin/chart.tsx @@ -0,0 +1,85 @@ +import { tag, Component } from 'omi' +import * as echarts from 'echarts/core' +import { LineChart } from 'echarts/charts' +import { GridComponent, TooltipComponent, ToolboxComponent } from 'echarts/components' +import { CanvasRenderer } from 'echarts/renderers' + +// 注册必须的组件 +echarts.use([LineChart, GridComponent, TooltipComponent, ToolboxComponent, CanvasRenderer]) + +export function createLineChart(container: HTMLElement, option: echarts.EChartsCoreOption) { + const chart = echarts.init(container) + chart.setOption(option) + return chart +} + +@tag('admin-chart') +export class AdminChart extends Component { + render() { + return ( +
    + {Array.from({ length: 20 }).map((_, i) => ( +
    (this.chartDivs[i] = e)}>
    + ))} +
    + ) + } + + chartDivs: Array = [] + charts: Array = [] + + installed() { + const option = { + xAxis: { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + }, + grid: { + x: 40, //默认是80px + y: 20, //默认是60px + x2: 20, //默认80px + y2: 30, //默认60px + }, + yAxis: { + type: 'value', + }, + series: [ + { + data: [], + type: 'line', + }, + ], + } + + this.chartDivs.forEach((div, i) => { + if (div) { + setTimeout(() => { + option.series[0].data = Array.from({ length: 7 }).map((): number => { + return this.random() + }) as any + this.charts[i] = createLineChart(div, option) + }, i * 50) + } + }) + + // Add a window resize event listener to update the chart dimensions + window.addEventListener('resize', this.onWindowResize) + } + + random(): number { + return Math.floor(Math.random() * 1000) + } + + onWindowResize = () => { + this.charts.forEach((chart) => { + if (chart) { + chart.resize() + } + }) + } + + // Remove the event listener when the component is unmounted + uninstall() { + window.removeEventListener('resize', this.onWindowResize) + } +} diff --git a/packages/omi-low-code/src/pages/admin/home.tsx b/packages/omi-low-code/src/pages/admin/home.tsx new file mode 100644 index 0000000000..b080aaf406 --- /dev/null +++ b/packages/omi-low-code/src/pages/admin/home.tsx @@ -0,0 +1,48 @@ +export function Home() { + return ( +
    +
    +
    +
    + 1 +
    +
    + 2 +
    +
    + 3 +
    +
    + 4 +
    +
    + +
    +
    + 5 +
    +
    + 6 +
    +
    + +
    +
    + 7 +
    +
    + 8 +
    +
    + +
    +
    +
    +
    9
    +
    10
    +
    +
    +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/components.tsx b/packages/omi-low-code/src/pages/components.tsx new file mode 100644 index 0000000000..f90ed69020 --- /dev/null +++ b/packages/omi-low-code/src/pages/components.tsx @@ -0,0 +1,151 @@ +import '../components/omiu/calendar/index' +import '../components/omiu/button' +import '../components/omiu/switch' +import '../components/omiu/breadcrumb' + +export function Questionnaire() { + return ( +
    +

    Button 按钮

    +

    按钮用于开启一个闭环的操作任务,如“删除”对象、“购买”商品等。

    + +

    按钮 Variant 和 Theme

    + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + +

    图标按钮

    + +
    +
    + + + 新建 + + + 上传文件 + + + + + 搜索 + +
    +
    + +

    不同状态的按钮

    + +
    +
    + + 禁用的按钮 + + + 加载中 + +
    +
    + +
    +

    Switch 开关

    +

    用于两个互斥选项,用来打开或关闭选项的选择控件。

    + +

    不同尺寸

    +
    + + + +
    + +

    禁用

    +
    + + + +
    + +
    +

    Breadcrumb 面包屑

    +

    显示当前页面在系统层级结构的位置,并能返回之前任意层级的页面。

    + +

    默认

    +
    + +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/components/breadcrumb.tsx b/packages/omi-low-code/src/pages/components/breadcrumb.tsx new file mode 100644 index 0000000000..73e9d65117 --- /dev/null +++ b/packages/omi-low-code/src/pages/components/breadcrumb.tsx @@ -0,0 +1,29 @@ +import '@/components/omiu/breadcrumb' + +export function Questionnaire() { + return ( +
    +

    Breadcrumb 面包屑

    +

    显示当前页面在系统层级结构的位置,并能返回之前任意层级的页面。

    + +

    默认

    +
    + +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/components/button.tsx b/packages/omi-low-code/src/pages/components/button.tsx new file mode 100644 index 0000000000..53bf991e57 --- /dev/null +++ b/packages/omi-low-code/src/pages/components/button.tsx @@ -0,0 +1,107 @@ +import '@/components/omiu/button' + +export function Questionnaire() { + return ( +
    +

    Button 按钮

    +

    按钮用于开启一个闭环的操作任务,如“删除”对象、“购买”商品等。

    + +

    按钮 Variant 和 Theme

    + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + 填充按钮 + + 描边按钮 + + + 虚框按钮 + + + 文字按钮 + +
    +
    + +

    图标按钮

    + +
    +
    + + + 新建 + + + 上传文件 + + + + + 搜索 + +
    +
    + +

    不同状态的按钮

    + +
    +
    + + 禁用的按钮 + + + 加载中 + +
    +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/components/switch.tsx b/packages/omi-low-code/src/pages/components/switch.tsx new file mode 100644 index 0000000000..39ecf4f598 --- /dev/null +++ b/packages/omi-low-code/src/pages/components/switch.tsx @@ -0,0 +1,24 @@ +import '@/components/omiu/switch' + +export function Questionnaire() { + return ( +
    +

    Switch 开关

    +

    用于两个互斥选项,用来打开或关闭选项的选择控件。

    + +

    不同尺寸

    +
    + + + +
    + +

    禁用

    +
    + + + +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/home.tsx b/packages/omi-low-code/src/pages/home.tsx new file mode 100644 index 0000000000..3cc837e9d4 --- /dev/null +++ b/packages/omi-low-code/src/pages/home.tsx @@ -0,0 +1,163 @@ +import { isDark } from '../store.ts' +import '../components/omiu/button.tsx' + +export function Home() { + return ( + <> +
    +
    +

    + OMI Tailwind Templates +

    +

    + 100+ 免费模板,对外站点、对内管理系统,开箱即用,自由定制,开源免费 +

    +
    + + 开始使用 + + + 源代码 + + + 🎉 管理系统 + +
    +
    +
    + +
    +
    +
    +
    + 🔪 +
    +

    刀锋锐利

    +

    + Tailwind CSS为基础的响应式布局站点和管理系统,直接复制粘贴,到处都能用 +

    +
    +
    +
    + 🎁 +
    +

    开箱即用

    +

    + 100+的模板,直接修修改改,打造成您自己的站点,也可以只配置 JSON,不需要任何前端知识 +

    +
    + +
    +
    + ⚙️ +
    +

    自由定制

    +

    + 颜色、圆角、白天黑夜模式、多语言切换,自由设定,所有模板都是可扩展的 JSON +

    +
    +
    +
    + +
    +
    +

    标题

    +

    + 这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。 +

    +
    + 按钮1 + + 按钮2 + +
    +
    +
    + 示例图片 +
    +
    + +
    +
    + 示例图片 +
    +
    +

    标题

    +

    + 这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。 +

    +
    +
    + +
    +
    +

    卡片1

    +

    这里是卡片1的描述内容。

    +
    +
    +

    卡片2

    +

    这里是卡片2的描述内容。

    +
    +
    +

    卡片3

    +

    这里是卡片3的描述内容。

    +
    +
    +

    卡片1

    +

    这里是卡片1的描述内容。

    +
    +
    +

    卡片2

    +

    这里是卡片2的描述内容。

    +
    +
    +

    卡片3

    +

    这里是卡片3的描述内容。

    +
    +
    + +
    +
    +
    +

    标题

    +

    这里是描述内容。

    +
    + 按钮1 + + 按钮2 + +
    +
    +
    + + ) +} diff --git a/packages/omi-low-code/src/pages/icons.tsx b/packages/omi-low-code/src/pages/icons.tsx new file mode 100644 index 0000000000..0d1e46c6ad --- /dev/null +++ b/packages/omi-low-code/src/pages/icons.tsx @@ -0,0 +1,34 @@ +import * as copyToClipboard from 'copy-to-clipboard' +import { showMsg } from '../components/omiu/msg' + +// @ts-ignore +const copy = copyToClipboard.default || copyToClipboard +const icons = + 'activity,add-and-subtract,add-circle,add-rectangle,add,address-book,adjustment,airplay-wave,alarm-add,alarm-off,alarm,align-top,align-vertical,alpha,analytics,anchor,angry,animation-1,animation,anticlockwise,api,app,apple,application,architecture-hui-style,archway-1,archway,arrow-down-circle,arrow-down-rectangle,arrow-down,arrow-left-circle,arrow-left-down-circle,arrow-left-down,arrow-left-right-1,arrow-left-right-2,arrow-left-right-3,arrow-left-right-circle,arrow-left-up-circle,arrow-left-up,arrow-left,arrow-right-circle,arrow-right-down-circle,arrow-right-down,arrow-right-up-circle,arrow-right-up,arrow-right,arrow-triangle-down-filled,arrow-triangle-down,arrow-triangle-up-filled,arrow-triangle-up,arrow-up-circle,arrow-up-down-1,arrow-up-down-2,arrow-up-down-3,arrow-up-down-circle,arrow-up,artboard,article,assignment-checked,assignment-code,assignment-error,assignment-user,assignment,attach,attic-1,attic,audio,awkward,backtop-rectangle,backtop,backup,backward,bad-laugh,bamboo-shoot,banana,barbecue,barcode-1,barcode,base-station,battery-add,battery-charging,battery-low,battery,bean,beer,beta,bifurcate,bill,blockchain,bluetooth,bone,book-open,book,bookmark-add,bookmark-checked,bookmark-double,bookmark-minus,bookmark,braces,brackets,bread,bridge-1,bridge-2,bridge-3,bridge-4,bridge-5,bridge-6,bridge,brightness-1,brightness,broccoli,browse-gallery,browse-off,browse,brush,bug-report,bug,building-1,building-2,building-3,building-4,building-5,building,bulletpoint,button,cabbage,cake,calculation-1,calculation,calculator-1,calculator,calendar-1,calendar-2,calendar-edit,calendar-event,calendar,call-1,call-cancel,call-forwarded,call-incoming,call-off,call,calm-1,calm,camera-1,camera-2,camera-off,camera,candy,card,cardmembership,caret-down-small,caret-down,caret-left-small,caret-left,caret-right-small,caret-right,caret-up-small,caret-up,cart-add,cart,cast,castle-1,castle-2,castle-3,castle-4,castle-5,castle-6,castle-7,castle,cat,catalog,cd,celsius,center-focus-strong,centimeter,certificate-1,certificate,chart-3d,chart-add,chart-analytics,chart-area-multi,chart-area,chart-bar,chart-bubble,chart-colum,chart-combo,chart-line-data-1,chart-line-data,chart-line-multi,chart-line,chart-maximum,chart-median,chart-minimum,chart-pie,chart-radar,chart-radial,chart-ring-1,chart-ring,chart-scatter,chart-stacked,chart,chat-add,chat-bubble-1,chat-bubble-add,chat-bubble-error,chat-bubble-help,chat-bubble-history,chat-bubble-locked,chat-bubble-smile,chat-bubble,chat-checked,chat-clear,chat-double,chat-error,chat-heart,chat-message,chat-off,chat-poll,chat-setting,chat,check-circle-filled,check-circle,check-double,check-rectangle-filled,check-rectangle,check,cheese,cherry,chevron-down-circle,chevron-down-double-s,chevron-down-double,chevron-down-rectangle,chevron-down-s,chevron-down,chevron-left-circle,chevron-left-double-s,chevron-left-double,chevron-left-rectangle,chevron-left-s,chevron-left,chevron-right-circle,chevron-right-double-s,chevron-right-double,chevron-right-rectangle,chevron-right-s,chevron-right,chevron-up-circle,chevron-up-double-s,chevron-up-double,chevron-up-rectangle,chevron-up-s,chevron-up,chicken,chili,chimney-1,chimney-2,chimney,chinese-cabbage,church,circle,city-1,city-10,city-11,city-12,city-13,city-14,city-15,city-2,city-3,city-4,city-5,city-6,city-7,city-8,city-9,city-ancient-1,city-ancient-2,city-ancient,city,clear-formatting-1,clear-formatting,clear,close-circle-filled,close-circle,close-octagon,close-rectangle,close,cloud-download,cloud-upload,cloud,cloudy-day,cloudy-night-rain,cloudy-night,cloudy-rain,cloudy-sunny,code-1,code-off,code,cola,collage,collection,color-invert,combination,command,compass-1,compass,component-breadcrumb,component-checkbox,component-divider-horizontal,component-divider-vertical,component-dropdown,component-grid,component-input,component-layout,component-radio,component-space,component-steps,component-switch,constraint,contrast-1,contrast,control-platform,cooperate,coordinate-system,copy,copyright,corn,coupon,course,cpu,crack,creditcard-add,creditcard-off,creditcard,crooked-smile,cry-and-laugh,cry-loudly,css3,cucumber,currency-exchange,cursor,curtain,curve,cut-1,cut,dam-1,dam-2,dam-3,dam-4,dam-5,dam-6,dam-7,dam,dart-board,dashboard-1,dashboard,data-base,data-checked,data-display,data-error,data-search,data,delete-1,delete-time,delete,delta,depressed,desktop-1,desktop,despise,device,discount-filled,discount,dissatisfaction,divide,dividers-1,dividers,doge,double-storey,download-1,download,downscale,drag-drop,drag-move,drink,drumstick,dv,dvd,earphone,earth,edit-1,edit-2,edit-off,edit,education,eggplant,ellipsis,emo-emotional,enter,equal,error-circle-filled,error-circle,error-triangle,error,excited-1,excited,expand-horizontal,expand-vertical,explore-off,explore,exposure,extension-off,extension,face-retouching,fact-check,fahrenheit-scale,feel-at-ease,ferocious,ferris-wheel,file-1,file-add-1,file-add,file-attachment,file-blocked,file-code-1,file-code,file-copy,file-download,file-excel,file-export,file-icon,file-image,file-import,file-locked,file-minus,file-music,file-onenote,file-outlook,file-paste,file-pdf,file-powerpoint,file-restore,file-safety,file-search,file-setting,file-teams,file-unknown,file-unlocked,file-word,file-zip,file,fill-color-1,fill-color,film-1,film,filter-1,filter-2,filter-3,filter-clear,filter-off,filter,fingerprint-1,fingerprint-2,fingerprint-3,fingerprint,fish,flag-1,flag-2,flag-3,flag-4,flag,flashlight,flight-landing,flight-takeoff,flip-smiling-face,flip-to-back,flip-to-front,focus,fog-night,fog-sunny,fog,folder-1,folder-add-1,folder-add,folder-blocked,folder-details,folder-export,folder-import,folder-locked,folder-minus,folder-move,folder-off,folder-open-1,folder-open,folder-search,folder-setting,folder-shared,folder-unlocked,folder-zip,folder,forest,fork,form,format-horizontal-align-bottom,format-horizontal-align-center,format-horizontal-align-top,format-vertical-align-center,format-vertical-align-left,format-vertical-align-right,forward,frame-1,frame,fries,fullscreen-1,fullscreen-2,fullscreen-exit-1,fullscreen-exit,fullscreen,function-curve,functions-1,functions,gamepad-1,gamepad,gamma,garlic,gender-female,gender-male,gesture-applause,gesture-click,gesture-down,gesture-expansion,gesture-left-slip,gesture-left,gesture-pray-1,gesture-pray,gesture-press,gesture-ranslation-1,gesture-ranslation,gesture-right-slip,gesture-right,gesture-slide-up,gesture-up-1,gesture-up-2,gesture-up-and-down,gesture-up,gesture-wipe-down,gift,giggle,git-branch,git-commit,git-merge,git-pull-request,git-repository-commits,git-repository-private,git-repository,gps,grape,greater-than-or-equal,greater-than,green-onion,grid-add,grid-view,guitar,hamburger,happy,hard-disk-storage,hard-drive,hashtag,hd,heart-filled,heart,help-circle-filled,help-circle,help-rectangle,help,highlight-1,highlight,history-setting,history,home,hospital-1,hospital,hotspot-wave,hourglass,houses-1,houses-2,houses,html5,https,ice-cream,icon,image-1,image-add,image-edit,image-error,image-off,image-search,image,indent-left,indent-right,indicator,info-circle-filled,info-circle,ink,install-desktop,install-mobile,install,institution-checked,institution,internet,ipod,joyful,jump-off,jump,keyboard,laptop,layers,layout,leaderboard,lemon-slice,lemon,less-than-or-equal,less-than,letters-a,letters-b,letters-c,letters-d,letters-e,letters-f,letters-g,letters-h,letters-i,letters-j,letters-k,letters-l,letters-m,letters-n,letters-o,letters-p,letters-q,letters-r,letters-s,letters-t,letters-u,letters-v,letters-w,letters-x,letters-y,letters-z,lightbulb-circle,lightbulb,lighthouse-1,lighthouse-2,lighthouse,lighting-circle,line-height,link-1,link-unlink,link,liquor,list,load,loading,location-1,location-enlargement,location-error,location-parking-place,location-reduction,location-setting,location,lock-off,lock-on,lock-time,login,logo-adobe-illustrate,logo-adobe-photoshop-1,logo-adobe-photoshop,logo-android,logo-apple-filled,logo-apple,logo-behance,logo-chrome-filled,logo-chrome,logo-cinema4d,logo-codepen,logo-codesandbox,logo-dribbble,logo-facebook,logo-figma,logo-framer,logo-github-filled,logo-github,logo-gitlab,logo-ie-filled,logo-ie,logo-instagram,logo-qq,logo-twitter,logo-wechat-stroke,logo-wechat,logo-wecom,logo-windows-filled,logo-windows,logo-youtube,logout,look-around,loudspeaker,mail,map-3d,map-add,map-aiming,map-blocked,map-bubble,map-cancel,map-chat,map-checked,map-collection,map-connection,map-distance,map-double,map-edit,map-grid,map-information-1,map-information-2,map-information,map-location,map-locked,map-marked,map-navigation,map-outline,map-route-planning,map-ruler,map-safety,map-search-1,map-search,map-setting,map-unlocked,map,mark-as-unread,markup,mathematics,measurement-1,measurement-2,measurement,meat-pepper,media-library,member,menu-application,menu-fold,menu-unfold,menu,merge-cells,microphone-1,microphone-2,microphone,milk,minus-circle-filled,minus-circle,minus-rectangle-filled,minus-rectangle,minus,mirror,mobile-blocked,mobile-list,mobile-navigation,mobile-shortcut,mobile-vibrate,mobile,mode-dark,mode-light,module,money,monument,moon-fall,moon-rising,moon,more,mosque-1,mosque,mouse,move-1,move,movie-clapper,multiply,museum-1,museum-2,museum,mushroom-1,mushroom,music-1,music-2,music-rectangle-add,music,navigation-arrow,next,no-expression,noodle,notification-add,notification-circle,notification-error,notification-filled,notification,numbers-0-1,numbers-0,numbers-1-1,numbers-1,numbers-2-1,numbers-2,numbers-3-1,numbers-3,numbers-4-1,numbers-4,numbers-5-1,numbers-5,numbers-6-1,numbers-6,numbers-7-1,numbers-7,numbers-8-1,numbers-8,numbers-9-1,numbers-9,nut,object-storage,open-mouth,opera,order-adjustment-column,order-ascending,order-descending,outbox,page-first,page-head,page-last,palace-1,palace-2,palace-3,palace-4,palace,palette-1,palette,panorama-horizontal,panorama-vertical,pantone,parabola,parentheses,paste,patio,pause-circle-filled,pause-circle-stroke,pause-circle,pause,pea,peach,pear,pearl-of-the-orient,pen-ball,pen-brush,pen-mark,pen-quill,pen,pending,percent,personal-information,phone-locked,phone-search,pi,piano,pin-filled,pin,play-circle-filled,play-circle-stroke-add,play-circle-stroke,play-circle,play-demo,play-rectangle,play,plus,popsicle,portrait,pout,poweroff,precise-monitor,previous,print,pumpkin,pyramid-maya,pyramid,qrcode,quadratic,questionnaire,queue,radar,radio-1,radio-2,radish,rain-heavy,rain-light,rain-medium,rainbow,rectangle,refresh,relation,relativity,remote-wave,remove,replay,rice-ball,rice,roast,rocket,rollback,rollfront,root-list,rotate-locked,rotate,rotation,round,router-wave,rss,ruler,sailing-hotel,sandwich,saturation,sausage,save,saving-pot,scan,screen-4k,screencast,screenshot,scroll-bar,sd-card-1,sd-card,search-error,search,secured,send-cancel,send,sensors-1,sensors-2,sensors-off,sensors,serenity,server,service,setting-1,setting,share-1,share,sharpness,shield-error,shimen,shop-1,shop-2,shop-3,shop-4,shop-5,shop,shrimp,shrink-horizontal,shrink-vertical,shutter,shutup,sim-card-1,sim-card-2,sim-card,sinister-smile,sip,slash,sleep,slice,slideshow,smile,sneer,snowflake,sonic,sound-down,sound-high,sound-low,sound-mute-1,sound-mute,sound-up,sound,space,speechless-1,star-filled,star,statue-of-jesus,sticky-note,stop-circle-filled,stop-circle-stroke,stop-circle,stop,store,street-road-1,street-road,subtitle,subway-line,sum,sun-fall,sun-rising,sunny,support,surprised-1,surprised,swap-left,swap-right,swap,swear-1,swear-2,system-2,system-3,system-application,system-blocked,system-code,system-components,system-coordinate,system-device,system-interface,system-location,system-locked,system-log,system-marked,system-messages,system-regulation,system-search,system-setting,system-storage,system-sum,system-unlocked,tab,table-1,table-2,table-add,table-split,table,tag,tangerinr,tape,task-1,task-add-1,task-add,task-checked,task-error,task-location,task-marked,task-setting,task-visible,task,tea,teahouse,template,temple,terminal-rectangle-1,terminal-rectangle,terminal-window,terminal,textbox,textformat-bold,textformat-color,textformat-italic,textformat-strikethrough,textformat-underline,textformat-wrap,theaters,thumb-down-1,thumb-down-2,thumb-down,thumb-up-1,thumb-up-2,thumb-up,thunder,thunderstorm-night,thunderstorm-sunny,thunderstorm,ticket,time-filled,time,tips-double,tips,tomato,tools-circle,tools,tornado,tower-1,tower-2,tower-3,tower-clock,tower,town,traffic-events,traffic,transform-1,transform-2,transform-3,transform,translate-1,translate,tree-list,tree-round-dot-vertical,tree-round-dot,tree-square-dot-vertical,tree-square-dot,trending-down,trending-up,tv-1,tv-2,tv,typography,uncomfortable-1,uncomfortable-2,uncomfortable,undertake-delivery,undertake-environment-protection,undertake-hold-up,undertake-transaction,undertake,unfold-less,unfold-more,unhappy-1,unhappy,uninstall,upload-1,upload,upscale,usb,user-1,user-add,user-arrow-down,user-arrow-left,user-arrow-right,user-arrow-up,user-avatar,user-blocked,user-business,user-checked-1,user-checked,user-circle,user-clear,user-error-1,user-invisible,user-list,user-locked,user-marked,user-password,user-safety,user-search,user-setting,user-talk-1,user-talk-off-1,user-talk,user-time,user-transmit,user-unknown,user-unlocked,user-vip,user-visible,user,usergroup-add,usergroup-clear,usergroup,vehicle,verified,verify,video-camera-1,video-camera-2,video-camera-dollar,video-camera-minus,video-camera-music,video-camera-off,video-camera,video-library,video,view-agenda,view-column,view-in-ar,view-list,view-module,visual-recognition,wallet,watch,watermelon,wave-left,wave-right,wealth-1,wealth,widget,wifi-1,wifi-off-1,wifi-off,wifi,window-1,window,windy-rain,windy,wink,work-history,work-off,work,wry-smile,zoom-in,zoom-out'.split( + ',', + ) + +export function Icons() { + return ( +
    +
    + {icons.map((icon) => ( +
    { + copy(``) + showMsg({ + type: 'success', + content: 'Copied!', + }) + }} + > + +

    {icon}

    +
    + ))} +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/product-docs.tsx b/packages/omi-low-code/src/pages/product-docs.tsx new file mode 100644 index 0000000000..f9ff0cb8d8 --- /dev/null +++ b/packages/omi-low-code/src/pages/product-docs.tsx @@ -0,0 +1,222 @@ +import '../components/md-docs' +import '../components/docs-sidebar' +import { Component, tag, bind, classNames } from 'omi' +import { docsConfig } from '../docs/config' +import * as MarkdownIt from 'markdown-it' + +// @ts-ignore +const MdIt = MarkdownIt.default ? MarkdownIt.default : MarkdownIt + +type NavTreeNode = { + title: string + children: NavTreeNode[] +} + +type Props = { + lang: string + section: string + markdownContent: string +} + +type Lang = 'zh' | 'en' + +@tag('product-docs') +export class ProductDocs extends Component { + state: { + markdownContent: string + navTree: NavTreeNode + active: [string, string] + } = { + markdownContent: '', + navTree: { title: '', children: [] }, + active: ['', ''], + } + + @bind + async onChange(evt: CustomEvent) { + // 滚动到最顶 + window.scrollTo(0, 0) + history.pushState(null, '', evt.detail.item.path) + const { default: markdownContent } = await import(`../docs/${this.props.lang}/${evt.detail.item.value}.md?raw`) + this.state.markdownContent = markdownContent + this.update() + } + + md: MarkdownIt = new MdIt() + + install() { + this.state.markdownContent = this.props.markdownContent + + this.setNavTree() + } + + // 提取 markdown 中的标题 + setNavTree() { + const tokens = this.md.parse(this.state.markdownContent, {}) + + let currentNode: NavTreeNode = this.state.navTree + + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i] + if (token.type === 'heading_open') { + const title = tokens[i + 1].content + const newNode: NavTreeNode = { title, children: [] } + + if (token.tag === 'h2') { + this.state.navTree.children.push(newNode) + currentNode = newNode + } else if (token.tag === 'h3') { + currentNode.children.push(newNode) + } + } + } + this.state.active = [this.state.navTree.children[0].title, this.state.navTree.children[0].children?.[0]?.title] + } + + goToSection = (item: NavTreeNode) => () => { + this.state.active = [item.title, ''] + this.update() + this.scrollToH2(item.title) + } + + goToSubSection = (item: NavTreeNode, child: NavTreeNode) => () => { + this.state.active = [item.title, child.title] + this.update() + this.scrollToH3(child.title) + } + + scrollToH2(title: string) { + const h2Elements = ( + this.rootElement?.querySelector('md-docs') as HTMLElement & { + rootElement: HTMLElement + } + )?.rootElement.getElementsByTagName('h2') + for (let i = 0; i < h2Elements.length; i++) { + if (h2Elements[i].textContent === title) { + h2Elements[i].scrollIntoView({ behavior: 'smooth' }) + break + } + } + } + + scrollToH3(title: string) { + const h2Elements = ( + this.rootElement?.querySelector('md-docs') as HTMLElement & { + rootElement: HTMLElement + } + ).rootElement.getElementsByTagName('h3') + for (let i = 0; i < h2Elements.length; i++) { + if (h2Elements[i].textContent === title) { + h2Elements[i].scrollIntoView({ behavior: 'smooth' }) + break + } + } + } + + render() { + return ( +
    +
    +
    + +
    +
    + {/*
    +

    Introduction

    +

    Installation

    +
    */} + + +
    +
    +
    +
    Previous
    +
    + + Getting started + + +
    +
    + +
    +
    + +
    +
    +
    + ) + } +} diff --git a/packages/omi-low-code/src/pages/results/browser-not-support.tsx b/packages/omi-low-code/src/pages/results/browser-not-support.tsx new file mode 100644 index 0000000000..bd5bcd54d5 --- /dev/null +++ b/packages/omi-low-code/src/pages/results/browser-not-support.tsx @@ -0,0 +1,141 @@ +export function BrowserNotSupport() { + return ( +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

    浏览器版本低

    + +

    抱歉,您正在使用的浏览器版本过低,无法打开当前网页。

    + + + +
    +
    +

    OMI Templates 推荐以下主流浏览器

    +
    +
    + + + + + + + +

    Chrome

    +
    +
    + + + + +

    Edge

    +
    +
    + + Safari + + + +

    Safari

    +
    +
    + + Firefox + + + +

    Firefox

    +
    +
    +
    +
    +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/results/fail.tsx b/packages/omi-low-code/src/pages/results/fail.tsx new file mode 100644 index 0000000000..43dbff4d7b --- /dev/null +++ b/packages/omi-low-code/src/pages/results/fail.tsx @@ -0,0 +1,36 @@ +export function Fail() { + return ( +
    +
    +
    + + + + +
    + +

    创建失败

    + +

    + 抱歉,您的项目创建失败,企业微信联系检查创建者权限,或返回修改。 +

    + + +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/results/forbidden.tsx b/packages/omi-low-code/src/pages/results/forbidden.tsx new file mode 100644 index 0000000000..e921a2f85f --- /dev/null +++ b/packages/omi-low-code/src/pages/results/forbidden.tsx @@ -0,0 +1,54 @@ +export function Forbidden() { + return ( +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

    项目已创建成功

    + +

    可以联系负责人分发应用

    + +
    + + 返回首页 + + +
    +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/results/network-error.tsx b/packages/omi-low-code/src/pages/results/network-error.tsx new file mode 100644 index 0000000000..43e76f1a5b --- /dev/null +++ b/packages/omi-low-code/src/pages/results/network-error.tsx @@ -0,0 +1,52 @@ +export function NetworkError() { + return ( +
    +
    +
    + + + + + + + + + + + + + + +
    + +

    网络异常

    + +

    网络异常,请稍后再试

    + + +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/results/not-found.tsx b/packages/omi-low-code/src/pages/results/not-found.tsx new file mode 100644 index 0000000000..c8cca3b595 --- /dev/null +++ b/packages/omi-low-code/src/pages/results/not-found.tsx @@ -0,0 +1,59 @@ +export function NotFound() { + return ( +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

    404 Not Found

    + +

    抱歉,您访问的页面不存在

    + + +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/results/server-error.tsx b/packages/omi-low-code/src/pages/results/server-error.tsx new file mode 100644 index 0000000000..97fc6b9f48 --- /dev/null +++ b/packages/omi-low-code/src/pages/results/server-error.tsx @@ -0,0 +1,57 @@ +export function ServerError() { + return ( +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + +

    500 Internal Server Error

    + +

    抱歉,服务器出错啦

    + + +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/results/success.tsx b/packages/omi-low-code/src/pages/results/success.tsx new file mode 100644 index 0000000000..c74e30f52a --- /dev/null +++ b/packages/omi-low-code/src/pages/results/success.tsx @@ -0,0 +1,31 @@ +import '../../components/omiu/button' + +export function SuccessResult() { + return ( +
    +
    +
    + + + + +
    + +

    项目已创建成功

    + +

    可以联系负责人分发应用

    + +
    + + 返回首页 + + 查看进度 +
    +
    +
    + ) +} diff --git a/packages/omi-low-code/src/pages/results/system-maintenance.tsx b/packages/omi-low-code/src/pages/results/system-maintenance.tsx new file mode 100644 index 0000000000..b4270e206f --- /dev/null +++ b/packages/omi-low-code/src/pages/results/system-maintenance.tsx @@ -0,0 +1,104 @@ +export function SystemMaintenance() { + return ( +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

    系统维护中

    + +

    系统维护中,请稍后再试

    + + +
    +
    + ) +} diff --git a/packages/omi-low-code/src/routes.tsx b/packages/omi-low-code/src/routes.tsx new file mode 100644 index 0000000000..de8e5d6cdf --- /dev/null +++ b/packages/omi-low-code/src/routes.tsx @@ -0,0 +1,245 @@ +import 'omi-suspense' +import './index.css' +import { SiteLayout } from './components/site-layout' +import { AdminLayout } from './components/admin-layout' +import { ComponentLayout } from './components/component-layout' +import { pending } from './components/pending' +import { fallback } from './components/fallback' +import { Router } from 'omi-router' +import { Component } from 'omi' +import './components/appear' + +export const routes = [ + createRoute('/', () => import('./pages/home')), + createRoute('/about', () => import('./pages/about')), + + createRoute('/components', () => import('./pages/components')), + createRoute('/results/success', () => import('./pages/results/success')), + createRoute('/results/fail', () => import('./pages/results/fail')), + createRoute('/results/browser-not-support', () => import('./pages/results/browser-not-support')), + createRoute('/results/forbidden', () => import('./pages/results/forbidden')), + createRoute('/results/network-error', () => import('./pages/results/network-error')), + createRoute('/results/server-error', () => import('./pages/results/server-error')), + createRoute('/results/system-maintenance', () => import('./pages/results/system-maintenance')), + createRoute('/results/not-found', () => import('./pages/results/not-found')), + createDocsRoute('/product-docs/:lang/:section', () => import('./pages/product-docs')), + createRoute('/icons', () => import('./pages/icons')), + createAdminRoute('/admin/home', () => import('./pages/admin/home')), + createAdminRoute('/admin/chart', () => import('./pages/admin/chart')), + createComponentRoute('/components/button', () => import('./pages/components/button')), + createComponentRoute('/components/switch', () => import('./pages/components/switch')), + createComponentRoute('/components/breadcrumb', () => import('./pages/components/breadcrumb')), + createRoute('*', () => import('./pages/results/not-found')), + { + path: '/before-enter/test', + beforeEnter: () => { + // reject the navigation + return false + }, + }, +] + +function createRoute(path: string, componentImport: () => Promise) { + return { + path, + render(router: Router) { + return ( + + { + return ( + { + window.refreshDark() + window.scrollTo(0, 0) + }} + > + {results[0][Object.keys(results[0])[0]](router.params)} + + ) + }} + fallback={fallback} + beforePending={async (suspense: Component) => { + suspense.shadowRoot?.firstElementChild?.classList.add('opacity-0', 'translate-y-4') + return new Promise((resolve) => setTimeout(resolve, 300)) + }} + pending={pending} + onLoaded={() => { + window.refreshDark() + }} + > + + ) + }, + } +} + +function createComponentRoute(path: string, componentImport: () => Promise) { + return { + path, + render(router: Router) { + return ( + + { + const Module = results[0][Object.keys(results[0])[0]] + return ( + { + window.refreshDark() + window.scrollTo(0, 0) + }} + > + {isClassOrFunction(Module) === 'Function' ? Module(router.params) : } + + ) + }} + fallback={fallback} + beforePending={async (suspense: Component) => { + suspense.shadowRoot?.firstElementChild?.classList.add('opacity-0', 'translate-y-4') + return new Promise((resolve) => setTimeout(resolve, 300)) + }} + pending={pending} + onLoaded={() => { + window.refreshDark() + }} + > + + ) + }, + } +} + +function createAdminRoute(path: string, componentImport: () => Promise) { + return { + path, + render(router: Router) { + return ( + + { + const Module = results[0][Object.keys(results[0])[0]] + return ( + { + window.refreshDark() + window.scrollTo(0, 0) + }} + > + {isClassOrFunction(Module) === 'Function' ? Module(router.params) : } + + ) + }} + fallback={fallback} + beforePending={async (suspense: Component) => { + suspense.shadowRoot?.firstElementChild?.classList.add('opacity-0', 'translate-y-4') + return new Promise((resolve) => setTimeout(resolve, 300)) + }} + pending={pending} + onLoaded={() => { + window.refreshDark() + }} + > + + ) + }, + } +} + +function createBaseRoute(path: string, componentImport: () => Promise) { + return { + path, + render(router: Router) { + return ( + { + return ( + { + window.refreshDark() + window.scrollTo(0, 0) + }} + > + {results[0][Object.keys(results[0])[0]](router.params)} + + ) + }} + fallback={fallback} + pending={pending} + onLoaded={() => { + window.refreshDark() + }} + > + ) + }, + } +} + +function createDocsRoute(path: string, componentImport: () => Promise) { + return { + path, + render(router: Router) { + return ( + + { + return ( + { + window.refreshDark() + window.scrollTo(0, 0) + }} + > + + + ) + }} + fallback={fallback} + beforePending={async (suspense: Component) => { + suspense.shadowRoot?.firstElementChild?.classList.add('opacity-0', 'translate-y-4') + return new Promise((resolve) => setTimeout(resolve, 300)) + }} + pending={pending} + onLoaded={() => { + window.refreshDark() + }} + > + + ) + }, + } +} + +function isClassOrFunction(obj: any) { + if (typeof obj !== 'function') { + return 'Not a function or class' + } + + if (obj.prototype && obj.prototype.constructor === obj) { + if (obj.toString().startsWith('class ')) { + return 'Class' + } else { + return 'Function' + } + } + return 'Not a function or class' +} diff --git a/packages/omi-low-code/src/store.ts b/packages/omi-low-code/src/store.ts new file mode 100644 index 0000000000..673ee1ab42 --- /dev/null +++ b/packages/omi-low-code/src/store.ts @@ -0,0 +1,218 @@ +import { signal, effect } from 'omi' +import './components/dark-switch' + +export const isDark = signal(document.documentElement.classList.contains('dark')) + +document.addEventListener('DOMContentLoaded', () => { + isDark.value = document.documentElement.classList.contains('dark') +}) + +effect(() => { + if (isDark.value) { + window.setDarkMode() + } else { + window.setLightMode() + } +}) + +interface NavbarItem { + path?: string + value?: string + children?: NavbarItem[] + type?: string + text?: string + href?: string + target?: string + img?: string + inner?: string + tag?: string + icon?: string + isOpen?: boolean +} + +export const navbarItems = signal([ + { + text: '首页', + path: '/', + value: 'home', + }, + { + text: '产品', + children: [ + { + text: '组件', + path: '/components/button', + value: 'components', + }, + ], + }, + { + text: '结果页', + children: [ + { + type: 'title', + text: '结果页', + }, + { + text: '成功页', + path: '/results/success', + value: 'result-success', + }, + { + text: '失败页', + path: '/results/fail', + value: 'result-fail', + }, + { + text: '网络异常', + path: '/results/network-error', + value: 'result-network-error', + }, + { + text: '无权限', + path: '/results/forbidden', + value: 'result-forbidden', + }, + { + text: '访问页面不存在', + path: '/results/not-found', + value: 'result-not-found', + }, + { + text: '服务器出错页', + path: '/results/server-error', + value: 'result-server-error', + }, + { + text: '浏览器不兼容', + path: '/results/browser-not-support', + value: 'result-browser-not-support', + }, + { + text: '系统维护页', + path: '/results/system-maintenance', + value: 'result-system-maintenance', + }, + ], + }, + { + text: '物料组件', + children: [ + { + type: 'title', + text: '可以先链个路由自己调', + }, + { + text: '关于', + path: '/about', + value: 'about', + }, + ], + }, + + { + text: 'OMI官网', + href: 'http://omijs.org/', + }, + { + href: 'https://github.com/Tencent/omi/tree/master/packages/omi-templates', + target: '_blank', + inner: ` + + `, + }, + { + tag: 'dark-switch', + }, +]) + +const value = getValueByPath(location.hash.slice(1), navbarItems.value) +export const activeMenuItem = signal(value || 'home') + +export function getValueByPath(path: string, navbarItems: NavbarItem[]): string | null { + for (let i = 0; i < navbarItems.length; i++) { + if (navbarItems[i].path === path) { + return navbarItems[i].value || null + } + if (navbarItems[i].children) { + // @ts-ignore + let found = getValueByPath(path, navbarItems[i].children) + if (found) return found + } + } + return null // return null if no matching path is found +} + +export const sidebarItems = signal([ + { + text: '仪表盘', + icon: 'dashboard', + isOpen: true, + children: [ + { + text: '概览仪表盘', + value: 'dashboard', + href: '#/admin/home', + }, + { + text: '统计报表', + value: 'chart', + href: '#/admin/chart', + }, + ], + tag: '', + }, + { + text: '列表页', + icon: 'root-list', + children: [ + { + text: '基础列表', + }, + { + text: '卡片列表', + }, + { + text: '筛选列表', + }, + { + text: '树状筛选列表', + }, + ], + }, + { + text: '表单页', + icon: 'edit', + isOpen: true, + children: [ + { + text: '基础表单页', + }, + { + text: '分步表单页', + }, + ], + }, + { + text: '详情页', + icon: 'layers', + isOpen: true, + children: [ + { + text: '基础详情页', + }, + { + text: '多卡片详情页', + }, + { + text: '数据详情页', + }, + { + text: '二级详情页', + }, + ], + }, +]) + +export const activeSidebarItem = signal('dashboard') +export const isSidebarOpen = signal(true) diff --git a/packages/omi-low-code/src/tailwind/globals.d.ts b/packages/omi-low-code/src/tailwind/globals.d.ts new file mode 100644 index 0000000000..58bcbd95a2 --- /dev/null +++ b/packages/omi-low-code/src/tailwind/globals.d.ts @@ -0,0 +1,5 @@ +declare module '*.scss' +declare module '*.scss?inline' +declare module '*.css' +declare module '*.css?inline' +declare module '*.html' diff --git a/packages/omi-low-code/src/tailwind/index.ts b/packages/omi-low-code/src/tailwind/index.ts new file mode 100644 index 0000000000..de1a8acd8e --- /dev/null +++ b/packages/omi-low-code/src/tailwind/index.ts @@ -0,0 +1,12 @@ +import { css, globalCSS } from 'omi' +import './tailwind.css' +import '../assets/icon-font.css' +import tailwindStyle from './tailwind.css?inline' +import icon from '../assets/icon-font.css?inline' + +export const tailwind = css` + ${tailwindStyle} + ${icon} +` + +globalCSS(tailwind) diff --git a/packages/omi-low-code/src/tailwind/tailwind.css b/packages/omi-low-code/src/tailwind/tailwind.css new file mode 100644 index 0000000000..b5c61c9567 --- /dev/null +++ b/packages/omi-low-code/src/tailwind/tailwind.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/packages/omi-low-code/src/vite-env.d.ts b/packages/omi-low-code/src/vite-env.d.ts new file mode 100644 index 0000000000..11f02fe2a0 --- /dev/null +++ b/packages/omi-low-code/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/omi-low-code/tailwind.config.js b/packages/omi-low-code/tailwind.config.js new file mode 100644 index 0000000000..48e7ff9aac --- /dev/null +++ b/packages/omi-low-code/tailwind.config.js @@ -0,0 +1,85 @@ +/** @type {import('tailwindcss').Config} */ +export default { + darkMode: ["class"], + content: [ + "./index.html", + "./src/**/*.{js,ts,jsx,tsx}", + ], + theme: { + fontFamily: { + // https://tailwindcss.com/docs/font-family#customizing-the-default-font + sans: '-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Source Han Sans CN,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol' + }, + extend: { + typography: { + DEFAULT: { + css: { + // color: '#333', + a: { + // color: '#0052d9', + // '&:hover': { + // color: '#0052d9', + // }, + }, + }, + }, + }, + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + + danger: { + DEFAULT: "hsl(var(--danger))", + foreground: "hsl(var(--primary-foreground))", + }, + warning: { + DEFAULT: "hsl(var(--warning))", + foreground: "hsl(var(--primary-foreground))", + }, + success: { + DEFAULT: "hsl(var(--success))", + foreground: "hsl(var(--primary-foreground))", + }, + + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive) / )", + 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))", + }, + }, + borderColor: { + DEFAULT: "hsl(var(--border))", + }, + }, + }, + plugins: [ + require('@tailwindcss/typography'), + ], +} + diff --git a/packages/omi-low-code/tsconfig.json b/packages/omi-low-code/tsconfig.json new file mode 100644 index 0000000000..e92c826e76 --- /dev/null +++ b/packages/omi-low-code/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES5", + "experimentalDecorators": true, + "useDefineForClassFields": true, + "lib": ["ES6", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "allowImportingTsExtensions": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "jsxFactory": "h", + "jsxFragmentFactory": "h.f", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/omi-low-code/tsconfig.node.json b/packages/omi-low-code/tsconfig.node.json new file mode 100644 index 0000000000..42872c59f5 --- /dev/null +++ b/packages/omi-low-code/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/omi-low-code/vite.config.ts b/packages/omi-low-code/vite.config.ts new file mode 100644 index 0000000000..eaf9234632 --- /dev/null +++ b/packages/omi-low-code/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite' +import { resolve } from 'path' + +// https://vitejs.dev/config/ +export default defineConfig({ + base: './', + esbuild: { + jsxFactory: 'h', + jsxFragment: 'h.f', + jsxInject: `import { h } from 'omi'` + }, + resolve: { + alias: { + // "omi": resolve("./src/omi/index.ts"), + "@": resolve("./src/"), + }, + }, +}) diff --git a/packages/omi-low-code/yarn.lock b/packages/omi-low-code/yarn.lock new file mode 100644 index 0000000000..432011ec1d --- /dev/null +++ b/packages/omi-low-code/yarn.lock @@ -0,0 +1,3509 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmmirror.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.11.0" + resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + 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" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.npmmirror.com/@eslint/js/-/js-8.57.0.tgz" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmmirror.com/@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" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.5" + resolved "https://registry.npmmirror.com/@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" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.24": + version "0.3.25" + resolved "https://registry.npmmirror.com/@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" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmmirror.com/@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" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmmirror.com/@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" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@tailwindcss/typography@^0.5.10": + version "0.5.14" + resolved "https://registry.npmmirror.com/@tailwindcss/typography/-/typography-0.5.14.tgz" + integrity sha512-ZvOCjUbsJBjL9CxQBn+VEnFpouzuKhxh2dH8xMIWHILL+HfOYtlAkWcyoon8LlzE53d2Yo6YO6pahKKNW3q1YQ== + dependencies: + lodash.castarray "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + postcss-selector-parser "6.0.10" + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.11.tgz" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmmirror.com/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmmirror.com/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.npmmirror.com/@tsconfig/node16/-/node16-1.0.4.tgz" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/linkify-it@^3": + version "3.0.5" + resolved "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-3.0.5.tgz" + integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== + +"@types/markdown-it@^13.0.7": + version "13.0.9" + resolved "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-13.0.9.tgz" + integrity sha512-1XPwR0+MgXLWfTn9gCsZ55AHOKW1WN+P9vr0PaQh5aerR9LLQXUbjfEAFhjmEmyoYFWAyuN2Mqkn40MZ4ukjBw== + dependencies: + "@types/linkify-it" "^3" + "@types/mdurl" "^1" + +"@types/mdurl@^1": + version "1.0.5" + resolved "https://registry.npmmirror.com/@types/mdurl/-/mdurl-1.0.5.tgz" + integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== + +"@types/prismjs@^1.26.3": + version "1.26.4" + resolved "https://registry.npmmirror.com/@types/prismjs/-/prismjs-1.26.4.tgz" + integrity sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg== + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.3" + resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.3.tgz" + integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.12.1" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +agent-base@4, agent-base@^4.1.0, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/agent-base/-/agent-base-4.3.0.tgz" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^3.3.0: + version "3.5.3" + resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.3.tgz" + integrity sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw== + dependencies: + humanize-ms "^1.2.1" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ansi-align/-/ansi-align-2.0.0.tgz" + integrity sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA== + dependencies: + string-width "^2.0.0" + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmmirror.com/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +autoprefixer@^10.4.16: + version "10.4.20" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.20.tgz" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== + dependencies: + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.1" + postcss-value-parser "^4.2.0" + +axios@^0.18.1: + version "0.18.1" + resolved "https://registry.npmmirror.com/axios/-/axios-0.18.1.tgz" + integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +binaryextensions@^2.1.2: + version "2.3.0" + resolved "https://registry.npmmirror.com/binaryextensions/-/binaryextensions-2.3.0.tgz" + integrity sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg== + +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.npmmirror.com/bl/-/bl-1.2.3.tgz" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bluebird@^3.5.0, bluebird@^3.5.1: + version "3.7.2" + resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/boxen/-/boxen-1.3.0.tgz" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.23.3: + version "4.23.3" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.3.tgz" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + dependencies: + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/buffer-fill/-/buffer-fill-1.0.0.tgz" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/builtins/-/builtins-1.0.3.tgz" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +cacache@^10.0.0: + version "10.0.4" + resolved "https://registry.npmmirror.com/cacache/-/cacache-10.0.4.tgz" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cacache@^9.2.9: + version "9.3.0" + resolved "https://registry.npmmirror.com/cacache/-/cacache-9.3.0.tgz" + integrity sha512-Vbi8J1XfC8v+FbQ6QkOtKXsHpPnB0i9uMeYFJoj40EbdOsEqWB3DPpNjfsnYBkqOPYA8UvrqH6FZPpBP0zdN7g== + dependencies: + bluebird "^3.5.0" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^1.3.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.1" + ssri "^4.1.6" + unique-filename "^1.1.0" + y18n "^3.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^4.0.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-4.1.0.tgz" + integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== + +caniuse-lite@^1.0.30001646: + version "1.0.30001651" + resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz" + integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== + +capture-stack-trace@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz" + integrity sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w== + +chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.npmmirror.com/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" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.0.1: + version "1.1.4" + resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +class-variance-authority@^0.7.0: + version "0.7.0" + resolved "https://registry.npmmirror.com/class-variance-authority/-/class-variance-authority-0.7.0.tgz" + integrity sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A== + dependencies: + clsx "2.0.0" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/cli-boxes/-/cli-boxes-1.0.0.tgz" + integrity sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^1.0.1: + version "1.3.1" + resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-1.3.1.tgz" + integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.npmmirror.com/cli-width/-/cli-width-2.2.1.tgz" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +clsx@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/clsx/-/clsx-2.0.0.tgz" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== + +clsx@^2.1.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +codesandbox-import-util-types@^2.2.3: + version "2.2.3" + resolved "https://registry.npmmirror.com/codesandbox-import-util-types/-/codesandbox-import-util-types-2.2.3.tgz" + integrity sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ== + +codesandbox-import-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.npmmirror.com/codesandbox-import-utils/-/codesandbox-import-utils-2.2.3.tgz" + integrity sha512-ymtmcgZKU27U+nM2qUb21aO8Ut/u2S9s6KorOgG81weP+NA0UZkaHKlaRqbLJ9h4i/4FLvwmEXYAnTjNmp6ogg== + dependencies: + codesandbox-import-util-types "^2.2.3" + istextorbinary "^2.2.1" + lz-string "^1.4.4" + +codesandbox@^2.2.3: + version "2.2.3" + resolved "https://registry.npmmirror.com/codesandbox/-/codesandbox-2.2.3.tgz" + integrity sha512-IAkWFk6UUglOhSemI7UFgNNL/jgg+1YjVEIllFULLgsaHhFnY51pCqAifMNuAd5d9Zp4Nk/xMgrEaGNV0L4Xlg== + dependencies: + axios "^0.18.1" + chalk "^2.4.1" + codesandbox-import-util-types "^2.2.3" + codesandbox-import-utils "^2.2.3" + commander "^2.9.0" + datauri "^3.0.0" + filesize "^3.6.1" + fs-extra "^3.0.1" + git-branch "^1.0.0" + git-repo-name "^0.6.0" + git-username "^0.5.0" + humps "^2.0.1" + inquirer "^6.2.2" + lodash "^4.17.5" + lz-string "^1.4.4" + ms "^2.0.0" + open "^6.3.0" + ora "^1.3.0" + pacote "^2.7.36" + shortid "^2.2.8" + update-notifier "^2.2.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^2.9.0: + version "2.20.3" + resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^3.0.0: + version "3.1.5" + resolved "https://registry.npmmirror.com/configstore/-/configstore-3.1.5.tgz" + integrity sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA== + dependencies: + dot-prop "^4.2.1" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +construct-style-sheets-polyfill@3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/construct-style-sheets-polyfill/-/construct-style-sheets-polyfill-3.0.1.tgz" + integrity sha512-vyAiTcS3i29IxjzJ12K2MGUUBYgrF69p6fKD+8ZPRLFhwTtuaxXLpazl4Yw4FITsQXwUMrh8juI1bOHWYjzkwA== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/create-error-class/-/create-error-class-3.0.2.tgz" + integrity sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw== + dependencies: + capture-stack-trace "^1.0.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmmirror.com/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" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz" + integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cwd@^0.9.1: + version "0.9.1" + resolved "https://registry.npmmirror.com/cwd/-/cwd-0.9.1.tgz" + integrity sha512-4+0D+ojEasdLndYX4Cqff057I/Jp6ysXpwKkdLQLnZxV8f6IYZmZtTP5uqD91a/kWqejoc0sSqK4u8wpTKCh8A== + dependencies: + find-pkg "^0.1.0" + +cyclist@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.2.tgz" + integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== + +datauri@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/datauri/-/datauri-3.0.0.tgz" + integrity sha512-NeDFuUPV1YCpCn8MUIcDk1QnuyenUHs7f4Q5P0n9FFA0neKFrfEH9esR+YMW95BplbYfdmjbs0Pl/ZGAaM2QHQ== + dependencies: + image-size "0.8.3" + mimer "1.1.0" + +debug@3.1.0, debug@=3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.3.1, debug@^4.3.2: + version "4.3.6" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.6.tgz" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dot-prop@^4.2.1: + version "4.2.1" + resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-4.2.1.tgz" + integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== + dependencies: + is-obj "^1.0.0" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.npmmirror.com/duplexer3/-/duplexer3-0.1.5.tgz" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +echarts@^5.5.0: + version "5.5.1" + resolved "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz" + integrity sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA== + dependencies: + tslib "2.3.0" + zrender "5.6.0" + +editions@^2.2.0: + version "2.3.1" + resolved "https://registry.npmmirror.com/editions/-/editions-2.3.1.tgz" + integrity sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA== + dependencies: + errlop "^2.0.0" + semver "^6.3.0" + +electron-to-chromium@^1.5.4: + version "1.5.7" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.7.tgz" + integrity sha512-6FTNWIWMxMy/ZY6799nBlPtF1DFDQ6VQJ7yyDP27SJNt5lwtQ5ufqVvHylb3fdQefvRcgA3fKcFMJi9OLwBRNw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/err-code/-/err-code-1.1.2.tgz" + integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA== + +errlop@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/errlop/-/errlop-2.2.0.tgz" + integrity sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw== + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.npmmirror.com/es6-promise/-/es6-promise-4.2.8.tgz" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/es6-promisify/-/es6-promisify-5.0.0.tgz" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.45.0: + version "8.57.0" + resolved "https://registry.npmmirror.com/eslint/-/eslint-8.57.0.tgz" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + 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" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.npmmirror.com/execa/-/execa-0.7.0.tgz" + integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw== + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/expand-tilde/-/expand-tilde-1.2.2.tgz" + integrity sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q== + dependencies: + os-homedir "^1.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.npmmirror.com/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" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-name@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/file-name/-/file-name-0.1.0.tgz" + integrity sha512-Q8SskhjF4eUk/xoQkmubwLkoHwOTv6Jj/WGtOVLKkZ0vvM+LipkSXugkn1F/+mjWXU32AXLZB3qaz0arUzgtRw== + +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-file-up@^0.1.2: + version "0.1.3" + resolved "https://registry.npmmirror.com/find-file-up/-/find-file-up-0.1.3.tgz" + integrity sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A== + dependencies: + fs-exists-sync "^0.1.0" + resolve-dir "^0.1.0" + +find-pkg@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/find-pkg/-/find-pkg-0.1.2.tgz" + integrity sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw== + dependencies: + find-file-up "^0.1.2" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.5.10.tgz" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.0.tgz" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz" + integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== + +fs-extra@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-3.0.1.tgz" + integrity sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +genfun@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/genfun/-/genfun-4.0.1.tgz" + integrity sha512-48yv1eDS5Qrz6cbSDBBik0u7jCgC/eA9eZrl9MIN1LfKzFTuGt6EHgr31YM8yT9cjb5BplXb4Iz3VtOYmgt8Jg== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz" + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== + +git-branch@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/git-branch/-/git-branch-1.0.0.tgz" + integrity sha512-ZTzuqw5Df8fyLXQWrX6hK+4FpNCdKzMcERlxENEGO5aKcLmG7MAszhrMhluUKNKmOS/JAGijDMQDXDCDw1mE/A== + +git-config-path@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/git-config-path/-/git-config-path-1.0.1.tgz" + integrity sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg== + dependencies: + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + homedir-polyfill "^1.0.0" + +git-repo-name@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/git-repo-name/-/git-repo-name-0.6.0.tgz" + integrity sha512-DF4XxB6H+Te79JA08/QF/IjIv+j+0gF990WlgAX3SXXU2irfqvBc/xxlAIh6eJWYaKz45MrrGVBFS0Qc4bBz5g== + dependencies: + cwd "^0.9.1" + file-name "^0.1.0" + lazy-cache "^1.0.4" + remote-origin-url "^0.5.1" + +git-username@^0.5.0: + version "0.5.1" + resolved "https://registry.npmmirror.com/git-username/-/git-username-0.5.1.tgz" + integrity sha512-xjUjrj3i4kup2A3a/ZVZB1Nt0PUX7SU7KeVqIbXPdslT7NbNfyO04JMxBv4gar77JePdS+A6f05jG1Viy6+U1w== + dependencies: + remote-origin-url "^0.4.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.2, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/global-dirs/-/global-dirs-0.1.1.tgz" + integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== + dependencies: + ini "^1.3.4" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.npmmirror.com/global-modules/-/global-modules-0.2.3.tgz" + integrity sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA== + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.npmmirror.com/global-prefix/-/global-prefix-0.1.5.tgz" + integrity sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw== + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +got@^6.7.1: + version "6.7.1" + resolved "https://registry.npmmirror.com/got/-/got-6.7.1.tgz" + integrity sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg== + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.11" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +homedir-polyfill@^1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4, hosted-git-info@^2.4.2: + version "2.8.9" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +http-cache-semantics@^3.8.0: + version "3.8.1" + resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-proxy-agent@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + +https-proxy-agent@^2.1.0: + version "2.2.4" + resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +humps@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/humps/-/humps-2.0.1.tgz" + integrity sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g== + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz" + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== + +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +image-size@0.8.3: + version "0.8.3" + resolved "https://registry.npmmirror.com/image-size/-/image-size-0.8.3.tgz" + integrity sha512-SMtq1AJ+aqHB45c3FsB4ERK0UCiA2d3H1uq8s+8T0Pf8A3W4teyBQyaFaktH6xvZqh+npwlKU7i4fJo0r7TYTg== + dependencies: + queue "6.0.1" + +immutable@^4.0.0: + version "4.3.7" + resolved "https://registry.npmmirror.com/immutable/-/immutable-4.3.7.tgz" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/import-lazy/-/import-lazy-2.1.0.tgz" + integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.3, ini@^1.3.4, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.npmmirror.com/inquirer/-/inquirer-6.5.2.tgz" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +ip@^1.1.4: + version "1.1.9" + resolved "https://registry.npmmirror.com/ip/-/ip-1.1.9.tgz" + integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^2.0.2: + version "2.0.5" + resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.0" + +is-core-module@^2.13.0: + version "2.15.0" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.15.0.tgz" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== + dependencies: + hasown "^2.0.2" + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz" + integrity sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw== + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-npm/-/is-npm-1.0.0.tgz" + integrity sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-obj/-/is-obj-1.0.1.tgz" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-1.0.1.tgz" + integrity sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== + dependencies: + path-is-inside "^1.0.1" + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-redirect/-/is-redirect-1.0.0.tgz" + integrity sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw== + +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/is-windows/-/is-windows-0.2.0.tgz" + integrity sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istextorbinary@^2.2.1: + version "2.6.0" + resolved "https://registry.npmmirror.com/istextorbinary/-/istextorbinary-2.6.0.tgz" + integrity sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA== + dependencies: + binaryextensions "^2.1.2" + editions "^2.2.0" + textextensions "^2.5.0" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.21.0: + version "1.21.6" + resolved "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-better-errors@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-3.0.1.tgz" + integrity sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w== + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/latest-version/-/latest-version-3.1.0.tgz" + integrity sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w== + dependencies: + package-json "^4.0.0" + +lazy-cache@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/lazy-cache/-/lazy-cache-1.0.4.tgz" + integrity sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.2" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.2.tgz" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== + dependencies: + uc.micro "^2.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.castarray@^4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz" + integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.12, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.5" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lz-string@^1.4.4: + version "1.5.0" + resolved "https://registry.npmmirror.com/lz-string/-/lz-string-1.5.0.tgz" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +make-fetch-happen@^2.4.13: + version "2.6.0" + resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-2.6.0.tgz" + integrity sha512-FFq0lNI0ax+n9IWzWpH8A4JdgYiAp2DDYIZ3rsaav8JDe8I+72CzK6PQW/oom15YDZpV5bYW/9INd6nIJ2ZfZw== + dependencies: + agentkeepalive "^3.3.0" + cacache "^10.0.0" + http-cache-semantics "^3.8.0" + http-proxy-agent "^2.0.0" + https-proxy-agent "^2.1.0" + lru-cache "^4.1.1" + mississippi "^1.2.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^3.0.1" + ssri "^5.0.0" + +markdown-it@^14.0.0: + version "14.1.0" + resolved "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz" + integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== + dependencies: + argparse "^2.0.1" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.1.0" + +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.7" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.7.tgz" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mimer@1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/mimer/-/mimer-1.1.0.tgz" + integrity sha512-y9dVfy2uiycQvDNiAYW6zp49ZhFlXDMr5wfdOiMbdzGM/0N5LNR6HTUn3un+WUQcM0koaw8FMTG1bt5EnHJdvQ== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mississippi@^1.2.0, mississippi@^1.3.0: + version "1.3.1" + resolved "https://registry.npmmirror.com/mississippi/-/mississippi-1.3.1.tgz" + integrity sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^1.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/mississippi/-/mississippi-2.0.0.tgz" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz" + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2, ms@^2.0.0, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.7.tgz" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmmirror.com/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" + +nanoid@^2.1.0: + version "2.1.11" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-2.1.11.tgz" + integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.npmmirror.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +normalize-package-data@^2.4.0: + version "2.5.0" + resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +npm-package-arg@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz" + integrity sha512-wJBsrf0qpypPT7A0LART18hCdyhpCMxeTtcb0X4IZO2jsP6Om7EHN1d9KSKiqD+KVH030RVNpWS9thk+pb7wzA== + dependencies: + hosted-git-info "^2.4.2" + osenv "^0.1.4" + semver "^5.1.0" + validate-npm-package-name "^3.0.0" + +npm-pick-manifest@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-1.0.4.tgz" + integrity sha512-MKxNdeyOZysPRTTbHtW0M5Fw38Jo/3ARsoGw5qjCfS+XGjvNB/Gb4qtAZUFmKPM2mVum+eX559eHvKywU856BQ== + dependencies: + npm-package-arg "^5.1.2" + semver "^5.3.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +omi-ripple@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/omi-ripple/-/omi-ripple-0.1.2.tgz" + integrity sha512-kgV5Jb8RVQm1n+xPA2yzexOnFfsygeoC33EmolSW3GlAbnTga20c0HgRyh4v9h/kqm+HqXKt478DqNCMk+ukdw== + dependencies: + omi latest + +omi-router@latest: + version "4.1.8" + resolved "https://registry.npmmirror.com/omi-router/-/omi-router-4.1.8.tgz" + integrity sha512-6mOIFuYiy/1uYO67G5eKmhMWj1VsNe4Fgb1A04DGQT0m+yxTYvXS+Myq2BJnS2nCKpbpk3jm0Rm2C1UrhVGP0A== + dependencies: + omi latest + path-to-regexp "^6.2.1" + +omi-suspense@latest: + version "0.1.4" + resolved "https://registry.npmmirror.com/omi-suspense/-/omi-suspense-0.1.4.tgz" + integrity sha512-zijzn+H3e6+Tkbs2Eda/vEod/kH+9lOLBntiDBauMQyRh3HZnMjq1dClI9QySUD9c4LQneo8rQolG6kkuqh/Yw== + dependencies: + omi latest + +omi@7.6.12, omi@latest: + version "7.6.12" + resolved "https://registry.npmmirror.com/omi/-/omi-7.6.12.tgz" + integrity sha512-G1qiY/4iJ+Q8oBncKcuBj5drw/8sGMFXiD8mNczXbAjB0/7pqYpV1bYKHaYPQLD+3BsUu7dGb3KkSfXIINRCMg== + dependencies: + construct-style-sheets-polyfill "3.0.1" + reactive-signal "^1.0.3" + weakmap-polyfill "2.0.4" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +open@^6.3.0: + version "6.4.0" + resolved "https://registry.npmmirror.com/open/-/open-6.4.0.tgz" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@^1.3.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/ora/-/ora-1.4.0.tgz" + integrity sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw== + dependencies: + chalk "^2.1.0" + cli-cursor "^2.1.0" + cli-spinners "^1.0.1" + log-symbols "^2.1.0" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/package-json/-/package-json-4.0.1.tgz" + integrity sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA== + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pacote@^2.7.36: + version "2.7.38" + resolved "https://registry.npmmirror.com/pacote/-/pacote-2.7.38.tgz" + integrity sha512-XxHUyHQB7QCVBxoXeVu0yKxT+2PvJucsc0+1E+6f95lMUxEAYERgSAc71ckYXrYr35Ew3xFU/LrhdIK21GQFFA== + dependencies: + bluebird "^3.5.0" + cacache "^9.2.9" + glob "^7.1.2" + lru-cache "^4.1.1" + make-fetch-happen "^2.4.13" + minimatch "^3.0.4" + mississippi "^1.2.0" + normalize-package-data "^2.4.0" + npm-package-arg "^5.1.2" + npm-pick-manifest "^1.0.4" + osenv "^0.1.4" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^4.0.0" + safe-buffer "^5.1.1" + semver "^5.3.0" + ssri "^4.1.6" + tar-fs "^1.15.3" + tar-stream "^1.5.4" + unique-filename "^1.1.0" + which "^1.2.12" + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-git-config@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/parse-git-config/-/parse-git-config-0.2.0.tgz" + integrity sha512-amapZFADOJtHvX2URcRfbzG2OFcW+UAwmdK2kht2N2vsH5Py65VxI5yZTlD2DjmxVhTz6htFoVCxROYUJaYOXQ== + dependencies: + ini "^1.3.3" + +parse-git-config@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/parse-git-config/-/parse-git-config-1.1.1.tgz" + integrity sha512-S3LGXJZVSy/hswvbSkfdbKBRVsnqKrVu6j8fcvdtJ4TxosSELyQDsJPuGPXuZ+EyuYuJd3O4uAF8gcISR0OFrQ== + dependencies: + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + git-config-path "^1.0.1" + ini "^1.3.4" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/parse-passwd/-/parse-passwd-1.0.0.tgz" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@^6.2.1: + version "6.2.2" + resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz" + integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== + +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmmirror.com/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" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-js/-/postcss-js-4.0.1.tgz" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.0.1: + version "6.2.0" + resolved "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.2.0.tgz" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-selector-parser@6.0.10: + version "6.0.10" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1: + version "6.1.2" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.31: + version "8.4.41" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.41.tgz" + integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== + +prettier@3.0.3: + version "3.0.3" + resolved "https://registry.npmmirror.com/prettier/-/prettier-3.0.3.tgz" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + +prismjs@^1.29.0: + version "1.29.0" + resolved "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/promise-retry/-/promise-retry-1.1.1.tgz" + integrity sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw== + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + +protoduck@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/protoduck/-/protoduck-4.0.0.tgz" + integrity sha512-9sxuz0YTU/68O98xuDn8NBxTVH9EuMhrBTxZdiBL0/qxRmWhB/5a8MagAebDa+98vluAZTs8kMZibCdezbRCeQ== + dependencies: + genfun "^4.0.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +pump@^1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/pump/-/pump-1.0.3.tgz" + integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/queue/-/queue-6.0.1.tgz" + integrity sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg== + dependencies: + inherits "~2.0.3" + +rc@^1.0.1, rc@^1.1.6: + version "1.2.8" + resolved "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +reactive-signal@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/reactive-signal/-/reactive-signal-1.0.3.tgz" + integrity sha512-UlbIDgdkreGW0QFdrxCsVQNcPkiv+aOT4bWIF3inHb4jZlBdvRCZtgO9Ie5ayFxlnjetQg1QvRhg5PlGKSxZEA== + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +registry-auth-token@^3.0.1: + version "3.4.0" + resolved "https://registry.npmmirror.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz" + integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.npmmirror.com/registry-url/-/registry-url-3.1.0.tgz" + integrity sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA== + dependencies: + rc "^1.0.1" + +remote-origin-url@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/remote-origin-url/-/remote-origin-url-0.4.0.tgz" + integrity sha512-HYhdsT2pNd0LP4Osb0vtQ1iassxIc3Yk1oze7j8dMJFciMkW8e0rdg9E/mOunqtSVHSzvMfwLDIYzPnEDmpk6Q== + dependencies: + parse-git-config "^0.2.0" + +remote-origin-url@^0.5.1: + version "0.5.3" + resolved "https://registry.npmmirror.com/remote-origin-url/-/remote-origin-url-0.5.3.tgz" + integrity sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg== + dependencies: + parse-git-config "^1.1.1" + +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/resolve-dir/-/resolve-dir-0.1.1.tgz" + integrity sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA== + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.npmmirror.com/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" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.npmmirror.com/retry/-/retry-0.10.1.tgz" + integrity sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.7.1" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup@^3.27.1: + version "3.29.4" + resolved "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + optionalDependencies: + fsevents "~2.3.2" + +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== + dependencies: + aproba "^1.1.1" + +rxjs@^6.4.0: + version "6.6.7" + resolved "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1: + version "5.2.1" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@^1.55.0: + version "1.77.8" + resolved "https://registry.npmmirror.com/sass/-/sass-1.77.8.tgz" + integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/semver-diff/-/semver-diff-2.1.0.tgz" + integrity sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw== + dependencies: + semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: + version "5.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shortid@^2.2.8: + version "2.2.16" + resolved "https://registry.npmmirror.com/shortid/-/shortid-2.2.16.tgz" + integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g== + dependencies: + nanoid "^2.1.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +smart-buffer@^1.0.13: + version "1.1.15" + resolved "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-1.1.15.tgz" + integrity sha512-1+8bxygjTsNfvQe0/0pNBesTOlSHtOeG6b6LYbvsZCCHDKYZ40zcQo6YTnZBWrBSLWOCbrHljLdEmGMYebu7aQ== + +socks-proxy-agent@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz" + integrity sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA== + dependencies: + agent-base "^4.1.0" + socks "^1.1.10" + +socks@^1.1.10: + version "1.1.10" + resolved "https://registry.npmmirror.com/socks/-/socks-1.1.10.tgz" + integrity sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA== + dependencies: + ip "^1.1.4" + smart-buffer "^1.0.13" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.18" + resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz" + integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== + +ssri@^4.1.6: + version "4.1.6" + resolved "https://registry.npmmirror.com/ssri/-/ssri-4.1.6.tgz" + integrity sha512-WUbCdgSAMQjTFZRWvSPpauryvREEA+Krn19rx67UlJEJx/M192ZHxMmJXjZ4tkdFm+Sb0SXGlENeQVlA5wY7kA== + dependencies: + safe-buffer "^5.1.0" + +ssri@^5.0.0, ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.npmmirror.com/ssri/-/ssri-5.3.0.tgz" + integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== + dependencies: + safe-buffer "^5.1.1" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-shift@^1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.3.tgz" + integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmmirror.com/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" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.npmmirror.com/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" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/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" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.npmmirror.com/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" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swiper@^11.1.4: + version "11.1.9" + resolved "https://registry.npmmirror.com/swiper/-/swiper-11.1.9.tgz" + integrity sha512-rflu8zvfGa3x1v/aeSufk4zRJffhOQowyvtJlp46sUBnOqAuk1Rdv5Ldj0AWWBV595iZ+ZMk7VB35ZRtRUomtA== + +tailwind-merge@^2.2.1: + version "2.5.2" + resolved "https://registry.npmmirror.com/tailwind-merge/-/tailwind-merge-2.5.2.tgz" + integrity sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg== + +tailwindcss@^3.3.3: + version "3.4.10" + resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.10.tgz" + integrity sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w== + 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" + +tar-fs@^1.15.3: + version "1.16.3" + resolved "https://registry.npmmirror.com/tar-fs/-/tar-fs-1.16.3.tgz" + integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + +tar-stream@^1.1.2, tar-stream@^1.5.4: + version "1.6.2" + resolved "https://registry.npmmirror.com/tar-stream/-/tar-stream-1.6.2.tgz" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/term-size/-/term-size-1.2.0.tgz" + integrity sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ== + dependencies: + execa "^0.7.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +textextensions@^2.5.0: + version "2.6.0" + resolved "https://registry.npmmirror.com/textextensions/-/textextensions-2.6.0.tgz" + integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/timed-out/-/timed-out-4.0.1.tgz" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/to-buffer/-/to-buffer-1.1.1.tgz" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.npmmirror.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +ts-node@^10.9.1: + version "10.9.2" + resolved "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.2.tgz" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@^5.0.2: + version "5.5.4" + resolved "https://registry.npmmirror.com/typescript/-/typescript-5.5.4.tgz" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + +uc.micro@^2.0.0, uc.micro@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz" + integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== + +unique-filename@^1.1.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/unique-string/-/unique-string-1.0.0.tgz" + integrity sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg== + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/unzip-response/-/unzip-response-2.0.1.tgz" + integrity sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw== + +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + +update-notifier@^2.2.0: + version "2.5.0" + resolved "https://registry.npmmirror.com/update-notifier/-/update-notifier-2.5.0.tgz" + integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-ci "^1.0.10" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz" + integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== + dependencies: + prepend-http "^1.0.1" + +util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +vite@^4.4.5: + version "4.5.3" + resolved "https://registry.npmmirror.com/vite/-/vite-4.5.3.tgz" + integrity sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" + +weakmap-polyfill@2.0.4: + version "2.0.4" + resolved "https://registry.npmmirror.com/weakmap-polyfill/-/weakmap-polyfill-2.0.4.tgz" + integrity sha512-ZzxBf288iALJseijWelmECm/1x7ZwQn3sMYIkDr2VvZp7r6SEKuT8D0O9Wiq6L9Nl5mazrOMcmiZE/2NCenaxw== + +which@^1.2.12, which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/widest-line/-/widest-line-2.0.1.tgz" + integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== + dependencies: + string-width "^2.1.1" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmmirror.com/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" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmmirror.com/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" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.0.0: + version "2.4.3" + resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz" + integrity sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.npmmirror.com/y18n/-/y18n-3.2.2.tgz" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yaml@^2.3.4: + version "2.5.0" + resolved "https://registry.npmmirror.com/yaml/-/yaml-2.5.0.tgz" + integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zrender@5.6.0: + version "5.6.0" + resolved "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz" + integrity sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg== + dependencies: + tslib "2.3.0" From 3700fb3c7c9fbfad222e8600a501c908ac0f271f Mon Sep 17 00:00:00 2001 From: yy <2572082773@qq.com> Date: Sat, 17 Aug 2024 00:26:13 +0800 Subject: [PATCH 2/3] chore delete some templates and update home page --- packages/omi-low-code/src/pages/about.tsx | 71 -------- .../omi-low-code/src/pages/admin/chart.tsx | 85 ---------- .../omi-low-code/src/pages/admin/home.tsx | 48 ------ .../omi-low-code/src/pages/components.tsx | 151 ----------------- .../src/pages/components/breadcrumb.tsx | 29 ---- .../src/pages/components/button.tsx | 107 ------------ .../src/pages/components/switch.tsx | 24 --- .../omi-low-code/src/pages/editor/index.tsx | 66 ++++++++ packages/omi-low-code/src/pages/home.tsx | 160 +----------------- packages/omi-low-code/src/routes.tsx | 16 +- packages/omi-low-code/src/store.ts | 47 ++--- 11 files changed, 90 insertions(+), 714 deletions(-) delete mode 100644 packages/omi-low-code/src/pages/about.tsx delete mode 100644 packages/omi-low-code/src/pages/admin/chart.tsx delete mode 100644 packages/omi-low-code/src/pages/admin/home.tsx delete mode 100644 packages/omi-low-code/src/pages/components.tsx delete mode 100644 packages/omi-low-code/src/pages/components/breadcrumb.tsx delete mode 100644 packages/omi-low-code/src/pages/components/button.tsx delete mode 100644 packages/omi-low-code/src/pages/components/switch.tsx create mode 100644 packages/omi-low-code/src/pages/editor/index.tsx diff --git a/packages/omi-low-code/src/pages/about.tsx b/packages/omi-low-code/src/pages/about.tsx deleted file mode 100644 index 64c8985df1..0000000000 --- a/packages/omi-low-code/src/pages/about.tsx +++ /dev/null @@ -1,71 +0,0 @@ -export function About() { - return ( -
    -
    -

    关于我们

    -
    - 头像4 - 头像3 - 头像3 - 头像1 - 头像2 - 头像3 -
    -

    - 我们是一个专注于为客户提供优质产品和服务的公司。成立于 20XX - 年,我们已经在行业中取得了显著的成就,赢得了广泛的客户认可。 -

    -

    - 我们的团队由一群充满激情、富有创造力的专业人士组成,他们致力于通过不断创新和改进,为客户提供卓越的解决方案。 -

    -

    我们的使命是成为行业的领导者,为客户提供最佳的产品和服务,帮助他们实现业务目标。

    -
    - -
    -

    关于公司

    -

    - 我们是一个专注于为客户提供优质产品和服务的公司。成立于 20XX - 年,我们已经在行业中取得了显著的成就,赢得了广泛的客户认可。 -

    -

    - 我们的团队由一群充满激情、富有创造力的专业人士组成,他们致力于通过不断创新和改进,为客户提供卓越的解决方案。 -

    -

    我们的使命是成为行业的领导者,为客户提供最佳的产品和服务,帮助他们实现业务目标。

    -
    -
    -

    关于愿景

    -

    - 我们的愿景是通过提供卓越的产品和服务,成为全球领先的企业之一。我们希望建立一个可持续发展的企业,为全球客户创造价值,同时为员工提供一个充满挑战和机会的工作环境。 -

    -

    - 我们相信,通过专注于客户需求,持续创新和改进,以及致力于实现我们的愿景,我们将能够在竞争激烈的市场中保持领先地位,并为所有利益相关者创造长期价值。 -

    -

    如果您有任何问题或建议,请随时与我们联系,我们期待与您合作!

    -
    -
    - ) -} diff --git a/packages/omi-low-code/src/pages/admin/chart.tsx b/packages/omi-low-code/src/pages/admin/chart.tsx deleted file mode 100644 index f0ef16c216..0000000000 --- a/packages/omi-low-code/src/pages/admin/chart.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { tag, Component } from 'omi' -import * as echarts from 'echarts/core' -import { LineChart } from 'echarts/charts' -import { GridComponent, TooltipComponent, ToolboxComponent } from 'echarts/components' -import { CanvasRenderer } from 'echarts/renderers' - -// 注册必须的组件 -echarts.use([LineChart, GridComponent, TooltipComponent, ToolboxComponent, CanvasRenderer]) - -export function createLineChart(container: HTMLElement, option: echarts.EChartsCoreOption) { - const chart = echarts.init(container) - chart.setOption(option) - return chart -} - -@tag('admin-chart') -export class AdminChart extends Component { - render() { - return ( -
    - {Array.from({ length: 20 }).map((_, i) => ( -
    (this.chartDivs[i] = e)}>
    - ))} -
    - ) - } - - chartDivs: Array = [] - charts: Array = [] - - installed() { - const option = { - xAxis: { - type: 'category', - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], - }, - grid: { - x: 40, //默认是80px - y: 20, //默认是60px - x2: 20, //默认80px - y2: 30, //默认60px - }, - yAxis: { - type: 'value', - }, - series: [ - { - data: [], - type: 'line', - }, - ], - } - - this.chartDivs.forEach((div, i) => { - if (div) { - setTimeout(() => { - option.series[0].data = Array.from({ length: 7 }).map((): number => { - return this.random() - }) as any - this.charts[i] = createLineChart(div, option) - }, i * 50) - } - }) - - // Add a window resize event listener to update the chart dimensions - window.addEventListener('resize', this.onWindowResize) - } - - random(): number { - return Math.floor(Math.random() * 1000) - } - - onWindowResize = () => { - this.charts.forEach((chart) => { - if (chart) { - chart.resize() - } - }) - } - - // Remove the event listener when the component is unmounted - uninstall() { - window.removeEventListener('resize', this.onWindowResize) - } -} diff --git a/packages/omi-low-code/src/pages/admin/home.tsx b/packages/omi-low-code/src/pages/admin/home.tsx deleted file mode 100644 index b080aaf406..0000000000 --- a/packages/omi-low-code/src/pages/admin/home.tsx +++ /dev/null @@ -1,48 +0,0 @@ -export function Home() { - return ( -
    -
    -
    -
    - 1 -
    -
    - 2 -
    -
    - 3 -
    -
    - 4 -
    -
    - -
    -
    - 5 -
    -
    - 6 -
    -
    - -
    -
    - 7 -
    -
    - 8 -
    -
    - -
    -
    -
    -
    9
    -
    10
    -
    -
    -
    -
    - ) -} diff --git a/packages/omi-low-code/src/pages/components.tsx b/packages/omi-low-code/src/pages/components.tsx deleted file mode 100644 index f90ed69020..0000000000 --- a/packages/omi-low-code/src/pages/components.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import '../components/omiu/calendar/index' -import '../components/omiu/button' -import '../components/omiu/switch' -import '../components/omiu/breadcrumb' - -export function Questionnaire() { - return ( -
    -

    Button 按钮

    -

    按钮用于开启一个闭环的操作任务,如“删除”对象、“购买”商品等。

    - -

    按钮 Variant 和 Theme

    - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - -

    图标按钮

    - -
    -
    - - - 新建 - - - 上传文件 - - - - - 搜索 - -
    -
    - -

    不同状态的按钮

    - -
    -
    - - 禁用的按钮 - - - 加载中 - -
    -
    - -
    -

    Switch 开关

    -

    用于两个互斥选项,用来打开或关闭选项的选择控件。

    - -

    不同尺寸

    -
    - - - -
    - -

    禁用

    -
    - - - -
    - -
    -

    Breadcrumb 面包屑

    -

    显示当前页面在系统层级结构的位置,并能返回之前任意层级的页面。

    - -

    默认

    -
    - -
    -
    - ) -} diff --git a/packages/omi-low-code/src/pages/components/breadcrumb.tsx b/packages/omi-low-code/src/pages/components/breadcrumb.tsx deleted file mode 100644 index 73e9d65117..0000000000 --- a/packages/omi-low-code/src/pages/components/breadcrumb.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import '@/components/omiu/breadcrumb' - -export function Questionnaire() { - return ( -
    -

    Breadcrumb 面包屑

    -

    显示当前页面在系统层级结构的位置,并能返回之前任意层级的页面。

    - -

    默认

    -
    - -
    -
    - ) -} diff --git a/packages/omi-low-code/src/pages/components/button.tsx b/packages/omi-low-code/src/pages/components/button.tsx deleted file mode 100644 index 53bf991e57..0000000000 --- a/packages/omi-low-code/src/pages/components/button.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import '@/components/omiu/button' - -export function Questionnaire() { - return ( -
    -

    Button 按钮

    -

    按钮用于开启一个闭环的操作任务,如“删除”对象、“购买”商品等。

    - -

    按钮 Variant 和 Theme

    - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - 填充按钮 - - 描边按钮 - - - 虚框按钮 - - - 文字按钮 - -
    -
    - -

    图标按钮

    - -
    -
    - - - 新建 - - - 上传文件 - - - - - 搜索 - -
    -
    - -

    不同状态的按钮

    - -
    -
    - - 禁用的按钮 - - - 加载中 - -
    -
    -
    - ) -} diff --git a/packages/omi-low-code/src/pages/components/switch.tsx b/packages/omi-low-code/src/pages/components/switch.tsx deleted file mode 100644 index 39ecf4f598..0000000000 --- a/packages/omi-low-code/src/pages/components/switch.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import '@/components/omiu/switch' - -export function Questionnaire() { - return ( -
    -

    Switch 开关

    -

    用于两个互斥选项,用来打开或关闭选项的选择控件。

    - -

    不同尺寸

    -
    - - - -
    - -

    禁用

    -
    - - - -
    -
    - ) -} diff --git a/packages/omi-low-code/src/pages/editor/index.tsx b/packages/omi-low-code/src/pages/editor/index.tsx new file mode 100644 index 0000000000..3f6cbbe35c --- /dev/null +++ b/packages/omi-low-code/src/pages/editor/index.tsx @@ -0,0 +1,66 @@ +import { tag, Component } from 'omi' + +// 代码编辑器,暂时不管 + +@tag('code-editor') +export class CodeEditor extends Component { + codeContent: string = '' + + static css = [ + ` + textarea { + width: 100%; + height: 48px; + padding: 1rem; + border: 1px solid #ccc; + border-radius: 0.25rem; + font-family: monospace; + background: #f8f8f8; + color: #333; + transition: background 0.3s ease-in-out, border-color 0.3s ease-in-out; + } + + textarea:focus { + background: #fff; + border-color: #007bff; + } + + .editor-container { + max-width: 600px; + margin: 0 auto; + padding: 1.5rem; + background: #fff; + border-radius: 0.5rem; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); + } + + .editor-title { + text-align: center; + font-size: 1.25rem; + font-weight: bold; + margin-bottom: 1rem; + } + + .editor-textarea { + height: 200px; + } + `, + ] + + handleInput(e: Event) { + this.codeContent = (e.target as HTMLTextAreaElement).value + } + + render() { + return ( +
    + +
    + ) + } +} + +// 渲染组件到页面 +export function EditorPage() { + return +} diff --git a/packages/omi-low-code/src/pages/home.tsx b/packages/omi-low-code/src/pages/home.tsx index 3cc837e9d4..dc22591c33 100644 --- a/packages/omi-low-code/src/pages/home.tsx +++ b/packages/omi-low-code/src/pages/home.tsx @@ -1,163 +1,19 @@ -import { isDark } from '../store.ts' +// import { isDark } from '../store.ts' import '../components/omiu/button.tsx' export function Home() { return ( <> -
    -
    -

    - OMI Tailwind Templates -

    -

    - 100+ 免费模板,对外站点、对内管理系统,开箱即用,自由定制,开源免费 -

    -
    - - 开始使用 - - - 源代码 - - - 🎉 管理系统 - -
    -
    -
    - -
    -
    -
    -
    - 🔪 -
    -

    刀锋锐利

    -

    - Tailwind CSS为基础的响应式布局站点和管理系统,直接复制粘贴,到处都能用 -

    -
    -
    -
    - 🎁 -
    -

    开箱即用

    -

    - 100+的模板,直接修修改改,打造成您自己的站点,也可以只配置 JSON,不需要任何前端知识 -

    -
    - -
    -
    - ⚙️ -
    -

    自由定制

    -

    - 颜色、圆角、白天黑夜模式、多语言切换,自由设定,所有模板都是可扩展的 JSON -

    +
    +
    Sidebar
    + +
    +
    +
    Column 1
    +
    Column 2
    - -
    -
    -

    标题

    -

    - 这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。 -

    -
    - 按钮1 - - 按钮2 - -
    -
    -
    - 示例图片 -
    -
    - -
    -
    - 示例图片 -
    -
    -

    标题

    -

    - 这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。这里是描述内容。 -

    -
    -
    - -
    -
    -

    卡片1

    -

    这里是卡片1的描述内容。

    -
    -
    -

    卡片2

    -

    这里是卡片2的描述内容。

    -
    -
    -

    卡片3

    -

    这里是卡片3的描述内容。

    -
    -
    -

    卡片1

    -

    这里是卡片1的描述内容。

    -
    -
    -

    卡片2

    -

    这里是卡片2的描述内容。

    -
    -
    -

    卡片3

    -

    这里是卡片3的描述内容。

    -
    -
    - -
    -
    -
    -

    标题

    -

    这里是描述内容。

    -
    - 按钮1 - - 按钮2 - -
    -
    -
    ) } diff --git a/packages/omi-low-code/src/routes.tsx b/packages/omi-low-code/src/routes.tsx index de8e5d6cdf..7e56be58e5 100644 --- a/packages/omi-low-code/src/routes.tsx +++ b/packages/omi-low-code/src/routes.tsx @@ -11,9 +11,7 @@ import './components/appear' export const routes = [ createRoute('/', () => import('./pages/home')), - createRoute('/about', () => import('./pages/about')), - createRoute('/components', () => import('./pages/components')), createRoute('/results/success', () => import('./pages/results/success')), createRoute('/results/fail', () => import('./pages/results/fail')), createRoute('/results/browser-not-support', () => import('./pages/results/browser-not-support')), @@ -24,11 +22,9 @@ export const routes = [ createRoute('/results/not-found', () => import('./pages/results/not-found')), createDocsRoute('/product-docs/:lang/:section', () => import('./pages/product-docs')), createRoute('/icons', () => import('./pages/icons')), - createAdminRoute('/admin/home', () => import('./pages/admin/home')), - createAdminRoute('/admin/chart', () => import('./pages/admin/chart')), - createComponentRoute('/components/button', () => import('./pages/components/button')), - createComponentRoute('/components/switch', () => import('./pages/components/switch')), - createComponentRoute('/components/breadcrumb', () => import('./pages/components/breadcrumb')), + // createComponentRoute('/components/button', () => import('./pages/components/button')), + // createComponentRoute('/components/switch', () => import('./pages/components/switch')), + // createComponentRoute('/components/breadcrumb', () => import('./pages/components/breadcrumb')), createRoute('*', () => import('./pages/results/not-found')), { path: '/before-enter/test', @@ -44,7 +40,7 @@ function createRoute(path: string, componentImport: () => Promise) { path, render(router: Router) { return ( - + Promise + Promise) path, render(router: Router) { return ( - + ([ value: 'home', }, { - text: '产品', + text: '物料组件', children: [ { - text: '组件', - path: '/components/button', - value: 'components', + type: 'title', + text: '可以先链个路由自己调', }, + // { + // text: 'button', + // path: '/button', + // value: 'button', + // }, ], }, { @@ -95,27 +99,14 @@ export const navbarItems = signal([ }, ], }, - { - text: '物料组件', - children: [ - { - type: 'title', - text: '可以先链个路由自己调', - }, - { - text: '关于', - path: '/about', - value: 'about', - }, - ], - }, + { text: 'OMI官网', href: 'http://omijs.org/', }, { - href: 'https://github.com/Tencent/omi/tree/master/packages/omi-templates', + href: 'https://github.com/Tencent/omi/tree/master/packages/omi-low-code', target: '_blank', inner: ` @@ -144,24 +135,6 @@ export function getValueByPath(path: string, navbarItems: NavbarItem[]): string } export const sidebarItems = signal([ - { - text: '仪表盘', - icon: 'dashboard', - isOpen: true, - children: [ - { - text: '概览仪表盘', - value: 'dashboard', - href: '#/admin/home', - }, - { - text: '统计报表', - value: 'chart', - href: '#/admin/chart', - }, - ], - tag: '', - }, { text: '列表页', icon: 'root-list', From 3c5bd7b2e6ad7baf88a4743ef936fc7083989d67 Mon Sep 17 00:00:00 2001 From: yy <2572082773@qq.com> Date: Sat, 17 Aug 2024 02:21:48 +0800 Subject: [PATCH 3/3] feat: add materials components demo --- .../components/materials/base-material.tsx | 35 ++++++++++++ .../components/materials/instance/button.tsx | 13 +++++ .../materials/layout/single-layout.tsx | 19 +++++++ packages/omi-low-code/src/pages/test.tsx | 57 +++++++++++++++++++ packages/omi-low-code/src/routes.tsx | 1 + packages/omi-low-code/src/store.ts | 12 ++-- 6 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 packages/omi-low-code/src/components/materials/base-material.tsx create mode 100644 packages/omi-low-code/src/components/materials/instance/button.tsx create mode 100644 packages/omi-low-code/src/components/materials/layout/single-layout.tsx create mode 100644 packages/omi-low-code/src/pages/test.tsx diff --git a/packages/omi-low-code/src/components/materials/base-material.tsx b/packages/omi-low-code/src/components/materials/base-material.tsx new file mode 100644 index 0000000000..28cbcfdb13 --- /dev/null +++ b/packages/omi-low-code/src/components/materials/base-material.tsx @@ -0,0 +1,35 @@ +import { Component} from 'omi' + +export interface ComponentInstance { + id: string + type: string + props: Record + children: ComponentInstance[] +} + +export abstract class BaseMaterial extends Component { + + + // 抽象方法,用于处理 `ComponentInstance` 接口数据 + abstract renderComponent(instance: ComponentInstance): JSX.Element + // 根据实例类型构造组件 + protected createComponent(instance: ComponentInstance): JSX.Element { + switch (instance.type) { + case 'button': + return + case 'layout': + return
    {instance.children.map((child) => this.renderComponent(child))}
    + // 可以扩展其他组件类型 + default: + return
    未知组件类型: {instance.type}
    + } + } + + // 基类的渲染方法 + render() { + const childrenInstance = this.props.children as ComponentInstance[] + return
    + {childrenInstance.map((instance) => this.renderComponent(instance))} +
    + } +} diff --git a/packages/omi-low-code/src/components/materials/instance/button.tsx b/packages/omi-low-code/src/components/materials/instance/button.tsx new file mode 100644 index 0000000000..ea3f7ed31a --- /dev/null +++ b/packages/omi-low-code/src/components/materials/instance/button.tsx @@ -0,0 +1,13 @@ +// 实例组件,需要修改 +// src/materials/instance/button.tsx +import { tag } from 'omi' +import { BaseMaterial, ComponentInstance } from '../base-material' + +@tag('button-component') +class ButtonComponent extends BaseMaterial { + + renderComponent(instance: ComponentInstance): JSX.Element { + // 按钮组件,渲染具体的按钮元素 + return + } +} diff --git a/packages/omi-low-code/src/components/materials/layout/single-layout.tsx b/packages/omi-low-code/src/components/materials/layout/single-layout.tsx new file mode 100644 index 0000000000..4aa4957a03 --- /dev/null +++ b/packages/omi-low-code/src/components/materials/layout/single-layout.tsx @@ -0,0 +1,19 @@ +// 布局组件,需要优化 +// src/materials/layout/layout.tsx +import { tag, h } from 'omi' +import { BaseMaterial, ComponentInstance } from '../base-material' + +@tag('layout-component') +class LayoutComponent extends BaseMaterial { + static css = [ + `div { + width:100px; + height:100px; + }`, + ] + + renderComponent(instance: ComponentInstance): JSX.Element { + // 布局组件,渲染其子组件 + return
    {instance.children.map((child) => this.createComponent(child))}
    + } +} diff --git a/packages/omi-low-code/src/pages/test.tsx b/packages/omi-low-code/src/pages/test.tsx new file mode 100644 index 0000000000..814c21f608 --- /dev/null +++ b/packages/omi-low-code/src/pages/test.tsx @@ -0,0 +1,57 @@ +import { tag } from 'omi'; +import { BaseMaterial ,ComponentInstance } from '../components/materials/base-material'; + +// 测试页面 + +@tag('my-page') +class MyPage extends BaseMaterial { + + // 初始化状态和方法 + state = { + layoutInstance: { + id: 'layout1', + type: 'layout', + props: { + style: 'padding: 20px; border: 1px solid #ccc;', + }, + children: [] as ComponentInstance[], + } + }; + + // 增加按钮实例的方法 + addButton = () => { + const newButton: ComponentInstance = { + id: `button-${Date.now()}`, + type: 'button', + props: { + label: '新按钮', + style: 'margin: 5px;border: 1px solid #ccc;', + }, + children: [], + }; + + this.state.layoutInstance.children.push(newButton); + this.update(); + console.log("now state",this.state) + }; + + // 重写 `renderComponent` 方法 + renderComponent(instance: ComponentInstance): JSX.Element { + return this.createComponent(instance); + } + + // 渲染布局 + render() { + return ( +
    + +
    {this.renderComponent(this.state.layoutInstance)}
    +
    + ); + } +} + +export function Home() { + return +} + diff --git a/packages/omi-low-code/src/routes.tsx b/packages/omi-low-code/src/routes.tsx index 7e56be58e5..215709f07d 100644 --- a/packages/omi-low-code/src/routes.tsx +++ b/packages/omi-low-code/src/routes.tsx @@ -11,6 +11,7 @@ import './components/appear' export const routes = [ createRoute('/', () => import('./pages/home')), + createRoute('/test', () => import('./pages/test')), createRoute('/results/success', () => import('./pages/results/success')), createRoute('/results/fail', () => import('./pages/results/fail')), diff --git a/packages/omi-low-code/src/store.ts b/packages/omi-low-code/src/store.ts index cbef77ecf8..456405997e 100644 --- a/packages/omi-low-code/src/store.ts +++ b/packages/omi-low-code/src/store.ts @@ -41,13 +41,13 @@ export const navbarItems = signal([ children: [ { type: 'title', - text: '可以先链个路由自己调', + text: '先链个路由自己调', + }, + { + text: '测试页面', + path: '/test', + value: 'test', }, - // { - // text: 'button', - // path: '/button', - // value: 'button', - // }, ], }, {