├── gopoc
├── lib
│ └── .gitkeep
├── include
│ └── vpnym.h
├── go.mod
├── .gitignore
├── gopoc.go
└── README.md
├── runner
├── .gitignore
├── Cross.toml
├── Cargo.toml
├── src
│ └── main.rs
└── Cargo.lock
├── app
├── src
│ ├── vite-env.d.ts
│ ├── App.css
│ ├── main.tsx
│ ├── App.tsx
│ ├── styles.css
│ └── assets
│ │ └── react.svg
├── src-tauri
│ ├── build.rs
│ ├── Cross.toml
│ ├── icons
│ │ ├── 32x32.png
│ │ ├── icon.icns
│ │ ├── icon.ico
│ │ ├── icon.png
│ │ ├── 128x128.png
│ │ ├── 128x128@2x.png
│ │ ├── StoreLogo.png
│ │ ├── Square30x30Logo.png
│ │ ├── Square44x44Logo.png
│ │ ├── Square71x71Logo.png
│ │ ├── Square89x89Logo.png
│ │ ├── Square107x107Logo.png
│ │ ├── Square142x142Logo.png
│ │ ├── Square150x150Logo.png
│ │ ├── Square284x284Logo.png
│ │ └── Square310x310Logo.png
│ ├── .gitignore
│ ├── src
│ │ ├── lib.rs
│ │ └── main.rs
│ ├── Cargo.toml
│ └── tauri.conf.json
├── .vscode
│ └── extensions.json
├── tsconfig.node.json
├── .gitignore
├── README.md
├── index.html
├── tsconfig.json
├── vite.config.ts
├── package.json
├── public
│ ├── vite.svg
│ └── tauri.svg
└── package-lock.json
├── README.md
└── .github
└── workflows
└── build.yaml
/gopoc/lib/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/runner/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /lib
3 |
--------------------------------------------------------------------------------
/gopoc/include/vpnym.h:
--------------------------------------------------------------------------------
1 | void run_tauri();
2 |
--------------------------------------------------------------------------------
/gopoc/go.mod:
--------------------------------------------------------------------------------
1 | module gopoc
2 |
3 | go 1.21
4 |
--------------------------------------------------------------------------------
/app/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/app/src-tauri/build.rs:
--------------------------------------------------------------------------------
1 | fn main() {
2 | tauri_build::build()
3 | }
4 |
--------------------------------------------------------------------------------
/runner/Cross.toml:
--------------------------------------------------------------------------------
1 | [build.env]
2 | volumes = ["VOL1_ARG=./lib"]
3 |
4 |
--------------------------------------------------------------------------------
/gopoc/.gitignore:
--------------------------------------------------------------------------------
1 | lib/*.so
2 | lib/*.dll
3 | lib/*.dylib
4 | bin/
5 | .idea
6 |
--------------------------------------------------------------------------------
/app/src-tauri/Cross.toml:
--------------------------------------------------------------------------------
1 | [build.env]
2 | volumes = ["VOL1_ARG=../dist"]
3 |
4 |
--------------------------------------------------------------------------------
/app/src-tauri/icons/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/32x32.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/icon.icns
--------------------------------------------------------------------------------
/app/src-tauri/icons/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/icon.ico
--------------------------------------------------------------------------------
/app/src-tauri/icons/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/icon.png
--------------------------------------------------------------------------------
/app/src-tauri/.gitignore:
--------------------------------------------------------------------------------
1 | # Generated by Cargo
2 | # will have compiled files and executables
3 | /target/
4 |
5 |
--------------------------------------------------------------------------------
/app/src-tauri/icons/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/128x128.png
--------------------------------------------------------------------------------
/app/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"]
3 | }
4 |
--------------------------------------------------------------------------------
/app/src-tauri/icons/128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/128x128@2x.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/StoreLogo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square30x30Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square30x30Logo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square44x44Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square44x44Logo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square71x71Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square71x71Logo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square89x89Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square89x89Logo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square107x107Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square107x107Logo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square142x142Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square142x142Logo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square150x150Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square150x150Logo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square284x284Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square284x284Logo.png
--------------------------------------------------------------------------------
/app/src-tauri/icons/Square310x310Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nymtech/tauri_lib/HEAD/app/src-tauri/icons/Square310x310Logo.png
--------------------------------------------------------------------------------
/app/src/App.css:
--------------------------------------------------------------------------------
1 | .logo.vite:hover {
2 | filter: drop-shadow(0 0 2em #747bff);
3 | }
4 |
5 | .logo.react:hover {
6 | filter: drop-shadow(0 0 2em #61dafb);
7 | }
8 |
--------------------------------------------------------------------------------
/runner/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "vpnym_d"
3 | version = "0.1.0"
4 | edition = "2021"
5 |
6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7 |
8 | [dependencies]
9 | libloading = "0.8"
10 |
11 |
--------------------------------------------------------------------------------
/app/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/gopoc/gopoc.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | /*
4 | #cgo CFLAGS: -I./include
5 | #cgo LDFLAGS: -L./lib -lvpnym
6 | #include "vpnym.h"
7 | */
8 | import "C"
9 |
10 | import (
11 | "fmt"
12 | )
13 |
14 | func main() {
15 | fmt.Println("calling libvpnym…")
16 | C.run_tauri()
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import App from "./App";
4 | import "./styles.css";
5 |
6 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
7 |
8 |
9 | ,
10 | );
11 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/app/README.md:
--------------------------------------------------------------------------------
1 | # Tauri + React + Typescript
2 |
3 | This template should help get you started developing with Tauri, React and Typescript in Vite.
4 |
5 | ## Recommended IDE Setup
6 |
7 | - [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
8 |
--------------------------------------------------------------------------------
/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Tauri + React + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src-tauri/src/lib.rs:
--------------------------------------------------------------------------------
1 | // Prevents additional console window on Windows in release, DO NOT REMOVE!!
2 | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
3 | //
4 | // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
5 | #[tauri::command]
6 | fn greet(name: &str) -> String {
7 | format!("Hello, {}! You've been greeted from Rust!", name)
8 | }
9 |
10 | #[no_mangle]
11 | pub extern "C" fn run_tauri() {
12 | tauri::Builder::default()
13 | .invoke_handler(tauri::generate_handler![greet])
14 | .run(tauri::generate_context!())
15 | .expect("error while running tauri application");
16 | }
17 |
--------------------------------------------------------------------------------
/app/src-tauri/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "vpnym"
3 | version = "0.1.0"
4 | description = "Nym VPN app lib"
5 | authors = ["pierre@nymtech.net"]
6 | license = ""
7 | repository = ""
8 | edition = "2021"
9 |
10 | [lib]
11 | crate-type = ["cdylib"]
12 |
13 | [build-dependencies]
14 | tauri-build = { version = "1.5", features = [] }
15 |
16 | [dependencies]
17 | tauri = { version = "1.5", features = ["shell-open"] }
18 | serde = { version = "1.0", features = ["derive"] }
19 | serde_json = "1.0"
20 |
21 | [features]
22 | # this feature is used for production builds or when `devPath` points to the filesystem
23 | # DO NOT REMOVE!!
24 | custom-protocol = ["tauri/custom-protocol"]
25 |
--------------------------------------------------------------------------------
/app/src-tauri/src/main.rs:
--------------------------------------------------------------------------------
1 | // This main file is used for development purposes only.
2 |
3 | // Prevents additional console window on Windows in release, DO NOT REMOVE!!
4 | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
5 |
6 | // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
7 | #[tauri::command]
8 | fn greet(name: &str) -> String {
9 | format!("Hello, {}! You've been greeted from Rust!", name)
10 | }
11 |
12 | fn main() {
13 | tauri::Builder::default()
14 | .invoke_handler(tauri::generate_handler![greet])
15 | .run(tauri::generate_context!())
16 | .expect("error while running tauri application");
17 | }
18 |
--------------------------------------------------------------------------------
/app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "noEmit": true,
15 | "jsx": "react-jsx",
16 |
17 | /* Linting */
18 | "strict": true,
19 | "noUnusedLocals": true,
20 | "noUnusedParameters": true,
21 | "noFallthroughCasesInSwitch": true
22 | },
23 | "include": ["src"],
24 | "references": [{ "path": "./tsconfig.node.json" }]
25 | }
26 |
--------------------------------------------------------------------------------
/app/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import react from "@vitejs/plugin-react";
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig(async () => ({
6 | plugins: [react()],
7 |
8 | // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
9 | //
10 | // 1. prevent vite from obscuring rust errors
11 | clearScreen: false,
12 | // 2. tauri expects a fixed port, fail if that port is not available
13 | server: {
14 | port: 1420,
15 | strictPort: true,
16 | },
17 | // 3. to make use of `TAURI_DEBUG` and other env variables
18 | // https://tauri.studio/v1/api/config#buildconfig.beforedevcommand
19 | envPrefix: ["VITE_", "TAURI_"],
20 | }));
21 |
--------------------------------------------------------------------------------
/runner/src/main.rs:
--------------------------------------------------------------------------------
1 | use libloading::{Library, Symbol};
2 |
3 | #[cfg(target_os = "linux")]
4 | const LIB_FILE: &str = "libvpnym.so";
5 | #[cfg(target_os = "windows")]
6 | const LIB_FILE: &str = "vpnym.dll";
7 | #[cfg(target_os = "macos")]
8 | const LIB_FILE: &str = "libvpnym.dylib";
9 |
10 | fn call_dynamic() -> Result<(), Box> {
11 | let lib_path = format!("lib/{LIB_FILE}");
12 | println!("lib_path: {}", lib_path);
13 | unsafe {
14 | let lib = Library::new(lib_path)?;
15 | let func: Symbol = lib.get(b"run_tauri")?;
16 | func();
17 | Ok(())
18 | }
19 | }
20 |
21 | fn main() -> Result<(), Box> {
22 | call_dynamic()
23 | }
24 |
--------------------------------------------------------------------------------
/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vpnym",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "app:dev": "tauri dev",
8 | "app:build": "npm run build && cd src-tauri && cargo build --release --lib --features custom-protocol",
9 | "dev": "vite",
10 | "build": "tsc && vite build",
11 | "preview": "vite preview",
12 | "tauri": "tauri"
13 | },
14 | "dependencies": {
15 | "react": "^18.2.0",
16 | "react-dom": "^18.2.0",
17 | "@tauri-apps/api": "^1.5.0"
18 | },
19 | "devDependencies": {
20 | "@types/react": "^18.2.15",
21 | "@types/react-dom": "^18.2.7",
22 | "@vitejs/plugin-react": "^4.0.3",
23 | "typescript": "^5.0.2",
24 | "vite": "^4.4.4",
25 | "@tauri-apps/cli": "^1.5.0"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Tauri lib POC
2 |
3 | This is a demonstration of a tauri app compiled as a dynamic
4 | shared library, that can be run from another app
5 |
6 | ## Install
7 |
8 | #### Prerequisites
9 |
10 | - Rust
11 | - Nodejs (npm), latest LTS version recommended
12 |
13 | Some system libraries are required depending on the host platform.
14 | Follow the instructions for your specific OS [here](https://tauri.app/v1/guides/getting-started/prerequisites)
15 |
16 | #### Install project dependencies
17 |
18 | ```
19 | npm i
20 | ```
21 |
22 | ## App Development
23 |
24 | ```
25 | cd app
26 | npm run app:dev
27 | ```
28 |
29 | ## Build
30 |
31 | build the app (lib)
32 |
33 | ```
34 | cd app
35 | npm run app:build
36 | ```
37 |
38 | build the runner
39 |
40 | ```
41 | cd runner
42 | cargo build
43 | ```
44 |
45 | ## Run
46 |
47 | First copy the compiled shared library in a subdirectory named
48 | `lib` relative to where you want to run the app:
49 |
50 | Example on Linux:
51 |
52 | ```
53 | cd runner
54 | mkdir lib
55 | cp ../app/src-tauri/target/release/libvpnym.so lib
56 | cargo run
57 | ```
58 |
59 |
--------------------------------------------------------------------------------
/gopoc/README.md:
--------------------------------------------------------------------------------
1 | ## gopoc
2 |
3 | POC of a Go program consuming a tauri app as a shared library
4 | through FFI
5 |
6 | For the FFI layer, between Go and Rust, we are using [cgo](https://pkg.go.dev/cmd/cgo)
7 |
8 | ### copying tauri lib files
9 |
10 | First compile and copy the `vpnym` lib files (depending on what is
11 | your host/target arch) into the `lib` directory
12 |
13 | ```
14 | .
15 | ├── go.mod
16 | ├── gopoc.go
17 | ├── lib
18 | │ ├── libvpnym.so
19 | │ ├── vpnym.dll
20 | │ └── WebView2Loader.dll
21 | └── README.md
22 | ```
23 |
24 | ### dev
25 |
26 | ```
27 | WEBKIT_DISABLE_COMPOSITING_MODE=1 go run -ldflags="-r ./lib" gopoc.go
28 | ```
29 |
30 | ### build
31 |
32 | ```
33 | go build -ldflags="-r ./lib" -o bin/vpnym_d gopoc.go
34 | ```
35 |
36 | To build for Windows x86_64 architecture (from Linux)
37 |
38 | #### prerequisite
39 |
40 | MinGW-w64 cross-compiler
41 |
42 | ```
43 | GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc go build -ldflags="-r ./lib" -o bin/vpnym_d.exe gopoc.go
44 | ```
45 |
46 | ### Windows packaging
47 |
48 | Make a bundle of these files
49 | - `vpnym_d.exe` (go binary executable)
50 | - `vpnym.dll` (tauri app as a lib)
51 | - `WebView2Loader.dll` (library needed by tauri)
52 |
53 |
--------------------------------------------------------------------------------
/app/src-tauri/tauri.conf.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "beforeDevCommand": "npm run dev",
4 | "beforeBuildCommand": "npm run build",
5 | "devPath": "http://localhost:1420",
6 | "distDir": "../dist",
7 | "withGlobalTauri": false
8 | },
9 | "package": {
10 | "productName": "vpnym",
11 | "version": "0.0.0"
12 | },
13 | "tauri": {
14 | "allowlist": {
15 | "all": false,
16 | "shell": {
17 | "all": false,
18 | "open": true
19 | }
20 | },
21 | "bundle": {
22 | "active": true,
23 | "targets": "all",
24 | "identifier": "net.nym.vpn",
25 | "icon": [
26 | "icons/32x32.png",
27 | "icons/128x128.png",
28 | "icons/128x128@2x.png",
29 | "icons/icon.icns",
30 | "icons/icon.ico"
31 | ]
32 | },
33 | "security": {
34 | "csp": null
35 | },
36 | "windows": [
37 | {
38 | "fullscreen": false,
39 | "resizable": true,
40 | "title": "vpnym",
41 | "width": 800,
42 | "height": 600
43 | }
44 | ],
45 | "security": {
46 | "csp": "default-src blob: data: filesystem: ws: wss: http: https: tauri: 'unsafe-eval' 'unsafe-inline' 'self'; connect-src ipc: http://ipc.localhost"
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from "react";
2 | import reactLogo from "./assets/react.svg";
3 | import { invoke } from "@tauri-apps/api/tauri";
4 | import "./App.css";
5 |
6 | function App() {
7 | const [greetMsg, setGreetMsg] = useState("");
8 | const [name, setName] = useState("");
9 |
10 | async function greet() {
11 | // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
12 | setGreetMsg(await invoke("greet", { name }));
13 | }
14 |
15 | return (
16 |
17 |
Welcome to Tauri!
18 |
19 |
30 |
31 |
Click on the Tauri, Vite, and React logos to learn more.
32 |
33 |
47 |
48 |
{greetMsg}
49 |
50 | );
51 | }
52 |
53 | export default App;
54 |
--------------------------------------------------------------------------------
/app/src/styles.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
3 | font-size: 16px;
4 | line-height: 24px;
5 | font-weight: 400;
6 |
7 | color: #0f0f0f;
8 | background-color: #f6f6f6;
9 |
10 | font-synthesis: none;
11 | text-rendering: optimizeLegibility;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | -webkit-text-size-adjust: 100%;
15 | }
16 |
17 | .container {
18 | margin: 0;
19 | padding-top: 10vh;
20 | display: flex;
21 | flex-direction: column;
22 | justify-content: center;
23 | text-align: center;
24 | }
25 |
26 | .logo {
27 | height: 6em;
28 | padding: 1.5em;
29 | will-change: filter;
30 | transition: 0.75s;
31 | }
32 |
33 | .logo.tauri:hover {
34 | filter: drop-shadow(0 0 2em #24c8db);
35 | }
36 |
37 | .row {
38 | display: flex;
39 | justify-content: center;
40 | }
41 |
42 | a {
43 | font-weight: 500;
44 | color: #646cff;
45 | text-decoration: inherit;
46 | }
47 |
48 | a:hover {
49 | color: #535bf2;
50 | }
51 |
52 | h1 {
53 | text-align: center;
54 | }
55 |
56 | input,
57 | button {
58 | border-radius: 8px;
59 | border: 1px solid transparent;
60 | padding: 0.6em 1.2em;
61 | font-size: 1em;
62 | font-weight: 500;
63 | font-family: inherit;
64 | color: #0f0f0f;
65 | background-color: #ffffff;
66 | transition: border-color 0.25s;
67 | box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
68 | }
69 |
70 | button {
71 | cursor: pointer;
72 | }
73 |
74 | button:hover {
75 | border-color: #396cd8;
76 | }
77 | button:active {
78 | border-color: #396cd8;
79 | background-color: #e8e8e8;
80 | }
81 |
82 | input,
83 | button {
84 | outline: none;
85 | }
86 |
87 | #greet-input {
88 | margin-right: 5px;
89 | }
90 |
91 | @media (prefers-color-scheme: dark) {
92 | :root {
93 | color: #f6f6f6;
94 | background-color: #2f2f2f;
95 | }
96 |
97 | a:hover {
98 | color: #24c8db;
99 | }
100 |
101 | input,
102 | button {
103 | color: #ffffff;
104 | background-color: #0f0f0f98;
105 | }
106 | button:active {
107 | background-color: #0f0f0f69;
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/app/public/tauri.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/runner/Cargo.lock:
--------------------------------------------------------------------------------
1 | # This file is automatically @generated by Cargo.
2 | # It is not intended for manual editing.
3 | version = 3
4 |
5 | [[package]]
6 | name = "cfg-if"
7 | version = "1.0.0"
8 | source = "registry+https://github.com/rust-lang/crates.io-index"
9 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
10 |
11 | [[package]]
12 | name = "libloading"
13 | version = "0.8.1"
14 | source = "registry+https://github.com/rust-lang/crates.io-index"
15 | checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
16 | dependencies = [
17 | "cfg-if",
18 | "windows-sys",
19 | ]
20 |
21 | [[package]]
22 | name = "vpnym_d"
23 | version = "0.1.0"
24 | dependencies = [
25 | "libloading",
26 | ]
27 |
28 | [[package]]
29 | name = "windows-sys"
30 | version = "0.48.0"
31 | source = "registry+https://github.com/rust-lang/crates.io-index"
32 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
33 | dependencies = [
34 | "windows-targets",
35 | ]
36 |
37 | [[package]]
38 | name = "windows-targets"
39 | version = "0.48.5"
40 | source = "registry+https://github.com/rust-lang/crates.io-index"
41 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
42 | dependencies = [
43 | "windows_aarch64_gnullvm",
44 | "windows_aarch64_msvc",
45 | "windows_i686_gnu",
46 | "windows_i686_msvc",
47 | "windows_x86_64_gnu",
48 | "windows_x86_64_gnullvm",
49 | "windows_x86_64_msvc",
50 | ]
51 |
52 | [[package]]
53 | name = "windows_aarch64_gnullvm"
54 | version = "0.48.5"
55 | source = "registry+https://github.com/rust-lang/crates.io-index"
56 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
57 |
58 | [[package]]
59 | name = "windows_aarch64_msvc"
60 | version = "0.48.5"
61 | source = "registry+https://github.com/rust-lang/crates.io-index"
62 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
63 |
64 | [[package]]
65 | name = "windows_i686_gnu"
66 | version = "0.48.5"
67 | source = "registry+https://github.com/rust-lang/crates.io-index"
68 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
69 |
70 | [[package]]
71 | name = "windows_i686_msvc"
72 | version = "0.48.5"
73 | source = "registry+https://github.com/rust-lang/crates.io-index"
74 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
75 |
76 | [[package]]
77 | name = "windows_x86_64_gnu"
78 | version = "0.48.5"
79 | source = "registry+https://github.com/rust-lang/crates.io-index"
80 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
81 |
82 | [[package]]
83 | name = "windows_x86_64_gnullvm"
84 | version = "0.48.5"
85 | source = "registry+https://github.com/rust-lang/crates.io-index"
86 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
87 |
88 | [[package]]
89 | name = "windows_x86_64_msvc"
90 | version = "0.48.5"
91 | source = "registry+https://github.com/rust-lang/crates.io-index"
92 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
93 |
--------------------------------------------------------------------------------
/app/src/assets/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.github/workflows/build.yaml:
--------------------------------------------------------------------------------
1 | name: Build
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | platform:
7 | description: "Target platform"
8 | required: true
9 | default: "linux"
10 | type: choice
11 | options:
12 | - linux
13 | - windows
14 | - macos
15 |
16 | jobs:
17 | build_linux:
18 | name: Build linux
19 | runs-on: ubuntu-latest
20 | if: ${{ inputs.platform == 'linux' }}
21 | steps:
22 | - name: Checkout
23 | uses: actions/checkout@v4
24 | - name: Install Rust toolchain
25 | uses: dtolnay/rust-toolchain@master
26 | with:
27 | toolchain: stable
28 | - name: Install Node
29 | uses: actions/setup-node@v3
30 | with:
31 | node-version: 18
32 | - name: Install dependencies
33 | run: sudo apt-get update && sudo apt-get -y install libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev librsvg2-dev
34 | - name: Install
35 | working-directory: app
36 | run: npm i
37 | - name: Build app
38 | working-directory: app/src-tauri
39 | run: |
40 | npm run build
41 | cargo build --release --lib --features custom-protocol --locked
42 | - name: Build runner
43 | working-directory: runner
44 | run: cargo build --locked
45 | - name: Prepare artifacts
46 | run: |
47 | mkdir lib
48 | mv app/src-tauri/target/release/libvpnym.so lib/
49 | mv runner/target/debug/vpnym_d .
50 | - name: Upload artifacts
51 | uses: actions/upload-artifact@v3
52 | with:
53 | name: vpnym_linux
54 | path: |
55 | lib/
56 | vpnym_d
57 |
58 | build_windows:
59 | name: Build windows
60 | runs-on: windows-latest
61 | if: ${{ inputs.platform == 'windows' }}
62 | steps:
63 | - name: Checkout
64 | uses: actions/checkout@v4
65 | - name: Install Rust toolchain
66 | uses: dtolnay/rust-toolchain@master
67 | with:
68 | toolchain: stable
69 | - name: Install Node
70 | uses: actions/setup-node@v3
71 | with:
72 | node-version: 18
73 | - name: Install Go
74 | uses: actions/setup-go@v4
75 | with:
76 | go-version: 'stable'
77 | - name: Install
78 | working-directory: app
79 | run: npm i
80 | - name: Build app
81 | working-directory: app/src-tauri
82 | run: |
83 | npm run build
84 | cargo build --release --lib --features custom-protocol --locked
85 | - name: Build runner
86 | working-directory: runner
87 | run: cargo build --locked
88 | - name: Build gopoc
89 | working-directory: gopoc
90 | run: |
91 | cp ${{ github.workspace }}/app/src-tauri/target/release/vpnym.dll lib/
92 | go build -ldflags="-r ./lib" -o bin/vpnym_d.exe gopoc.go
93 | - name: Prepare artifacts
94 | run: |
95 | mkdir lib
96 | mkdir go
97 | mv app/src-tauri/target/release/vpnym.dll lib/
98 | mv runner/target/debug/vpnym_d.exe .
99 | mv gopoc/bin/vpnym_d.exe go/
100 | - name: Upload artifacts
101 | uses: actions/upload-artifact@v3
102 | with:
103 | name: vpnym_windows
104 | path: |
105 | lib/
106 | vpnym_d.exe
107 | go/
108 |
109 | build_darwin:
110 | name: Build macos
111 | runs-on: macos-latest
112 | if: ${{ inputs.platform == 'macos' }}
113 | steps:
114 | - name: Checkout
115 | uses: actions/checkout@v4
116 | - name: Install Rust toolchain
117 | uses: dtolnay/rust-toolchain@master
118 | with:
119 | toolchain: stable
120 | - name: Install Node
121 | uses: actions/setup-node@v3
122 | with:
123 | node-version: 18
124 | - name: Install
125 | working-directory: app
126 | run: npm i
127 | - name: Build app
128 | working-directory: app/src-tauri
129 | run: |
130 | npm run build
131 | cargo build --release --lib --features custom-protocol --locked
132 | - name: Build runner
133 | working-directory: runner
134 | run: cargo build --locked
135 | - name: Prepare artifacts
136 | run: |
137 | mkdir lib
138 | mv app/src-tauri/target/release/libvpnym.dylib lib/
139 | mv runner/target/debug/vpnym_d .
140 | - name: Upload artifacts
141 | uses: actions/upload-artifact@v3
142 | with:
143 | name: vpnym_darwin
144 | path: |
145 | lib/
146 | vpnym_d
147 |
--------------------------------------------------------------------------------
/app/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vpnym",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "vpnym",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "@tauri-apps/api": "^1.5.0",
12 | "react": "^18.2.0",
13 | "react-dom": "^18.2.0"
14 | },
15 | "devDependencies": {
16 | "@tauri-apps/cli": "^1.5.0",
17 | "@types/react": "^18.2.15",
18 | "@types/react-dom": "^18.2.7",
19 | "@vitejs/plugin-react": "^4.0.3",
20 | "typescript": "^5.0.2",
21 | "vite": "^4.4.4"
22 | }
23 | },
24 | "node_modules/@ampproject/remapping": {
25 | "version": "2.2.1",
26 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
27 | "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
28 | "dev": true,
29 | "dependencies": {
30 | "@jridgewell/gen-mapping": "^0.3.0",
31 | "@jridgewell/trace-mapping": "^0.3.9"
32 | },
33 | "engines": {
34 | "node": ">=6.0.0"
35 | }
36 | },
37 | "node_modules/@babel/code-frame": {
38 | "version": "7.22.13",
39 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
40 | "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
41 | "dev": true,
42 | "dependencies": {
43 | "@babel/highlight": "^7.22.13",
44 | "chalk": "^2.4.2"
45 | },
46 | "engines": {
47 | "node": ">=6.9.0"
48 | }
49 | },
50 | "node_modules/@babel/compat-data": {
51 | "version": "7.22.20",
52 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz",
53 | "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==",
54 | "dev": true,
55 | "engines": {
56 | "node": ">=6.9.0"
57 | }
58 | },
59 | "node_modules/@babel/core": {
60 | "version": "7.23.0",
61 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz",
62 | "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==",
63 | "dev": true,
64 | "dependencies": {
65 | "@ampproject/remapping": "^2.2.0",
66 | "@babel/code-frame": "^7.22.13",
67 | "@babel/generator": "^7.23.0",
68 | "@babel/helper-compilation-targets": "^7.22.15",
69 | "@babel/helper-module-transforms": "^7.23.0",
70 | "@babel/helpers": "^7.23.0",
71 | "@babel/parser": "^7.23.0",
72 | "@babel/template": "^7.22.15",
73 | "@babel/traverse": "^7.23.0",
74 | "@babel/types": "^7.23.0",
75 | "convert-source-map": "^2.0.0",
76 | "debug": "^4.1.0",
77 | "gensync": "^1.0.0-beta.2",
78 | "json5": "^2.2.3",
79 | "semver": "^6.3.1"
80 | },
81 | "engines": {
82 | "node": ">=6.9.0"
83 | },
84 | "funding": {
85 | "type": "opencollective",
86 | "url": "https://opencollective.com/babel"
87 | }
88 | },
89 | "node_modules/@babel/generator": {
90 | "version": "7.23.0",
91 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
92 | "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
93 | "dev": true,
94 | "dependencies": {
95 | "@babel/types": "^7.23.0",
96 | "@jridgewell/gen-mapping": "^0.3.2",
97 | "@jridgewell/trace-mapping": "^0.3.17",
98 | "jsesc": "^2.5.1"
99 | },
100 | "engines": {
101 | "node": ">=6.9.0"
102 | }
103 | },
104 | "node_modules/@babel/helper-compilation-targets": {
105 | "version": "7.22.15",
106 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
107 | "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
108 | "dev": true,
109 | "dependencies": {
110 | "@babel/compat-data": "^7.22.9",
111 | "@babel/helper-validator-option": "^7.22.15",
112 | "browserslist": "^4.21.9",
113 | "lru-cache": "^5.1.1",
114 | "semver": "^6.3.1"
115 | },
116 | "engines": {
117 | "node": ">=6.9.0"
118 | }
119 | },
120 | "node_modules/@babel/helper-environment-visitor": {
121 | "version": "7.22.20",
122 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
123 | "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
124 | "dev": true,
125 | "engines": {
126 | "node": ">=6.9.0"
127 | }
128 | },
129 | "node_modules/@babel/helper-function-name": {
130 | "version": "7.23.0",
131 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
132 | "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
133 | "dev": true,
134 | "dependencies": {
135 | "@babel/template": "^7.22.15",
136 | "@babel/types": "^7.23.0"
137 | },
138 | "engines": {
139 | "node": ">=6.9.0"
140 | }
141 | },
142 | "node_modules/@babel/helper-hoist-variables": {
143 | "version": "7.22.5",
144 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
145 | "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
146 | "dev": true,
147 | "dependencies": {
148 | "@babel/types": "^7.22.5"
149 | },
150 | "engines": {
151 | "node": ">=6.9.0"
152 | }
153 | },
154 | "node_modules/@babel/helper-module-imports": {
155 | "version": "7.22.15",
156 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
157 | "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
158 | "dev": true,
159 | "dependencies": {
160 | "@babel/types": "^7.22.15"
161 | },
162 | "engines": {
163 | "node": ">=6.9.0"
164 | }
165 | },
166 | "node_modules/@babel/helper-module-transforms": {
167 | "version": "7.23.0",
168 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz",
169 | "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==",
170 | "dev": true,
171 | "dependencies": {
172 | "@babel/helper-environment-visitor": "^7.22.20",
173 | "@babel/helper-module-imports": "^7.22.15",
174 | "@babel/helper-simple-access": "^7.22.5",
175 | "@babel/helper-split-export-declaration": "^7.22.6",
176 | "@babel/helper-validator-identifier": "^7.22.20"
177 | },
178 | "engines": {
179 | "node": ">=6.9.0"
180 | },
181 | "peerDependencies": {
182 | "@babel/core": "^7.0.0"
183 | }
184 | },
185 | "node_modules/@babel/helper-plugin-utils": {
186 | "version": "7.22.5",
187 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
188 | "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
189 | "dev": true,
190 | "engines": {
191 | "node": ">=6.9.0"
192 | }
193 | },
194 | "node_modules/@babel/helper-simple-access": {
195 | "version": "7.22.5",
196 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
197 | "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
198 | "dev": true,
199 | "dependencies": {
200 | "@babel/types": "^7.22.5"
201 | },
202 | "engines": {
203 | "node": ">=6.9.0"
204 | }
205 | },
206 | "node_modules/@babel/helper-split-export-declaration": {
207 | "version": "7.22.6",
208 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
209 | "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
210 | "dev": true,
211 | "dependencies": {
212 | "@babel/types": "^7.22.5"
213 | },
214 | "engines": {
215 | "node": ">=6.9.0"
216 | }
217 | },
218 | "node_modules/@babel/helper-string-parser": {
219 | "version": "7.22.5",
220 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
221 | "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
222 | "dev": true,
223 | "engines": {
224 | "node": ">=6.9.0"
225 | }
226 | },
227 | "node_modules/@babel/helper-validator-identifier": {
228 | "version": "7.22.20",
229 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
230 | "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
231 | "dev": true,
232 | "engines": {
233 | "node": ">=6.9.0"
234 | }
235 | },
236 | "node_modules/@babel/helper-validator-option": {
237 | "version": "7.22.15",
238 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
239 | "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
240 | "dev": true,
241 | "engines": {
242 | "node": ">=6.9.0"
243 | }
244 | },
245 | "node_modules/@babel/helpers": {
246 | "version": "7.23.1",
247 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz",
248 | "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==",
249 | "dev": true,
250 | "dependencies": {
251 | "@babel/template": "^7.22.15",
252 | "@babel/traverse": "^7.23.0",
253 | "@babel/types": "^7.23.0"
254 | },
255 | "engines": {
256 | "node": ">=6.9.0"
257 | }
258 | },
259 | "node_modules/@babel/highlight": {
260 | "version": "7.22.20",
261 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
262 | "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
263 | "dev": true,
264 | "dependencies": {
265 | "@babel/helper-validator-identifier": "^7.22.20",
266 | "chalk": "^2.4.2",
267 | "js-tokens": "^4.0.0"
268 | },
269 | "engines": {
270 | "node": ">=6.9.0"
271 | }
272 | },
273 | "node_modules/@babel/parser": {
274 | "version": "7.23.0",
275 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
276 | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
277 | "dev": true,
278 | "bin": {
279 | "parser": "bin/babel-parser.js"
280 | },
281 | "engines": {
282 | "node": ">=6.0.0"
283 | }
284 | },
285 | "node_modules/@babel/plugin-transform-react-jsx-self": {
286 | "version": "7.22.5",
287 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz",
288 | "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==",
289 | "dev": true,
290 | "dependencies": {
291 | "@babel/helper-plugin-utils": "^7.22.5"
292 | },
293 | "engines": {
294 | "node": ">=6.9.0"
295 | },
296 | "peerDependencies": {
297 | "@babel/core": "^7.0.0-0"
298 | }
299 | },
300 | "node_modules/@babel/plugin-transform-react-jsx-source": {
301 | "version": "7.22.5",
302 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz",
303 | "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==",
304 | "dev": true,
305 | "dependencies": {
306 | "@babel/helper-plugin-utils": "^7.22.5"
307 | },
308 | "engines": {
309 | "node": ">=6.9.0"
310 | },
311 | "peerDependencies": {
312 | "@babel/core": "^7.0.0-0"
313 | }
314 | },
315 | "node_modules/@babel/template": {
316 | "version": "7.22.15",
317 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
318 | "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
319 | "dev": true,
320 | "dependencies": {
321 | "@babel/code-frame": "^7.22.13",
322 | "@babel/parser": "^7.22.15",
323 | "@babel/types": "^7.22.15"
324 | },
325 | "engines": {
326 | "node": ">=6.9.0"
327 | }
328 | },
329 | "node_modules/@babel/traverse": {
330 | "version": "7.23.0",
331 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz",
332 | "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==",
333 | "dev": true,
334 | "dependencies": {
335 | "@babel/code-frame": "^7.22.13",
336 | "@babel/generator": "^7.23.0",
337 | "@babel/helper-environment-visitor": "^7.22.20",
338 | "@babel/helper-function-name": "^7.23.0",
339 | "@babel/helper-hoist-variables": "^7.22.5",
340 | "@babel/helper-split-export-declaration": "^7.22.6",
341 | "@babel/parser": "^7.23.0",
342 | "@babel/types": "^7.23.0",
343 | "debug": "^4.1.0",
344 | "globals": "^11.1.0"
345 | },
346 | "engines": {
347 | "node": ">=6.9.0"
348 | }
349 | },
350 | "node_modules/@babel/types": {
351 | "version": "7.23.0",
352 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
353 | "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
354 | "dev": true,
355 | "dependencies": {
356 | "@babel/helper-string-parser": "^7.22.5",
357 | "@babel/helper-validator-identifier": "^7.22.20",
358 | "to-fast-properties": "^2.0.0"
359 | },
360 | "engines": {
361 | "node": ">=6.9.0"
362 | }
363 | },
364 | "node_modules/@esbuild/android-arm": {
365 | "version": "0.18.20",
366 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
367 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
368 | "cpu": [
369 | "arm"
370 | ],
371 | "dev": true,
372 | "optional": true,
373 | "os": [
374 | "android"
375 | ],
376 | "engines": {
377 | "node": ">=12"
378 | }
379 | },
380 | "node_modules/@esbuild/android-arm64": {
381 | "version": "0.18.20",
382 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
383 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
384 | "cpu": [
385 | "arm64"
386 | ],
387 | "dev": true,
388 | "optional": true,
389 | "os": [
390 | "android"
391 | ],
392 | "engines": {
393 | "node": ">=12"
394 | }
395 | },
396 | "node_modules/@esbuild/android-x64": {
397 | "version": "0.18.20",
398 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
399 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
400 | "cpu": [
401 | "x64"
402 | ],
403 | "dev": true,
404 | "optional": true,
405 | "os": [
406 | "android"
407 | ],
408 | "engines": {
409 | "node": ">=12"
410 | }
411 | },
412 | "node_modules/@esbuild/darwin-arm64": {
413 | "version": "0.18.20",
414 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
415 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
416 | "cpu": [
417 | "arm64"
418 | ],
419 | "dev": true,
420 | "optional": true,
421 | "os": [
422 | "darwin"
423 | ],
424 | "engines": {
425 | "node": ">=12"
426 | }
427 | },
428 | "node_modules/@esbuild/darwin-x64": {
429 | "version": "0.18.20",
430 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
431 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
432 | "cpu": [
433 | "x64"
434 | ],
435 | "dev": true,
436 | "optional": true,
437 | "os": [
438 | "darwin"
439 | ],
440 | "engines": {
441 | "node": ">=12"
442 | }
443 | },
444 | "node_modules/@esbuild/freebsd-arm64": {
445 | "version": "0.18.20",
446 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
447 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
448 | "cpu": [
449 | "arm64"
450 | ],
451 | "dev": true,
452 | "optional": true,
453 | "os": [
454 | "freebsd"
455 | ],
456 | "engines": {
457 | "node": ">=12"
458 | }
459 | },
460 | "node_modules/@esbuild/freebsd-x64": {
461 | "version": "0.18.20",
462 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
463 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
464 | "cpu": [
465 | "x64"
466 | ],
467 | "dev": true,
468 | "optional": true,
469 | "os": [
470 | "freebsd"
471 | ],
472 | "engines": {
473 | "node": ">=12"
474 | }
475 | },
476 | "node_modules/@esbuild/linux-arm": {
477 | "version": "0.18.20",
478 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
479 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
480 | "cpu": [
481 | "arm"
482 | ],
483 | "dev": true,
484 | "optional": true,
485 | "os": [
486 | "linux"
487 | ],
488 | "engines": {
489 | "node": ">=12"
490 | }
491 | },
492 | "node_modules/@esbuild/linux-arm64": {
493 | "version": "0.18.20",
494 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
495 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
496 | "cpu": [
497 | "arm64"
498 | ],
499 | "dev": true,
500 | "optional": true,
501 | "os": [
502 | "linux"
503 | ],
504 | "engines": {
505 | "node": ">=12"
506 | }
507 | },
508 | "node_modules/@esbuild/linux-ia32": {
509 | "version": "0.18.20",
510 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
511 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
512 | "cpu": [
513 | "ia32"
514 | ],
515 | "dev": true,
516 | "optional": true,
517 | "os": [
518 | "linux"
519 | ],
520 | "engines": {
521 | "node": ">=12"
522 | }
523 | },
524 | "node_modules/@esbuild/linux-loong64": {
525 | "version": "0.18.20",
526 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
527 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
528 | "cpu": [
529 | "loong64"
530 | ],
531 | "dev": true,
532 | "optional": true,
533 | "os": [
534 | "linux"
535 | ],
536 | "engines": {
537 | "node": ">=12"
538 | }
539 | },
540 | "node_modules/@esbuild/linux-mips64el": {
541 | "version": "0.18.20",
542 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
543 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
544 | "cpu": [
545 | "mips64el"
546 | ],
547 | "dev": true,
548 | "optional": true,
549 | "os": [
550 | "linux"
551 | ],
552 | "engines": {
553 | "node": ">=12"
554 | }
555 | },
556 | "node_modules/@esbuild/linux-ppc64": {
557 | "version": "0.18.20",
558 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
559 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
560 | "cpu": [
561 | "ppc64"
562 | ],
563 | "dev": true,
564 | "optional": true,
565 | "os": [
566 | "linux"
567 | ],
568 | "engines": {
569 | "node": ">=12"
570 | }
571 | },
572 | "node_modules/@esbuild/linux-riscv64": {
573 | "version": "0.18.20",
574 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
575 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
576 | "cpu": [
577 | "riscv64"
578 | ],
579 | "dev": true,
580 | "optional": true,
581 | "os": [
582 | "linux"
583 | ],
584 | "engines": {
585 | "node": ">=12"
586 | }
587 | },
588 | "node_modules/@esbuild/linux-s390x": {
589 | "version": "0.18.20",
590 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
591 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
592 | "cpu": [
593 | "s390x"
594 | ],
595 | "dev": true,
596 | "optional": true,
597 | "os": [
598 | "linux"
599 | ],
600 | "engines": {
601 | "node": ">=12"
602 | }
603 | },
604 | "node_modules/@esbuild/linux-x64": {
605 | "version": "0.18.20",
606 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
607 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
608 | "cpu": [
609 | "x64"
610 | ],
611 | "dev": true,
612 | "optional": true,
613 | "os": [
614 | "linux"
615 | ],
616 | "engines": {
617 | "node": ">=12"
618 | }
619 | },
620 | "node_modules/@esbuild/netbsd-x64": {
621 | "version": "0.18.20",
622 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
623 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
624 | "cpu": [
625 | "x64"
626 | ],
627 | "dev": true,
628 | "optional": true,
629 | "os": [
630 | "netbsd"
631 | ],
632 | "engines": {
633 | "node": ">=12"
634 | }
635 | },
636 | "node_modules/@esbuild/openbsd-x64": {
637 | "version": "0.18.20",
638 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
639 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
640 | "cpu": [
641 | "x64"
642 | ],
643 | "dev": true,
644 | "optional": true,
645 | "os": [
646 | "openbsd"
647 | ],
648 | "engines": {
649 | "node": ">=12"
650 | }
651 | },
652 | "node_modules/@esbuild/sunos-x64": {
653 | "version": "0.18.20",
654 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
655 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
656 | "cpu": [
657 | "x64"
658 | ],
659 | "dev": true,
660 | "optional": true,
661 | "os": [
662 | "sunos"
663 | ],
664 | "engines": {
665 | "node": ">=12"
666 | }
667 | },
668 | "node_modules/@esbuild/win32-arm64": {
669 | "version": "0.18.20",
670 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
671 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
672 | "cpu": [
673 | "arm64"
674 | ],
675 | "dev": true,
676 | "optional": true,
677 | "os": [
678 | "win32"
679 | ],
680 | "engines": {
681 | "node": ">=12"
682 | }
683 | },
684 | "node_modules/@esbuild/win32-ia32": {
685 | "version": "0.18.20",
686 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
687 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
688 | "cpu": [
689 | "ia32"
690 | ],
691 | "dev": true,
692 | "optional": true,
693 | "os": [
694 | "win32"
695 | ],
696 | "engines": {
697 | "node": ">=12"
698 | }
699 | },
700 | "node_modules/@esbuild/win32-x64": {
701 | "version": "0.18.20",
702 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
703 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
704 | "cpu": [
705 | "x64"
706 | ],
707 | "dev": true,
708 | "optional": true,
709 | "os": [
710 | "win32"
711 | ],
712 | "engines": {
713 | "node": ">=12"
714 | }
715 | },
716 | "node_modules/@jridgewell/gen-mapping": {
717 | "version": "0.3.3",
718 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
719 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
720 | "dev": true,
721 | "dependencies": {
722 | "@jridgewell/set-array": "^1.0.1",
723 | "@jridgewell/sourcemap-codec": "^1.4.10",
724 | "@jridgewell/trace-mapping": "^0.3.9"
725 | },
726 | "engines": {
727 | "node": ">=6.0.0"
728 | }
729 | },
730 | "node_modules/@jridgewell/resolve-uri": {
731 | "version": "3.1.1",
732 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
733 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
734 | "dev": true,
735 | "engines": {
736 | "node": ">=6.0.0"
737 | }
738 | },
739 | "node_modules/@jridgewell/set-array": {
740 | "version": "1.1.2",
741 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
742 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
743 | "dev": true,
744 | "engines": {
745 | "node": ">=6.0.0"
746 | }
747 | },
748 | "node_modules/@jridgewell/sourcemap-codec": {
749 | "version": "1.4.15",
750 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
751 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
752 | "dev": true
753 | },
754 | "node_modules/@jridgewell/trace-mapping": {
755 | "version": "0.3.19",
756 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
757 | "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
758 | "dev": true,
759 | "dependencies": {
760 | "@jridgewell/resolve-uri": "^3.1.0",
761 | "@jridgewell/sourcemap-codec": "^1.4.14"
762 | }
763 | },
764 | "node_modules/@tauri-apps/api": {
765 | "version": "1.5.0",
766 | "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.5.0.tgz",
767 | "integrity": "sha512-yQY9wpVNuiYhLLuyDlu1nBpqJELT1fGp7OctN4rW9I2W1T2p7A3tqPxsEzQprEwneQRBAlPM9vC8NsnMbct+pg==",
768 | "engines": {
769 | "node": ">= 14.6.0",
770 | "npm": ">= 6.6.0",
771 | "yarn": ">= 1.19.1"
772 | },
773 | "funding": {
774 | "type": "opencollective",
775 | "url": "https://opencollective.com/tauri"
776 | }
777 | },
778 | "node_modules/@tauri-apps/cli": {
779 | "version": "1.5.1",
780 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.5.1.tgz",
781 | "integrity": "sha512-Ssj30axil5vPBV3W5ScHXk4umTKu6BhfmMdljfKDOG9K55gAqzBAE2VBC5e/ouclSxZfN+6YNL9VhDXFu/UyeA==",
782 | "dev": true,
783 | "bin": {
784 | "tauri": "tauri.js"
785 | },
786 | "engines": {
787 | "node": ">= 10"
788 | },
789 | "funding": {
790 | "type": "opencollective",
791 | "url": "https://opencollective.com/tauri"
792 | },
793 | "optionalDependencies": {
794 | "@tauri-apps/cli-darwin-arm64": "1.5.1",
795 | "@tauri-apps/cli-darwin-x64": "1.5.1",
796 | "@tauri-apps/cli-linux-arm-gnueabihf": "1.5.1",
797 | "@tauri-apps/cli-linux-arm64-gnu": "1.5.1",
798 | "@tauri-apps/cli-linux-arm64-musl": "1.5.1",
799 | "@tauri-apps/cli-linux-x64-gnu": "1.5.1",
800 | "@tauri-apps/cli-linux-x64-musl": "1.5.1",
801 | "@tauri-apps/cli-win32-arm64-msvc": "1.5.1",
802 | "@tauri-apps/cli-win32-ia32-msvc": "1.5.1",
803 | "@tauri-apps/cli-win32-x64-msvc": "1.5.1"
804 | }
805 | },
806 | "node_modules/@tauri-apps/cli-darwin-arm64": {
807 | "version": "1.5.1",
808 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.5.1.tgz",
809 | "integrity": "sha512-o2FSGj72gqJjlVtuScXQZUgiRs90PS9gG7YAz0Hgr4nV1MfIn9U6JVj6R+mnAEZBCK8qdy5jdemhmNKDDoiYQg==",
810 | "cpu": [
811 | "arm64"
812 | ],
813 | "dev": true,
814 | "optional": true,
815 | "os": [
816 | "darwin"
817 | ],
818 | "engines": {
819 | "node": ">= 10"
820 | }
821 | },
822 | "node_modules/@tauri-apps/cli-darwin-x64": {
823 | "version": "1.5.1",
824 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.5.1.tgz",
825 | "integrity": "sha512-G1/v6AJPP5oIcjsOxZshag28wdmDx1Fis2yz545aUk7oKU86A3ZJpz0b8BaXkr93w04xGcmGAaspZeXMmTvrbw==",
826 | "cpu": [
827 | "x64"
828 | ],
829 | "dev": true,
830 | "optional": true,
831 | "os": [
832 | "darwin"
833 | ],
834 | "engines": {
835 | "node": ">= 10"
836 | }
837 | },
838 | "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": {
839 | "version": "1.5.1",
840 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.5.1.tgz",
841 | "integrity": "sha512-hPDOUMviffyX5BySk6RuD7IZZeMuNUJzKWHxVWa0NHJPfxQOIPWwYWbk6TascrVk9GZYAImcB0yKfrll8I0VTg==",
842 | "cpu": [
843 | "arm"
844 | ],
845 | "dev": true,
846 | "optional": true,
847 | "os": [
848 | "linux"
849 | ],
850 | "engines": {
851 | "node": ">= 10"
852 | }
853 | },
854 | "node_modules/@tauri-apps/cli-linux-arm64-gnu": {
855 | "version": "1.5.1",
856 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.5.1.tgz",
857 | "integrity": "sha512-EJjTXqZchFLVrFgfxwstrQj7NwVDirffLhw5hRWS3L3Iys3IvqzIMVIA+GrY7KsaPwq7qaSqE1CDtP1wejE/9g==",
858 | "cpu": [
859 | "arm64"
860 | ],
861 | "dev": true,
862 | "optional": true,
863 | "os": [
864 | "linux"
865 | ],
866 | "engines": {
867 | "node": ">= 10"
868 | }
869 | },
870 | "node_modules/@tauri-apps/cli-linux-arm64-musl": {
871 | "version": "1.5.1",
872 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.5.1.tgz",
873 | "integrity": "sha512-XgJIk0AcxRL4pWVjfj0wiC9WnIZoUIVLPcQs86dNxoqzwAvADdNYp+McXf3/MDxX8uGEzpgdvlqr4T+50c8f6w==",
874 | "cpu": [
875 | "arm64"
876 | ],
877 | "dev": true,
878 | "optional": true,
879 | "os": [
880 | "linux"
881 | ],
882 | "engines": {
883 | "node": ">= 10"
884 | }
885 | },
886 | "node_modules/@tauri-apps/cli-linux-x64-gnu": {
887 | "version": "1.5.1",
888 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.5.1.tgz",
889 | "integrity": "sha512-VoVrIn7b+F2n0LJoDkLGXQJsPV/U1h3QnjRNE+Tcju6xVPBx64H0vfb7lC3S4QfVpiQ4Uc+1UD3Slvn4jGpL/A==",
890 | "cpu": [
891 | "x64"
892 | ],
893 | "dev": true,
894 | "optional": true,
895 | "os": [
896 | "linux"
897 | ],
898 | "engines": {
899 | "node": ">= 10"
900 | }
901 | },
902 | "node_modules/@tauri-apps/cli-linux-x64-musl": {
903 | "version": "1.5.1",
904 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.5.1.tgz",
905 | "integrity": "sha512-tQi2K0LYW80BLud7ZFOy3WxCM2VjDRxuhxOYhtcLG39cIeGqsSz07LwiCFNBn4vy2J47TnZ+8XDRAOtxSFe25w==",
906 | "cpu": [
907 | "x64"
908 | ],
909 | "dev": true,
910 | "optional": true,
911 | "os": [
912 | "linux"
913 | ],
914 | "engines": {
915 | "node": ">= 10"
916 | }
917 | },
918 | "node_modules/@tauri-apps/cli-win32-arm64-msvc": {
919 | "version": "1.5.1",
920 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.5.1.tgz",
921 | "integrity": "sha512-BdVwzVXY2JWBtWEO/G0//jIWXeWR52+KG0+kyoHO6QTxkncLrN5q2RldvXOe7CvhKe/qmgbkNosj5jWi7t49kQ==",
922 | "cpu": [
923 | "arm64"
924 | ],
925 | "dev": true,
926 | "optional": true,
927 | "os": [
928 | "win32"
929 | ],
930 | "engines": {
931 | "node": ">= 10"
932 | }
933 | },
934 | "node_modules/@tauri-apps/cli-win32-ia32-msvc": {
935 | "version": "1.5.1",
936 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.5.1.tgz",
937 | "integrity": "sha512-Q0ei4ZUHlGu/b4DP4Cm6WnI5zxpLxnf/vSwR2BYO3XO65TdLee1gTyuwYuSZJYu5jxqSoSusmLyL4F43jHhf9Q==",
938 | "cpu": [
939 | "ia32"
940 | ],
941 | "dev": true,
942 | "optional": true,
943 | "os": [
944 | "win32"
945 | ],
946 | "engines": {
947 | "node": ">= 10"
948 | }
949 | },
950 | "node_modules/@tauri-apps/cli-win32-x64-msvc": {
951 | "version": "1.5.1",
952 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.5.1.tgz",
953 | "integrity": "sha512-chpsJ5PIwMOdn1IIJ6bj2G7jv9jQryVvhujU0k3kt/5kE7OuLRDYbI5BAIzMOaLoOTgoo8oxcFXQ+enELSxlMQ==",
954 | "cpu": [
955 | "x64"
956 | ],
957 | "dev": true,
958 | "optional": true,
959 | "os": [
960 | "win32"
961 | ],
962 | "engines": {
963 | "node": ">= 10"
964 | }
965 | },
966 | "node_modules/@types/babel__core": {
967 | "version": "7.20.2",
968 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz",
969 | "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==",
970 | "dev": true,
971 | "dependencies": {
972 | "@babel/parser": "^7.20.7",
973 | "@babel/types": "^7.20.7",
974 | "@types/babel__generator": "*",
975 | "@types/babel__template": "*",
976 | "@types/babel__traverse": "*"
977 | }
978 | },
979 | "node_modules/@types/babel__generator": {
980 | "version": "7.6.5",
981 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz",
982 | "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==",
983 | "dev": true,
984 | "dependencies": {
985 | "@babel/types": "^7.0.0"
986 | }
987 | },
988 | "node_modules/@types/babel__template": {
989 | "version": "7.4.2",
990 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz",
991 | "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==",
992 | "dev": true,
993 | "dependencies": {
994 | "@babel/parser": "^7.1.0",
995 | "@babel/types": "^7.0.0"
996 | }
997 | },
998 | "node_modules/@types/babel__traverse": {
999 | "version": "7.20.2",
1000 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz",
1001 | "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==",
1002 | "dev": true,
1003 | "dependencies": {
1004 | "@babel/types": "^7.20.7"
1005 | }
1006 | },
1007 | "node_modules/@types/prop-types": {
1008 | "version": "15.7.8",
1009 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz",
1010 | "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==",
1011 | "dev": true
1012 | },
1013 | "node_modules/@types/react": {
1014 | "version": "18.2.24",
1015 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.24.tgz",
1016 | "integrity": "sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==",
1017 | "dev": true,
1018 | "dependencies": {
1019 | "@types/prop-types": "*",
1020 | "@types/scheduler": "*",
1021 | "csstype": "^3.0.2"
1022 | }
1023 | },
1024 | "node_modules/@types/react-dom": {
1025 | "version": "18.2.8",
1026 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.8.tgz",
1027 | "integrity": "sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==",
1028 | "dev": true,
1029 | "dependencies": {
1030 | "@types/react": "*"
1031 | }
1032 | },
1033 | "node_modules/@types/scheduler": {
1034 | "version": "0.16.4",
1035 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz",
1036 | "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==",
1037 | "dev": true
1038 | },
1039 | "node_modules/@vitejs/plugin-react": {
1040 | "version": "4.1.0",
1041 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz",
1042 | "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==",
1043 | "dev": true,
1044 | "dependencies": {
1045 | "@babel/core": "^7.22.20",
1046 | "@babel/plugin-transform-react-jsx-self": "^7.22.5",
1047 | "@babel/plugin-transform-react-jsx-source": "^7.22.5",
1048 | "@types/babel__core": "^7.20.2",
1049 | "react-refresh": "^0.14.0"
1050 | },
1051 | "engines": {
1052 | "node": "^14.18.0 || >=16.0.0"
1053 | },
1054 | "peerDependencies": {
1055 | "vite": "^4.2.0"
1056 | }
1057 | },
1058 | "node_modules/ansi-styles": {
1059 | "version": "3.2.1",
1060 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1061 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1062 | "dev": true,
1063 | "dependencies": {
1064 | "color-convert": "^1.9.0"
1065 | },
1066 | "engines": {
1067 | "node": ">=4"
1068 | }
1069 | },
1070 | "node_modules/browserslist": {
1071 | "version": "4.22.1",
1072 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
1073 | "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
1074 | "dev": true,
1075 | "funding": [
1076 | {
1077 | "type": "opencollective",
1078 | "url": "https://opencollective.com/browserslist"
1079 | },
1080 | {
1081 | "type": "tidelift",
1082 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1083 | },
1084 | {
1085 | "type": "github",
1086 | "url": "https://github.com/sponsors/ai"
1087 | }
1088 | ],
1089 | "dependencies": {
1090 | "caniuse-lite": "^1.0.30001541",
1091 | "electron-to-chromium": "^1.4.535",
1092 | "node-releases": "^2.0.13",
1093 | "update-browserslist-db": "^1.0.13"
1094 | },
1095 | "bin": {
1096 | "browserslist": "cli.js"
1097 | },
1098 | "engines": {
1099 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1100 | }
1101 | },
1102 | "node_modules/caniuse-lite": {
1103 | "version": "1.0.30001543",
1104 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001543.tgz",
1105 | "integrity": "sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA==",
1106 | "dev": true,
1107 | "funding": [
1108 | {
1109 | "type": "opencollective",
1110 | "url": "https://opencollective.com/browserslist"
1111 | },
1112 | {
1113 | "type": "tidelift",
1114 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1115 | },
1116 | {
1117 | "type": "github",
1118 | "url": "https://github.com/sponsors/ai"
1119 | }
1120 | ]
1121 | },
1122 | "node_modules/chalk": {
1123 | "version": "2.4.2",
1124 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1125 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1126 | "dev": true,
1127 | "dependencies": {
1128 | "ansi-styles": "^3.2.1",
1129 | "escape-string-regexp": "^1.0.5",
1130 | "supports-color": "^5.3.0"
1131 | },
1132 | "engines": {
1133 | "node": ">=4"
1134 | }
1135 | },
1136 | "node_modules/color-convert": {
1137 | "version": "1.9.3",
1138 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1139 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1140 | "dev": true,
1141 | "dependencies": {
1142 | "color-name": "1.1.3"
1143 | }
1144 | },
1145 | "node_modules/color-name": {
1146 | "version": "1.1.3",
1147 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1148 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
1149 | "dev": true
1150 | },
1151 | "node_modules/convert-source-map": {
1152 | "version": "2.0.0",
1153 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
1154 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
1155 | "dev": true
1156 | },
1157 | "node_modules/csstype": {
1158 | "version": "3.1.2",
1159 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
1160 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
1161 | "dev": true
1162 | },
1163 | "node_modules/debug": {
1164 | "version": "4.3.4",
1165 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1166 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1167 | "dev": true,
1168 | "dependencies": {
1169 | "ms": "2.1.2"
1170 | },
1171 | "engines": {
1172 | "node": ">=6.0"
1173 | },
1174 | "peerDependenciesMeta": {
1175 | "supports-color": {
1176 | "optional": true
1177 | }
1178 | }
1179 | },
1180 | "node_modules/electron-to-chromium": {
1181 | "version": "1.4.539",
1182 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.539.tgz",
1183 | "integrity": "sha512-wRmWJ8F7rgmINuI32S6r2SLrw/h/bJQsDSvBiq9GBfvc2Lh73qTOwn73r3Cf67mjVgFGJYcYtmERzySa5jIWlg==",
1184 | "dev": true
1185 | },
1186 | "node_modules/esbuild": {
1187 | "version": "0.18.20",
1188 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
1189 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
1190 | "dev": true,
1191 | "hasInstallScript": true,
1192 | "bin": {
1193 | "esbuild": "bin/esbuild"
1194 | },
1195 | "engines": {
1196 | "node": ">=12"
1197 | },
1198 | "optionalDependencies": {
1199 | "@esbuild/android-arm": "0.18.20",
1200 | "@esbuild/android-arm64": "0.18.20",
1201 | "@esbuild/android-x64": "0.18.20",
1202 | "@esbuild/darwin-arm64": "0.18.20",
1203 | "@esbuild/darwin-x64": "0.18.20",
1204 | "@esbuild/freebsd-arm64": "0.18.20",
1205 | "@esbuild/freebsd-x64": "0.18.20",
1206 | "@esbuild/linux-arm": "0.18.20",
1207 | "@esbuild/linux-arm64": "0.18.20",
1208 | "@esbuild/linux-ia32": "0.18.20",
1209 | "@esbuild/linux-loong64": "0.18.20",
1210 | "@esbuild/linux-mips64el": "0.18.20",
1211 | "@esbuild/linux-ppc64": "0.18.20",
1212 | "@esbuild/linux-riscv64": "0.18.20",
1213 | "@esbuild/linux-s390x": "0.18.20",
1214 | "@esbuild/linux-x64": "0.18.20",
1215 | "@esbuild/netbsd-x64": "0.18.20",
1216 | "@esbuild/openbsd-x64": "0.18.20",
1217 | "@esbuild/sunos-x64": "0.18.20",
1218 | "@esbuild/win32-arm64": "0.18.20",
1219 | "@esbuild/win32-ia32": "0.18.20",
1220 | "@esbuild/win32-x64": "0.18.20"
1221 | }
1222 | },
1223 | "node_modules/escalade": {
1224 | "version": "3.1.1",
1225 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1226 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1227 | "dev": true,
1228 | "engines": {
1229 | "node": ">=6"
1230 | }
1231 | },
1232 | "node_modules/escape-string-regexp": {
1233 | "version": "1.0.5",
1234 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1235 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1236 | "dev": true,
1237 | "engines": {
1238 | "node": ">=0.8.0"
1239 | }
1240 | },
1241 | "node_modules/fsevents": {
1242 | "version": "2.3.3",
1243 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1244 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1245 | "dev": true,
1246 | "hasInstallScript": true,
1247 | "optional": true,
1248 | "os": [
1249 | "darwin"
1250 | ],
1251 | "engines": {
1252 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1253 | }
1254 | },
1255 | "node_modules/gensync": {
1256 | "version": "1.0.0-beta.2",
1257 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1258 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1259 | "dev": true,
1260 | "engines": {
1261 | "node": ">=6.9.0"
1262 | }
1263 | },
1264 | "node_modules/globals": {
1265 | "version": "11.12.0",
1266 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1267 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1268 | "dev": true,
1269 | "engines": {
1270 | "node": ">=4"
1271 | }
1272 | },
1273 | "node_modules/has-flag": {
1274 | "version": "3.0.0",
1275 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1276 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1277 | "dev": true,
1278 | "engines": {
1279 | "node": ">=4"
1280 | }
1281 | },
1282 | "node_modules/js-tokens": {
1283 | "version": "4.0.0",
1284 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1285 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1286 | },
1287 | "node_modules/jsesc": {
1288 | "version": "2.5.2",
1289 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1290 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1291 | "dev": true,
1292 | "bin": {
1293 | "jsesc": "bin/jsesc"
1294 | },
1295 | "engines": {
1296 | "node": ">=4"
1297 | }
1298 | },
1299 | "node_modules/json5": {
1300 | "version": "2.2.3",
1301 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
1302 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
1303 | "dev": true,
1304 | "bin": {
1305 | "json5": "lib/cli.js"
1306 | },
1307 | "engines": {
1308 | "node": ">=6"
1309 | }
1310 | },
1311 | "node_modules/loose-envify": {
1312 | "version": "1.4.0",
1313 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1314 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1315 | "dependencies": {
1316 | "js-tokens": "^3.0.0 || ^4.0.0"
1317 | },
1318 | "bin": {
1319 | "loose-envify": "cli.js"
1320 | }
1321 | },
1322 | "node_modules/lru-cache": {
1323 | "version": "5.1.1",
1324 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1325 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1326 | "dev": true,
1327 | "dependencies": {
1328 | "yallist": "^3.0.2"
1329 | }
1330 | },
1331 | "node_modules/ms": {
1332 | "version": "2.1.2",
1333 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1334 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1335 | "dev": true
1336 | },
1337 | "node_modules/nanoid": {
1338 | "version": "3.3.6",
1339 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
1340 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
1341 | "dev": true,
1342 | "funding": [
1343 | {
1344 | "type": "github",
1345 | "url": "https://github.com/sponsors/ai"
1346 | }
1347 | ],
1348 | "bin": {
1349 | "nanoid": "bin/nanoid.cjs"
1350 | },
1351 | "engines": {
1352 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1353 | }
1354 | },
1355 | "node_modules/node-releases": {
1356 | "version": "2.0.13",
1357 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
1358 | "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
1359 | "dev": true
1360 | },
1361 | "node_modules/picocolors": {
1362 | "version": "1.0.0",
1363 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1364 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1365 | "dev": true
1366 | },
1367 | "node_modules/postcss": {
1368 | "version": "8.4.31",
1369 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
1370 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
1371 | "dev": true,
1372 | "funding": [
1373 | {
1374 | "type": "opencollective",
1375 | "url": "https://opencollective.com/postcss/"
1376 | },
1377 | {
1378 | "type": "tidelift",
1379 | "url": "https://tidelift.com/funding/github/npm/postcss"
1380 | },
1381 | {
1382 | "type": "github",
1383 | "url": "https://github.com/sponsors/ai"
1384 | }
1385 | ],
1386 | "dependencies": {
1387 | "nanoid": "^3.3.6",
1388 | "picocolors": "^1.0.0",
1389 | "source-map-js": "^1.0.2"
1390 | },
1391 | "engines": {
1392 | "node": "^10 || ^12 || >=14"
1393 | }
1394 | },
1395 | "node_modules/react": {
1396 | "version": "18.2.0",
1397 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
1398 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
1399 | "dependencies": {
1400 | "loose-envify": "^1.1.0"
1401 | },
1402 | "engines": {
1403 | "node": ">=0.10.0"
1404 | }
1405 | },
1406 | "node_modules/react-dom": {
1407 | "version": "18.2.0",
1408 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
1409 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
1410 | "dependencies": {
1411 | "loose-envify": "^1.1.0",
1412 | "scheduler": "^0.23.0"
1413 | },
1414 | "peerDependencies": {
1415 | "react": "^18.2.0"
1416 | }
1417 | },
1418 | "node_modules/react-refresh": {
1419 | "version": "0.14.0",
1420 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
1421 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
1422 | "dev": true,
1423 | "engines": {
1424 | "node": ">=0.10.0"
1425 | }
1426 | },
1427 | "node_modules/rollup": {
1428 | "version": "3.29.4",
1429 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
1430 | "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
1431 | "dev": true,
1432 | "bin": {
1433 | "rollup": "dist/bin/rollup"
1434 | },
1435 | "engines": {
1436 | "node": ">=14.18.0",
1437 | "npm": ">=8.0.0"
1438 | },
1439 | "optionalDependencies": {
1440 | "fsevents": "~2.3.2"
1441 | }
1442 | },
1443 | "node_modules/scheduler": {
1444 | "version": "0.23.0",
1445 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
1446 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
1447 | "dependencies": {
1448 | "loose-envify": "^1.1.0"
1449 | }
1450 | },
1451 | "node_modules/semver": {
1452 | "version": "6.3.1",
1453 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1454 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1455 | "dev": true,
1456 | "bin": {
1457 | "semver": "bin/semver.js"
1458 | }
1459 | },
1460 | "node_modules/source-map-js": {
1461 | "version": "1.0.2",
1462 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1463 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1464 | "dev": true,
1465 | "engines": {
1466 | "node": ">=0.10.0"
1467 | }
1468 | },
1469 | "node_modules/supports-color": {
1470 | "version": "5.5.0",
1471 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1472 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1473 | "dev": true,
1474 | "dependencies": {
1475 | "has-flag": "^3.0.0"
1476 | },
1477 | "engines": {
1478 | "node": ">=4"
1479 | }
1480 | },
1481 | "node_modules/to-fast-properties": {
1482 | "version": "2.0.0",
1483 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1484 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
1485 | "dev": true,
1486 | "engines": {
1487 | "node": ">=4"
1488 | }
1489 | },
1490 | "node_modules/typescript": {
1491 | "version": "5.2.2",
1492 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
1493 | "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
1494 | "dev": true,
1495 | "bin": {
1496 | "tsc": "bin/tsc",
1497 | "tsserver": "bin/tsserver"
1498 | },
1499 | "engines": {
1500 | "node": ">=14.17"
1501 | }
1502 | },
1503 | "node_modules/update-browserslist-db": {
1504 | "version": "1.0.13",
1505 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
1506 | "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
1507 | "dev": true,
1508 | "funding": [
1509 | {
1510 | "type": "opencollective",
1511 | "url": "https://opencollective.com/browserslist"
1512 | },
1513 | {
1514 | "type": "tidelift",
1515 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1516 | },
1517 | {
1518 | "type": "github",
1519 | "url": "https://github.com/sponsors/ai"
1520 | }
1521 | ],
1522 | "dependencies": {
1523 | "escalade": "^3.1.1",
1524 | "picocolors": "^1.0.0"
1525 | },
1526 | "bin": {
1527 | "update-browserslist-db": "cli.js"
1528 | },
1529 | "peerDependencies": {
1530 | "browserslist": ">= 4.21.0"
1531 | }
1532 | },
1533 | "node_modules/vite": {
1534 | "version": "4.4.9",
1535 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
1536 | "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
1537 | "dev": true,
1538 | "dependencies": {
1539 | "esbuild": "^0.18.10",
1540 | "postcss": "^8.4.27",
1541 | "rollup": "^3.27.1"
1542 | },
1543 | "bin": {
1544 | "vite": "bin/vite.js"
1545 | },
1546 | "engines": {
1547 | "node": "^14.18.0 || >=16.0.0"
1548 | },
1549 | "funding": {
1550 | "url": "https://github.com/vitejs/vite?sponsor=1"
1551 | },
1552 | "optionalDependencies": {
1553 | "fsevents": "~2.3.2"
1554 | },
1555 | "peerDependencies": {
1556 | "@types/node": ">= 14",
1557 | "less": "*",
1558 | "lightningcss": "^1.21.0",
1559 | "sass": "*",
1560 | "stylus": "*",
1561 | "sugarss": "*",
1562 | "terser": "^5.4.0"
1563 | },
1564 | "peerDependenciesMeta": {
1565 | "@types/node": {
1566 | "optional": true
1567 | },
1568 | "less": {
1569 | "optional": true
1570 | },
1571 | "lightningcss": {
1572 | "optional": true
1573 | },
1574 | "sass": {
1575 | "optional": true
1576 | },
1577 | "stylus": {
1578 | "optional": true
1579 | },
1580 | "sugarss": {
1581 | "optional": true
1582 | },
1583 | "terser": {
1584 | "optional": true
1585 | }
1586 | }
1587 | },
1588 | "node_modules/yallist": {
1589 | "version": "3.1.1",
1590 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
1591 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
1592 | "dev": true
1593 | }
1594 | },
1595 | "dependencies": {
1596 | "@ampproject/remapping": {
1597 | "version": "2.2.1",
1598 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
1599 | "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
1600 | "dev": true,
1601 | "requires": {
1602 | "@jridgewell/gen-mapping": "^0.3.0",
1603 | "@jridgewell/trace-mapping": "^0.3.9"
1604 | }
1605 | },
1606 | "@babel/code-frame": {
1607 | "version": "7.22.13",
1608 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
1609 | "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
1610 | "dev": true,
1611 | "requires": {
1612 | "@babel/highlight": "^7.22.13",
1613 | "chalk": "^2.4.2"
1614 | }
1615 | },
1616 | "@babel/compat-data": {
1617 | "version": "7.22.20",
1618 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz",
1619 | "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==",
1620 | "dev": true
1621 | },
1622 | "@babel/core": {
1623 | "version": "7.23.0",
1624 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz",
1625 | "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==",
1626 | "dev": true,
1627 | "requires": {
1628 | "@ampproject/remapping": "^2.2.0",
1629 | "@babel/code-frame": "^7.22.13",
1630 | "@babel/generator": "^7.23.0",
1631 | "@babel/helper-compilation-targets": "^7.22.15",
1632 | "@babel/helper-module-transforms": "^7.23.0",
1633 | "@babel/helpers": "^7.23.0",
1634 | "@babel/parser": "^7.23.0",
1635 | "@babel/template": "^7.22.15",
1636 | "@babel/traverse": "^7.23.0",
1637 | "@babel/types": "^7.23.0",
1638 | "convert-source-map": "^2.0.0",
1639 | "debug": "^4.1.0",
1640 | "gensync": "^1.0.0-beta.2",
1641 | "json5": "^2.2.3",
1642 | "semver": "^6.3.1"
1643 | }
1644 | },
1645 | "@babel/generator": {
1646 | "version": "7.23.0",
1647 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
1648 | "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
1649 | "dev": true,
1650 | "requires": {
1651 | "@babel/types": "^7.23.0",
1652 | "@jridgewell/gen-mapping": "^0.3.2",
1653 | "@jridgewell/trace-mapping": "^0.3.17",
1654 | "jsesc": "^2.5.1"
1655 | }
1656 | },
1657 | "@babel/helper-compilation-targets": {
1658 | "version": "7.22.15",
1659 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
1660 | "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
1661 | "dev": true,
1662 | "requires": {
1663 | "@babel/compat-data": "^7.22.9",
1664 | "@babel/helper-validator-option": "^7.22.15",
1665 | "browserslist": "^4.21.9",
1666 | "lru-cache": "^5.1.1",
1667 | "semver": "^6.3.1"
1668 | }
1669 | },
1670 | "@babel/helper-environment-visitor": {
1671 | "version": "7.22.20",
1672 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
1673 | "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
1674 | "dev": true
1675 | },
1676 | "@babel/helper-function-name": {
1677 | "version": "7.23.0",
1678 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
1679 | "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
1680 | "dev": true,
1681 | "requires": {
1682 | "@babel/template": "^7.22.15",
1683 | "@babel/types": "^7.23.0"
1684 | }
1685 | },
1686 | "@babel/helper-hoist-variables": {
1687 | "version": "7.22.5",
1688 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
1689 | "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
1690 | "dev": true,
1691 | "requires": {
1692 | "@babel/types": "^7.22.5"
1693 | }
1694 | },
1695 | "@babel/helper-module-imports": {
1696 | "version": "7.22.15",
1697 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
1698 | "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
1699 | "dev": true,
1700 | "requires": {
1701 | "@babel/types": "^7.22.15"
1702 | }
1703 | },
1704 | "@babel/helper-module-transforms": {
1705 | "version": "7.23.0",
1706 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz",
1707 | "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==",
1708 | "dev": true,
1709 | "requires": {
1710 | "@babel/helper-environment-visitor": "^7.22.20",
1711 | "@babel/helper-module-imports": "^7.22.15",
1712 | "@babel/helper-simple-access": "^7.22.5",
1713 | "@babel/helper-split-export-declaration": "^7.22.6",
1714 | "@babel/helper-validator-identifier": "^7.22.20"
1715 | }
1716 | },
1717 | "@babel/helper-plugin-utils": {
1718 | "version": "7.22.5",
1719 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
1720 | "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
1721 | "dev": true
1722 | },
1723 | "@babel/helper-simple-access": {
1724 | "version": "7.22.5",
1725 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
1726 | "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
1727 | "dev": true,
1728 | "requires": {
1729 | "@babel/types": "^7.22.5"
1730 | }
1731 | },
1732 | "@babel/helper-split-export-declaration": {
1733 | "version": "7.22.6",
1734 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
1735 | "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
1736 | "dev": true,
1737 | "requires": {
1738 | "@babel/types": "^7.22.5"
1739 | }
1740 | },
1741 | "@babel/helper-string-parser": {
1742 | "version": "7.22.5",
1743 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
1744 | "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
1745 | "dev": true
1746 | },
1747 | "@babel/helper-validator-identifier": {
1748 | "version": "7.22.20",
1749 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
1750 | "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
1751 | "dev": true
1752 | },
1753 | "@babel/helper-validator-option": {
1754 | "version": "7.22.15",
1755 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
1756 | "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
1757 | "dev": true
1758 | },
1759 | "@babel/helpers": {
1760 | "version": "7.23.1",
1761 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz",
1762 | "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==",
1763 | "dev": true,
1764 | "requires": {
1765 | "@babel/template": "^7.22.15",
1766 | "@babel/traverse": "^7.23.0",
1767 | "@babel/types": "^7.23.0"
1768 | }
1769 | },
1770 | "@babel/highlight": {
1771 | "version": "7.22.20",
1772 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
1773 | "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
1774 | "dev": true,
1775 | "requires": {
1776 | "@babel/helper-validator-identifier": "^7.22.20",
1777 | "chalk": "^2.4.2",
1778 | "js-tokens": "^4.0.0"
1779 | }
1780 | },
1781 | "@babel/parser": {
1782 | "version": "7.23.0",
1783 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
1784 | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
1785 | "dev": true
1786 | },
1787 | "@babel/plugin-transform-react-jsx-self": {
1788 | "version": "7.22.5",
1789 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz",
1790 | "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==",
1791 | "dev": true,
1792 | "requires": {
1793 | "@babel/helper-plugin-utils": "^7.22.5"
1794 | }
1795 | },
1796 | "@babel/plugin-transform-react-jsx-source": {
1797 | "version": "7.22.5",
1798 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz",
1799 | "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==",
1800 | "dev": true,
1801 | "requires": {
1802 | "@babel/helper-plugin-utils": "^7.22.5"
1803 | }
1804 | },
1805 | "@babel/template": {
1806 | "version": "7.22.15",
1807 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
1808 | "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
1809 | "dev": true,
1810 | "requires": {
1811 | "@babel/code-frame": "^7.22.13",
1812 | "@babel/parser": "^7.22.15",
1813 | "@babel/types": "^7.22.15"
1814 | }
1815 | },
1816 | "@babel/traverse": {
1817 | "version": "7.23.0",
1818 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz",
1819 | "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==",
1820 | "dev": true,
1821 | "requires": {
1822 | "@babel/code-frame": "^7.22.13",
1823 | "@babel/generator": "^7.23.0",
1824 | "@babel/helper-environment-visitor": "^7.22.20",
1825 | "@babel/helper-function-name": "^7.23.0",
1826 | "@babel/helper-hoist-variables": "^7.22.5",
1827 | "@babel/helper-split-export-declaration": "^7.22.6",
1828 | "@babel/parser": "^7.23.0",
1829 | "@babel/types": "^7.23.0",
1830 | "debug": "^4.1.0",
1831 | "globals": "^11.1.0"
1832 | }
1833 | },
1834 | "@babel/types": {
1835 | "version": "7.23.0",
1836 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
1837 | "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
1838 | "dev": true,
1839 | "requires": {
1840 | "@babel/helper-string-parser": "^7.22.5",
1841 | "@babel/helper-validator-identifier": "^7.22.20",
1842 | "to-fast-properties": "^2.0.0"
1843 | }
1844 | },
1845 | "@esbuild/android-arm": {
1846 | "version": "0.18.20",
1847 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
1848 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
1849 | "dev": true,
1850 | "optional": true
1851 | },
1852 | "@esbuild/android-arm64": {
1853 | "version": "0.18.20",
1854 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
1855 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
1856 | "dev": true,
1857 | "optional": true
1858 | },
1859 | "@esbuild/android-x64": {
1860 | "version": "0.18.20",
1861 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
1862 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
1863 | "dev": true,
1864 | "optional": true
1865 | },
1866 | "@esbuild/darwin-arm64": {
1867 | "version": "0.18.20",
1868 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
1869 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
1870 | "dev": true,
1871 | "optional": true
1872 | },
1873 | "@esbuild/darwin-x64": {
1874 | "version": "0.18.20",
1875 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
1876 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
1877 | "dev": true,
1878 | "optional": true
1879 | },
1880 | "@esbuild/freebsd-arm64": {
1881 | "version": "0.18.20",
1882 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
1883 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
1884 | "dev": true,
1885 | "optional": true
1886 | },
1887 | "@esbuild/freebsd-x64": {
1888 | "version": "0.18.20",
1889 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
1890 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
1891 | "dev": true,
1892 | "optional": true
1893 | },
1894 | "@esbuild/linux-arm": {
1895 | "version": "0.18.20",
1896 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
1897 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
1898 | "dev": true,
1899 | "optional": true
1900 | },
1901 | "@esbuild/linux-arm64": {
1902 | "version": "0.18.20",
1903 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
1904 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
1905 | "dev": true,
1906 | "optional": true
1907 | },
1908 | "@esbuild/linux-ia32": {
1909 | "version": "0.18.20",
1910 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
1911 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
1912 | "dev": true,
1913 | "optional": true
1914 | },
1915 | "@esbuild/linux-loong64": {
1916 | "version": "0.18.20",
1917 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
1918 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
1919 | "dev": true,
1920 | "optional": true
1921 | },
1922 | "@esbuild/linux-mips64el": {
1923 | "version": "0.18.20",
1924 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
1925 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
1926 | "dev": true,
1927 | "optional": true
1928 | },
1929 | "@esbuild/linux-ppc64": {
1930 | "version": "0.18.20",
1931 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
1932 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
1933 | "dev": true,
1934 | "optional": true
1935 | },
1936 | "@esbuild/linux-riscv64": {
1937 | "version": "0.18.20",
1938 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
1939 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
1940 | "dev": true,
1941 | "optional": true
1942 | },
1943 | "@esbuild/linux-s390x": {
1944 | "version": "0.18.20",
1945 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
1946 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
1947 | "dev": true,
1948 | "optional": true
1949 | },
1950 | "@esbuild/linux-x64": {
1951 | "version": "0.18.20",
1952 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
1953 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
1954 | "dev": true,
1955 | "optional": true
1956 | },
1957 | "@esbuild/netbsd-x64": {
1958 | "version": "0.18.20",
1959 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
1960 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
1961 | "dev": true,
1962 | "optional": true
1963 | },
1964 | "@esbuild/openbsd-x64": {
1965 | "version": "0.18.20",
1966 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
1967 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
1968 | "dev": true,
1969 | "optional": true
1970 | },
1971 | "@esbuild/sunos-x64": {
1972 | "version": "0.18.20",
1973 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
1974 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
1975 | "dev": true,
1976 | "optional": true
1977 | },
1978 | "@esbuild/win32-arm64": {
1979 | "version": "0.18.20",
1980 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
1981 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
1982 | "dev": true,
1983 | "optional": true
1984 | },
1985 | "@esbuild/win32-ia32": {
1986 | "version": "0.18.20",
1987 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
1988 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
1989 | "dev": true,
1990 | "optional": true
1991 | },
1992 | "@esbuild/win32-x64": {
1993 | "version": "0.18.20",
1994 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
1995 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
1996 | "dev": true,
1997 | "optional": true
1998 | },
1999 | "@jridgewell/gen-mapping": {
2000 | "version": "0.3.3",
2001 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
2002 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
2003 | "dev": true,
2004 | "requires": {
2005 | "@jridgewell/set-array": "^1.0.1",
2006 | "@jridgewell/sourcemap-codec": "^1.4.10",
2007 | "@jridgewell/trace-mapping": "^0.3.9"
2008 | }
2009 | },
2010 | "@jridgewell/resolve-uri": {
2011 | "version": "3.1.1",
2012 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
2013 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
2014 | "dev": true
2015 | },
2016 | "@jridgewell/set-array": {
2017 | "version": "1.1.2",
2018 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
2019 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
2020 | "dev": true
2021 | },
2022 | "@jridgewell/sourcemap-codec": {
2023 | "version": "1.4.15",
2024 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
2025 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
2026 | "dev": true
2027 | },
2028 | "@jridgewell/trace-mapping": {
2029 | "version": "0.3.19",
2030 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
2031 | "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
2032 | "dev": true,
2033 | "requires": {
2034 | "@jridgewell/resolve-uri": "^3.1.0",
2035 | "@jridgewell/sourcemap-codec": "^1.4.14"
2036 | }
2037 | },
2038 | "@tauri-apps/api": {
2039 | "version": "1.5.0",
2040 | "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.5.0.tgz",
2041 | "integrity": "sha512-yQY9wpVNuiYhLLuyDlu1nBpqJELT1fGp7OctN4rW9I2W1T2p7A3tqPxsEzQprEwneQRBAlPM9vC8NsnMbct+pg=="
2042 | },
2043 | "@tauri-apps/cli": {
2044 | "version": "1.5.1",
2045 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.5.1.tgz",
2046 | "integrity": "sha512-Ssj30axil5vPBV3W5ScHXk4umTKu6BhfmMdljfKDOG9K55gAqzBAE2VBC5e/ouclSxZfN+6YNL9VhDXFu/UyeA==",
2047 | "dev": true,
2048 | "requires": {
2049 | "@tauri-apps/cli-darwin-arm64": "1.5.1",
2050 | "@tauri-apps/cli-darwin-x64": "1.5.1",
2051 | "@tauri-apps/cli-linux-arm-gnueabihf": "1.5.1",
2052 | "@tauri-apps/cli-linux-arm64-gnu": "1.5.1",
2053 | "@tauri-apps/cli-linux-arm64-musl": "1.5.1",
2054 | "@tauri-apps/cli-linux-x64-gnu": "1.5.1",
2055 | "@tauri-apps/cli-linux-x64-musl": "1.5.1",
2056 | "@tauri-apps/cli-win32-arm64-msvc": "1.5.1",
2057 | "@tauri-apps/cli-win32-ia32-msvc": "1.5.1",
2058 | "@tauri-apps/cli-win32-x64-msvc": "1.5.1"
2059 | }
2060 | },
2061 | "@tauri-apps/cli-darwin-arm64": {
2062 | "version": "1.5.1",
2063 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.5.1.tgz",
2064 | "integrity": "sha512-o2FSGj72gqJjlVtuScXQZUgiRs90PS9gG7YAz0Hgr4nV1MfIn9U6JVj6R+mnAEZBCK8qdy5jdemhmNKDDoiYQg==",
2065 | "dev": true,
2066 | "optional": true
2067 | },
2068 | "@tauri-apps/cli-darwin-x64": {
2069 | "version": "1.5.1",
2070 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.5.1.tgz",
2071 | "integrity": "sha512-G1/v6AJPP5oIcjsOxZshag28wdmDx1Fis2yz545aUk7oKU86A3ZJpz0b8BaXkr93w04xGcmGAaspZeXMmTvrbw==",
2072 | "dev": true,
2073 | "optional": true
2074 | },
2075 | "@tauri-apps/cli-linux-arm-gnueabihf": {
2076 | "version": "1.5.1",
2077 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.5.1.tgz",
2078 | "integrity": "sha512-hPDOUMviffyX5BySk6RuD7IZZeMuNUJzKWHxVWa0NHJPfxQOIPWwYWbk6TascrVk9GZYAImcB0yKfrll8I0VTg==",
2079 | "dev": true,
2080 | "optional": true
2081 | },
2082 | "@tauri-apps/cli-linux-arm64-gnu": {
2083 | "version": "1.5.1",
2084 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.5.1.tgz",
2085 | "integrity": "sha512-EJjTXqZchFLVrFgfxwstrQj7NwVDirffLhw5hRWS3L3Iys3IvqzIMVIA+GrY7KsaPwq7qaSqE1CDtP1wejE/9g==",
2086 | "dev": true,
2087 | "optional": true
2088 | },
2089 | "@tauri-apps/cli-linux-arm64-musl": {
2090 | "version": "1.5.1",
2091 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.5.1.tgz",
2092 | "integrity": "sha512-XgJIk0AcxRL4pWVjfj0wiC9WnIZoUIVLPcQs86dNxoqzwAvADdNYp+McXf3/MDxX8uGEzpgdvlqr4T+50c8f6w==",
2093 | "dev": true,
2094 | "optional": true
2095 | },
2096 | "@tauri-apps/cli-linux-x64-gnu": {
2097 | "version": "1.5.1",
2098 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.5.1.tgz",
2099 | "integrity": "sha512-VoVrIn7b+F2n0LJoDkLGXQJsPV/U1h3QnjRNE+Tcju6xVPBx64H0vfb7lC3S4QfVpiQ4Uc+1UD3Slvn4jGpL/A==",
2100 | "dev": true,
2101 | "optional": true
2102 | },
2103 | "@tauri-apps/cli-linux-x64-musl": {
2104 | "version": "1.5.1",
2105 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.5.1.tgz",
2106 | "integrity": "sha512-tQi2K0LYW80BLud7ZFOy3WxCM2VjDRxuhxOYhtcLG39cIeGqsSz07LwiCFNBn4vy2J47TnZ+8XDRAOtxSFe25w==",
2107 | "dev": true,
2108 | "optional": true
2109 | },
2110 | "@tauri-apps/cli-win32-arm64-msvc": {
2111 | "version": "1.5.1",
2112 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.5.1.tgz",
2113 | "integrity": "sha512-BdVwzVXY2JWBtWEO/G0//jIWXeWR52+KG0+kyoHO6QTxkncLrN5q2RldvXOe7CvhKe/qmgbkNosj5jWi7t49kQ==",
2114 | "dev": true,
2115 | "optional": true
2116 | },
2117 | "@tauri-apps/cli-win32-ia32-msvc": {
2118 | "version": "1.5.1",
2119 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.5.1.tgz",
2120 | "integrity": "sha512-Q0ei4ZUHlGu/b4DP4Cm6WnI5zxpLxnf/vSwR2BYO3XO65TdLee1gTyuwYuSZJYu5jxqSoSusmLyL4F43jHhf9Q==",
2121 | "dev": true,
2122 | "optional": true
2123 | },
2124 | "@tauri-apps/cli-win32-x64-msvc": {
2125 | "version": "1.5.1",
2126 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.5.1.tgz",
2127 | "integrity": "sha512-chpsJ5PIwMOdn1IIJ6bj2G7jv9jQryVvhujU0k3kt/5kE7OuLRDYbI5BAIzMOaLoOTgoo8oxcFXQ+enELSxlMQ==",
2128 | "dev": true,
2129 | "optional": true
2130 | },
2131 | "@types/babel__core": {
2132 | "version": "7.20.2",
2133 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz",
2134 | "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==",
2135 | "dev": true,
2136 | "requires": {
2137 | "@babel/parser": "^7.20.7",
2138 | "@babel/types": "^7.20.7",
2139 | "@types/babel__generator": "*",
2140 | "@types/babel__template": "*",
2141 | "@types/babel__traverse": "*"
2142 | }
2143 | },
2144 | "@types/babel__generator": {
2145 | "version": "7.6.5",
2146 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz",
2147 | "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==",
2148 | "dev": true,
2149 | "requires": {
2150 | "@babel/types": "^7.0.0"
2151 | }
2152 | },
2153 | "@types/babel__template": {
2154 | "version": "7.4.2",
2155 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz",
2156 | "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==",
2157 | "dev": true,
2158 | "requires": {
2159 | "@babel/parser": "^7.1.0",
2160 | "@babel/types": "^7.0.0"
2161 | }
2162 | },
2163 | "@types/babel__traverse": {
2164 | "version": "7.20.2",
2165 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz",
2166 | "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==",
2167 | "dev": true,
2168 | "requires": {
2169 | "@babel/types": "^7.20.7"
2170 | }
2171 | },
2172 | "@types/prop-types": {
2173 | "version": "15.7.8",
2174 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz",
2175 | "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==",
2176 | "dev": true
2177 | },
2178 | "@types/react": {
2179 | "version": "18.2.24",
2180 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.24.tgz",
2181 | "integrity": "sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==",
2182 | "dev": true,
2183 | "requires": {
2184 | "@types/prop-types": "*",
2185 | "@types/scheduler": "*",
2186 | "csstype": "^3.0.2"
2187 | }
2188 | },
2189 | "@types/react-dom": {
2190 | "version": "18.2.8",
2191 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.8.tgz",
2192 | "integrity": "sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==",
2193 | "dev": true,
2194 | "requires": {
2195 | "@types/react": "*"
2196 | }
2197 | },
2198 | "@types/scheduler": {
2199 | "version": "0.16.4",
2200 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz",
2201 | "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==",
2202 | "dev": true
2203 | },
2204 | "@vitejs/plugin-react": {
2205 | "version": "4.1.0",
2206 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz",
2207 | "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==",
2208 | "dev": true,
2209 | "requires": {
2210 | "@babel/core": "^7.22.20",
2211 | "@babel/plugin-transform-react-jsx-self": "^7.22.5",
2212 | "@babel/plugin-transform-react-jsx-source": "^7.22.5",
2213 | "@types/babel__core": "^7.20.2",
2214 | "react-refresh": "^0.14.0"
2215 | }
2216 | },
2217 | "ansi-styles": {
2218 | "version": "3.2.1",
2219 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2220 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2221 | "dev": true,
2222 | "requires": {
2223 | "color-convert": "^1.9.0"
2224 | }
2225 | },
2226 | "browserslist": {
2227 | "version": "4.22.1",
2228 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
2229 | "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
2230 | "dev": true,
2231 | "requires": {
2232 | "caniuse-lite": "^1.0.30001541",
2233 | "electron-to-chromium": "^1.4.535",
2234 | "node-releases": "^2.0.13",
2235 | "update-browserslist-db": "^1.0.13"
2236 | }
2237 | },
2238 | "caniuse-lite": {
2239 | "version": "1.0.30001543",
2240 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001543.tgz",
2241 | "integrity": "sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA==",
2242 | "dev": true
2243 | },
2244 | "chalk": {
2245 | "version": "2.4.2",
2246 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2247 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
2248 | "dev": true,
2249 | "requires": {
2250 | "ansi-styles": "^3.2.1",
2251 | "escape-string-regexp": "^1.0.5",
2252 | "supports-color": "^5.3.0"
2253 | }
2254 | },
2255 | "color-convert": {
2256 | "version": "1.9.3",
2257 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2258 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
2259 | "dev": true,
2260 | "requires": {
2261 | "color-name": "1.1.3"
2262 | }
2263 | },
2264 | "color-name": {
2265 | "version": "1.1.3",
2266 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
2267 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
2268 | "dev": true
2269 | },
2270 | "convert-source-map": {
2271 | "version": "2.0.0",
2272 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
2273 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
2274 | "dev": true
2275 | },
2276 | "csstype": {
2277 | "version": "3.1.2",
2278 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
2279 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
2280 | "dev": true
2281 | },
2282 | "debug": {
2283 | "version": "4.3.4",
2284 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
2285 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
2286 | "dev": true,
2287 | "requires": {
2288 | "ms": "2.1.2"
2289 | }
2290 | },
2291 | "electron-to-chromium": {
2292 | "version": "1.4.539",
2293 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.539.tgz",
2294 | "integrity": "sha512-wRmWJ8F7rgmINuI32S6r2SLrw/h/bJQsDSvBiq9GBfvc2Lh73qTOwn73r3Cf67mjVgFGJYcYtmERzySa5jIWlg==",
2295 | "dev": true
2296 | },
2297 | "esbuild": {
2298 | "version": "0.18.20",
2299 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
2300 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
2301 | "dev": true,
2302 | "requires": {
2303 | "@esbuild/android-arm": "0.18.20",
2304 | "@esbuild/android-arm64": "0.18.20",
2305 | "@esbuild/android-x64": "0.18.20",
2306 | "@esbuild/darwin-arm64": "0.18.20",
2307 | "@esbuild/darwin-x64": "0.18.20",
2308 | "@esbuild/freebsd-arm64": "0.18.20",
2309 | "@esbuild/freebsd-x64": "0.18.20",
2310 | "@esbuild/linux-arm": "0.18.20",
2311 | "@esbuild/linux-arm64": "0.18.20",
2312 | "@esbuild/linux-ia32": "0.18.20",
2313 | "@esbuild/linux-loong64": "0.18.20",
2314 | "@esbuild/linux-mips64el": "0.18.20",
2315 | "@esbuild/linux-ppc64": "0.18.20",
2316 | "@esbuild/linux-riscv64": "0.18.20",
2317 | "@esbuild/linux-s390x": "0.18.20",
2318 | "@esbuild/linux-x64": "0.18.20",
2319 | "@esbuild/netbsd-x64": "0.18.20",
2320 | "@esbuild/openbsd-x64": "0.18.20",
2321 | "@esbuild/sunos-x64": "0.18.20",
2322 | "@esbuild/win32-arm64": "0.18.20",
2323 | "@esbuild/win32-ia32": "0.18.20",
2324 | "@esbuild/win32-x64": "0.18.20"
2325 | }
2326 | },
2327 | "escalade": {
2328 | "version": "3.1.1",
2329 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
2330 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
2331 | "dev": true
2332 | },
2333 | "escape-string-regexp": {
2334 | "version": "1.0.5",
2335 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2336 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
2337 | "dev": true
2338 | },
2339 | "fsevents": {
2340 | "version": "2.3.3",
2341 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
2342 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
2343 | "dev": true,
2344 | "optional": true
2345 | },
2346 | "gensync": {
2347 | "version": "1.0.0-beta.2",
2348 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
2349 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
2350 | "dev": true
2351 | },
2352 | "globals": {
2353 | "version": "11.12.0",
2354 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
2355 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
2356 | "dev": true
2357 | },
2358 | "has-flag": {
2359 | "version": "3.0.0",
2360 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2361 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
2362 | "dev": true
2363 | },
2364 | "js-tokens": {
2365 | "version": "4.0.0",
2366 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2367 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
2368 | },
2369 | "jsesc": {
2370 | "version": "2.5.2",
2371 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
2372 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
2373 | "dev": true
2374 | },
2375 | "json5": {
2376 | "version": "2.2.3",
2377 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
2378 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
2379 | "dev": true
2380 | },
2381 | "loose-envify": {
2382 | "version": "1.4.0",
2383 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2384 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2385 | "requires": {
2386 | "js-tokens": "^3.0.0 || ^4.0.0"
2387 | }
2388 | },
2389 | "lru-cache": {
2390 | "version": "5.1.1",
2391 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2392 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2393 | "dev": true,
2394 | "requires": {
2395 | "yallist": "^3.0.2"
2396 | }
2397 | },
2398 | "ms": {
2399 | "version": "2.1.2",
2400 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2401 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
2402 | "dev": true
2403 | },
2404 | "nanoid": {
2405 | "version": "3.3.6",
2406 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
2407 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
2408 | "dev": true
2409 | },
2410 | "node-releases": {
2411 | "version": "2.0.13",
2412 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
2413 | "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
2414 | "dev": true
2415 | },
2416 | "picocolors": {
2417 | "version": "1.0.0",
2418 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
2419 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
2420 | "dev": true
2421 | },
2422 | "postcss": {
2423 | "version": "8.4.31",
2424 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
2425 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
2426 | "dev": true,
2427 | "requires": {
2428 | "nanoid": "^3.3.6",
2429 | "picocolors": "^1.0.0",
2430 | "source-map-js": "^1.0.2"
2431 | }
2432 | },
2433 | "react": {
2434 | "version": "18.2.0",
2435 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
2436 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
2437 | "requires": {
2438 | "loose-envify": "^1.1.0"
2439 | }
2440 | },
2441 | "react-dom": {
2442 | "version": "18.2.0",
2443 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
2444 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
2445 | "requires": {
2446 | "loose-envify": "^1.1.0",
2447 | "scheduler": "^0.23.0"
2448 | }
2449 | },
2450 | "react-refresh": {
2451 | "version": "0.14.0",
2452 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
2453 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
2454 | "dev": true
2455 | },
2456 | "rollup": {
2457 | "version": "3.29.4",
2458 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
2459 | "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
2460 | "dev": true,
2461 | "requires": {
2462 | "fsevents": "~2.3.2"
2463 | }
2464 | },
2465 | "scheduler": {
2466 | "version": "0.23.0",
2467 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
2468 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
2469 | "requires": {
2470 | "loose-envify": "^1.1.0"
2471 | }
2472 | },
2473 | "semver": {
2474 | "version": "6.3.1",
2475 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
2476 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2477 | "dev": true
2478 | },
2479 | "source-map-js": {
2480 | "version": "1.0.2",
2481 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
2482 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
2483 | "dev": true
2484 | },
2485 | "supports-color": {
2486 | "version": "5.5.0",
2487 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2488 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2489 | "dev": true,
2490 | "requires": {
2491 | "has-flag": "^3.0.0"
2492 | }
2493 | },
2494 | "to-fast-properties": {
2495 | "version": "2.0.0",
2496 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2497 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
2498 | "dev": true
2499 | },
2500 | "typescript": {
2501 | "version": "5.2.2",
2502 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
2503 | "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
2504 | "dev": true
2505 | },
2506 | "update-browserslist-db": {
2507 | "version": "1.0.13",
2508 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
2509 | "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
2510 | "dev": true,
2511 | "requires": {
2512 | "escalade": "^3.1.1",
2513 | "picocolors": "^1.0.0"
2514 | }
2515 | },
2516 | "vite": {
2517 | "version": "4.4.9",
2518 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
2519 | "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
2520 | "dev": true,
2521 | "requires": {
2522 | "esbuild": "^0.18.10",
2523 | "fsevents": "~2.3.2",
2524 | "postcss": "^8.4.27",
2525 | "rollup": "^3.27.1"
2526 | }
2527 | },
2528 | "yallist": {
2529 | "version": "3.1.1",
2530 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
2531 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
2532 | "dev": true
2533 | }
2534 | }
2535 | }
2536 |
--------------------------------------------------------------------------------