diff --git a/.dockerignore b/.dockerignore index 807c209a..c5de532f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,4 +5,4 @@ node_modules dist .git e2e -docs + diff --git a/Dockerfile b/Dockerfile index 20c5e60c..f150353f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,12 +7,13 @@ RUN npm install -g pnpm WORKDIR /build # Install dependencies from lock file -COPY pnpm-lock.yaml ./ +COPY pnpm-*.yaml ./ RUN pnpm fetch # Copy package.json and install dependencies +COPY docs/package.json ./docs/package.json COPY package.json ./ -RUN pnpm install -r --offline --ignore-scripts --no-optional +RUN pnpm install --offline --ignore-scripts --no-optional # Copy assets and translations to build COPY .* vite.config.ts index.html ./ diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 279a35f4..f7aff7d4 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -55,6 +55,19 @@ export default defineConfig({ { text: "Getting Started", link: "/guide/getting-started" }, ], }, + { + text: "Advanced Configuration", + items: [ + { text: "Authentication", link: "/guide/authentication" }, + { text: "Healthcheck", link: "/guide/healthcheck" }, + { text: "Remote Host", link: "/guide/remote-host" }, + { text: "Supported Env Vars", link: "/guide/supported-env-vars" }, + ], + }, + { + text: "Troubleshooting", + items: [{ text: "FAQ", link: "/guide/faq" }], + }, ], footer: { diff --git a/docs/guide/authentication.md b/docs/guide/authentication.md new file mode 100644 index 00000000..98a72d8d --- /dev/null +++ b/docs/guide/authentication.md @@ -0,0 +1,29 @@ +--- +title: Authentication +--- + +# Setting Up Authentication + +Dozzle supports a very simple authentication out of the box with just username and password. You should deploy using SSL to keep the credentials safe. See configuration to use `--username` and `--password`. You can also use docker secrets `--usernamefile` and `--passwordfile`. + +::: code-group + +```sh [cli] +$ docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 amir20/dozzle --username amirraminfar --password supersecretpassword +``` + +```yaml [docker-compose.yml] +version: "3" +services: + dozzle: + image: amir20/dozzle:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + ports: + - 8080:8080 + environment: + DOZZLE_USERNAME: amirraminfar + DOZZLE_PASSWORD: supersecretpassword +``` + +::: diff --git a/docs/guide/faq.md b/docs/guide/faq.md new file mode 100644 index 00000000..b3ce3d2a --- /dev/null +++ b/docs/guide/faq.md @@ -0,0 +1,51 @@ +--- +title: FAQ +--- + +# Frequently Asked Questions + +## I installed Dozzle, but logs are slow or they never load. What do I do? + +Dozzle uses Server Sent Events (SSE) which connects to a server using a HTTP stream without closing the connection. If any proxy tries to buffer this connection, then Dozzle never receives the data and hangs forever waiting for the reverse proxy to flush the buffer. Since version `1.23.0`, Dozzle sends the `X-Accel-Buffering: no` header which should stop reverse proxies buffering. However, some proxies may ignore this header. In those cases, you need to explicitly disable any buffering. + +Below is an example with nginx and using `proxy_pass` to disable buffering: + +``` +server { + ... + + location / { + proxy_pass http://:8080; + } + + location /api { + proxy_pass http://:8080; + + proxy_buffering off; + proxy_cache off; + } +} +``` + +## We have tools that uses Dozzle when a new container is created. How can I get a direct link to a container by name? + +Dozzle has a special [route](https://github.com/amir20/dozzle/blob/master/assets/pages/show.vue) that can be used to search containers by name and then forward to that container. For example, if you have a container with name `"foo.bar"` and id `abc123`, you can send your users to `/show?name=foo.bar` which will be forwarded to `/container/abc123`. + +## I installed Dozzle but memory consumption doesn't show up! + +_This is an issue specific to ARM devices._ + +Dozzle uses the Docker API to gather information about the containers' memory usage. If the memory usage is not showing up, then it is likely that the Docker API is not returning the memory usage. + +You can verify this by running docker info, and you should see the following: + +``` +WARNING: No memory limit support +WARNING: No swap limit support +``` + +In this case, you'll need to add the following line to your `/boot/cmdline.txt` file and reboot your device. + +``` +cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 +``` diff --git a/docs/guide/healthcheck.md b/docs/guide/healthcheck.md new file mode 100644 index 00000000..91759e3a --- /dev/null +++ b/docs/guide/healthcheck.md @@ -0,0 +1,24 @@ +--- +title: Healthcheck +--- + +# Adding healthcheck + +Dozzle doesn't enable healthcheck by default as it adds extra CPU usage. `healthcheck` can be enabled manually. + +```yaml +version: "3" +services: + dozzle: + image: amir20/dozzle:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + ports: + - 8080:8080 + healthcheck: + test: ["CMD", "/dozzle", "healthcheck"] + interval: 3s + timeout: 30s + retries: 5 + start_period: 30s +``` diff --git a/docs/guide/remote-host.md b/docs/guide/remote-host.md new file mode 100644 index 00000000..64c1db36 --- /dev/null +++ b/docs/guide/remote-host.md @@ -0,0 +1,35 @@ +--- +title: Remote Host Setup +--- + +# Remote Host Setup + +Dozzle supports connecting to multiple remote hosts via `tcp://` using TLS and non-secured connections. Dozzle will need to have appropriate certs mounted to use secured connection. `ssh://` is not supported because Dozzle docker image does not ship with any ssh clients. + +## Connecting remote hosts + +Remote hosts can be configured with `--remote-host` or `DOZZLE_REMOTE_HOST`. All certs must be mounted to `/certs` directory. The `/cert` directory expects to have `/certs/{ca,cert,key}.pem` or `/certs/{host}/{ca,cert,key}.pem` in case of multiple hosts. + +Multiple `--remote-host` flags can be used to specify multiple hosts. + +::: code-group + +```sh [cli] +$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v /path/to/certs:/certs -p 8080:8080 amir20/dozzle --remote-host tcp://167.99.1.1:2376 +``` + +```yaml [docker-compose.yml] +version: "3" +services: + dozzle: + image: amir20/dozzle:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /path/to/certs:/certs + ports: + - 8080:8080 + environment: + DOZZLE_REMOTE_HOST: tcp://167.99.1.1:2376,tcp://167.99.1.2:2376 +``` + +::: diff --git a/docs/guide/supported-env-vars.md b/docs/guide/supported-env-vars.md new file mode 100644 index 00000000..0573f955 --- /dev/null +++ b/docs/guide/supported-env-vars.md @@ -0,0 +1,21 @@ +--- +title: Environment variables and configuration +--- + +# Environment variables and configuration + +Configurations can be done with flags or environment variables. The table below outlines all supported options and their respective env vars. + +| Flag | Env Variable | Default | +| ---------------- | ---------------------- | ------- | +| `--addr` | `DOZZLE_ADDR` | `:8080` | +| `--base` | `DOZZLE_BASE` | `/` | +| `--hostname` | `DOZZLE_HOSTNAME` | `""` | +| `--level` | `DOZZLE_LEVEL` | `info` | +| `--filter` | `DOZZLE_FILTER` | `""` | +| `--username` | `DOZZLE_USERNAME` | `""` | +| `--password` | `DOZZLE_PASSWORD` | `""` | +| `--usernamefile` | `DOZZLE_USERNAME_FILE` | `""` | +| `--passwordfile` | `DOZZLE_PASSWORD_FILE` | `""` | +| `--no-analytics` | `DOZZLE_NO_ANALYTICS` | false | +| `--remote-host` | `DOZZLE_REMOTE_HOST` | | diff --git a/docs/package.json b/docs/package.json index 81e01901..75dc00c6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,11 @@ { - "private": true, - "type": "module", - "devDependencies": { - "dozzle": "workspace:*" - } + "private": true, + "type": "module", + "devDependencies": { + "@unocss/preset-typography": "^0.50.4", + "@unocss/reset": "^0.50.4", + "@unocss/transformer-directives": "^0.50.4", + "dozzle": "workspace:*", + "unocss": "^0.50.4" + } } diff --git a/main.go b/main.go index dce9f146..6e28417c 100644 --- a/main.go +++ b/main.go @@ -111,7 +111,7 @@ func main() { clients["localhost"] = dockerClient for _, host := range args.RemoteHost { - log.Infof("Creating a client for %s", host) + log.Infof("Creating client for %s", host) client := docker.NewClientWithTlsAndFilter(args.Filter, host) clients[host] = client } diff --git a/package.json b/package.json index 002e3a70..233140b3 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,7 @@ "vite": "4.1.4", "vite-plugin-pages": "^0.28.0", "vite-plugin-vue-layouts": "^0.8.0", + "vitepress": "1.0.0-alpha.51", "vitest": "^0.29.2", "vue-tsc": "^1.2.0" }, @@ -102,12 +103,5 @@ "npm": { "publish": false } - }, - "optionalDependencies": { - "@unocss/preset-typography": "^0.50.4", - "@unocss/reset": "^0.50.4", - "@unocss/transformer-directives": "^0.50.4", - "unocss": "^0.50.4", - "vitepress": "1.0.0-alpha.51" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b0cd5e03..66dd7dce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,9 +22,6 @@ importers: '@types/lodash.debounce': ^4.0.7 '@types/node': ^18.14.6 '@types/semver': ^7.3.13 - '@unocss/preset-typography': ^0.50.4 - '@unocss/reset': ^0.50.4 - '@unocss/transformer-directives': ^0.50.4 '@vitejs/plugin-vue': 4.0.0 '@vue/compiler-sfc': ^3.2.47 '@vue/test-utils': ^2.3.0 @@ -57,7 +54,6 @@ importers: splitpanes: ^3.1.5 ts-node: ^10.9.1 typescript: ^4.9.5 - unocss: ^0.50.4 unplugin-auto-import: ^0.15.1 unplugin-icons: ^0.15.3 unplugin-vue-components: ^0.24.1 @@ -99,12 +95,6 @@ importers: vue: 3.2.47 vue-i18n: 9.2.2_vue@3.2.47 vue-router: 4.1.6_vue@3.2.47 - optionalDependencies: - '@unocss/preset-typography': 0.50.4 - '@unocss/reset': 0.50.4 - '@unocss/transformer-directives': 0.50.4 - unocss: 0.50.4_vite@4.1.4 - vitepress: 1.0.0-alpha.51_tbu6ibuzbmq2zng52hwcifltki devDependencies: '@pinia/testing': 0.0.15_pinia@2.0.33+vue@3.2.47 '@types/d3-array': 3.0.4 @@ -137,14 +127,23 @@ importers: vite: 4.1.4_tbu6ibuzbmq2zng52hwcifltki vite-plugin-pages: 0.28.0_7qibpnl744oravj7yuajw4vysm vite-plugin-vue-layouts: 0.8.0_s7i5cn7xswa4rctkzerr3e4clm + vitepress: 1.0.0-alpha.51_tbu6ibuzbmq2zng52hwcifltki vitest: 0.29.2_jsdom@21.1.0+sass@1.58.3 vue-tsc: 1.2.0_typescript@4.9.5 docs: specifiers: + '@unocss/preset-typography': ^0.50.4 + '@unocss/reset': ^0.50.4 + '@unocss/transformer-directives': ^0.50.4 dozzle: workspace:* + unocss: ^0.50.4 devDependencies: + '@unocss/preset-typography': 0.50.4 + '@unocss/reset': 0.50.4 + '@unocss/transformer-directives': 0.50.4 dozzle: link:.. + unocss: 0.50.4 packages: @@ -152,8 +151,7 @@ packages: resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==} dependencies: '@algolia/autocomplete-shared': 1.7.4 - dev: false - optional: true + dev: true /@algolia/autocomplete-preset-algolia/1.7.4_algoliasearch@4.15.0: resolution: {integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==} @@ -163,32 +161,27 @@ packages: dependencies: '@algolia/autocomplete-shared': 1.7.4 algoliasearch: 4.15.0 - dev: false - optional: true + dev: true /@algolia/autocomplete-shared/1.7.4: resolution: {integrity: sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==} - dev: false - optional: true + dev: true /@algolia/cache-browser-local-storage/4.15.0: resolution: {integrity: sha512-uxxFhTWh4JJDb2+FFSmNMfEQ8p9o2vjSpU7iW007QX3OvqljPPN68lk3bpZVaG8pwr5MU1DqpkZ71FcQdVTjgQ==} dependencies: '@algolia/cache-common': 4.15.0 - dev: false - optional: true + dev: true /@algolia/cache-common/4.15.0: resolution: {integrity: sha512-Me3PbI4QurAM+3D+htIE0l1xt6+bl/18SG6Wc7bPQEZAtN7DTGz22HqhKNyLF2lR/cOfpaH7umXZlZEhIHf7gQ==} - dev: false - optional: true + dev: true /@algolia/cache-in-memory/4.15.0: resolution: {integrity: sha512-B9mg1wd7CKMfpkbiTQ8KlcKkH6ut/goVaI6XmDCUczOOqeuZlV34tuEi7o3Xo1j66KWr/d9pMjjGYcoVPCVeOA==} dependencies: '@algolia/cache-common': 4.15.0 - dev: false - optional: true + dev: true /@algolia/client-account/4.15.0: resolution: {integrity: sha512-8wqI33HRZy5ydfFt6F5vMhtkOiAUhVfSCYXx4U3Go5RALqWLgVUp6wzOo0mr1z08POCkHDpbQMQvyayb1CZ/kw==} @@ -196,8 +189,7 @@ packages: '@algolia/client-common': 4.15.0 '@algolia/client-search': 4.15.0 '@algolia/transporter': 4.15.0 - dev: false - optional: true + dev: true /@algolia/client-analytics/4.15.0: resolution: {integrity: sha512-jrPjEeNEIIQKeA1XCZXx3f3aybtwF7wjYlnfHbLARuZ9AuHzimOKjX0ZwqvMmvTsHivpcZ2rqY+j1E8HoH1ELA==} @@ -206,16 +198,14 @@ packages: '@algolia/client-search': 4.15.0 '@algolia/requester-common': 4.15.0 '@algolia/transporter': 4.15.0 - dev: false - optional: true + dev: true /@algolia/client-common/4.15.0: resolution: {integrity: sha512-PlsJMObZuYw4JlG5EhYv1PHDOv7n5mD5PzqFyoNfSOYaEPRZepa3W579ya29yOu3FZ0VGMNJmB7Q5v/+/fwvIw==} dependencies: '@algolia/requester-common': 4.15.0 '@algolia/transporter': 4.15.0 - dev: false - optional: true + dev: true /@algolia/client-personalization/4.15.0: resolution: {integrity: sha512-Bf0bhRAiNL9LWurzyHRH8UBi4fDt3VbCNkInxVngKQT1uCZWXecwoPWGhcSSpdanBqFJA/1WBt+BWx7a50Bhlg==} @@ -223,8 +213,7 @@ packages: '@algolia/client-common': 4.15.0 '@algolia/requester-common': 4.15.0 '@algolia/transporter': 4.15.0 - dev: false - optional: true + dev: true /@algolia/client-search/4.15.0: resolution: {integrity: sha512-dTwZD4u53WdmexnMcoO2Qd/+YCP3ESXKOtD2MryQ1a9dHwB2Y3Qob0kyS1PG82idwM3enbznvscI9Sf4o9PUWQ==} @@ -232,39 +221,33 @@ packages: '@algolia/client-common': 4.15.0 '@algolia/requester-common': 4.15.0 '@algolia/transporter': 4.15.0 - dev: false - optional: true + dev: true /@algolia/logger-common/4.15.0: resolution: {integrity: sha512-D8OFwn/HpvQz66goIcjxOKsYBMuxiruxJ3cA/bnc0EiDvSA2P2z6bNQWgS5gbstuTZIJmbhr+53NyOxFkmMNAA==} - dev: false - optional: true + dev: true /@algolia/logger-console/4.15.0: resolution: {integrity: sha512-pQOvVaRSEJQJRXKTnxEA6nN1hipSQadJJ4einw0nIlfMOGZh/kps1ybh8vRUlUGyfEuN/3dyFs0W3Ac7hIItlg==} dependencies: '@algolia/logger-common': 4.15.0 - dev: false - optional: true + dev: true /@algolia/requester-browser-xhr/4.15.0: resolution: {integrity: sha512-va186EfALF+6msYZXaoBSxcnFCg3SoWJ+uv1yMyhQRJRe7cZSHWSVT3s40vmar90gxlBu80KMVwVlsvJhJv6ew==} dependencies: '@algolia/requester-common': 4.15.0 - dev: false - optional: true + dev: true /@algolia/requester-common/4.15.0: resolution: {integrity: sha512-w0UUzxElbo4hrKg4QP/jiXDNbIJuAthxdlkos9nS8KAPK2XI3R9BlUjLz/ZVs4F9TDGI0mhjrNHhZ12KXcoyhg==} - dev: false - optional: true + dev: true /@algolia/requester-node-http/4.15.0: resolution: {integrity: sha512-eeEOhFtgwKcgAlKAZpgBRZJ0ILSEBCXxZ9uwfVWPD24W1b6z08gVoTJ6J7lCeCnJmudg+tMElDnGzHkjup9CJA==} dependencies: '@algolia/requester-common': 4.15.0 - dev: false - optional: true + dev: true /@algolia/transporter/4.15.0: resolution: {integrity: sha512-JoWR+ixG3EmA0UPntQFN/FV5TasYcYu93d5+oKzHFeZ6Z7rtW5Im9iy/Oh/ggk1AAN5fTdqKewtbBpdaYDbKsQ==} @@ -272,8 +255,7 @@ packages: '@algolia/cache-common': 4.15.0 '@algolia/logger-common': 4.15.0 '@algolia/requester-common': 4.15.0 - dev: false - optional: true + dev: true /@ampproject/remapping/2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} @@ -281,22 +263,22 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.17 - dev: false - optional: true + dev: true /@antfu/install-pkg/0.1.1: resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} dependencies: execa: 5.1.1 find-up: 5.0.0 + dev: true /@antfu/utils/0.5.2: resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} - dev: false - optional: true + dev: true /@antfu/utils/0.7.2: resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==} + dev: true /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} @@ -429,8 +411,7 @@ packages: /@docsearch/css/3.3.3: resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} - dev: false - optional: true + dev: true /@docsearch/js/3.3.3: resolution: {integrity: sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==} @@ -442,8 +423,7 @@ packages: - '@types/react' - react - react-dom - dev: false - optional: true + dev: true /@docsearch/react/3.3.3: resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} @@ -465,8 +445,7 @@ packages: algoliasearch: 4.15.0 transitivePeerDependencies: - '@algolia/client-search' - dev: false - optional: true + dev: true /@esbuild/android-arm/0.16.17: resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} @@ -474,6 +453,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm64/0.16.17: @@ -482,6 +462,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-x64/0.16.17: @@ -490,6 +471,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/darwin-arm64/0.16.17: @@ -498,6 +480,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-x64/0.16.17: @@ -506,6 +489,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-arm64/0.16.17: @@ -514,6 +498,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-x64/0.16.17: @@ -522,6 +507,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm/0.16.17: @@ -530,6 +516,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm64/0.16.17: @@ -538,6 +525,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ia32/0.16.17: @@ -546,6 +534,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64/0.16.17: @@ -554,6 +543,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-mips64el/0.16.17: @@ -562,6 +552,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ppc64/0.16.17: @@ -570,6 +561,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-riscv64/0.16.17: @@ -578,6 +570,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-s390x/0.16.17: @@ -586,6 +579,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-x64/0.16.17: @@ -594,6 +588,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/netbsd-x64/0.16.17: @@ -602,6 +597,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true optional: true /@esbuild/openbsd-x64/0.16.17: @@ -610,6 +606,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true optional: true /@esbuild/sunos-x64/0.16.17: @@ -618,6 +615,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true optional: true /@esbuild/win32-arm64/0.16.17: @@ -626,6 +624,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-ia32/0.16.17: @@ -634,6 +633,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-x64/0.16.17: @@ -642,6 +642,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@iarna/toml/2.2.5: @@ -694,8 +695,8 @@ packages: - supports-color dev: true - /@iconify/utils/2.1.4: - resolution: {integrity: sha512-7vzsYIvxv5Hng0MNEtSSnyMBD/+zqnORqmKiYsSgpMBGSz1r93URgBZHPYCZ1/gpoaVstYW4/SVLGCMJBNMCLQ==} + /@iconify/utils/2.1.5: + resolution: {integrity: sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q==} dependencies: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.2 @@ -705,8 +706,7 @@ packages: local-pkg: 0.4.3 transitivePeerDependencies: - supports-color - dev: false - optional: true + dev: true /@intlify/bundle-utils/5.0.1_vue-i18n@9.2.2: resolution: {integrity: sha512-qF6reZHDm+h7jUId2npzwNZYCvrUcr0bAYnJXgiShKBxTFpxOq7nrqy7UrRWj8M2w4GTCJczeQZmQGFxc/GdFA==} @@ -827,8 +827,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 - dev: false - optional: true + dev: true /@jridgewell/gen-mapping/0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} @@ -846,7 +845,6 @@ packages: /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: false /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} @@ -1047,8 +1045,7 @@ packages: /@polka/url/1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - dev: false - optional: true + dev: true /@rollup/pluginutils/5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} @@ -1182,6 +1179,7 @@ packages: /@types/node/18.14.6: resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==} + dev: true /@types/semver/7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} @@ -1190,17 +1188,16 @@ packages: /@types/web-bluetooth/0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - /@unocss/astro/0.50.4_vite@4.1.4: + /@unocss/astro/0.50.4: resolution: {integrity: sha512-NlfkyMM/xv0ozzP/ByqFAQmtzpDALWqWssXmtSQVV3CCZCxTQYzeenXgv92VELISxNUHJ46elKPHhWNpRBxCjg==} dependencies: '@unocss/core': 0.50.4 '@unocss/reset': 0.50.4 - '@unocss/vite': 0.50.4_vite@4.1.4 + '@unocss/vite': 0.50.4 transitivePeerDependencies: - rollup - vite - dev: false - optional: true + dev: true /@unocss/cli/0.50.4: resolution: {integrity: sha512-rAdMSfDio5dGbHCnhmvh+72D7JmIksDIpGYf0rjrMU+rxSC3/l4+Dr9Rr5qqNg1I51AcB9/UM6ena0TF2RyK8A==} @@ -1222,8 +1219,7 @@ packages: perfect-debounce: 0.1.3 transitivePeerDependencies: - rollup - dev: false - optional: true + dev: true /@unocss/config/0.50.4: resolution: {integrity: sha512-5Nvlvu3RHoZFqaxJwaN/pr9bWHg2PZ4omD90y/xe0CXWHjX9n3BJHcXqQQm0Iai6uF1IZDPOC5nj2UU2oKFxMg==} @@ -1231,21 +1227,18 @@ packages: dependencies: '@unocss/core': 0.50.4 unconfig: 0.3.7 - dev: false - optional: true + dev: true /@unocss/core/0.50.4: resolution: {integrity: sha512-k/8CdnO4w7f+QdvCpS3U5y6xApC4odiErkBKCCaGgBqOWkuTSL92TiBnffSEA2WepGm1+Mv4urIk20ocKYxbUQ==} - dev: false - optional: true + dev: true /@unocss/inspector/0.50.4: resolution: {integrity: sha512-3xYOhjNmM7qpdU4CSbL7acCb4YuTdeSoYCIMtWkbg9mHh/6GQZWV2eDTxwSxVE7WwDymw9Jg44Ewq3oboZWl1Q==} dependencies: gzip-size: 6.0.0 sirv: 2.0.2 - dev: false - optional: true + dev: true /@unocss/postcss/0.50.4: resolution: {integrity: sha512-Gri+EqIOs/yKk0YHel5XLHQCRD1BzKdQHF82zizJUyqaRStR2qvR8ECInYsirXL/eUEvx2zT8iQKCXkiApTuQw==} @@ -1257,48 +1250,42 @@ packages: fast-glob: 3.2.12 magic-string: 0.30.0 postcss: 8.4.21 - dev: false - optional: true + dev: true /@unocss/preset-attributify/0.50.4: resolution: {integrity: sha512-lSEyfpIGSzZB4DHFxrxhaa7rDF5PpM1EbReKogTVG7wsYTCmdCh8YirrgAlrcFCN1NgcbW1DaHdQs891A7glow==} dependencies: '@unocss/core': 0.50.4 - dev: false - optional: true + dev: true /@unocss/preset-icons/0.50.4: resolution: {integrity: sha512-0Bnito2u/t479oI9syXG8ynK1q2YUBt+dV6S6UugiTtys0KahjmuOTuk10GDgF50r4FvI38QfHBv+kF95qmwZg==} dependencies: - '@iconify/utils': 2.1.4 + '@iconify/utils': 2.1.5 '@unocss/core': 0.50.4 ofetch: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - optional: true + dev: true /@unocss/preset-mini/0.50.4: resolution: {integrity: sha512-M+4by82hlpZq/sE0axrepQ6sgTl65nXrbNIHhXmfIsqulH7nENELJIr/TFi7VcSJdPMGVwo9l9dHnFMhSQM5hg==} dependencies: '@unocss/core': 0.50.4 - dev: false - optional: true + dev: true /@unocss/preset-tagify/0.50.4: resolution: {integrity: sha512-SJchttBpnePOKBD9onjprqOcgyWFAaOzT3O6M/sWzHEszVcfsFi2uPcwZW5CLwbOMiV0tbozBQFkcQ1c1swilw==} dependencies: '@unocss/core': 0.50.4 - dev: false - optional: true + dev: true /@unocss/preset-typography/0.50.4: resolution: {integrity: sha512-iEVdwd591RKAzirvftAHcLWdTam3ea/M7ElC1geMlY8rsFNtiDjVLtY87v8piHVXXFBwy71YAGhJkPCrxE8yHw==} dependencies: '@unocss/core': 0.50.4 '@unocss/preset-mini': 0.50.4 - dev: false - optional: true + dev: true /@unocss/preset-uno/0.50.4: resolution: {integrity: sha512-otmCHbzJH1EISZ2Hvu35CEYaH3T6giwTreaP8CEo+BEjhGv2hgWmJko8GPDerUgO4FSP/YCwSGyBvcvSsRXV8A==} @@ -1306,65 +1293,56 @@ packages: '@unocss/core': 0.50.4 '@unocss/preset-mini': 0.50.4 '@unocss/preset-wind': 0.50.4 - dev: false - optional: true + dev: true /@unocss/preset-web-fonts/0.50.4: resolution: {integrity: sha512-4l8ILVzL6pAtMjwB5NRg1HowCS6dz4tLRVxH5W4uPyU5ADt3nhk5oQvzD9hDiB5sNJcXFVpMhI09UsRjUHQaTw==} dependencies: '@unocss/core': 0.50.4 ofetch: 1.0.1 - dev: false - optional: true + dev: true /@unocss/preset-wind/0.50.4: resolution: {integrity: sha512-kOdX5DYrspbVOkNY7cEH0jJrtmtxlEcsZb9ieToYb3l76oWicgZX5G46c74+UzMW2ru9dxdOBgJWgnWbH7AFDQ==} dependencies: '@unocss/core': 0.50.4 '@unocss/preset-mini': 0.50.4 - dev: false - optional: true + dev: true /@unocss/reset/0.50.4: resolution: {integrity: sha512-UHNDhClJMx3sG3oi68XkOcTeJ2hkI20O0eHowSoua10NClbnS9tiKxeo4ZLInouzvac3tb1TsjKEgTosHfkR/w==} - dev: false - optional: true + dev: true /@unocss/scope/0.50.4: resolution: {integrity: sha512-USJ5hr1dVE8JOb0PJYqpfAWxGLB69b+z30ZGzdmDgblmVheYsyzWZ3KMclz/2x8HtXRsB2VuJT5KqUPW7lT3gw==} - dev: false - optional: true + dev: true /@unocss/transformer-attributify-jsx/0.50.4: resolution: {integrity: sha512-DETbAiN/i393/OLuyEMBCXr2wDGyqEbkDMl/ZPN5RKO6m7312yt0KebnfIJnKaL0wGs90ohtV4ZHWMOeucX2jQ==} dependencies: '@unocss/core': 0.50.4 - dev: false - optional: true + dev: true /@unocss/transformer-compile-class/0.50.4: resolution: {integrity: sha512-pjXamTunv8CAX8r6heEw/UJdhkYNIbMEr6GGQfe33K6lL4fdU85NbvZD7c3pXbQJahKrGsgL7TSPvFoRw+5MZA==} dependencies: '@unocss/core': 0.50.4 - dev: false - optional: true + dev: true /@unocss/transformer-directives/0.50.4: resolution: {integrity: sha512-sk7AlL6wGnfKbCBDP4bKg008sJQuIbT408bkq98yA7h0/bIlLTqF6U0nzqUoIer5YxAAvIVm1Sm30CQV06s9rA==} dependencies: '@unocss/core': 0.50.4 css-tree: 2.3.1 - dev: false - optional: true + dev: true /@unocss/transformer-variant-group/0.50.4: resolution: {integrity: sha512-caSByOVhD36yeE0j11gkhsxGPX7wphexVZLlzJa/6w2RAHwab1SCBCtAQeTRdl/C53DI8q4gsNt73IFoqQ1eng==} dependencies: '@unocss/core': 0.50.4 - dev: false - optional: true + dev: true - /@unocss/vite/0.50.4_vite@4.1.4: + /@unocss/vite/0.50.4: resolution: {integrity: sha512-NW0B6hY3ho6G+PRFjNDvs0+nokCzHGbMtK4E9GIU5NyjJh0b4FfuWe9C9o1GxHGiFskGfYnirKPV40IHWOzOFw==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 @@ -1379,11 +1357,9 @@ packages: chokidar: 3.5.3 fast-glob: 3.2.12 magic-string: 0.30.0 - vite: 4.1.4_tbu6ibuzbmq2zng52hwcifltki transitivePeerDependencies: - rollup - dev: false - optional: true + dev: true /@vitejs/plugin-vue/4.0.0_vite@4.1.4+vue@3.2.47: resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} @@ -1394,6 +1370,7 @@ packages: dependencies: vite: 4.1.4_tbu6ibuzbmq2zng52hwcifltki vue: 3.2.47 + dev: true /@vitest/expect/0.29.2: resolution: {integrity: sha512-wjrdHB2ANTch3XKRhjWZN0UueFocH0cQbi2tR5Jtq60Nb3YOSmakjdAvUa2JFBu/o8Vjhj5cYbcMXkZxn1NzmA==} @@ -1722,8 +1699,7 @@ packages: '@algolia/requester-common': 4.15.0 '@algolia/requester-node-http': 4.15.0 '@algolia/transporter': 4.15.0 - dev: false - optional: true + dev: true /ansi-align/3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -1757,8 +1733,7 @@ packages: /ansi-sequence-parser/1.1.0: resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} - dev: false - optional: true + dev: true /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -1873,8 +1848,7 @@ packages: /body-scroll-lock/4.0.0-beta.0: resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} - dev: false - optional: true + dev: true /boxen/7.0.2: resolution: {integrity: sha512-1Z4UJabXUP1/R9rLpoU3O2lEMnG3pPLAs/ZD2lF3t2q7qD5lM8rqbtnvtvm4N0wEyNlE+9yZVTVAGmd1V5jabg==} @@ -1947,6 +1921,7 @@ packages: /cac/6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + dev: true /cacheable-lookup/7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} @@ -2120,6 +2095,7 @@ packages: /colorette/2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: true /combined-stream/1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -2170,8 +2146,7 @@ packages: /consola/2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - dev: false - optional: true + dev: true /convert-source-map/1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -2213,6 +2188,7 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true /crypto-random-string/4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} @@ -2227,8 +2203,7 @@ packages: dependencies: mdn-data: 2.0.30 source-map-js: 1.0.2 - dev: false - optional: true + dev: true /cssom/0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -2470,8 +2445,7 @@ packages: /defu/6.1.2: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} - dev: false - optional: true + dev: true /degenerator/3.0.2: resolution: {integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==} @@ -2499,8 +2473,7 @@ packages: /destr/1.2.2: resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} - dev: false - optional: true + dev: true /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} @@ -2535,8 +2508,7 @@ packages: /duplexer/0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: false - optional: true + dev: true /eastasianwidth/0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -2748,6 +2720,7 @@ packages: '@esbuild/win32-arm64': 0.16.17 '@esbuild/win32-ia32': 0.16.17 '@esbuild/win32-x64': 0.16.17 + dev: true /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -2863,6 +2836,7 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: true /execa/6.1.0: resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} @@ -2970,6 +2944,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -3036,6 +3011,7 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true /function.prototype.name/1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} @@ -3084,6 +3060,7 @@ packages: /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + dev: true /get-symbol-description/1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -3210,8 +3187,7 @@ packages: engines: {node: '>=10'} dependencies: duplexer: 0.1.2 - dev: false - optional: true + dev: true /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -3259,6 +3235,7 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 + dev: true /he/1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -3338,6 +3315,7 @@ packages: /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + dev: true /human-signals/3.0.1: resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} @@ -3380,6 +3358,7 @@ packages: /immutable/4.2.4: resolution: {integrity: sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==} + dev: true /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -3541,6 +3520,7 @@ packages: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 + dev: true /is-date-object/1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -3664,6 +3644,7 @@ packages: /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + dev: true /is-stream/3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -3759,6 +3740,7 @@ packages: /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} @@ -3802,8 +3784,7 @@ packages: /jiti/1.17.2: resolution: {integrity: sha512-Xf0nU8+8wuiQpLcqdb2HRyHqYwGk2Pd+F7kstyp20ZuqTyCmB9dqpX2NxaxFc1kovraa2bG6c1RL3W7XfapiZg==} hasBin: true - dev: false - optional: true + dev: true /js-beautify/1.14.0: resolution: {integrity: sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==} @@ -3920,6 +3901,7 @@ packages: /jsonc-parser/3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -3942,6 +3924,7 @@ packages: /kolorist/1.7.0: resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} + dev: true /latest-version/7.0.0: resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} @@ -4027,12 +4010,14 @@ packages: /local-pkg/0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} + dev: true /locate-path/6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true /lodash.debounce/4.0.8: resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} @@ -4104,6 +4089,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.14 + dev: true /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -4118,8 +4104,7 @@ packages: /mdn-data/2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: false - optional: true + dev: true /memorystream/0.3.1: resolution: {integrity: sha1-htcJCzDORV1j+64S3aUaR93K+bI=} @@ -4128,6 +4113,7 @@ packages: /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -4155,6 +4141,7 @@ packages: /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + dev: true /mimic-fn/4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -4220,8 +4207,7 @@ packages: /mrmime/1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} - dev: false - optional: true + dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -4262,8 +4248,7 @@ packages: /node-fetch-native/1.0.2: resolution: {integrity: sha512-KIkvH1jl6b3O7es/0ShyCgWLcfXxlBrLBbP3rOr23WArC66IMcU4DeZEeYEOwnopYhawLTn7/y+YtmASe8DFVQ==} - dev: false - optional: true + dev: true /node-fetch/2.6.9: resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} @@ -4341,6 +4326,7 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 + dev: true /npm-run-path/5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} @@ -4386,8 +4372,7 @@ packages: destr: 1.2.2 node-fetch-native: 1.0.2 ufo: 1.1.0 - dev: false - optional: true + dev: true /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -4400,6 +4385,7 @@ packages: engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 + dev: true /onetime/6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -4467,6 +4453,7 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true /p-limit/4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -4480,6 +4467,7 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true /p-map/4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} @@ -4575,6 +4563,7 @@ packages: /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: true /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} @@ -4589,6 +4578,7 @@ packages: /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + dev: true /path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} @@ -4597,6 +4587,7 @@ packages: /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true /path-type/3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} @@ -4619,8 +4610,7 @@ packages: /perfect-debounce/0.1.3: resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} - dev: false - optional: true + dev: true /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -4681,8 +4671,7 @@ packages: /preact/10.13.0: resolution: {integrity: sha512-ERdIdUpR6doqdaSIh80hvzebHB7O6JxycOhyzAeLEchqOq/4yueslQbfnPwXaNhAYacFTyCclhwkEbOumT0tHw==} - dev: false - optional: true + dev: true /prelude-ls/1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} @@ -4933,6 +4922,7 @@ packages: is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /responselike/3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} @@ -4983,6 +4973,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.2 + dev: true /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -5024,6 +5015,7 @@ packages: chokidar: 3.5.3 immutable: 4.2.4 source-map-js: 1.0.2 + dev: true /saxes/6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -5075,6 +5067,7 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true /shebang-regex/1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} @@ -5084,6 +5077,7 @@ packages: /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + dev: true /shell-quote/1.7.3: resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} @@ -5106,8 +5100,7 @@ packages: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - dev: false - optional: true + dev: true /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -5127,6 +5120,7 @@ packages: /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true /sirv/2.0.2: resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} @@ -5135,8 +5129,7 @@ packages: '@polka/url': 1.0.0-next.21 mrmime: 1.0.1 totalist: 3.0.0 - dev: false - optional: true + dev: true /slash/4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} @@ -5331,6 +5324,7 @@ packages: /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + dev: true /strip-final-newline/3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -5364,6 +5358,7 @@ packages: /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + dev: true /symbol-tree/3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -5421,8 +5416,7 @@ packages: /totalist/3.0.0: resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} engines: {node: '>=6'} - dev: false - optional: true + dev: true /tough-cookie/4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} @@ -5537,6 +5531,7 @@ packages: /ufo/1.1.0: resolution: {integrity: sha512-LQc2s/ZDMaCN3QLpa+uzHUOQ7SdV0qgv3VBXOolQGXTaaZpIur6PwUclF5nN2hNkiTRcUugXd1zFOW3FLJ135Q==} + dev: true /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -5553,8 +5548,7 @@ packages: '@antfu/utils': 0.5.2 defu: 6.1.2 jiti: 1.17.2 - dev: false - optional: true + dev: true /unimport/3.0.2: resolution: {integrity: sha512-OQ0hShpcerS1PSsISsyn/NV2dGe5xfdUn4p5nwOodq0iqq5xxYQrTidHqlFGjxIliPDtDJp80OeySzyPTjYHmA==} @@ -5595,17 +5589,16 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /unocss/0.50.4_vite@4.1.4: + /unocss/0.50.4: resolution: {integrity: sha512-9offjUEwVlAkR//0sidTyvKkSArRGkDdgSFeW4P4005GWnjmXnbx4amuAeS3Au4o8WoshZCCOi5EYrpO4aLdfg==} engines: {node: '>=14'} - requiresBuild: true peerDependencies: '@unocss/webpack': 0.50.4 peerDependenciesMeta: '@unocss/webpack': optional: true dependencies: - '@unocss/astro': 0.50.4_vite@4.1.4 + '@unocss/astro': 0.50.4 '@unocss/cli': 0.50.4 '@unocss/core': 0.50.4 '@unocss/postcss': 0.50.4 @@ -5622,13 +5615,12 @@ packages: '@unocss/transformer-compile-class': 0.50.4 '@unocss/transformer-directives': 0.50.4 '@unocss/transformer-variant-group': 0.50.4 - '@unocss/vite': 0.50.4_vite@4.1.4 + '@unocss/vite': 0.50.4 transitivePeerDependencies: - rollup - supports-color - vite - dev: false - optional: true + dev: true /unpipe/1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} @@ -5885,6 +5877,7 @@ packages: sass: 1.58.3 optionalDependencies: fsevents: 2.3.2 + dev: true /vitepress/1.0.0-alpha.51_tbu6ibuzbmq2zng52hwcifltki: resolution: {integrity: sha512-euZpjXeIaNUadLAQtd7NYbKhJJoDyZ6z8YK77qlM2c6NvUB5wmLPU6moP4rfcKUqpBDrsrxjJS6fdPk6azS5qQ==} @@ -5912,8 +5905,7 @@ packages: - stylus - sugarss - terser - dev: false - optional: true + dev: true /vitest/0.29.2_jsdom@21.1.0+sass@1.58.3: resolution: {integrity: sha512-ydK9IGbAvoY8wkg29DQ4ivcVviCaUi3ivuPKfZEVddMTenFHUfB8EEDXQV8+RasEk1ACFLgMUqAaDuQ/Nk+mQA==} @@ -5982,13 +5974,11 @@ packages: /vscode-oniguruma/1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: false - optional: true + dev: true /vscode-textmate/8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: false - optional: true + dev: true /vue-demi/0.13.11_vue@3.2.47: resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} @@ -6169,6 +6159,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /why-is-node-running/2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} @@ -6343,6 +6334,7 @@ packages: /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + dev: true /yocto-queue/1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}