From 1e1718caee0ee29e4013ccc8bfed1aafd55f0ea9 Mon Sep 17 00:00:00 2001 From: yanweidong Date: Sat, 25 Jul 2026 19:51:12 +0800 Subject: [PATCH] refactor(desktop): consolidate app on docked client --- apps/desktop/README.md | 27 +- apps/{mini => desktop}/index.html | 2 +- apps/desktop/package-lock.json | 1810 ++++++- apps/desktop/package.json | 32 +- .../public/senlinai-icon.svg | 0 apps/desktop/scripts/build-all.mjs | 44 - .../scripts/visual-check.mjs | 0 apps/desktop/src-tauri/Cargo.lock | 669 +-- apps/desktop/src-tauri/Cargo.toml | 7 +- apps/desktop/src-tauri/src/lib.rs | 46 +- apps/desktop/src-tauri/src/main.rs | 2 +- apps/desktop/src-tauri/src/windows_appbar.rs | 54 +- apps/desktop/src-tauri/tauri.conf.json | 27 +- apps/{mini => desktop}/src/App.tsx | 6 +- apps/{mini => desktop}/src/api.ts | 0 apps/{mini => desktop}/src/main.tsx | 0 apps/{mini => desktop}/src/styles.css | 0 apps/{mini => desktop}/src/vite-env.d.ts | 0 apps/{mini => desktop}/tsconfig.app.json | 0 apps/{mini => desktop}/tsconfig.json | 0 apps/{mini => desktop}/tsconfig.node.json | 0 apps/{mini => desktop}/vite.config.ts | 0 apps/mini/README.md | 13 - apps/mini/package-lock.json | 2047 -------- apps/mini/package.json | 32 - apps/mini/src-tauri/Cargo.lock | 4395 ----------------- apps/mini/src-tauri/Cargo.toml | 26 - apps/mini/src-tauri/build.rs | 3 - apps/mini/src-tauri/icons/128x128.png | Bin 3377 -> 0 bytes apps/mini/src-tauri/icons/128x128@2x.png | Bin 6933 -> 0 bytes apps/mini/src-tauri/icons/32x32.png | Bin 926 -> 0 bytes apps/mini/src-tauri/icons/icon.icns | Bin 82438 -> 0 bytes apps/mini/src-tauri/icons/icon.ico | Bin 13686 -> 0 bytes apps/mini/src-tauri/src/lib.rs | 70 - apps/mini/src-tauri/src/main.rs | 3 - apps/mini/src-tauri/src/windows_appbar.rs | 178 - apps/mini/src-tauri/tauri.conf.json | 42 - scripts/build-desktop.sh | 2 +- 38 files changed, 2024 insertions(+), 7513 deletions(-) rename apps/{mini => desktop}/index.html (91%) rename apps/{mini => desktop}/public/senlinai-icon.svg (100%) delete mode 100644 apps/desktop/scripts/build-all.mjs rename apps/{mini => desktop}/scripts/visual-check.mjs (100%) rename apps/{mini => desktop}/src/App.tsx (98%) rename apps/{mini => desktop}/src/api.ts (100%) rename apps/{mini => desktop}/src/main.tsx (100%) rename apps/{mini => desktop}/src/styles.css (100%) rename apps/{mini => desktop}/src/vite-env.d.ts (100%) rename apps/{mini => desktop}/tsconfig.app.json (100%) rename apps/{mini => desktop}/tsconfig.json (100%) rename apps/{mini => desktop}/tsconfig.node.json (100%) rename apps/{mini => desktop}/vite.config.ts (100%) delete mode 100644 apps/mini/README.md delete mode 100644 apps/mini/package-lock.json delete mode 100644 apps/mini/package.json delete mode 100644 apps/mini/src-tauri/Cargo.lock delete mode 100644 apps/mini/src-tauri/Cargo.toml delete mode 100644 apps/mini/src-tauri/build.rs delete mode 100644 apps/mini/src-tauri/icons/128x128.png delete mode 100644 apps/mini/src-tauri/icons/128x128@2x.png delete mode 100644 apps/mini/src-tauri/icons/32x32.png delete mode 100644 apps/mini/src-tauri/icons/icon.icns delete mode 100644 apps/mini/src-tauri/icons/icon.ico delete mode 100644 apps/mini/src-tauri/src/lib.rs delete mode 100644 apps/mini/src-tauri/src/main.rs delete mode 100644 apps/mini/src-tauri/src/windows_appbar.rs delete mode 100644 apps/mini/src-tauri/tauri.conf.json diff --git a/apps/desktop/README.md b/apps/desktop/README.md index f4617cd..74fce69 100644 --- a/apps/desktop/README.md +++ b/apps/desktop/README.md @@ -1,20 +1,19 @@ -# 森林AI 桌面客户端 +# 森林AI App -桌面端提供两个独立可执行文件: - -- `senlinai-mini.exe`:默认启动入口。窄屏、置顶,启动后按当前显示器高度停靠在屏幕右侧,也可以切换到左侧。 -- `senlinai-full.exe`:完整工作台客户端。 +森林AI唯一的桌面客户端,采用窄屏停靠布局,并在 Windows 上通过系统 AppBar 预留屏幕左侧或右侧工作区。 ```bash -# 默认启动 Mini +npm install npm run dev - -# 分别启动 -npm run mini:dev -npm run full:dev - -# 一次构建两个 EXE -npm run build +npm run desktop:dev ``` -两个构建产物会汇总到 `apps/desktop/release`。 +生产构建: + +```bash +npm run desktop:build +``` + +- Web 开发端口:`5180` +- 默认窗口宽度:`420px`,可调整 +- Windows 会为面板预留工作区;最大化的其他应用不会遮挡它 diff --git a/apps/mini/index.html b/apps/desktop/index.html similarity index 91% rename from apps/mini/index.html rename to apps/desktop/index.html index 62a672e..26ca612 100644 --- a/apps/mini/index.html +++ b/apps/desktop/index.html @@ -4,7 +4,7 @@ - 森林AI Mini + 森林AI App
diff --git a/apps/desktop/package-lock.json b/apps/desktop/package-lock.json index 4a5bdd1..198a9d2 100644 --- a/apps/desktop/package-lock.json +++ b/apps/desktop/package-lock.json @@ -1,14 +1,774 @@ { - "name": "desktop", - "version": "0.1.0", + "name": "senlinai-app", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "desktop", - "version": "0.1.0", + "name": "senlinai-app", + "version": "1.0.0", + "dependencies": { + "@arco-design/web-react": "^2.66.16", + "@tauri-apps/api": "^2.9.0", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, "devDependencies": { - "@tauri-apps/cli": "^2.9.3" + "@tauri-apps/cli": "^2.9.3", + "@types/node": "^24.13.2", + "@types/react": "^18.3.23", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react": "^6.0.3", + "oxlint": "^1.71.0", + "playwright": "^1.61.1", + "typescript": "~6.0.2", + "vite": "^8.1.1" + } + }, + "node_modules/@arco-design/color": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@arco-design/color/-/color-0.4.0.tgz", + "integrity": "sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==", + "license": "MIT", + "dependencies": { + "color": "^3.1.3" + } + }, + "node_modules/@arco-design/web-react": { + "version": "2.66.16", + "resolved": "https://registry.npmjs.org/@arco-design/web-react/-/web-react-2.66.16.tgz", + "integrity": "sha512-Ke6Do2GWPqWfbB7eounEdIjxocCSxxZT/TplQPtEZeeuavFWjdPDNyvHeBX6OGb7ZgZPl7NlcJbrTyTlhl56qQ==", + "license": "MIT", + "dependencies": { + "@arco-design/color": "^0.4.0", + "@babel/runtime": "^7.5.5", + "b-tween": "^0.3.3", + "b-validate": "^1.4.2", + "compute-scroll-into-view": "^1.0.17", + "dayjs": "^1.10.5", + "lodash": "^4.17.21", + "number-precision": "^1.3.1", + "react-focus-lock": "^2.13.2", + "react-is": "^18.2.0", + "react-transition-group": "^4.3.0", + "resize-observer-polyfill": "^1.5.1", + "scroll-into-view-if-needed": "^2.2.20", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.139.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", + "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@oxlint/binding-android-arm-eabi": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.74.0.tgz", + "integrity": "sha512-+gHd12muVI9ZLBaWLPkHt3Fj7jihFjgQ1MGtBaRL8vWrWrI0P7dLUty/cHrHS0oqPYIRgQUJsPu2CExQuMcwNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-android-arm64": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.74.0.tgz", + "integrity": "sha512-xjKdoMB+H+RCOByv/7l7nfIGW9mlOisqYdcyC75UqYuQecLpReAeEYUf2CNeDEI3KtmUgxpRw/+c63y4AeF/Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-arm64": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.74.0.tgz", + "integrity": "sha512-iUK7wvc6sejMKsC+Pt67mntoF5weFcyEunhZfLJceU6gL419mexz5wBkSx/EnkFBExMLNtOi9fnDSc5xfK0IzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-x64": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.74.0.tgz", + "integrity": "sha512-ggKc/tn5SJ1u2yG2izC6VKODfYKV8MQ2AicJlNzOjuyrC29udvOef6/JzK2r32xqCnBDLFouR1VCkjzEI0/N9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-freebsd-x64": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.74.0.tgz", + "integrity": "sha512-u++dH/43jy9hTLbneaWlS0gla/Bp1JdwJ2zgevCl8nDFUh6qRCGMxcL0f0lb7By3A9p/LfFr+7cG4HU1hG856g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-gnueabihf": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.74.0.tgz", + "integrity": "sha512-Sj1zmtFDVTPeIbIz4ZfcXAbFHqCmKCXdCUlAJzvTF7I20NTH1RDpoF2PhkqNODutJzVhJYmm3oz0GwgY+tvE2g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-musleabihf": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.74.0.tgz", + "integrity": "sha512-//PKyQb/tQXcHArx2f7z+oVI/eMS2Jpv+edNuAtOrgIhWdGcpHxogveAxzmF2rpH1AIHp4Hq04RF/rgJdiICnQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-gnu": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.74.0.tgz", + "integrity": "sha512-/k1Me+aX2tjuH10K62mLS0y8cLkJBHX6Ce0xPK+eWeel4bSdEGZ8dv4+hYMzg0GrSmjwy4yAYsDPeEeKBft/2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-musl": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.74.0.tgz", + "integrity": "sha512-3tFSjBxc5D8/zvjEuLvOqcA8ZXKD0+6NuaVO/edeamNc49MoAsbfaC9s1UiwODwgF6slGaF8yJA2TPkukd77tg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-ppc64-gnu": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.74.0.tgz", + "integrity": "sha512-9QggtPkSPXOCTu8Szis7auOK/sC7KdQaN+/TujP7YVVhzCAOhgdRfgv8uEz0r2tk5xdgus5rLYUrCDoZNtiRUw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-gnu": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.74.0.tgz", + "integrity": "sha512-VM5VPUJ4DJIWiK+AZn8FScUqMr6OFrCAYybMYjEEi7W13ParI64MByiXTkKMqZpBmvQ9zxl9Ebq2VUOiZRJYUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-musl": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.74.0.tgz", + "integrity": "sha512-SaDY1gh9rOA592J54g+gu5hkOFFQBZsMmIYHs+NRHG+Uq0OxtuuCXMWQ3vu1830Eugv5uMXyjG+bv2Z9y4IXjw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-s390x-gnu": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.74.0.tgz", + "integrity": "sha512-ZATQeHZCyr6MbDveg0obD5sxLHFOghtOdC5jwVwYlvFWqtFOxctgFEG6Ef/64hYvZrWyhyCckB10AelqLopeDA==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-gnu": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.74.0.tgz", + "integrity": "sha512-+aIvJyrdeD7LwCQ2WYLMUWNmnbeDRSPb40aBYtPjD9+PTqUwgJnk+HK5yLfSMeqXrMrDhE9uTmtt2y50tvjhHw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-musl": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.74.0.tgz", + "integrity": "sha512-XyktaR8lhK2qWiCK0Tk8oYD+/cgn+oHA6ddRnxSSXUKkkojkV78CmShZUxQF+yrBFs0SuW+JBOPG6hecyc/iZg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-openharmony-arm64": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.74.0.tgz", + "integrity": "sha512-mzbjrPl4neaVUiJ1fUiEUxTGaSZBoiKtaoB6jmIpz9S+VOA2vDYmJpihQ82w6178V5jxziclTg8Cgj5yF6tTDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-arm64-msvc": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.74.0.tgz", + "integrity": "sha512-vUAe9okpS2Oa5+lX67lqHMuNUvfkleRKwrUDJ/WJBsgmddvZ1mrsh2HVmuFDRzqFELhaJhFaCNOuR6a7L3rtIA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-ia32-msvc": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.74.0.tgz", + "integrity": "sha512-yyXXJyYYSXL4I8K8jAWjJs+J3fa9gH2JmEbo4f5adm+1tNC9itseicBNuwK7BDHvqQ5J534s+yDULu89vYL2ZQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-x64-msvc": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.74.0.tgz", + "integrity": "sha512-VTC9IYTIMrVUk/i6Ms1ohzzDKZFkWn0KU2OBbPBzgmVZ2V30165T/zK4LztTr0Xgp9fZ1qQZ1rsZAu/rEmySlA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", + "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", + "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", + "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", + "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", + "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", + "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", + "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", + "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", + "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", + "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", + "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", + "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", + "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.1.6" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", + "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", + "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tauri-apps/api": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.11.1.tgz", + "integrity": "sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==", + "license": "Apache-2.0 OR MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" } }, "node_modules/@tauri-apps/cli": { @@ -242,6 +1002,1046 @@ "engines": { "node": ">= 10" } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/node": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", + "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.31", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz", + "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.3.tgz", + "integrity": "sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/b-tween": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/b-tween/-/b-tween-0.3.3.tgz", + "integrity": "sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==", + "license": "MIT" + }, + "node_modules/b-validate": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/b-validate/-/b-validate-1.5.3.tgz", + "integrity": "sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==", + "license": "MIT" + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", + "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.21", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", + "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/focus-lock": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-1.3.6.tgz", + "integrity": "sha512-Ik/6OCk9RQQ0T5Xw+hKNLWrjSMtv51dD4GRmJjbD5a58TIEpI5a5iXagKVl3Z5UuyslMCA8Xwnu76jQob62Yhg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.16", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", + "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/number-precision": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/number-precision/-/number-precision-1.6.0.tgz", + "integrity": "sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oxlint": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.74.0.tgz", + "integrity": "sha512-odGl2s2x5IOJoj3A0v1k0PGBXVFBZeZ2+AK/+K2MJur7Ghi3bkyX5NuLUWHKqa4js1wjep3hJeuTQJOlr+4+dA==", + "dev": true, + "license": "MIT", + "bin": { + "oxlint": "bin/oxlint" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/binding-android-arm-eabi": "1.74.0", + "@oxlint/binding-android-arm64": "1.74.0", + "@oxlint/binding-darwin-arm64": "1.74.0", + "@oxlint/binding-darwin-x64": "1.74.0", + "@oxlint/binding-freebsd-x64": "1.74.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.74.0", + "@oxlint/binding-linux-arm-musleabihf": "1.74.0", + "@oxlint/binding-linux-arm64-gnu": "1.74.0", + "@oxlint/binding-linux-arm64-musl": "1.74.0", + "@oxlint/binding-linux-ppc64-gnu": "1.74.0", + "@oxlint/binding-linux-riscv64-gnu": "1.74.0", + "@oxlint/binding-linux-riscv64-musl": "1.74.0", + "@oxlint/binding-linux-s390x-gnu": "1.74.0", + "@oxlint/binding-linux-x64-gnu": "1.74.0", + "@oxlint/binding-linux-x64-musl": "1.74.0", + "@oxlint/binding-openharmony-arm64": "1.74.0", + "@oxlint/binding-win32-arm64-msvc": "1.74.0", + "@oxlint/binding-win32-ia32-msvc": "1.74.0", + "@oxlint/binding-win32-x64-msvc": "1.74.0" + }, + "peerDependencies": { + "oxlint-tsgolint": ">=0.24.0", + "vite-plus": "*" + }, + "peerDependenciesMeta": { + "oxlint-tsgolint": { + "optional": true + }, + "vite-plus": { + "optional": true + } + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.1.tgz", + "integrity": "sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.61.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz", + "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/postcss": { + "version": "8.5.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.20.tgz", + "integrity": "sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.16", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-clientside-effect": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.8.tgz", + "integrity": "sha512-ma2FePH0z3px2+WOu6h+YycZcEvFmmxIlAb62cF52bG86eMySciO/EQZeQMXd07kPCYB0a1dWDT5J+KE9mCDUw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-focus-lock": { + "version": "2.13.7", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.7.tgz", + "integrity": "sha512-20lpZHEQrXPb+pp1tzd4ULL6DyO5D2KnR0G69tTDdydrmNhU7pdFmbQUYVyHUgp+xN29IuFR0PVuhOmvaZL9Og==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^1.3.6", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.7", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" + }, + "node_modules/rolldown": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", + "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.139.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.1.5", + "@rolldown/binding-darwin-arm64": "1.1.5", + "@rolldown/binding-darwin-x64": "1.1.5", + "@rolldown/binding-freebsd-x64": "1.1.5", + "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", + "@rolldown/binding-linux-arm64-gnu": "1.1.5", + "@rolldown/binding-linux-arm64-musl": "1.1.5", + "@rolldown/binding-linux-ppc64-gnu": "1.1.5", + "@rolldown/binding-linux-s390x-gnu": "1.1.5", + "@rolldown/binding-linux-x64-gnu": "1.1.5", + "@rolldown/binding-linux-x64-musl": "1.1.5", + "@rolldown/binding-openharmony-arm64": "1.1.5", + "@rolldown/binding-wasm32-wasi": "1.1.5", + "@rolldown/binding-win32-arm64-msvc": "1.1.5", + "@rolldown/binding-win32-x64-msvc": "1.1.5" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "2.2.31", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", + "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", + "license": "MIT", + "dependencies": { + "compute-scroll-into-view": "^1.0.20" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/vite": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.5.tgz", + "integrity": "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.17", + "rolldown": "~1.1.5", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.3.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } } } } diff --git a/apps/desktop/package.json b/apps/desktop/package.json index cc0c420..3c6e013 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,20 +1,32 @@ { - "name": "desktop", + "name": "senlinai-app", "private": true, "version": "1.0.0", "type": "module", "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "oxlint", + "visual-check": "node scripts/visual-check.mjs", "tauri": "tauri", - "start": "npm run mini:dev", - "dev": "npm run mini:dev", - "mini:dev": "npm --prefix ../mini run desktop:dev", - "full:dev": "tauri dev", - "mini:build": "npm --prefix ../mini run desktop:build", - "full:build": "tauri build --no-bundle", - "build": "node scripts/build-all.mjs", - "bundle": "tauri build --ci --no-sign" + "desktop:dev": "tauri dev", + "desktop:build": "tauri build --no-bundle" + }, + "dependencies": { + "@arco-design/web-react": "^2.66.16", + "@tauri-apps/api": "^2.9.0", + "react": "^18.3.1", + "react-dom": "^18.3.1" }, "devDependencies": { - "@tauri-apps/cli": "^2.9.3" + "@tauri-apps/cli": "^2.9.3", + "@types/node": "^24.13.2", + "@types/react": "^18.3.23", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react": "^6.0.3", + "oxlint": "^1.71.0", + "playwright": "^1.61.1", + "typescript": "~6.0.2", + "vite": "^8.1.1" } } diff --git a/apps/mini/public/senlinai-icon.svg b/apps/desktop/public/senlinai-icon.svg similarity index 100% rename from apps/mini/public/senlinai-icon.svg rename to apps/desktop/public/senlinai-icon.svg diff --git a/apps/desktop/scripts/build-all.mjs b/apps/desktop/scripts/build-all.mjs deleted file mode 100644 index 8a0784b..0000000 --- a/apps/desktop/scripts/build-all.mjs +++ /dev/null @@ -1,44 +0,0 @@ -import { copyFileSync, mkdirSync } from 'node:fs' -import { dirname, join } from 'node:path' -import { fileURLToPath } from 'node:url' -import { spawnSync } from 'node:child_process' - -const desktopDir = join(dirname(fileURLToPath(import.meta.url)), '..') -const repoDir = join(desktopDir, '..', '..') -const isWindows = process.platform === 'win32' -const npmCommand = isWindows ? process.env.ComSpec || 'cmd.exe' : 'npm' - -function run(script) { - const args = isWindows ? ['/d', '/s', '/c', `npm run ${script}`] : ['run', script] - const result = spawnSync(npmCommand, args, { - cwd: desktopDir, - stdio: 'inherit', - }) - - if (result.error) throw result.error - if (result.status !== 0) { - process.exit(result.status ?? 1) - } -} - -run('full:build') -run('mini:build') - -const releaseDir = join(desktopDir, 'release') -mkdirSync(releaseDir, { recursive: true }) - -const artifacts = [ - { - source: join(desktopDir, 'src-tauri', 'target', 'release', 'senlinai-full.exe'), - target: join(releaseDir, 'senlinai-full.exe'), - }, - { - source: join(repoDir, 'apps', 'mini', 'src-tauri', 'target', 'release', 'senlinai-mini.exe'), - target: join(releaseDir, 'senlinai-mini.exe'), - }, -] - -for (const artifact of artifacts) { - copyFileSync(artifact.source, artifact.target) - console.log(`Created ${artifact.target}`) -} diff --git a/apps/mini/scripts/visual-check.mjs b/apps/desktop/scripts/visual-check.mjs similarity index 100% rename from apps/mini/scripts/visual-check.mjs rename to apps/desktop/scripts/visual-check.mjs diff --git a/apps/desktop/src-tauri/Cargo.lock b/apps/desktop/src-tauri/Cargo.lock index 2ad9796..9142372 100644 --- a/apps/desktop/src-tauri/Cargo.lock +++ b/apps/desktop/src-tauri/Cargo.lock @@ -43,140 +43,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.103" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" -dependencies = [ - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-lock" -version = "3.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "async-signal" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix", - "signal-hook-registry", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "atk" @@ -273,19 +142,6 @@ dependencies = [ "objc2", ] -[[package]] -name = "blocking" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - [[package]] name = "brotli" version = "8.0.4" @@ -324,9 +180,9 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" -version = "1.25.1" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6aedf8ae72766347502cf3cb4f41cf5e9cc37d28bee90f1fdaaae15f9cf9424" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" [[package]] name = "byteorder" @@ -397,7 +253,7 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] @@ -412,9 +268,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.67" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" +checksum = "c89588d05638b5b4594a3348a2d6c20277e43a7f5c5202b05cc56888475a47b8" dependencies = [ "find-msvc-tools", "shlex", @@ -475,15 +331,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "cookie" version = "0.18.1" @@ -854,33 +701,6 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" -[[package]] -name = "endi" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -898,42 +718,11 @@ dependencies = [ "typeid", ] -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "event-listener" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - [[package]] name = "fastrand" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "fdeflate" @@ -1020,24 +809,24 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" [[package]] name = "futures-executor" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" dependencies = [ "futures-core", "futures-task", @@ -1046,28 +835,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] +checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" dependencies = [ "proc-macro2", "quote", @@ -1076,21 +852,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" dependencies = [ "futures-core", "futures-io", @@ -1326,9 +1102,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" [[package]] name = "gobject-sys" @@ -1417,12 +1193,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - [[package]] name = "hex" version = "0.4.3" @@ -1480,9 +1250,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" dependencies = [ "atomic-waker", "bytes", @@ -1702,25 +1472,6 @@ version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" -[[package]] -name = "is-docker" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" -dependencies = [ - "once_cell", -] - -[[package]] -name = "is-wsl" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" -dependencies = [ - "is-docker", - "once_cell", -] - [[package]] name = "itoa" version = "1.0.18" @@ -1864,9 +1615,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libdbus-sys" @@ -1896,12 +1647,6 @@ dependencies = [ "libc", ] -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - [[package]] name = "litemap" version = "0.8.2" @@ -1993,7 +1738,7 @@ dependencies = [ "once_cell", "png 0.18.1", "serde", - "thiserror 2.0.18", + "thiserror 2.0.19", "windows-sys 0.61.2", ] @@ -2265,33 +2010,12 @@ version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" -[[package]] -name = "open" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b3d059e795d52b8a72fef45658620edd4d9c359b338564aa14391ffa511ed5" -dependencies = [ - "dunce", - "is-wsl", - "libc", -] - [[package]] name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - [[package]] name = "pango" version = "0.18.3" @@ -2317,12 +2041,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - [[package]] name = "parking_lot" version = "0.12.5" @@ -2411,17 +2129,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" -[[package]] -name = "piper" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - [[package]] name = "pkg-config" version = "0.3.33" @@ -2467,20 +2174,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "polling" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "windows-sys 0.61.2", -] - [[package]] name = "potential_utf" version = "0.1.5" @@ -2557,9 +2250,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] @@ -2575,9 +2268,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.46" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -2617,27 +2310,27 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.17", "libredox", - "thiserror 2.0.18", + "thiserror 2.0.19", ] [[package]] name = "ref-cast" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +checksum = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +checksum = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -2718,19 +2411,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" -dependencies = [ - "bitflags 2.13.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - [[package]] name = "rustversion" version = "1.0.23" @@ -2833,22 +2513,21 @@ dependencies = [ ] [[package]] -name = "senlinai-full" +name = "senlinai-app" version = "1.0.0" dependencies = [ "serde", "serde_json", "tauri", "tauri-build", - "tauri-plugin-opener", "windows", ] [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -2868,22 +2547,22 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -2899,9 +2578,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -2912,13 +2591,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -3019,16 +2698,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - [[package]] name = "simd-adler32" version = "0.3.10" @@ -3179,6 +2848,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -3310,7 +2990,7 @@ dependencies = [ "tauri-runtime", "tauri-runtime-wry", "tauri-utils", - "thiserror 2.0.18", + "thiserror 2.0.19", "tokio", "tray-icon", "url", @@ -3361,7 +3041,7 @@ dependencies = [ "sha2", "syn 2.0.119", "tauri-utils", - "thiserror 2.0.18", + "thiserror 2.0.19", "time", "url", "uuid", @@ -3382,44 +3062,6 @@ dependencies = [ "tauri-utils", ] -[[package]] -name = "tauri-plugin" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74be5dd4bed9afbd145e5716b5fa2ec28cbc29c34ffa61c258c9273d896c8020" -dependencies = [ - "anyhow", - "glob", - "plist", - "schemars 0.8.22", - "serde", - "serde_json", - "tauri-utils", - "walkdir", -] - -[[package]] -name = "tauri-plugin-opener" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17e1bea14edce6b793a04e2417e3fd924b9bc4faae83cdee7d714156cceeed29" -dependencies = [ - "dunce", - "glob", - "objc2-app-kit", - "objc2-foundation", - "open", - "schemars 0.8.22", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.18", - "url", - "windows", - "zbus", -] - [[package]] name = "tauri-runtime" version = "2.11.3" @@ -3438,7 +3080,7 @@ dependencies = [ "serde", "serde_json", "tauri-utils", - "thiserror 2.0.18", + "thiserror 2.0.19", "url", "webkit2gtk", "webview2-com", @@ -3501,7 +3143,7 @@ dependencies = [ "serde_json", "serde_with", "swift-rs", - "thiserror 2.0.18", + "thiserror 2.0.19", "toml 1.1.3+spec-1.1.0", "url", "urlpattern", @@ -3520,19 +3162,6 @@ dependencies = [ "toml 1.1.3+spec-1.1.0", ] -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom 0.4.3", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - [[package]] name = "tendril" version = "0.5.1" @@ -3553,11 +3182,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" dependencies = [ - "thiserror-impl 2.0.18", + "thiserror-impl 2.0.19", ] [[package]] @@ -3573,20 +3202,20 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] name = "time" -version = "0.3.53" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" +checksum = "3e1d5e639ff6bab73cb6885cc7e7b1de96c3f32c68ec55f3952614bec1092244" dependencies = [ "deranged", "num-conv", @@ -3604,9 +3233,9 @@ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" dependencies = [ "num-conv", "time-core", @@ -3639,9 +3268,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.53.0" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d988bcd52dbe076d3d46903332f58c912b87a2c49b1428419a5845154762ffee" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "bytes", "libc", @@ -3653,9 +3282,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" dependencies = [ "bytes", "futures-core", @@ -3836,21 +3465,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", - "tracing-attributes", "tracing-core", ] -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - [[package]] name = "tracing-core" version = "0.1.36" @@ -3878,7 +3495,7 @@ dependencies = [ "once_cell", "png 0.18.1", "serde", - "thiserror 2.0.18", + "thiserror 2.0.19", "windows-sys 0.61.2", ] @@ -3900,17 +3517,6 @@ version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" -[[package]] -name = "uds_windows" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" -dependencies = [ - "memoffset", - "tempfile", - "windows-sys 0.61.2", -] - [[package]] name = "unic-char-property" version = "0.9.0" @@ -4238,7 +3844,7 @@ version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" dependencies = [ - "thiserror 2.0.18", + "thiserror 2.0.19", "windows", "windows-core 0.61.2", ] @@ -4673,7 +4279,7 @@ dependencies = [ "sha2", "soup3", "tao-macros", - "thiserror 2.0.18", + "thiserror 2.0.19", "url", "webkit2gtk", "webkit2gtk-sys", @@ -4728,67 +4334,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zbus" -version = "5.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe18fb60dc696039e738717b76eaea21e7a4489bbb1885020b43c94236d7e98a" -dependencies = [ - "async-broadcast", - "async-executor", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-lite", - "hex", - "libc", - "ordered-stream", - "rustix", - "serde", - "serde_repr", - "tracing", - "uds_windows", - "uuid", - "windows-sys 0.61.2", - "winnow 1.0.4", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "5.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe96480bed92df2b442a1a30df364e12d08eed03aeb061f2b8dc6afb2be91119" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.119", - "zbus_names", - "zvariant", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "4.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bf88b4a3ff53e883001e0e0115b297a9d53c31b9c1edd2bfdd853e3428624e" -dependencies = [ - "serde", - "winnow 1.0.4", - "zvariant", -] - [[package]] name = "zerofrom" version = "0.1.8" @@ -4848,43 +4393,3 @@ name = "zmij" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" - -[[package]] -name = "zvariant" -version = "5.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee2a0bcd2a907786a456fff45aaaaf54c9ba5f50b71ae9ec1a4edd200c94911" -dependencies = [ - "endi", - "enumflags2", - "serde", - "winnow 1.0.4", - "zvariant_derive", - "zvariant_utils", -] - -[[package]] -name = "zvariant_derive" -version = "5.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a708216a18780796770bfe3f4739c7c83a3e8f789b755534bbbc06e4e23e12" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.119", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn 2.0.119", - "winnow 1.0.4", -] diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index 942fd47..4a14957 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -1,12 +1,12 @@ [package] -name = "senlinai-full" +name = "senlinai-app" version = "1.0.0" -description = "森林AI 完整版桌面客户端" +description = "森林AI 迷你停靠客户端" authors = ["森林AI"] edition = "2021" [lib] -name = "senlinai_workbench_lib" +name = "senlinai_app_lib" crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] @@ -14,7 +14,6 @@ tauri-build = { version = "2", features = [] } [dependencies] tauri = { version = "2", features = [] } -tauri-plugin-opener = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/apps/desktop/src-tauri/src/lib.rs b/apps/desktop/src-tauri/src/lib.rs index 886c512..6ae22c9 100644 --- a/apps/desktop/src-tauri/src/lib.rs +++ b/apps/desktop/src-tauri/src/lib.rs @@ -1,26 +1,66 @@ +use tauri::Window; + #[cfg(windows)] use tauri::Manager; +#[cfg(not(windows))] +use tauri::{PhysicalPosition, PhysicalSize}; #[cfg(windows)] mod windows_appbar; +#[tauri::command] +fn dock_window(window: Window, side: String) -> Result<(), String> { + #[cfg(windows)] + { + let hwnd = window.hwnd().map_err(|error| error.to_string())?; + return windows_appbar::set_edge(hwnd, side == "left").map_err(|error| error.to_string()); + } + + #[cfg(not(windows))] + { + let monitor = window + .current_monitor() + .map_err(|error| error.to_string())? + .ok_or_else(|| "Unable to identify the current monitor".to_string())?; + let window_size = window.outer_size().map_err(|error| error.to_string())?; + let work_area = monitor.work_area(); + let dock_size = PhysicalSize::new(window_size.width, work_area.size.height); + let x = if side == "left" { + work_area.position.x + } else { + work_area.position.x + work_area.size.width as i32 - dock_size.width as i32 + }; + + window + .set_size(dock_size) + .map_err(|error| error.to_string())?; + window + .set_position(PhysicalPosition::new(x, work_area.position.y)) + .map_err(|error| error.to_string())?; + window + .set_always_on_top(true) + .map_err(|error| error.to_string())?; + Ok(()) + } +} + #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() - .plugin(tauri_plugin_opener::init()) .setup(|app| { #[cfg(windows)] { let window = app .get_webview_window("main") .expect("main window must be configured"); - windows_appbar::register_right_edge(window.hwnd()?)?; + windows_appbar::register(window.hwnd()?)?; } Ok(()) }) + .invoke_handler(tauri::generate_handler![dock_window]) .build(tauri::generate_context!()) - .expect("failed to build SenlinAI desktop app") + .expect("failed to build SenlinAI App") .run(|_, event| { #[cfg(windows)] if matches!(event, tauri::RunEvent::ExitRequested { .. }) { diff --git a/apps/desktop/src-tauri/src/main.rs b/apps/desktop/src-tauri/src/main.rs index 79ba8e2..b567769 100644 --- a/apps/desktop/src-tauri/src/main.rs +++ b/apps/desktop/src-tauri/src/main.rs @@ -1,3 +1,3 @@ fn main() { - senlinai_workbench_lib::run() + senlinai_app_lib::run(); } diff --git a/apps/desktop/src-tauri/src/windows_appbar.rs b/apps/desktop/src-tauri/src/windows_appbar.rs index e4aa46f..d58ea4a 100644 --- a/apps/desktop/src-tauri/src/windows_appbar.rs +++ b/apps/desktop/src-tauri/src/windows_appbar.rs @@ -1,7 +1,4 @@ -//! Windows-only system AppBar support for the desktop side panel. -//! -//! An AppBar reserves desktop work area, so maximized windows do not cover the -//! right-hand SenlinAI panel. Tauri does not expose this Win32 shell feature. +//! Windows system AppBar integration for the App side panel. use std::sync::atomic::{AtomicBool, AtomicIsize, AtomicU32, Ordering}; @@ -15,7 +12,7 @@ use windows::{ UI::{ Shell::{ DefSubclassProc, RemoveWindowSubclass, SHAppBarMessage, SetWindowSubclass, - ABE_RIGHT, ABM_ACTIVATE, ABM_NEW, ABM_QUERYPOS, ABM_REMOVE, ABM_SETPOS, + ABE_LEFT, ABE_RIGHT, ABM_ACTIVATE, ABM_NEW, ABM_QUERYPOS, ABM_REMOVE, ABM_SETPOS, ABM_WINDOWPOSCHANGED, ABN_POSCHANGED, APPBARDATA, }, WindowsAndMessaging::{ @@ -30,18 +27,16 @@ const SUBCLASS_ID: usize = 0x5341_4142; // "SAAB" (SenlinAI AppBar) static CALLBACK_MESSAGE: AtomicU32 = AtomicU32::new(0); static REGISTERED_HWND: AtomicIsize = AtomicIsize::new(0); +static EDGE: AtomicU32 = AtomicU32::new(ABE_RIGHT); static LAYOUT_IN_PROGRESS: AtomicBool = AtomicBool::new(false); -/// Registers `hwnd` as the single right-edge application desktop toolbar. -/// -/// The width is taken from the configured window width. The shell coordinates -/// the remaining dimensions with the taskbar and any other AppBars. -pub fn register_right_edge(hwnd: HWND) -> Result<()> { +/// Registers the main App window as a right-edge AppBar. +pub fn register(hwnd: HWND) -> Result<()> { if REGISTERED_HWND.load(Ordering::Acquire) != 0 { return Ok(()); } - let callback_message = unsafe { RegisterWindowMessageW(w!("SenlinAI.AppBar.Callback")) }; + let callback_message = unsafe { RegisterWindowMessageW(w!("SenlinAI.App.AppBar.Callback")) }; if callback_message == 0 { return Err(Error::from_win32()); } @@ -62,7 +57,7 @@ pub fn register_right_edge(hwnd: HWND) -> Result<()> { CALLBACK_MESSAGE.store(callback_message, Ordering::Release); REGISTERED_HWND.store(hwnd.0 as isize, Ordering::Release); - if let Err(error) = layout_right_edge(hwnd) { + if let Err(error) = layout(hwnd) { unregister(); return Err(error); } @@ -70,6 +65,12 @@ pub fn register_right_edge(hwnd: HWND) -> Result<()> { Ok(()) } +/// Repositions the AppBar after the App UI selects the left or right edge. +pub fn set_edge(hwnd: HWND, left: bool) -> Result<()> { + EDGE.store(if left { ABE_LEFT } else { ABE_RIGHT }, Ordering::Release); + layout(hwnd) +} + /// Removes the AppBar reservation before the Tauri window is destroyed. pub fn unregister() { let raw_hwnd = REGISTERED_HWND.swap(0, Ordering::AcqRel); @@ -98,7 +99,7 @@ unsafe extern "system" fn appbar_subclass_proc( let callback_message = CALLBACK_MESSAGE.load(Ordering::Acquire); if message == callback_message && wparam.0 as u32 == ABN_POSCHANGED { - let _ = layout_right_edge(hwnd); + let _ = layout(hwnd); } else if message == WM_ACTIVATE { let mut data = appbar_data(hwnd); SHAppBarMessage(ABM_ACTIVATE, &mut data); @@ -106,27 +107,25 @@ unsafe extern "system" fn appbar_subclass_proc( let mut data = appbar_data(hwnd); SHAppBarMessage(ABM_WINDOWPOSCHANGED, &mut data); - // A native move/resize must be reconciled with the shell reservation. - // Calls caused by our own SetWindowPos are ignored to avoid recursion. if !LAYOUT_IN_PROGRESS.load(Ordering::Acquire) { - let _ = layout_right_edge(hwnd); + let _ = layout(hwnd); } } DefSubclassProc(hwnd, message, wparam, lparam) } -fn layout_right_edge(hwnd: HWND) -> Result<()> { +fn layout(hwnd: HWND) -> Result<()> { if LAYOUT_IN_PROGRESS.swap(true, Ordering::AcqRel) { return Ok(()); } - let result = layout_right_edge_inner(hwnd); + let result = layout_inner(hwnd); LAYOUT_IN_PROGRESS.store(false, Ordering::Release); result } -fn layout_right_edge_inner(hwnd: HWND) -> Result<()> { +fn layout_inner(hwnd: HWND) -> Result<()> { let mut window_rect = RECT::default(); unsafe { GetWindowRect(hwnd, &mut window_rect)? }; let width = window_rect.right - window_rect.left; @@ -138,16 +137,23 @@ fn layout_right_edge_inner(hwnd: HWND) -> Result<()> { }; unsafe { GetMonitorInfoW(monitor, &mut monitor_info).ok()? }; + let edge = EDGE.load(Ordering::Acquire); let mut data = appbar_data(hwnd); - data.uEdge = ABE_RIGHT; + data.uEdge = edge; data.rc = monitor_info.rcMonitor; - data.rc.left = data.rc.right - width; + if edge == ABE_LEFT { + data.rc.right = data.rc.left + width; + } else { + data.rc.left = data.rc.right - width; + } unsafe { - // The shell first removes occupied AppBar/taskbar space. Restore our - // requested width, then commit the returned, conflict-free rectangle. SHAppBarMessage(ABM_QUERYPOS, &mut data); - data.rc.left = data.rc.right - width; + if edge == ABE_LEFT { + data.rc.right = data.rc.left + width; + } else { + data.rc.left = data.rc.right - width; + } SHAppBarMessage(ABM_SETPOS, &mut data); SetWindowPos( hwnd, diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index 5e462ce..d8b67a4 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -1,24 +1,27 @@ { "$schema": "https://schema.tauri.app/config/2", - "productName": "森林AI Full", + "productName": "森林AI App", "version": "1.0.0", - "identifier": "ai.senlin.workbench", + "identifier": "ai.senlin.client", "build": { - "frontendDist": "../../web_v1/dist", - "devUrl": "http://localhost:5173", - "beforeDevCommand": "cd ../web_v1 && npm run dev", - "beforeBuildCommand": "cd ../web_v1 && npm run build" + "frontendDist": "../dist", + "devUrl": "http://localhost:5180", + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run build" }, "app": { "windows": [ { - "title": "森林AI Full", - "width": 380, + "label": "main", + "title": "森林AI App", + "width": 420, "height": 820, - "minWidth": 300, - "minHeight": 480, - "resizable": false, - "maximizable": false + "minWidth": 360, + "minHeight": 640, + "resizable": true, + "maximizable": false, + "alwaysOnTop": true, + "center": false } ], "security": { diff --git a/apps/mini/src/App.tsx b/apps/desktop/src/App.tsx similarity index 98% rename from apps/mini/src/App.tsx rename to apps/desktop/src/App.tsx index f4ad3aa..b9f4590 100644 --- a/apps/mini/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -110,7 +110,7 @@ export function App() {
森林AI - Mini 1.0 + App 1.0
计划任务{workspace.cronPlans.map((plan) =>
{plan.title}{plan.schedule} · {plan.enabled ? '已启用' : '已停用'}
)}{!workspace.cronPlans.length && 暂无周期计划}
停靠说明

顶部箭头可将桌面窗口停靠至当前屏幕左侧或右侧。Web 模式会记住布局偏好,桌面模式会同时移动实际窗口。

-
森林AI Miniv1.0 完整版 · 窄屏停靠客户端
+
森林AI Appv1.0 · 停靠客户端
) } @@ -350,7 +350,7 @@ function Login({ onLogin }: { onLogin: (session: ApiSession) => void }) {
{ event.preventDefault(); void submitLogin() }}> - 森林AI Mini + 森林AI App 停靠在屏幕一侧,随时记录与推进项目
diff --git a/apps/mini/src/api.ts b/apps/desktop/src/api.ts similarity index 100% rename from apps/mini/src/api.ts rename to apps/desktop/src/api.ts diff --git a/apps/mini/src/main.tsx b/apps/desktop/src/main.tsx similarity index 100% rename from apps/mini/src/main.tsx rename to apps/desktop/src/main.tsx diff --git a/apps/mini/src/styles.css b/apps/desktop/src/styles.css similarity index 100% rename from apps/mini/src/styles.css rename to apps/desktop/src/styles.css diff --git a/apps/mini/src/vite-env.d.ts b/apps/desktop/src/vite-env.d.ts similarity index 100% rename from apps/mini/src/vite-env.d.ts rename to apps/desktop/src/vite-env.d.ts diff --git a/apps/mini/tsconfig.app.json b/apps/desktop/tsconfig.app.json similarity index 100% rename from apps/mini/tsconfig.app.json rename to apps/desktop/tsconfig.app.json diff --git a/apps/mini/tsconfig.json b/apps/desktop/tsconfig.json similarity index 100% rename from apps/mini/tsconfig.json rename to apps/desktop/tsconfig.json diff --git a/apps/mini/tsconfig.node.json b/apps/desktop/tsconfig.node.json similarity index 100% rename from apps/mini/tsconfig.node.json rename to apps/desktop/tsconfig.node.json diff --git a/apps/mini/vite.config.ts b/apps/desktop/vite.config.ts similarity index 100% rename from apps/mini/vite.config.ts rename to apps/desktop/vite.config.ts diff --git a/apps/mini/README.md b/apps/mini/README.md deleted file mode 100644 index e6c57f8..0000000 --- a/apps/mini/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 森林AI Mini - -面向屏幕左右侧停靠场景的窄屏客户端。它使用与 `web_v1` 相同的后端 API,采用顶部导航和单列内容布局。 - -```bash -npm install -npm run dev -npm run desktop:dev -``` - -- Web 开发端口:`5180` -- 桌面窗口默认宽度:`420`;启动后高度自动适配当前屏幕可用工作区,不遮挡 Windows 任务栏,并停靠在屏幕右侧 -- 左右停靠状态保存在本地;在 Tauri 桌面环境中会移动实际窗口。 diff --git a/apps/mini/package-lock.json b/apps/mini/package-lock.json deleted file mode 100644 index bd124e1..0000000 --- a/apps/mini/package-lock.json +++ /dev/null @@ -1,2047 +0,0 @@ -{ - "name": "senlinai-mini", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "senlinai-mini", - "version": "1.0.0", - "dependencies": { - "@arco-design/web-react": "^2.66.16", - "@tauri-apps/api": "^2.9.0", - "react": "^18.3.1", - "react-dom": "^18.3.1" - }, - "devDependencies": { - "@tauri-apps/cli": "^2.9.3", - "@types/node": "^24.13.2", - "@types/react": "^18.3.23", - "@types/react-dom": "^18.3.7", - "@vitejs/plugin-react": "^6.0.3", - "oxlint": "^1.71.0", - "playwright": "^1.61.1", - "typescript": "~6.0.2", - "vite": "^8.1.1" - } - }, - "node_modules/@arco-design/color": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@arco-design/color/-/color-0.4.0.tgz", - "integrity": "sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==", - "license": "MIT", - "dependencies": { - "color": "^3.1.3" - } - }, - "node_modules/@arco-design/web-react": { - "version": "2.66.16", - "resolved": "https://registry.npmjs.org/@arco-design/web-react/-/web-react-2.66.16.tgz", - "integrity": "sha512-Ke6Do2GWPqWfbB7eounEdIjxocCSxxZT/TplQPtEZeeuavFWjdPDNyvHeBX6OGb7ZgZPl7NlcJbrTyTlhl56qQ==", - "license": "MIT", - "dependencies": { - "@arco-design/color": "^0.4.0", - "@babel/runtime": "^7.5.5", - "b-tween": "^0.3.3", - "b-validate": "^1.4.2", - "compute-scroll-into-view": "^1.0.17", - "dayjs": "^1.10.5", - "lodash": "^4.17.21", - "number-precision": "^1.3.1", - "react-focus-lock": "^2.13.2", - "react-is": "^18.2.0", - "react-transition-group": "^4.3.0", - "resize-observer-polyfill": "^1.5.1", - "scroll-into-view-if-needed": "^2.2.20", - "shallowequal": "^1.1.0" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" - } - }, - "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@oxc-project/types": { - "version": "0.139.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", - "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.74.0.tgz", - "integrity": "sha512-+gHd12muVI9ZLBaWLPkHt3Fj7jihFjgQ1MGtBaRL8vWrWrI0P7dLUty/cHrHS0oqPYIRgQUJsPu2CExQuMcwNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-android-arm64": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.74.0.tgz", - "integrity": "sha512-xjKdoMB+H+RCOByv/7l7nfIGW9mlOisqYdcyC75UqYuQecLpReAeEYUf2CNeDEI3KtmUgxpRw/+c63y4AeF/Bw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.74.0.tgz", - "integrity": "sha512-iUK7wvc6sejMKsC+Pt67mntoF5weFcyEunhZfLJceU6gL419mexz5wBkSx/EnkFBExMLNtOi9fnDSc5xfK0IzQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.74.0.tgz", - "integrity": "sha512-ggKc/tn5SJ1u2yG2izC6VKODfYKV8MQ2AicJlNzOjuyrC29udvOef6/JzK2r32xqCnBDLFouR1VCkjzEI0/N9Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.74.0.tgz", - "integrity": "sha512-u++dH/43jy9hTLbneaWlS0gla/Bp1JdwJ2zgevCl8nDFUh6qRCGMxcL0f0lb7By3A9p/LfFr+7cG4HU1hG856g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.74.0.tgz", - "integrity": "sha512-Sj1zmtFDVTPeIbIz4ZfcXAbFHqCmKCXdCUlAJzvTF7I20NTH1RDpoF2PhkqNODutJzVhJYmm3oz0GwgY+tvE2g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.74.0.tgz", - "integrity": "sha512-//PKyQb/tQXcHArx2f7z+oVI/eMS2Jpv+edNuAtOrgIhWdGcpHxogveAxzmF2rpH1AIHp4Hq04RF/rgJdiICnQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.74.0.tgz", - "integrity": "sha512-/k1Me+aX2tjuH10K62mLS0y8cLkJBHX6Ce0xPK+eWeel4bSdEGZ8dv4+hYMzg0GrSmjwy4yAYsDPeEeKBft/2w==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.74.0.tgz", - "integrity": "sha512-3tFSjBxc5D8/zvjEuLvOqcA8ZXKD0+6NuaVO/edeamNc49MoAsbfaC9s1UiwODwgF6slGaF8yJA2TPkukd77tg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.74.0.tgz", - "integrity": "sha512-9QggtPkSPXOCTu8Szis7auOK/sC7KdQaN+/TujP7YVVhzCAOhgdRfgv8uEz0r2tk5xdgus5rLYUrCDoZNtiRUw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.74.0.tgz", - "integrity": "sha512-VM5VPUJ4DJIWiK+AZn8FScUqMr6OFrCAYybMYjEEi7W13ParI64MByiXTkKMqZpBmvQ9zxl9Ebq2VUOiZRJYUg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.74.0.tgz", - "integrity": "sha512-SaDY1gh9rOA592J54g+gu5hkOFFQBZsMmIYHs+NRHG+Uq0OxtuuCXMWQ3vu1830Eugv5uMXyjG+bv2Z9y4IXjw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.74.0.tgz", - "integrity": "sha512-ZATQeHZCyr6MbDveg0obD5sxLHFOghtOdC5jwVwYlvFWqtFOxctgFEG6Ef/64hYvZrWyhyCckB10AelqLopeDA==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.74.0.tgz", - "integrity": "sha512-+aIvJyrdeD7LwCQ2WYLMUWNmnbeDRSPb40aBYtPjD9+PTqUwgJnk+HK5yLfSMeqXrMrDhE9uTmtt2y50tvjhHw==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.74.0.tgz", - "integrity": "sha512-XyktaR8lhK2qWiCK0Tk8oYD+/cgn+oHA6ddRnxSSXUKkkojkV78CmShZUxQF+yrBFs0SuW+JBOPG6hecyc/iZg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.74.0.tgz", - "integrity": "sha512-mzbjrPl4neaVUiJ1fUiEUxTGaSZBoiKtaoB6jmIpz9S+VOA2vDYmJpihQ82w6178V5jxziclTg8Cgj5yF6tTDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.74.0.tgz", - "integrity": "sha512-vUAe9okpS2Oa5+lX67lqHMuNUvfkleRKwrUDJ/WJBsgmddvZ1mrsh2HVmuFDRzqFELhaJhFaCNOuR6a7L3rtIA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.74.0.tgz", - "integrity": "sha512-yyXXJyYYSXL4I8K8jAWjJs+J3fa9gH2JmEbo4f5adm+1tNC9itseicBNuwK7BDHvqQ5J534s+yDULu89vYL2ZQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.74.0.tgz", - "integrity": "sha512-VTC9IYTIMrVUk/i6Ms1ohzzDKZFkWn0KU2OBbPBzgmVZ2V30165T/zK4LztTr0Xgp9fZ1qQZ1rsZAu/rEmySlA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", - "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", - "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", - "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", - "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", - "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", - "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", - "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", - "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", - "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", - "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", - "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", - "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", - "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", - "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tauri-apps/api": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.11.1.tgz", - "integrity": "sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==", - "license": "Apache-2.0 OR MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/cli": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.11.4.tgz", - "integrity": "sha512-R8xGtMpwyetawSqm9kYOuMmEqkhUbvcUy8n0aNXIxollKBLESUu5f4Fx+64hgASYm1H+jSWq6jCW6zqTnH6hqQ==", - "dev": true, - "license": "Apache-2.0 OR MIT", - "bin": { - "tauri": "tauri.js" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - }, - "optionalDependencies": { - "@tauri-apps/cli-darwin-arm64": "2.11.4", - "@tauri-apps/cli-darwin-x64": "2.11.4", - "@tauri-apps/cli-linux-arm-gnueabihf": "2.11.4", - "@tauri-apps/cli-linux-arm64-gnu": "2.11.4", - "@tauri-apps/cli-linux-arm64-musl": "2.11.4", - "@tauri-apps/cli-linux-riscv64-gnu": "2.11.4", - "@tauri-apps/cli-linux-x64-gnu": "2.11.4", - "@tauri-apps/cli-linux-x64-musl": "2.11.4", - "@tauri-apps/cli-win32-arm64-msvc": "2.11.4", - "@tauri-apps/cli-win32-ia32-msvc": "2.11.4", - "@tauri-apps/cli-win32-x64-msvc": "2.11.4" - } - }, - "node_modules/@tauri-apps/cli-darwin-arm64": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.11.4.tgz", - "integrity": "sha512-1ryOF3ZhpZ/nemHV5zVwBQBz9jDGKmKPvWPADOhc83ig0P4bMc2iER4NbC6r9sjeIZ6RVQ4g3RZIYvezhcl4TQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-darwin-x64": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.11.4.tgz", - "integrity": "sha512-uFsGQAAfuyz1k/yGLmkWfkBlgKAqZfxqlHmLWx81QU27RJWfmbNHCIq8T8w1e+VClleIuZUjpHWfoE4E3DLo3A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.11.4.tgz", - "integrity": "sha512-IaHZn5CdBL21oUmjiVOS1ctw6Ip1O0pjp70FwOWmYz1myWe0SY96ZIj2FYf7pT0m8bI2h/hrs5ZbEXXh44/MkQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-gnu": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.11.4.tgz", - "integrity": "sha512-N41/ukTRVe6XSuUTESuFdGeOW2i7k62tK+6gHK5Kd5/q5RPvvi19GaWAVPPb9u95HSGmTChSolBfzynUsssFaA==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-musl": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.11.4.tgz", - "integrity": "sha512-v277UnT/fB64xAfSroL5N3Km3tLmvATWqJJw/wRI+g6o+HkeD0slyE7gOhNs1MbjE41R7bQOTxMVoL3aomUJmw==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.11.4.tgz", - "integrity": "sha512-qqgNkQ2u1yZHxjhxsZaxUtRDW8dIqIYm33rx/mzwQv0SfY9x1B+iraj8vWeFiXjjSVVhEMepXSOts1TqPzvXNQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-gnu": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.11.4.tgz", - "integrity": "sha512-2VRNWl84FOH0m2giiDkO2h0QXlcMJeX+zJDpI5kDIQAx6s+geF3v48F4DXfJez4GS/FdoDGnPnw1C2iYGbQ7bQ==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-musl": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.11.4.tgz", - "integrity": "sha512-o9GyhYor/nc7xarmwDE3ka2szuW3uuZzXjHWh64Q8YX5AtSgxdQkFWzrY4O8KiGtVNvFBI14H3Q49Qj5TOIP/A==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-arm64-msvc": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.11.4.tgz", - "integrity": "sha512-ld5Ehb598m0VkYyylRPNeCFsBe/km0jxis6KgMpl3IGY6I/i1RwQXO05I1AsXUXO2WC6AvB/Lw4qTf/asiuEiQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-ia32-msvc": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.11.4.tgz", - "integrity": "sha512-12Hxi0XX/H5VFxO/bGgHkFWhml9VMgEOu9CidjeCeTNQ1l6fpUlbiGgSP7CLI3PFtW9/FfbeHieZ+kyWK5H7CA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-x64-msvc": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.11.4.tgz", - "integrity": "sha512-+vDiqBIU5dMISg/wNvX3sF+ZHfgJGJ5T0AcO+EHNXV9GGAG+P5fzodlDXD3QdKCRgZxMoCm5PPvj3BqLNjBthw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/node": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", - "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.18.0" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.3.31", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz", - "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.2.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^18.0.0" - } - }, - "node_modules/@vitejs/plugin-react": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.3.tgz", - "integrity": "sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rolldown/pluginutils": "^1.0.1" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", - "babel-plugin-react-compiler": "^1.0.0", - "vite": "^8.0.0" - }, - "peerDependenciesMeta": { - "@rolldown/plugin-babel": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - } - } - }, - "node_modules/b-tween": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/b-tween/-/b-tween-0.3.3.tgz", - "integrity": "sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==", - "license": "MIT" - }, - "node_modules/b-validate": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/b-validate/-/b-validate-1.5.3.tgz", - "integrity": "sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==", - "license": "MIT" - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", - "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" - }, - "node_modules/dayjs": { - "version": "1.11.21", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", - "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", - "license": "MIT" - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/focus-lock": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-1.3.6.tgz", - "integrity": "sha512-Ik/6OCk9RQQ0T5Xw+hKNLWrjSMtv51dD4GRmJjbD5a58TIEpI5a5iXagKVl3Z5UuyslMCA8Xwnu76jQob62Yhg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/nanoid": { - "version": "3.3.16", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", - "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/number-precision": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/number-precision/-/number-precision-1.6.0.tgz", - "integrity": "sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==", - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oxlint": { - "version": "1.74.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.74.0.tgz", - "integrity": "sha512-odGl2s2x5IOJoj3A0v1k0PGBXVFBZeZ2+AK/+K2MJur7Ghi3bkyX5NuLUWHKqa4js1wjep3hJeuTQJOlr+4+dA==", - "dev": true, - "license": "MIT", - "bin": { - "oxlint": "bin/oxlint" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/sponsors/Boshen" - }, - "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.74.0", - "@oxlint/binding-android-arm64": "1.74.0", - "@oxlint/binding-darwin-arm64": "1.74.0", - "@oxlint/binding-darwin-x64": "1.74.0", - "@oxlint/binding-freebsd-x64": "1.74.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.74.0", - "@oxlint/binding-linux-arm-musleabihf": "1.74.0", - "@oxlint/binding-linux-arm64-gnu": "1.74.0", - "@oxlint/binding-linux-arm64-musl": "1.74.0", - "@oxlint/binding-linux-ppc64-gnu": "1.74.0", - "@oxlint/binding-linux-riscv64-gnu": "1.74.0", - "@oxlint/binding-linux-riscv64-musl": "1.74.0", - "@oxlint/binding-linux-s390x-gnu": "1.74.0", - "@oxlint/binding-linux-x64-gnu": "1.74.0", - "@oxlint/binding-linux-x64-musl": "1.74.0", - "@oxlint/binding-openharmony-arm64": "1.74.0", - "@oxlint/binding-win32-arm64-msvc": "1.74.0", - "@oxlint/binding-win32-ia32-msvc": "1.74.0", - "@oxlint/binding-win32-x64-msvc": "1.74.0" - }, - "peerDependencies": { - "oxlint-tsgolint": ">=0.24.0", - "vite-plus": "*" - }, - "peerDependenciesMeta": { - "oxlint-tsgolint": { - "optional": true - }, - "vite-plus": { - "optional": true - } - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/playwright": { - "version": "1.61.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.1.tgz", - "integrity": "sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.61.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.61.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz", - "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/postcss": { - "version": "8.5.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.20.tgz", - "integrity": "sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.16", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-clientside-effect": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.8.tgz", - "integrity": "sha512-ma2FePH0z3px2+WOu6h+YycZcEvFmmxIlAb62cF52bG86eMySciO/EQZeQMXd07kPCYB0a1dWDT5J+KE9mCDUw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.13" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - } - }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/react-focus-lock": { - "version": "2.13.7", - "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.7.tgz", - "integrity": "sha512-20lpZHEQrXPb+pp1tzd4ULL6DyO5D2KnR0G69tTDdydrmNhU7pdFmbQUYVyHUgp+xN29IuFR0PVuhOmvaZL9Og==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.0.0", - "focus-lock": "^1.3.6", - "prop-types": "^15.6.2", - "react-clientside-effect": "^1.2.7", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", - "license": "MIT" - }, - "node_modules/rolldown": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", - "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.139.0", - "@rolldown/pluginutils": "^1.0.0" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.5", - "@rolldown/binding-darwin-arm64": "1.1.5", - "@rolldown/binding-darwin-x64": "1.1.5", - "@rolldown/binding-freebsd-x64": "1.1.5", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", - "@rolldown/binding-linux-arm64-gnu": "1.1.5", - "@rolldown/binding-linux-arm64-musl": "1.1.5", - "@rolldown/binding-linux-ppc64-gnu": "1.1.5", - "@rolldown/binding-linux-s390x-gnu": "1.1.5", - "@rolldown/binding-linux-x64-gnu": "1.1.5", - "@rolldown/binding-linux-x64-musl": "1.1.5", - "@rolldown/binding-openharmony-arm64": "1.1.5", - "@rolldown/binding-wasm32-wasi": "1.1.5", - "@rolldown/binding-win32-arm64-msvc": "1.1.5", - "@rolldown/binding-win32-x64-msvc": "1.1.5" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/scroll-into-view-if-needed": { - "version": "2.2.31", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", - "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", - "license": "MIT", - "dependencies": { - "compute-scroll-into-view": "^1.0.20" - } - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "license": "MIT" - }, - "node_modules/simple-swizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/vite": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.5.tgz", - "integrity": "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.5", - "postcss": "^8.5.17", - "rolldown": "~1.1.5", - "tinyglobby": "^0.2.17" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", - "esbuild": "^0.27.0 || ^0.28.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - } - } -} diff --git a/apps/mini/package.json b/apps/mini/package.json deleted file mode 100644 index f985546..0000000 --- a/apps/mini/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "senlinai-mini", - "private": true, - "version": "1.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc -b && vite build", - "lint": "oxlint", - "visual-check": "node scripts/visual-check.mjs", - "tauri": "tauri", - "desktop:dev": "tauri dev", - "desktop:build": "tauri build --no-bundle" - }, - "dependencies": { - "@arco-design/web-react": "^2.66.16", - "@tauri-apps/api": "^2.9.0", - "react": "^18.3.1", - "react-dom": "^18.3.1" - }, - "devDependencies": { - "@tauri-apps/cli": "^2.9.3", - "@types/node": "^24.13.2", - "@types/react": "^18.3.23", - "@types/react-dom": "^18.3.7", - "@vitejs/plugin-react": "^6.0.3", - "oxlint": "^1.71.0", - "playwright": "^1.61.1", - "typescript": "~6.0.2", - "vite": "^8.1.1" - } -} diff --git a/apps/mini/src-tauri/Cargo.lock b/apps/mini/src-tauri/Cargo.lock deleted file mode 100644 index a08f31d..0000000 --- a/apps/mini/src-tauri/Cargo.lock +++ /dev/null @@ -1,4395 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anyhow" -version = "1.0.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" - -[[package]] -name = "atk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" -dependencies = [ - "atk-sys", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "autocfg" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" -dependencies = [ - "serde_core", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" -dependencies = [ - "objc2", -] - -[[package]] -name = "brotli" -version = "8.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "bumpalo" -version = "3.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" - -[[package]] -name = "bytemuck" -version = "1.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" -dependencies = [ - "serde", -] - -[[package]] -name = "cairo-rs" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" -dependencies = [ - "bitflags 2.13.1", - "cairo-sys-rs", - "glib", - "libc", - "once_cell", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "camino" -version = "1.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f2d30e4173c4026932d51d31d6b0613b1fd3014bf3f9f8943d4ba139c437ba0" -dependencies = [ - "serde_core", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 2.0.19", -] - -[[package]] -name = "cargo_toml" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" -dependencies = [ - "serde", - "toml 0.9.12+spec-1.1.0", -] - -[[package]] -name = "cc" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89588d05638b5b4594a3348a2d6c20277e43a7f5c5202b05cc56888475a47b8" -dependencies = [ - "find-msvc-tools", - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" -dependencies = [ - "byteorder", - "fnv", - "uuid", -] - -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "chrono" -version = "0.4.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" -dependencies = [ - "iana-time-zone", - "num-traits", - "serde", - "windows-link 0.2.1", -] - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "time", - "version_check", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core-graphics" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" -dependencies = [ - "bitflags 2.13.1", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.13.1", - "core-foundation", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cssparser" -version = "0.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa", - "phf", - "smallvec", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn 2.0.119", -] - -[[package]] -name = "ctor" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" -dependencies = [ - "ctor-proc-macro", - "dtor", -] - -[[package]] -name = "ctor-proc-macro" -version = "0.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" - -[[package]] -name = "darling" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.119", -] - -[[package]] -name = "darling_macro" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "dbus" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab69f03cc8c4340c9c8e315114e1658e6775a9b16a04357973aa21cec22b32e" -dependencies = [ - "libc", - "libdbus-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "deranged" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "serde_core", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.119", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.61.2", -] - -[[package]] -name = "dispatch2" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" -dependencies = [ - "bitflags 2.13.1", - "block2", - "libc", - "objc2", -] - -[[package]] -name = "displaydoc" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "dlopen2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" -dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] - -[[package]] -name = "dlopen2_derive" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "dom_query" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" -dependencies = [ - "bit-set", - "cssparser", - "foldhash", - "html5ever", - "precomputed-hash", - "selectors", - "tendril", -] - -[[package]] -name = "dpi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" -dependencies = [ - "serde", -] - -[[package]] -name = "dtoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" - -[[package]] -name = "dtoa-short" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" -dependencies = [ - "dtoa", -] - -[[package]] -name = "dtor" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" -dependencies = [ - "dtor-proc-macro", -] - -[[package]] -name = "dtor-proc-macro" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "embed-resource" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd" -dependencies = [ - "cc", - "memchr", - "rustc_version", - "toml 1.1.3+spec-1.1.0", - "vswhom", - "winreg", -] - -[[package]] -name = "embed_plist" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "erased-serde" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" -dependencies = [ - "serde", - "serde_core", - "typeid", -] - -[[package]] -name = "fastrand" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version", -] - -[[package]] -name = "find-msvc-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "flate2" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" - -[[package]] -name = "futures-executor" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" - -[[package]] -name = "futures-macro" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "futures-sink" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" - -[[package]] -name = "futures-task" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" - -[[package]] -name = "futures-util" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "slab", -] - -[[package]] -name = "gdk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", - "once_cell", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gdk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkwayland-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" -dependencies = [ - "gdk-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkx11" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib", - "libc", - "x11", -] - -[[package]] -name = "gdkx11-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps", - "x11", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "libc", - "r-efi 5.3.0", - "wasip2", -] - -[[package]] -name = "getrandom" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" -dependencies = [ - "cfg-if", - "libc", - "r-efi 6.0.0", -] - -[[package]] -name = "gio" -version = "0.18.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", - "libc", - "once_cell", - "pin-project-lite", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "gio-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", - "winapi", -] - -[[package]] -name = "glib" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" -dependencies = [ - "bitflags 2.13.1", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "memchr", - "once_cell", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "glib-macros" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" -dependencies = [ - "heck 0.4.1", - "proc-macro-crate 2.0.2", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "glib-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" -dependencies = [ - "libc", - "system-deps", -] - -[[package]] -name = "glob" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" - -[[package]] -name = "gobject-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gtk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" -dependencies = [ - "atk", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "gtk3-macros" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "html5ever" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" -dependencies = [ - "log", - "markup5ever", -] - -[[package]] -name = "http" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "hyper" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-util" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core 0.62.2", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "ico" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" -dependencies = [ - "byteorder", - "png 0.17.16", -] - -[[package]] -name = "icu_collections" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" - -[[package]] -name = "icu_properties" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" - -[[package]] -name = "icu_provider" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" -dependencies = [ - "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", -] - -[[package]] -name = "infer" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" -dependencies = [ - "cfb", -] - -[[package]] -name = "ipnet" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "javascriptcore-rs" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" -dependencies = [ - "bitflags 1.3.2", - "glib", - "javascriptcore-rs-sys", -] - -[[package]] -name = "javascriptcore-rs-sys" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys 0.3.1", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" -dependencies = [ - "jni-sys 0.4.1", -] - -[[package]] -name = "jni-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" -dependencies = [ - "jni-sys-macros", -] - -[[package]] -name = "jni-sys-macros" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" -dependencies = [ - "quote", - "syn 2.0.119", -] - -[[package]] -name = "js-sys" -version = "0.3.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" -dependencies = [ - "cfg-if", - "futures-util", - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" -dependencies = [ - "jsonptr", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "jsonptr" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "keyboard-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" -dependencies = [ - "bitflags 2.13.1", - "serde", - "unicode-segmentation", -] - -[[package]] -name = "libappindicator" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" -dependencies = [ - "glib", - "gtk", - "gtk-sys", - "libappindicator-sys", - "log", -] - -[[package]] -name = "libappindicator-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" -dependencies = [ - "gtk-sys", - "libloading", - "once_cell", -] - -[[package]] -name = "libc" -version = "0.2.189" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" - -[[package]] -name = "libdbus-sys" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" -dependencies = [ - "pkg-config", -] - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "libredox" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" -dependencies = [ - "libc", -] - -[[package]] -name = "litemap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" - -[[package]] -name = "markup5ever" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" -dependencies = [ - "log", - "tendril", - "web_atoms", -] - -[[package]] -name = "memchr" -version = "2.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "muda" -version = "0.19.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878" -dependencies = [ - "crossbeam-channel", - "dpi", - "gtk", - "keyboard-types", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "once_cell", - "png 0.18.1", - "serde", - "thiserror 2.0.19", - "windows-sys 0.61.2", -] - -[[package]] -name = "ndk" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" -dependencies = [ - "bitflags 2.13.1", - "jni-sys 0.3.1", - "log", - "ndk-sys", - "num_enum", - "raw-window-handle", - "thiserror 1.0.69", -] - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys 0.3.1", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "num-conv" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "objc2" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" -dependencies = [ - "objc2-encode", - "objc2-exception-helper", -] - -[[package]] -name = "objc2-app-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" -dependencies = [ - "bitflags 2.13.1", - "block2", - "objc2", - "objc2-core-foundation", - "objc2-foundation", -] - -[[package]] -name = "objc2-cloud-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" -dependencies = [ - "bitflags 2.13.1", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-data" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-foundation" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" -dependencies = [ - "bitflags 2.13.1", - "dispatch2", - "objc2", -] - -[[package]] -name = "objc2-core-graphics" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" -dependencies = [ - "bitflags 2.13.1", - "dispatch2", - "objc2", - "objc2-core-foundation", - "objc2-io-surface", -] - -[[package]] -name = "objc2-core-image" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-location" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-text" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" -dependencies = [ - "bitflags 2.13.1", - "objc2", - "objc2-core-foundation", - "objc2-core-graphics", -] - -[[package]] -name = "objc2-encode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" - -[[package]] -name = "objc2-exception-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" -dependencies = [ - "cc", -] - -[[package]] -name = "objc2-foundation" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" -dependencies = [ - "bitflags 2.13.1", - "block2", - "objc2", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-io-surface" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" -dependencies = [ - "bitflags 2.13.1", - "objc2", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" -dependencies = [ - "bitflags 2.13.1", - "objc2", - "objc2-core-foundation", - "objc2-foundation", -] - -[[package]] -name = "objc2-ui-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" -dependencies = [ - "bitflags 2.13.1", - "block2", - "objc2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-image", - "objc2-core-location", - "objc2-core-text", - "objc2-foundation", - "objc2-quartz-core", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-web-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" -dependencies = [ - "bitflags 2.13.1", - "block2", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "pango" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" -dependencies = [ - "gio", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link 0.2.1", -] - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros", - "phf_shared", - "serde", -] - -[[package]] -name = "phf_codegen" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "pkg-config" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" - -[[package]] -name = "plist" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da1d65da6dd5d1e44199ac0f58712d241c0f439f80adea8924d832384087f85" -dependencies = [ - "base64 0.22.1", - "indexmap 2.14.0", - "quick-xml", - "serde", - "time", -] - -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "png" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" -dependencies = [ - "bitflags 2.13.1", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "potential_utf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" -dependencies = [ - "toml_datetime 0.6.3", - "toml_edit 0.20.2", -] - -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit 0.25.13+spec-1.1.0", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quick-xml" -version = "0.41.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "raw-window-handle" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.13.1", -] - -[[package]] -name = "redox_users" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" -dependencies = [ - "getrandom 0.2.17", - "libredox", - "thiserror 2.0.19", -] - -[[package]] -name = "ref-cast" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.3", -] - -[[package]] -name = "regex" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" - -[[package]] -name = "reqwest" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "sync_wrapper", - "tokio", - "tokio-util", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", -] - -[[package]] -name = "rustc-hash" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustversion" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schemars" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", - "url", - "uuid", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.119", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "selectors" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" -dependencies = [ - "bitflags 2.13.1", - "cssparser", - "derive_more", - "log", - "new_debug_unreachable", - "phf", - "phf_codegen", - "precomputed-hash", - "rustc-hash", - "servo_arc", - "smallvec", -] - -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "senlinai-mini" -version = "1.0.0" -dependencies = [ - "serde", - "serde_json", - "tauri", - "tauri-build", - "windows", -] - -[[package]] -name = "serde" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-untagged" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" -dependencies = [ - "erased-serde", - "serde", - "serde_core", - "typeid", -] - -[[package]] -name = "serde_core" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.229" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.3", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "serde_json" -version = "1.0.151" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_repr" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.3", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_spanned" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" -dependencies = [ - "serde_core", -] - -[[package]] -name = "serde_with" -version = "3.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" -dependencies = [ - "base64 0.22.1", - "bs58", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.14.0", - "schemars 0.9.0", - "schemars 1.2.1", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "serialize-to-javascript" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "servo_arc" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" - -[[package]] -name = "simd-adler32" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" - -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" - -[[package]] -name = "socket2" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "softbuffer" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" -dependencies = [ - "bytemuck", - "js-sys", - "ndk", - "objc2", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation", - "objc2-quartz-core", - "raw-window-handle", - "redox_syscall", - "tracing", - "wasm-bindgen", - "web-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "soup3" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" -dependencies = [ - "futures-channel", - "gio", - "glib", - "libc", - "soup3-sys", -] - -[[package]] -name = "soup3-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "string_cache" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] - -[[package]] -name = "string_cache_codegen" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "swift-rs" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.119" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck 0.5.0", - "pkg-config", - "toml 0.8.2", - "version-compare", -] - -[[package]] -name = "tao" -version = "0.35.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9" -dependencies = [ - "bitflags 2.13.1", - "block2", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dbus", - "dispatch2", - "dlopen2", - "dpi", - "gdkwayland-sys", - "gdkx11-sys", - "gtk", - "jni", - "libc", - "log", - "ndk", - "ndk-sys", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-ui-kit", - "once_cell", - "parking_lot", - "percent-encoding", - "raw-window-handle", - "tao-macros", - "unicode-segmentation", - "url", - "windows", - "windows-core 0.61.2", - "windows-version", - "x11-dl", -] - -[[package]] -name = "tao-macros" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - -[[package]] -name = "tauri" -version = "2.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "667b20e2726d572dea2de7370da16e188eb06008faf9a92fab7cdc46791190b5" -dependencies = [ - "anyhow", - "bytes", - "cookie", - "dirs", - "dunce", - "embed_plist", - "getrandom 0.3.4", - "glob", - "gtk", - "heck 0.5.0", - "http", - "jni", - "libc", - "log", - "mime", - "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-ui-kit", - "objc2-web-kit", - "percent-encoding", - "plist", - "raw-window-handle", - "reqwest", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "swift-rs", - "tauri-build", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "thiserror 2.0.19", - "tokio", - "tray-icon", - "url", - "webkit2gtk", - "webview2-com", - "window-vibrancy", - "windows", -] - -[[package]] -name = "tauri-build" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9ce40b16101cb6ea63d3e221567affd1c3a9205f95d7bc574941a10636b632" -dependencies = [ - "anyhow", - "cargo_toml", - "dirs", - "glob", - "heck 0.5.0", - "json-patch", - "schemars 0.8.22", - "semver", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", - "walkdir", -] - -[[package]] -name = "tauri-codegen" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08279169ff42f8fc45a1dbc9dcae888893ba95288142e5880c59b93a26d2cfc5" -dependencies = [ - "base64 0.22.1", - "brotli", - "ico", - "json-patch", - "plist", - "png 0.17.16", - "proc-macro2", - "quote", - "semver", - "serde", - "serde_json", - "sha2", - "syn 2.0.119", - "tauri-utils", - "thiserror 2.0.19", - "time", - "url", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b394794f399a421811d06966343e7933fcae92d59f5180b9388d1174497a45" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.119", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-runtime" -version = "2.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b4bc95aed361b0019067d189a1174a603d460d0f6c72606512d59fc9c12ec8" -dependencies = [ - "cookie", - "dpi", - "gtk", - "http", - "jni", - "objc2", - "objc2-ui-kit", - "objc2-web-kit", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror 2.0.19", - "url", - "webkit2gtk", - "webview2-com", - "windows", -] - -[[package]] -name = "tauri-runtime-wry" -version = "2.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e6fac707727b7a2f48e4ded90976324267371073edbb415ffb73bb0458d203f" -dependencies = [ - "gtk", - "http", - "jni", - "log", - "objc2", - "objc2-app-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "softbuffer", - "tao", - "tauri-runtime", - "tauri-utils", - "url", - "webkit2gtk", - "webview2-com", - "windows", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "2.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887" -dependencies = [ - "anyhow", - "brotli", - "cargo_metadata", - "ctor", - "dom_query", - "dunce", - "glob", - "http", - "infer", - "json-patch", - "log", - "memchr", - "phf", - "plist", - "proc-macro2", - "quote", - "regex", - "schemars 0.8.22", - "semver", - "serde", - "serde-untagged", - "serde_json", - "serde_with", - "swift-rs", - "thiserror 2.0.19", - "toml 1.1.3+spec-1.1.0", - "url", - "urlpattern", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-winres" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" -dependencies = [ - "dunce", - "embed-resource", - "toml 1.1.3+spec-1.1.0", -] - -[[package]] -name = "tendril" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08" -dependencies = [ - "new_debug_unreachable", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" -dependencies = [ - "thiserror-impl 2.0.19", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" -dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.3", -] - -[[package]] -name = "time" -version = "0.3.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e1d5e639ff6bab73cb6885cc7e7b1de96c3f32c68ec55f3952614bec1092244" -dependencies = [ - "deranged", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" - -[[package]] -name = "time-macros" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-util" -version = "0.7.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.3", - "toml_edit 0.20.2", -] - -[[package]] -name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "indexmap 2.14.0", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 0.7.15", -] - -[[package]] -name = "toml" -version = "1.1.3+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c" -dependencies = [ - "indexmap 2.14.0", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 1.0.4", -] - -[[package]] -name = "toml_datetime" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.1.1+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.14.0", - "toml_datetime 0.6.3", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" -dependencies = [ - "indexmap 2.14.0", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.3", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.25.13+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" -dependencies = [ - "indexmap 2.14.0", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "winnow 1.0.4", -] - -[[package]] -name = "toml_parser" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" -dependencies = [ - "winnow 1.0.4", -] - -[[package]] -name = "toml_writer" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" -dependencies = [ - "bitflags 2.13.1", - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", - "url", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tray-icon" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65ba1e5f6b9ef9fd87e21b9c6f351554dbd717960089168fcfdef854686961dc" -dependencies = [ - "crossbeam-channel", - "dirs", - "libappindicator", - "muda", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation", - "once_cell", - "png 0.18.1", - "serde", - "thiserror 2.0.19", - "windows-sys 0.61.2", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - -[[package]] -name = "typenum" -version = "1.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" - -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "unicode-segmentation" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", - "serde_derive", -] - -[[package]] -name = "urlpattern" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" -dependencies = [ - "regex", - "serde", - "unic-ucd-ident", - "url", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" -dependencies = [ - "getrandom 0.4.3", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "version-compare" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "vswhom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" -dependencies = [ - "libc", - "vswhom-sys", -] - -[[package]] -name = "vswhom-sys" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.4+wasi-0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.126" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.126" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.126" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.119", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.126" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-streams" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "web-sys" -version = "0.3.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web_atoms" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "075474b12bcb3d2e3d4546580e9de478eeeead668a1761e2a8860c836b7ef297" -dependencies = [ - "phf", - "phf_codegen", - "string_cache", - "string_cache_codegen", -] - -[[package]] -name = "webkit2gtk" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" -dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup3", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" -dependencies = [ - "bitflags 1.3.2", - "cairo-sys-rs", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pkg-config", - "soup3-sys", - "system-deps", -] - -[[package]] -name = "webview2-com" -version = "0.38.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows", - "windows-core 0.61.2", - "windows-implement", - "windows-interface", -] - -[[package]] -name = "webview2-com-macros" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "webview2-com-sys" -version = "0.38.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" -dependencies = [ - "thiserror 2.0.19", - "windows", - "windows-core 0.61.2", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "window-vibrancy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" -dependencies = [ - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "raw-window-handle", - "windows-sys 0.59.0", - "windows-version", -] - -[[package]] -name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections", - "windows-core 0.61.2", - "windows-future", - "windows-link 0.1.3", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", -] - -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", - "windows-threading", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-version" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" - -[[package]] -name = "winnow" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.55.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" -dependencies = [ - "cfg-if", - "windows-sys 0.59.0", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "writeable" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" - -[[package]] -name = "wry" -version = "0.55.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514" -dependencies = [ - "base64 0.22.1", - "block2", - "cookie", - "crossbeam-channel", - "dirs", - "dom_query", - "dpi", - "dunce", - "gdkx11", - "gtk", - "http", - "javascriptcore-rs", - "jni", - "libc", - "ndk", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "objc2-ui-kit", - "objc2-web-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "sha2", - "soup3", - "tao-macros", - "thiserror 2.0.19", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows", - "windows-core 0.61.2", - "windows-version", - "x11-dl", -] - -[[package]] -name = "x11" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" -dependencies = [ - "libc", - "pkg-config", -] - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "yoke" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", - "synstructure", -] - -[[package]] -name = "zerofrom" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", - "synstructure", -] - -[[package]] -name = "zerotrie" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - -[[package]] -name = "zmij" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/apps/mini/src-tauri/Cargo.toml b/apps/mini/src-tauri/Cargo.toml deleted file mode 100644 index e7323ea..0000000 --- a/apps/mini/src-tauri/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "senlinai-mini" -version = "1.0.0" -description = "森林AI 迷你停靠客户端" -authors = ["森林AI"] -edition = "2021" - -[lib] -name = "senlinai_mini_lib" -crate-type = ["staticlib", "cdylib", "rlib"] - -[build-dependencies] -tauri-build = { version = "2", features = [] } - -[dependencies] -tauri = { version = "2", features = [] } -serde = { version = "1", features = ["derive"] } -serde_json = "1" - -[target.'cfg(windows)'.dependencies] -windows = { version = "0.61", features = [ - "Win32_Foundation", - "Win32_Graphics_Gdi", - "Win32_UI_Shell", - "Win32_UI_WindowsAndMessaging", -] } diff --git a/apps/mini/src-tauri/build.rs b/apps/mini/src-tauri/build.rs deleted file mode 100644 index d860e1e..0000000 --- a/apps/mini/src-tauri/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build() -} diff --git a/apps/mini/src-tauri/icons/128x128.png b/apps/mini/src-tauri/icons/128x128.png deleted file mode 100644 index e54c249b276fae4bc738ebebee8840eba41b62da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3377 zcmV-14bJk3P))C{n(mWjYLJMcBvF*T zj*98eh$K-T$4%sm03O>)ghn&J%j76H2bWMF8uR)=VJUqZUZ6#)eB{v|@$1eo6>Z;;aTny~5a z`wVi3p1Yio4tYj^1)Jp8n2m1{aCk@rqSj0MrRQ8Fz=X;_!Bl>OfPf1YB$-KAW5pzd ztb}wo($p=$=SUb9zy#PhssV6=u@qbR!qMZ_L97bX8Z-F=$&A_u%Y?JXzjHVvM9Ynu z1H&c&HeZ1618cxAQv5SJeE^o#YZW%%Up|3?nH?qoaXzK!Z857plrTM7Do-E@yIZxP`8-XCbOqydyZGb2TBV}U`mEc!laZ^$rA`!v6SepI-*(C>~+2R{}#?;*R9#_yZ9e=T~S|m z^$-n>5S{5~uX_U$5im^IABPM%f%7-XgMQTj0DE173U*_?J>S{cqmtriQYD37ox#id zr8y-DFtOp&?WZTh>fU%SyH+v+EOPcW3A-?fdQmpHFaqTp+@W zfAoPykaDrji2@|fGk?wZ6MgWK_ux+@0>*@~@xDn^Itq|zG0A+Y`&XLmbL^bZN-zuS zmJ@AFaB3ESZ7B`FWA6U}HmUDy=NEjvV2l_m#?0g1K-o2cZp*gEiT3_PU15HTN-$=O zokVY-b%Dy~$<~{dC)YAE%ur2&AV7tIuXhk3ypn)R0ziH8XhVZYf(VZ*KS<#7PJ$3` zHZurnzi8rUr654T@W~HebJ-fMnXhm*#7o!&)n6%sXXPcV4e>G|Q}^eCELv7mIDr$Y z-%Y0v`})|^AG)Ew)T|fQ1*U2M&zwNS!*+s? zGA&G`+pB5!U)1~VK5WgrKnr-88}Lj6*k$`sqlao7qt4XK8LIOIC-2U>3<>dftVTG8 znzKk+L1?dWF!%o0yu;|G7MQ95JRtx)VC4JDl@|{fTk*B?RGV$JXcQ|Oz65*<5Mua- z{To?7dfh&Mg?lG(oed`qY;9w;cpb%8IvgzAtK1L{T0*P;0~y*ToWVjwK)(N@UN!4y zW=@WDSBMEH*ZC_2K34kn$DPf#fe1SesJ;gk=~4Lo^Tx)3?`w!xfChm2F9(<%e<%z- zY&w9qJJ){VT#CB-(sc3qgsq=VwC0X5?Q9NFoP~lDe$$GZS}nX+^R`hQ6FFe z%$h-#Qmt8CHp_ZQj$NQra|S8e&Q{DVbLh#1OX;z%#wZA4WsZE~1DG`dO43F1`lsC_ z`Js0y{q@r%&l${wTK^rS=RfVDhdzFnhQ@E&HrCqN&b-$tGZ~1Y&>Y*}k=bC8*B;LT zJ}2g8M0g^3oXqSYboFFkdTCs2d}`J#36uEMFavU@Rdz$|7Xe>Sg15dnub2Y>+S!{8 ztWn#lL@RY+x^+>S(&5spUvmI$(LD14OaQYX4#Fqo-7m&282-%9PxsQ+w_|0ec|n${ z^AT#iXPjovEDU~pRmApsLD3qfBMh=^U;Aj#@Mr#4J!qR<8yl18>q*d`zG~VWxP1&A_a*?&*l%91Cu#M076}yp6_lErHMDJ2j2fS^?o8ox z+Gjx^Wc0L(AQ0h>d#@V)E|>z|{Q<5CfI>@T0+p40jFsN5eXk%1>Z@z$Pv5+sW<{Lw zL$r#Z!(*d{KL;%!d;tAw?lm5U{cu+Xd_`_fBk6AsQs~r*EISYXVArx0^!IxnWZ+NZ zZi3Agcy#s#SOc8xHwHecXbPROHS^ywdgFUB&pK=o>KR?x0~e>$-h_HKvC(btv;6_q z07e`fq<;&64~Gt0tzNcQo3ZKdAHPl2X0NKLXC9qER|x=Mt%fkH7*zi^&VOJ`RL8CKT7l}u|mQSJ_)ehk{iRpU~XgnAo}4BvfK z^-7$NP*3v-v{dl0G?#uQo8Rj{S_yptnB0>uslE4(5^dsa|H<YV+FiTEwZ+dIRyGP>tmjKX?tiejG?xVFerM0LmLNT=Awa z(9={fChe7G>yutASwseYKuWXAg#gq4a1^dm9l;n2)V-Bz;H->ir4RsQH5%w<8&akwo0Jx>WbW=@xfQ)2TB-0bu$w{XuC>b-AYHQvymY%y9@EbA!38p4 zqe|Zy3~gfNp71$~an(zLErxrQj04Nbmib{y?jMWN8y1 zQ()_IjFez|U8e1*$Obe(Buwo=eSYNUivf&(^GgojlEO`RH z2R#JZ(dCsD@OCge2RR{vrhu9M0+>pL zJ`i*>P+58E05c?2gj+i_DuYLtfvjpf%NY{iG2*&E4z|wq8 zAebZe2K=4-FShzi5&+C$-eZfHO5b|^EyY&9p{n4^3F#2)DBmrn(`T!nVFv6>pAb?o zEZihxkKk@GwZ4!~*g+5tw)O>7hiSF&2Yh1p8CGO>V+d>s+f3LXLPNeoK44VJ?py8* z8c0aVs*unGysms;1B}W#CCrFKo8+32l(M-Xd;(5vKGeRMm0uPCG+D4&Ze?eR#l`%4 z>+N6KC$)Ie9ID(nOpgka;8B4moBMLWFIxj-nS`{GFlrGyh|W8D?7ywZ@L5s$ju1c) z!GFLzLIAzYZ<04iDQaR>#;XMxtb?vpXR%@qBUwGJ2%wkRCb?le#fTtLl#u}$swgWt zTPzUHY1-&hO1D|{E($o!hIHH#KnRK6Kp}zvLIeSX@FxEUc~9dBu;L)p00000NkvXX Hu0mjfo}5^7 diff --git a/apps/mini/src-tauri/icons/128x128@2x.png b/apps/mini/src-tauri/icons/128x128@2x.png deleted file mode 100644 index 2d620ac96e70b88e8b7aae70ce232196f14b2ae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6933 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 diff --git a/apps/mini/src-tauri/icons/32x32.png b/apps/mini/src-tauri/icons/32x32.png deleted file mode 100644 index c843a553778e0dd860a2f1d9fdae3bec1551be14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmV;P17ZA$P)5dQA232wNpSh>*_38igR_EtnjQ1)P}*$=b`f<6TWY7h~TAlXwGX;36YD+obg zv6K*~;Zvb6nHFmHP^LjEhCh`SwR@YnclZ9db@$%QpMkS`?)jOSGxN>NIVo6XN|`^f zsa$l;Mo>lF5{THfAW{UpqTisyhQ<%g!jyhWL+&!MJObRHu4|DFJY@sUeQpt&;}nPr z4=jb*Nr{S>5`tp(Fy1fX$>S{Hup^t@VdF3Id9_vHP6x0%M{eA=NUo?%1%yY<3au;x z4ihvztMzkZ6F@sb?dB6;X4aGvEVEW}!P+uWOtkvsUf}Yn#HVH9S04baFA{4o-XaJo zW>l>zrdDL$HPy$2%_gYRw^H0NOpHCg+>yBQadsz1UwheOg zQmZ(muH(Io3nNSzT7a2peLnCJD6I!h-vUNSaHS8pe;znaCuI;dkjZ^l|m8anYtb#7<2h)4Zlc)dW+OFMjZg0hBr7-7Ls0j-caLU!0WiKgn6 z@HkU->v~2a=pK;+$zMQ)#AjE+RLjGX0()}x->u(XLp=Bfh5ajV*Het?sZj4UsE*D2{ssT-?@0fVDgjTjz_1ODGy#Q2LKt#|5D8}? z*X~ZP94mkuRr~FP_@SpekhU4fcW0o!HX|+}jZFyXT@{l0!;uiy{d6m9w7g6!z@Ym| zEuEP3koo-EGYHZ96{Z}1pT5vPHBY7t&Kz5oB>Z_-7TVqcO=o2uMqy~^0#2tKMm2tQ z>>-T>I@MF9r;(7kn6KSbE8MuWj}+Ug@<=)i1JCqv%;9veQ_gUA&gcsg$3Cy;1jV3> zp`XW$FG~rE5ewtoo(x?G7+ZjgQNmi#8a269;yq?6qNy@_2FNMW8>90rjaE5D=t#nrCG< zCzt$-|Mgf2Di)v@O9Kr|FPYs*mLxN#fOJ0>h($07*qoM6N<$g4#>2 AeE|B~dbqxH6`} zSeb{+v&_>Sp4aK~`+T3@KhN`e{GV|-1?Pve+(&x6+*0s5pqe-xD z-($_fdv|g~PngH{bZ9F7@*^3{;38wiIlQWcRXR_v8m5^J4K#BVe>D*Pc}`{BQvKS4 z+4yL6# z-(CtUeONCXsQkUHMxUTlvQYkv{Y~!!0Pvs>z@ZNUfc`uadF-*avJ zR1*hrPSAfO+zne?DaLHGT*1NfnL=|t$5wB>H276(RjrdKo7RGFDX^5#074pfq?PM8 z3!#!IJ~n@c(dB`S&E`8j$9H0I@FosN?T$_JzZkcRLSgqjCmR$ugazJ%T$i&I9??&b zIeU)2k_@hLOfAv%CLoaBYq1<^y;Ar`f~b4cd<6l&AoBugvPDlE3%1sp&6}Ns0iNUC zd5r;u+IPtkdDm0CPTps*o=7V-GAe{2wt z)_8Gye-tL_EZ^3Berv#VTXi3TgRrY-`|*#=*O$*zd;Z)P0TSk={i9cR2?Np!>I=I( z4kA)Oc<2&>AAXygPaLcY0@97=l3a`Lj_MOaK?@@uT%jCQu((#uaRGxZ!Y6)uRIlj)TQ=ZlKZQ9k`2*zd!gnI z2F`3DV9W+Mc(j6rQ~_Xt*5j;Oh5JJv3?I%`0XnnwX9Utd7f zZ(CG1{9{Keux0{VhIT8js0_a`XPLcyi3uhY7Hll4tGB{`_6T|!8|N*GgtkiCmeks=#~m=giQxP|s@=&&GCAiBr|5CXk#8YnY`F~18pZqgbrq$2=l z3rn;3lolw@pLOnkBu8yW+=sG0DPjg7l9X zgJ@FMJo&i$y4}7#0LEpR^KF6F)z^D5%1`(18@fDhlhSV{5)l(4dswIbEoFM@*BvQL{+5fClU7ZmOPmKEUN zCh84bk^?j3blVvDvAjL{nplAHlfAt^JB|ci9?H0T2LpM}d~M=;sP23_0Hkc%*T-zu ze+Ju07z1+vmGjqf1~qpJ3xwzJ^+KeE4bls^X&p4tCOm*iixlATr-;7DzzXzb2VeVy*;KC7p z(eEG{@oA8lfpU_Vc|p2Vfgi;x#AUOkWszb+(;>eAAQZBHpNtwT-A_PBViI&8bW+mq zy}Zg9k^@=HTqVFI+`B+bO)jPAqi>w%&fSq-KXW3?{yqovxC9eR(vyw0IJcUH;=W|?yTvZE?O9X$+);DnSGiPHGE(d zN3lzIcWg=oK zHhK^7<@i~$Lu(SGo}kX`^s1%ICKG_b@f_P2_tzJ7rFcN^DPP_SVg*Z1UO8U-087xV-^N2 zeOgBwFRIR@CjF1+zvi2~-@k_iLJEjdRikBi0MhtgPUROaX~2a`+7OA}#sWBn&>p{t zRKSX=sIM%v8oToB03iK-)+4Cz%l7kl_QT*5YCguJ;EGJ% z$3~6NBiDpR$gN?qY$q2WiAX_IKzcFAJ1JST;_cMr!#;PJdd-r&s?xC8DqsCfFvfO6zd5 z;7IYx#xX_{&kf_l7yt;~{-V{fe}tkw;8L5K=Ud*ha7!Wp5wDa^Zp;$qtTAc8_2W8q z5YN+c|2K+CdN;~^|8e798JNP>4`8>uE06mBfPZ>gI7f`UBxHUkOu zI#I(%QcN05dH061-WQc*>h{X0HFAsN=U(0&!jKi`EQkP1TCMsA>hkb_;neI*q0zMq zhjyU?nCy86(xu#CA8?`uRFuI=iW%vZA&yxX8keUZ9p4E6Cz3IQ>>m|!6(=Gs_w53J zbFnWWUu?`@Y-b77{mG_BPDlNw|8q#j2LqN(k@)c}j4P`!Ts~cEO5cwnK6b=KVuBS% zicqb&7tiKhky#C$KInSFS?*dS>a7WwO5V`*N3c{d-NAfI{-xa*@WTT^e;N^<}}^c zW(#GwUXHXrW&<(P@P_2yKaJ8qfBu+c?nT5NwVPnZx?Krs00gtui`DyUKVIs>a79zG z0I8#E&0m->=2Mo{dmB+6j87H5y>-a`M?Mi1kR##)nztXQ1@^pRN2m0vPeRuK8vNDA zg&{2+3qX3I=nel?1{(Y%4w7*b0zjA-Pywqer-&t^t;Vk2(pUg4-UW=54^wr{>BapC z3IO2v_^DcG?o+=7dPLv?-PfiD0P4CbU?9O4QG1IOEq{A+Svo-u0B$x(xigU}QJf8a z{v5C@cT6pj_6DB8H2=QYSR4SsaQE08d|9W-e_f~HN6;qG7tF>39Hj3k6mat!N;#e8 z`kU4;O+S<%0{~Ax_-YT}KDecpD0u@<3r#yj8{IUkFaJ=Is0H+6Wj;}A8BB}P%`*XenfM}-~gmns2OT`K-huawdQnQyX zdMQtsfz+2}#nDNW533AY`9_6mE8S>Xz`*_;0EC=T9Zd85nmAHXg-vyBJd94XZU$jX zBHsXj)Mtu_+TtlKZ7ArPs?iLyOP5IMjEd+@XVa@S=?~h@^-6@X%Mq{u5QpcVQzW5x zpoRlE^*X%J<8+ExQuh}n-eZS^?U$B34^B@`uaQ_rhf2q-TaUh0)Q0RSrA z5<}>)A@nprsXde+1OUQ^T_lvwgHyKu#W5=^0O5wpNmGq&bkew!O7FBvi|L&8N;b}5 zR$s8pNx!{V6ZY%~2Qm1MVoJ)FCDw+uK`ZjuPrE{QV%?M87+T=+&J_2q=@Zyg4gZmQ zEgV0qcvV0n5(h#V?l*#8%w33z3G&)QEVVZrS-w2JqSl7bIx^U6$%>Onh@P7{P8XBs z5^|#4_VBHXRu?A@99i1*ii!cQ{z`TNB3fh##;2UMXf;(0jYST`hA)j(;<1#s%5NWe ze$HmaWj`6Je;j@HkKw(~4La~BL%X;HoajucPP)N*v;5zMoqsG0eGTdsz98C_U$J=3 z6G$J}MZfkUsZxXf5<^movm z+Vh^KD1Xim)#1CRUCNQ^K=4;i=OPu1G+XY%+Tc>^fCTp=Ify`eMd55 z4hRUH@D%mgp|*1WE`aA-H<%djg%W8ncnuylzwKfyXKrGK&Lqe?OHgDI&TKf_of`Ul zRvdTd>@ZTTh$DslQeDVqmjZ*DPcsGXV{<&@xtkc~9Ex}j#aTqjyXT&u4-6mD&953?k25N^lPirU?c@O3UW3fWxodm|7SThe3m&Bwn5g}pxS=+J+C zu_lbBzn`km=1^TNzVmr$Bs)RrZD%NdAulv!#MeiBFUGd|Y;Rdigwuz;>aYi_*}5o^ zVZ||t{Lt!VBIm+bt^6{`<^Y|EIfu$Mj++C~=jnEF3v^<`er)URATROY1r|42>yHqUPt36rCboG#PLko&RFoHbehiTXNySX6 zh^R^#8DGqUZTr=)s&w(UU+(s)x)ilkE@=JScZ+}wNfcO}gjR$EZiSS)f%WvS4LYe8 zwI>*I2V?m$^X`ERsZk%@1TcOPQYR2d6@Fh;w)kk{v{`yUO_p0L8|n>!aY}&l6<%R+GBl& z)Xi}EI!$?aIcGne@M->M%u3HATk&=m9Q;_-<8curq_MziIX6Jke&G?xMWzO8<}-Q1 z5O<{UWjYo_4OW>1q!|KNM-16P$|c&m2ve=~o)g0H#xG2yhggEi)%b8;W1acIr2CxXuFlLVdMoy+{p_FlWoV{R-o#Ln_v%MXZ{3WG~2 z_-YA5wlcTs5+L39;=|g37=Pmd7*>{XE4AxTer~tX?M&V|C7bLcJ5nb<-Y~k; zEbbSnj~)7uBY&gMY|!JGCDbRB;4(XNS9)*+MX&xOaX=!jEY>u6aTBUw0nQ!U2!?gsdhaDtNFtpBdW5&(n`;sj9QJU_Lb?aX%kns{ddJ zvR6Nfk={%`!pk@k%-(b~x$HI8TD4MS0n>DWMzKSR2v-=(%a=jd$oq%{vl2m3_8p(x zL>)Xz6X6mo!OWeJ!~vf&7-Kj}B_=Ufce+rbBE^5jG!E%); zjKv3=yLqN=Oy36!=ik8S3HM15h`(ZpK+Rh`VUiJ~GSWvs6^jLOU$aZNKxaZ*i=VMW zTzBF6&+AX+0lm!6i9}4;a1fs5ewCyQ21kkKL4(U6ElhPj%5pu?62=Z^C|z|Id@~ny z&>ivH?+~t!gzcJhKAS`HeIHN38f^G@`-~L-oRKmTEShJpijbNv z_~?%K9CO>z^~pvJ(lr|aquI&1wVgRClKPAdghrmj<^0$f!@8mR!w={rv+Vl4h zH@0NWGa&s(W6tZ&ft5XM1b#la{>&6ea-TLSBuntt^Jh2As~>+4Hdh~WkR}5K83+&a z$LzMHNu8HTiCx2`7$A5z#SvxcaIWlB?o@HNGy;xCw3xv#*z5LosNlpoELVv7{-K(X zoxXwM4uipqz$^@)NTbq-qMJ;Uj8nxbl~-qeVvGR<66#q61N8Y*#QDHxxhKeQ#P9dY z9u5))s-@qRD;v@9&b&KB%e`mJ{n?H3#(*am9{n0NFv1%1_^wUF{2GSV)x3!u!MrKZ zyz>CA=GS$A=FS7U^gHoHl2rFa($SW&hCBfdW=+Io(9gXK16*s{*w$U&qghkWbukY`lqb&J_k9d=Gg~tUr>4%IJus7PaoS#BF`%>f(8>1&i4gJjf#jK zR1s3BWP_+{sQ|_gM(KP_c#xFGsC{_7 zn2e+Xw1&jnwVt8PEii~S6r7)pZwO!_VSvDY!6$!IgcQz;vp1!#c8m;nu(KcZk$nIRQGbd!m&6NP}V#7PnZ5(dy%gccg$N8=w604)Dn zcn~y{--HJ#46p#;K5Vsz9TVBfgudVblGO57^8bwM{ntwhAeIQm4DdEbhnXa1{YhbX z&7}?@Ip{B(pHgQfAYgyDiQefRo_ON)A&@Frv3)vF_&;R+5r)PALeM|_%9qt=n}ZiF zp-RzZZbTDJcYkjQtuImAkT+#O!~KSjDOrM&C_!TYy@SODdNf4Jbm!0-XC&5G$n-u) z=`E3OW-EiST#lS`;3qf2AyO*>9<^6O-5){fLoL#ZEmJChnU&QlnYzalQv2EiUK%P9 z5O|a8ZFuuKm5KD`Ywq)qVRUKdD#Ph^)Uv5B;J1K93Capb{Zz6Lf;aIi0|^6Iga=3- zeIlSa6~k17<1hxOsUrfjBo-ZfX&4XppZo((VNnEXnoyJpiT-RbAdcYRzm4c(%W^+9 z)Da;}@dew5h8IGpuFCD*D($)N2m()5lAWbQQvo!UN{;N=VgkkaG*ZbAgarr|o6`$> zoESjyaTRA^3L;5#OT){|NWm+&nkYS^e_T#ONJHyK|{D|U;cs!q>n8FTMv#0NYNjsuqeSI z&%Ffy1)MQJ&%hS3|?95!hjJ=KEK(vU4C3La;TikCVFk7SA zN^-n$2yN%NB~v{o!pB5FATjf)z91*0mYLfOQ}-AHXw2Z@{=0whzwn+W3+{lh_tJf; zyr>Q}xGid!(hbTDMZCP zyiKh9$)CEEy|(_e@PAkI<~cC4<|6i}NUgY8ud zW1pkAw^O@^Q6(W4BLr%qpMC>)Yge%F6VH$HHlmU_6 zZB8wvGF6AhWXi}F$Hw`F#y|Io#MRiB0#gUhgxpzC^bz(G&iL9sQyoD2;Gf52?2VpT zrvO+Se;m7!l;#vpdvY(Tj@C366*ILE*6DLZsQ1?++ixa{giEA1PN(pdS%c-~hft)W z$q~0!>xbcG!6kk1&x48uv4hRWsZvucP7!G}aQ^8)$3nn&mmORs0C@>k^ttSiwf);O zrB=V>V^_8kB9L#*?rPsP_UW~2#g$-Cw>=4<-M4}?;Wb$;(v@7*Kh?M&dtVlA;{T9C z)<77^K6229Df7?0Z*pAX=`yU=Q|h$$?vc1uEC_r&;b$MUX5n;I?Dpjv{Ns`3u$miB z^+HH(hDhFX%>^ORuGDq9pHR~h4BH|6QR&5BcemX6=jArS*<1=%JY^q@ zBzfzfs#xEkL@1MFf$-|x#eS5R_Hc7%=2W+w1ylU z8ALHS)NPfpH>Tc2=0i5uqrF#|xP%Yty;`TWx$I&VhBPc3+}9uY`WI0t&7;Ws>Y9@a zxssyEdW|XbNRP168E<=0`)SPIEygq~yovsmpiA2q-PJ;G)z-zg4Rj;x4K6taG6{)- zgd#UYv>&U?$ECr9f}BG)PHUnPSN$@0&D)K5-e?7^zKU|glsN4y2T^a-@}I11{)+l- z8pbl;RJE|E{hZuH)#NvDGYWycPR+;?)&6pGAp(MCCTDZ>omWNDHDqk2w3XD^mc+}8 zTx8sKPLhA}AxSbmh}46-7!n5Jx;ovRUtrnJ-3g*fPx)RJxfBUP7XCq>7G;Kk1z5mX zPkPY^2Vt>!Yk5I+Z}~1o!o$zSc1}V*EK(o^1WRh@WbB<_Y)s;?k(qyF^@2^d3~5on ziFgnL(FlXydcI_kYw*^mQ zP4|hq@sgB3d+6E#mkR3Z@BboB28u09uDdLUCXT)!{Yn@MA^8U2MZFP%St&NP(G)JN zim<39e!YJ^?Dh8@Wi!1|3=1X2QJC}3{8#8{=J5ggp7BJQj zx%rS2SGe{^Tg-F4)&c1spMN|!STS$G{3iA%6+I`MqwF($yQX<(jVG(_PoX*2zVga@ z6Yt$+7|K%6joUas)UTh`=0a}u%fw^H4l-O^><-&z3->ZY2d7yXy?S!5_jk_(=eav# zgYR5;H~TD5vwZWDn|EMhVNxpWtJ`wEY;`3Lbw=Tpaf9P_N6nGB<u}V`YtmOTc-Qu%` zw;}|gLRnE>M$ z^A-DkruwMLZ<-zj6NS%X|@ML*by*PS&$W#s2N>w_4<4qV}-Y8YK zYMQuS>(KTiJV>vvqw&a9A;XpJ@gmx)qgbu3j>SXM8bvD}zqth-mU5Fl9Er)bMG1kc zSB7`msJJTkdkL&Cr(s3CfzTL8C9{ezE=gm5PGDq6$19T3)dyrH8&Rcgv!oU|CRR zgLVA)NjY05#;_WK_gL~$(SG}1`yJZc+K+?QC1WrK62}H*IxL5MY+n-o4}NY{X;fZi zpghG~&-5CZ^MT?u2$CLZ!w$G*B8viN%;dZ9f-(f^?>gRU11^$MrwfDJD z%W2HtlgI(Jr@LTrBaLjAr4^J8N%g>bVm17Y&-c{9^ zQj|w|Kna>#f4?%oXLC~`Rn~#)0X*OUW*z!Yo316|NJ>w~Za2$6b{{hz|INxYjpeq< zceD4dARLUI;tDJIUa~p8FirB55WUX}a^JZMFRY}H!0TDGMa$NhM^)c8r-%C_@U zydD{o#DZ|T9X0-NzWsONQ9;6DZsOjrd35?pN+a zy2RF4E^namHJ*DJY31nOxM(yO8~@#`8}7CrL#%t{N_M%amQN-m`;=+sium#&UUM z-KF&A!~x|(wf)p+8Sw_sqN@iPGno{pWRYySCzV6ffT*{RB zp5)E2H|y4E+tv!|9?!|RBKGR|BT~VLeMA60`4)u`RDQCzSg zp=Zy~3Q74&XJ041di$z(DpyebwR)t64{(t9uzu6?GH0NPP#AX!bCxds3?*F8ZCzI< z@6`p7afTONFRA00qF&yVe0KH-TbNwrA@I;F4?m*Bs4p6AZ`V$D52}qPMBM@#Zs&nLzQ2Pi&FPm-U+HKI$!f5Ztcwap{W6!lpGG2-+6n-^!^^l zk=!F|Cl?w$Sc~dJY-Jb%gMBi*zHc|SwGY*K8@v@G1@NPL`^?gQhw8Q_x=JIdzF=9f zG4Pe9PAFTQr^O{5R%AejL%(*)WT)uaoW@F4)HP8>nuwmVi5-d4)Pz#)L*(jXh@&(^ z;2d|<-3td_D4H;Aq>GW<(0c^W_c8r?l6J-Qo(ik6QTmr4TJ*}@MSWbMnX-Ne$?VK> zd5;t(^U~X*`6Mh4kQRABZWmT5JL=Z2BHv>NKP7m3SBofYX1Z>yPwC~K$;)$2d@Dw9 z37qVAKwaU(oS=Cj&o|{oODR3)Gt%d18QT>0jeFyIxZhDokP(9^=aMh>JQx> z8XK72hlp#h5S1Hx%j)!*QnTf2c0t)qH1Er?|R^;GxWvoo|Di8*^`W@DW$taH59Vk`08PQcqg0vjm<39J;6%?7XlJ?jE0$iwbo<9KbLtca zo|drn*OA&%$ZB-SFz*s8V6nX`uEeQhWa64t9X&G z6U=P&+x+Vd1*J!`xE@9K8qEDI9T(Q+bbC9n{IW#jP(|ua>;cL8a|qP1kv`xcT83S{ z*E>PkOmWlb$(veR;-d{CjXhFb-!%xa4;Wr+5Pp>-?c1I`(boi~MrA){D_+BdX}BUD zY@(X^%}&}&c2_MXwq58;d`D7rWgyoS)4t%pXa3oPz<3|R(9mA;k$F!70#51mtosel-3h1r_F2!TEH=}$#UO-c z(`PP{{K&3;ls+j|-Rf~DX+Qhsp&1fE645ke(Te1cz@l5%F*yTD%+1+#JD>20q+v-q zaj|ya9f8LVZQsQRd$0Cj>rR&|%mcphqZe!IiZRtU8V7GNW~tmoI+3+RrKW`{b@y!fU1D;>nKXwZx!{ zOZeYngoyKnt3TYlS$vky-8tf;ST=#+p!)ef&sb`@Z=kr|iCKB!)hk^h{SN)yw_Ubb zhZV*<-}CQLbg4Hl_15?@*Xg}ruHLtdUJqV4dd{ZEy*#=|c0EluSxPZqEOKv`P2NcG zSKBhP5p9sJKUDvo_eR;F;XB9rmH4X%R-LAGcd{Hz1^5*tUX=I2dw%QI<^x*P0eZxF z??@_B;YK9!=!$!~$*c*R^-~C@d-WIR4XpUDpF|NqkBcr2*0+T+yCu$-w+3TEXSZXT zeqhfiKIFSae%1N(h7=~VlaNQ84G*etFqzz#h?7DJZr0V6oKgVMe8W=Gn?|+tuikF2c~t_AO&woXPg^BFcX;*y z%U8_&$eeB=17+)|ohB7A8Q$c5bz*7Zb5tyGvS_t;`ZZ0*%LsQy(M@NksIdGV+(qiT ziom6e9fhgPOeR_eTDWfTq zOTXyq+x2PPCI-E2I0Y+)GkK@9q%fK98S+9(5ES@NO5~G@%sMn(+P+*`q??eBfxW-1 zl|q&me&MWzcJ9UL+wQNfFd}y`U>4Oh{pSn534gSno9?iRx9Y<^a_DPbZ}iq6NScSs z+r{$3$)OXzoD3{L;Fj&A4X)0Yl?vf?t`}2#8u!z^OGQc*Pwy~G1 z(Hp7)p{EDahhyv!C9o%>~U z+OorCDO!DG+c&cVXFh(9W^Q+N+cfLd#1VC->_QG>AT9C1c-Sc=y&PI8yEnbXbNd*h z{JHe|-lc1F!#Ya3QfGQc$VwY^>pAf;Kc+-m?WoBM;Xbc2sYkKYmE`ADCxZ;QX}tJI zU!zPk8p`!x!1$<($UN>V2o%w|8R=1$UQy}XV?`5J z6er`Tp>?pXoeEHAd4QkW=GcZjFH(M9MLyuy{$!o6Qy-~}aO-Pyr9(`BxG{jkp?h6n z?=Mj8w$H2w)2GUEyls!i{YsTEoAq>OxWA9Y)zcTImq*J=BOaic-eM|Bi&USF0vvc? z;M}4k-DJsqQUw0BFiV2R&HfjZtRVWgv*!y}lpz}9S~ z;`)nwp5N?gN7PntvQ^z&L8gM-mEATTe}8dUmM`U`%jkk(%vfRbS{=4^F(8vk33Uqu zC-;n?8-h}kO2_By>$+RC<6~)*$3KE;K6Xomf%@|;YkTP;Mz}lTkr>YTy=q%MYC&rr z`|MX9M=-$9-W@zZ+L3g^hAqOC8sCs%tV^OOa@^@tZvo@IQwEso% zavbYBSr05Txx1YOUMhPZT>H=PCze+a2c%JT&#lq2GKrUH$_vk;gIH(QPpVSFy8c@2 z6ID+=GyeU}Gws38U8lPa>|jBoT11ED0F?r}P2I~`{-|+5X#8O)C?NdX}{OrO? zL2m`Z)aRc94w#?1H7IS;)6NQSaJKaFc5jnSH|pq`A*6Nsi0_gcrs5*O+hFjJ+oVHG zzc*wIlC4c57TD zc)H`m? z=?Us4U*qWlweh4FSN}R`q-fvnV-F3#d*(4n0ZHkop#!QPSDFLL701YTo9Jy?B=V0? zhLdx5GklsRFE+hN97*0`3=q(x9KOBR#dC>1&wf{JIG#9=%1rq7J<+^SvNCF5^L3BM z_s{CwQUH<)9r?#YV%Mmpx$vlzs!xltWB4FUGQT}&9e_)-!I6|I-0J?*(dxEcSsviwqE;4QEb8=j-OfoMwF{F9Abjfq2kBS^3j5$p2gO$tT2?t{y!II;Jt8|?;YUAkmKl=6j163ClhBuZE-kLoj zX3MlR$KA_Gqz%(D@c2tF8aI4A>vmprd}$q9HUCh2*ZkOoND%j6cxP3S36&o&bQ8Hi zZB*w*^T!g)x3q2z92r*7ow;?AJ7+va@Y}T?Ic6H<;7qP!arRe2n-wehyx4<{GQ4cR z-FNqP?%nqBjmr3-V5N3uJE$Y$0`6Xs3AI1#fkPu}FgfYc=V#`0ga_cDTtKJxDW}*L zwPHoucxP~74)MVc@)wIy9rMW!J?i6}lr(O&zaACyIQ2|kuLVxN$IoG z9Z@%R%SRCmUV?Ob??Bg+lnZt-?D!T2uU+w#uZ|1pPu5j-jL)ITht`m*d(NEC73^7- z#50L*KTTo2{3PghuMx{R5IDP}W3i;`}B6@1?nSP9WQiouNzire# zpT(rGDO2(H!CAkEeX4gbKrjnjrLQE^r*(&~%gC2jvWgbZ;ZJl~)*FRanNy|CuM;$7 z$6IEi>};;fRBKWi?Pj8OcU;Gy+57tkZ*`UjPK~NSE=|Yc7V_}GhEa6UT#U~b;eNM? z_sL!H?pVteJ~tT2AAYCq+4j7cHZp+j)1DQrY$S~fA0>vP10**%<%Np2MBdF|{5;m} zb6@l-OZGAK}~P{OLf&8-$OM-!pp@ zjM87P8-$<8>Rw0f@V+B_8+pw+8b0nA<<;BxeVSNQ$ZGG+SN(X7GE*wh-dH!+Yw=AL z@ptUb6J+sI6AAEjU-=PB`40-Z&rolrd~x!@x225Qd68}Wlggl+>f$E)_UMttzjiOL z(IwB8PJB$>Sj206TDIUpqE|!)e+jw=WTX+xeDA*f8^LMTJpBng8df}u=qxv+~W4Ky2#M=m$Pzl zI_KP?Iz5(%_KC3c(XIQ%pRzSmQ0TkE{CW6^wg+?ItYFU@2^m;=5f#0_nSGtG&^e?^ z=dnAwkbwDh!@;oVn!?Z^-Cpn0hJ#P=IPRJ@1)pH3_?MG_Kx$IeTKE%wWR~uZSCs7W z(;QkSDjX}Jexj6~mKo^bCi-=o>HJI8Xug_2C}Zz7?W^@;mWjlW%nTGm+)eX|Y;PG=xz7;h0ExnF2mwqi|jOlb`*lyivdfdzC9a`xH~(-I||n zx`zGfu-F^w@cC{o55A+I^yl!j?^?q{=Mn4GK~tjiTI1)g6yb+K-FK9EqB6MGuZ0d1 zgo5-MR}%S-TsIA+s~z)qyz1spyG`@m9Bi37(I0|ldALG^*~)G@*Y$*o&o_%~8(KgZ z#|`Wow*_wIp6S*!E44)<)1@bv>HLkFH064^DvQHKQFHG*16?_fzTvYroSHPgbf{Efg+w=B?ZLO^;Ab+Q~-( z_9gG#8Y|Vb$yTGu_F5HgQd*wD;%y zs;0h%<;b6;`1H=S)W@gU}gC;iczj zh!au@>c{C`@%)&AKh31V=Iic?LmvZ;FCEmL^)ETDRygF7XMH=1`p!iVdzQG6(NbUI zI~!qforzVr(=4&;Xi-qvnKUjmHkt~?iWg3j+MLHU?}Xww=A9&lO|z~lO3Gt0HL70} zPM;MK+8Bik!gSz04#G z0O3*uqU!rfXDe6nryMWl^|<87OHXaSBiF7f`i$Oi*;<+P@nYZ*IuoO9LY({+=rmAe zmAsOrNq)Q$)3~zxbZt1jz}I)3>&H>$zl&)p^)*|we>6y!?x4j=aPFrmgM;5U!Zz*s z!l%iQvbFNLS}jt+nIo86Rps(>(>4O`ho!jCua8rwPnKQR$=z75(BCW+j!4^ROmp+J zJ?>j3h*m_A;wJ-YoyWoZ%-mQ917dio`Nh3ORgr)Le1`&Gt>9-mR{QfSXeN|i>4}Di zJx7gBRx_+JBh}%o;QdA4fm1RlXj+x4l=kPho&?>q&Xu%KS$@p+3rE?1KC1pIe|D2j zzCpW?y|&$`T*9D6n{IhffuN-*PD#&9U$ba5&M(#PjlR~sG;#1bMdUog7o#0rw!~)K zzp^l)NTU>4=9f#Kx@s3==`MMLa$Mra+1)JAdMMJcpC?)1{%$ZJoJC-`tAyA@UyOtj zY}~gea$d$jx>4NyJP`xjUafqfd~;}UA<*?X;RQkEK&yTAQrERb1|9&FOPjg3@3u-; z)a`W`eM5e`uoO0B3-!4HFtx~?zJsnI zOxGKEA_s?=^JOQ zOMCv~#bGx;j_UD*H5P5bpN#yYl3>6c*0;N3c{dMhOc~!bA?oJt#=zjd86~P}^X|cw zx%?Nl1(&`l=J{AhSKan~*f|>L^owJg=6G`%+RaI?Oq+K;^tih#6+l5wX~l-Cl(Nit z$4LjV53tK7R^hys#QVpO(mqk{iqme)w-Gy~v%e_BFZ}7s`#2?Gr<&-S&pCf0(2+iT z=J7sW!S=z0u90$lJ8BrgL7U4MMcsSd%lRLI&A-o`uu(uO+8S<*^~J>5#a7gW}Ki^pG^CLUckBh9T&I9zJEa2M6HcL`QD;qBgt6cqW>iFSW>QQJmO{#bf6 zs?%7(94*W7@D@iV=2VZ~qpLf;y)F$Y(PM0qXAkrqF49M;E79}krAO=|aQ33f{7Y2p7AtPIsj^{R&m%*P3t_hme;etJgox*CN3yfT6x?FVz35*i^TRM+>E!GWE`tq3_%`g>Z| zdFt4N(%P)Nty9ZM&#xnF9U~9E4HwJZ2|Zp+?5)ll#etPe7KRiciIza-wtvX~S3=x% z`&#+`-ngq0^p=*SpVLIEZV}r*BD$lZNv-=mI(CMCIW1^iam9Y?VcN#(SPN@# zB>UBtM%4nGV)1Vo)ER+f$=aW=ig|Y)Dn&Obv1Rbst<@6#AvFw}w?Q*pCjNuayv^xb2RN9jX9xlzz)PxXsdxowV^ zDe$tIS`ZF0Kg<$%)I;Y#6sV=pd)a91rqI_1u2|G8!a92bJKoao2^uYiFlA}EQJ209 zEC-!>eg+YZv5ENerl=-mud~mwcSRcB-TC*NAKCjqUEL$)ci26kSO0G3)r!J| z;j_nTfpvRtAc2j5K>5Y%oW;0Q)yz!%e!8U9D)Hr9(7El2W$}P*^Us1tODT=B5Br1i zmxgO~@p1VAk8JhZXY~FTW$zu;R1+d6WEuiyV!=9*`^s&ZKkgDqR990Cqvplvm>_u#cm%E~{sPmb)D4Cl_oJ!}+8+bA6j z-l8l=GmlB$k~*V(v#rC}C8;wWJA>B7>3AAFCda(g>8 z?3)J*FZv8P-Or;gFe8=T>}5ogV@c2n-8s4OQrOaJzdr})pvGUcUm3YsdEy)h6D85? zP4DvTr-;^ATHA)>xPUV6_pT(%!x z0R=JeExV1z;T^@y=btTx^yI7_Gb$@{Iq=9i2g)w$HO@ODkT`jmibp{36TW4)UXow= zk9i;M-gUnc-XXQupElLcSd`gPi?-8f855VG2j@tjPuLF$hVJ&Bu3;lLI5`=%9W_0g zm)!JHgac`{`0`=@Y}{e;Qz{&EGRG2}a+!^);&00^8Nc1Dkw`|5E3c>viA59HskY+f59-rQcC$^Vhu zR9B2xsqxTM+h~kaebQ4GcyrIuWG$>@oOY4(=!G9IdU9pWczo361{6iVZQZK+w7)I= ztCmlg=$DT5I-Gzq3=uT zA6lNN$h7Z|3#Y{ueYeuLv%QjVuNu7aDT9?O2G-^8w|EyY6bUI$x&#%Lxkbe^>=NrX z1I6tdo^$hRJOCG3;#VD#4!@-)dHh70&K`<s$YtSPXjRQ{xR|3Ws>p~H&EaTPCHX;CZ{Yo-8sozMaxF-r6y=eZ-#POnOkTgr6M-^yf7v%Y7G?MxiPsCIrr z#)IZF7?!nYhWLE}c>A>O6)zpMT)ZsI#`^HcGwr%Y$K14YYh8n^PCt_UGJ_k7pjjw*3(U;(I=w<*bfvr zl-X#7R&i$7lJE}4e%lk0bEaC;!G>`B<*Dt zdHw$O^-oFMw`tXr?$iX^ ziOyTMW?m-n`|gcO3avLKAFCJ%G)eDgzcd9vW#-3I9#hX}_P$!HhZp7$N5mXmRT#8~ z9e__>H?qZomg&0@&_fG%o#$NLTs93(_BsadK+K6QD8zVp?eY4V>RJ%zc%JBfCcq*`*HYuMW?@GNarRwebjT&@0zdr}rG|bR~)~)l#21^&R zf{O+4mYd2r4Fu45Semx^NKuaK^WAmY-b`>=QLHIJqnj@C!BxE@bf){nzxTj3O5)c!C~BGB&*lyPQ%9Tb8JhNG$WfNNLJ9P8># zI1d_)%%%RA05Oy~waIZda{2C~7D{HV9i2$YXG(bWr%ZQdA z7a(PM#OG)j1i-yn3NCOV8NeokFrE*mfJ59fe=D9oid4Jnvr?m68A}ba^uYzh$ z2F<>EfUkIaynjT%?3G?F@eEovd5i44DU>v)M*ZGcJPDJ?x)I^tO1CT`V{97cub>i4 zTcHH+5+|h)wd}~f?q&fQ&r=m`v9x4b;aW9~sdKA!){I8P0;tk%v}5S*W?#oVn(N+j z-0uGBBnW=vfU%h|tBCR=-+#DE?EH~5kh9=Q0w8AiHfJ?st>p&21S>&kpSH8SkQD&5 z|Nem7L=8DQt8TyC{=~{(a@Kc6K=0j?A=CQv+ebI$weX=L2-Pzi*rR7-aU$i7hB00ciZOJ%m* zmWiPbh?>zw;qBGQyHCk_E>dHeKb_~dRjNAULS!HPT`xVWainv;op;Z;^2Ko@BT-2J zMMk~y+RSu~T>q7Mx=mo$u)s#3zlHy-OHttUM#DnO+XY)q$1w>S*(CWK*`EE4ZkZA5 z1vRBRZ+wahzR4;CC`gJIT3y>D6IT~I2OaLNL_ozo=_3_mgTKmjo{iq~zVkfJ>zYW| zZ50^}epmOF%~}^B(mQ3yNbkb#eqnDb8LI;P7%{++0Zg1_gqV;k!i=#@npPoEB2HEh znUX^Sr-wt_IMsIgALUF_bqi9OHaC_>b`v%=1Vo=?(*MkBca2x z<*3B;=}(FVS10wmpF%}PsFOh;ToJcCbw|qNnUQ{B0iqHQJFDm1B^Ao5vfl?nDZj`Icz}B3t?CiawM)Fdw4DUc^5O&3O8WrW375mBH`sI)~HV zx#v$IcZWmAO*a=g&8t=HKJLoMmL%-TVFE-!#daX%0C0KU{^TjgV$JW?u>%6cWd682 znI80#{D(QCRb$ObL1=E4vGNb(?6Myf$zMX}o1VO{8E(uNhMhB*VhpECYj?AeGOCM4>zLl#X_Cny!lOj3R}q z#s-ZIlItg>b5A)cv{G5k8A)A8kdGj>B{>ioYxZI_*Yaj%eo|WfNR51j<6k`SZXO{O z&mNr(bJNi9882_ee4@Dx@cH$Xm*=i$Jc z)kp8DuN!2n5rB#~@HgXlnC`#cT~0RK43G6SoC}iX8I;JJf0=_}vm(5r47hSB$?6o6 z&whKEhMsKl79JT8h*-P_t=r|%Q09z4ytuC^QspT$W?p9L+?hP}O5 zH8^)2)yBhHk6+&n@H~b4eaW_=zn)u1MvDo=6JbaJ$h z(BQLR&eDc4j(cOCvp^z_Fh4Y{=i9pV{BYyp-#K$Rv%(6fg|db-;-%tKqliwj#7Jy! z-%t2#SQiouUjV^$K9zA#laK7_b}P1Cg0>N>IgfH_f~19A+ViD>wFCMV?!9jjxp$G- zKXUyHnPvXtnVo*8TNue+It$Nq68;@Geb-sshyEaemU0|vS>Ovzr3(qF_B2p9Kyt6u zyx^H$5t@vt8j$ScKQ`5)^$kbpr3&muuP;~+Ap=B#mKuAtG?f0q5L2n+tGO-MsAxcV z3VE-n-_1@xR)AjH39g9Qh!a$4-P~)E)%I4(7%<}}TrZ&`0iaDy=6tw-)!gu&4CySuDnCP3CQ9VWJi1iRYHqh)?k(Kmd?%#4eFG^JtcI!D4XAu4uEH zs$FQ&&G9Pm!4vw^>S9OHV-Y(Jm$N*lZ0>Hb(=Og8bl&NDTqd?pvSCC51gP&_^ySOi zlb`)^ddjlXUm=p<%xqGX1=7v6sCW{+kzTjPaZ`R^X9mabR9a zA(M_0&3G1QAi#uZXcDt&K1*BrRFlwtQMo`cok#7b&al1OV^8)CjS-x0=t>jIWU|wd zSQVgx0rf`t+|&)V4!@K&Lb?5N(|$sail7UfmV)V4tQMy-1~k`={K?W(t&Sy4>`KQS zI%Pt#Kg+)btHc69ZV_(|Z!Xg)WR5eMOy=RoPvCIPBOY)TU35pl#Io z11p)5OOu=dEWj+`P=?6&$2RO$AZ(G>t5ku+6nus6(nnK&VDbK(cr`IV5UQv&v8Mwz zs~9vQVt5B&0Yn#Z`3_5;1k`7NELSo9`y3>sc5LC! zebMMK)vQJGI{hrr{vilCh#_=ab25xjo;q9P(bRgS}#jq|S#1Y>yh=4D69hxAWKS)3Op7hZ6ES5?D65U<4j3-tS&|7d+l+ z5PIs*J~f2g_%045^J&?@$qv7ILzA{Csmb!^7_EcI)7SKUlJzoY-JhII?i%iXQIDQK zQ9^MsveWA?LzquAbh^JBn<-9S~454FUjb4DP1t58m4AY?+sd+pnU&pI)3)`r-IJ6^!jH zlv_7O58^l%M1E%y;>@f_uM+$`&g>U#LQ+^w8tjCA2f@M@XB_M0b=%u-e5dnKnl@3| zzd$~xS^8XfR^*PWFG-w(9!sAX*9(@`1aL5xP+h_HWi`9osm)Cp0=zsV$n{@$({Bwe-mi5 zFdWD8H~CZCR09KAa`7|Myb1pz{&vPo85c!#%e(Ax4m*GZ@zHdnE=Du+u@*r&xz8o( zH~M`(?(eD&<};1$L3_1=u^DCUpF-jWKW5*qkUD*KeT}%t4-f#?esjgtX_ce#Z`d#5 zc)3^MZoi8!{mDVEP4c(h^|$N&%CmU|-}#YpE}|}AXqpI%a;!1veiB{HIxI536d{m! zF9&sW*HC7tt_V@I`CY@jLLI1W-)x{P9So<<0uKQQey-k#Ze^=uuXY|`@S@$^s$wV4 zr1xK@woG;`mt;C_W#`44T&5{r{y}S3P#jM-Stz3HN=cHOT-2nBkt@0{cNf<@^*(PE zG%%q7>E#&nn2M>$!`~OVPp0{(o8qs`mZwY!@ko)xjdF5?3FT?WLdpHI<8C8Q7Zi~M z0BlbrYg$**_Ay^C>ux=F`-BNJPMd1lpzg7>jCmkfT?()-%1jpCURqf_TOf&h*L5m# z6AJ;55@qe?vS~T-l3V-FwVs=YK=x2mMoc72m4^_++_s7g_OzuwDfaQuGV7Y8 z2O|0(2Zne9=`h2mPVb+jhEj#pj{Pc7y}0U7O{_mv@Z(;>ey@P5wRyzlhbwxVzV~|&;SW+zQ*J} zB$(-bV;mX~h;YM`l-OdpXFgDVleU#qOnlOLPb?_nzI!AZJf$6_rn&+I1VAN;WXHy# z&>$E$5e_F4b+NF>YmH#OB%sv| zDkLDBp|Z2%)TTftUOQ`^x7*h!hyo6gQ@)8zajZAI>h!FJ#eJlkzu%{);AFw7)V^Trp%N0Pw}0@8wo{4MnBBp0BvQ2}c@c)he~S2m!Elbz#4Lqk`Eq zAFm7oiKMoab#fD87Ql1uw(ou+1>An8Q@VOaQ!H##UjHH6AE)2CWGF>V7_5!!LGbL6@<(p4creV}*>v;8 zVyX2UT|=jA(^i@5t;E+#BM15*8X%r4Esp=+FKq=V1^_Kv4~q0U zY|U4*Cm{-atE0{SV3HjxT(dqGwt)5k@!l&upE_*;0yML;((3g92tJ%oos{As0kEbX zd$QzFy*waAjpc0@LPv1`ly1xzu_YNYA>xm$M8|Ym0R+e-NS9C9kU;QZzU>d4_h4f; zfjGDigaE+A=#Urui^*w_Y!Zq<1Jat^(TW?6cQ63EONFPV2?PKw#XdA6lPnf^&PDJu z%i10VKviI4e^RRRH5qmzA{8<9C;(0UETbuYUx2$f8HtHM$p-LOOf2Vj;km`*p@vDA zyF;HmAc>9VNo8cg##;BWV`2gXaEiP;A3F8mc0ouaiE9S~+gFkbV%41l2u%AZG$55a zcpbNJdFBcr@imx2t{;qnSgAQb70|HNq!XR?O2{zh95uzLbS_8vsgC~G>E@eO*Yx(+r(f2bR`IE z9~lea6$G{mRclh3%kTvHOMc5_^Fc5UK=Pb44@#ZgQ3wE=Tt!R(0ByxvgO+u?1ORYI z5Wj_i`(i|>U!jjbcLerK%<#pbIj;p=rOyM751r?$iCWU3A_y(%-hnA!^5fDx5FcGl ztIuO10YE?l(lRU+{|QMM0IfX~763s2PE!$R0O0^Q087FGa3JAY{OBEX%l5n7?BH3UHXUBQYQVV1~vwUy|^Eli~Z1jd;V(qT_%`|S!8 z3|JMWT7NqOA4ZLjSqYkdCT55M-_%W1j?my6Gg5-A-CPuqN4*FmGoL$9P-LqF`D5q^ z`Q!XO7`EXG{W&3N+Ma?k0OySNKCZC_hytKJZHZj$p9=uMqT?FPgQ5k?2^6BRWwM#t z_;L3u9k8ymQ!zQdVu&CB5WK_3F8lqbA!vTriLTj0n9~E2;lbf8VD9B!CK= z??U#hJ`R0`K-bv!{p5evcin}ak$IMXa#H9>x5usBec$&k!ptxH$J(vyFu-v*Y&SJI z!MQ8UZvc|bHY`~<&hEob%ED(z(__{-@5ulGNNbO8RCLCLbj|)bOnNY8{n%I9?%>fX zWqSrL*CYmUr)`6;;{qfAGUKH=DPIQNYu^KiORJ9TOYiu^kP)W7z>~$$t-VbqEIL?; zb*HXrV2_EO1ORUTC~nKq_X{r|;I~rAz8ySkuwmdz(I5QF3~-ElZA79S0tZ0ALjWzc z3Bc$~(F3gJK1_@Mr;-E!>Fy&LQtWN!in*1XzdB?nu>C)Slwf8d>^57tBJNS$Av=WA zmr~3z>98vYvb&>@o!5RCfD2VBcE_c?CwiMTV1CGAIa;fQqlddoTb1;;C@14L~@^sc}$*4vM&g zZzTLpIw)cfz7G;`{FmbY-tK<}@jthNKm~k3^Z$;)e`)?-ivN4N1I(dlTh<+n&E>fj z_(EPS>-#A_t_S1nI>7aR9v$f=651?f0syobBy;Ry_9b&~WMW4L;Me`y`h59e0RQ$M zJmZM4DX>ibfB*n8bg!{^Sy!Ve30JXPQ^FM`RL8)7%(i1xjIGOI+n{W~dD)GP$16(s) zdmAsKp#g;{F4DjMx&lyv^AlY7VQiXRj!i-SB_6z?g z5^`o@4!ofR@>c%xb__i(-FPnr;!W_gKz1-8>pcKaO0T#A`}}D37aA|XlKLZ3I~+dP zJDe&}1X$7ejzeI^Jn?QZTcR%J#P>CnmT*Q@OZFoubsr!S? zs-ThqG%$dk`L5}G1nCo>*r8r)(*l+c+2ijP3=yPH5tLu;2mlz3`^xSz0eM^gbEi5d zy7@a0&`!}=dqiQ%PfN;v_0i{+1E)Zn1iGRJ;BNNN$o4P`5f%1!Z4y`H+;-6a*q{aflj#r zCOHNGrL40%)*zpBR4^qa~scj zEDo}%N(DE04n>xyzr_I?|H~&oIdq<#^%phjoObU8T5g>pFSpi5+3GUVHy4Wvx)y2c z$;ZNYAuI{S*WF_~4T9^gpL*f}KWTs??zIN1sLdMhO}-^p6G6)h1oWA5{{}B`F`NJZ z_fn2~Xh5LNS%E~=*d80KB7^9}`aJswC}>1T5(6NcTS6p!tt$^xWO-;l8AN~S$Ai21 zpEY3jM2;(yMGZZ%Xf`AOZo1r#*ff8VUeBn{gscxVnioZrTKlrjjzl?LzFV4WNZfoL z^I$0_xPP}K2weE9Dgm5iUBKP4_i_MSXj_;rUA-O6D4sKDy39(t;D#L9c*A;HB!gE? z-tLrUwPQ&r2o7>XUECm5i3%s?>QH6MQ8H&k_D)Y>M6=80 zAa~ZVFk4-Qa81)&HO_|~au&V3CcNNu+N`BotfNn2J<+0g&8{np8Gu{(o;cb=ZI|-D z{dNMVzR5VE3RNV847Pr6WYeI~T7kr>4UMWeFEIp3U&&RVzonnY$xXs)Dt0(f03Ugo zmVQ}f)NZt2kF2(fsOawDaCbM}5e3zJ(7S3rsC@Ye5(+KOi)3ADS13*(WmwUT4Ny}P zX_R0^%vT9e&jXmMty#kJHW)$WBM3B$$rzh@8+S6(S;?ao3X694qdzC3{6&_mW5*VK z6_h;x##K{)SdeKyHou+(s?1@u&@_8Q@boB9;70&Ze;L29?K+`L6@5uGgN^XK0kIwsySjk_ zfUwgVLhaKPJqx%hSO+`cULl?fGZ)cLznEv`cNN&;HuTT{m?1(Z-3I!53=NjI>E2CV zg{RiGSXWlS1Upuw`ECeQh{KhYOXXMW5#mhnG%RJ^=8YYCaer2Rw7Q^uAQ}L$)?D?P zLK!whbGv$6?g>J`X%jkL^tge5;|K%*PHU!ZWheq415A0I9BxEKTNV>Vc0%zG0HpfG zWm?vEeg)HXKnTBo+VH}!5*-8pk;%!kPHU#03V>?511~(*FlxFFaB}~eS8mhp-q_0l z092U0L7V(ydjmn*7X5dS(b-f)MM74Gy9A@zhXQ!&dgP%-o3D+&1++eMI-HjFn1zvh z|J4I%&2@IAGQyOp>)S2Y0a^`XR#ggI06=mY)Ir_Z!HmZ87 zUlJTKgy+PU2H)XQFg?g&zh94@o{`At2T z&{peY?O7?0r8rSw4ktn&p$-igU!JA$2(!t9#=NUW2O^;fw8+nX8IF3K`{x}@!89V3 zY?1csCm!k+G3xvy^T$>g&K7ZvT`fO9NK|DC6pkg@z^u_~WdMl`$;dhTJd04cY0CSr zv}Hi3E|n2@-lyG}-M9E$ zk^lgx)o%||Z@0$+&+*@P?240M$|mZnQSVc%PNIQg!9V;TLmb)R_GUw;zSv!;#8uE` zdH*B1H+*mIg~nYwDcBOYjF~EQMD7U40}H=!dV9AKHhAdbg+8(OzKB{mawYZ>jd zwfC%8Gp_n+iumm=>{mlqPY91wfxBKwV%3sPvH z{dN=)2y4nDC(S@uZb8f*5xm3CTKM?!`Cp+?pwo~UfcW9|sjScQcT%@l`GI!RC}LCW zA?GJh&D(DatJpbej`XcPMqn%2lyd}j&u@xRbELDmkZ=G1KqCSOH~;`h%i)5McF_;$ zVD|oshTZzmXCulku5T`7Qk0TKPIMA@b_Tlzb z>#d)Ey3W9hpd+*ZQD81k`0rgD#27&Q7AMg9f{X7D8y<;c*Fyo20zLnC1S+8Dys(;l z+}4n;1edr)9?Y5RMtiK)(fgK^P0`C!V5oLXK#M9k4R?|lqxsJ54Am7hTh<+&d%>ZG z_HBj9dNTENoWhE?U6pbG3-Gj?VNK`IggFhY$8 zy42AT`3?t~!*OQ+SUiQz#Dp#(-=eO#so-eV z;RF<9`-j-qm-BZ10GUY2IMEJMUCsg$>75Z8)pumi;sB5xtQtw+YFQDG2f?28bf?4S ze?K{zjsT#FTa;!Xe46SCv{dS@$ZuBPYhfOWfSm`II`Xot`xtBss-;a+Lp#hn z&Lslo^gwb2m7sWpmbf(;&f;I)B7@(Iupk29LCz5Q8L%jbrNmKKWYjcMRq( zy~3E|A1x+fY72t2_P~h5!m#HIQ?6&94QSB_W)1h)&_`%@9i#v-`=Op&97xl+;Rm1} z^oUvc<8LX)u;K!+ossV^?>}>hMxjWAUW!DJxW_PWwqc_6`cOT>DO+k7pgpk--oDLB zouc3R0@I`J+uvBb0?W5PR4l-u0e~t6&;Sb`wi{+e0(!E`(49vvL&h+U)se^daiAGW zLWL5{-olC&gf}k^sU*KWsOS1u*nS<)rw5=pLXTEG@4nM~$F9$U00=zAQt?=1NEr0` z7*kjsxfctc9{3X;_5CS*ERA4g`p=4D3)a*b?Io$%1u} zf<=PD-~%-ZCB$z{+NL7_DNsE(w2}s^(q|F?ALPU{WtE+(VgLYVogxM!fB0en!JZWW z(nlf|5M1a07>{0(vf`vIQTon z7Y9fY!zcVS*yvs4vraML&>;91(~4bnqn`HK$DwclqPgk6zR=0~B71YFOd}nOcEJG9 zW*uyre0pp38cl0XB!s$;r$YeTWX$PTz37EjegL%O*e}1!@p-fyF*xRn0~Ik8zG?4~ z#p6LjLY6mQAGQ8aVXQ|7;&tg7z9oh_TNm>yWQ1@H5<5Hx(;xs6_4$!BCtKSmBwuFE zgo`QR4fxUEZ`OicVd$PS~;bT5b`92Dw+`q?_zzy?4hjk>=)vb)vh=CySR z0PPhDYTHzj3%iPjBj7%}+ZV{?dT_%ws|quEOH@=%;W03gk9s6e55Ghv}TZ{aBb!NR?U;;Vzn1zg^1 zL`@7m=NK9V%<`}8aF#xc^spd`8m(DVDYpdUYfw=FXe+-Z49un1=lWXsD4v6^M7C|AprpD%l|h4@Bxa1g9O0No}Oy}pzi;h z0JvJ;_^Pfpj=J!T;b9@=PEiY<;j@G8hMwvbtqrsEZq{6^zY-mtEspIqp<9RRfz}CC zVeBQdtO#7nuug(l6yA12>&qqKAmTfGp4Z1Bw@qrH>*hd1oL`RD!gf@Y0EckjTUS78~LNVk3V>MTRqvf9y9O6O2dr-%I#a^94k0jadcGMx1-IX{e#Ps`=9@PLqFZHq0d6 z>(0i0KJ(+%Tj{d@d>bu&!FXJq%Mgls;G?v}cAA3G7(`yV=Jc7hkbG2DL+CzE>eU|~ z{V~@plnqC=y`TR@#lq_uZyhE5@_FQ!ued(6&JR}GH+L^3HQi9~cJsRX5{d|M;db~bJ88lJ3xJ4hhFYMH* z^I|$xm+3{Vvol-XKkj#t`Cp$;w(m1gwdS81=$A~drrGMU3J zAOh8txgH1N7_0?57c{={2}8WMcjp7P5|R~O<#YdbvyLy5K7LN{8xM_X= z=oNFDDWpa+-xVoe*EzwLbn@*wpOas|DvHeL*A?z7%nd)%o3?UQo(a{o_Nac?B}1pt z$*pmU@oTF`F_}GaH zSCxnfXU=J?l*-snTslvyk2xx274Y$~pLXJid_~pzu<3KFOADw_?@RAenr5!Bs5GMb zUL1ajSWo4`;r{WAw!SYT^kFZQwtk1*4-w;FSDwh z|Cg4E%K*SE_djSU98rc2wDhNvc^v>uTmNe5ys^)VBjem;E4T29+e0AmRLzg?mss|b zjy^ahpeXvCi?eNz{Bo%zX z`*u4H=|NK^KmREHQ{a)(=P3t?bfpM!MZ>e21cqYMZYn7ypx=>gXm>!sChH$W#68WB zbHT5gXbI-7kq^cGp;NBbD+ff}Egf~nfDrdLk0jjuo*x?df{k~lTC8KPGpd_i54v9Y zPsFW1>{x@Wh^cS#i3aU+uBAIPe4}M2rF*e>OW=vIwyE1Xj`=0-)3kMl7wRyZxO%t1 zGbTB|Rhd6eecJ)>GJbmKiDjwcV0U-Yn-QB^Cj(7C{ixghEO(MYJZrdhK3VAJ%z(RC zvEF&4$m0zYYw9(Z%%{f5x}w8E=De5dk{=!!kA$)=I4sqnF1;ic$4+HA7N(fvQ#&_= zf(Le9*)%DnZ7)52ksN{SzjsD}F!PL~e13NU8K>z)zDuYKC9nBidG$D};W_d|qa?Xu zlig?O&E}BiN#w79tmU$6y7Gr!*+~5HPTSRwo^zgyX}&JbIQyR6;ii)<9&$LtTw%FD zLrAAC+D~$Nmzurc68=>`IzZ}{@_Sg9U-Nu}s%mWR8**LT>cuBj$9Px2+Q~m1AKwXe zo|f3iQix!wHtWfo>p4J}WjVPp|r8!-a`ghgLQGagNfGSle=&5u48h(vPJ- ztR~LgJl~=+oTRI6bfMc#&-h!9pZv%M zz2gOS>@A*|m7BFQE+892lutao07`s?Dr%|{BN!_Lrt=pS$ZqPTX62WHtOd?F?rn)o zfI)-TJcOcN6Kia`SChG$&;_coD{t3~b0LN9i!Er1Ayxf+;varqRQ;dc^aq=!ZMzFf z_6;Q@M)xS*C3RHS{ax*(XSRGvjcxVZX{&TXi;drz7?$0>UXgtkopaUjl1;`V@l9%1 z$P^(@aYC@=$?7r|-z!kncNx zU6ywOC~-G)C&I+%?OC*A0{t~5*L|cle`4R|U{9SfYw z4$XhITrppqf3GO;!Wt2WT5w%geD$dzaCKKj28}q?9&`H{(^0bElACldv4cJCbBKS2 z&?O;B)*fGCnvG8ZBwf_^#nNO$yfHn0eZ0747eBEvKy7OogQb}mSO4a?C zM@;>kpv(F_Q_lx??Y(U~L>S&~wTq)3C*OXeGS7)H)$}hYlg)@kfu8P<%wM&8(^Q3B z&A+>9NBb6nK=Ce6*i9R-&6lRYlIPg`ZPEwPTV zY7}Ae^}b!T;d!Zr=gV=XYzw^L)!Zs%r7-z-qmd8^8G^wdrW z-A@K<|4CS%q_ZedE6x%2 z*CX%NB@WGAYmO_k?cpo*VdCFB1sb~?O)`WYtb5=Yj?g$FqCZOII^2H26PLZ9KJ46M zeTi^yEjNUK8xHfz;Gv$2L=NmDzA-?`H|`J>C<~(eyDML+L86vR9lFM0xQj|Gn->=)9dKHAN0iM!XEe=aL`-l#3 zg^%waGNT{sGZrI?NxuHatm#F8@|*2e8EL83M?aDD8GsojNG_$+%QbJ%s?zbDZ)4$m2U-nKielO$Jt^FmqpB`SPZTz&>FxPDP*wvLI$A56rqBY9xjo(=I zgxo&wWlmFkj>PG6&N4RtEq995x?!!)$gS5=@lM@NR(pXZ-j}K8*X_|;?*cq|!4-c$IOyE!YQRt{64UWqmS!5eCGy0k~^^Pgt3 z?9VsX=-<4f80j*b_jZMj_8@FmdsYmqQvZ6QmgBWvjvpbqGne@CUA<#Y$2$#bc_r>H ze-UeL)fGQA|ITXmt%-<%D!ni1dQM#+Xr(zF`F4x{2Nz>o={wt@uP>}WGvXkpM{G{@l09q-uiOtV+20q-ok=e5l1P(Fm*{h^W&wdZ+Uf`1mhfRiA%BO(bmS* zA9Ux8`G&A*h<}AMaD;$uZF4zf2M3~{aom1i&|b`yez6oi@vCM zvfdear-3m-VcUdpgz8v2REDZ+5Y+Z06rA|Vrl#}97bW0teUyhyty&`}5TlS{fo}5r z$0&v)ru0~k?nf?{ACli+FR$LW<2p5APj>oIle3IgazjHm_kMgcdjpyRtVicNFBjRd zFdt)Zr;F=dFnfuLq)M>DrroODdg!WsT(0Ueez_+T+uIt535D92GP@ z=^;MBkGZ-=_v&WKxxFihOT&UCDm+r2me;JmO0BbKhE7!&hZ*(62rZ9j>^#xF1C&r9<}~ zuoHC5W*@(ZF!M70GN1CB{sQTQ`ursy-?7P1#0&E34VJ+-HE|fDGlRU7j_)%h^6Ob< zRO4qcis+t}Ij!AGm^eY7{S~FuUs_zh>q!cBEbb?MM-!UOI4jzgo`@@8Zxq9_a+N)-C$v1B^)QejAll8%>AIG9!M`RZfypbCAN^NCP?@aNC3kI165AR!t zR9EkL&CZ+l2<5r|zB0@EHuQ=XfL+;0nbfxH$drba%Vf*1GQc;Q^N)9t1*bsHwHJzyLhM z`L(qSzu@PUYv-Th83NbR(^iN5K25qm#WTF^Jg4suJ^ei!2>;XSp40TZAaMr%alW^o zOnx3v*Kj@nj|}Xafz}X1fkF8H!`pjDHPyUrqmz&T0U;O#6a}JyG$~3`T7r#cK>?MH zBGL&+lbQfNf>H%U1Sx_DNbenjp!D9Qiqd;cfRwX%-rqXseZOz5v)1|kIP>4N_nw)1 z&)T#1%zaopR9JzhWgG_-r z0fd-9fO&`sFb^<+hyNv$|Aq&c08@eq$R>~(Hpt{`g2{bTQxg+sGPxxqCwGwSY+`bR zv&l`3q}B4;_0Ru>OJ*x8GqXyUwzB_o{&(fz<2r(f5h`Gr>rVJ+L|N6Dw z&7xS>LMMPXbO-=0R~+mBfG`7qHpBm? zm>v1W%<2EFm;>~GLv%VF?essfIpKd|!vEj+f3@d-+Pi`NU+)J1v^n8F#T*TQjfM18 z0Iq2L@0))v}ZxaAOK zkJY_(S*%oZ;0l6MX2_f;`*N$IK10^Kfv;L8PUL85$#52kIgV%D@o*IjH%Pqnv`CjW zy12mj#N)ZOECWR1rVUCkg;`5U-nYB1TgA7Z&Gq_J-F&xq*S_DkHQ6Vqicj8ao=GIn zWRkBi0)UtBX?-z(d0XdWMYqO|CbMOL?J{U#peHCFT!eeEFV*1WRjCP zHgH_4c!d<8!^?9}>Rey{N*q3Y1Da*kgjb$U60N;nk0+|=dKnq+%&o1Zd=S?U?&k6A z9Xj3RWu?RYh=IH1dTAvxzZ1Tj7N88i{3UoZ?p9g#+~wAEe|T;8woPwr;zR>Pk_`c# zvg}DNn_f#{ip*|8>mW5D2=Mdt#$k4qG1p4kaX+RFn3?@I-xO z{*MEx{L#lE0mlx6@Qm<`0K@J(%(%=_zm>e*_W{;5xRmp`i4S_a7fz!gE&o&|{*L+< zwwHc4j}bJbR?mEcdRGPVNx~5Xyg&WtMo3=Gl%@0^jdN4tvelqyWbE3g zHJ;Pu5JW!BCnWGWX|v!vb^rpq2?U{N zh)#|RWl+ZsK>^e20|Zvv@_qp)Pr z<1U7FME-0xre}i=6FztLk<8?2BycJuJ`MQ6Cpo5zZe@V3VK(VfJoX}Es057 z1N`+Yo=T~^x4{G=VKIV`lzx6dWP!ZTW+F@@feuRoqd`t#+;u4S-wPrE2L%EIA%Xyg z2S5`bKm$L}sSzZ=&^Jrd{a|=NVA3S^Ov(s?r_uZXTj@G?3DKetbsE}o;%wjt(-tV{ zlW9%2uy5(+{Cj&$;HBy})53XLN&*a9$hTPi(TEkG!%>pzQ0bC-di#uq8Nl9+BG^bM z4wEDTYu6#C44dANqI9Pi_Mcu103Q?HyK|z= zcaQ+P{|#j6g9D~P%?&1Cz9L3c3aq;OPXd&=B&wSW5DNeCuQSMm5!{X%!QI3f9zyl{ zM(43+e=XpEm>g%IY0-@*MHqZnX92_t6hVkf$t4+7_=YR(Ux9!Pad$@1i&XEx2owOG zrGnDEEZF$=(*SU2L#Z0z+eIn^Ahw^1e+-q*msu&WVBcqkfSy<3EO|frYJ`BgHH`rf z#~#Q3JxR18F95J16U(Uip3cNr`mvi$qbt;=Z$Gy;->BO)f3!D0qk5{|oVH1){#gBU z=%V0=p^?hgqS$%E{U*w%YWHr|PYwz5DtA~x1Z`e~aILMed;Oug2*26FOiQr-?a#Q? zP|Y`DRYCV@xY|lhOcP=e*5)g#TSEEMe&1+_3ch}wej0o6lAFGy7_gc+Ro5{|$Now4 zWG&f#uI{heicY?u&3^ItNG(R|SSAl(V_d>2nN>?&89sy&wlLCl@2IKUE<%&-ctd`I3cs?>Y3#YtOWB)@U&xxFS`Lx}s|D4W4$;b4q(!)TZ z$qQhG8gaS$n}x`<#|;FSu|N?2)LuuZNewg1{_SGCqS93id3p!TxxOB@(V-KYUtNa# zdXI|K+i#QG3h=~l46)3S$5QkRcZ9vG1J(apAh9}wQIQeMVtx!$R#NX{O|*I*-J&wI zt8&#Yz4x!5!U~*w+x;}>a5FfWlW?Z7bA^uNbiGS=`A{*O9z&Yllx=8~JpPhw;Kisj za*HroOM5R2hVdCEP3sFu(ET02s^~_uAMedXf zB-CS4=D@C=D?1x>k^0a0n6q6rg1Nm>Hp(9Heyw{O;NkT`7LM?r<-MPau z-4V|W%!tEPAGxr5#!!xDN#NhL2jflC(2ks%*Do-Ami^G>As61r#8wHzifSe6rIHY> zV%*cnKFsB_yBPN~4g9AC6Nhh+k|qMNTr3p?@A-WlP7nnmt!~tqN1xB$)h%QYLj61m z-nI|zj-8VT{hD%i?UoHGZ=#X#RuK+F{G;l_4scabcK$xa-Xm+4QIAhvhBz4k(=N+b zPff?Vw^UDNsr7t?jmQA!7lov!Vn8I+^24p=Z>J^H;Ga+h-eYUd*c|{G*H&EfIgOc4 zQdG^3Pb?D_AV453^Kbo%g)wVP;KcF{oB#u2hd%Usw72_yF|L17>YwV0M}m}`20B*& zM$0c2FtPZ|4%e{$c%P~u7GLCkoy;r)*YPC zxzB9ItdW2)jf{i=L4YPR2toh?Fw=nM(F!vFgGGTzfE`T^_<27QXaWtOQ}hngz>h`% z1Q0o7KqCkv%*g_xSuqh{V3K#Gaj%Z>U{pR% z5D0>e8UJT#r~nMngIy4a9Pg54>a&`^lwmw<*~uQ^hc@8Ai_jw~hXB3LN+QQM5UgD24M`0ts(H2}w0%@KUjf3oGSKN>=a zBQcS?pn|}9q|Gjl#1zx$2M*Vuf}rO{1j(e~f&f->)Z@dSKs6}1QxeLIt(@d1WE~At znB=~N#c^yUMm9M8s2!fsr4K@Q0!y)MWNv^O6x=^xYSIH(D8XXFT?NUK68whhurlj! zaeD@Z6{w|)cpG~bRUf*jx^CfJok_!zXgiD=B zeR;5_S#1KQs_e*CDkHdw_qWg6Tr`MN7|^I9D@VaR`^LR@dGZ)Efb{n^yTya<>N}3l zJPI%@OY(2aLGll4TuHr4V)&%tueH+cdG-1v55_nCedFjB-{E1Ewo<}L*+Zrd1HRYB zw`TpadMwH>k&?^rQ%}@NF02Pb>!?t7&;uib`Vg>V#$ zu!7{Y5)6#8+S)OA*hT9Upik_+nlAnzZJBav@1Vd=^Lk1gltUM!@9ubT_lS zQ&{;4Qr~-jrH_44jJqXoY1+#=KtDYKpSXH#q#rqt>2WE=9JP*S30I zFX;348lER!ekeC^XwgkLkb`joF(AaFX7Gm}ft9~FZFFMlPeLV^rXHhWzInWP4I)zx zW_S%Q26Q~bS%kL%oB zq3THHho%C#o{@HHZ~_bAt?5>AFDB;kN4nj_#r(FLi-&JTj-yY9yXFWQNEpEh{XqLC zpO=QnhR4lxy#Tzbs??dyU-PAoD*pMC+%Peq2b#t)vTOVON_@{m^^ez`;Q|tBlFOt( zQy>OJUcSD!5wZTnMnK)$97SQ>@>J#VO+w;CJW&5uJw>$$#rE#%4GeZ`X#TTyyx?a= zksRv-cnTEUqW3H$kVd|W%0KuE$@)%W&T&`aeT1(zR^ioyWC9(C`3{n|_RG3BJuKHt zf6Euj^6rj#(TY|l6?|=7 zSJnz44SwBuKdjTf2U7dWOlB3Y9S(JKALc;rvOE*Up8Wgd<_0cQj?C%oKu+CG_5SQu z=1QZ86g1b$8jY>@hGHhHbE_w1~Ps{y6-d^vO@fRwmN91R$OsNa43#OID#c_kc+dUEl zi-JpVVp%=hs(H(Bqx(MzfjuD_7->WikDGj;SHjn8 zOm9RKpaAD#55E`?Mq;_h5)hqmt$q3L`EV*U$vWTH;OAHPN2ey(mZx=S$o+C2~jS*|JX7DKAQ_C_BEP8UUR3agb}55PjP z&`1G!`axqtCA(t7mg-oKI$!tfn3c76KX>I=P4BDKH3ZXvlDY-Scv2MeS46o?*XT*3Z2}Ji{48dexicatjhY?^{&(W5~HhPb<2~9qJ z)4`!WY|o*|n#yx=^wZ1B(|<0g?3t7ZqStGA zmsUT%SmEkz!Jr5MqGS8Bimg1)`2+AO8<>KsxaGa=Nahh+mgUkGAHiC29?h}fcq`VX zy95pm9Y$XXtcUw0 zEc?z?!|I_Aq;4wk8?XJ_! zyRaOCp|4h#Yt5?DzTGgrXo)+136A~>Zjdkyc$ktYDeo?ibhHzBLZ_Q9IY2AFURxkF zu)H=;vxs%+a#y2<>N5CFcVLSrx>>u~WmjX&$1@H_^CAuIvW}>7c;sdkq* zyK%=x>Q2iSnM}N&uzBUaPV1#C)V6F7g1wyIuZU045Ru@^ALi`&Qg)Ykf}$#QKUzZRI^X@hMPmH}6V&cDj)U@NCnPuUU`IUP1QElkDXzc;2_K+?+OJZnKU|`4$NhRdI*o4rW0EdF}3B&#FNIif}*O_e;JCW!q7%Lkn${EHbIw&#WM zQ=&{k4ENatAcV)X45%cjIB0{RoP+Wn+c?$O&E`d_qwOU#*=cjgg;V8M>NJXAlZpve zNDYv(xr%)hD>J!Hw(%Ms;M-bR`fwvfC93sP{m85{SGcG=s= zQVlZd;rKcE_bu%BveOakD=OhuVpxHA28RhhHKgY%SkpYG)Uwb;QFv22Xv z8W9q$r40XEjLdG}6fQSir+EzjTgCc&mc#DYZVbw7$z#1UhT5+Iw!Y5)cq64>f^|$_ z471WoNg^Eh9ovXouYZ4Nbe1W!#2~An#b10;2*2w_^AxWX3!23zE79EoI3atJ8HuRd z6>44bY(=%=?&}d=21{W%^0sA_F5<~!`P&qgvh|4CsJsDx7`Qrq@!9#6oXsyDhsAE= zu9t*y=hI!yY6_$VeylsJ5eK}~>1_d+5Dn0D65QAhi^ox_y?wX55BqCB4QVLWBZzAZ zpIq+>pgDmKM58mFDSBd~nWtoA@&j5ikA=9d3EE7<1R=nz>SXz$@5}2&>Tz?0{fgbD zn6q1xo?QMgkh7A=o2kL&p+OUd1-tQP)yZj%;a|3>oD#iLT7ZSgB!V6FY z7)bpaJF`%~Xo=_A;jYQ)G0muV9-wFAW9VK}O1NRuGsqR*gTy;k(;?UgAYa6jKB2W4htpdeZtgVsiw(|@8i;G;>n7RNf=FeIde^dKCCBh=p&?+ zwOcR}pv&y5(Js*@_vHB~*&pn+TnF%}wnT~g(Hp3ql#t1UKP<$Lg22-I!aIQNDD`|y z<7c562q3IO6Td3pp0lgdW#oQG15bH>7hA!_tJOyYW~P0-?r zOJGb^B*YhLf6(+zglR%P$Vffw>sdwRgY}5_J_h^lC0C8dX51z}rgf8sKKO;rH{jIV z`o;Bkku8V4^i6S9~aPMZK1%r=D3cs?NIc{&=&Ru-? z$Ljs_Pqe>Zbj}n)7N-S1eV)uS5JfPv&-TI`l#^H@0ro8HOOxVjh1Dx+0X=mS?R|7> zT?lg3)APGN7(?{tHLg)x8DFMf$+cihN_%+hYw5xYT%YQ_fSadhNT%#ZTyN6=#19wm z%Nw4Rft*qt5thnfF*jmNUIFKnBsyuG@#ID};fZROAa<&kn!_txLsD^X^H8~xZPB(6f?SL&Uzj2F zk(mmQacH!gB=VF})?Mc5k4<0Bv*qpwdDv}F!RVVpkZzT!nVTDC<3BAp1VM|xCp_M& zdit!*tXwnYxm~!&h?1R@f_0!KvEI?K_nko7vo5;!2M)>~*~Al&A1487(Cc|2O+`FE z%rDP~pW5+fp}uRxj1_TXbP)ulNK3wo#L)&)XNz zWYRyr$h38c{CFL1ex9AgYv{A#^-=npfj4W$i=1N+Cjb!8RevRWb9jA~HOblK~rdFjsQr1D)aQ~L3Yx=yCi zSKOxdy^abJJ#$fnA2S(VbIf5UPoWT&BJ zaGdv@q_ehrr$1}MQj>Kvel5ox_o}ajuHsdk{4obM_@5f{#wF_Nss;C?^qKzn=1abN znN^h^tM|$1s_v?U%RW$p0^lsj;B8v`A>l$CkzQ9?YNl`zufIK4AH8zu`i7v-u%|aQ zfRA^T96X8(Vjprz_?h5~R?6cQC2H>k+1pMp3MlRH8%-K5BSDiYAYQp;r+c?^)f+jf z`X1R+JdJM*tA4;n6Uc_t23FhNc?}TYsq=y~f>1tr9;{ zfd1#Rq|WukMmDVtemMj=ahX*_v5a^D0^)CjyWK|(Ur9ttTMTVjxzOrHXQIHEH8UCl zeirO>oW-Rd@^BJz49f9bE;JtXdqld@)@6QXAJvOe zhlZ}EJ1)+Lz4aL1`0TG8{8YTl3clR&&)y&W`tUYnS_7?@jyKrh9c5lCD$ise zX1=$4u+F=5Z~mY=iJB)#e?^b(k*a13w6{Tf!w4{NN)B@6k)4NXexN$z)^W;|TSmu@ zoPwKk-I-h|RjC6TVO2@T?(TUxi(fs5Dr%OWO*IS5aKDbzy(=gY_;t%gv$Wgrk#FD| zKtl)@idf9=SF>Q)%r%J-2kw9Wu;FmHObQ0)u9sBa-RmbQNuD>LlMIBO%m#lk@84VS zD>GBj6)hmrdvESvz4hxGU>&c7+*HD5E{MlyfXK=~>MYsAZ@SYR&LAcJNqL&OfO)w% zeu+-+&tPZT_ac@bcNrbsJ@t`n?>i_2ReGHb3(FBLx5Rs%qDJIEM>ZR`17%(weMg=O zq#WOFHCvA5oAQZweHX&PP5VXfr5k1NDttHlbX8O-NLHtSarcZ8pP-J(QJ}s~fk?G{Qh&0Zk8xuZQ+LesEBh$Eyyfxs&xaC`>1E z8Amel`eRJHArU@N)5ro=G$(k58_V-~&zL(Z^@iz&16$qd_u;j81Xs=3u?K3b6ot~V z;WB{>8v>e0s+i$qoJYcA2o?&8RxJ{!_H}ggsA_IQxoI=iiz@ifP;DqzjqL9%i1@D2 zbU8a-DFVb}_C)x##NN75xyz(O6NX?Jh01U8)#dZ6e01J;Ob7!IO$Fc z)RE%_Sn9ZM=QxWDUZq=%*!XzlP7Br*7548ux7J#9t@R0`Wn|Kw+7b2Yo|@1&C>nxo zEp{9mQV1DD$S;+@z#or&@Z{;-qpqHMeSAVTiPBD|COHfBdsgIUf#5Jgq~CDvy+fSU zC6tq|*+zZ{^z#I+`K+BKvJbwL0JjL&2 zu~HOCDz$j#bKgCN$Ee7RUi#x%Ja2K}+^g=+X=d|CkV*Chbu}M&7bz;@d69lJHbsha z3H&|jZz_v<8l7If8TvY+^RBCm#2j4{L^iSz+3}MhVQud>jOq6rowuoG<^#yEs&kP- z5YJQ8^(nkoqY~Z_MU-I{1U)UPgzHJ6#|%&023^VgVF#l)8SY)YVw5(;P+m}j{L_DF@vKw^G-rp7SyL&`!lW&Wb|3hi zqDBL3M}z1`QJ{qW=N2ZjArXQZx!he%+KoQ!vZ>g?#8(e*uRst$dHH*3`pdG@5l`dS z%O&w+gUB9OEZn`MgCs)k9(FN${&UZlG^^Cj0#HEYFwNh0k)eRib0$;paci<9{^U7C z!F0WiMUD2!>ZBO%ZMu<%bMiZYc8MSzY^q9L$*6Sc%ndN_^xK;U&Vmqr8=Lko!sz&I zT!;!;+wUS`XZ9lliqPl%Jxwa@{VJ|jRqT&~;uM`|J9l_IzgS$xZU4)j-Xo?@Ja>D2 zNhQq>_vSw`ICFuR=*lZfVYtFGo%w6AWvhz&sQPNf)4PXFx8l-#9b*S(H(iQUppwbs zd8>imI}dhAimA5Oko{T?Qc$DtDV^LSl z9;Xz%s1p)Sc+K;{zMN>t@sVHROv%3A-sU}d!kF@E1Fcu79Qji@!fr5u_15ibDV{>v z0YCiD0sClX)(&|Ib4_C2(sH2?beD+3mkFKOJ)H6~h|+*YO}d8kVi4fP+?!56A;43J zA=EzHIxe~vn6lL1OR8JAQC1gd8}CKOh8yG~iiT@sf=4Ip%`}2EmU3eOx`=gF0@nz31l&QadBY-H_!pHia+6&#>H9sE- zVtzHANoDsD;a0lxt7VcelWWB@GaMt@qf_r6mM3w#;CSJ>(M=4A-)`%$=Th~C!w(|b=}C3n@*BWvYv3_|Q;wlAG7@V%T9Isnl_ zEZOO#`~>|e3-&hTB`#$7Q+!vrR~DRFkC$HxeeNo_o`F#H$nrLsxz~-AuvrOP<6maV zT93YO2LIizdb*56|B*AR-}@D40G1Z^Sp#RGVKv0P(#O|N3Q&Cv=TQFLrc2E&ipUj^ zDu;Z*y8t0<74Q&X*f*Vv#cZ~;!3^dcl==3uybAH^NmqIZAIJpiuwr4XPa1VCBh_3@ z!0ZxcYS85VM)?=dADn_v9?MnCdr4;=bWC;>@4x^=+pJR9aBn9~7(o+L`=>c}VRYW1 zeTQ7*85?{7+shECEC1GWPDz&G?w1Z6gz#GRech9uuZ%f11sys2>qYs|99bzUKo78- z?HDPp_V1lKu->tnH4nfn=`y(Adz?|HH7>5U!L18glAo9JO6X3PZ%H8)Lt~kZYk$JO zo4wzjn%X@{B3MIjnDUzr)f(+xp0oC!;T>p_dn8CjFI*wf^$?c6k_I z-2?YBCTb!3p1R$4{jJ&0dtwLd0iiTappz05Yq=Am6$cyNG}o(=NH|E^dj71SD0<=6 zS|E;|SRr3mC>A1w;Q6LJh^$&1~V;{ z*eJhW1>YVTZS?nj4X3#jd1BP5wX4EOu|>~_?jMTX=Ju`*`c34I-_9;vmC^ty%DMBU zgTPV?`u4J!(&e79`C+dP5!0*V&zenl@9(r7_b;srE2Wk+p`|p{-rb@j-yMZlcc3TD z^W<^%f;dZ0)}6iL+Zls{Cj!%1-3Cg&|Kx47wBbhuIQVu@17TnX8cc0ZuwasxP{l1+ zdDp4$X;~XKm@1ffx?VH4T*~1=<<&| zucp1}2S02G>7Gui)WoOsGu%F{5h=Ka^VxYm?_YjvhZ>?LR`x1Yw$c7#l1TkU{G^A$v?X1RW&>FH+Ks2poGpEf7QRotCFpxRG&Sm=p0XdEO7@HJ{@lR{P@tFN z@xW`Wk&NGNJQ-TQdt16sDz;ex=|)`VH`RJP71|nAlj_*?ES-KY|H)c1i~vj7v45pI z@S6Di9#nASI(%ZYJNzeOHqhA%YDnviD&3yXj&!M)FS08+7fFmrEm~)2;7>(x@bn(j z(<}FFNc4AVU$7dF;3DVV@8J2#Oq;G|FFb+P3+U9f@7#GSu0LM-J3EM;SSIka7SbWc z@BTf>ZMWEuUyOYE^a=^t%K*ZP6o}pRmkKQ(0LpX3dPaR`5vG>`{S~D2?lF?LkQMCM zz2ycsiBTeW>VgIXVC>*obu%1&J z&2{Yn0R~#$_$yx_P=vQu_Lxw>`uy0JUq$CY+iVo(ke%U(SC9}?)~gH?@u;TucCeyA z=4iS=*Q# zao@qCA%s2$mJ&ycD1aWD^^>Lg!+;K0T`a}e^)#rk!&z&fJl9m)7Wm`j*T%Ad*bnu)z~45q6Q@x zUw{ndQiu|Q5U@-+7Yn&&&jlkK^$`gJXmTJ7{Bs8?d8nAd3{`B%^4sG*cXUi_Ml?Xa z$}{fkg=vw!#DaCki~}`UNa}(*g0%YKp=skT7|Qj?SFdD8L$C&XUTgm4-u&&bbFusP zk24@Z(`7Zna}0I|U}tUE$4e6J{9hD!CqBnS0>I_2md>}RW~@{_@Uj`nDvXrI#mq|2kGX>hep>d zx4-EzO!sF_t!Y*(AZQ%AfPh+MD+tqjEDAh(e&a~zU8o#J5C$!`bnIx&j)Gr(J=|<& z688UrIR4++<^PB5bCFssPX16`FCLFP5K4vtAo`Q8Q>%AGWj|_OLl|;}XbA&oeWuIn z5az(S`EvkZs|r7e9_4PzL|qp?uL}SW8Po@(_aHEd+YkUEZJ`|3R~!@})}Ij^8l7uY zT3xwAHQ9$yQbO*5Ra7gbK*5(Uxa9iv)#)dy{OHmK?6Jb~^Y_XGVE`=t7=J5ego0kF z6!!AO0XD*B)40~{<>MY(??CHVMIwnYSOvIyMT0AX0LxOgwpDz*XR`lcJn%0eM*}^v zrQh42O{ve%M<$syGPdHW<3$AVWG@5wVmaYOpVS@J^^wFH&b+NG6a-4ufebk?5cBH+ zHaQA-OQ}lTgXtA;g3`F<`$!-TA;_wa-_r_Ge(Zr;Z7F8If2Tg5RipJ7rm^nm+3Ma5X?MN^a(3JGG(BB!{!2H&tqSj3SxR8yQoVI`# z$ymgf%xKxn%58=nIArms`Js*a4PCuH=>oNJ+(ypqlY1g2UFz^>*}JztFdLtfFcIlY z$bC)PD_`|>2*SwkL;g0B0(dqAUQww7E}fQi}_K;H~<4UGThXt0(rNafdoHz&4hx)M6G|OyK4VNVE2NCP2Vn zlI?|=Yq9zs<>cEupd@HE_uM!^`1Kj?@7E!W0NCq%Z?>nC2Tl-vnPFwn08IYqLWkj* zg<((-Inj#$s0UutF6lu4*bsTnXhRJgIn4nGEAF)RFHq@MLjC}Jx&o;%S(K2u-8{hc zsL!dLhx`%(TAnYOT|f|fUNC+G0E9X^^l8(J;-NhyZ?!=t^eAcELOqwj`=z^qi=U5@ zPwu7B^&UY6O5I);A21EJzXbsFtx~#kpgQ@`FQc=}03_1+^gvVH(VPntz}J2QlylqG z_l1*{KuU+0gyH+&&W)oZ{k%IBTaDdhG6aZOEz+&HShYWZWBQPX&a41veFV?WGRWKk z#&gB}>DZ|mc>rSU$@E;qV;yDCcPczk2)KACejiSFjRjbQHr=#ISqeokyl$T2HqHeI z*O>6!%SHB-ZAple?z8rdGr$F#>eip@bhi#j)rPyrTGBr4;~I`Sh5mzcP3+^BLBPx9Xs5IHKD(sljNBE`j1Av~Rw(CMN6NXZS zb{GKIl3h0oF-h81g%rp|M~lNye#K0BoArFmw!Jx-=e!Cn zR^|ZM4XH;^^RN202{4D>c?>{gdDidhFA_`VCwY0Ce$ma?q^bKUzQo3V#J$U@Kv05~Yx@kifRz)TaPsRH4?q0?Q8#)F1?2mlHO@^2srBNv$g zcH@!FS0LN=T+RN>F%WFwJ$0Uu{{10Xnv+B-Wk299mj)@ly3`f(WaZV>dr+rP&%`Iq zSbY^oE%OT=vcSAX{a|iZ4|55gaw!7kZp2jnh7$@vSX%$okI+;m`U5?1OL6(9lfx-n zA(8@^t{|MUp0Fdqv)i`Tb7K}8OOZp=z(&8CQX7F|05Rt` zYEdPb{b2{*Z9cqWmi5P17~_7WvfI(7?I7R>Zl~DFZ!{3Y3BEx9F*6wkcvQ8g-OHVO z6e>}GXpBK%_rF0L@^}h{^chqe2LZvDu_C$hKKh_-e!qIM^ljrmfS8;}8K;}HD`ODg4FEAB8`X{8Lu)JS z>`rPL;K3c(0n?z(8=%VoA|12vS|NPrHljgGG#|vH?B&bS99M9Ur5;&r^)5JeP%JxO7g z=Y>WF<@u62mfX5?_=YQ|WNt1AO-BRt&o4w;+F?}byHlX$O3%70-A1?}2?pBolFfDE zXYWd`IGME=lp+;eTm4hb&P2h%AHt2wX4M?834}k{_je{BmEuZzm$Z=FEXD4z%%|IC1E0) zy~(U+bFxeRiFc74f!Ak-F2z|l3C%Pvj@UmaeRe)1#pfUYTS4*DU+kW^+CGp_%Vre9 zrk`soIhDnmiK>faX}U3lO}TzfW3eZow(uuod?Yczz~1TdmSu4NZ*o#C-FwZ=k>b`} zJHPDPy-)uV5@x}FSU0asC;clUEZ1T__a^=Abu2TSz;O+Nex(DL&z%I<{vUYkbJ?I{ z%G47->?EhnY*5aKRd)c>5o0B_xHqg+e)wyXCs~>pXOPm@Jvm z5S{jU{VM>GT~viiqDb*lSbC)E3Y^g?~$WVEzCbC6t^ z^cA%HeN(I3xE1kfQ!`X0KwnWp)UZmB#8_N(OK4AiL_DX>Jg@Mx@25TW=@-OLC?Ub7 zYFKh)tAALBfenU39BJOga_03^+n9E+-Q^&8gX~Zeu%^7yyJ0u!-oXiYFz38Nu;x%{ zkM!DiKko%2&lmJfn(MI>M*XgJJmxJ3cs&28mhAV#=vHv|mszfQ?I4LMaf;4gfyxV? zUUA^B#%i^n$A~lfc0&HPdD~E4!EU-u{@l@q&PDlMTo<|#AbF-scw`p=IYm10^tmc= zD@%7>a&2Dt#wF5DM3&qwHk z7s7keo9e;xrI3Qw9vEnLa~?qSig9mXMWB%h)YFG2Qq3e&pi*dk|Gt6<%sDSFh#f;N zL(BT!VdV8Y!AZC8wO7vSF@0^*i<>?B^xDqsUnftKiU*dG)QQ$}7jFEKPPu)i^zq&q zOgwk+CmEAxPim`ha_6_7C-1Ls|J*lR&scJMxiWk(Fzn9Har)HB#qs9C_i^u;9#z&Z z=)|toI}(GRtb7F*XPu@e$Fi_-o0FxLU1Rt^|u6tKcDcm)-6I z^<(nl=SCW^T6WwSSyJ6z7$*XHFRMvlanrDg!p-fsfk42BehM`zxjzVJbCHDsWYL+ zH^Uga(}|-OAAzQz(rv5ZHxyS+w)z+j^HAxB&fP&8SKw;e%B+MRX?4o}fBBx5&3r$7 z`Rb|cPZ_QP&DUy5DS3N!r-Pe)J-vf*GmrHyCMn!k{$Y__po3%*Vkb@9RTx^|Kv-x| zf}qnb$3lWQIh~r!q`#grn$!8t1+*pqN>_U9FXp`nmD7S6FBpIkTD9!s;rW%5c_03{ zBs}R*{!`k9}pRe#}5 zQX3Ru8y%0%U~$l(orpavsoKfA(sH1 zju)oAHF)-BRE&L1^fL%fkd*BpYhQfCIFk4VicVi@8x4}2q@J$C2STMkC$v}!Xf_o| zHY%|YE0ByQZbk*er2a7-;doZEoc!e}|EG~Lk7p~r6TV9wb(4*r*RzgiiKA|uy=R(| z_tU`=WqCk=J|<#^eV$zZb^;;}F~TKo}-$2-fN+uBHzU zeDvGC>oW7$K4zCO2o#efx2!Ear10V#!UaniJcWNN** zAFTPB9*qybH&hj=)N_-0<6;iZiXDB4k04r%d7j=}{u6UQJ&>bmkTrz~{U`bF^~MZ! z>4T5KE|S>C2oZsgbR)S*{_rm+hccool;OuK{#@c*Q|9*zXXtLa+Hb(bK_A6uB`NR} ztA&-$;m_nK#A zB{O^fXa8D40h#$m?i6EY7jt{q)YTIOv-Q&t)0H4%%5BV(mpMM%+H~M6ydZw{R8#zv z2hCOW`0V;x;`_!PDZMTY9@XVW?n6P=H@m?O{5qa; zT~yh|n}giK2(i4jc`9~9-IO@0wQ2o+BiuXSNcAh}O+iLcevrpkO}w!2uF+f8mqRJS zXwp+XLCQ~OT~}88dimGyz7sC9%XY0v3D7WGgR}N5=2T2ljMMXbSyS7TvzL3;+cx?a zk)IPDyS8UI7F4#H7xgbHHV@IMn0_t2k$egxCuKF%?&nl1JKJ$V+Qz5n)vIEo*(QcM z_VVSB+#APCnpiQ(n&5VD{J=>e<^piF_FkBu@Q1T4)`TS?iOiJw8P>OT2U<5LiDtK> za(lg_7s)*nJ0GBLyKe3#ni8^~45d0orq%^{2VU?wCz_{eEERQT#-qb*A5rB*2eDv+ zsxJ||UG^lFExSwCq?G80W;i;Xj>~JO5)x@es@LMMVN9C7)r_hJcQQ9d-3bv^rtdJV zp`cn+nq56nX0?^zchfxQtYuAHzc$*p&m*L`3lyjSZG09rx}NTQGc2 zD01TZHl(_;mGV%E#ABy| z@r`A1HNLHT;=ZgCdae77KK3J(%QGfb3%0%VvoklF0+S1~JnsvDkOH~5Tl1fGTJXAI zINE(Lee1hKs~J#q9(jU+*%mo{H|dNbpiz0b>1Xby&)@Dulbk27yya(3_4&jqIolSr zw=k_Poc23)K+R_tWgYRhQRNGtIoArc+8HNL9VrfVcYLCt{0v9Iv_2br1m@$oJ%CqG zd#B1JA^GTb(XyE)K7}H}C!lU8%~WC6VWL#2p_hrg3H>nzKDn;?87atXc`&DFQzXTC zv^=uzE%l*jfTJJwonKiF9e1)Te2`K1x!higOfwk-ov&3QxQ06=Z&sJ$mEJ6#h)Y>a zi&;OZEL5sioh0=!;Q{)&h{&*;)#%EF?Oi%PUrU+TIwh|CaO0jML4%-Gd^ER_RB3 zFlWISXu4w7?d&-gU&908xXW@SZx#^`R)j?)N8ehW>lff~Z=M#`GO0)q2-lD~L4KvI zU{F%pUAti;Pr!MME!HWYf;$Mx^=eg`W63*uwDEC}+4=D1cU>Scvt+#!u+i=Q~ZQ)AZG zo$k8urb?o?h>_3vwot8PGPc2E{!K6yKSJuBG7g1m%-Nf}DAHTBzN+)y$s>DyD6eaR zu#QYfOr$vAY_2)x1>R{lZC;c$;p=MnF%{^_lWXR>lm2#=P9KF*ao;}(G|ww=OXAqK zd(JOwmY8^FFw}~;;d0)=Pc(3cJzw)X?qhv?nN^MS4ZGJzuRVL3uxHA1S6Cmy74HQ- zqjdh*$o8sRbi_yIt!XWtnyI`voN|fv+QjQrj~60?Iir$puYRnjJzVhVjpa=|aXnzO z_9^%If*s40Te5`Yi&PXVQ#y@`T#ennXSY99mvSMFS2Gy^DnV{C&YhRT_Fvbl_akOq zJ0f6qJ05BBawyIOf+5URqXyaVx^*+}enco*ANBL+ zKAKn=;ytIbL&YgWgYiWfnW0kU#_^l)KkN%LdN$~N-hk}#d8aa-P{X|6y)ys7CZvkL zD%-0_=nK7#VBZBfqdKdS%T6{axxHUJ+thrqmw?38kxk8Z)64^kV zEW+xY!vf}De`Me|RlPfZ#J=1_}V9O5eiD@$wjeD*}xCt}a6Jy!+X+OH!idq>-A4nx~ zVB^jdnQa`qlx9p;47m|r9lh6{c0jCZBOZxECU7{ES4*lu`Y@{U8&Np1Bg-|&sU4WH z*%jvH=Q?g0x^jhZgtNQ6w7}=wvdwZFrk;9)zq+v7<+)fbPnBoA**tV1r*{#i3E}YT zxXr;0PVI!Ii4D#5G8JTLI1JM^F|MV4;_=({kZOIY%0|V8w4J3do~{>6qui-AP&sGz zk#YW3CWw(JBj`VwX%w$H)8zjk&Z}(HO&`ATeVl+@%X z)1ON8GJ^MTz0X@ms#em(@-p(OC&7FOZ1KA8dq*Nd#v6HdP3_mu7JJzuAa9cMVx;t5 z@p$i8)x}y8g)9h|_CPqX%47)UM!hiZ)9UlTNP~HB9#h|p1!tF6loRSJCmr7NZ@D@) z4@Wf*^{`4RERSezrw_t??mCPISX$~ENV%J>-*W9Zz35rOrNLEn(%&)-rUD-;E=+Y4 z%lrI^#?P3#xhMLV^>$li^(pA-7gW~;jbF92zu=N{^|TYEtDSu_tbY!RQ;AEdf7SdF(*pL$-rlW@HjS8EKG%|=;s=Y4P+%j57HlcTPufVK0h;b z6r=BJW>KHxBWVYlsK@EyUQ5wcOk|A;0tt4EUYbRv_V*bl#M!NOUQ6M{I0{wF13Tr$ zsr}0x)voxBA&E2RrpAjFrCLv5n!{DbMV&r%%%o|_?pqwYAr(z9?3jOoAH0O0d;g^F zr}kt)6}_& zu1XPq&ROHTvz6Rmn5Nt{a6#`zBZQvCp~sKEESpux`!@87#?vvWgiVg&6o&J|#hYU8 zZznBm1gnzperH!J&P7~Ja0?#zG|}M8zC3X^icYwLHQ8EvVdsaXPVw;=b%#_FVMBs# z{yjoY?UdVo5H3X0#SEg^W5ea3t8sI(xUe|$!79u~S)tB5LXTmKg|$+5K=gRz<)=SB zXwszBzNb!4q5O5O@wd~Rg$iTe?^gFNKOFnSKS9UFj{Kno?#b+wMAHcG`_^50L>mM_ z!diib0c-Fjafg*fF|^LQqnY9Q=F2ixL+!IIUJq>qfXgPhA3Vh?E`U49cp52w0U?{G z!iL0Sv2mt4NUDvkEG|2DB|-UEDlW5GYkrE}uD1v_jIn=czpjiKI!kstW2Li_PHmQr z3e+60K+fvYaY3oh%dm^=UbJ3*aO!iBTjtZ+``UJf|YtI1MI z40oUo;a6zXRzJ8OYmRpjlNUL{qXMRx)o*DnU4}5Lfykx1gJ+H=-)l(=+jELOZ5CKh zG$W3CMq1}Fak*R$RNStyeIw*A$Lc+DXW#N-sd$8o*0n9MHwgckuZ0b#FNlFijXs2c z_EYv$r438-`r3W1%{a@Vnk}mhoM2BXNF>B95YAi!8(b~4#%`A9MEyA0qY>faEAN&r z@(_+2&Qyul_4z;WAasg1n%M4M?KUey%ZY13(%DhQ0eN`SrjjTcVI@(A@{)9W$@~50 z4<~ixSH*j0b-u5p8AHOlXuo0acnc;Ql z-;9t-OuBWF86xnDII(sz()U(;$^kj$R@sW-_!nx3mte@76C52qjU`N)rs!vz>A~bS z6|OQV>Gd2o*EkxMbTybIQOoBNantl%M=xA$XtEdatM0{Y*p^tux#{CV+`@9_JaVg< zfhWH}eB|s=sHgHse<(YHiQtNx0M$#*iv9WWeeJGSoFPDR^Tm$Q8lxCD6}x99!a>|; zjvsYG9jd>NAUapQzZ3#8(FYHcshhukRBe;uM4t1Zt~kZJ*51pM{@AjShW;$yOUp9% z5q#YB>7U9K&u6)`&XT_f+dkSM!nf&h;8ILYj=CbyM9F(pRsVAul#8{H#$ockOAJS4 zn7-GiG^l}Hh%N5sJ8di(?%qTB4u9x$K%?j5T})NmK~+u=l%*yZm6z!8^2?T2s`EmjD6(&|p(**PQlJx$qLWBmnK^ToO!C9=s%3Ql z0pXyL$x%<5=Wq9S|K)b?-%`!oXZ~knqvfsyC5Ij#cP~3$5~`*Z7K;@p`+cK0AqXUv z6b2`cYFzHHk2Qz~h!^Bd@bm4lY`o)%%bp@Er|vpbz639?l?JNaIdyUmTL-7^ulF#o zyPu29o9@rCKC}8Ra9HwJfGly3iGgN1C z>E_9?0%Fsu42s;bgAZ-vhxz=mWU0pIzmYTXn4H_0_|_aH99j)jdmbMsdV}4ntb|HT zjHV^=6KXs_Cp=LtQK55OMU!uk7>K;RlU+xkA2ckDU8H1TAyoU7)K4=~#10Jm-#7WR zmB_?$s-)VrfBR~0*}+EQbje;!mcFZgWn?FS+PshAx<@56q8OQMO1^V-*< zew<=v(VX^EKwD;F=2Zo|ROa!v;pXM{txv z;JiL6KEeDU;8rTawY&EKcRrsp>s;JNZhspLeeuQwhCLg=iwiA~ZK~A_ z^KIv>0tRGM{h#q_%orYKlpcmDNy3k#ozs&6b*@5q<T%bxf~ss5(n=3R}Drte49*M7PLl1DbQ?W5Z`c$!9JW zl!Rbx7Z!vqyK?7{?a?;R*)S|a6=S+;w{G1XEe+y^hIh49ij2l;YhB7|Me>lL%F*Hi zrLA2;5(WV(>liYbZsEX6!&1wdPKJ1!pT@LJ>N*j9A+K4;w@()gPX>O~%cnOr=dz@6 z83?K+*Qc!?D{42eun*gtfa81{$^(O}@Q- z%b{^BNG1-$QK5O8H6RE@PpxIGV`1T$u4KT%8qODE%am2ewC#V>lZzuPS0b4wBZ5cw z%2<9Lo36@u`~5p=83N&s9(7X;gR5&Fub|QB`;|KSlB1)~N4N^@&SvL&$B`^Jl)Iwn8B2qv1@K_I|wDaN~{K8}ceF#lw z@r`{$>FHbCU2mI;9VD+~da|6XFKjShtSdeaqjJ4;eaa(2o7R7{3`1Eq?0pR_>%44+ z!bf?f^`sm3|r{Pj&PNO^fCFMzP8ak1;AJ z*W`Tg@qHB11UA$tSKVjRC5PpA{+>Atmc|K|nLO{HFNwY8Pn^4YrY4}Tk#WZI*C%S- z^LcP-&L0(3OD}a`$SWdvzkb%VVH~Qqtf{qTkzb0DCX1rZcm!kNj;gu+E`CI2PqTX$ zqZs$5MjOYA-_ag+z&&?)F9_-{uZ0D$}r6=`ivhHZSPg(hHewZjlFFyC4vi`$EBh5G8;{SeLJ|` z!!xSV5X4*`yX(+#iw867T81jQPoz0CB&&&o8=ZdTEnX7$@_ElHgyZ%LeJ$aM@cfHU z;B2!|8bbOj@`5zt-HqzD+?TeXxno0&b3f;jPS^`>y^6X)m&;G%AAJ;YOduQfW&E61lir*}6@#_%%?)k3pZEpobH7hGF8j{@{foUL_B{J59*49NX z`WYd~@Zt9h=A%6&(ES44!4MX-RXXN219Y|SOaug2~%<@bd-4uE#%&W2W^t|Spn=EDqL3i?u)pF3#Rq9{zXvrO0g%*$(7WY z$0~;CN)`R$riCQprT3)}vZHkK?))Rs%#Y1eD!H~rH=a?ae({rId}jo;-W=YXGV;>i zXkJUzD!X_24?1K6DtJ=`9`Mlr;Tb8sgwL5jsHW z%H$O3Vx!({JG2gKp}A1JoP&}V?7I)|qm?1!ImYU~jQJt|!`XSB)rGdW-=bIT%>lB9 zKBM_#*67x+tU$M&y7gdVN^^pPlWPRgHCylwHo z|3J`nU=g#Ov;%Qo5`pB8KJ}ahRC)+D!2^m&`%~~@j(-^rdQ)^rwjl7M2S6h1F_59tk zaBZ95Z%3_FZ;2*zK=WkK9?^V{VLf4wpGxSAoG1h|P97F+UX}QAXexEUNnFgtNeP-5 zW^;jC^_BORD9`gbvF{qZCZ{St^9XXuNAx*!_m8g+C3h(GM)-!~N+aVm%bw3N7cjUM zPfJr%ocd@rlilRkr5MmwqZ!k2Me-r`h!|27I#UQ4q+Qx?-J{ zLuW%NSa>q^di21`b0NXFyr_PqK0ZBpSJ!jUv+r9dwvz3FGf%xXi4`4rv9Yt(KROu2 z`TV(Ps8lk6Ql#I_)Xpi;?eG7B;&LR52+1NsvWSo@A|#6l$s$6sh>$EIB#Q{iB0{o= zkSro3iwMagLb8aEEFvU}2+1NsvWSo@A|#6l$s$6sh>$EIB#Q{iBJ%&mB65yIVkMDS zNhDShiIqfRC6QQ3BvulMl|*7CkyuG2RuYMoL}De8SV<&S5{Z>WVkMDSNhDShiIqfR zC6QQ3BvulMl|*7CkyuG2RuYMoL}De8SV<&S5{Z>WVkMDSNhDShiIqfRC6QQ3BvulM zl|*7CkyuG2RuYMoL}De8SV<(-Lk<}q002VO0uBKn z6b|K!8}Y|NN8g5bdJ5f<159VUTr2;YJ~ zmZI2B60TwwkHJC~_yT_mAQ*$C@6ve8_RQ zja~e6-tqoex(pRKoEHw)t6S*8#{VfuVz97aUXKwB7TR^k1A_&Uzm&ffBp43j!?7U# zSE)kazz$On>&9ZcG4 zA8VQcG5{2XL`EZ^NF*u>z#0Y#V3`QxE; z<>(Lu6bV2G0+O^AjEAfxg&+=B7Xb>w@t`31FbP6{q(^v=6m*ybA|U8Be>_EJk_*Bs zsT_lctf2#c3!nglrymPK1lISLC)s$7;qe83C=_FO{2JP841=fKYHf-_jN!-rP%wCC zlKXdmJmp|^_TbnW9{;O700Dw9c$!C5bt9bx1$o)ov;KGx6mWQ%-x6(SRn=Xaz(9n} zn;+YlzcflT9^c`cS+nMk2XmMour)j${cBhtf_V*}p1+32&-FL-&u#xGjl{40Iq!0R zJY9nq0%3zd1of|t;miLNTrhZ8zD@cZ1`i!eO2^=V%P-|`1qnug@^CyT|5d6G1W3a4 z!^ZIVF-$-BUCRgrEC`Peia4D8zZ|3I=g|=eC;-S51Q`+l6fy|`L834q839lM0D?fq zALc;-fe=W5lMs*_Vx&&huuSokhNWZB5eQX&;4Hw zAw<}~tAbq&5q9wN=fR&%&97dq`4eG;#lFRm!(kyr=vwnYAQ98|D~%>X|5X0BllY?_ z2BZ)JKoT(sBoH%zgPfy10Ay5$F9!afg2}I!_;1nc$MnZI)cU`PzhWKrs{`tv)x$XK z!1NzRAI3Tp0GMA#{~<5{{KM4#ie3QzO8zNG`af0WuOQW@@2_I~d-VO!-%qBEe;@W| jY#eT(|7L#}{N6zS;S3wUWdN8k|1ilu%%A)7zm5L_Z5+rw diff --git a/apps/mini/src-tauri/icons/icon.ico b/apps/mini/src-tauri/icons/icon.ico deleted file mode 100644 index 2a5bb4bd97e77356681d414a4bf68cc7e77766bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13686 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 brV3#EU&FC(iEO|Lv|d}H=7az5pJM+DMZ~`A diff --git a/apps/mini/src-tauri/src/lib.rs b/apps/mini/src-tauri/src/lib.rs deleted file mode 100644 index e776e3f..0000000 --- a/apps/mini/src-tauri/src/lib.rs +++ /dev/null @@ -1,70 +0,0 @@ -use tauri::Window; - -#[cfg(windows)] -use tauri::Manager; -#[cfg(not(windows))] -use tauri::{PhysicalPosition, PhysicalSize}; - -#[cfg(windows)] -mod windows_appbar; - -#[tauri::command] -fn dock_window(window: Window, side: String) -> Result<(), String> { - #[cfg(windows)] - { - let hwnd = window.hwnd().map_err(|error| error.to_string())?; - return windows_appbar::set_edge(hwnd, side == "left").map_err(|error| error.to_string()); - } - - #[cfg(not(windows))] - { - let monitor = window - .current_monitor() - .map_err(|error| error.to_string())? - .ok_or_else(|| "Unable to identify the current monitor".to_string())?; - let window_size = window.outer_size().map_err(|error| error.to_string())?; - let work_area = monitor.work_area(); - let dock_size = PhysicalSize::new(window_size.width, work_area.size.height); - let x = if side == "left" { - work_area.position.x - } else { - work_area.position.x + work_area.size.width as i32 - dock_size.width as i32 - }; - - window - .set_size(dock_size) - .map_err(|error| error.to_string())?; - window - .set_position(PhysicalPosition::new(x, work_area.position.y)) - .map_err(|error| error.to_string())?; - window - .set_always_on_top(true) - .map_err(|error| error.to_string())?; - Ok(()) - } -} - -#[cfg_attr(mobile, tauri::mobile_entry_point)] -pub fn run() { - tauri::Builder::default() - .setup(|app| { - #[cfg(windows)] - { - let window = app - .get_webview_window("main") - .expect("main window must be configured"); - windows_appbar::register(window.hwnd()?)?; - } - - Ok(()) - }) - .invoke_handler(tauri::generate_handler![dock_window]) - .build(tauri::generate_context!()) - .expect("failed to build SenlinAI Mini") - .run(|_, event| { - #[cfg(windows)] - if matches!(event, tauri::RunEvent::ExitRequested { .. }) { - windows_appbar::unregister(); - } - }); -} diff --git a/apps/mini/src-tauri/src/main.rs b/apps/mini/src-tauri/src/main.rs deleted file mode 100644 index b1774f5..0000000 --- a/apps/mini/src-tauri/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - senlinai_mini_lib::run(); -} diff --git a/apps/mini/src-tauri/src/windows_appbar.rs b/apps/mini/src-tauri/src/windows_appbar.rs deleted file mode 100644 index 1f16b31..0000000 --- a/apps/mini/src-tauri/src/windows_appbar.rs +++ /dev/null @@ -1,178 +0,0 @@ -//! Windows system AppBar integration for the Mini side panel. - -use std::sync::atomic::{AtomicBool, AtomicIsize, AtomicU32, Ordering}; - -use windows::{ - core::{w, Error, Result}, - Win32::{ - Foundation::{HWND, LPARAM, LRESULT, RECT, WPARAM}, - Graphics::Gdi::{ - GetMonitorInfoW, MonitorFromWindow, MONITORINFO, MONITOR_DEFAULTTONEAREST, - }, - UI::{ - Shell::{ - DefSubclassProc, RemoveWindowSubclass, SHAppBarMessage, SetWindowSubclass, - ABE_LEFT, ABE_RIGHT, ABM_ACTIVATE, ABM_NEW, ABM_QUERYPOS, ABM_REMOVE, ABM_SETPOS, - ABM_WINDOWPOSCHANGED, ABN_POSCHANGED, APPBARDATA, - }, - WindowsAndMessaging::{ - GetWindowRect, RegisterWindowMessageW, SetWindowPos, SWP_NOACTIVATE, SWP_NOZORDER, - WM_ACTIVATE, WM_WINDOWPOSCHANGED, - }, - }, - }, -}; - -const SUBCLASS_ID: usize = 0x5341_4D42; // "SAMB" (SenlinAI Mini AppBar) - -static CALLBACK_MESSAGE: AtomicU32 = AtomicU32::new(0); -static REGISTERED_HWND: AtomicIsize = AtomicIsize::new(0); -static EDGE: AtomicU32 = AtomicU32::new(ABE_RIGHT); -static LAYOUT_IN_PROGRESS: AtomicBool = AtomicBool::new(false); - -/// Registers the main Mini window as a right-edge AppBar. -pub fn register(hwnd: HWND) -> Result<()> { - if REGISTERED_HWND.load(Ordering::Acquire) != 0 { - return Ok(()); - } - - let callback_message = unsafe { RegisterWindowMessageW(w!("SenlinAI.Mini.AppBar.Callback")) }; - if callback_message == 0 { - return Err(Error::from_win32()); - } - - unsafe { - SetWindowSubclass(hwnd, Some(appbar_subclass_proc), SUBCLASS_ID, 0).ok()?; - } - - let mut data = appbar_data(hwnd); - data.uCallbackMessage = callback_message; - if unsafe { SHAppBarMessage(ABM_NEW, &mut data) } == 0 { - unsafe { - let _ = RemoveWindowSubclass(hwnd, Some(appbar_subclass_proc), SUBCLASS_ID); - } - return Err(Error::from_win32()); - } - - CALLBACK_MESSAGE.store(callback_message, Ordering::Release); - REGISTERED_HWND.store(hwnd.0 as isize, Ordering::Release); - - if let Err(error) = layout(hwnd) { - unregister(); - return Err(error); - } - - Ok(()) -} - -/// Repositions the AppBar after the Mini UI selects the left or right edge. -pub fn set_edge(hwnd: HWND, left: bool) -> Result<()> { - EDGE.store(if left { ABE_LEFT } else { ABE_RIGHT }, Ordering::Release); - layout(hwnd) -} - -/// Removes the AppBar reservation before the Tauri window is destroyed. -pub fn unregister() { - let raw_hwnd = REGISTERED_HWND.swap(0, Ordering::AcqRel); - CALLBACK_MESSAGE.store(0, Ordering::Release); - - if raw_hwnd == 0 { - return; - } - - let hwnd = HWND(raw_hwnd as *mut _); - let mut data = appbar_data(hwnd); - unsafe { - SHAppBarMessage(ABM_REMOVE, &mut data); - let _ = RemoveWindowSubclass(hwnd, Some(appbar_subclass_proc), SUBCLASS_ID); - } -} - -unsafe extern "system" fn appbar_subclass_proc( - hwnd: HWND, - message: u32, - wparam: WPARAM, - lparam: LPARAM, - _subclass_id: usize, - _reference_data: usize, -) -> LRESULT { - let callback_message = CALLBACK_MESSAGE.load(Ordering::Acquire); - - if message == callback_message && wparam.0 as u32 == ABN_POSCHANGED { - let _ = layout(hwnd); - } else if message == WM_ACTIVATE { - let mut data = appbar_data(hwnd); - SHAppBarMessage(ABM_ACTIVATE, &mut data); - } else if message == WM_WINDOWPOSCHANGED { - let mut data = appbar_data(hwnd); - SHAppBarMessage(ABM_WINDOWPOSCHANGED, &mut data); - - if !LAYOUT_IN_PROGRESS.load(Ordering::Acquire) { - let _ = layout(hwnd); - } - } - - DefSubclassProc(hwnd, message, wparam, lparam) -} - -fn layout(hwnd: HWND) -> Result<()> { - if LAYOUT_IN_PROGRESS.swap(true, Ordering::AcqRel) { - return Ok(()); - } - - let result = layout_inner(hwnd); - LAYOUT_IN_PROGRESS.store(false, Ordering::Release); - result -} - -fn layout_inner(hwnd: HWND) -> Result<()> { - let mut window_rect = RECT::default(); - unsafe { GetWindowRect(hwnd, &mut window_rect)? }; - let width = window_rect.right - window_rect.left; - - let monitor = unsafe { MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST) }; - let mut monitor_info = MONITORINFO { - cbSize: std::mem::size_of::() as u32, - ..Default::default() - }; - unsafe { GetMonitorInfoW(monitor, &mut monitor_info).ok()? }; - - let edge = EDGE.load(Ordering::Acquire); - let mut data = appbar_data(hwnd); - data.uEdge = edge; - data.rc = monitor_info.rcMonitor; - if edge == ABE_LEFT { - data.rc.right = data.rc.left + width; - } else { - data.rc.left = data.rc.right - width; - } - - unsafe { - SHAppBarMessage(ABM_QUERYPOS, &mut data); - if edge == ABE_LEFT { - data.rc.right = data.rc.left + width; - } else { - data.rc.left = data.rc.right - width; - } - SHAppBarMessage(ABM_SETPOS, &mut data); - SetWindowPos( - hwnd, - None, - data.rc.left, - data.rc.top, - data.rc.right - data.rc.left, - data.rc.bottom - data.rc.top, - SWP_NOACTIVATE | SWP_NOZORDER, - )?; - } - - Ok(()) -} - -fn appbar_data(hwnd: HWND) -> APPBARDATA { - APPBARDATA { - cbSize: std::mem::size_of::() as u32, - hWnd: hwnd, - ..Default::default() - } -} diff --git a/apps/mini/src-tauri/tauri.conf.json b/apps/mini/src-tauri/tauri.conf.json deleted file mode 100644 index 5f58f88..0000000 --- a/apps/mini/src-tauri/tauri.conf.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.tauri.app/config/2", - "productName": "森林AI Mini", - "version": "1.0.0", - "identifier": "ai.senlin.mini", - "build": { - "frontendDist": "../dist", - "devUrl": "http://localhost:5180", - "beforeDevCommand": "npm run dev", - "beforeBuildCommand": "npm run build" - }, - "app": { - "windows": [ - { - "label": "main", - "title": "森林AI Mini", - "width": 420, - "height": 820, - "minWidth": 360, - "minHeight": 640, - "resizable": true, - "maximizable": false, - "alwaysOnTop": true, - "center": false - } - ], - "security": { - "csp": "default-src 'self'; img-src 'self' asset: https: data:; style-src 'self' 'unsafe-inline'; connect-src http: https:" - } - }, - "bundle": { - "active": true, - "targets": "all", - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ] - } -} diff --git a/scripts/build-desktop.sh b/scripts/build-desktop.sh index ad6a910..0b603aa 100755 --- a/scripts/build-desktop.sh +++ b/scripts/build-desktop.sh @@ -4,7 +4,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT_DIR/apps/desktop" -npm run build +npm run desktop:build echo "Desktop build completed."