├── docs ├── .gitignore ├── vercel.json ├── index.md ├── package.json ├── .vitepress │ ├── config.ts │ └── components │ │ └── Download.vue ├── guide.md └── pnpm-lock.yaml ├── src-tauri ├── build.rs ├── icons │ └── icon.ico ├── .gitignore ├── src │ ├── main.rs │ └── vrchat.rs ├── Cargo.toml └── tauri.conf.json ├── images ├── 1.png └── 2.png ├── public └── favicon.ico ├── .vscode └── extensions.json ├── src ├── auto-imports.d.ts ├── main.ts ├── env.d.ts ├── components.d.ts ├── locales │ ├── zh-CN.json │ ├── ko-KR.json │ ├── ja-JP.json │ └── en-US.json ├── i18n.ts ├── components │ ├── DropHover.vue │ └── Header.vue └── App.vue ├── tsconfig.node.json ├── .gitignore ├── index.html ├── scripts └── version.ts ├── tsconfig.json ├── .github └── workflows │ ├── docs.yml │ └── release.yml ├── vite.config.ts ├── package.json ├── README.md ├── LICENSE └── pnpm-lock.yaml /docs/.gitignore: -------------------------------------------------------------------------------- 1 | .temp 2 | .cache 3 | -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gizmo-ds/vrchat-cache-mover/HEAD/images/1.png -------------------------------------------------------------------------------- /images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gizmo-ds/vrchat-cache-mover/HEAD/images/2.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gizmo-ds/vrchat-cache-mover/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gizmo-ds/vrchat-cache-mover/HEAD/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | WixTools 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "lokalise.i18n-ally", 4 | "rust-lang.rust-analyzer", 5 | "Vue.volar" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /docs/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildCommand": "pnpm vitepress build --base=/", 3 | "cleanUrls": true, 4 | "github": { 5 | "silent": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/auto-imports.d.ts: -------------------------------------------------------------------------------- 1 | // Generated by 'unplugin-auto-import' 2 | export {} 3 | declare global { 4 | const ElNotification: typeof import('element-plus/es')['ElNotification'] 5 | } 6 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "moduleResolution": "node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import App from "./App.vue"; 3 | import { i18n } from "./i18n"; 4 | import 'element-plus/theme-chalk/dark/css-vars.css' 5 | 6 | const app = createApp(App); 7 | app.use(i18n); 8 | app.mount("#app"); 9 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | declare module '*.vue' { 5 | import type { DefineComponent } from 'vue' 6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 7 | const component: DefineComponent<{}, {}, any> 8 | export default component 9 | } 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home 3 | 4 | titleTemplate: 将VRChat缓存移动到指定目录的小工具 5 | 6 | hero: 7 | name: VRChat缓存转移工具 8 | tagline: 将VRChat缓存移动到指定目录的小工具, 拥有相对现代并且易用的UI. 9 | actions: 10 | - theme: brand 11 | text: 快速上手 12 | link: /guide 13 | - theme: alt 14 | text: View on GitHub 15 | link: https://github.com/gizmo-ds/vrchat-cache-mover 16 | --- 17 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | vrchat-cache-mover 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /scripts/version.ts: -------------------------------------------------------------------------------- 1 | import { execSync } from "child_process"; 2 | import { writeFileSync, readFileSync } from "fs"; 3 | 4 | const TC = "src-tauri/tauri.conf.json"; 5 | 6 | const r = new TextDecoder().decode(execSync("git describe --abbrev=0 --tags")); 7 | const version = r.trim().replace("v", ""); 8 | 9 | if (version && version !== "") { 10 | const conf = JSON.parse(new TextDecoder().decode(readFileSync(TC))); 11 | conf.package.version = version; 12 | writeFileSync(TC, JSON.stringify(conf, null, 2)); 13 | } 14 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docs", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "docs:dev": "vitepress dev", 8 | "docs:build": "vitepress build", 9 | "docs:serve": "vitepress serve" 10 | }, 11 | "keywords": [], 12 | "author": "", 13 | "license": "MIT", 14 | "devDependencies": { 15 | "vitepress": "1.0.0-alpha.21", 16 | "vue": "^3.2.41" 17 | }, 18 | "pnpm": { 19 | "peerDependencyRules": { 20 | "ignoreMissing": [ 21 | "@algolia/client-search" 22 | ] 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "useDefineForClassFields": true, 5 | "module": "esnext", 6 | "moduleResolution": "node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "skipLibCheck": true, 14 | "lib": ["esnext", "dom"], 15 | "types": ["element-plus/global"] 16 | }, 17 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 18 | "references": [{ "path": "./tsconfig.node.json" }] 19 | } 20 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Deploy doc 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | deploy-doc: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | - name: Install pnpm 14 | uses: pnpm/action-setup@v2.0.1 15 | with: 16 | version: "7.13.4" 17 | - uses: actions/setup-node@v3 18 | with: 19 | node-version: 16 20 | cache: "pnpm" 21 | 22 | - name: Build 23 | working-directory: ./docs 24 | run: | 25 | pnpm install 26 | pnpm docs:build 27 | 28 | - name: Deploy 29 | uses: peaceiris/actions-gh-pages@v3 30 | with: 31 | github_token: ${{ secrets.GITHUB_TOKEN }} 32 | publish_dir: docs/.vitepress/dist 33 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import path from "path"; 2 | import { defineConfig } from "vite"; 3 | import vue from "@vitejs/plugin-vue"; 4 | import AutoImport from "unplugin-auto-import/vite"; 5 | import Components from "unplugin-vue-components/vite"; 6 | import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; 7 | 8 | // https://vitejs.dev/config/ 9 | export default defineConfig({ 10 | plugins: [ 11 | vue({ 12 | reactivityTransform: true, 13 | }), 14 | 15 | AutoImport({ 16 | resolvers: [ 17 | ElementPlusResolver(), 18 | ], 19 | dts: path.resolve("src/auto-imports.d.ts"), 20 | }), 21 | 22 | Components({ 23 | resolvers: [ 24 | ElementPlusResolver(), 25 | ], 26 | dts: path.resolve("src/components.d.ts"), 27 | }), 28 | ], 29 | }); 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vrchat-cache-mover", 3 | "private": true, 4 | "version": "0.0.0", 5 | "license": "AGPL-3.0", 6 | "homepage": "https://github.com/gizmo-ds/vrchat-cache-mover", 7 | "scripts": { 8 | "dev": "vite", 9 | "build": "vue-tsc --noEmit && vite build", 10 | "preview": "vite preview", 11 | "tauri": "tauri" 12 | }, 13 | "dependencies": { 14 | "@element-plus/icons-vue": "^2.0.6", 15 | "@tauri-apps/api": "1.0.0-rc.6", 16 | "@vueuse/components": "^8.6.0", 17 | "@vueuse/core": "^8.6.0", 18 | "element-plus": "^2.2.2", 19 | "vue": "^3.2.25", 20 | "vue-i18n": "9" 21 | }, 22 | "devDependencies": { 23 | "@tauri-apps/cli": "1.0.0-rc.13", 24 | "@types/node": "^17.0.40", 25 | "@vicons/tabler": "^0.12.0", 26 | "@vitejs/plugin-vue": "^2.3.3", 27 | "esno": "^0.16.3", 28 | "sass": "^1.52.1", 29 | "typescript": "^4.7.3", 30 | "unplugin-auto-import": "^0.8.6", 31 | "unplugin-vue-components": "^0.19.6", 32 | "vite": "^2.9.9", 33 | "vue-tsc": "^1.0.3" 34 | } 35 | } -------------------------------------------------------------------------------- /src/components.d.ts: -------------------------------------------------------------------------------- 1 | // generated by unplugin-vue-components 2 | // We suggest you to commit this file into source control 3 | // Read more: https://github.com/vuejs/vue-next/pull/3399 4 | import '@vue/runtime-core' 5 | 6 | declare module '@vue/runtime-core' { 7 | export interface GlobalComponents { 8 | DropHover: typeof import('./components/DropHover.vue')['default'] 9 | ElButton: typeof import('element-plus/es')['ElButton'] 10 | ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] 11 | ElIcon: typeof import('element-plus/es')['ElIcon'] 12 | ElInput: typeof import('element-plus/es')['ElInput'] 13 | ElLink: typeof import('element-plus/es')['ElLink'] 14 | ElOption: typeof import('element-plus/es')['ElOption'] 15 | ElSelect: typeof import('element-plus/es')['ElSelect'] 16 | ElSpace: typeof import('element-plus/es')['ElSpace'] 17 | ElSwitch: typeof import('element-plus/es')['ElSwitch'] 18 | ElTag: typeof import('element-plus/es')['ElTag'] 19 | Header: typeof import('./components/Header.vue')['default'] 20 | } 21 | } 22 | 23 | export {} 24 | -------------------------------------------------------------------------------- /src/locales/zh-CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "advanced": "高级。", 3 | "advanced.cache-expiry-delay": "缓存有效期", 4 | "advanced.cache-expiry-delay.placeholder": "默认: 30", 5 | "advanced.cache-expiry-delay.suffix": "天", 6 | "advanced.cache-size": "缓存大小", 7 | "advanced.cache-size.placeholder": "默认: 20", 8 | "advanced.cache-size.suffix": "GB", 9 | "apply-button": "应用", 10 | "cache-directory": "缓存目录", 11 | "cache-placeholder": "默认位置 (%AppData%\\..\\LocalLow\\VRChat\\VRChat)", 12 | "cache-total": "缓存: {0}", 13 | "cache-total.tooltip": "点击刷新", 14 | "copy-config-content-button": "复制配置内容", 15 | "delete-cache-button": "删除缓存", 16 | "messages.cache-directory-notfound": "未找到原缓存目录", 17 | "messages.cache-moving": "缓存移动中, 请稍后", 18 | "messages.success": "操作成功", 19 | "messages.target-directory-not-directory": "目标目录不是目录", 20 | "messages.target-directory-not-exist": "目标目录不存在", 21 | "messages.vrchat-path-notfound": "未找到VRChat配置目录", 22 | "move-cache-button": "移动缓存文件", 23 | "name": "VRChat缓存转移工具", 24 | "open-config-path-button": "打开配置目录", 25 | "select-directory-button": "选择目录", 26 | "version": "版本: {0}" 27 | } 28 | -------------------------------------------------------------------------------- /src/locales/ko-KR.json: -------------------------------------------------------------------------------- 1 | { 2 | "advanced": "고급의", 3 | "advanced.cache-expiry-delay": "캐시 만료 시간", 4 | "advanced.cache-expiry-delay.placeholder": "기본값: 30", 5 | "advanced.cache-expiry-delay.suffix": "낮", 6 | "advanced.cache-size": "캐시 크기", 7 | "advanced.cache-size.placeholder": "기본값: 20", 8 | "advanced.cache-size.suffix": "GB", 9 | "apply-button": "적용하다", 10 | "cache-directory": "캐시 디렉토리", 11 | "cache-placeholder": "기본 위치(%AppData%\\..\\LocalLow\\VRChat\\VRChat)", 12 | "cache-total": "캐시: {0}", 13 | "cache-total.tooltip": "새로고침하려면 클릭", 14 | "copy-config-content-button": "구성 콘텐츠 복사", 15 | "delete-cache-button": "캐시 삭제", 16 | "messages.cache-directory-notfound": "캐시 디렉토리를 찾을 수 없습니다", 17 | "messages.cache-moving": "캐시가 이동 중입니다. 잠시만 기다려 주십시오...", 18 | "messages.success": "성공", 19 | "messages.target-directory-not-directory": "대상 디렉토리가 디렉토리가 아닙니다.", 20 | "messages.target-directory-not-exist": "대상 디렉토리가 존재하지 않습니다", 21 | "messages.vrchat-path-notfound": "vrchat 경로를 찾을 수 없습니다", 22 | "move-cache-button": "캐시 이동", 23 | "name": "VRChat Cache Mover", 24 | "open-config-path-button": "구성 경로 열기", 25 | "select-directory-button": "고르다", 26 | "version": "버전: {0}" 27 | } 28 | -------------------------------------------------------------------------------- /src-tauri/src/main.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr( 2 | all(not(debug_assertions), target_os = "windows"), 3 | windows_subsystem = "windows" 4 | )] 5 | 6 | use tauri::Manager; 7 | 8 | mod vrchat; 9 | 10 | const WEBVIEW2_DOWNLOAD_URL: &str = 11 | "https://developer.microsoft.com/microsoft-edge/webview2#download-section"; 12 | 13 | fn main() { 14 | if let Err(err) = tauri::Builder::default() 15 | .invoke_handler(tauri::generate_handler![ 16 | vrchat::vrchat_path, 17 | vrchat::vrchat_config, 18 | vrchat::save_config, 19 | vrchat::total_cache, 20 | vrchat::move_cache, 21 | vrchat::remove_cache, 22 | vrchat::open_vrchat_path, 23 | vrchat::check_new_path, 24 | vrchat::check_vrchat_path, 25 | ui_created, 26 | ]) 27 | .run(tauri::generate_context!()) 28 | { 29 | if err.to_string().contains("WebView2") { 30 | std::process::Command::new("cmd.exe") 31 | .args(&["/C", "start", WEBVIEW2_DOWNLOAD_URL]) 32 | .spawn() 33 | .unwrap(); 34 | } 35 | std::process::exit(1); 36 | } 37 | } 38 | 39 | #[tauri::command] 40 | async fn ui_created(window: tauri::Window) { 41 | window.get_window("main").unwrap().show().unwrap(); 42 | } 43 | -------------------------------------------------------------------------------- /src/locales/ja-JP.json: -------------------------------------------------------------------------------- 1 | { 2 | "advanced": "高度", 3 | "advanced.cache-expiry-delay": "キャッシュの有効期限", 4 | "advanced.cache-expiry-delay.placeholder": "デフォルト: 30", 5 | "advanced.cache-expiry-delay.suffix": "日", 6 | "advanced.cache-size": "キャッシュサイズ", 7 | "advanced.cache-size.placeholder": "デフォルト: 20", 8 | "advanced.cache-size.suffix": "GB", 9 | "apply-button": "申し込み", 10 | "cache-directory": "キャッシュディレクトリ", 11 | "cache-placeholder": "デフォルトの場所(%AppData%\\ .. \\ LocalLow \\ VRChat \\ VRChat)", 12 | "cache-total": "キャッシュ:{0}", 13 | "cache-total.tooltip": "クリックして更新", 14 | "copy-config-content-button": "構成コンテンツのコピー", 15 | "delete-cache-button": "キャッシュを削除", 16 | "messages.cache-directory-notfound": "キャッシュディレクトリが見つかりませんでした", 17 | "messages.cache-moving": "キャッシュを移動しています。お待ちください...", 18 | "messages.success": "成功", 19 | "messages.target-directory-not-directory": "ターゲットディレクトリはディレクトリではありません", 20 | "messages.target-directory-not-exist": "ターゲットディレクトリが存在しません", 21 | "messages.vrchat-path-notfound": "vrchatパスが見つかりませんでした", 22 | "move-cache-button": "キャッシュの移動", 23 | "name": "VRChat Cache Mover", 24 | "open-config-path-button": "構成パスを開く", 25 | "select-directory-button": "選択する", 26 | "version": "バージョン:{0}" 27 | } 28 | -------------------------------------------------------------------------------- /docs/.vitepress/config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitepress"; 2 | 3 | export default defineConfig({ 4 | lang: "zh-CN", 5 | title: "VRChat Cache Mover", 6 | description: "将VRChat缓存移动到指定目录的小工具, 拥有相对现代并且易用的UI.", 7 | lastUpdated: true, 8 | base: "/vrchat-cache-mover/", 9 | cleanUrls: "with-subfolders", 10 | themeConfig: { 11 | footer: { 12 | message: "Released under the AGPL-3.0 License.", 13 | copyright: "Copyright (c) 2022 Gizmo", 14 | }, 15 | nav: [ 16 | { 17 | text: "指南", 18 | link: "/guide", 19 | }, 20 | { 21 | text: "GitHub", 22 | link: "https://github.com/gizmo-ds/vrchat-cache-mover", 23 | }, 24 | ], 25 | sidebar: { 26 | "/guide": [ 27 | { 28 | items: [ 29 | { text: "介绍", link: "/guide#vrchat-缓存转移工具" }, 30 | { text: "安装及使用", link: "/guide#安装及使用" }, 31 | { text: "网页版本", link: "/guide#网页版本" }, 32 | { text: "常见问题", link: "/guide#常见问题" }, 33 | ], 34 | }, 35 | ], 36 | }, 37 | socialLinks: [ 38 | { 39 | icon: "github", 40 | link: "https://github.com/gizmo-ds/vrchat-cache-mover", 41 | }, 42 | ], 43 | }, 44 | }); 45 | -------------------------------------------------------------------------------- /src-tauri/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "app" 3 | version = "0.1.0" 4 | description = "A Tauri App" 5 | authors = ["Gizmo"] 6 | license = "AGPL-3.0" 7 | repository = "" 8 | default-run = "app" 9 | edition = "2021" 10 | rust-version = "1.57" 11 | 12 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 13 | 14 | [build-dependencies] 15 | tauri-build = { version = "1.0.0-rc.12", features = [] } 16 | 17 | [dependencies] 18 | serde_json = "1.0" 19 | serde = { version = "1.0", features = ["derive"] } 20 | tauri = { version = "1.0.0-rc.14", features = ["clipboard-write-text", "dialog-open", "shell-open"] } 21 | path-absolutize = "3.0.12" 22 | bytesize = { version = "1.1.0", features = ["serde"] } 23 | fs_extra = "1.2.0" 24 | windirs = "1.0.1" 25 | 26 | [features] 27 | # by default Tauri runs in production mode 28 | # when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL 29 | default = ["custom-protocol"] 30 | # this feature is used used for production builds where `devPath` points to the filesystem 31 | # DO NOT remove this 32 | custom-protocol = ["tauri/custom-protocol"] 33 | 34 | [profile.release] 35 | lto = true 36 | opt-level = 'z' 37 | strip = true 38 | codegen-units = 1 39 | panic = "abort" 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VRChat Cache Mover 2 | 3 | ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/gizmo-ds/vrchat-cache-mover/release.yml) 4 | [![Release](https://img.shields.io/github/v/release/gizmo-ds/vrchat-cache-mover.svg?include_prereleases&style=flat-square)](https://github.com/gizmo-ds/vrchat-cache-mover/releases/latest) 5 | [![License](https://img.shields.io/github/license/gizmo-ds/vrchat-cache-mover?style=flat-square)](./LICENSE) 6 | [![爱发电](https://img.shields.io/badge/%E7%88%B1%E5%8F%91%E7%94%B5-Gizmo-%23946ce6)](https://afdian.com/a/gizmo) 7 | 8 | 将 VRChat 缓存移动到指定目录的小工具, 拥有相对现代并且易用的 GUI. 9 | 10 | 拥有的功能: 11 | 12 | 1. 修改缓存目录位置 13 | 2. 将系统盘的缓存转移到新的位置 14 | 3. 删除系统盘的缓存 15 | 16 | ## Installation 17 | 18 | > 大部分 Windows 操作系统没有内置 WebView2 Runtime, 所以需要 [安装 WebView2 Runtime](https://developer.microsoft.com/microsoft-edge/webview2#download-section). 19 | 20 | 你可以通过 [Release](https://github.com/gizmo-ds/vrchat-cache-mover/releases/latest) 下载预编译的文件, 解压缩并运行. 21 | 22 | ## Related 23 | 24 | - [VRChatCacheMover Web](https://github.com/gizmo-ds/vrchat-cache-mover-web) 25 | - [VRChatConfigurationEditor](https://github.com/project-vrcat/VRChatConfigurationEditor) 26 | 27 | ## Sponsors 28 | 29 | [![Sponsors](https://afdian-connect.deno.dev/sponsor.svg)](https://afdian.com/a/gizmo) 30 | -------------------------------------------------------------------------------- /src/locales/en-US.json: -------------------------------------------------------------------------------- 1 | { 2 | "advanced": "Advanced", 3 | "advanced.cache-expiry-delay": "Cache Expiry Time", 4 | "advanced.cache-expiry-delay.suffix": "Day", 5 | "advanced.cache-expiry-delay.placeholder": "Default: 30", 6 | "advanced.cache-size": "Cache Size", 7 | "advanced.cache-size.suffix": "GB", 8 | "advanced.cache-size.placeholder": "Default: 20", 9 | "apply-button": "Apply", 10 | "cache-directory": "Cache Directory", 11 | "cache-placeholder": "Default Location (%AppData%\\..\\LocalLow\\VRChat\\VRChat)", 12 | "cache-total": "Cache: {0}", 13 | "cache-total.tooltip": "Click to refresh", 14 | "copy-config-content-button": "Copy Config Content", 15 | "delete-cache-button": "Delete Cache", 16 | "messages.cache-directory-notfound": "Could not find cache directory", 17 | "messages.cache-moving": "Cache is moving, please wait...", 18 | "messages.success": "Success", 19 | "messages.target-directory-not-directory": "Target directory is not a directory", 20 | "messages.target-directory-not-exist": "Target directory does not exist", 21 | "messages.vrchat-path-notfound": "Could not find vrchat path", 22 | "move-cache-button": "Move Cache", 23 | "name": "VRChat Cache Mover", 24 | "open-config-path-button": "Open Config Path", 25 | "select-directory-button": "Select", 26 | "version": "Version: {0}" 27 | } 28 | -------------------------------------------------------------------------------- /src/i18n.ts: -------------------------------------------------------------------------------- 1 | import { createI18n, Locale } from "vue-i18n"; 2 | import { usePreferredLanguages } from "@vueuse/core"; 3 | import enUS from "./locales/en-US.json"; 4 | import zhCN from "./locales/zh-CN.json"; 5 | import jaJP from "./locales/ja-JP.json"; 6 | import koKR from "./locales/ko-KR.json"; 7 | 8 | export const FALLBACK_LOCALE = "en-US"; 9 | export const SUPPORT_LOCALES = [ 10 | { locale: "zh-CN", name: "简体中文" }, 11 | { locale: "en-US", name: "English" }, 12 | { locale: "ja-JP", name: "日本語 (機械翻訳)" }, 13 | { locale: "ko-KR", name: "한국어 (기계 번역)" }, 14 | ]; 15 | 16 | export function browserLocale() { 17 | const languages = usePreferredLanguages(); 18 | const browserLocale = languages.value.find((lang) => 19 | SUPPORT_LOCALES.find((v) => v.locale === lang) ? lang : undefined 20 | ); 21 | return localStorage.getItem("locale") ?? browserLocale ?? FALLBACK_LOCALE; 22 | } 23 | 24 | export async function setI18nLanguage(locale: Locale) { 25 | i18n.global.locale = locale; 26 | localStorage.setItem("locale", locale); 27 | document.querySelector("html")!.setAttribute("lang", locale); 28 | } 29 | 30 | export const i18n = createI18n({ 31 | locale: browserLocale(), 32 | fallbackLocale: FALLBACK_LOCALE, 33 | messages: { 34 | "en-US": enUS, 35 | "zh-CN": zhCN, 36 | "ja-JP": jaJP, 37 | "ko-KR": koKR, 38 | }, 39 | }); 40 | -------------------------------------------------------------------------------- /src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "package": { 3 | "productName": "vrchat-cache-mover", 4 | "version": "1.2.4" 5 | }, 6 | "build": { 7 | "distDir": "../dist", 8 | "devPath": "http://localhost:3000", 9 | "beforeDevCommand": "pnpm dev", 10 | "beforeBuildCommand": "pnpm build" 11 | }, 12 | "tauri": { 13 | "bundle": { 14 | "active": false, 15 | "targets": "all", 16 | "identifier": "moe.lumina.cache-mover", 17 | "icon": ["icons/icon.ico"], 18 | "resources": [], 19 | "externalBin": [], 20 | "copyright": "", 21 | "category": "Utility", 22 | "shortDescription": "", 23 | "longDescription": "", 24 | "windows": { 25 | "certificateThumbprint": null, 26 | "digestAlgorithm": "sha256", 27 | "timestampUrl": "", 28 | "wix": {} 29 | } 30 | }, 31 | "updater": { 32 | "active": false 33 | }, 34 | "allowlist": { 35 | "dialog": { 36 | "open": true 37 | }, 38 | "clipboard": { 39 | "writeText": true 40 | }, 41 | "shell": { 42 | "open": true 43 | } 44 | }, 45 | "windows": [ 46 | { 47 | "title": "VRChat Cache Mover", 48 | "width": 880, 49 | "height": 300, 50 | "resizable": true, 51 | "fullscreen": false, 52 | "visible": false, 53 | "center": true 54 | } 55 | ], 56 | "security": { 57 | "csp": null 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/components/DropHover.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 26 | 27 | 62 | -------------------------------------------------------------------------------- /docs/.vitepress/components/Download.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 37 | 38 | -------------------------------------------------------------------------------- /src/components/Header.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 40 | 41 | 93 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - "*" 7 | 8 | jobs: 9 | release: 10 | name: Release 11 | runs-on: ubuntu-latest 12 | if: startsWith(github.ref, 'refs/tags/') 13 | needs: build-app 14 | steps: 15 | - name: Setup whatchanged 16 | uses: release-lab/setup-whatchanged@v1 17 | with: 18 | version: v0.5.7 19 | 20 | - name: Changelog generate 21 | run: | 22 | whatchanged --project=https://github.com/gizmo-ds/vrchat-cache-mover.git --branch=main --output=CHANGELOG.md 23 | 24 | - name: Download artifacts 25 | uses: actions/download-artifact@v3 26 | with: 27 | name: app 28 | 29 | - name: Archive application 30 | run: zip -r ./vrchat-cache-mover.zip . 31 | 32 | - name: Generate checksums 33 | run: sha256sum vrchat-cache-mover.zip > checksums.txt 34 | 35 | - name: Create GitHub Release 36 | uses: softprops/action-gh-release@v1 37 | with: 38 | body_path: CHANGELOG.md 39 | files: | 40 | checksums.txt 41 | vrchat-cache-mover.zip 42 | 43 | build-app: 44 | name: Build application 45 | runs-on: windows-latest 46 | steps: 47 | - uses: actions/checkout@v2 48 | 49 | - name: Install pnpm 50 | uses: pnpm/action-setup@v2.0.1 51 | with: 52 | version: "7.1.8" 53 | 54 | - name: Setup Node 55 | uses: actions/setup-node@v2 56 | with: 57 | node-version: 16 58 | cache: "pnpm" 59 | 60 | - name: Setup Rust stable 61 | uses: actions-rs/toolchain@v1 62 | with: 63 | profile: minimal 64 | toolchain: stable 65 | override: true 66 | 67 | - name: Install dependencies 68 | run: pnpm i 69 | 70 | - name: Build application 71 | run: | 72 | pnpm esno scripts/version.ts 73 | pnpm tauri build 74 | mv src-tauri/target/release/*.exe . 75 | 76 | - name: Upload artifact 77 | uses: actions/upload-artifact@v3 78 | with: 79 | name: "app" 80 | path: | 81 | *.exe 82 | LICENSE 83 | -------------------------------------------------------------------------------- /docs/guide.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | # VRChat 缓存转移工具 12 | 13 | 将 VRChat 缓存移动到指定目录的小工具. 14 | 15 | 拥有相对现代并且易用的 UI. 16 | 17 | 要了解如何安装和使用, 参见[安装及使用](#安装及使用) 18 | 19 | ![](../images/1.png) 20 | 21 | ![](../images/2.png) 22 | 23 | ### 简单 24 | 25 | 理论上只需要点击一次按钮即可完成修改, 不需要你打开那可怕的命令行. 26 | 27 | 操作完成你就可以把工具删除了. 28 | 29 | 顺便一提, 工具支持了四门语言和暗色模式. 30 | 31 | ### 安全 32 | 33 | 完全开源, 发布的版本都是使用[Action](https://github.com/gizmo-ds/vrchat-cache-mover/blob/main/.github/workflows/release.yml)编译的. 34 | 35 | 通过修改[VRChat 配置文件](https://docs.vrchat.com/docs/configuration-file#cache-settings)实现功能, 不会出现`NTFS符号链接`的一堆错误. 36 | 37 | ### 交流 38 | 39 | - 企鹅群 324617456 40 | 41 | ### 许可 42 | 43 | VRChat Cache Mover 使用 [AGPL-3.0 license](https://opensource.org/licenses/AGPL-3.0) 许可证书. 44 | 45 | ## 安装及使用 46 | 47 | ### 依赖的运行环境 48 | 49 | VRChat Cache Mover 依赖 WebView2 呈现内容, 因此你需要安装 WebView2 才能使用本工具. 50 | 51 | 最简单的安装方法是到[Microsoft 官网](https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/#download-section)下载并安装 `常青版引导程序`. 52 | 53 | ::: info 54 | WebView2 已经预装在 Windows 11 中. 55 | ::: 56 | 57 | ### 下载 VRChat Cache Mover 58 | 59 | 你可以点击下面的按钮下载到最新版本的工具, 也可以通过[GitHub Releases](https://github.com/gizmo-ds/vrchat-cache-mover/releases/latest)下载预编译的文件. 60 | 61 | 62 | 63 | 64 | 65 | 你将会得到一个压缩文件, 将它解压, 并运行其中的 `vrchat-cache-mover.exe`. 66 | 67 | ### 修改缓存目录 68 | 69 | 如果一切正常, 你应该正常打开工具了. 70 | 在工具的右上角此时能看到工具的版本号和 VRChat 的缓存吃掉了你多少的磁盘空间. 71 | 72 | 1. 点击 `选择目录` 按钮, 选择你需要将缓存转移到的目标位置.
顺便一提, 你也可以直接把文件夹拖到窗口里. 73 | 2. 点击 `应用` 按钮. 74 | 3. 完成 75 | 76 | > 如果你想的话, 你也可以复制配置内容, 将内容粘贴到配置目录下的 `config.json` 文件 😂 77 | 78 | ### 转移或删除缓存 79 | 80 | ::: danger 81 | 如果你曾经使用过`mklink`命令或其他的工具, 请跳过此步骤. 82 | 83 | 也建议您点击工具的 `打开配置目录` 按钮并删除 `Cache-WindowsPlayer` 文件夹. 84 | ::: 85 | 86 | 确保你已经选择了`缓存目录`, 点击 `移动缓存文件` 按钮或者 `删除缓存` 按钮, 等待右下角弹窗提示成功即可. 87 | 88 | 很简单不是么 🐱 89 | 90 | ### 修改缓存有效期和缓存大小 91 | 92 | ::: info 93 | 非特殊需求不是很建议修改, 默认的设置挺合理的. 94 | ::: 95 | 96 | - 缓存有效期: 默认 30 天, 单个缓存文件在 30 天内没被再次访问就会被删除. 97 | - 缓存大小: 默认 20 GB, 缓存文件夹的最大上限, 可能会因为单个缓存的大小高于或低于设定的值. 98 | 99 | ## 网页版本 100 | 101 | ::: info 102 | 网页版本目前仅支持 Chrome 以及部分 Chromium 魔改的浏览器(如 Edge) 103 | ::: 104 | 105 | 由于浏览器 API 的限制, 仅支持修改配置, 转移或删除缓存功能请使用软件版本. 106 | 107 | [网页版链接](https://vrchat-cache-mover-web.vercel.app/) 108 | 109 | 1. 在 `缓存目录` 输入你要转移到的位置, 建议使用复制粘贴的方式. 110 | 2. 使用快捷键 `Win+R` 打开运行窗口, 输入 `cmd` 或 `powershell` 打开终端. 111 | 3. 在终端中输入 `whoami` 并按下 `Enter`(回车键), 将结果复制到 `当前用户名` 中. 112 | 4. 点击 `复制路径` 按钮. 113 | 5. 点击 `打开配置文件` 按钮, 在选择文件夹弹窗的 `文件名` 处粘贴刚刚复制的路径, 点击打开. 114 | - 如果提示文件不存在, 点击确定然后把选择文件夹弹窗关闭. 点击 `保存配置文件` 按钮, 在弹出的另存为弹窗的 `文件名` 处粘贴刚刚复制的路径, 点击保存. 115 | - 如果没有提示文件不存在. 点击 `保存配置文件` 按钮, 会弹出 `将修改保存至 config.json?` 的弹窗, 点击 `保存修改`. 116 | 6. 完成 117 | 118 | ## 常见问题 119 | 120 | - 转移缓存后系统盘依然占用了大量空间. 121 | 122 | `移动缓存文件` 功能可能会耗时较长, 你需要等待右下角提示成功后才可以关闭工具. 123 | -------------------------------------------------------------------------------- /src-tauri/src/vrchat.rs: -------------------------------------------------------------------------------- 1 | use bytesize::ByteSize; 2 | use path_absolutize::*; 3 | use std::fs; 4 | use std::path::Path; 5 | 6 | #[tauri::command] 7 | #[cfg(target_os = "windows")] 8 | pub fn vrchat_path() -> Option { 9 | let _vrchat_path = match windirs::known_folder_path(windirs::FolderId::LocalAppDataLow) { 10 | Ok(path) => path.as_path().join("VRChat//VRChat"), 11 | Err(_) => return None, 12 | }; 13 | Some( 14 | _vrchat_path 15 | .absolutize() 16 | .unwrap() 17 | .to_str() 18 | .unwrap() 19 | .to_string(), 20 | ) 21 | } 22 | 23 | #[tauri::command] 24 | pub fn check_vrchat_path() -> Result<(), tauri::InvokeError> { 25 | if let Some(_vrchat_path) = vrchat_path() { 26 | if !Path::new(_vrchat_path.as_str()).exists() { 27 | return Err(tauri::InvokeError::from("vrchat-path-notfound")); 28 | } 29 | } 30 | Ok(()) 31 | } 32 | 33 | #[tauri::command] 34 | pub fn vrchat_config() -> Result { 35 | if let Some(_vrchat_path) = vrchat_path() { 36 | let config_path = Path::new(_vrchat_path.as_str()).join("config.json"); 37 | if !config_path.exists() { 38 | return Ok("{}".to_string()); 39 | } 40 | return match fs::read_to_string(config_path) { 41 | Ok(config) => Ok(config), 42 | Err(err) => Err(tauri::InvokeError::from(err.to_string())), 43 | }; 44 | } 45 | Err(tauri::InvokeError::from("vrchat-path-notfound")) 46 | } 47 | 48 | #[tauri::command] 49 | pub fn total_cache() -> Option { 50 | if let Some(_vrchat_path) = vrchat_path() { 51 | let cache_path = Path::new(_vrchat_path.as_str()).join("Cache-WindowsPlayer"); 52 | let total_size = fs_extra::dir::get_size(cache_path).ok()?; 53 | return Some(ByteSize::b(total_size).to_string_as(true)); 54 | } 55 | None 56 | } 57 | 58 | #[tauri::command] 59 | pub async fn move_cache(new_path: &str) -> Result<(), tauri::InvokeError> { 60 | match vrchat_path() { 61 | Some(_vrchat_path) => { 62 | let cache_path = Path::new(_vrchat_path.as_str()).join("Cache-WindowsPlayer"); 63 | if !cache_path.exists() { 64 | return Err(tauri::InvokeError::from("cache-directory-notfound")); 65 | } 66 | if let Err(err) = check_new_path(new_path) { 67 | return Err(err); 68 | } 69 | let _new_path = new_path.to_string(); 70 | if let Err(err) = 71 | fs_extra::dir::move_dir(cache_path, _new_path, &fs_extra::dir::CopyOptions::new()) 72 | { 73 | return Err(tauri::InvokeError::from(err.to_string())); 74 | } 75 | Ok(()) 76 | } 77 | None => Err(tauri::InvokeError::from("vrchat-path-notfound")), 78 | } 79 | } 80 | 81 | #[tauri::command] 82 | pub fn remove_cache() { 83 | if let Some(_vrchat_path) = vrchat_path() { 84 | let cache_path = Path::new(_vrchat_path.as_str()).join("Cache-WindowsPlayer"); 85 | if cache_path.exists() { 86 | fs_extra::dir::remove(cache_path).ok(); 87 | } 88 | } 89 | } 90 | 91 | #[tauri::command] 92 | #[cfg(target_os = "windows")] 93 | pub fn open_vrchat_path() { 94 | use std::os::windows::process::CommandExt; 95 | use std::process::Command; 96 | 97 | if let Some(_vrchat_path) = vrchat_path() { 98 | Command::new("cmd") 99 | .creation_flags(0x08) 100 | .args(&["/C", "start", _vrchat_path.as_str()]) 101 | .spawn() 102 | .ok(); 103 | } 104 | } 105 | 106 | #[tauri::command] 107 | pub fn save_config(config: &str) -> Result<(), tauri::InvokeError> { 108 | if let Some(_vrchat_path) = vrchat_path() { 109 | let config_path = Path::new(_vrchat_path.as_str()).join("config.json"); 110 | fs::write(config_path, config).ok(); 111 | return Ok(()); 112 | } 113 | Err(tauri::InvokeError::from("vrchat-path-notfound")) 114 | } 115 | 116 | #[tauri::command] 117 | pub fn check_new_path(new_path: &str) -> Result<(), tauri::InvokeError> { 118 | let _new_path = Path::new(new_path); 119 | if !_new_path.exists() { 120 | return Err(tauri::InvokeError::from("target-directory-not-exist")); 121 | } else if !_new_path.is_dir() { 122 | return Err(tauri::InvokeError::from("target-directory-not-directory")); 123 | } 124 | return Ok(()); 125 | } 126 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 135 | 136 | 273 | 274 | 297 | 298 | 331 | -------------------------------------------------------------------------------- /docs/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | vitepress: 1.0.0-alpha.21 5 | vue: ^3.2.41 6 | 7 | devDependencies: 8 | vitepress: 1.0.0-alpha.21 9 | vue: 3.2.41 10 | 11 | packages: 12 | 13 | /@algolia/autocomplete-core/1.7.1: 14 | resolution: {integrity: sha512-eiZw+fxMzNQn01S8dA/hcCpoWCOCwcIIEUtHHdzN5TGB3IpzLbuhqFeTfh2OUhhgkE8Uo17+wH+QJ/wYyQmmzg==} 15 | dependencies: 16 | '@algolia/autocomplete-shared': 1.7.1 17 | dev: true 18 | 19 | /@algolia/autocomplete-preset-algolia/1.7.1_algoliasearch@4.14.2: 20 | resolution: {integrity: sha512-pJwmIxeJCymU1M6cGujnaIYcY3QPOVYZOXhFkWVM7IxKzy272BwCvMFMyc5NpG/QmiObBxjo7myd060OeTNJXg==} 21 | peerDependencies: 22 | '@algolia/client-search': ^4.9.1 23 | algoliasearch: ^4.9.1 24 | peerDependenciesMeta: 25 | '@algolia/client-search': 26 | optional: true 27 | dependencies: 28 | '@algolia/autocomplete-shared': 1.7.1 29 | algoliasearch: 4.14.2 30 | dev: true 31 | 32 | /@algolia/autocomplete-shared/1.7.1: 33 | resolution: {integrity: sha512-eTmGVqY3GeyBTT8IWiB2K5EuURAqhnumfktAEoHxfDY2o7vg2rSnO16ZtIG0fMgt3py28Vwgq42/bVEuaQV7pg==} 34 | dev: true 35 | 36 | /@algolia/cache-browser-local-storage/4.14.2: 37 | resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} 38 | dependencies: 39 | '@algolia/cache-common': 4.14.2 40 | dev: true 41 | 42 | /@algolia/cache-common/4.14.2: 43 | resolution: {integrity: sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==} 44 | dev: true 45 | 46 | /@algolia/cache-in-memory/4.14.2: 47 | resolution: {integrity: sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==} 48 | dependencies: 49 | '@algolia/cache-common': 4.14.2 50 | dev: true 51 | 52 | /@algolia/client-account/4.14.2: 53 | resolution: {integrity: sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==} 54 | dependencies: 55 | '@algolia/client-common': 4.14.2 56 | '@algolia/client-search': 4.14.2 57 | '@algolia/transporter': 4.14.2 58 | dev: true 59 | 60 | /@algolia/client-analytics/4.14.2: 61 | resolution: {integrity: sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==} 62 | dependencies: 63 | '@algolia/client-common': 4.14.2 64 | '@algolia/client-search': 4.14.2 65 | '@algolia/requester-common': 4.14.2 66 | '@algolia/transporter': 4.14.2 67 | dev: true 68 | 69 | /@algolia/client-common/4.14.2: 70 | resolution: {integrity: sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==} 71 | dependencies: 72 | '@algolia/requester-common': 4.14.2 73 | '@algolia/transporter': 4.14.2 74 | dev: true 75 | 76 | /@algolia/client-personalization/4.14.2: 77 | resolution: {integrity: sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==} 78 | dependencies: 79 | '@algolia/client-common': 4.14.2 80 | '@algolia/requester-common': 4.14.2 81 | '@algolia/transporter': 4.14.2 82 | dev: true 83 | 84 | /@algolia/client-search/4.14.2: 85 | resolution: {integrity: sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==} 86 | dependencies: 87 | '@algolia/client-common': 4.14.2 88 | '@algolia/requester-common': 4.14.2 89 | '@algolia/transporter': 4.14.2 90 | dev: true 91 | 92 | /@algolia/logger-common/4.14.2: 93 | resolution: {integrity: sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==} 94 | dev: true 95 | 96 | /@algolia/logger-console/4.14.2: 97 | resolution: {integrity: sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==} 98 | dependencies: 99 | '@algolia/logger-common': 4.14.2 100 | dev: true 101 | 102 | /@algolia/requester-browser-xhr/4.14.2: 103 | resolution: {integrity: sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==} 104 | dependencies: 105 | '@algolia/requester-common': 4.14.2 106 | dev: true 107 | 108 | /@algolia/requester-common/4.14.2: 109 | resolution: {integrity: sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==} 110 | dev: true 111 | 112 | /@algolia/requester-node-http/4.14.2: 113 | resolution: {integrity: sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==} 114 | dependencies: 115 | '@algolia/requester-common': 4.14.2 116 | dev: true 117 | 118 | /@algolia/transporter/4.14.2: 119 | resolution: {integrity: sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==} 120 | dependencies: 121 | '@algolia/cache-common': 4.14.2 122 | '@algolia/logger-common': 4.14.2 123 | '@algolia/requester-common': 4.14.2 124 | dev: true 125 | 126 | /@babel/helper-string-parser/7.19.4: 127 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 128 | engines: {node: '>=6.9.0'} 129 | dev: true 130 | 131 | /@babel/helper-validator-identifier/7.19.1: 132 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 133 | engines: {node: '>=6.9.0'} 134 | dev: true 135 | 136 | /@babel/parser/7.19.4: 137 | resolution: {integrity: sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==} 138 | engines: {node: '>=6.0.0'} 139 | hasBin: true 140 | dependencies: 141 | '@babel/types': 7.19.4 142 | dev: true 143 | 144 | /@babel/types/7.19.4: 145 | resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==} 146 | engines: {node: '>=6.9.0'} 147 | dependencies: 148 | '@babel/helper-string-parser': 7.19.4 149 | '@babel/helper-validator-identifier': 7.19.1 150 | to-fast-properties: 2.0.0 151 | dev: true 152 | 153 | /@docsearch/css/3.2.1: 154 | resolution: {integrity: sha512-gaP6TxxwQC+K8D6TRx5WULUWKrcbzECOPA2KCVMuI+6C7dNiGUk5yXXzVhc5sld79XKYLnO9DRTI4mjXDYkh+g==} 155 | dev: true 156 | 157 | /@docsearch/js/3.2.1: 158 | resolution: {integrity: sha512-H1PekEtSeS0msetR2YGGey2w7jQ2wAKfGODJvQTygSwMgUZ+2DHpzUgeDyEBIXRIfaBcoQneqrzsljM62pm6Xg==} 159 | dependencies: 160 | '@docsearch/react': 3.2.1 161 | preact: 10.11.1 162 | transitivePeerDependencies: 163 | - '@algolia/client-search' 164 | - '@types/react' 165 | - react 166 | - react-dom 167 | dev: true 168 | 169 | /@docsearch/react/3.2.1: 170 | resolution: {integrity: sha512-EzTQ/y82s14IQC5XVestiK/kFFMe2aagoYFuTAIfIb/e+4FU7kSMKonRtLwsCiLQHmjvNQq+HO+33giJ5YVtaQ==} 171 | peerDependencies: 172 | '@types/react': '>= 16.8.0 < 19.0.0' 173 | react: '>= 16.8.0 < 19.0.0' 174 | react-dom: '>= 16.8.0 < 19.0.0' 175 | peerDependenciesMeta: 176 | '@types/react': 177 | optional: true 178 | react: 179 | optional: true 180 | react-dom: 181 | optional: true 182 | dependencies: 183 | '@algolia/autocomplete-core': 1.7.1 184 | '@algolia/autocomplete-preset-algolia': 1.7.1_algoliasearch@4.14.2 185 | '@docsearch/css': 3.2.1 186 | algoliasearch: 4.14.2 187 | transitivePeerDependencies: 188 | - '@algolia/client-search' 189 | dev: true 190 | 191 | /@esbuild/android-arm/0.15.11: 192 | resolution: {integrity: sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA==} 193 | engines: {node: '>=12'} 194 | cpu: [arm] 195 | os: [android] 196 | requiresBuild: true 197 | dev: true 198 | optional: true 199 | 200 | /@esbuild/linux-loong64/0.15.11: 201 | resolution: {integrity: sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==} 202 | engines: {node: '>=12'} 203 | cpu: [loong64] 204 | os: [linux] 205 | requiresBuild: true 206 | dev: true 207 | optional: true 208 | 209 | /@types/web-bluetooth/0.0.15: 210 | resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} 211 | dev: true 212 | 213 | /@vitejs/plugin-vue/3.1.2_vite@3.1.8+vue@3.2.41: 214 | resolution: {integrity: sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==} 215 | engines: {node: ^14.18.0 || >=16.0.0} 216 | peerDependencies: 217 | vite: ^3.0.0 218 | vue: ^3.2.25 219 | dependencies: 220 | vite: 3.1.8 221 | vue: 3.2.41 222 | dev: true 223 | 224 | /@vue/compiler-core/3.2.41: 225 | resolution: {integrity: sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==} 226 | dependencies: 227 | '@babel/parser': 7.19.4 228 | '@vue/shared': 3.2.41 229 | estree-walker: 2.0.2 230 | source-map: 0.6.1 231 | dev: true 232 | 233 | /@vue/compiler-dom/3.2.41: 234 | resolution: {integrity: sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==} 235 | dependencies: 236 | '@vue/compiler-core': 3.2.41 237 | '@vue/shared': 3.2.41 238 | dev: true 239 | 240 | /@vue/compiler-sfc/3.2.41: 241 | resolution: {integrity: sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==} 242 | dependencies: 243 | '@babel/parser': 7.19.4 244 | '@vue/compiler-core': 3.2.41 245 | '@vue/compiler-dom': 3.2.41 246 | '@vue/compiler-ssr': 3.2.41 247 | '@vue/reactivity-transform': 3.2.41 248 | '@vue/shared': 3.2.41 249 | estree-walker: 2.0.2 250 | magic-string: 0.25.9 251 | postcss: 8.4.18 252 | source-map: 0.6.1 253 | dev: true 254 | 255 | /@vue/compiler-ssr/3.2.41: 256 | resolution: {integrity: sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==} 257 | dependencies: 258 | '@vue/compiler-dom': 3.2.41 259 | '@vue/shared': 3.2.41 260 | dev: true 261 | 262 | /@vue/devtools-api/6.4.4: 263 | resolution: {integrity: sha512-Ku31WzpOV/8cruFaXaEZKF81WkNnvCSlBY4eOGtz5WMSdJvX1v1WWlSMGZeqUwPtQ27ZZz7B62erEMq8JDjcXw==} 264 | dev: true 265 | 266 | /@vue/reactivity-transform/3.2.41: 267 | resolution: {integrity: sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==} 268 | dependencies: 269 | '@babel/parser': 7.19.4 270 | '@vue/compiler-core': 3.2.41 271 | '@vue/shared': 3.2.41 272 | estree-walker: 2.0.2 273 | magic-string: 0.25.9 274 | dev: true 275 | 276 | /@vue/reactivity/3.2.41: 277 | resolution: {integrity: sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==} 278 | dependencies: 279 | '@vue/shared': 3.2.41 280 | dev: true 281 | 282 | /@vue/runtime-core/3.2.41: 283 | resolution: {integrity: sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==} 284 | dependencies: 285 | '@vue/reactivity': 3.2.41 286 | '@vue/shared': 3.2.41 287 | dev: true 288 | 289 | /@vue/runtime-dom/3.2.41: 290 | resolution: {integrity: sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==} 291 | dependencies: 292 | '@vue/runtime-core': 3.2.41 293 | '@vue/shared': 3.2.41 294 | csstype: 2.6.21 295 | dev: true 296 | 297 | /@vue/server-renderer/3.2.41_vue@3.2.41: 298 | resolution: {integrity: sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==} 299 | peerDependencies: 300 | vue: 3.2.41 301 | dependencies: 302 | '@vue/compiler-ssr': 3.2.41 303 | '@vue/shared': 3.2.41 304 | vue: 3.2.41 305 | dev: true 306 | 307 | /@vue/shared/3.2.41: 308 | resolution: {integrity: sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==} 309 | dev: true 310 | 311 | /@vueuse/core/9.3.0_vue@3.2.41: 312 | resolution: {integrity: sha512-64Rna8IQDWpdrJxgitDg7yv1yTp41ZmvV8zlLEylK4QQLWAhz1OFGZDPZ8bU4lwcGgbEJ2sGi2jrdNh4LttUSQ==} 313 | dependencies: 314 | '@types/web-bluetooth': 0.0.15 315 | '@vueuse/metadata': 9.3.0 316 | '@vueuse/shared': 9.3.0_vue@3.2.41 317 | vue-demi: 0.13.11_vue@3.2.41 318 | transitivePeerDependencies: 319 | - '@vue/composition-api' 320 | - vue 321 | dev: true 322 | 323 | /@vueuse/metadata/9.3.0: 324 | resolution: {integrity: sha512-GnnfjbzIPJIh9ngL9s9oGU1+Hx/h5/KFqTfJykzh/1xjaHkedV9g0MASpdmPZIP+ynNhKAcEfA6g5i8KXwtoMA==} 325 | dev: true 326 | 327 | /@vueuse/shared/9.3.0_vue@3.2.41: 328 | resolution: {integrity: sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==} 329 | dependencies: 330 | vue-demi: 0.13.11_vue@3.2.41 331 | transitivePeerDependencies: 332 | - '@vue/composition-api' 333 | - vue 334 | dev: true 335 | 336 | /algoliasearch/4.14.2: 337 | resolution: {integrity: sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==} 338 | dependencies: 339 | '@algolia/cache-browser-local-storage': 4.14.2 340 | '@algolia/cache-common': 4.14.2 341 | '@algolia/cache-in-memory': 4.14.2 342 | '@algolia/client-account': 4.14.2 343 | '@algolia/client-analytics': 4.14.2 344 | '@algolia/client-common': 4.14.2 345 | '@algolia/client-personalization': 4.14.2 346 | '@algolia/client-search': 4.14.2 347 | '@algolia/logger-common': 4.14.2 348 | '@algolia/logger-console': 4.14.2 349 | '@algolia/requester-browser-xhr': 4.14.2 350 | '@algolia/requester-common': 4.14.2 351 | '@algolia/requester-node-http': 4.14.2 352 | '@algolia/transporter': 4.14.2 353 | dev: true 354 | 355 | /body-scroll-lock/4.0.0-beta.0: 356 | resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} 357 | dev: true 358 | 359 | /csstype/2.6.21: 360 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} 361 | dev: true 362 | 363 | /esbuild-android-64/0.15.11: 364 | resolution: {integrity: sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw==} 365 | engines: {node: '>=12'} 366 | cpu: [x64] 367 | os: [android] 368 | requiresBuild: true 369 | dev: true 370 | optional: true 371 | 372 | /esbuild-android-arm64/0.15.11: 373 | resolution: {integrity: sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ==} 374 | engines: {node: '>=12'} 375 | cpu: [arm64] 376 | os: [android] 377 | requiresBuild: true 378 | dev: true 379 | optional: true 380 | 381 | /esbuild-darwin-64/0.15.11: 382 | resolution: {integrity: sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA==} 383 | engines: {node: '>=12'} 384 | cpu: [x64] 385 | os: [darwin] 386 | requiresBuild: true 387 | dev: true 388 | optional: true 389 | 390 | /esbuild-darwin-arm64/0.15.11: 391 | resolution: {integrity: sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ==} 392 | engines: {node: '>=12'} 393 | cpu: [arm64] 394 | os: [darwin] 395 | requiresBuild: true 396 | dev: true 397 | optional: true 398 | 399 | /esbuild-freebsd-64/0.15.11: 400 | resolution: {integrity: sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg==} 401 | engines: {node: '>=12'} 402 | cpu: [x64] 403 | os: [freebsd] 404 | requiresBuild: true 405 | dev: true 406 | optional: true 407 | 408 | /esbuild-freebsd-arm64/0.15.11: 409 | resolution: {integrity: sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ==} 410 | engines: {node: '>=12'} 411 | cpu: [arm64] 412 | os: [freebsd] 413 | requiresBuild: true 414 | dev: true 415 | optional: true 416 | 417 | /esbuild-linux-32/0.15.11: 418 | resolution: {integrity: sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA==} 419 | engines: {node: '>=12'} 420 | cpu: [ia32] 421 | os: [linux] 422 | requiresBuild: true 423 | dev: true 424 | optional: true 425 | 426 | /esbuild-linux-64/0.15.11: 427 | resolution: {integrity: sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA==} 428 | engines: {node: '>=12'} 429 | cpu: [x64] 430 | os: [linux] 431 | requiresBuild: true 432 | dev: true 433 | optional: true 434 | 435 | /esbuild-linux-arm/0.15.11: 436 | resolution: {integrity: sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A==} 437 | engines: {node: '>=12'} 438 | cpu: [arm] 439 | os: [linux] 440 | requiresBuild: true 441 | dev: true 442 | optional: true 443 | 444 | /esbuild-linux-arm64/0.15.11: 445 | resolution: {integrity: sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw==} 446 | engines: {node: '>=12'} 447 | cpu: [arm64] 448 | os: [linux] 449 | requiresBuild: true 450 | dev: true 451 | optional: true 452 | 453 | /esbuild-linux-mips64le/0.15.11: 454 | resolution: {integrity: sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA==} 455 | engines: {node: '>=12'} 456 | cpu: [mips64el] 457 | os: [linux] 458 | requiresBuild: true 459 | dev: true 460 | optional: true 461 | 462 | /esbuild-linux-ppc64le/0.15.11: 463 | resolution: {integrity: sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg==} 464 | engines: {node: '>=12'} 465 | cpu: [ppc64] 466 | os: [linux] 467 | requiresBuild: true 468 | dev: true 469 | optional: true 470 | 471 | /esbuild-linux-riscv64/0.15.11: 472 | resolution: {integrity: sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw==} 473 | engines: {node: '>=12'} 474 | cpu: [riscv64] 475 | os: [linux] 476 | requiresBuild: true 477 | dev: true 478 | optional: true 479 | 480 | /esbuild-linux-s390x/0.15.11: 481 | resolution: {integrity: sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg==} 482 | engines: {node: '>=12'} 483 | cpu: [s390x] 484 | os: [linux] 485 | requiresBuild: true 486 | dev: true 487 | optional: true 488 | 489 | /esbuild-netbsd-64/0.15.11: 490 | resolution: {integrity: sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A==} 491 | engines: {node: '>=12'} 492 | cpu: [x64] 493 | os: [netbsd] 494 | requiresBuild: true 495 | dev: true 496 | optional: true 497 | 498 | /esbuild-openbsd-64/0.15.11: 499 | resolution: {integrity: sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ==} 500 | engines: {node: '>=12'} 501 | cpu: [x64] 502 | os: [openbsd] 503 | requiresBuild: true 504 | dev: true 505 | optional: true 506 | 507 | /esbuild-sunos-64/0.15.11: 508 | resolution: {integrity: sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw==} 509 | engines: {node: '>=12'} 510 | cpu: [x64] 511 | os: [sunos] 512 | requiresBuild: true 513 | dev: true 514 | optional: true 515 | 516 | /esbuild-windows-32/0.15.11: 517 | resolution: {integrity: sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q==} 518 | engines: {node: '>=12'} 519 | cpu: [ia32] 520 | os: [win32] 521 | requiresBuild: true 522 | dev: true 523 | optional: true 524 | 525 | /esbuild-windows-64/0.15.11: 526 | resolution: {integrity: sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ==} 527 | engines: {node: '>=12'} 528 | cpu: [x64] 529 | os: [win32] 530 | requiresBuild: true 531 | dev: true 532 | optional: true 533 | 534 | /esbuild-windows-arm64/0.15.11: 535 | resolution: {integrity: sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw==} 536 | engines: {node: '>=12'} 537 | cpu: [arm64] 538 | os: [win32] 539 | requiresBuild: true 540 | dev: true 541 | optional: true 542 | 543 | /esbuild/0.15.11: 544 | resolution: {integrity: sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg==} 545 | engines: {node: '>=12'} 546 | hasBin: true 547 | requiresBuild: true 548 | optionalDependencies: 549 | '@esbuild/android-arm': 0.15.11 550 | '@esbuild/linux-loong64': 0.15.11 551 | esbuild-android-64: 0.15.11 552 | esbuild-android-arm64: 0.15.11 553 | esbuild-darwin-64: 0.15.11 554 | esbuild-darwin-arm64: 0.15.11 555 | esbuild-freebsd-64: 0.15.11 556 | esbuild-freebsd-arm64: 0.15.11 557 | esbuild-linux-32: 0.15.11 558 | esbuild-linux-64: 0.15.11 559 | esbuild-linux-arm: 0.15.11 560 | esbuild-linux-arm64: 0.15.11 561 | esbuild-linux-mips64le: 0.15.11 562 | esbuild-linux-ppc64le: 0.15.11 563 | esbuild-linux-riscv64: 0.15.11 564 | esbuild-linux-s390x: 0.15.11 565 | esbuild-netbsd-64: 0.15.11 566 | esbuild-openbsd-64: 0.15.11 567 | esbuild-sunos-64: 0.15.11 568 | esbuild-windows-32: 0.15.11 569 | esbuild-windows-64: 0.15.11 570 | esbuild-windows-arm64: 0.15.11 571 | dev: true 572 | 573 | /estree-walker/2.0.2: 574 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 575 | dev: true 576 | 577 | /fsevents/2.3.2: 578 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 579 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 580 | os: [darwin] 581 | requiresBuild: true 582 | dev: true 583 | optional: true 584 | 585 | /function-bind/1.1.1: 586 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 587 | dev: true 588 | 589 | /has/1.0.3: 590 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 591 | engines: {node: '>= 0.4.0'} 592 | dependencies: 593 | function-bind: 1.1.1 594 | dev: true 595 | 596 | /is-core-module/2.10.0: 597 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} 598 | dependencies: 599 | has: 1.0.3 600 | dev: true 601 | 602 | /jsonc-parser/3.2.0: 603 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 604 | dev: true 605 | 606 | /magic-string/0.25.9: 607 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 608 | dependencies: 609 | sourcemap-codec: 1.4.8 610 | dev: true 611 | 612 | /nanoid/3.3.4: 613 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 614 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 615 | hasBin: true 616 | dev: true 617 | 618 | /path-parse/1.0.7: 619 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 620 | dev: true 621 | 622 | /picocolors/1.0.0: 623 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 624 | dev: true 625 | 626 | /postcss/8.4.18: 627 | resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} 628 | engines: {node: ^10 || ^12 || >=14} 629 | dependencies: 630 | nanoid: 3.3.4 631 | picocolors: 1.0.0 632 | source-map-js: 1.0.2 633 | dev: true 634 | 635 | /preact/10.11.1: 636 | resolution: {integrity: sha512-1Wz5PCRm6Fg+6BTXWJHhX4wRK9MZbZBHuwBqfZlOdVm2NqPe8/rjYpufvYCwJSGb9layyzB2jTTXfpCTynLqFQ==} 637 | dev: true 638 | 639 | /resolve/1.22.1: 640 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 641 | hasBin: true 642 | dependencies: 643 | is-core-module: 2.10.0 644 | path-parse: 1.0.7 645 | supports-preserve-symlinks-flag: 1.0.0 646 | dev: true 647 | 648 | /rollup/2.78.1: 649 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 650 | engines: {node: '>=10.0.0'} 651 | hasBin: true 652 | optionalDependencies: 653 | fsevents: 2.3.2 654 | dev: true 655 | 656 | /shiki/0.11.1: 657 | resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} 658 | dependencies: 659 | jsonc-parser: 3.2.0 660 | vscode-oniguruma: 1.6.2 661 | vscode-textmate: 6.0.0 662 | dev: true 663 | 664 | /source-map-js/1.0.2: 665 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 666 | engines: {node: '>=0.10.0'} 667 | dev: true 668 | 669 | /source-map/0.6.1: 670 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 671 | engines: {node: '>=0.10.0'} 672 | dev: true 673 | 674 | /sourcemap-codec/1.4.8: 675 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 676 | dev: true 677 | 678 | /supports-preserve-symlinks-flag/1.0.0: 679 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 680 | engines: {node: '>= 0.4'} 681 | dev: true 682 | 683 | /to-fast-properties/2.0.0: 684 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 685 | engines: {node: '>=4'} 686 | dev: true 687 | 688 | /vite/3.1.8: 689 | resolution: {integrity: sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==} 690 | engines: {node: ^14.18.0 || >=16.0.0} 691 | hasBin: true 692 | peerDependencies: 693 | less: '*' 694 | sass: '*' 695 | stylus: '*' 696 | terser: ^5.4.0 697 | peerDependenciesMeta: 698 | less: 699 | optional: true 700 | sass: 701 | optional: true 702 | stylus: 703 | optional: true 704 | terser: 705 | optional: true 706 | dependencies: 707 | esbuild: 0.15.11 708 | postcss: 8.4.18 709 | resolve: 1.22.1 710 | rollup: 2.78.1 711 | optionalDependencies: 712 | fsevents: 2.3.2 713 | dev: true 714 | 715 | /vitepress/1.0.0-alpha.21: 716 | resolution: {integrity: sha512-D/tkoDW16uUZ9pnWd28Kk1vX26zNiTml3m9oGbfx2pAfYg99PHd1GceZyEm4jZsJU0+n9S++1ctFxoQvsq376A==} 717 | hasBin: true 718 | dependencies: 719 | '@docsearch/css': 3.2.1 720 | '@docsearch/js': 3.2.1 721 | '@vitejs/plugin-vue': 3.1.2_vite@3.1.8+vue@3.2.41 722 | '@vue/devtools-api': 6.4.4 723 | '@vueuse/core': 9.3.0_vue@3.2.41 724 | body-scroll-lock: 4.0.0-beta.0 725 | shiki: 0.11.1 726 | vite: 3.1.8 727 | vue: 3.2.41 728 | transitivePeerDependencies: 729 | - '@algolia/client-search' 730 | - '@types/react' 731 | - '@vue/composition-api' 732 | - less 733 | - react 734 | - react-dom 735 | - sass 736 | - stylus 737 | - terser 738 | dev: true 739 | 740 | /vscode-oniguruma/1.6.2: 741 | resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} 742 | dev: true 743 | 744 | /vscode-textmate/6.0.0: 745 | resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} 746 | dev: true 747 | 748 | /vue-demi/0.13.11_vue@3.2.41: 749 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} 750 | engines: {node: '>=12'} 751 | hasBin: true 752 | requiresBuild: true 753 | peerDependencies: 754 | '@vue/composition-api': ^1.0.0-rc.1 755 | vue: ^3.0.0-0 || ^2.6.0 756 | peerDependenciesMeta: 757 | '@vue/composition-api': 758 | optional: true 759 | dependencies: 760 | vue: 3.2.41 761 | dev: true 762 | 763 | /vue/3.2.41: 764 | resolution: {integrity: sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==} 765 | dependencies: 766 | '@vue/compiler-dom': 3.2.41 767 | '@vue/compiler-sfc': 3.2.41 768 | '@vue/runtime-dom': 3.2.41 769 | '@vue/server-renderer': 3.2.41_vue@3.2.41 770 | '@vue/shared': 3.2.41 771 | dev: true 772 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published 637 | by the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@element-plus/icons-vue': 9 | specifier: ^2.0.6 10 | version: 2.0.6(vue@3.2.36) 11 | '@tauri-apps/api': 12 | specifier: 1.0.0-rc.6 13 | version: 1.0.0-rc.6 14 | '@vueuse/components': 15 | specifier: ^8.6.0 16 | version: 8.6.0(vue@3.2.36) 17 | '@vueuse/core': 18 | specifier: ^8.6.0 19 | version: 8.6.0(vue@3.2.36) 20 | element-plus: 21 | specifier: ^2.2.2 22 | version: 2.2.2(vue@3.2.36) 23 | vue: 24 | specifier: ^3.2.25 25 | version: 3.2.36 26 | vue-i18n: 27 | specifier: '9' 28 | version: 9.1.10(vue@3.2.36) 29 | 30 | devDependencies: 31 | '@tauri-apps/cli': 32 | specifier: 1.0.0-rc.13 33 | version: 1.0.0-rc.13 34 | '@types/node': 35 | specifier: ^17.0.40 36 | version: 17.0.40 37 | '@vicons/tabler': 38 | specifier: ^0.12.0 39 | version: 0.12.0 40 | '@vitejs/plugin-vue': 41 | specifier: ^2.3.3 42 | version: 2.3.3(vite@2.9.9)(vue@3.2.36) 43 | esno: 44 | specifier: ^0.16.3 45 | version: 0.16.3 46 | sass: 47 | specifier: ^1.52.1 48 | version: 1.52.1 49 | typescript: 50 | specifier: ^4.7.3 51 | version: 4.7.3 52 | unplugin-auto-import: 53 | specifier: ^0.8.6 54 | version: 0.8.6(@vueuse/core@8.6.0)(vite@2.9.9) 55 | unplugin-vue-components: 56 | specifier: ^0.19.6 57 | version: 0.19.6(vite@2.9.9)(vue@3.2.36) 58 | vite: 59 | specifier: ^2.9.9 60 | version: 2.9.9(sass@1.52.1) 61 | vue-tsc: 62 | specifier: ^1.0.3 63 | version: 1.0.3(typescript@4.7.3) 64 | 65 | packages: 66 | 67 | /@antfu/utils@0.5.2: 68 | resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} 69 | dev: true 70 | 71 | /@babel/helper-validator-identifier@7.16.7: 72 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 73 | engines: {node: '>=6.9.0'} 74 | 75 | /@babel/parser@7.18.4: 76 | resolution: {integrity: sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==} 77 | engines: {node: '>=6.0.0'} 78 | hasBin: true 79 | dependencies: 80 | '@babel/types': 7.18.4 81 | 82 | /@babel/types@7.18.4: 83 | resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} 84 | engines: {node: '>=6.9.0'} 85 | dependencies: 86 | '@babel/helper-validator-identifier': 7.16.7 87 | to-fast-properties: 2.0.0 88 | 89 | /@ctrl/tinycolor@3.4.1: 90 | resolution: {integrity: sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==} 91 | engines: {node: '>=10'} 92 | dev: false 93 | 94 | /@element-plus/icons-vue@1.1.4(vue@3.2.36): 95 | resolution: {integrity: sha512-Iz/nHqdp1sFPmdzRwHkEQQA3lKvoObk8azgABZ81QUOpW9s/lUyQVUSh0tNtEPZXQlKwlSh7SPgoVxzrE0uuVQ==} 96 | peerDependencies: 97 | vue: ^3.2.0 98 | dependencies: 99 | vue: 3.2.36 100 | dev: false 101 | 102 | /@element-plus/icons-vue@2.0.6(vue@3.2.36): 103 | resolution: {integrity: sha512-lPpG8hYkjL/Z97DH5Ei6w6o22Z4YdNglWCNYOPcB33JCF2A4wye6HFgSI7hEt9zdLyxlSpiqtgf9XcYU+m5mew==} 104 | peerDependencies: 105 | vue: ^3.2.0 106 | dependencies: 107 | vue: 3.2.36 108 | dev: false 109 | 110 | /@esbuild-kit/cjs-loader@2.2.1: 111 | resolution: {integrity: sha512-pq2Z4DcqTBF7y1wQuIzFVqmHJVnmP6hgHEWN2ubPjeG7OzXMZ9NvozW+YA/MIeMdZWp1jcJ/EvXk2+mfEKoCDQ==} 112 | dependencies: 113 | '@esbuild-kit/core-utils': 2.0.2 114 | get-tsconfig: 4.1.0 115 | dev: true 116 | 117 | /@esbuild-kit/core-utils@2.0.2: 118 | resolution: {integrity: sha512-clNYQUsqtc36pzW5EufMsahcbLG45EaW3YDyf0DlaS0eCMkDXpxIlHwPC0rndUwG6Ytk9sMSD5k1qHbwYEC/OQ==} 119 | dependencies: 120 | esbuild: 0.14.48 121 | source-map-support: 0.5.21 122 | dev: true 123 | 124 | /@esbuild-kit/esm-loader@2.3.1: 125 | resolution: {integrity: sha512-CC0H91Oa02cczLswEoiLowTzWxvnS3tIBGkQa1BnieFK7HHV4whrBFGRlUD9rMHfyyoO55IuOqNujycXX+gI8A==} 126 | dependencies: 127 | '@esbuild-kit/core-utils': 2.0.2 128 | get-tsconfig: 4.1.0 129 | dev: true 130 | 131 | /@floating-ui/core@0.7.2: 132 | resolution: {integrity: sha512-FRVAkSNU/vGXLIsgbggcs70GkXKEOXgBBbNpYPNHSaKsCAMMd00NrjbtKTesxkdv9xm9N3+XiDlcFGY6WnatBg==} 133 | dev: false 134 | 135 | /@floating-ui/dom@0.5.2: 136 | resolution: {integrity: sha512-z1DnEa7F3d8Fm/eXSbii8UEGpcjZGkQaYYUI0WpEVgD3vBfebDW8j/3ysusxonuMexoigA+A3b/fYH7sEqiwyg==} 137 | dependencies: 138 | '@floating-ui/core': 0.7.2 139 | dev: false 140 | 141 | /@intlify/core-base@9.1.10: 142 | resolution: {integrity: sha512-So9CNUavB/IsZ+zBmk2Cv6McQp6vc2wbGi1S0XQmJ8Vz+UFcNn9MFXAe9gY67PreIHrbLsLxDD0cwo1qsxM1Nw==} 143 | engines: {node: '>= 10'} 144 | dependencies: 145 | '@intlify/devtools-if': 9.1.10 146 | '@intlify/message-compiler': 9.1.10 147 | '@intlify/message-resolver': 9.1.10 148 | '@intlify/runtime': 9.1.10 149 | '@intlify/shared': 9.1.10 150 | '@intlify/vue-devtools': 9.1.10 151 | dev: false 152 | 153 | /@intlify/devtools-if@9.1.10: 154 | resolution: {integrity: sha512-SHaKoYu6sog3+Q8js1y3oXLywuogbH1sKuc7NSYkN3GElvXSBaMoCzW+we0ZSFqj/6c7vTNLg9nQ6rxhKqYwnQ==} 155 | engines: {node: '>= 10'} 156 | dependencies: 157 | '@intlify/shared': 9.1.10 158 | dev: false 159 | 160 | /@intlify/message-compiler@9.1.10: 161 | resolution: {integrity: sha512-+JiJpXff/XTb0EadYwdxOyRTB0hXNd4n1HaJ/a4yuV960uRmPXaklJsedW0LNdcptd/hYUZtCkI7Lc9J5C1gxg==} 162 | engines: {node: '>= 10'} 163 | dependencies: 164 | '@intlify/message-resolver': 9.1.10 165 | '@intlify/shared': 9.1.10 166 | source-map: 0.6.1 167 | dev: false 168 | 169 | /@intlify/message-resolver@9.1.10: 170 | resolution: {integrity: sha512-5YixMG/M05m0cn9+gOzd4EZQTFRUu8RGhzxJbR1DWN21x/Z3bJ8QpDYj6hC4FwBj5uKsRfKpJQ3Xqg98KWoA+w==} 171 | engines: {node: '>= 10'} 172 | dev: false 173 | 174 | /@intlify/runtime@9.1.10: 175 | resolution: {integrity: sha512-7QsuByNzpe3Gfmhwq6hzgXcMPpxz8Zxb/XFI6s9lQdPLPe5Lgw4U1ovRPZTOs6Y2hwitR3j/HD8BJNGWpJnOFA==} 176 | engines: {node: '>= 10'} 177 | dependencies: 178 | '@intlify/message-compiler': 9.1.10 179 | '@intlify/message-resolver': 9.1.10 180 | '@intlify/shared': 9.1.10 181 | dev: false 182 | 183 | /@intlify/shared@9.1.10: 184 | resolution: {integrity: sha512-Om54xJeo1Vw+K1+wHYyXngE8cAbrxZHpWjYzMR9wCkqbhGtRV5VLhVc214Ze2YatPrWlS2WSMOWXR8JktX/IgA==} 185 | engines: {node: '>= 10'} 186 | dev: false 187 | 188 | /@intlify/vue-devtools@9.1.10: 189 | resolution: {integrity: sha512-5l3qYARVbkWAkagLu1XbDUWRJSL8br1Dj60wgMaKB0+HswVsrR6LloYZTg7ozyvM621V6+zsmwzbQxbVQyrytQ==} 190 | engines: {node: '>= 10'} 191 | dependencies: 192 | '@intlify/message-resolver': 9.1.10 193 | '@intlify/runtime': 9.1.10 194 | '@intlify/shared': 9.1.10 195 | dev: false 196 | 197 | /@nodelib/fs.scandir@2.1.5: 198 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 199 | engines: {node: '>= 8'} 200 | dependencies: 201 | '@nodelib/fs.stat': 2.0.5 202 | run-parallel: 1.2.0 203 | dev: true 204 | 205 | /@nodelib/fs.stat@2.0.5: 206 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 207 | engines: {node: '>= 8'} 208 | dev: true 209 | 210 | /@nodelib/fs.walk@1.2.8: 211 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 212 | engines: {node: '>= 8'} 213 | dependencies: 214 | '@nodelib/fs.scandir': 2.1.5 215 | fastq: 1.13.0 216 | dev: true 217 | 218 | /@rollup/pluginutils@4.2.1: 219 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} 220 | engines: {node: '>= 8.0.0'} 221 | dependencies: 222 | estree-walker: 2.0.2 223 | picomatch: 2.3.1 224 | dev: true 225 | 226 | /@sxzz/popperjs-es@2.11.7: 227 | resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} 228 | dev: false 229 | 230 | /@tauri-apps/api@1.0.0-rc.6: 231 | resolution: {integrity: sha512-/PbVs3/dUzid0/1XbML8tAkRSOmp+6Gv9ql02HGt3aIjNTvaL2902qEbiTX6xK++3oUoKJJ88t+V6IiNd1JUkw==} 232 | engines: {node: '>= 12.13.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} 233 | dependencies: 234 | type-fest: 2.12.2 235 | dev: false 236 | 237 | /@tauri-apps/cli-darwin-arm64@1.0.0-rc.13: 238 | resolution: {integrity: sha512-/EqOz7ASHOU98H58Ibbkg12pLG/P5oyQz8OlueaMYryajkJdmi+bHTkJ05DfbS0owAaHkRJ6f+NmoW/AnyqUbg==} 239 | engines: {node: '>= 10'} 240 | cpu: [arm64] 241 | os: [darwin] 242 | requiresBuild: true 243 | dev: true 244 | optional: true 245 | 246 | /@tauri-apps/cli-darwin-x64@1.0.0-rc.13: 247 | resolution: {integrity: sha512-bvZ0MBKFD1kc4gdVPXgwUA6tHNKj0EmlQK0Xolk6PYP9vZZeNTP1vejevW0bh2IqxC8DuqUArbG9USXwu+LFbQ==} 248 | engines: {node: '>= 10'} 249 | cpu: [x64] 250 | os: [darwin] 251 | requiresBuild: true 252 | dev: true 253 | optional: true 254 | 255 | /@tauri-apps/cli-linux-arm-gnueabihf@1.0.0-rc.13: 256 | resolution: {integrity: sha512-yODvfUkNvtYYdDTOJSDXMx9fpoEB66I2PTrYx1UKonKTEaLrQDcpw2exD/S9LPQzCYgyTuJ/kHRhG1uLdO/UUQ==} 257 | engines: {node: '>= 10'} 258 | cpu: [arm] 259 | os: [linux] 260 | requiresBuild: true 261 | dev: true 262 | optional: true 263 | 264 | /@tauri-apps/cli-linux-arm64-gnu@1.0.0-rc.13: 265 | resolution: {integrity: sha512-kVDJHERD8CmTeMcd2VTnD/nVCHdnNAK8a6ur3l0KTR1iF8A1AtN/sPahMQjK4f7Ar00UDjIzTw74liqakOeiZg==} 266 | engines: {node: '>= 10'} 267 | cpu: [arm64] 268 | os: [linux] 269 | requiresBuild: true 270 | dev: true 271 | optional: true 272 | 273 | /@tauri-apps/cli-linux-arm64-musl@1.0.0-rc.13: 274 | resolution: {integrity: sha512-PFHz+0xKCGMqqn2TmbOSPvTRS61xJQV7srwTZjs5sHBvK536mdBnF/6V6BPEvTn5LzfRnxMu2A5X5GFkYnrZ7w==} 275 | engines: {node: '>= 10'} 276 | cpu: [arm64] 277 | os: [linux] 278 | requiresBuild: true 279 | dev: true 280 | optional: true 281 | 282 | /@tauri-apps/cli-linux-x64-gnu@1.0.0-rc.13: 283 | resolution: {integrity: sha512-EWhTOUNHaaMM7mxp/ue+Osnzn6/o9/7qVle3MSnNI9pGQzumc/dOtBs+sWS/NPXdVEiWKET2mFMK120KJlYcQQ==} 284 | engines: {node: '>= 10'} 285 | cpu: [x64] 286 | os: [linux] 287 | requiresBuild: true 288 | dev: true 289 | optional: true 290 | 291 | /@tauri-apps/cli-linux-x64-musl@1.0.0-rc.13: 292 | resolution: {integrity: sha512-i8lsKw5iAGTAhqSQHeUCISLjhRXNrloHPoFCaSZtU0/GAPGbW/qST7u593h7cKWxRooeMwzo74ij4GhgmddClQ==} 293 | engines: {node: '>= 10'} 294 | cpu: [x64] 295 | os: [linux] 296 | requiresBuild: true 297 | dev: true 298 | optional: true 299 | 300 | /@tauri-apps/cli-win32-ia32-msvc@1.0.0-rc.13: 301 | resolution: {integrity: sha512-rJxSqWIQXeeT2oLzSiQyqZPgDKSGH5sK7MUr8cOCBitqy3T0COlOMX4O7hhqF3cJ/5s0aX+MuNZBzF/D0QUcxA==} 302 | engines: {node: '>= 10'} 303 | cpu: [ia32] 304 | os: [win32] 305 | requiresBuild: true 306 | dev: true 307 | optional: true 308 | 309 | /@tauri-apps/cli-win32-x64-msvc@1.0.0-rc.13: 310 | resolution: {integrity: sha512-ifOTrJVQoBAQUYX+EVnE4XJ/FCMHs4FQ8qxGNszqkSxrU24mmT7La6tzj77352q80KnxRa05xjjLL6GGhmzXRg==} 311 | engines: {node: '>= 10'} 312 | cpu: [x64] 313 | os: [win32] 314 | requiresBuild: true 315 | dev: true 316 | optional: true 317 | 318 | /@tauri-apps/cli@1.0.0-rc.13: 319 | resolution: {integrity: sha512-q7i45Mi1SMv5XllNoX09QS4Q/fYVFwD6piVYmqMSrKY/T5RwedQhytiVH60TxC2xk6o0akVHa7BdYiyJvXNR8A==} 320 | engines: {node: '>= 10'} 321 | hasBin: true 322 | optionalDependencies: 323 | '@tauri-apps/cli-darwin-arm64': 1.0.0-rc.13 324 | '@tauri-apps/cli-darwin-x64': 1.0.0-rc.13 325 | '@tauri-apps/cli-linux-arm-gnueabihf': 1.0.0-rc.13 326 | '@tauri-apps/cli-linux-arm64-gnu': 1.0.0-rc.13 327 | '@tauri-apps/cli-linux-arm64-musl': 1.0.0-rc.13 328 | '@tauri-apps/cli-linux-x64-gnu': 1.0.0-rc.13 329 | '@tauri-apps/cli-linux-x64-musl': 1.0.0-rc.13 330 | '@tauri-apps/cli-win32-ia32-msvc': 1.0.0-rc.13 331 | '@tauri-apps/cli-win32-x64-msvc': 1.0.0-rc.13 332 | dev: true 333 | 334 | /@types/lodash-es@4.17.6: 335 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} 336 | dependencies: 337 | '@types/lodash': 4.14.182 338 | dev: false 339 | 340 | /@types/lodash@4.14.182: 341 | resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==} 342 | dev: false 343 | 344 | /@types/node@17.0.40: 345 | resolution: {integrity: sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==} 346 | dev: true 347 | 348 | /@vicons/tabler@0.12.0: 349 | resolution: {integrity: sha512-3+wUFuxb7e8OzZ8Wryct1pzfA2vyoF4lwW98O9s27ZrfCGaJGNmqG+q8A7vQ92Mf+COCgxpK+rhNPTtTvaU6qw==} 350 | dev: true 351 | 352 | /@vitejs/plugin-vue@2.3.3(vite@2.9.9)(vue@3.2.36): 353 | resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} 354 | engines: {node: '>=12.0.0'} 355 | peerDependencies: 356 | vite: ^2.5.10 357 | vue: ^3.2.25 358 | dependencies: 359 | vite: 2.9.9(sass@1.52.1) 360 | vue: 3.2.36 361 | dev: true 362 | 363 | /@volar/language-core@1.0.3: 364 | resolution: {integrity: sha512-eJ3iubJ1EvPTsp+rKoSUQ3EBGsEzblOQG6OVI9EzXIuwNayIqCnNSv9r0rvnYznX7i5F8gpo0Js9nKoAvwfhpQ==} 365 | dependencies: 366 | '@volar/source-map': 1.0.3 367 | '@vue/reactivity': 3.2.40 368 | muggle-string: 0.1.0 369 | dev: true 370 | 371 | /@volar/source-map@1.0.3: 372 | resolution: {integrity: sha512-iEbjU95e8iZ3fV9NHU/wDWRSwSE5aNGpkG9mgIXPkfCmbEH+nEHGkycvapT551BDtIcyU386XzqL4DQbOyPzew==} 373 | dependencies: 374 | muggle-string: 0.1.0 375 | dev: true 376 | 377 | /@volar/typescript@1.0.3: 378 | resolution: {integrity: sha512-OevIxAbdgfVxwWYI6ht5tmt8GqBBVQWPWn/51MNlqu5fVltFGRkOBmv3hwuvLn5N05pj2GpbkaaLZSjpj4iT9w==} 379 | dependencies: 380 | '@volar/language-core': 1.0.3 381 | dev: true 382 | 383 | /@volar/vue-language-core@1.0.3: 384 | resolution: {integrity: sha512-XryQVvtFB5/rOkEZin5jZgUy0E84p+Ky70z+4B7Bvw/9HjS3TLKAIkm9W0duV7coG9RFVRqeiVnPyaaqSA0waA==} 385 | dependencies: 386 | '@volar/language-core': 1.0.3 387 | '@volar/source-map': 1.0.3 388 | '@vue/compiler-dom': 3.2.40 389 | '@vue/compiler-sfc': 3.2.40 390 | '@vue/reactivity': 3.2.40 391 | '@vue/shared': 3.2.40 392 | minimatch: 5.1.0 393 | vue-template-compiler: 2.7.11 394 | dev: true 395 | 396 | /@volar/vue-typescript@1.0.3: 397 | resolution: {integrity: sha512-zugZ5vni+l5w5z8Q5iEWysU/HkX38krW4+QTKwgQstaRVUQS0UHlX4Ug9vOfPGWEextIx0Z/7JsUvPATTNbfbg==} 398 | dependencies: 399 | '@volar/typescript': 1.0.3 400 | '@volar/vue-language-core': 1.0.3 401 | dev: true 402 | 403 | /@vue/compiler-core@3.2.36: 404 | resolution: {integrity: sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw==} 405 | dependencies: 406 | '@babel/parser': 7.18.4 407 | '@vue/shared': 3.2.36 408 | estree-walker: 2.0.2 409 | source-map: 0.6.1 410 | 411 | /@vue/compiler-core@3.2.40: 412 | resolution: {integrity: sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA==} 413 | dependencies: 414 | '@babel/parser': 7.18.4 415 | '@vue/shared': 3.2.40 416 | estree-walker: 2.0.2 417 | source-map: 0.6.1 418 | dev: true 419 | 420 | /@vue/compiler-dom@3.2.36: 421 | resolution: {integrity: sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA==} 422 | dependencies: 423 | '@vue/compiler-core': 3.2.36 424 | '@vue/shared': 3.2.36 425 | 426 | /@vue/compiler-dom@3.2.40: 427 | resolution: {integrity: sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw==} 428 | dependencies: 429 | '@vue/compiler-core': 3.2.40 430 | '@vue/shared': 3.2.40 431 | dev: true 432 | 433 | /@vue/compiler-sfc@3.2.36: 434 | resolution: {integrity: sha512-AvGb4bTj4W8uQ4BqaSxo7UwTEqX5utdRSMyHy58OragWlt8nEACQ9mIeQh3K4di4/SX+41+pJrLIY01lHAOFOA==} 435 | dependencies: 436 | '@babel/parser': 7.18.4 437 | '@vue/compiler-core': 3.2.36 438 | '@vue/compiler-dom': 3.2.36 439 | '@vue/compiler-ssr': 3.2.36 440 | '@vue/reactivity-transform': 3.2.36 441 | '@vue/shared': 3.2.36 442 | estree-walker: 2.0.2 443 | magic-string: 0.25.9 444 | postcss: 8.4.14 445 | source-map: 0.6.1 446 | 447 | /@vue/compiler-sfc@3.2.40: 448 | resolution: {integrity: sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg==} 449 | dependencies: 450 | '@babel/parser': 7.18.4 451 | '@vue/compiler-core': 3.2.40 452 | '@vue/compiler-dom': 3.2.40 453 | '@vue/compiler-ssr': 3.2.40 454 | '@vue/reactivity-transform': 3.2.40 455 | '@vue/shared': 3.2.40 456 | estree-walker: 2.0.2 457 | magic-string: 0.25.9 458 | postcss: 8.4.14 459 | source-map: 0.6.1 460 | dev: true 461 | 462 | /@vue/compiler-ssr@3.2.36: 463 | resolution: {integrity: sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw==} 464 | dependencies: 465 | '@vue/compiler-dom': 3.2.36 466 | '@vue/shared': 3.2.36 467 | 468 | /@vue/compiler-ssr@3.2.40: 469 | resolution: {integrity: sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ==} 470 | dependencies: 471 | '@vue/compiler-dom': 3.2.40 472 | '@vue/shared': 3.2.40 473 | dev: true 474 | 475 | /@vue/devtools-api@6.1.4: 476 | resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==} 477 | dev: false 478 | 479 | /@vue/reactivity-transform@3.2.36: 480 | resolution: {integrity: sha512-Jk5o2BhpODC9XTA7o4EL8hSJ4JyrFWErLtClG3NH8wDS7ri9jBDWxI7/549T7JY9uilKsaNM+4pJASLj5dtRwA==} 481 | dependencies: 482 | '@babel/parser': 7.18.4 483 | '@vue/compiler-core': 3.2.36 484 | '@vue/shared': 3.2.36 485 | estree-walker: 2.0.2 486 | magic-string: 0.25.9 487 | 488 | /@vue/reactivity-transform@3.2.40: 489 | resolution: {integrity: sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw==} 490 | dependencies: 491 | '@babel/parser': 7.18.4 492 | '@vue/compiler-core': 3.2.40 493 | '@vue/shared': 3.2.40 494 | estree-walker: 2.0.2 495 | magic-string: 0.25.9 496 | dev: true 497 | 498 | /@vue/reactivity@3.2.36: 499 | resolution: {integrity: sha512-c2qvopo0crh9A4GXi2/2kfGYMxsJW4tVILrqRPydVGZHhq0fnzy6qmclWOhBFckEhmyxmpHpdJtIRYGeKcuhnA==} 500 | dependencies: 501 | '@vue/shared': 3.2.36 502 | 503 | /@vue/reactivity@3.2.40: 504 | resolution: {integrity: sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==} 505 | dependencies: 506 | '@vue/shared': 3.2.40 507 | dev: true 508 | 509 | /@vue/runtime-core@3.2.36: 510 | resolution: {integrity: sha512-PTWBD+Lub+1U3/KhbCExrfxyS14hstLX+cBboxVHaz+kXoiDLNDEYAovPtxeTutbqtClIXtft+wcGdC+FUQ9qQ==} 511 | dependencies: 512 | '@vue/reactivity': 3.2.36 513 | '@vue/shared': 3.2.36 514 | 515 | /@vue/runtime-dom@3.2.36: 516 | resolution: {integrity: sha512-gYPYblm7QXHVuBohqNRRT7Wez0f2Mx2D40rb4fleehrJU9CnkjG0phhcGEZFfGwCmHZRqBCRgbFWE98bPULqkg==} 517 | dependencies: 518 | '@vue/runtime-core': 3.2.36 519 | '@vue/shared': 3.2.36 520 | csstype: 2.6.20 521 | 522 | /@vue/server-renderer@3.2.36(vue@3.2.36): 523 | resolution: {integrity: sha512-uZE0+jfye6yYXWvAQYeHZv+f50sRryvy16uiqzk3jn8hEY8zTjI+rzlmZSGoE915k+W/Ol9XSw6vxOUD8dGkUg==} 524 | peerDependencies: 525 | vue: 3.2.36 526 | dependencies: 527 | '@vue/compiler-ssr': 3.2.36 528 | '@vue/shared': 3.2.36 529 | vue: 3.2.36 530 | 531 | /@vue/shared@3.2.36: 532 | resolution: {integrity: sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==} 533 | 534 | /@vue/shared@3.2.40: 535 | resolution: {integrity: sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==} 536 | dev: true 537 | 538 | /@vueuse/components@8.6.0(vue@3.2.36): 539 | resolution: {integrity: sha512-TkRCknGsBk/Zuap4YC9MLf+xpopdAkHugSVcSVFbciyBwqr3LlWVeJ4HHlHKGIBNOWyMQqDW0WFy47xfAPd3WA==} 540 | dependencies: 541 | '@vueuse/core': 8.6.0(vue@3.2.36) 542 | '@vueuse/shared': 8.6.0(vue@3.2.36) 543 | vue-demi: 0.13.1(vue@3.2.36) 544 | transitivePeerDependencies: 545 | - '@vue/composition-api' 546 | - vue 547 | dev: false 548 | 549 | /@vueuse/core@8.6.0(vue@3.2.36): 550 | resolution: {integrity: sha512-VirzExCm/N+QdrEWT7J4uSrvJ5hquKIAU9alQ37kUvIJk9XxCLxmfRnmekYc1kz2+6BnoyuKYXVmrMV351CB4w==} 551 | peerDependencies: 552 | '@vue/composition-api': ^1.1.0 553 | vue: ^2.6.0 || ^3.2.0 554 | peerDependenciesMeta: 555 | '@vue/composition-api': 556 | optional: true 557 | vue: 558 | optional: true 559 | dependencies: 560 | '@vueuse/metadata': 8.6.0 561 | '@vueuse/shared': 8.6.0(vue@3.2.36) 562 | vue: 3.2.36 563 | vue-demi: 0.13.1(vue@3.2.36) 564 | 565 | /@vueuse/metadata@8.6.0: 566 | resolution: {integrity: sha512-F+CKPvaExsm7QgRr8y+ZNJFwXasn89rs5wth/HeX9lJ1q8XEt+HJ16Q5Sxh4rfG5YSKXrStveVge8TKvPjMjFA==} 567 | 568 | /@vueuse/shared@8.6.0(vue@3.2.36): 569 | resolution: {integrity: sha512-Y/IVywZo7IfEoSSEtCYpkVEmPV7pU35mEIxV7PbD/D3ly18B3mEsBaPbtDkNM/QP3zAZ5mn4nEkOfddX4uwuIA==} 570 | peerDependencies: 571 | '@vue/composition-api': ^1.1.0 572 | vue: ^2.6.0 || ^3.2.0 573 | peerDependenciesMeta: 574 | '@vue/composition-api': 575 | optional: true 576 | vue: 577 | optional: true 578 | dependencies: 579 | vue: 3.2.36 580 | vue-demi: 0.13.1(vue@3.2.36) 581 | 582 | /acorn@8.7.1: 583 | resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} 584 | engines: {node: '>=0.4.0'} 585 | hasBin: true 586 | dev: true 587 | 588 | /anymatch@3.1.2: 589 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 590 | engines: {node: '>= 8'} 591 | dependencies: 592 | normalize-path: 3.0.0 593 | picomatch: 2.3.1 594 | dev: true 595 | 596 | /async-validator@4.1.1: 597 | resolution: {integrity: sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA==} 598 | dev: false 599 | 600 | /balanced-match@1.0.2: 601 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 602 | dev: true 603 | 604 | /binary-extensions@2.2.0: 605 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 606 | engines: {node: '>=8'} 607 | dev: true 608 | 609 | /brace-expansion@2.0.1: 610 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 611 | dependencies: 612 | balanced-match: 1.0.2 613 | dev: true 614 | 615 | /braces@3.0.2: 616 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 617 | engines: {node: '>=8'} 618 | dependencies: 619 | fill-range: 7.0.1 620 | dev: true 621 | 622 | /buffer-from@1.1.2: 623 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 624 | dev: true 625 | 626 | /chokidar@3.5.3: 627 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 628 | engines: {node: '>= 8.10.0'} 629 | dependencies: 630 | anymatch: 3.1.2 631 | braces: 3.0.2 632 | glob-parent: 5.1.2 633 | is-binary-path: 2.1.0 634 | is-glob: 4.0.3 635 | normalize-path: 3.0.0 636 | readdirp: 3.6.0 637 | optionalDependencies: 638 | fsevents: 2.3.2 639 | dev: true 640 | 641 | /csstype@2.6.20: 642 | resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==} 643 | 644 | /dayjs@1.11.2: 645 | resolution: {integrity: sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw==} 646 | dev: false 647 | 648 | /de-indent@1.0.2: 649 | resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} 650 | dev: true 651 | 652 | /debug@4.3.4: 653 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 654 | engines: {node: '>=6.0'} 655 | peerDependencies: 656 | supports-color: '*' 657 | peerDependenciesMeta: 658 | supports-color: 659 | optional: true 660 | dependencies: 661 | ms: 2.1.2 662 | dev: true 663 | 664 | /element-plus@2.2.2(vue@3.2.36): 665 | resolution: {integrity: sha512-yGcj2Ayb0jZO1WbI51tHJ4efhlfWKlBqqGtWbzhq+tcpfaKzJZN+IHRouuFasqn0ZV3tWCDu1jggDR1+9y7XfQ==} 666 | peerDependencies: 667 | vue: ^3.2.0 668 | dependencies: 669 | '@ctrl/tinycolor': 3.4.1 670 | '@element-plus/icons-vue': 1.1.4(vue@3.2.36) 671 | '@floating-ui/dom': 0.5.2 672 | '@popperjs/core': /@sxzz/popperjs-es@2.11.7 673 | '@types/lodash': 4.14.182 674 | '@types/lodash-es': 4.17.6 675 | '@vueuse/core': 8.6.0(vue@3.2.36) 676 | async-validator: 4.1.1 677 | dayjs: 1.11.2 678 | escape-html: 1.0.3 679 | lodash: 4.17.21 680 | lodash-es: 4.17.21 681 | lodash-unified: 1.0.2(@types/lodash-es@4.17.6)(lodash-es@4.17.21)(lodash@4.17.21) 682 | memoize-one: 6.0.0 683 | normalize-wheel-es: 1.1.2 684 | vue: 3.2.36 685 | transitivePeerDependencies: 686 | - '@vue/composition-api' 687 | dev: false 688 | 689 | /esbuild-android-64@0.14.42: 690 | resolution: {integrity: sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A==} 691 | engines: {node: '>=12'} 692 | cpu: [x64] 693 | os: [android] 694 | requiresBuild: true 695 | dev: true 696 | optional: true 697 | 698 | /esbuild-android-64@0.14.48: 699 | resolution: {integrity: sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==} 700 | engines: {node: '>=12'} 701 | cpu: [x64] 702 | os: [android] 703 | requiresBuild: true 704 | dev: true 705 | optional: true 706 | 707 | /esbuild-android-arm64@0.14.42: 708 | resolution: {integrity: sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg==} 709 | engines: {node: '>=12'} 710 | cpu: [arm64] 711 | os: [android] 712 | requiresBuild: true 713 | dev: true 714 | optional: true 715 | 716 | /esbuild-android-arm64@0.14.48: 717 | resolution: {integrity: sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==} 718 | engines: {node: '>=12'} 719 | cpu: [arm64] 720 | os: [android] 721 | requiresBuild: true 722 | dev: true 723 | optional: true 724 | 725 | /esbuild-darwin-64@0.14.42: 726 | resolution: {integrity: sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA==} 727 | engines: {node: '>=12'} 728 | cpu: [x64] 729 | os: [darwin] 730 | requiresBuild: true 731 | dev: true 732 | optional: true 733 | 734 | /esbuild-darwin-64@0.14.48: 735 | resolution: {integrity: sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==} 736 | engines: {node: '>=12'} 737 | cpu: [x64] 738 | os: [darwin] 739 | requiresBuild: true 740 | dev: true 741 | optional: true 742 | 743 | /esbuild-darwin-arm64@0.14.42: 744 | resolution: {integrity: sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA==} 745 | engines: {node: '>=12'} 746 | cpu: [arm64] 747 | os: [darwin] 748 | requiresBuild: true 749 | dev: true 750 | optional: true 751 | 752 | /esbuild-darwin-arm64@0.14.48: 753 | resolution: {integrity: sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==} 754 | engines: {node: '>=12'} 755 | cpu: [arm64] 756 | os: [darwin] 757 | requiresBuild: true 758 | dev: true 759 | optional: true 760 | 761 | /esbuild-freebsd-64@0.14.42: 762 | resolution: {integrity: sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw==} 763 | engines: {node: '>=12'} 764 | cpu: [x64] 765 | os: [freebsd] 766 | requiresBuild: true 767 | dev: true 768 | optional: true 769 | 770 | /esbuild-freebsd-64@0.14.48: 771 | resolution: {integrity: sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==} 772 | engines: {node: '>=12'} 773 | cpu: [x64] 774 | os: [freebsd] 775 | requiresBuild: true 776 | dev: true 777 | optional: true 778 | 779 | /esbuild-freebsd-arm64@0.14.42: 780 | resolution: {integrity: sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA==} 781 | engines: {node: '>=12'} 782 | cpu: [arm64] 783 | os: [freebsd] 784 | requiresBuild: true 785 | dev: true 786 | optional: true 787 | 788 | /esbuild-freebsd-arm64@0.14.48: 789 | resolution: {integrity: sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==} 790 | engines: {node: '>=12'} 791 | cpu: [arm64] 792 | os: [freebsd] 793 | requiresBuild: true 794 | dev: true 795 | optional: true 796 | 797 | /esbuild-linux-32@0.14.42: 798 | resolution: {integrity: sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg==} 799 | engines: {node: '>=12'} 800 | cpu: [ia32] 801 | os: [linux] 802 | requiresBuild: true 803 | dev: true 804 | optional: true 805 | 806 | /esbuild-linux-32@0.14.48: 807 | resolution: {integrity: sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==} 808 | engines: {node: '>=12'} 809 | cpu: [ia32] 810 | os: [linux] 811 | requiresBuild: true 812 | dev: true 813 | optional: true 814 | 815 | /esbuild-linux-64@0.14.42: 816 | resolution: {integrity: sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA==} 817 | engines: {node: '>=12'} 818 | cpu: [x64] 819 | os: [linux] 820 | requiresBuild: true 821 | dev: true 822 | optional: true 823 | 824 | /esbuild-linux-64@0.14.48: 825 | resolution: {integrity: sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==} 826 | engines: {node: '>=12'} 827 | cpu: [x64] 828 | os: [linux] 829 | requiresBuild: true 830 | dev: true 831 | optional: true 832 | 833 | /esbuild-linux-arm64@0.14.42: 834 | resolution: {integrity: sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA==} 835 | engines: {node: '>=12'} 836 | cpu: [arm64] 837 | os: [linux] 838 | requiresBuild: true 839 | dev: true 840 | optional: true 841 | 842 | /esbuild-linux-arm64@0.14.48: 843 | resolution: {integrity: sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==} 844 | engines: {node: '>=12'} 845 | cpu: [arm64] 846 | os: [linux] 847 | requiresBuild: true 848 | dev: true 849 | optional: true 850 | 851 | /esbuild-linux-arm@0.14.42: 852 | resolution: {integrity: sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg==} 853 | engines: {node: '>=12'} 854 | cpu: [arm] 855 | os: [linux] 856 | requiresBuild: true 857 | dev: true 858 | optional: true 859 | 860 | /esbuild-linux-arm@0.14.48: 861 | resolution: {integrity: sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==} 862 | engines: {node: '>=12'} 863 | cpu: [arm] 864 | os: [linux] 865 | requiresBuild: true 866 | dev: true 867 | optional: true 868 | 869 | /esbuild-linux-mips64le@0.14.42: 870 | resolution: {integrity: sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg==} 871 | engines: {node: '>=12'} 872 | cpu: [mips64el] 873 | os: [linux] 874 | requiresBuild: true 875 | dev: true 876 | optional: true 877 | 878 | /esbuild-linux-mips64le@0.14.48: 879 | resolution: {integrity: sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==} 880 | engines: {node: '>=12'} 881 | cpu: [mips64el] 882 | os: [linux] 883 | requiresBuild: true 884 | dev: true 885 | optional: true 886 | 887 | /esbuild-linux-ppc64le@0.14.42: 888 | resolution: {integrity: sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg==} 889 | engines: {node: '>=12'} 890 | cpu: [ppc64] 891 | os: [linux] 892 | requiresBuild: true 893 | dev: true 894 | optional: true 895 | 896 | /esbuild-linux-ppc64le@0.14.48: 897 | resolution: {integrity: sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==} 898 | engines: {node: '>=12'} 899 | cpu: [ppc64] 900 | os: [linux] 901 | requiresBuild: true 902 | dev: true 903 | optional: true 904 | 905 | /esbuild-linux-riscv64@0.14.42: 906 | resolution: {integrity: sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ==} 907 | engines: {node: '>=12'} 908 | cpu: [riscv64] 909 | os: [linux] 910 | requiresBuild: true 911 | dev: true 912 | optional: true 913 | 914 | /esbuild-linux-riscv64@0.14.48: 915 | resolution: {integrity: sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==} 916 | engines: {node: '>=12'} 917 | cpu: [riscv64] 918 | os: [linux] 919 | requiresBuild: true 920 | dev: true 921 | optional: true 922 | 923 | /esbuild-linux-s390x@0.14.42: 924 | resolution: {integrity: sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ==} 925 | engines: {node: '>=12'} 926 | cpu: [s390x] 927 | os: [linux] 928 | requiresBuild: true 929 | dev: true 930 | optional: true 931 | 932 | /esbuild-linux-s390x@0.14.48: 933 | resolution: {integrity: sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==} 934 | engines: {node: '>=12'} 935 | cpu: [s390x] 936 | os: [linux] 937 | requiresBuild: true 938 | dev: true 939 | optional: true 940 | 941 | /esbuild-netbsd-64@0.14.42: 942 | resolution: {integrity: sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw==} 943 | engines: {node: '>=12'} 944 | cpu: [x64] 945 | os: [netbsd] 946 | requiresBuild: true 947 | dev: true 948 | optional: true 949 | 950 | /esbuild-netbsd-64@0.14.48: 951 | resolution: {integrity: sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==} 952 | engines: {node: '>=12'} 953 | cpu: [x64] 954 | os: [netbsd] 955 | requiresBuild: true 956 | dev: true 957 | optional: true 958 | 959 | /esbuild-openbsd-64@0.14.42: 960 | resolution: {integrity: sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA==} 961 | engines: {node: '>=12'} 962 | cpu: [x64] 963 | os: [openbsd] 964 | requiresBuild: true 965 | dev: true 966 | optional: true 967 | 968 | /esbuild-openbsd-64@0.14.48: 969 | resolution: {integrity: sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==} 970 | engines: {node: '>=12'} 971 | cpu: [x64] 972 | os: [openbsd] 973 | requiresBuild: true 974 | dev: true 975 | optional: true 976 | 977 | /esbuild-sunos-64@0.14.42: 978 | resolution: {integrity: sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ==} 979 | engines: {node: '>=12'} 980 | cpu: [x64] 981 | os: [sunos] 982 | requiresBuild: true 983 | dev: true 984 | optional: true 985 | 986 | /esbuild-sunos-64@0.14.48: 987 | resolution: {integrity: sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==} 988 | engines: {node: '>=12'} 989 | cpu: [x64] 990 | os: [sunos] 991 | requiresBuild: true 992 | dev: true 993 | optional: true 994 | 995 | /esbuild-windows-32@0.14.42: 996 | resolution: {integrity: sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g==} 997 | engines: {node: '>=12'} 998 | cpu: [ia32] 999 | os: [win32] 1000 | requiresBuild: true 1001 | dev: true 1002 | optional: true 1003 | 1004 | /esbuild-windows-32@0.14.48: 1005 | resolution: {integrity: sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==} 1006 | engines: {node: '>=12'} 1007 | cpu: [ia32] 1008 | os: [win32] 1009 | requiresBuild: true 1010 | dev: true 1011 | optional: true 1012 | 1013 | /esbuild-windows-64@0.14.42: 1014 | resolution: {integrity: sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA==} 1015 | engines: {node: '>=12'} 1016 | cpu: [x64] 1017 | os: [win32] 1018 | requiresBuild: true 1019 | dev: true 1020 | optional: true 1021 | 1022 | /esbuild-windows-64@0.14.48: 1023 | resolution: {integrity: sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==} 1024 | engines: {node: '>=12'} 1025 | cpu: [x64] 1026 | os: [win32] 1027 | requiresBuild: true 1028 | dev: true 1029 | optional: true 1030 | 1031 | /esbuild-windows-arm64@0.14.42: 1032 | resolution: {integrity: sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw==} 1033 | engines: {node: '>=12'} 1034 | cpu: [arm64] 1035 | os: [win32] 1036 | requiresBuild: true 1037 | dev: true 1038 | optional: true 1039 | 1040 | /esbuild-windows-arm64@0.14.48: 1041 | resolution: {integrity: sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==} 1042 | engines: {node: '>=12'} 1043 | cpu: [arm64] 1044 | os: [win32] 1045 | requiresBuild: true 1046 | dev: true 1047 | optional: true 1048 | 1049 | /esbuild@0.14.42: 1050 | resolution: {integrity: sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw==} 1051 | engines: {node: '>=12'} 1052 | hasBin: true 1053 | requiresBuild: true 1054 | optionalDependencies: 1055 | esbuild-android-64: 0.14.42 1056 | esbuild-android-arm64: 0.14.42 1057 | esbuild-darwin-64: 0.14.42 1058 | esbuild-darwin-arm64: 0.14.42 1059 | esbuild-freebsd-64: 0.14.42 1060 | esbuild-freebsd-arm64: 0.14.42 1061 | esbuild-linux-32: 0.14.42 1062 | esbuild-linux-64: 0.14.42 1063 | esbuild-linux-arm: 0.14.42 1064 | esbuild-linux-arm64: 0.14.42 1065 | esbuild-linux-mips64le: 0.14.42 1066 | esbuild-linux-ppc64le: 0.14.42 1067 | esbuild-linux-riscv64: 0.14.42 1068 | esbuild-linux-s390x: 0.14.42 1069 | esbuild-netbsd-64: 0.14.42 1070 | esbuild-openbsd-64: 0.14.42 1071 | esbuild-sunos-64: 0.14.42 1072 | esbuild-windows-32: 0.14.42 1073 | esbuild-windows-64: 0.14.42 1074 | esbuild-windows-arm64: 0.14.42 1075 | dev: true 1076 | 1077 | /esbuild@0.14.48: 1078 | resolution: {integrity: sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==} 1079 | engines: {node: '>=12'} 1080 | hasBin: true 1081 | requiresBuild: true 1082 | optionalDependencies: 1083 | esbuild-android-64: 0.14.48 1084 | esbuild-android-arm64: 0.14.48 1085 | esbuild-darwin-64: 0.14.48 1086 | esbuild-darwin-arm64: 0.14.48 1087 | esbuild-freebsd-64: 0.14.48 1088 | esbuild-freebsd-arm64: 0.14.48 1089 | esbuild-linux-32: 0.14.48 1090 | esbuild-linux-64: 0.14.48 1091 | esbuild-linux-arm: 0.14.48 1092 | esbuild-linux-arm64: 0.14.48 1093 | esbuild-linux-mips64le: 0.14.48 1094 | esbuild-linux-ppc64le: 0.14.48 1095 | esbuild-linux-riscv64: 0.14.48 1096 | esbuild-linux-s390x: 0.14.48 1097 | esbuild-netbsd-64: 0.14.48 1098 | esbuild-openbsd-64: 0.14.48 1099 | esbuild-sunos-64: 0.14.48 1100 | esbuild-windows-32: 0.14.48 1101 | esbuild-windows-64: 0.14.48 1102 | esbuild-windows-arm64: 0.14.48 1103 | dev: true 1104 | 1105 | /escape-html@1.0.3: 1106 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1107 | dev: false 1108 | 1109 | /escape-string-regexp@5.0.0: 1110 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1111 | engines: {node: '>=12'} 1112 | dev: true 1113 | 1114 | /esno@0.16.3: 1115 | resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} 1116 | hasBin: true 1117 | dependencies: 1118 | tsx: 3.6.0 1119 | dev: true 1120 | 1121 | /estree-walker@2.0.2: 1122 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1123 | 1124 | /fast-glob@3.2.11: 1125 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 1126 | engines: {node: '>=8.6.0'} 1127 | dependencies: 1128 | '@nodelib/fs.stat': 2.0.5 1129 | '@nodelib/fs.walk': 1.2.8 1130 | glob-parent: 5.1.2 1131 | merge2: 1.4.1 1132 | micromatch: 4.0.5 1133 | dev: true 1134 | 1135 | /fastq@1.13.0: 1136 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1137 | dependencies: 1138 | reusify: 1.0.4 1139 | dev: true 1140 | 1141 | /fill-range@7.0.1: 1142 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1143 | engines: {node: '>=8'} 1144 | dependencies: 1145 | to-regex-range: 5.0.1 1146 | dev: true 1147 | 1148 | /fsevents@2.3.2: 1149 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1150 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1151 | os: [darwin] 1152 | requiresBuild: true 1153 | dev: true 1154 | optional: true 1155 | 1156 | /function-bind@1.1.1: 1157 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1158 | dev: true 1159 | 1160 | /get-tsconfig@4.1.0: 1161 | resolution: {integrity: sha512-bhshxJhpfmeQ8x4fAvDqJV2VfGp5TfHdLpmBpNZZhMoVyfIrOippBW4mayC3DT9Sxuhcyl56Efw61qL28hG4EQ==} 1162 | dev: true 1163 | 1164 | /glob-parent@5.1.2: 1165 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1166 | engines: {node: '>= 6'} 1167 | dependencies: 1168 | is-glob: 4.0.3 1169 | dev: true 1170 | 1171 | /has@1.0.3: 1172 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1173 | engines: {node: '>= 0.4.0'} 1174 | dependencies: 1175 | function-bind: 1.1.1 1176 | dev: true 1177 | 1178 | /he@1.2.0: 1179 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 1180 | hasBin: true 1181 | dev: true 1182 | 1183 | /immutable@4.1.0: 1184 | resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==} 1185 | dev: true 1186 | 1187 | /is-binary-path@2.1.0: 1188 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1189 | engines: {node: '>=8'} 1190 | dependencies: 1191 | binary-extensions: 2.2.0 1192 | dev: true 1193 | 1194 | /is-core-module@2.9.0: 1195 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 1196 | dependencies: 1197 | has: 1.0.3 1198 | dev: true 1199 | 1200 | /is-extglob@2.1.1: 1201 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1202 | engines: {node: '>=0.10.0'} 1203 | dev: true 1204 | 1205 | /is-glob@4.0.3: 1206 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1207 | engines: {node: '>=0.10.0'} 1208 | dependencies: 1209 | is-extglob: 2.1.1 1210 | dev: true 1211 | 1212 | /is-number@7.0.0: 1213 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1214 | engines: {node: '>=0.12.0'} 1215 | dev: true 1216 | 1217 | /jsonc-parser@3.0.0: 1218 | resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} 1219 | dev: true 1220 | 1221 | /local-pkg@0.4.1: 1222 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} 1223 | engines: {node: '>=14'} 1224 | dev: true 1225 | 1226 | /lodash-es@4.17.21: 1227 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 1228 | dev: false 1229 | 1230 | /lodash-unified@1.0.2(@types/lodash-es@4.17.6)(lodash-es@4.17.21)(lodash@4.17.21): 1231 | resolution: {integrity: sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==} 1232 | peerDependencies: 1233 | '@types/lodash-es': '*' 1234 | lodash: '*' 1235 | lodash-es: '*' 1236 | dependencies: 1237 | '@types/lodash-es': 4.17.6 1238 | lodash: 4.17.21 1239 | lodash-es: 4.17.21 1240 | dev: false 1241 | 1242 | /lodash@4.17.21: 1243 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1244 | dev: false 1245 | 1246 | /magic-string@0.25.9: 1247 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1248 | dependencies: 1249 | sourcemap-codec: 1.4.8 1250 | 1251 | /magic-string@0.26.2: 1252 | resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} 1253 | engines: {node: '>=12'} 1254 | dependencies: 1255 | sourcemap-codec: 1.4.8 1256 | dev: true 1257 | 1258 | /memoize-one@6.0.0: 1259 | resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} 1260 | dev: false 1261 | 1262 | /merge2@1.4.1: 1263 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1264 | engines: {node: '>= 8'} 1265 | dev: true 1266 | 1267 | /micromatch@4.0.5: 1268 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1269 | engines: {node: '>=8.6'} 1270 | dependencies: 1271 | braces: 3.0.2 1272 | picomatch: 2.3.1 1273 | dev: true 1274 | 1275 | /minimatch@5.1.0: 1276 | resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} 1277 | engines: {node: '>=10'} 1278 | dependencies: 1279 | brace-expansion: 2.0.1 1280 | dev: true 1281 | 1282 | /mlly@0.5.2: 1283 | resolution: {integrity: sha512-4GTELSSErv6ZZJYU98fZNuIBJcXSz+ktHdRrCYEqU1m6ZlebOCG0jwZ+IEd9vOrbpYsVBBMC5OTrEyLnKRcauQ==} 1284 | dependencies: 1285 | pathe: 0.2.0 1286 | pkg-types: 0.3.3 1287 | dev: true 1288 | 1289 | /mlly@0.5.4: 1290 | resolution: {integrity: sha512-gFlsLWCjVwu/LM/ZfYUkmnbBoz7eyBIMUwVQYDqhd8IvtNFDeZ95uwAyxHE2Xx7tQwePQaCo4fECZ9MWFEUTgQ==} 1291 | dependencies: 1292 | pathe: 0.3.2 1293 | pkg-types: 0.3.3 1294 | dev: true 1295 | 1296 | /ms@2.1.2: 1297 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1298 | dev: true 1299 | 1300 | /muggle-string@0.1.0: 1301 | resolution: {integrity: sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==} 1302 | dev: true 1303 | 1304 | /nanoid@3.3.4: 1305 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1306 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1307 | hasBin: true 1308 | 1309 | /normalize-path@3.0.0: 1310 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1311 | engines: {node: '>=0.10.0'} 1312 | dev: true 1313 | 1314 | /normalize-wheel-es@1.1.2: 1315 | resolution: {integrity: sha512-scX83plWJXYH1J4+BhAuIHadROzxX0UBF3+HuZNY2Ks8BciE7tSTQ+5JhTsvzjaO0/EJdm4JBGrfObKxFf3Png==} 1316 | dev: false 1317 | 1318 | /path-parse@1.0.7: 1319 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1320 | dev: true 1321 | 1322 | /pathe@0.2.0: 1323 | resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} 1324 | dev: true 1325 | 1326 | /pathe@0.3.0: 1327 | resolution: {integrity: sha512-3vUjp552BJzCw9vqKsO5sttHkbYqqsZtH0x1PNtItgqx8BXEXzoY1SYRKcL6BTyVh4lGJGLj0tM42elUDMvcYA==} 1328 | dev: true 1329 | 1330 | /pathe@0.3.2: 1331 | resolution: {integrity: sha512-qhnmX0TOqlCvdWWTkoM83wh5J8fZ2yhbDEc9MlsnAEtEc+JCwxUKEwmd6pkY9hRe6JR1Uecbc14VcAKX2yFSTA==} 1332 | dev: true 1333 | 1334 | /picocolors@1.0.0: 1335 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1336 | 1337 | /picomatch@2.3.1: 1338 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1339 | engines: {node: '>=8.6'} 1340 | dev: true 1341 | 1342 | /pkg-types@0.3.3: 1343 | resolution: {integrity: sha512-6AJcCMnjUQPQv/Wk960w0TOmjhdjbeaQJoSKWRQv9N3rgkessCu6J0Ydsog/nw1MbpnxHuPzYbfOn2KmlZO1FA==} 1344 | dependencies: 1345 | jsonc-parser: 3.0.0 1346 | mlly: 0.5.4 1347 | pathe: 0.3.2 1348 | dev: true 1349 | 1350 | /postcss@8.4.14: 1351 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 1352 | engines: {node: ^10 || ^12 || >=14} 1353 | dependencies: 1354 | nanoid: 3.3.4 1355 | picocolors: 1.0.0 1356 | source-map-js: 1.0.2 1357 | 1358 | /queue-microtask@1.2.3: 1359 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1360 | dev: true 1361 | 1362 | /readdirp@3.6.0: 1363 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1364 | engines: {node: '>=8.10.0'} 1365 | dependencies: 1366 | picomatch: 2.3.1 1367 | dev: true 1368 | 1369 | /resolve@1.22.0: 1370 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 1371 | hasBin: true 1372 | dependencies: 1373 | is-core-module: 2.9.0 1374 | path-parse: 1.0.7 1375 | supports-preserve-symlinks-flag: 1.0.0 1376 | dev: true 1377 | 1378 | /reusify@1.0.4: 1379 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1380 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1381 | dev: true 1382 | 1383 | /rollup@2.75.4: 1384 | resolution: {integrity: sha512-JgZiJMJkKImMZJ8ZY1zU80Z2bA/TvrL/7D9qcBCrfl2bP+HUaIw0QHUroB4E3gBpFl6CRFM1YxGbuYGtdAswbQ==} 1385 | engines: {node: '>=10.0.0'} 1386 | hasBin: true 1387 | optionalDependencies: 1388 | fsevents: 2.3.2 1389 | dev: true 1390 | 1391 | /run-parallel@1.2.0: 1392 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1393 | dependencies: 1394 | queue-microtask: 1.2.3 1395 | dev: true 1396 | 1397 | /sass@1.52.1: 1398 | resolution: {integrity: sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==} 1399 | engines: {node: '>=12.0.0'} 1400 | hasBin: true 1401 | dependencies: 1402 | chokidar: 3.5.3 1403 | immutable: 4.1.0 1404 | source-map-js: 1.0.2 1405 | dev: true 1406 | 1407 | /scule@0.2.1: 1408 | resolution: {integrity: sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==} 1409 | dev: true 1410 | 1411 | /source-map-js@1.0.2: 1412 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1413 | engines: {node: '>=0.10.0'} 1414 | 1415 | /source-map-support@0.5.21: 1416 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1417 | dependencies: 1418 | buffer-from: 1.1.2 1419 | source-map: 0.6.1 1420 | dev: true 1421 | 1422 | /source-map@0.6.1: 1423 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1424 | engines: {node: '>=0.10.0'} 1425 | 1426 | /sourcemap-codec@1.4.8: 1427 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1428 | 1429 | /strip-literal@0.3.0: 1430 | resolution: {integrity: sha512-J+lfm3Pw5nzURj2B8acyvUSBqs3JbjM8WAfrmeH3qcn32+ew6kFwbZFV9+X8k9UOIAkQw9WPSzFZy3083c7l5Q==} 1431 | dependencies: 1432 | acorn: 8.7.1 1433 | dev: true 1434 | 1435 | /supports-preserve-symlinks-flag@1.0.0: 1436 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1437 | engines: {node: '>= 0.4'} 1438 | dev: true 1439 | 1440 | /to-fast-properties@2.0.0: 1441 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 1442 | engines: {node: '>=4'} 1443 | 1444 | /to-regex-range@5.0.1: 1445 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1446 | engines: {node: '>=8.0'} 1447 | dependencies: 1448 | is-number: 7.0.0 1449 | dev: true 1450 | 1451 | /tsx@3.6.0: 1452 | resolution: {integrity: sha512-XzqSxPmyJnI7ZtEX/CLE/CSDkqbL7dK4jwtJRIZpV0EhCxWqtb1OqJPlUc4CVS3/MFdpt8ZxLpvPFohWRTHbzw==} 1453 | hasBin: true 1454 | dependencies: 1455 | '@esbuild-kit/cjs-loader': 2.2.1 1456 | '@esbuild-kit/core-utils': 2.0.2 1457 | '@esbuild-kit/esm-loader': 2.3.1 1458 | optionalDependencies: 1459 | fsevents: 2.3.2 1460 | dev: true 1461 | 1462 | /type-fest@2.12.2: 1463 | resolution: {integrity: sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ==} 1464 | engines: {node: '>=12.20'} 1465 | dev: false 1466 | 1467 | /typescript@4.7.3: 1468 | resolution: {integrity: sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==} 1469 | engines: {node: '>=4.2.0'} 1470 | hasBin: true 1471 | dev: true 1472 | 1473 | /unimport@0.2.6(vite@2.9.9): 1474 | resolution: {integrity: sha512-4cOokUIEvaXAfVCHH87vR+wdKI1KDzxQREW9oi0r6J68TPFEeGLHHc2pdyL0uNDUMd2aLxUikhWARNfoQKqC4Q==} 1475 | dependencies: 1476 | '@rollup/pluginutils': 4.2.1 1477 | escape-string-regexp: 5.0.0 1478 | fast-glob: 3.2.11 1479 | local-pkg: 0.4.1 1480 | magic-string: 0.26.2 1481 | mlly: 0.5.2 1482 | pathe: 0.3.0 1483 | scule: 0.2.1 1484 | strip-literal: 0.3.0 1485 | unplugin: 0.6.3(vite@2.9.9) 1486 | transitivePeerDependencies: 1487 | - esbuild 1488 | - rollup 1489 | - vite 1490 | - webpack 1491 | dev: true 1492 | 1493 | /unplugin-auto-import@0.8.6(@vueuse/core@8.6.0)(vite@2.9.9): 1494 | resolution: {integrity: sha512-QRYwCmSzxZKHu8LQhUpTzF6t1YxYuo4b47e3cmE1kWsF4SQDO22Ysrj5/2BRY3jbYbiTZqOLopymRpov8SAYZQ==} 1495 | engines: {node: '>=14'} 1496 | peerDependencies: 1497 | '@vueuse/core': '*' 1498 | peerDependenciesMeta: 1499 | '@vueuse/core': 1500 | optional: true 1501 | dependencies: 1502 | '@antfu/utils': 0.5.2 1503 | '@rollup/pluginutils': 4.2.1 1504 | '@vueuse/core': 8.6.0(vue@3.2.36) 1505 | local-pkg: 0.4.1 1506 | magic-string: 0.26.2 1507 | unimport: 0.2.6(vite@2.9.9) 1508 | unplugin: 0.6.3(vite@2.9.9) 1509 | transitivePeerDependencies: 1510 | - esbuild 1511 | - rollup 1512 | - vite 1513 | - webpack 1514 | dev: true 1515 | 1516 | /unplugin-vue-components@0.19.6(vite@2.9.9)(vue@3.2.36): 1517 | resolution: {integrity: sha512-APvrJ9Hpid1MLT0G4PWerMJgARhNw6dzz0pcCwCxaO2DR7VyvDacMqjOQNC6ukq7FSw3wzD8VH+9i3EFXwkGmw==} 1518 | engines: {node: '>=14'} 1519 | peerDependencies: 1520 | '@babel/parser': ^7.15.8 1521 | '@babel/traverse': ^7.15.4 1522 | vue: 2 || 3 1523 | peerDependenciesMeta: 1524 | '@babel/parser': 1525 | optional: true 1526 | '@babel/traverse': 1527 | optional: true 1528 | dependencies: 1529 | '@antfu/utils': 0.5.2 1530 | '@rollup/pluginutils': 4.2.1 1531 | chokidar: 3.5.3 1532 | debug: 4.3.4 1533 | fast-glob: 3.2.11 1534 | local-pkg: 0.4.1 1535 | magic-string: 0.26.2 1536 | minimatch: 5.1.0 1537 | resolve: 1.22.0 1538 | unplugin: 0.6.3(vite@2.9.9) 1539 | vue: 3.2.36 1540 | transitivePeerDependencies: 1541 | - esbuild 1542 | - rollup 1543 | - supports-color 1544 | - vite 1545 | - webpack 1546 | dev: true 1547 | 1548 | /unplugin@0.6.3(vite@2.9.9): 1549 | resolution: {integrity: sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A==} 1550 | peerDependencies: 1551 | esbuild: '>=0.13' 1552 | rollup: ^2.50.0 1553 | vite: ^2.3.0 1554 | webpack: 4 || 5 1555 | peerDependenciesMeta: 1556 | esbuild: 1557 | optional: true 1558 | rollup: 1559 | optional: true 1560 | vite: 1561 | optional: true 1562 | webpack: 1563 | optional: true 1564 | dependencies: 1565 | chokidar: 3.5.3 1566 | vite: 2.9.9(sass@1.52.1) 1567 | webpack-sources: 3.2.3 1568 | webpack-virtual-modules: 0.4.3 1569 | dev: true 1570 | 1571 | /vite@2.9.9(sass@1.52.1): 1572 | resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==} 1573 | engines: {node: '>=12.2.0'} 1574 | hasBin: true 1575 | peerDependencies: 1576 | less: '*' 1577 | sass: '*' 1578 | stylus: '*' 1579 | peerDependenciesMeta: 1580 | less: 1581 | optional: true 1582 | sass: 1583 | optional: true 1584 | stylus: 1585 | optional: true 1586 | dependencies: 1587 | esbuild: 0.14.42 1588 | postcss: 8.4.14 1589 | resolve: 1.22.0 1590 | rollup: 2.75.4 1591 | sass: 1.52.1 1592 | optionalDependencies: 1593 | fsevents: 2.3.2 1594 | dev: true 1595 | 1596 | /vue-demi@0.13.1(vue@3.2.36): 1597 | resolution: {integrity: sha512-xmkJ56koG3ptpLnpgmIzk9/4nFf4CqduSJbUM0OdPoU87NwRuZ6x49OLhjSa/fC15fV+5CbEnrxU4oyE022svg==} 1598 | engines: {node: '>=12'} 1599 | hasBin: true 1600 | requiresBuild: true 1601 | peerDependencies: 1602 | '@vue/composition-api': ^1.0.0-rc.1 1603 | vue: ^3.0.0-0 || ^2.6.0 1604 | peerDependenciesMeta: 1605 | '@vue/composition-api': 1606 | optional: true 1607 | dependencies: 1608 | vue: 3.2.36 1609 | 1610 | /vue-i18n@9.1.10(vue@3.2.36): 1611 | resolution: {integrity: sha512-jpr7gV5KPk4n+sSPdpZT8Qx3XzTcNDWffRlHV/cT2NUyEf+sEgTTmLvnBAibjOFJ0zsUyZlVTAWH5DDnYep+1g==} 1612 | engines: {node: '>= 10'} 1613 | peerDependencies: 1614 | vue: ^3.0.0 1615 | dependencies: 1616 | '@intlify/core-base': 9.1.10 1617 | '@intlify/shared': 9.1.10 1618 | '@intlify/vue-devtools': 9.1.10 1619 | '@vue/devtools-api': 6.1.4 1620 | vue: 3.2.36 1621 | dev: false 1622 | 1623 | /vue-template-compiler@2.7.11: 1624 | resolution: {integrity: sha512-17QnXkFiBLOH3gGCA3nWAWpmdlTjOWLyP/2eg5ptgY1OvDBuIDGOW9FZ7ZSKmF1UFyf56mLR3/E1SlCTml1LWQ==} 1625 | dependencies: 1626 | de-indent: 1.0.2 1627 | he: 1.2.0 1628 | dev: true 1629 | 1630 | /vue-tsc@1.0.3(typescript@4.7.3): 1631 | resolution: {integrity: sha512-Si6PANEATxaGhJ51bUnRbT+5MIYwvjdPBwuCKSky+YD5oWDhE4uMqfpOPnP2oSMB52trtU0faIRVcP4YSF3LJA==} 1632 | hasBin: true 1633 | peerDependencies: 1634 | typescript: '*' 1635 | dependencies: 1636 | '@volar/vue-language-core': 1.0.3 1637 | '@volar/vue-typescript': 1.0.3 1638 | typescript: 4.7.3 1639 | dev: true 1640 | 1641 | /vue@3.2.36: 1642 | resolution: {integrity: sha512-5yTXmrE6gW8IQgttzHW5bfBiFA6mx35ZXHjGLDmKYzW6MMmYvCwuKybANRepwkMYeXw2v1buGg3/lPICY5YlZw==} 1643 | dependencies: 1644 | '@vue/compiler-dom': 3.2.36 1645 | '@vue/compiler-sfc': 3.2.36 1646 | '@vue/runtime-dom': 3.2.36 1647 | '@vue/server-renderer': 3.2.36(vue@3.2.36) 1648 | '@vue/shared': 3.2.36 1649 | 1650 | /webpack-sources@3.2.3: 1651 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} 1652 | engines: {node: '>=10.13.0'} 1653 | dev: true 1654 | 1655 | /webpack-virtual-modules@0.4.3: 1656 | resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==} 1657 | dev: true 1658 | --------------------------------------------------------------------------------