├── packages ├── client │ ├── .env │ ├── .prettierrc │ ├── postcss.config.cjs │ ├── src │ │ ├── style.css │ │ ├── pages │ │ │ ├── LogsView.vue │ │ │ ├── DiagnoseView.vue │ │ │ ├── LoginView.vue │ │ │ ├── AppView.vue │ │ │ └── ClientsView.vue │ │ ├── endpoints.ts │ │ ├── vite-env.d.ts │ │ ├── index.vue │ │ ├── main.ts │ │ ├── axios.ts │ │ ├── router.ts │ │ └── components │ │ │ ├── NavigationMenu.vue │ │ │ ├── Toolbar.vue │ │ │ └── ClientsTable.vue │ ├── vite.config.ts │ ├── tsconfig.node.json │ ├── tailwind.config.cjs │ ├── .gitignore │ ├── index.html │ ├── tsconfig.json │ ├── package.json │ ├── README.md │ └── pnpm-lock.yaml └── server │ ├── .gitignore │ ├── .env │ ├── .prettierrc │ ├── src │ ├── service │ │ ├── diagnose.ts │ │ ├── stats.ts │ │ └── wireguard.ts │ ├── utils │ │ ├── db.ts │ │ ├── ip.ts │ │ ├── parser.ts │ │ └── orm.ts │ └── index.ts │ ├── package.json │ └── tsconfig.json ├── pnpm-workspace.yaml ├── .gitignore ├── .vscode └── settings.json ├── deployment └── pm2 │ ├── dev.config.js │ └── prod.config.js ├── package.json ├── README.md └── pnpm-lock.yaml /packages/client/.env: -------------------------------------------------------------------------------- 1 | VITE_SERVER_BASE_URL="" -------------------------------------------------------------------------------- /packages/server/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env.local -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/client' 3 | - 'packages/server' -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /packages/server/node_modules/ 3 | /packages/client/node_modules/ 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "Axios", 4 | "vueuse" 5 | ] 6 | } -------------------------------------------------------------------------------- /packages/server/.env: -------------------------------------------------------------------------------- 1 | JWT_SECRET="somesuperlongstringofchars" 2 | AUTH_USERNAME="admin" 3 | AUTH_PASSWORD="admin" -------------------------------------------------------------------------------- /packages/client/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "singleQuote": true, 4 | "semi": false, 5 | "printWidth": 120 6 | } -------------------------------------------------------------------------------- /packages/server/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "tabWidth": 4, 4 | "semi": false, 5 | "singleQuote": true 6 | } -------------------------------------------------------------------------------- /packages/client/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /packages/client/src/style.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | body { 6 | background: black 7 | } 8 | 9 | -------------------------------------------------------------------------------- /packages/client/src/pages/LogsView.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/client/src/pages/DiagnoseView.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/client/src/endpoints.ts: -------------------------------------------------------------------------------- 1 | const CLIENTS = '/api/v1/clients' 2 | const STATS = '/api/v1/stats' 3 | const LOGIN = '/api/v1/login' 4 | 5 | export default { 6 | CLIENTS, 7 | STATS, 8 | LOGIN 9 | } -------------------------------------------------------------------------------- /packages/client/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }) 8 | -------------------------------------------------------------------------------- /packages/client/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | const component: DefineComponent<{}, {}, any> 6 | export default component 7 | } 8 | -------------------------------------------------------------------------------- /packages/client/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/client/src/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | -------------------------------------------------------------------------------- /packages/client/tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | "./index.html", 5 | "./src/**/*.{vue,js,ts,jsx,tsx}", 6 | ], 7 | corePlugins: { 8 | preflight: false, 9 | }, 10 | theme: { 11 | extend: {}, 12 | }, 13 | plugins: [], 14 | } -------------------------------------------------------------------------------- /deployment/pm2/dev.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | apps: [ 3 | { 4 | name: "@wg-insights/client", 5 | script: "pnpm", 6 | args: "client:dev" 7 | }, 8 | { 9 | name: "@wg-insights/server", 10 | script: "pnpm", 11 | args: "server:dev" 12 | }, 13 | ], 14 | }; 15 | -------------------------------------------------------------------------------- /deployment/pm2/prod.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | apps: [ 3 | { 4 | name: "@wg-insights/client", 5 | script: "pnpm", 6 | args: "client:start" 7 | }, 8 | { 9 | name: "@wg-insights/server", 10 | script: "pnpm", 11 | args: "server:start" 12 | }, 13 | ], 14 | }; 15 | -------------------------------------------------------------------------------- /packages/client/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import './style.css' 3 | import index from './index.vue' 4 | import router from './router' 5 | 6 | const BASE_URL = import.meta.env 7 | console.error(BASE_URL) 8 | export const CLIENTS = BASE_URL + 'clients' 9 | export const DIAGNOSTICS = BASE_URL + 'diagnostic' 10 | 11 | createApp(index).use(router).mount('#app') 12 | -------------------------------------------------------------------------------- /packages/client/.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 | -------------------------------------------------------------------------------- /packages/client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 🐉 Wireguard Insights 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/client/src/axios.ts: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | import router from "./router"; 3 | 4 | export const instance = axios.create({ 5 | withCredentials: true, 6 | baseURL: import.meta.env.VITE_SERVER_BASE_URL || 'http://localhost:5000', 7 | }) 8 | 9 | instance.interceptors.response.use((response) => response, async (error) => { 10 | if (error.response.status === 401) { 11 | await router.replace('/login') 12 | } 13 | }) -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wg-insights", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "client:start": "pnpm --filter @wg-insights/client start", 9 | "server:start": "pnpm --filter @wg-insights/server start", 10 | "client:dev": "pnpm --filter @wg-insights/client dev", 11 | "server:dev": "pnpm --filter @wg-insights/server dev" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC" 16 | } 17 | -------------------------------------------------------------------------------- /packages/client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "module": "ESNext", 6 | "moduleResolution": "Node", 7 | "strict": false, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "lib": ["ESNext", "DOM"], 14 | "skipLibCheck": true, 15 | "types": ["naive-ui/volar"] 16 | }, 17 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 18 | "references": [{ "path": "./tsconfig.node.json" }] 19 | } 20 | -------------------------------------------------------------------------------- /packages/server/src/service/diagnose.ts: -------------------------------------------------------------------------------- 1 | import wireguard from './wireguard' 2 | import ping from 'ping' 3 | 4 | const onlyUnique = (value: any, index: any, self: any) => { 5 | return self.indexOf(value) === index 6 | } 7 | 8 | export default { 9 | /** 10 | * pings unique list of client endpoints for time and packetloss 11 | */ 12 | run: async () => { 13 | const clients = await wireguard.getClients() 14 | // console.log(clients) 15 | const uniqueEndpoints = clients.map((client) => client.endpoint).filter(Boolean).map(endpoint => endpoint.split(':')[0]).filter(onlyUnique) 16 | const pingedEndpoints = await Promise.all(uniqueEndpoints.map(endpoint => ping.promise.probe(endpoint))) 17 | return pingedEndpoints.map(({ alive, time, host, packetLoss }) => ({ alive, time, host, packetLoss })) 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /packages/client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@wg-insights/client", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite --host", 8 | "start": "vue-tsc --noEmit && vite build && vite preview --host", 9 | "build": "vue-tsc --noEmit && vite build", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@vicons/fluent": "^0.12.0", 14 | "@vicons/ionicons5": "^0.12.0", 15 | "@vueuse/core": "^9.3.0", 16 | "@vueuse/integrations": "^9.3.0", 17 | "axios": "^1.1.2", 18 | "fuse.js": "^6.6.2", 19 | "naive-ui": "^2.33.3", 20 | "vfonts": "^0.0.3", 21 | "vite": "^3.1.0", 22 | "vue": "^3.2.37", 23 | "vue-router": "4" 24 | }, 25 | "devDependencies": { 26 | "@vicons/fa": "^0.12.0", 27 | "@vitejs/plugin-vue": "^3.1.0", 28 | "autoprefixer": "^10.4.12", 29 | "postcss": "^8.4.17", 30 | "tailwindcss": "^3.1.8", 31 | "typescript": "^4.6.4", 32 | "vue-tsc": "^0.40.4" 33 | } 34 | } -------------------------------------------------------------------------------- /packages/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@wg-insights/server", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "repository": "git@github.com:Mhdi-kr/wg-insights.git", 6 | "license": "MIT", 7 | "dependencies": { 8 | "axios": "^1.1.0", 9 | "bcrypt": "^5.1.0", 10 | "cookie-parser": "^1.4.6", 11 | "cors": "^2.8.5", 12 | "digital-unit-converter": "^1.0.1", 13 | "dotenv": "^16.0.3", 14 | "express": "^4.18.1", 15 | "jsonwebtoken": "^8.5.1", 16 | "ping": "^0.4.2", 17 | "sqlite3": "^5.1.2" 18 | }, 19 | "scripts": { 20 | "start": "ts-node src/index.ts", 21 | "dev": "nodemon src/index.ts" 22 | }, 23 | "devDependencies": { 24 | "@types/bcrypt": "^5.0.0", 25 | "@types/cookie-parser": "^1.4.3", 26 | "@types/cors": "^2.8.12", 27 | "@types/express": "^4.17.14", 28 | "@types/jsonwebtoken": "^8.5.9", 29 | "@types/node": "^18.7.23", 30 | "@types/ping": "^0.4.1", 31 | "nodemon": "^2.0.20", 32 | "ts-node": "^10.9.1", 33 | "typescript": "^4.8.4" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /packages/server/src/utils/db.ts: -------------------------------------------------------------------------------- 1 | import sqlite, { Statement } from 'sqlite3'; 2 | 3 | export const db = new sqlite.Database('wg.sql'); 4 | 5 | export const run = (stmt: Statement, args: any[]) => new Promise((resolve, reject) => { 6 | stmt.run(args, (r: any, err: any) => { 7 | if ((r && r.errno) || err) { 8 | reject(r.errno || err); 9 | } 10 | resolve(r); 11 | }); 12 | }); 13 | 14 | export const finalize = (stmt: Statement) => new Promise((resolve, reject) => { 15 | stmt.finalize((err: any) => { 16 | if (err) { 17 | reject(err); 18 | } 19 | resolve(true); 20 | }); 21 | }); 22 | 23 | export const all = (statement: string) => { 24 | return new Promise((resolve, reject) => { 25 | db.all(statement, (err, row) => { 26 | if (err) { 27 | reject(err); 28 | } 29 | resolve(row); 30 | }) 31 | }); 32 | } 33 | 34 | 35 | db.serialize(() => { 36 | db.run("CREATE TABLE IF NOT EXISTS peers (public_key TEXT UNIQUE, sent INTEGER DEFAULT 0 NOT NULL, received INTEGER DEFAULT 0 NOT NULL, iface TEXT, remaining INTEGER DEFAULT 10 NOT NULL)"); 37 | }); 38 | -------------------------------------------------------------------------------- /packages/client/README.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + TypeScript + Vite 2 | 3 | This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` 39 | -------------------------------------------------------------------------------- /packages/client/src/pages/AppView.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 59 | -------------------------------------------------------------------------------- /packages/server/src/utils/ip.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import cp from 'child_process'; 3 | import util from 'util'; 4 | import { Address, Peer } from './orm'; 5 | const exec = util.promisify(cp.exec); 6 | 7 | export const findUnusedIp = (wgServerAddresses: Address, entries: Peer[]) => { 8 | // Assume the both IPv4 and IPv6 are free at a 9 | // specific address and we do not need to calculate 10 | // free address for both IP versions 11 | const ips = entries.map(e => e.allowedIps.split('/')[0]); 12 | const occupiedAddresses = ips.map(ip => Number(ip.split('.')[3])); 13 | let startAddress = Number(wgServerAddresses.IPv4.address.split('.')[3]) + 1; 14 | while (occupiedAddresses.includes(startAddress)) { 15 | startAddress++; 16 | } 17 | const unusedAddress = wgServerAddresses.IPv4.address.split('.'); 18 | unusedAddress.pop(); 19 | unusedAddress.push(`${startAddress}`); 20 | const unusedV6Address = wgServerAddresses.IPv6.address.split('::'); 21 | return { 22 | IPv4: { 23 | address: unusedAddress.join('.'), 24 | range: 32 25 | }, 26 | IPv6: { 27 | address: unusedV6Address.join(':').concat('::', String(startAddress)), 28 | range: 128 29 | } 30 | } as Address; 31 | }; 32 | 33 | export const generateAllowedIps = async (excludeIps?: string[]) => { 34 | if (!excludeIps) { 35 | return '0.0.0.0/0,::/0'; 36 | } 37 | const { data: { data: result } } = await axios.get('https://hooks.arcemtene.com/wireguard/allowedips', { 38 | params: { 39 | allowed: '0.0.0.0/0, ::/0', 40 | disallowed: excludeIps.join(',') 41 | } 42 | }); 43 | result.pop(); 44 | result.push({ id: '::/1' }, { id: '8000::/1' }); 45 | return result.map((r: { id: string }) => r.id).join(','); 46 | } 47 | 48 | export const findMachinePublicIp = async () => { 49 | const { stdout } = await exec(`ip -4 addr | sed -ne 's|^.* inet \\([^/]*\\)/.* scope global.*$|\\1|p' | awk '{print $1}' | head -1`); 50 | return stdout.trim(); 51 | }; -------------------------------------------------------------------------------- /packages/client/src/components/NavigationMenu.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 59 | -------------------------------------------------------------------------------- /packages/server/src/service/stats.ts: -------------------------------------------------------------------------------- 1 | import cp from 'child_process' 2 | import util from 'util' 3 | import ping from 'ping' 4 | import parser from '../utils/parser' 5 | 6 | const destinations = [ 7 | { 8 | name: 'cloudflare', 9 | ip: '1.1.1.1', 10 | }, 11 | { 12 | name: 'google', 13 | ip: '8.8.8.8', 14 | }, 15 | ] 16 | 17 | const exec = util.promisify(cp.exec) 18 | 19 | const checkWireguard = async () => { 20 | try { 21 | const { stderr, stdout } = await exec('systemctl --no-page show wg-quick@wg0.service') 22 | const { status } = parser('systemctl status wg-quick@wg0.service', stdout) 23 | return status 24 | } catch (error) {} 25 | } 26 | 27 | const checkConnection = () => { 28 | return Promise.all( 29 | destinations.map(async ({ name, ip }) => { 30 | const { host, alive, time } = await ping.promise.probe(ip) 31 | return { 32 | name, 33 | host, 34 | alive, 35 | time, 36 | } 37 | }) 38 | ) 39 | } 40 | 41 | const checkSystemResources = async () => { 42 | try { 43 | const { stdout, stderr } = await exec('top -b -n 1') 44 | const { status } = parser('top -b -n 1', stdout) 45 | return status 46 | } catch (error) {} 47 | } 48 | 49 | /** 50 | * returns the systemctl status of wireguard service and ping status to cloudflare and google dns resolver endpoints 51 | */ 52 | export default async () => { 53 | // todo handle this error 54 | const [wireguardService, ping, resources] = await Promise.all([ 55 | checkWireguard(), 56 | checkConnection(), 57 | checkSystemResources(), 58 | ]) 59 | return { 60 | resources, 61 | ping: [ 62 | { 63 | name: 'wireguard', 64 | host: null, 65 | alive: wireguardService, 66 | message: wireguardService ? 'active' : 'inactive', 67 | time: null 68 | }, 69 | ...ping 70 | ], 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🐉 Wireguard Insights 2 | 3 | A self-hosted HTTP and web-based adapter for wireguard servers to manage peers and configuration. 4 | 5 | ## Features 6 | 7 | - 🔐 Secure authentication 8 | - 📊 Real-time Wireguard service status, Google and CloudFlare ping, server resources statistics 9 | - 💾 Create, read, update and delete clients 10 | - 🔎 search for and filter clients 11 | - 🔌 Real-time client connection status and statistics 12 | - 📄 Serving client configuration in file and QR code format 13 | - 🎒 Backup methods for Wireguard server configuration 14 | - ✅ Compatible with the widely used `wireguard-install.sh` script 15 | 16 | ## Story 17 | 18 | I was looking for a usable and preferably good-looking UI to manage my Wireguard peers and server. I've tested many repositories with quite high number of stars but none of them satisfied me because I was looking for: 19 | 20 | - Easy to deploy, least number of required environment variables 21 | - Compatibility with the widely used `wireguard-install.sh` script (so I don't lose my previously generated peers) 22 | - Almost no infrastructure dependencies such as databases 23 | - Have amazing client side filtering and search capabilities 24 | 25 | ## Installation 26 | 27 | You can try using this software on your local machine or deploy it else where and keep it running with PM2. 28 | 29 | ### Local machine 30 | 31 | 1. Clone this git repository 32 | 2. Install dependencies for both `client` and `server` packages using single `pnpm install` 33 | 3. Run the server running `pnpm server:start` 34 | 4. Run the client running `pnpm client:start` 35 | 36 | ### PM2 37 | 38 | ```bash 39 | # install node, npm and pm2 40 | npm i -g pm2 41 | 42 | # start both client and server 43 | pm2 start deployment/pm2/prod.config.js 44 | 45 | # start the client only 46 | pm2 start deployment/pm2/prod.config.js --only @wg-insights/client 47 | 48 | # start the server only 49 | pm2 start deployment/pm2/prod.config.js --only @wg-insights/server 50 | ``` 51 | 52 | ## Development 53 | 54 | 1. Clone this git repository 55 | 2. Install dependencies for `client` and `server` packages running `pnpm install` 56 | 3. Run the server running `pnpm server:dev` 57 | 4. Run the client running `pnpm client:dev` 58 | 59 | Client uses HMR in vite and the server uses nodemon for you to be able to iterate quickly. 60 | 61 | ## Environment variables 62 | -------------------------------------------------------------------------------- /packages/client/src/pages/ClientsView.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 72 | -------------------------------------------------------------------------------- /packages/client/src/components/Toolbar.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 75 | 76 | 83 | -------------------------------------------------------------------------------- /packages/server/src/utils/parser.ts: -------------------------------------------------------------------------------- 1 | export default (command: string, stdout: string) => { 2 | switch (command) { 3 | case 'systemctl status wg-quick@wg0.service': 4 | const [key, value] = stdout 5 | .split('\n') 6 | .find((line) => line.includes('ActiveState')) 7 | ?.split('ActiveState=') || ['ActiveState=', ''] 8 | return { status: value === 'active' } 9 | case 'wg show': 10 | const peers = stdout 11 | .replaceAll(' ', '') 12 | .split('\n\n') 13 | .map((i) => i.split('\n')) 14 | .filter((i) => i[0].includes('peer')) 15 | .map((i) => { 16 | const [publicKey, psk, endpoint, allowedIps, lastTlsHandshake, transfer] = i 17 | return { 18 | publicKey: !!publicKey ? publicKey.split('peer:')[1] : null, 19 | endpoint: !!endpoint ? endpoint.split('endpoint:')[1] : null, 20 | allowedIps: !!allowedIps ? allowedIps.split('allowedips:')[1] : null, 21 | lastTlsHandshake: !!lastTlsHandshake 22 | ? String(lastTlsHandshake.split('latesthandshake:')[1]).replace('ago', '') 23 | : null, 24 | transfer: !!transfer 25 | ? transfer 26 | .split('transfer:')[1] 27 | .split(',') 28 | .reduce( 29 | (acc, curr, i) => ({ 30 | ...acc, 31 | [i === 0 ? 'recieved' : 'sent']: String(curr) 32 | .replace('received', '') 33 | .replace('sent', ''), 34 | }), 35 | { recieved: null, sent: null } 36 | ) 37 | : { recieved: null, sent: null }, 38 | } 39 | }) 40 | return { peers } 41 | case 'cat /etc/wireguard/wg0.conf': 42 | const [_, ...rest] = stdout.split('\n\n').map((i) => i.split('\n')) 43 | const entriers = rest.map(([client, _, publicKey, psk, allowedIps]) => ({ 44 | client: !!client ? client.split('### Client ')[1] : null, 45 | publicKey: !!publicKey ? publicKey.split('PublicKey = ')[1] : null, 46 | allowedIps: !!allowedIps ? allowedIps.split('AllowedIPs = ')[1] : null, 47 | })) 48 | return { entriers } 49 | case 'top -b -n 1': 50 | const [topStr, tasksStr, cpuStr, memStr, swapStr] = stdout.split('\n').map((i) => i.replaceAll(' ', '')) 51 | const total = memStr.split(':')[1].split(',')[0].split('total')[0] 52 | const used = memStr.split(':')[1].split(',')[2].split('used')[0] 53 | return { 54 | status: [ 55 | { 56 | name: 'RAM', 57 | message: [used, '/', total].join(''), 58 | percent: ((parseInt(used)) / parseInt(total)) * 100 59 | }, 60 | { 61 | name: 'CPU', 62 | message: cpuStr.split(',')[1].split('sy')[0], 63 | precent: parseInt(cpuStr.split(',')[1].split('sy')[0]), 64 | } 65 | ] 66 | } 67 | case 'wg genkey': 68 | return { 69 | key: stdout.trim() 70 | }; 71 | case 'wg pubkey': 72 | return { 73 | key: stdout.trim() 74 | }; 75 | case 'wg genpsk': 76 | return { 77 | key: stdout.trim() 78 | }; 79 | default: 80 | return {} 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /packages/server/src/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import cors from 'cors' 3 | import * as jwt from 'jsonwebtoken' 4 | import cookieParser from 'cookie-parser' 5 | import bcrypt from 'bcrypt' 6 | 7 | import stats from './service/stats' 8 | import wireguard from './service/wireguard' 9 | import diagnose from './service/diagnose' 10 | import { ORM } from './utils/orm' 11 | import './utils/db' 12 | 13 | const app = express() 14 | const port = process.env.HTTP_SERVER_PORT || 5000 15 | const origin = process.env.CLIENT_ORIGIN || /(http|https):\/\/(.*):(5173|4173)/ 16 | const router = express.Router() 17 | export const ORMInstance = new ORM() 18 | 19 | app.use(cookieParser()) 20 | app.use(cors({ credentials: true, origin })) 21 | app.use(express.json()) 22 | 23 | // login route 24 | app.post('/api/v1/login', (req, res) => { 25 | try { 26 | const { username, password } = req.body 27 | const u = process.env.AUTH_USERNAME || 'admin' 28 | const p = process.env.AUTH_PASSWORD || 'admin' 29 | if (username !== u || password !== p) return res.sendStatus(401) 30 | const secret = process.env.JWT_SECRET || 'somesuperlongstringofchars' 31 | const hash = bcrypt.hashSync(u + ':' + p, 10) 32 | const token = jwt.sign({ 33 | hash 34 | }, secret, { expiresIn: '24h' }) 35 | return res.cookie('token', token, { httpOnly: true }).json({ 36 | success: token 37 | }) 38 | } catch (error) { 39 | console.error(error) 40 | } 41 | }) 42 | 43 | // auth middleware 44 | const auth = (req, res) => { 45 | try { 46 | const token = req.cookies.token 47 | const u = process.env.AUTH_USERNAME || 'admin' 48 | const p = process.env.AUTH_PASSWORD || 'admin' 49 | const { hash: jwtHash } = jwt.decode(token) as { hash: string } 50 | const isEqual = bcrypt.compareSync(u + ':' + p, jwtHash) 51 | return isEqual ? req.next() : res.sendStatus(401) 52 | } catch (error) { 53 | console.error(error) 54 | return res.sendStatus(401) 55 | } 56 | } 57 | 58 | // register auth middleware 59 | router.use(auth) 60 | 61 | // get all clients 62 | router.get('/clients', async (req, res) => { 63 | try { 64 | res.send({ 65 | data: await wireguard.getClients(), 66 | }) 67 | } catch (error) { 68 | console.error(error) 69 | } 70 | }) 71 | 72 | // create new client 73 | router.post('/clients', async (req, res) => { 74 | try { 75 | return res.send({ 76 | data: await wireguard.createClient({ 77 | name: req.body.name, 78 | excludeIps: req.body.excludeIps, 79 | endpoint: req.body.endpoint, 80 | endpointListenPort: req.body.endpointPort 81 | }), 82 | }) 83 | } catch (error) { 84 | console.error(error) 85 | } 86 | }) 87 | 88 | // edit an existing client 89 | router.patch('/clients/edit/', async (req, res) => { 90 | try { 91 | return res.send({ 92 | data: await wireguard.editClient(req.body.publicKey, req.body.fields), 93 | }) 94 | } catch (error) { 95 | console.error(error) 96 | } 97 | }) 98 | 99 | // revoke an existing client by its public key 100 | router.delete('/clients/:publicKey', async (req, res) => { 101 | try { 102 | return res.send({ 103 | data: await wireguard.revokeClient(req.params.publicKey), 104 | }) 105 | } catch (error) { 106 | console.error(error) 107 | } 108 | }) 109 | 110 | router.post('/clients/suspend', async (req, res) => { 111 | try { 112 | return res.send({ 113 | data: await wireguard.suspendClient(req.body.publicKey), 114 | }) 115 | } catch (error) { 116 | console.error(error) 117 | } 118 | }); 119 | 120 | router.post('/clients/unsuspend/', async (req, res) => { 121 | try { 122 | return res.send({ 123 | data: await wireguard.unsuspendClient(req.body.publicKey, req.body.resetRemaining), 124 | }) 125 | } catch (error) { 126 | console.error(error) 127 | } 128 | }); 129 | 130 | router.get('/health', (req, res) => res.sendStatus(200)) 131 | 132 | router.get('/stats', async (req, res) => { 133 | try { 134 | res.send({ 135 | data: await stats(), 136 | }) 137 | } catch (error) { 138 | console.error(error) 139 | } 140 | }) 141 | 142 | router.get('/diagnose', async (req, res) => { 143 | try { 144 | res.send({ 145 | data: await diagnose.run() 146 | }) 147 | } catch (error) { 148 | console.error(error) 149 | } 150 | }) 151 | 152 | app.use('/api/v1/', router) 153 | 154 | app.listen(port, async () => { 155 | await ORMInstance.loadInterfaces() 156 | console.log(`Example app listening on port ${port}`) 157 | }) 158 | -------------------------------------------------------------------------------- /packages/server/src/service/wireguard.ts: -------------------------------------------------------------------------------- 1 | import cp from 'child_process' 2 | import util from 'util' 3 | import ping from 'ping' 4 | import parser from '../utils/parser' 5 | import { ORMInstance } from '../index' 6 | import { findMachinePublicIp, findUnusedIp, generateAllowedIps } from '../utils/ip' 7 | 8 | const exec = util.promisify(cp.exec) 9 | 10 | export default { 11 | /** 12 | * get a list of all client objects 13 | */ 14 | getClients: async () => { 15 | const [wgShow] = await Promise.all([exec("wg show")]) 16 | const { peers } = parser('wg show', wgShow.stdout) 17 | const { peers: entries } = ORMInstance.selectInterface('wg0') 18 | const entryPeerJoin = peers?.map(peer => { 19 | const foundClient = entries?.find(entry => entry.publicKey === peer.publicKey) 20 | if (!foundClient) return null 21 | return { 22 | ...peer, 23 | ...foundClient 24 | } 25 | }).filter(Boolean) || [] 26 | const pingedList = entryPeerJoin.map(async (client) => { 27 | if(!client) return null 28 | const [ destinationIp ] = client.allowedIps?.split('/') || '/' 29 | const { alive } = await ping.promise.probe(destinationIp, { deadline: 3, min_reply: 1 }) 30 | return { ...client, status: alive } 31 | }).filter(Boolean) 32 | 33 | return await Promise.all(pingedList) 34 | }, 35 | /** 36 | * get a certain client by its public key string 37 | * @param {any} pk:string 38 | */ 39 | getClientByPK: async (pk: string) => { 40 | return {} 41 | }, 42 | /** 43 | * create a new client 44 | * @param {any} deps:any 45 | */ 46 | createClient: async (deps: { 47 | name: string, 48 | excludeIps?: string[], 49 | endpoint?: string, 50 | endpointListenPort?: string 51 | }) => { 52 | // create private key 53 | const generatePrivateKeyCommand = 'wg genkey'; 54 | const [wgGenkey] = await Promise.all([exec(generatePrivateKeyCommand)]); 55 | const { key: clientPrivateKey} = parser(generatePrivateKeyCommand, wgGenkey.stdout); 56 | // create publickey 57 | const generatePublicKeyCommand = `echo ${clientPrivateKey} | wg pubkey`; 58 | const [wgGenPubKey] = await Promise.all([exec(generatePublicKeyCommand)]); 59 | const { key: clientPublicKey } = parser('wg pubkey', wgGenPubKey.stdout); 60 | // create preshared key 61 | const generatePresharedKey = 'wg genpsk'; 62 | const [wgGenPsk] = await Promise.all([exec(generatePresharedKey)]); 63 | const { key: clientPresharedKey } = parser(generatePresharedKey, wgGenPsk.stdout); 64 | // find unused ip for new client 65 | const { peers, iface } = ORMInstance.selectInterface('wg0') 66 | const unusedIp = findUnusedIp( 67 | iface.Address, 68 | peers 69 | ); 70 | const clientAddress = `${unusedIp.IPv4.address}/${unusedIp.IPv4.range},${unusedIp.IPv6.address}/${unusedIp.IPv6.range}`; 71 | const allowedIps = await generateAllowedIps(deps.excludeIps); 72 | const machinePublicIp = await findMachinePublicIp(); 73 | // Update server conf 74 | console.log(peers, iface); 75 | ORMInstance.selectInterface('wg0').peers.push({ 76 | client: deps.name, 77 | publicKey: clientPublicKey, 78 | allowedIps: clientAddress, 79 | presharedKey: clientPresharedKey 80 | }); 81 | await ORMInstance.selectInterface('wg0').save() 82 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' }) 83 | // create server public key 84 | const generateServerPublicKeyCommand = `echo ${iface.PrivateKey} | wg pubkey`; 85 | const [wgGenServerPubKey] = await Promise.all([exec(generateServerPublicKeyCommand)]); 86 | const { key: serverPublicKey } = parser('wg pubkey', wgGenServerPubKey.stdout); 87 | return { 88 | rawContent: `[Interface] 89 | PrivateKey = ${clientPrivateKey} 90 | Address = ${clientAddress} 91 | DNS = 1.1.1.1,8.8.8.8 92 | 93 | [Peer] 94 | PublicKey = ${serverPublicKey} 95 | PresharedKey = ${clientPresharedKey} 96 | Endpoint = ${deps.endpoint || machinePublicIp}:${deps.endpointListenPort || iface.ListenPort} 97 | AllowedIPs = ${allowedIps} 98 | ` 99 | }; 100 | }, 101 | /** 102 | * modify an existing client fetched by its 103 | * @param {any} deps:any 104 | */ 105 | editClient: async (pk: string, payload: { 106 | name?: string 107 | }) => { 108 | const peerIndex = ORMInstance.selectInterface('wg0').peers.findIndex(p => p.publicKey === pk); 109 | ORMInstance.selectInterface('wg0').peers[peerIndex].client = payload.name; 110 | ORMInstance.selectInterface('wg0').save(); 111 | return ORMInstance.selectInterface('wg0').peers[peerIndex]; 112 | }, 113 | /** 114 | * revoke an existing client fetched by its public key 115 | */ 116 | revokeClient: async (pk: string) => { 117 | ORMInstance.selectInterface('wg0').peers = ORMInstance.selectInterface('wg0').peers.filter(p => p.publicKey !== pk); 118 | console.log(ORMInstance.selectInterface('wg0').peers, pk); 119 | await ORMInstance.selectInterface('wg0').save(); 120 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' }); 121 | return { 122 | success: true, 123 | deletedUserKey: pk 124 | }; 125 | }, 126 | suspendClient: async (pk: string) => { 127 | const peer = ORMInstance.selectInterface('wg0').peers.find(p => p.publicKey === pk); 128 | peer.isSuspended = true; 129 | await ORMInstance.selectInterface('wg0').save(); 130 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' }); 131 | return { 132 | success: true, 133 | suspendedPublicKey: pk 134 | }; 135 | }, 136 | unsuspendClient: async (pk: string, shouldResetRemaining: boolean) => { 137 | const peer = ORMInstance.selectInterface('wg0').peers.find(p => p.publicKey === pk); 138 | peer.isSuspended = false; 139 | await ORMInstance.selectInterface('wg0').save(); 140 | if (shouldResetRemaining) { 141 | await ORMInstance.resetRemainingTraffic(pk); 142 | } 143 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' }); 144 | return { 145 | success: true, 146 | unsuspendedPublicKey: pk 147 | }; 148 | }, 149 | } 150 | -------------------------------------------------------------------------------- /packages/server/src/utils/orm.ts: -------------------------------------------------------------------------------- 1 | import cp from 'child_process'; 2 | import util from 'util'; 3 | const exec = util.promisify(cp.exec) 4 | import fs from 'fs/promises'; 5 | import { db, run, finalize, all } from './db'; 6 | import { DataUnit } from 'digital-unit-converter'; 7 | import parser from './parser'; 8 | 9 | const WG_CONFIG_FILE_PATH = '/etc/wireguard/'; 10 | export type Address = { 11 | IPv4: { 12 | address: string, 13 | range: number 14 | }, 15 | IPv6: { 16 | address: string, 17 | range: number 18 | } 19 | } 20 | type Interface = { 21 | Address: Address; 22 | ListenPort: number; 23 | MTU: number; 24 | PostUp: string; 25 | PostDown: string; 26 | PrivateKey: string; 27 | }; 28 | 29 | export type Peer = { 30 | client: string; 31 | publicKey: string; 32 | allowedIps: string; 33 | presharedKey: string; 34 | isSuspended?: boolean; 35 | }; 36 | 37 | type ConfigType = { 38 | iface: Interface; 39 | interfaceName: string; 40 | peers: Peer[]; 41 | save: () => Promise 42 | }; 43 | 44 | const deserializer = (fileContent: string) => { 45 | const [rawServerInterface, ...rawPeers] = fileContent.split('\n\n').map((i) => i.split('\n')) 46 | 47 | const peers = rawPeers.map(([client, _, publicKey, psk, allowedIps]) => ({ 48 | client: !!client ? client.split('### Client ')[1] : null, 49 | publicKey: !!publicKey ? publicKey.split('PublicKey = ')[1] : null, 50 | allowedIps: !!allowedIps ? allowedIps.split('AllowedIPs = ')[1] : null, 51 | presharedKey: !!psk ? psk.split('PresharedKey = ')[1] : null, 52 | isSuspended: !!publicKey ? publicKey[0] === '#' : false 53 | })) as Peer[]; 54 | const serverInterface = rawServerInterface.reduce((si, l) => { 55 | const [key, value] = l.split(' =').map(s => s.trim()); 56 | switch (key.toLowerCase()) { 57 | case 'address': { 58 | si[key] = value.split(',').reduce((addr, ipWithRange, i) => { 59 | const [ip, range] = ipWithRange.split('/'); 60 | if (i === 0) { 61 | addr['IPv4'] = { 62 | address: ip, 63 | range: Number(range), 64 | }; 65 | } else { 66 | addr['IPv6'] = { 67 | address: ip, 68 | range: Number(range), 69 | }; 70 | } 71 | return addr; 72 | }, {}) 73 | return si; 74 | } 75 | case 'listenport': { 76 | si[key] = Number(value); 77 | return si; 78 | } 79 | case 'mtu': { 80 | si[key] = Number(value); 81 | return si; 82 | } 83 | case 'postup': { 84 | si[key] = value; 85 | return si; 86 | } 87 | case 'postdown': { 88 | si[key] = value; 89 | return si; 90 | } 91 | case 'privatekey': { 92 | si[key] = value; 93 | return si; 94 | } 95 | default: 96 | return si; 97 | } 98 | }, {} as Interface); 99 | return { 100 | iface: serverInterface, 101 | peers: peers.filter(p => !!p.client && !!p.publicKey) 102 | } as Config 103 | }; 104 | 105 | const serializer = (config: Config) => { 106 | const serializedPeers = config.peers.reduce((r, p) => { 107 | return `${r} 108 | ### Client ${p.client} 109 | ${p.isSuspended ? '#' : ''}[Peer] 110 | ${p.isSuspended ? '#' : ''}PublicKey = ${p.publicKey} 111 | ${p.isSuspended ? '#' : ''}PresharedKey = ${p.presharedKey} 112 | ${p.isSuspended ? '#' : ''}AllowedIPs = ${p.allowedIps} 113 | `; 114 | }, ''); 115 | const ipv4AddressWithRange = `${config.iface.Address.IPv4.address}/${config.iface.Address.IPv4.range}`; 116 | const ipv6AddressWithRange = `${config.iface.Address.IPv6.address}/${config.iface.Address.IPv6.range}`; 117 | const serializedConfig = `[Interface] 118 | Address = ${ipv4AddressWithRange},${ipv6AddressWithRange} 119 | ListenPort = ${config.iface.ListenPort} 120 | MTU = ${config.iface.MTU} 121 | PrivateKey = ${config.iface.PrivateKey} 122 | PostUp = ${config.iface.PostUp} 123 | PostDown = ${config.iface.PostDown} 124 | ${serializedPeers} 125 | `; 126 | return serializedConfig; 127 | }; 128 | 129 | class Config implements ConfigType { 130 | peers: Peer[]; 131 | iface: Interface; 132 | interfaceName: string; 133 | constructor(rawContent: string, interfaceName: string) { 134 | const res = deserializer(rawContent) 135 | this.interfaceName = interfaceName; 136 | this.iface = res.iface; 137 | this.peers = res.peers; 138 | } 139 | async save() { 140 | const rawContent = serializer(this); 141 | await fs.writeFile(WG_CONFIG_FILE_PATH + this.interfaceName + '.conf', rawContent); 142 | } 143 | toJSON() { 144 | const iface = { 145 | ...this.iface 146 | }; 147 | delete iface.PrivateKey; 148 | const peers = this.peers.map(p => { 149 | delete p.presharedKey; 150 | return p; 151 | }); 152 | return { 153 | interface: iface, 154 | peers 155 | }; 156 | } 157 | } 158 | 159 | export class ORM { 160 | interfaces: { [key: string]: Config }; 161 | selectInterface(name: string) { 162 | return this.interfaces[name]; 163 | } 164 | async upsertPeers(iface: string, pubkeys: string[]) { 165 | try { 166 | const stmt = db.prepare("INSERT INTO peers VALUES (?, ?, ?, ?, ?)"); 167 | for (const pubkey of pubkeys) { 168 | await run(stmt, [pubkey, 0, 0, iface, 10]); 169 | } 170 | await finalize(stmt); 171 | } catch (error) { 172 | // console.log(error); 173 | } 174 | } 175 | async resetRemainingTraffic(pubkey: string) { 176 | const statement = db.prepare('UPDATE peers SET remaining = ? WHERE public_key = ?'); 177 | await run(statement, [10, pubkey]); 178 | } 179 | async updateTrafficUsage(pubkey: string, sent: string, received: string) { 180 | const dataUnitMap = { 181 | 'B': DataUnit.BYTE, 182 | 'KiB': DataUnit.KIBIBYTE, 183 | 'MiB': DataUnit.MEBIBYTE, 184 | 'GiB': DataUnit.GIBIBYTE 185 | }; 186 | const sentUnit = sent.slice(-3); 187 | const sentAmount = sent.slice(0, -3 + sent.length); 188 | const receivedUnit = received.slice(-3); 189 | const receivedAmount = received.slice(0, -3 + received.length); 190 | const [firstPeer] = await all('SELECT * FROM peers WHERE public_key = ' + `'${pubkey}'`); 191 | const sentGbs = DataUnit.GIGABYTE.convert(parseFloat(sentAmount), dataUnitMap[sentUnit]); 192 | const receivedGbs = DataUnit.GIGABYTE.convert(parseFloat(receivedAmount), dataUnitMap[receivedUnit]); 193 | const diffSent = sentGbs - firstPeer.sent; 194 | const diffReceived = receivedGbs - firstPeer.received; 195 | const statement = db.prepare('UPDATE peers SET sent = ?, received = ?, remaining = ? WHERE public_key = ?'); 196 | const newRemainingAmount = firstPeer.remaining - (diffSent + diffReceived); 197 | if (newRemainingAmount === 0 || newRemainingAmount < 0) { 198 | const peer = this.selectInterface('wg0').peers.find(p => p.publicKey === pubkey); 199 | peer.isSuspended = true; 200 | await this.selectInterface('wg0').save(); 201 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' }); 202 | } 203 | await run(statement, [sentGbs, receivedGbs, newRemainingAmount, pubkey]); 204 | } 205 | async loadInterfaces() { 206 | const readInterfaceConfig = async () => { 207 | const configFiles = (await fs.readdir(WG_CONFIG_FILE_PATH)).filter(f => f.includes('.conf')); 208 | const results = await Promise.all(configFiles.map(async (cf) => { 209 | const configFileContents = await fs.readFile(WG_CONFIG_FILE_PATH + cf, { 'encoding': 'utf-8' }); 210 | const interfaceName = cf.split('.conf')[0]; 211 | return { 212 | config: new Config(configFileContents, interfaceName), 213 | interfaceName 214 | } 215 | })); 216 | this.interfaces = results.reduce((acc, { config, interfaceName }) => ({ 217 | ...acc, 218 | [interfaceName]: config 219 | }), {}); 220 | const promises = results.map(async (r) => { 221 | await this.upsertPeers(r.interfaceName, r.config.peers.map(p => p.publicKey)) 222 | }); 223 | await Promise.all(promises); 224 | }; 225 | const upsertPeersInterval = setInterval(readInterfaceConfig, 1000 * 60 * 5); 226 | await readInterfaceConfig(); 227 | const updateTrafficUsageInterval = setInterval(async () => { 228 | const [wgShow] = await Promise.all([exec("wg show")]) 229 | const { peers } = parser('wg show', wgShow.stdout) 230 | const { peers: entries } = this.selectInterface('wg0') 231 | const promises = peers?.map(async (peer) => { 232 | const foundClient = entries?.find(entry => entry.publicKey === peer.publicKey) 233 | if (!foundClient) return null 234 | await this.updateTrafficUsage(peer.publicKey, peer.transfer.sent, peer.transfer.recieved); 235 | }); 236 | await Promise.all(promises); 237 | }, 1000 * 60 * 5); 238 | } 239 | }; -------------------------------------------------------------------------------- /packages/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 | 27 | /* Modules */ 28 | "module": "CommonJS", /* Specify what module code is generated. */ 29 | "rootDir": "./src/", /* Specify the root folder within your source files. */ 30 | "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 38 | // "resolveJsonModule": true, /* Enable importing .json files. */ 39 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 40 | 41 | /* JavaScript Support */ 42 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 43 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 44 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 45 | 46 | /* Emit */ 47 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 48 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 49 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 50 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 51 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 52 | "outDir": "./dist/", /* Specify an output folder for all emitted files. */ 53 | // "removeComments": true, /* Disable emitting comments. */ 54 | // "noEmit": true, /* Disable emitting files from a compilation. */ 55 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 56 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 57 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 58 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 59 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 60 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 61 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 62 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 63 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 64 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 65 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 66 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 67 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 68 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 69 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 70 | 71 | /* Interop Constraints */ 72 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 73 | "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 74 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ 75 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 76 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 77 | 78 | /* Type Checking */ 79 | "strict": false, /* Enable all strict type-checking options. */ 80 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 81 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 82 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 83 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 84 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 85 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 86 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 87 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 88 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 89 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 90 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 91 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 92 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 93 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 94 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 95 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 96 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 97 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 98 | 99 | /* Completeness */ 100 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 101 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /packages/client/src/components/ClientsTable.vue: -------------------------------------------------------------------------------- 1 | 76 | 77 | 314 | 315 | 320 | -------------------------------------------------------------------------------- /packages/client/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@vicons/fa': ^0.12.0 5 | '@vicons/fluent': ^0.12.0 6 | '@vicons/ionicons5': ^0.12.0 7 | '@vitejs/plugin-vue': ^3.1.0 8 | '@vueuse/core': ^9.3.0 9 | '@vueuse/integrations': ^9.3.0 10 | autoprefixer: ^10.4.12 11 | axios: ^1.1.2 12 | fuse.js: ^6.6.2 13 | naive-ui: ^2.33.3 14 | postcss: ^8.4.17 15 | tailwindcss: ^3.1.8 16 | typescript: ^4.6.4 17 | vfonts: ^0.0.3 18 | vite: ^3.1.0 19 | vue: ^3.2.37 20 | vue-router: '4' 21 | vue-tsc: ^0.40.4 22 | 23 | dependencies: 24 | '@vicons/fluent': 0.12.0 25 | '@vicons/ionicons5': 0.12.0 26 | '@vueuse/core': 9.3.0_vue@3.2.40 27 | '@vueuse/integrations': 9.3.0_yblxu6vzosngh3prdbtjbo3wse 28 | axios: 1.1.2 29 | fuse.js: 6.6.2 30 | naive-ui: 2.33.3_vue@3.2.40 31 | vfonts: 0.0.3 32 | vite: 3.1.4 33 | vue: 3.2.40 34 | vue-router: 4.1.5_vue@3.2.40 35 | 36 | devDependencies: 37 | '@vicons/fa': 0.12.0 38 | '@vitejs/plugin-vue': 3.1.0_vite@3.1.4+vue@3.2.40 39 | autoprefixer: 10.4.12_postcss@8.4.17 40 | postcss: 8.4.17 41 | tailwindcss: 3.1.8 42 | typescript: 4.8.4 43 | vue-tsc: 0.40.13_typescript@4.8.4 44 | 45 | packages: 46 | 47 | /@babel/helper-string-parser/7.18.10: 48 | resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} 49 | engines: {node: '>=6.9.0'} 50 | 51 | /@babel/helper-validator-identifier/7.19.1: 52 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 53 | engines: {node: '>=6.9.0'} 54 | 55 | /@babel/parser/7.19.3: 56 | resolution: {integrity: sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==} 57 | engines: {node: '>=6.0.0'} 58 | hasBin: true 59 | dependencies: 60 | '@babel/types': 7.19.3 61 | 62 | /@babel/types/7.19.3: 63 | resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} 64 | engines: {node: '>=6.9.0'} 65 | dependencies: 66 | '@babel/helper-string-parser': 7.18.10 67 | '@babel/helper-validator-identifier': 7.19.1 68 | to-fast-properties: 2.0.0 69 | 70 | /@css-render/plugin-bem/0.15.11_css-render@0.15.11: 71 | resolution: {integrity: sha512-Bn8qadYPIz5DhZ4obTGHOJzeziQH6kY0+Fk5AEvwuuy378SLwwvXuuoechLjBHcgKkPCM03Oo4dDSGP/6NMdyw==} 72 | peerDependencies: 73 | css-render: ~0.15.11 74 | dependencies: 75 | css-render: 0.15.11 76 | dev: false 77 | 78 | /@css-render/vue3-ssr/0.15.11_vue@3.2.40: 79 | resolution: {integrity: sha512-n+SuqLPbY30FUTM8slX75OaEG+c8XlTOFrAklekX2XQGvBbz9XdBE6hTEgGlV5kPcTMqTJeCG7Vzhs9/29VC7w==} 80 | peerDependencies: 81 | vue: ^3.0.11 82 | dependencies: 83 | vue: 3.2.40 84 | dev: false 85 | 86 | /@emotion/hash/0.8.0: 87 | resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} 88 | dev: false 89 | 90 | /@esbuild/android-arm/0.15.10: 91 | resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==} 92 | engines: {node: '>=12'} 93 | cpu: [arm] 94 | os: [android] 95 | requiresBuild: true 96 | optional: true 97 | 98 | /@esbuild/linux-loong64/0.15.10: 99 | resolution: {integrity: sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==} 100 | engines: {node: '>=12'} 101 | cpu: [loong64] 102 | os: [linux] 103 | requiresBuild: true 104 | optional: true 105 | 106 | /@juggle/resize-observer/3.4.0: 107 | resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} 108 | dev: false 109 | 110 | /@nodelib/fs.scandir/2.1.5: 111 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 112 | engines: {node: '>= 8'} 113 | dependencies: 114 | '@nodelib/fs.stat': 2.0.5 115 | run-parallel: 1.2.0 116 | dev: true 117 | 118 | /@nodelib/fs.stat/2.0.5: 119 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 120 | engines: {node: '>= 8'} 121 | dev: true 122 | 123 | /@nodelib/fs.walk/1.2.8: 124 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 125 | engines: {node: '>= 8'} 126 | dependencies: 127 | '@nodelib/fs.scandir': 2.1.5 128 | fastq: 1.13.0 129 | dev: true 130 | 131 | /@types/lodash-es/4.17.6: 132 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} 133 | dependencies: 134 | '@types/lodash': 4.14.186 135 | dev: false 136 | 137 | /@types/lodash/4.14.186: 138 | resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==} 139 | dev: false 140 | 141 | /@types/node/17.0.45: 142 | resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} 143 | dev: false 144 | 145 | /@types/web-bluetooth/0.0.15: 146 | resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} 147 | dev: false 148 | 149 | /@vicons/fa/0.12.0: 150 | resolution: {integrity: sha512-g2PIeJLsTHUjt6bK63LxqC0uYQB7iu+xViJOxvp1s8b9/akpXVPVWjDTTsP980/0KYyMMe4U7F/aUo7wY+MsXA==} 151 | dev: true 152 | 153 | /@vicons/fluent/0.12.0: 154 | resolution: {integrity: sha512-ATCiqPuiJ6RI5GBlD3BIpZ9Xw4MsCA4RpI5oR6MCti4quS4mX1Gp6N74FCzw7lgOj+80rV4HMKhZTVInwimpVQ==} 155 | dev: false 156 | 157 | /@vicons/ionicons5/0.12.0: 158 | resolution: {integrity: sha512-Iy1EUVRpX0WWxeu1VIReR1zsZLMc4fqpt223czR+Rpnrwu7pt46nbnC2ycO7ItI/uqDLJxnbcMC7FujKs9IfFA==} 159 | dev: false 160 | 161 | /@vitejs/plugin-vue/3.1.0_vite@3.1.4+vue@3.2.40: 162 | resolution: {integrity: sha512-fmxtHPjSOEIRg6vHYDaem+97iwCUg/uSIaTzp98lhELt2ISOQuDo2hbkBdXod0g15IhfPMQmAxh4heUks2zvDA==} 163 | engines: {node: ^14.18.0 || >=16.0.0} 164 | peerDependencies: 165 | vite: ^3.0.0 166 | vue: ^3.2.25 167 | dependencies: 168 | vite: 3.1.4 169 | vue: 3.2.40 170 | dev: true 171 | 172 | /@volar/code-gen/0.40.13: 173 | resolution: {integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==} 174 | dependencies: 175 | '@volar/source-map': 0.40.13 176 | dev: true 177 | 178 | /@volar/source-map/0.40.13: 179 | resolution: {integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==} 180 | dependencies: 181 | '@vue/reactivity': 3.2.38 182 | dev: true 183 | 184 | /@volar/typescript-faster/0.40.13: 185 | resolution: {integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==} 186 | dependencies: 187 | semver: 7.3.7 188 | dev: true 189 | 190 | /@volar/vue-language-core/0.40.13: 191 | resolution: {integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==} 192 | dependencies: 193 | '@volar/code-gen': 0.40.13 194 | '@volar/source-map': 0.40.13 195 | '@vue/compiler-core': 3.2.40 196 | '@vue/compiler-dom': 3.2.40 197 | '@vue/compiler-sfc': 3.2.40 198 | '@vue/reactivity': 3.2.40 199 | '@vue/shared': 3.2.40 200 | dev: true 201 | 202 | /@volar/vue-typescript/0.40.13: 203 | resolution: {integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==} 204 | dependencies: 205 | '@volar/code-gen': 0.40.13 206 | '@volar/typescript-faster': 0.40.13 207 | '@volar/vue-language-core': 0.40.13 208 | dev: true 209 | 210 | /@vue/compiler-core/3.2.40: 211 | resolution: {integrity: sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA==} 212 | dependencies: 213 | '@babel/parser': 7.19.3 214 | '@vue/shared': 3.2.40 215 | estree-walker: 2.0.2 216 | source-map: 0.6.1 217 | 218 | /@vue/compiler-dom/3.2.40: 219 | resolution: {integrity: sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw==} 220 | dependencies: 221 | '@vue/compiler-core': 3.2.40 222 | '@vue/shared': 3.2.40 223 | 224 | /@vue/compiler-sfc/3.2.40: 225 | resolution: {integrity: sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg==} 226 | dependencies: 227 | '@babel/parser': 7.19.3 228 | '@vue/compiler-core': 3.2.40 229 | '@vue/compiler-dom': 3.2.40 230 | '@vue/compiler-ssr': 3.2.40 231 | '@vue/reactivity-transform': 3.2.40 232 | '@vue/shared': 3.2.40 233 | estree-walker: 2.0.2 234 | magic-string: 0.25.9 235 | postcss: 8.4.17 236 | source-map: 0.6.1 237 | 238 | /@vue/compiler-ssr/3.2.40: 239 | resolution: {integrity: sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ==} 240 | dependencies: 241 | '@vue/compiler-dom': 3.2.40 242 | '@vue/shared': 3.2.40 243 | 244 | /@vue/devtools-api/6.4.2: 245 | resolution: {integrity: sha512-6hNZ23h1M2Llky+SIAmVhL7s6BjLtZBCzjIz9iRSBUsysjE7kC39ulW0dH4o/eZtycmSt4qEr6RDVGTIuWu+ow==} 246 | dev: false 247 | 248 | /@vue/reactivity-transform/3.2.40: 249 | resolution: {integrity: sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw==} 250 | dependencies: 251 | '@babel/parser': 7.19.3 252 | '@vue/compiler-core': 3.2.40 253 | '@vue/shared': 3.2.40 254 | estree-walker: 2.0.2 255 | magic-string: 0.25.9 256 | 257 | /@vue/reactivity/3.2.38: 258 | resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} 259 | dependencies: 260 | '@vue/shared': 3.2.38 261 | dev: true 262 | 263 | /@vue/reactivity/3.2.40: 264 | resolution: {integrity: sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==} 265 | dependencies: 266 | '@vue/shared': 3.2.40 267 | 268 | /@vue/runtime-core/3.2.40: 269 | resolution: {integrity: sha512-U1+rWf0H8xK8aBUZhnrN97yoZfHbjgw/bGUzfgKPJl69/mXDuSg8CbdBYBn6VVQdR947vWneQBFzdhasyzMUKg==} 270 | dependencies: 271 | '@vue/reactivity': 3.2.40 272 | '@vue/shared': 3.2.40 273 | 274 | /@vue/runtime-dom/3.2.40: 275 | resolution: {integrity: sha512-AO2HMQ+0s2+MCec8hXAhxMgWhFhOPJ/CyRXnmTJ6XIOnJFLrH5Iq3TNwvVcODGR295jy77I6dWPj+wvFoSYaww==} 276 | dependencies: 277 | '@vue/runtime-core': 3.2.40 278 | '@vue/shared': 3.2.40 279 | csstype: 2.6.21 280 | 281 | /@vue/server-renderer/3.2.40_vue@3.2.40: 282 | resolution: {integrity: sha512-gtUcpRwrXOJPJ4qyBpU3EyxQa4EkV8I4f8VrDePcGCPe4O/hd0BPS7v9OgjIQob6Ap8VDz9G+mGTKazE45/95w==} 283 | peerDependencies: 284 | vue: 3.2.40 285 | dependencies: 286 | '@vue/compiler-ssr': 3.2.40 287 | '@vue/shared': 3.2.40 288 | vue: 3.2.40 289 | 290 | /@vue/shared/3.2.38: 291 | resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} 292 | dev: true 293 | 294 | /@vue/shared/3.2.40: 295 | resolution: {integrity: sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==} 296 | 297 | /@vueuse/core/9.3.0_vue@3.2.40: 298 | resolution: {integrity: sha512-64Rna8IQDWpdrJxgitDg7yv1yTp41ZmvV8zlLEylK4QQLWAhz1OFGZDPZ8bU4lwcGgbEJ2sGi2jrdNh4LttUSQ==} 299 | dependencies: 300 | '@types/web-bluetooth': 0.0.15 301 | '@vueuse/metadata': 9.3.0 302 | '@vueuse/shared': 9.3.0_vue@3.2.40 303 | vue-demi: 0.13.11_vue@3.2.40 304 | transitivePeerDependencies: 305 | - '@vue/composition-api' 306 | - vue 307 | dev: false 308 | 309 | /@vueuse/integrations/9.3.0_yblxu6vzosngh3prdbtjbo3wse: 310 | resolution: {integrity: sha512-KkJpC97VioZUpSw7rvgnqoLgTztLlLLGdYp6WQKn69cJiItsJVSRZrmI+X9YVxPBzuLvRymYZfp0RMyISVFHTw==} 311 | peerDependencies: 312 | async-validator: '*' 313 | axios: '*' 314 | change-case: '*' 315 | drauu: '*' 316 | focus-trap: '*' 317 | fuse.js: '*' 318 | jwt-decode: '*' 319 | nprogress: '*' 320 | qrcode: '*' 321 | universal-cookie: '*' 322 | peerDependenciesMeta: 323 | async-validator: 324 | optional: true 325 | axios: 326 | optional: true 327 | change-case: 328 | optional: true 329 | drauu: 330 | optional: true 331 | focus-trap: 332 | optional: true 333 | fuse.js: 334 | optional: true 335 | jwt-decode: 336 | optional: true 337 | nprogress: 338 | optional: true 339 | qrcode: 340 | optional: true 341 | universal-cookie: 342 | optional: true 343 | dependencies: 344 | '@vueuse/core': 9.3.0_vue@3.2.40 345 | '@vueuse/shared': 9.3.0_vue@3.2.40 346 | axios: 1.1.2 347 | fuse.js: 6.6.2 348 | vue-demi: 0.13.11_vue@3.2.40 349 | transitivePeerDependencies: 350 | - '@vue/composition-api' 351 | - vue 352 | dev: false 353 | 354 | /@vueuse/metadata/9.3.0: 355 | resolution: {integrity: sha512-GnnfjbzIPJIh9ngL9s9oGU1+Hx/h5/KFqTfJykzh/1xjaHkedV9g0MASpdmPZIP+ynNhKAcEfA6g5i8KXwtoMA==} 356 | dev: false 357 | 358 | /@vueuse/shared/9.3.0_vue@3.2.40: 359 | resolution: {integrity: sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==} 360 | dependencies: 361 | vue-demi: 0.13.11_vue@3.2.40 362 | transitivePeerDependencies: 363 | - '@vue/composition-api' 364 | - vue 365 | dev: false 366 | 367 | /acorn-node/1.8.2: 368 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 369 | dependencies: 370 | acorn: 7.4.1 371 | acorn-walk: 7.2.0 372 | xtend: 4.0.2 373 | dev: true 374 | 375 | /acorn-walk/7.2.0: 376 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 377 | engines: {node: '>=0.4.0'} 378 | dev: true 379 | 380 | /acorn/7.4.1: 381 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 382 | engines: {node: '>=0.4.0'} 383 | hasBin: true 384 | dev: true 385 | 386 | /anymatch/3.1.2: 387 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 388 | engines: {node: '>= 8'} 389 | dependencies: 390 | normalize-path: 3.0.0 391 | picomatch: 2.3.1 392 | dev: true 393 | 394 | /arg/5.0.2: 395 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 396 | dev: true 397 | 398 | /async-validator/4.2.5: 399 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} 400 | dev: false 401 | 402 | /asynckit/0.4.0: 403 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 404 | dev: false 405 | 406 | /autoprefixer/10.4.12_postcss@8.4.17: 407 | resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} 408 | engines: {node: ^10 || ^12 || >=14} 409 | hasBin: true 410 | peerDependencies: 411 | postcss: ^8.1.0 412 | dependencies: 413 | browserslist: 4.21.4 414 | caniuse-lite: 1.0.30001415 415 | fraction.js: 4.2.0 416 | normalize-range: 0.1.2 417 | picocolors: 1.0.0 418 | postcss: 8.4.17 419 | postcss-value-parser: 4.2.0 420 | dev: true 421 | 422 | /axios/1.1.2: 423 | resolution: {integrity: sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA==} 424 | dependencies: 425 | follow-redirects: 1.15.2 426 | form-data: 4.0.0 427 | proxy-from-env: 1.1.0 428 | transitivePeerDependencies: 429 | - debug 430 | dev: false 431 | 432 | /binary-extensions/2.2.0: 433 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 434 | engines: {node: '>=8'} 435 | dev: true 436 | 437 | /braces/3.0.2: 438 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 439 | engines: {node: '>=8'} 440 | dependencies: 441 | fill-range: 7.0.1 442 | dev: true 443 | 444 | /browserslist/4.21.4: 445 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 446 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 447 | hasBin: true 448 | dependencies: 449 | caniuse-lite: 1.0.30001415 450 | electron-to-chromium: 1.4.271 451 | node-releases: 2.0.6 452 | update-browserslist-db: 1.0.9_browserslist@4.21.4 453 | dev: true 454 | 455 | /camelcase-css/2.0.1: 456 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 457 | engines: {node: '>= 6'} 458 | dev: true 459 | 460 | /caniuse-lite/1.0.30001415: 461 | resolution: {integrity: sha512-ER+PfgCJUe8BqunLGWd/1EY4g8AzQcsDAVzdtMGKVtQEmKAwaFfU6vb7EAVIqTMYsqxBorYZi2+22Iouj/y7GQ==} 462 | dev: true 463 | 464 | /chokidar/3.5.3: 465 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 466 | engines: {node: '>= 8.10.0'} 467 | dependencies: 468 | anymatch: 3.1.2 469 | braces: 3.0.2 470 | glob-parent: 5.1.2 471 | is-binary-path: 2.1.0 472 | is-glob: 4.0.3 473 | normalize-path: 3.0.0 474 | readdirp: 3.6.0 475 | optionalDependencies: 476 | fsevents: 2.3.2 477 | dev: true 478 | 479 | /color-name/1.1.4: 480 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 481 | dev: true 482 | 483 | /combined-stream/1.0.8: 484 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 485 | engines: {node: '>= 0.8'} 486 | dependencies: 487 | delayed-stream: 1.0.0 488 | dev: false 489 | 490 | /css-render/0.15.11: 491 | resolution: {integrity: sha512-hnLrHPUndVUTF5nmNPRey6hpixK02IPUGdEsm2xRjvJuewToyrVFx9Nmai8rgfVzhTFo5SJVh2PHAtzaIV8JKw==} 492 | dependencies: 493 | '@emotion/hash': 0.8.0 494 | '@types/node': 17.0.45 495 | csstype: 3.0.11 496 | dev: false 497 | 498 | /cssesc/3.0.0: 499 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 500 | engines: {node: '>=4'} 501 | hasBin: true 502 | dev: true 503 | 504 | /csstype/2.6.21: 505 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} 506 | 507 | /csstype/3.0.11: 508 | resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} 509 | dev: false 510 | 511 | /date-fns-tz/1.3.7_date-fns@2.29.3: 512 | resolution: {integrity: sha512-1t1b8zyJo+UI8aR+g3iqr5fkUHWpd58VBx8J/ZSQ+w7YrGlw80Ag4sA86qkfCXRBLmMc4I2US+aPMd4uKvwj5g==} 513 | peerDependencies: 514 | date-fns: '>=2.0.0' 515 | dependencies: 516 | date-fns: 2.29.3 517 | dev: false 518 | 519 | /date-fns/2.29.3: 520 | resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} 521 | engines: {node: '>=0.11'} 522 | dev: false 523 | 524 | /defined/1.0.0: 525 | resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==} 526 | dev: true 527 | 528 | /delayed-stream/1.0.0: 529 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 530 | engines: {node: '>=0.4.0'} 531 | dev: false 532 | 533 | /detective/5.2.1: 534 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} 535 | engines: {node: '>=0.8.0'} 536 | hasBin: true 537 | dependencies: 538 | acorn-node: 1.8.2 539 | defined: 1.0.0 540 | minimist: 1.2.6 541 | dev: true 542 | 543 | /didyoumean/1.2.2: 544 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 545 | dev: true 546 | 547 | /dlv/1.1.3: 548 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 549 | dev: true 550 | 551 | /electron-to-chromium/1.4.271: 552 | resolution: {integrity: sha512-BCPBtK07xR1/uY2HFDtl3wK2De66AW4MSiPlLrnPNxKC/Qhccxd59W73654S3y6Rb/k3hmuGJOBnhjfoutetXA==} 553 | dev: true 554 | 555 | /esbuild-android-64/0.15.10: 556 | resolution: {integrity: sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==} 557 | engines: {node: '>=12'} 558 | cpu: [x64] 559 | os: [android] 560 | requiresBuild: true 561 | optional: true 562 | 563 | /esbuild-android-arm64/0.15.10: 564 | resolution: {integrity: sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==} 565 | engines: {node: '>=12'} 566 | cpu: [arm64] 567 | os: [android] 568 | requiresBuild: true 569 | optional: true 570 | 571 | /esbuild-darwin-64/0.15.10: 572 | resolution: {integrity: sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==} 573 | engines: {node: '>=12'} 574 | cpu: [x64] 575 | os: [darwin] 576 | requiresBuild: true 577 | optional: true 578 | 579 | /esbuild-darwin-arm64/0.15.10: 580 | resolution: {integrity: sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==} 581 | engines: {node: '>=12'} 582 | cpu: [arm64] 583 | os: [darwin] 584 | requiresBuild: true 585 | optional: true 586 | 587 | /esbuild-freebsd-64/0.15.10: 588 | resolution: {integrity: sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==} 589 | engines: {node: '>=12'} 590 | cpu: [x64] 591 | os: [freebsd] 592 | requiresBuild: true 593 | optional: true 594 | 595 | /esbuild-freebsd-arm64/0.15.10: 596 | resolution: {integrity: sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==} 597 | engines: {node: '>=12'} 598 | cpu: [arm64] 599 | os: [freebsd] 600 | requiresBuild: true 601 | optional: true 602 | 603 | /esbuild-linux-32/0.15.10: 604 | resolution: {integrity: sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==} 605 | engines: {node: '>=12'} 606 | cpu: [ia32] 607 | os: [linux] 608 | requiresBuild: true 609 | optional: true 610 | 611 | /esbuild-linux-64/0.15.10: 612 | resolution: {integrity: sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==} 613 | engines: {node: '>=12'} 614 | cpu: [x64] 615 | os: [linux] 616 | requiresBuild: true 617 | optional: true 618 | 619 | /esbuild-linux-arm/0.15.10: 620 | resolution: {integrity: sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==} 621 | engines: {node: '>=12'} 622 | cpu: [arm] 623 | os: [linux] 624 | requiresBuild: true 625 | optional: true 626 | 627 | /esbuild-linux-arm64/0.15.10: 628 | resolution: {integrity: sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==} 629 | engines: {node: '>=12'} 630 | cpu: [arm64] 631 | os: [linux] 632 | requiresBuild: true 633 | optional: true 634 | 635 | /esbuild-linux-mips64le/0.15.10: 636 | resolution: {integrity: sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==} 637 | engines: {node: '>=12'} 638 | cpu: [mips64el] 639 | os: [linux] 640 | requiresBuild: true 641 | optional: true 642 | 643 | /esbuild-linux-ppc64le/0.15.10: 644 | resolution: {integrity: sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==} 645 | engines: {node: '>=12'} 646 | cpu: [ppc64] 647 | os: [linux] 648 | requiresBuild: true 649 | optional: true 650 | 651 | /esbuild-linux-riscv64/0.15.10: 652 | resolution: {integrity: sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==} 653 | engines: {node: '>=12'} 654 | cpu: [riscv64] 655 | os: [linux] 656 | requiresBuild: true 657 | optional: true 658 | 659 | /esbuild-linux-s390x/0.15.10: 660 | resolution: {integrity: sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==} 661 | engines: {node: '>=12'} 662 | cpu: [s390x] 663 | os: [linux] 664 | requiresBuild: true 665 | optional: true 666 | 667 | /esbuild-netbsd-64/0.15.10: 668 | resolution: {integrity: sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==} 669 | engines: {node: '>=12'} 670 | cpu: [x64] 671 | os: [netbsd] 672 | requiresBuild: true 673 | optional: true 674 | 675 | /esbuild-openbsd-64/0.15.10: 676 | resolution: {integrity: sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==} 677 | engines: {node: '>=12'} 678 | cpu: [x64] 679 | os: [openbsd] 680 | requiresBuild: true 681 | optional: true 682 | 683 | /esbuild-sunos-64/0.15.10: 684 | resolution: {integrity: sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==} 685 | engines: {node: '>=12'} 686 | cpu: [x64] 687 | os: [sunos] 688 | requiresBuild: true 689 | optional: true 690 | 691 | /esbuild-windows-32/0.15.10: 692 | resolution: {integrity: sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==} 693 | engines: {node: '>=12'} 694 | cpu: [ia32] 695 | os: [win32] 696 | requiresBuild: true 697 | optional: true 698 | 699 | /esbuild-windows-64/0.15.10: 700 | resolution: {integrity: sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==} 701 | engines: {node: '>=12'} 702 | cpu: [x64] 703 | os: [win32] 704 | requiresBuild: true 705 | optional: true 706 | 707 | /esbuild-windows-arm64/0.15.10: 708 | resolution: {integrity: sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==} 709 | engines: {node: '>=12'} 710 | cpu: [arm64] 711 | os: [win32] 712 | requiresBuild: true 713 | optional: true 714 | 715 | /esbuild/0.15.10: 716 | resolution: {integrity: sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==} 717 | engines: {node: '>=12'} 718 | hasBin: true 719 | requiresBuild: true 720 | optionalDependencies: 721 | '@esbuild/android-arm': 0.15.10 722 | '@esbuild/linux-loong64': 0.15.10 723 | esbuild-android-64: 0.15.10 724 | esbuild-android-arm64: 0.15.10 725 | esbuild-darwin-64: 0.15.10 726 | esbuild-darwin-arm64: 0.15.10 727 | esbuild-freebsd-64: 0.15.10 728 | esbuild-freebsd-arm64: 0.15.10 729 | esbuild-linux-32: 0.15.10 730 | esbuild-linux-64: 0.15.10 731 | esbuild-linux-arm: 0.15.10 732 | esbuild-linux-arm64: 0.15.10 733 | esbuild-linux-mips64le: 0.15.10 734 | esbuild-linux-ppc64le: 0.15.10 735 | esbuild-linux-riscv64: 0.15.10 736 | esbuild-linux-s390x: 0.15.10 737 | esbuild-netbsd-64: 0.15.10 738 | esbuild-openbsd-64: 0.15.10 739 | esbuild-sunos-64: 0.15.10 740 | esbuild-windows-32: 0.15.10 741 | esbuild-windows-64: 0.15.10 742 | esbuild-windows-arm64: 0.15.10 743 | 744 | /escalade/3.1.1: 745 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 746 | engines: {node: '>=6'} 747 | dev: true 748 | 749 | /estree-walker/2.0.2: 750 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 751 | 752 | /evtd/0.2.4: 753 | resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==} 754 | dev: false 755 | 756 | /fast-glob/3.2.12: 757 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 758 | engines: {node: '>=8.6.0'} 759 | dependencies: 760 | '@nodelib/fs.stat': 2.0.5 761 | '@nodelib/fs.walk': 1.2.8 762 | glob-parent: 5.1.2 763 | merge2: 1.4.1 764 | micromatch: 4.0.5 765 | dev: true 766 | 767 | /fastq/1.13.0: 768 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 769 | dependencies: 770 | reusify: 1.0.4 771 | dev: true 772 | 773 | /fill-range/7.0.1: 774 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 775 | engines: {node: '>=8'} 776 | dependencies: 777 | to-regex-range: 5.0.1 778 | dev: true 779 | 780 | /follow-redirects/1.15.2: 781 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} 782 | engines: {node: '>=4.0'} 783 | peerDependencies: 784 | debug: '*' 785 | peerDependenciesMeta: 786 | debug: 787 | optional: true 788 | dev: false 789 | 790 | /form-data/4.0.0: 791 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 792 | engines: {node: '>= 6'} 793 | dependencies: 794 | asynckit: 0.4.0 795 | combined-stream: 1.0.8 796 | mime-types: 2.1.35 797 | dev: false 798 | 799 | /fraction.js/4.2.0: 800 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 801 | dev: true 802 | 803 | /fsevents/2.3.2: 804 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 805 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 806 | os: [darwin] 807 | requiresBuild: true 808 | optional: true 809 | 810 | /function-bind/1.1.1: 811 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 812 | 813 | /fuse.js/6.6.2: 814 | resolution: {integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==} 815 | engines: {node: '>=10'} 816 | dev: false 817 | 818 | /glob-parent/5.1.2: 819 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 820 | engines: {node: '>= 6'} 821 | dependencies: 822 | is-glob: 4.0.3 823 | dev: true 824 | 825 | /glob-parent/6.0.2: 826 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 827 | engines: {node: '>=10.13.0'} 828 | dependencies: 829 | is-glob: 4.0.3 830 | dev: true 831 | 832 | /has/1.0.3: 833 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 834 | engines: {node: '>= 0.4.0'} 835 | dependencies: 836 | function-bind: 1.1.1 837 | 838 | /highlight.js/11.6.0: 839 | resolution: {integrity: sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==} 840 | engines: {node: '>=12.0.0'} 841 | dev: false 842 | 843 | /is-binary-path/2.1.0: 844 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 845 | engines: {node: '>=8'} 846 | dependencies: 847 | binary-extensions: 2.2.0 848 | dev: true 849 | 850 | /is-core-module/2.10.0: 851 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} 852 | dependencies: 853 | has: 1.0.3 854 | 855 | /is-extglob/2.1.1: 856 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 857 | engines: {node: '>=0.10.0'} 858 | dev: true 859 | 860 | /is-glob/4.0.3: 861 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 862 | engines: {node: '>=0.10.0'} 863 | dependencies: 864 | is-extglob: 2.1.1 865 | dev: true 866 | 867 | /is-number/7.0.0: 868 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 869 | engines: {node: '>=0.12.0'} 870 | dev: true 871 | 872 | /lilconfig/2.0.6: 873 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 874 | engines: {node: '>=10'} 875 | dev: true 876 | 877 | /lodash-es/4.17.21: 878 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 879 | dev: false 880 | 881 | /lodash/4.17.21: 882 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 883 | dev: false 884 | 885 | /lru-cache/6.0.0: 886 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 887 | engines: {node: '>=10'} 888 | dependencies: 889 | yallist: 4.0.0 890 | dev: true 891 | 892 | /magic-string/0.25.9: 893 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 894 | dependencies: 895 | sourcemap-codec: 1.4.8 896 | 897 | /merge2/1.4.1: 898 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 899 | engines: {node: '>= 8'} 900 | dev: true 901 | 902 | /micromatch/4.0.5: 903 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 904 | engines: {node: '>=8.6'} 905 | dependencies: 906 | braces: 3.0.2 907 | picomatch: 2.3.1 908 | dev: true 909 | 910 | /mime-db/1.52.0: 911 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 912 | engines: {node: '>= 0.6'} 913 | dev: false 914 | 915 | /mime-types/2.1.35: 916 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 917 | engines: {node: '>= 0.6'} 918 | dependencies: 919 | mime-db: 1.52.0 920 | dev: false 921 | 922 | /minimist/1.2.6: 923 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 924 | dev: true 925 | 926 | /naive-ui/2.33.3_vue@3.2.40: 927 | resolution: {integrity: sha512-yz2aKdghMVadtvCSBXyjU2bAuGmwLEUcbzmXdUhSdtcbI6mT+mT8vRy43FnbJangPQ87v080q453vtnydNcnhA==} 928 | peerDependencies: 929 | vue: ^3.0.0 930 | dependencies: 931 | '@css-render/plugin-bem': 0.15.11_css-render@0.15.11 932 | '@css-render/vue3-ssr': 0.15.11_vue@3.2.40 933 | '@types/lodash': 4.14.186 934 | '@types/lodash-es': 4.17.6 935 | async-validator: 4.2.5 936 | css-render: 0.15.11 937 | date-fns: 2.29.3 938 | date-fns-tz: 1.3.7_date-fns@2.29.3 939 | evtd: 0.2.4 940 | highlight.js: 11.6.0 941 | lodash: 4.17.21 942 | lodash-es: 4.17.21 943 | seemly: 0.3.6 944 | treemate: 0.3.11 945 | vdirs: 0.1.8_vue@3.2.40 946 | vooks: 0.2.12_vue@3.2.40 947 | vue: 3.2.40 948 | vueuc: 0.4.49_vue@3.2.40 949 | dev: false 950 | 951 | /nanoid/3.3.4: 952 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 953 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 954 | hasBin: true 955 | 956 | /node-releases/2.0.6: 957 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 958 | dev: true 959 | 960 | /normalize-path/3.0.0: 961 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 962 | engines: {node: '>=0.10.0'} 963 | dev: true 964 | 965 | /normalize-range/0.1.2: 966 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 967 | engines: {node: '>=0.10.0'} 968 | dev: true 969 | 970 | /object-hash/3.0.0: 971 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 972 | engines: {node: '>= 6'} 973 | dev: true 974 | 975 | /path-parse/1.0.7: 976 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 977 | 978 | /picocolors/1.0.0: 979 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 980 | 981 | /picomatch/2.3.1: 982 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 983 | engines: {node: '>=8.6'} 984 | dev: true 985 | 986 | /pify/2.3.0: 987 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 988 | engines: {node: '>=0.10.0'} 989 | dev: true 990 | 991 | /postcss-import/14.1.0_postcss@8.4.17: 992 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 993 | engines: {node: '>=10.0.0'} 994 | peerDependencies: 995 | postcss: ^8.0.0 996 | dependencies: 997 | postcss: 8.4.17 998 | postcss-value-parser: 4.2.0 999 | read-cache: 1.0.0 1000 | resolve: 1.22.1 1001 | dev: true 1002 | 1003 | /postcss-js/4.0.0_postcss@8.4.17: 1004 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} 1005 | engines: {node: ^12 || ^14 || >= 16} 1006 | peerDependencies: 1007 | postcss: ^8.3.3 1008 | dependencies: 1009 | camelcase-css: 2.0.1 1010 | postcss: 8.4.17 1011 | dev: true 1012 | 1013 | /postcss-load-config/3.1.4_postcss@8.4.17: 1014 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1015 | engines: {node: '>= 10'} 1016 | peerDependencies: 1017 | postcss: '>=8.0.9' 1018 | ts-node: '>=9.0.0' 1019 | peerDependenciesMeta: 1020 | postcss: 1021 | optional: true 1022 | ts-node: 1023 | optional: true 1024 | dependencies: 1025 | lilconfig: 2.0.6 1026 | postcss: 8.4.17 1027 | yaml: 1.10.2 1028 | dev: true 1029 | 1030 | /postcss-nested/5.0.6_postcss@8.4.17: 1031 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} 1032 | engines: {node: '>=12.0'} 1033 | peerDependencies: 1034 | postcss: ^8.2.14 1035 | dependencies: 1036 | postcss: 8.4.17 1037 | postcss-selector-parser: 6.0.10 1038 | dev: true 1039 | 1040 | /postcss-selector-parser/6.0.10: 1041 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 1042 | engines: {node: '>=4'} 1043 | dependencies: 1044 | cssesc: 3.0.0 1045 | util-deprecate: 1.0.2 1046 | dev: true 1047 | 1048 | /postcss-value-parser/4.2.0: 1049 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1050 | dev: true 1051 | 1052 | /postcss/8.4.17: 1053 | resolution: {integrity: sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==} 1054 | engines: {node: ^10 || ^12 || >=14} 1055 | dependencies: 1056 | nanoid: 3.3.4 1057 | picocolors: 1.0.0 1058 | source-map-js: 1.0.2 1059 | 1060 | /proxy-from-env/1.1.0: 1061 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 1062 | dev: false 1063 | 1064 | /queue-microtask/1.2.3: 1065 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1066 | dev: true 1067 | 1068 | /quick-lru/5.1.1: 1069 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 1070 | engines: {node: '>=10'} 1071 | dev: true 1072 | 1073 | /read-cache/1.0.0: 1074 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1075 | dependencies: 1076 | pify: 2.3.0 1077 | dev: true 1078 | 1079 | /readdirp/3.6.0: 1080 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1081 | engines: {node: '>=8.10.0'} 1082 | dependencies: 1083 | picomatch: 2.3.1 1084 | dev: true 1085 | 1086 | /resolve/1.22.1: 1087 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1088 | hasBin: true 1089 | dependencies: 1090 | is-core-module: 2.10.0 1091 | path-parse: 1.0.7 1092 | supports-preserve-symlinks-flag: 1.0.0 1093 | 1094 | /reusify/1.0.4: 1095 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1096 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1097 | dev: true 1098 | 1099 | /rollup/2.78.1: 1100 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 1101 | engines: {node: '>=10.0.0'} 1102 | hasBin: true 1103 | optionalDependencies: 1104 | fsevents: 2.3.2 1105 | 1106 | /run-parallel/1.2.0: 1107 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1108 | dependencies: 1109 | queue-microtask: 1.2.3 1110 | dev: true 1111 | 1112 | /seemly/0.3.6: 1113 | resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==} 1114 | dev: false 1115 | 1116 | /semver/7.3.7: 1117 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 1118 | engines: {node: '>=10'} 1119 | hasBin: true 1120 | dependencies: 1121 | lru-cache: 6.0.0 1122 | dev: true 1123 | 1124 | /source-map-js/1.0.2: 1125 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1126 | engines: {node: '>=0.10.0'} 1127 | 1128 | /source-map/0.6.1: 1129 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1130 | engines: {node: '>=0.10.0'} 1131 | 1132 | /sourcemap-codec/1.4.8: 1133 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1134 | 1135 | /supports-preserve-symlinks-flag/1.0.0: 1136 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1137 | engines: {node: '>= 0.4'} 1138 | 1139 | /tailwindcss/3.1.8: 1140 | resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} 1141 | engines: {node: '>=12.13.0'} 1142 | hasBin: true 1143 | dependencies: 1144 | arg: 5.0.2 1145 | chokidar: 3.5.3 1146 | color-name: 1.1.4 1147 | detective: 5.2.1 1148 | didyoumean: 1.2.2 1149 | dlv: 1.1.3 1150 | fast-glob: 3.2.12 1151 | glob-parent: 6.0.2 1152 | is-glob: 4.0.3 1153 | lilconfig: 2.0.6 1154 | normalize-path: 3.0.0 1155 | object-hash: 3.0.0 1156 | picocolors: 1.0.0 1157 | postcss: 8.4.17 1158 | postcss-import: 14.1.0_postcss@8.4.17 1159 | postcss-js: 4.0.0_postcss@8.4.17 1160 | postcss-load-config: 3.1.4_postcss@8.4.17 1161 | postcss-nested: 5.0.6_postcss@8.4.17 1162 | postcss-selector-parser: 6.0.10 1163 | postcss-value-parser: 4.2.0 1164 | quick-lru: 5.1.1 1165 | resolve: 1.22.1 1166 | transitivePeerDependencies: 1167 | - ts-node 1168 | dev: true 1169 | 1170 | /to-fast-properties/2.0.0: 1171 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1172 | engines: {node: '>=4'} 1173 | 1174 | /to-regex-range/5.0.1: 1175 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1176 | engines: {node: '>=8.0'} 1177 | dependencies: 1178 | is-number: 7.0.0 1179 | dev: true 1180 | 1181 | /treemate/0.3.11: 1182 | resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==} 1183 | dev: false 1184 | 1185 | /typescript/4.8.4: 1186 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} 1187 | engines: {node: '>=4.2.0'} 1188 | hasBin: true 1189 | dev: true 1190 | 1191 | /update-browserslist-db/1.0.9_browserslist@4.21.4: 1192 | resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} 1193 | hasBin: true 1194 | peerDependencies: 1195 | browserslist: '>= 4.21.0' 1196 | dependencies: 1197 | browserslist: 4.21.4 1198 | escalade: 3.1.1 1199 | picocolors: 1.0.0 1200 | dev: true 1201 | 1202 | /util-deprecate/1.0.2: 1203 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1204 | dev: true 1205 | 1206 | /vdirs/0.1.8_vue@3.2.40: 1207 | resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} 1208 | peerDependencies: 1209 | vue: ^3.0.11 1210 | dependencies: 1211 | evtd: 0.2.4 1212 | vue: 3.2.40 1213 | dev: false 1214 | 1215 | /vfonts/0.0.3: 1216 | resolution: {integrity: sha512-nguyw8L6Un8eelg1vQ31vIU2ESxqid7EYmy8V+MDeMaHBqaRSkg3dTBToC1PR00D89UzS/SLkfYPnx0Wf23IQQ==} 1217 | dev: false 1218 | 1219 | /vite/3.1.4: 1220 | resolution: {integrity: sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==} 1221 | engines: {node: ^14.18.0 || >=16.0.0} 1222 | hasBin: true 1223 | peerDependencies: 1224 | less: '*' 1225 | sass: '*' 1226 | stylus: '*' 1227 | terser: ^5.4.0 1228 | peerDependenciesMeta: 1229 | less: 1230 | optional: true 1231 | sass: 1232 | optional: true 1233 | stylus: 1234 | optional: true 1235 | terser: 1236 | optional: true 1237 | dependencies: 1238 | esbuild: 0.15.10 1239 | postcss: 8.4.17 1240 | resolve: 1.22.1 1241 | rollup: 2.78.1 1242 | optionalDependencies: 1243 | fsevents: 2.3.2 1244 | 1245 | /vooks/0.2.12_vue@3.2.40: 1246 | resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==} 1247 | peerDependencies: 1248 | vue: ^3.0.0 1249 | dependencies: 1250 | evtd: 0.2.4 1251 | vue: 3.2.40 1252 | dev: false 1253 | 1254 | /vue-demi/0.13.11_vue@3.2.40: 1255 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} 1256 | engines: {node: '>=12'} 1257 | hasBin: true 1258 | requiresBuild: true 1259 | peerDependencies: 1260 | '@vue/composition-api': ^1.0.0-rc.1 1261 | vue: ^3.0.0-0 || ^2.6.0 1262 | peerDependenciesMeta: 1263 | '@vue/composition-api': 1264 | optional: true 1265 | dependencies: 1266 | vue: 3.2.40 1267 | dev: false 1268 | 1269 | /vue-router/4.1.5_vue@3.2.40: 1270 | resolution: {integrity: sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==} 1271 | peerDependencies: 1272 | vue: ^3.2.0 1273 | dependencies: 1274 | '@vue/devtools-api': 6.4.2 1275 | vue: 3.2.40 1276 | dev: false 1277 | 1278 | /vue-tsc/0.40.13_typescript@4.8.4: 1279 | resolution: {integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==} 1280 | hasBin: true 1281 | peerDependencies: 1282 | typescript: '*' 1283 | dependencies: 1284 | '@volar/vue-language-core': 0.40.13 1285 | '@volar/vue-typescript': 0.40.13 1286 | typescript: 4.8.4 1287 | dev: true 1288 | 1289 | /vue/3.2.40: 1290 | resolution: {integrity: sha512-1mGHulzUbl2Nk3pfvI5aXYYyJUs1nm4kyvuz38u4xlQkLUn1i2R7nDbI4TufECmY8v1qNBHYy62bCaM+3cHP2A==} 1291 | dependencies: 1292 | '@vue/compiler-dom': 3.2.40 1293 | '@vue/compiler-sfc': 3.2.40 1294 | '@vue/runtime-dom': 3.2.40 1295 | '@vue/server-renderer': 3.2.40_vue@3.2.40 1296 | '@vue/shared': 3.2.40 1297 | 1298 | /vueuc/0.4.49_vue@3.2.40: 1299 | resolution: {integrity: sha512-WarAC44a/Yx78CxkAgROYLq+LkAeCGA/6wHidVoFmHLbzyF3SiP2nzRNGD/8zJeJInXv18EnWK6A//eGgMMq8w==} 1300 | peerDependencies: 1301 | vue: ^3.0.11 1302 | dependencies: 1303 | '@css-render/vue3-ssr': 0.15.11_vue@3.2.40 1304 | '@juggle/resize-observer': 3.4.0 1305 | css-render: 0.15.11 1306 | evtd: 0.2.4 1307 | seemly: 0.3.6 1308 | vdirs: 0.1.8_vue@3.2.40 1309 | vooks: 0.2.12_vue@3.2.40 1310 | vue: 3.2.40 1311 | dev: false 1312 | 1313 | /xtend/4.0.2: 1314 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1315 | engines: {node: '>=0.4'} 1316 | dev: true 1317 | 1318 | /yallist/4.0.0: 1319 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1320 | dev: true 1321 | 1322 | /yaml/1.10.2: 1323 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1324 | engines: {node: '>= 6'} 1325 | dev: true 1326 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | importers: 4 | 5 | .: 6 | specifiers: {} 7 | 8 | packages/client: 9 | specifiers: 10 | '@vicons/fa': ^0.12.0 11 | '@vicons/fluent': ^0.12.0 12 | '@vicons/ionicons5': ^0.12.0 13 | '@vitejs/plugin-vue': ^3.1.0 14 | '@vueuse/core': ^9.3.0 15 | '@vueuse/integrations': ^9.3.0 16 | autoprefixer: ^10.4.12 17 | axios: ^1.1.2 18 | fuse.js: ^6.6.2 19 | naive-ui: ^2.33.3 20 | postcss: ^8.4.17 21 | tailwindcss: ^3.1.8 22 | typescript: ^4.6.4 23 | vfonts: ^0.0.3 24 | vite: ^3.1.0 25 | vue: ^3.2.37 26 | vue-router: '4' 27 | vue-tsc: ^0.40.4 28 | dependencies: 29 | '@vicons/fluent': 0.12.0 30 | '@vicons/ionicons5': 0.12.0 31 | '@vueuse/core': 9.3.0_vue@3.2.41 32 | '@vueuse/integrations': 9.3.0_hantc6qpdbc7anq3owc6fzcp54 33 | axios: 1.1.3 34 | fuse.js: 6.6.2 35 | naive-ui: 2.33.5_vue@3.2.41 36 | vfonts: 0.0.3 37 | vite: 3.1.8 38 | vue: 3.2.41 39 | vue-router: 4.1.5_vue@3.2.41 40 | devDependencies: 41 | '@vicons/fa': 0.12.0 42 | '@vitejs/plugin-vue': 3.1.2_vite@3.1.8+vue@3.2.41 43 | autoprefixer: 10.4.12_postcss@8.4.18 44 | postcss: 8.4.18 45 | tailwindcss: 3.1.8 46 | typescript: 4.8.4 47 | vue-tsc: 0.40.13_typescript@4.8.4 48 | 49 | packages/server: 50 | specifiers: 51 | '@types/bcrypt': ^5.0.0 52 | '@types/cookie-parser': ^1.4.3 53 | '@types/cors': ^2.8.12 54 | '@types/express': ^4.17.14 55 | '@types/jsonwebtoken': ^8.5.9 56 | '@types/node': ^18.7.23 57 | '@types/ping': ^0.4.1 58 | axios: ^1.1.0 59 | bcrypt: ^5.1.0 60 | cookie-parser: ^1.4.6 61 | cors: ^2.8.5 62 | dotenv: ^16.0.3 63 | express: ^4.18.1 64 | jsonwebtoken: ^8.5.1 65 | nodemon: ^2.0.20 66 | ping: ^0.4.2 67 | ts-node: ^10.9.1 68 | typescript: ^4.8.4 69 | dependencies: 70 | axios: 1.1.3 71 | bcrypt: 5.1.0 72 | cookie-parser: 1.4.6 73 | cors: 2.8.5 74 | dotenv: 16.0.3 75 | express: 4.18.2 76 | jsonwebtoken: 8.5.1 77 | ping: 0.4.2 78 | devDependencies: 79 | '@types/bcrypt': 5.0.0 80 | '@types/cookie-parser': 1.4.3 81 | '@types/cors': 2.8.12 82 | '@types/express': 4.17.14 83 | '@types/jsonwebtoken': 8.5.9 84 | '@types/node': 18.11.0 85 | '@types/ping': 0.4.1 86 | nodemon: 2.0.20 87 | ts-node: 10.9.1_o6ib7qqltxpe7qrskddglns2ga 88 | typescript: 4.8.4 89 | 90 | packages: 91 | 92 | /@babel/helper-string-parser/7.19.4: 93 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 94 | engines: {node: '>=6.9.0'} 95 | 96 | /@babel/helper-validator-identifier/7.19.1: 97 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 98 | engines: {node: '>=6.9.0'} 99 | 100 | /@babel/parser/7.19.4: 101 | resolution: {integrity: sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==} 102 | engines: {node: '>=6.0.0'} 103 | hasBin: true 104 | dependencies: 105 | '@babel/types': 7.19.4 106 | 107 | /@babel/types/7.19.4: 108 | resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==} 109 | engines: {node: '>=6.9.0'} 110 | dependencies: 111 | '@babel/helper-string-parser': 7.19.4 112 | '@babel/helper-validator-identifier': 7.19.1 113 | to-fast-properties: 2.0.0 114 | 115 | /@cspotcode/source-map-support/0.8.1: 116 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 117 | engines: {node: '>=12'} 118 | dependencies: 119 | '@jridgewell/trace-mapping': 0.3.9 120 | dev: true 121 | 122 | /@css-render/plugin-bem/0.15.11_css-render@0.15.11: 123 | resolution: {integrity: sha512-Bn8qadYPIz5DhZ4obTGHOJzeziQH6kY0+Fk5AEvwuuy378SLwwvXuuoechLjBHcgKkPCM03Oo4dDSGP/6NMdyw==} 124 | peerDependencies: 125 | css-render: ~0.15.11 126 | dependencies: 127 | css-render: 0.15.11 128 | dev: false 129 | 130 | /@css-render/vue3-ssr/0.15.11_vue@3.2.41: 131 | resolution: {integrity: sha512-n+SuqLPbY30FUTM8slX75OaEG+c8XlTOFrAklekX2XQGvBbz9XdBE6hTEgGlV5kPcTMqTJeCG7Vzhs9/29VC7w==} 132 | peerDependencies: 133 | vue: ^3.0.11 134 | dependencies: 135 | vue: 3.2.41 136 | dev: false 137 | 138 | /@emotion/hash/0.8.0: 139 | resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} 140 | dev: false 141 | 142 | /@esbuild/android-arm/0.15.11: 143 | resolution: {integrity: sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA==} 144 | engines: {node: '>=12'} 145 | cpu: [arm] 146 | os: [android] 147 | requiresBuild: true 148 | optional: true 149 | 150 | /@esbuild/linux-loong64/0.15.11: 151 | resolution: {integrity: sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==} 152 | engines: {node: '>=12'} 153 | cpu: [loong64] 154 | os: [linux] 155 | requiresBuild: true 156 | optional: true 157 | 158 | /@jridgewell/resolve-uri/3.1.0: 159 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 160 | engines: {node: '>=6.0.0'} 161 | dev: true 162 | 163 | /@jridgewell/sourcemap-codec/1.4.14: 164 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 165 | dev: true 166 | 167 | /@jridgewell/trace-mapping/0.3.9: 168 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 169 | dependencies: 170 | '@jridgewell/resolve-uri': 3.1.0 171 | '@jridgewell/sourcemap-codec': 1.4.14 172 | dev: true 173 | 174 | /@juggle/resize-observer/3.4.0: 175 | resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} 176 | dev: false 177 | 178 | /@mapbox/node-pre-gyp/1.0.10: 179 | resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} 180 | hasBin: true 181 | dependencies: 182 | detect-libc: 2.0.1 183 | https-proxy-agent: 5.0.1 184 | make-dir: 3.1.0 185 | node-fetch: 2.6.7 186 | nopt: 5.0.0 187 | npmlog: 5.0.1 188 | rimraf: 3.0.2 189 | semver: 7.3.8 190 | tar: 6.1.11 191 | transitivePeerDependencies: 192 | - encoding 193 | - supports-color 194 | dev: false 195 | 196 | /@nodelib/fs.scandir/2.1.5: 197 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 198 | engines: {node: '>= 8'} 199 | dependencies: 200 | '@nodelib/fs.stat': 2.0.5 201 | run-parallel: 1.2.0 202 | dev: true 203 | 204 | /@nodelib/fs.stat/2.0.5: 205 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 206 | engines: {node: '>= 8'} 207 | dev: true 208 | 209 | /@nodelib/fs.walk/1.2.8: 210 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 211 | engines: {node: '>= 8'} 212 | dependencies: 213 | '@nodelib/fs.scandir': 2.1.5 214 | fastq: 1.13.0 215 | dev: true 216 | 217 | /@tsconfig/node10/1.0.9: 218 | resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} 219 | dev: true 220 | 221 | /@tsconfig/node12/1.0.11: 222 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 223 | dev: true 224 | 225 | /@tsconfig/node14/1.0.3: 226 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 227 | dev: true 228 | 229 | /@tsconfig/node16/1.0.3: 230 | resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} 231 | dev: true 232 | 233 | /@types/bcrypt/5.0.0: 234 | resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==} 235 | dependencies: 236 | '@types/node': 18.11.0 237 | dev: true 238 | 239 | /@types/body-parser/1.19.2: 240 | resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} 241 | dependencies: 242 | '@types/connect': 3.4.35 243 | '@types/node': 18.11.0 244 | dev: true 245 | 246 | /@types/connect/3.4.35: 247 | resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} 248 | dependencies: 249 | '@types/node': 18.11.0 250 | dev: true 251 | 252 | /@types/cookie-parser/1.4.3: 253 | resolution: {integrity: sha512-CqSKwFwefj4PzZ5n/iwad/bow2hTCh0FlNAeWLtQM3JA/NX/iYagIpWG2cf1bQKQ2c9gU2log5VUCrn7LDOs0w==} 254 | dependencies: 255 | '@types/express': 4.17.14 256 | dev: true 257 | 258 | /@types/cors/2.8.12: 259 | resolution: {integrity: sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==} 260 | dev: true 261 | 262 | /@types/express-serve-static-core/4.17.31: 263 | resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} 264 | dependencies: 265 | '@types/node': 18.11.0 266 | '@types/qs': 6.9.7 267 | '@types/range-parser': 1.2.4 268 | dev: true 269 | 270 | /@types/express/4.17.14: 271 | resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} 272 | dependencies: 273 | '@types/body-parser': 1.19.2 274 | '@types/express-serve-static-core': 4.17.31 275 | '@types/qs': 6.9.7 276 | '@types/serve-static': 1.15.0 277 | dev: true 278 | 279 | /@types/jsonwebtoken/8.5.9: 280 | resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==} 281 | dependencies: 282 | '@types/node': 18.11.0 283 | dev: true 284 | 285 | /@types/lodash-es/4.17.6: 286 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} 287 | dependencies: 288 | '@types/lodash': 4.14.186 289 | dev: false 290 | 291 | /@types/lodash/4.14.186: 292 | resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==} 293 | dev: false 294 | 295 | /@types/mime/3.0.1: 296 | resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} 297 | dev: true 298 | 299 | /@types/node/17.0.45: 300 | resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} 301 | dev: false 302 | 303 | /@types/node/18.11.0: 304 | resolution: {integrity: sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==} 305 | dev: true 306 | 307 | /@types/ping/0.4.1: 308 | resolution: {integrity: sha512-q/D+xQvoqrHvntvz2A0Pb0ImYwnN3zakluUp8O2qoogGoVMVbdY2K/ulxHcCh9TzYzVoojayHBa9gYQDIZ4v0A==} 309 | dev: true 310 | 311 | /@types/qs/6.9.7: 312 | resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} 313 | dev: true 314 | 315 | /@types/range-parser/1.2.4: 316 | resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} 317 | dev: true 318 | 319 | /@types/serve-static/1.15.0: 320 | resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} 321 | dependencies: 322 | '@types/mime': 3.0.1 323 | '@types/node': 18.11.0 324 | dev: true 325 | 326 | /@types/web-bluetooth/0.0.15: 327 | resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} 328 | dev: false 329 | 330 | /@vicons/fa/0.12.0: 331 | resolution: {integrity: sha512-g2PIeJLsTHUjt6bK63LxqC0uYQB7iu+xViJOxvp1s8b9/akpXVPVWjDTTsP980/0KYyMMe4U7F/aUo7wY+MsXA==} 332 | dev: true 333 | 334 | /@vicons/fluent/0.12.0: 335 | resolution: {integrity: sha512-ATCiqPuiJ6RI5GBlD3BIpZ9Xw4MsCA4RpI5oR6MCti4quS4mX1Gp6N74FCzw7lgOj+80rV4HMKhZTVInwimpVQ==} 336 | dev: false 337 | 338 | /@vicons/ionicons5/0.12.0: 339 | resolution: {integrity: sha512-Iy1EUVRpX0WWxeu1VIReR1zsZLMc4fqpt223czR+Rpnrwu7pt46nbnC2ycO7ItI/uqDLJxnbcMC7FujKs9IfFA==} 340 | dev: false 341 | 342 | /@vitejs/plugin-vue/3.1.2_vite@3.1.8+vue@3.2.41: 343 | resolution: {integrity: sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==} 344 | engines: {node: ^14.18.0 || >=16.0.0} 345 | peerDependencies: 346 | vite: ^3.0.0 347 | vue: ^3.2.25 348 | dependencies: 349 | vite: 3.1.8 350 | vue: 3.2.41 351 | dev: true 352 | 353 | /@volar/code-gen/0.40.13: 354 | resolution: {integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==} 355 | dependencies: 356 | '@volar/source-map': 0.40.13 357 | dev: true 358 | 359 | /@volar/source-map/0.40.13: 360 | resolution: {integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==} 361 | dependencies: 362 | '@vue/reactivity': 3.2.38 363 | dev: true 364 | 365 | /@volar/typescript-faster/0.40.13: 366 | resolution: {integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==} 367 | dependencies: 368 | semver: 7.3.8 369 | dev: true 370 | 371 | /@volar/vue-language-core/0.40.13: 372 | resolution: {integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==} 373 | dependencies: 374 | '@volar/code-gen': 0.40.13 375 | '@volar/source-map': 0.40.13 376 | '@vue/compiler-core': 3.2.41 377 | '@vue/compiler-dom': 3.2.41 378 | '@vue/compiler-sfc': 3.2.41 379 | '@vue/reactivity': 3.2.41 380 | '@vue/shared': 3.2.41 381 | dev: true 382 | 383 | /@volar/vue-typescript/0.40.13: 384 | resolution: {integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==} 385 | dependencies: 386 | '@volar/code-gen': 0.40.13 387 | '@volar/typescript-faster': 0.40.13 388 | '@volar/vue-language-core': 0.40.13 389 | dev: true 390 | 391 | /@vue/compiler-core/3.2.41: 392 | resolution: {integrity: sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==} 393 | dependencies: 394 | '@babel/parser': 7.19.4 395 | '@vue/shared': 3.2.41 396 | estree-walker: 2.0.2 397 | source-map: 0.6.1 398 | 399 | /@vue/compiler-dom/3.2.41: 400 | resolution: {integrity: sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==} 401 | dependencies: 402 | '@vue/compiler-core': 3.2.41 403 | '@vue/shared': 3.2.41 404 | 405 | /@vue/compiler-sfc/3.2.41: 406 | resolution: {integrity: sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==} 407 | dependencies: 408 | '@babel/parser': 7.19.4 409 | '@vue/compiler-core': 3.2.41 410 | '@vue/compiler-dom': 3.2.41 411 | '@vue/compiler-ssr': 3.2.41 412 | '@vue/reactivity-transform': 3.2.41 413 | '@vue/shared': 3.2.41 414 | estree-walker: 2.0.2 415 | magic-string: 0.25.9 416 | postcss: 8.4.18 417 | source-map: 0.6.1 418 | 419 | /@vue/compiler-ssr/3.2.41: 420 | resolution: {integrity: sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==} 421 | dependencies: 422 | '@vue/compiler-dom': 3.2.41 423 | '@vue/shared': 3.2.41 424 | 425 | /@vue/devtools-api/6.4.4: 426 | resolution: {integrity: sha512-Ku31WzpOV/8cruFaXaEZKF81WkNnvCSlBY4eOGtz5WMSdJvX1v1WWlSMGZeqUwPtQ27ZZz7B62erEMq8JDjcXw==} 427 | dev: false 428 | 429 | /@vue/reactivity-transform/3.2.41: 430 | resolution: {integrity: sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==} 431 | dependencies: 432 | '@babel/parser': 7.19.4 433 | '@vue/compiler-core': 3.2.41 434 | '@vue/shared': 3.2.41 435 | estree-walker: 2.0.2 436 | magic-string: 0.25.9 437 | 438 | /@vue/reactivity/3.2.38: 439 | resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} 440 | dependencies: 441 | '@vue/shared': 3.2.38 442 | dev: true 443 | 444 | /@vue/reactivity/3.2.41: 445 | resolution: {integrity: sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==} 446 | dependencies: 447 | '@vue/shared': 3.2.41 448 | 449 | /@vue/runtime-core/3.2.41: 450 | resolution: {integrity: sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==} 451 | dependencies: 452 | '@vue/reactivity': 3.2.41 453 | '@vue/shared': 3.2.41 454 | 455 | /@vue/runtime-dom/3.2.41: 456 | resolution: {integrity: sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==} 457 | dependencies: 458 | '@vue/runtime-core': 3.2.41 459 | '@vue/shared': 3.2.41 460 | csstype: 2.6.21 461 | 462 | /@vue/server-renderer/3.2.41_vue@3.2.41: 463 | resolution: {integrity: sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==} 464 | peerDependencies: 465 | vue: 3.2.41 466 | dependencies: 467 | '@vue/compiler-ssr': 3.2.41 468 | '@vue/shared': 3.2.41 469 | vue: 3.2.41 470 | 471 | /@vue/shared/3.2.38: 472 | resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} 473 | dev: true 474 | 475 | /@vue/shared/3.2.41: 476 | resolution: {integrity: sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==} 477 | 478 | /@vueuse/core/9.3.0_vue@3.2.41: 479 | resolution: {integrity: sha512-64Rna8IQDWpdrJxgitDg7yv1yTp41ZmvV8zlLEylK4QQLWAhz1OFGZDPZ8bU4lwcGgbEJ2sGi2jrdNh4LttUSQ==} 480 | dependencies: 481 | '@types/web-bluetooth': 0.0.15 482 | '@vueuse/metadata': 9.3.0 483 | '@vueuse/shared': 9.3.0_vue@3.2.41 484 | vue-demi: 0.13.11_vue@3.2.41 485 | transitivePeerDependencies: 486 | - '@vue/composition-api' 487 | - vue 488 | dev: false 489 | 490 | /@vueuse/integrations/9.3.0_hantc6qpdbc7anq3owc6fzcp54: 491 | resolution: {integrity: sha512-KkJpC97VioZUpSw7rvgnqoLgTztLlLLGdYp6WQKn69cJiItsJVSRZrmI+X9YVxPBzuLvRymYZfp0RMyISVFHTw==} 492 | peerDependencies: 493 | async-validator: '*' 494 | axios: '*' 495 | change-case: '*' 496 | drauu: '*' 497 | focus-trap: '*' 498 | fuse.js: '*' 499 | jwt-decode: '*' 500 | nprogress: '*' 501 | qrcode: '*' 502 | universal-cookie: '*' 503 | peerDependenciesMeta: 504 | async-validator: 505 | optional: true 506 | axios: 507 | optional: true 508 | change-case: 509 | optional: true 510 | drauu: 511 | optional: true 512 | focus-trap: 513 | optional: true 514 | fuse.js: 515 | optional: true 516 | jwt-decode: 517 | optional: true 518 | nprogress: 519 | optional: true 520 | qrcode: 521 | optional: true 522 | universal-cookie: 523 | optional: true 524 | dependencies: 525 | '@vueuse/core': 9.3.0_vue@3.2.41 526 | '@vueuse/shared': 9.3.0_vue@3.2.41 527 | axios: 1.1.3 528 | fuse.js: 6.6.2 529 | vue-demi: 0.13.11_vue@3.2.41 530 | transitivePeerDependencies: 531 | - '@vue/composition-api' 532 | - vue 533 | dev: false 534 | 535 | /@vueuse/metadata/9.3.0: 536 | resolution: {integrity: sha512-GnnfjbzIPJIh9ngL9s9oGU1+Hx/h5/KFqTfJykzh/1xjaHkedV9g0MASpdmPZIP+ynNhKAcEfA6g5i8KXwtoMA==} 537 | dev: false 538 | 539 | /@vueuse/shared/9.3.0_vue@3.2.41: 540 | resolution: {integrity: sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==} 541 | dependencies: 542 | vue-demi: 0.13.11_vue@3.2.41 543 | transitivePeerDependencies: 544 | - '@vue/composition-api' 545 | - vue 546 | dev: false 547 | 548 | /abbrev/1.1.1: 549 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 550 | 551 | /accepts/1.3.8: 552 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 553 | engines: {node: '>= 0.6'} 554 | dependencies: 555 | mime-types: 2.1.35 556 | negotiator: 0.6.3 557 | dev: false 558 | 559 | /acorn-node/1.8.2: 560 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 561 | dependencies: 562 | acorn: 7.4.1 563 | acorn-walk: 7.2.0 564 | xtend: 4.0.2 565 | dev: true 566 | 567 | /acorn-walk/7.2.0: 568 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 569 | engines: {node: '>=0.4.0'} 570 | dev: true 571 | 572 | /acorn-walk/8.2.0: 573 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 574 | engines: {node: '>=0.4.0'} 575 | dev: true 576 | 577 | /acorn/7.4.1: 578 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 579 | engines: {node: '>=0.4.0'} 580 | hasBin: true 581 | dev: true 582 | 583 | /acorn/8.8.0: 584 | resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} 585 | engines: {node: '>=0.4.0'} 586 | hasBin: true 587 | dev: true 588 | 589 | /agent-base/6.0.2: 590 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 591 | engines: {node: '>= 6.0.0'} 592 | dependencies: 593 | debug: 4.3.4 594 | transitivePeerDependencies: 595 | - supports-color 596 | dev: false 597 | 598 | /ansi-regex/5.0.1: 599 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 600 | engines: {node: '>=8'} 601 | dev: false 602 | 603 | /anymatch/3.1.2: 604 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 605 | engines: {node: '>= 8'} 606 | dependencies: 607 | normalize-path: 3.0.0 608 | picomatch: 2.3.1 609 | dev: true 610 | 611 | /aproba/2.0.0: 612 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 613 | dev: false 614 | 615 | /are-we-there-yet/2.0.0: 616 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 617 | engines: {node: '>=10'} 618 | dependencies: 619 | delegates: 1.0.0 620 | readable-stream: 3.6.0 621 | dev: false 622 | 623 | /arg/4.1.3: 624 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 625 | dev: true 626 | 627 | /arg/5.0.2: 628 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 629 | dev: true 630 | 631 | /array-flatten/1.1.1: 632 | resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} 633 | dev: false 634 | 635 | /async-validator/4.2.5: 636 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} 637 | dev: false 638 | 639 | /asynckit/0.4.0: 640 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 641 | dev: false 642 | 643 | /autoprefixer/10.4.12_postcss@8.4.18: 644 | resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} 645 | engines: {node: ^10 || ^12 || >=14} 646 | hasBin: true 647 | peerDependencies: 648 | postcss: ^8.1.0 649 | dependencies: 650 | browserslist: 4.21.4 651 | caniuse-lite: 1.0.30001419 652 | fraction.js: 4.2.0 653 | normalize-range: 0.1.2 654 | picocolors: 1.0.0 655 | postcss: 8.4.18 656 | postcss-value-parser: 4.2.0 657 | dev: true 658 | 659 | /axios/1.1.3: 660 | resolution: {integrity: sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==} 661 | dependencies: 662 | follow-redirects: 1.15.2 663 | form-data: 4.0.0 664 | proxy-from-env: 1.1.0 665 | transitivePeerDependencies: 666 | - debug 667 | dev: false 668 | 669 | /balanced-match/1.0.2: 670 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 671 | 672 | /bcrypt/5.1.0: 673 | resolution: {integrity: sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==} 674 | engines: {node: '>= 10.0.0'} 675 | requiresBuild: true 676 | dependencies: 677 | '@mapbox/node-pre-gyp': 1.0.10 678 | node-addon-api: 5.0.0 679 | transitivePeerDependencies: 680 | - encoding 681 | - supports-color 682 | dev: false 683 | 684 | /binary-extensions/2.2.0: 685 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 686 | engines: {node: '>=8'} 687 | dev: true 688 | 689 | /body-parser/1.20.1: 690 | resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} 691 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 692 | dependencies: 693 | bytes: 3.1.2 694 | content-type: 1.0.4 695 | debug: 2.6.9 696 | depd: 2.0.0 697 | destroy: 1.2.0 698 | http-errors: 2.0.0 699 | iconv-lite: 0.4.24 700 | on-finished: 2.4.1 701 | qs: 6.11.0 702 | raw-body: 2.5.1 703 | type-is: 1.6.18 704 | unpipe: 1.0.0 705 | transitivePeerDependencies: 706 | - supports-color 707 | dev: false 708 | 709 | /brace-expansion/1.1.11: 710 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 711 | dependencies: 712 | balanced-match: 1.0.2 713 | concat-map: 0.0.1 714 | 715 | /braces/3.0.2: 716 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 717 | engines: {node: '>=8'} 718 | dependencies: 719 | fill-range: 7.0.1 720 | dev: true 721 | 722 | /browserslist/4.21.4: 723 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 724 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 725 | hasBin: true 726 | dependencies: 727 | caniuse-lite: 1.0.30001419 728 | electron-to-chromium: 1.4.283 729 | node-releases: 2.0.6 730 | update-browserslist-db: 1.0.10_browserslist@4.21.4 731 | dev: true 732 | 733 | /buffer-equal-constant-time/1.0.1: 734 | resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} 735 | dev: false 736 | 737 | /bytes/3.1.2: 738 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 739 | engines: {node: '>= 0.8'} 740 | dev: false 741 | 742 | /call-bind/1.0.2: 743 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 744 | dependencies: 745 | function-bind: 1.1.1 746 | get-intrinsic: 1.1.3 747 | dev: false 748 | 749 | /camelcase-css/2.0.1: 750 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 751 | engines: {node: '>= 6'} 752 | dev: true 753 | 754 | /caniuse-lite/1.0.30001419: 755 | resolution: {integrity: sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==} 756 | dev: true 757 | 758 | /chokidar/3.5.3: 759 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 760 | engines: {node: '>= 8.10.0'} 761 | dependencies: 762 | anymatch: 3.1.2 763 | braces: 3.0.2 764 | glob-parent: 5.1.2 765 | is-binary-path: 2.1.0 766 | is-glob: 4.0.3 767 | normalize-path: 3.0.0 768 | readdirp: 3.6.0 769 | optionalDependencies: 770 | fsevents: 2.3.2 771 | dev: true 772 | 773 | /chownr/2.0.0: 774 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 775 | engines: {node: '>=10'} 776 | dev: false 777 | 778 | /color-name/1.1.4: 779 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 780 | dev: true 781 | 782 | /color-support/1.1.3: 783 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 784 | hasBin: true 785 | dev: false 786 | 787 | /combined-stream/1.0.8: 788 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 789 | engines: {node: '>= 0.8'} 790 | dependencies: 791 | delayed-stream: 1.0.0 792 | dev: false 793 | 794 | /concat-map/0.0.1: 795 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 796 | 797 | /console-control-strings/1.1.0: 798 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 799 | dev: false 800 | 801 | /content-disposition/0.5.4: 802 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 803 | engines: {node: '>= 0.6'} 804 | dependencies: 805 | safe-buffer: 5.2.1 806 | dev: false 807 | 808 | /content-type/1.0.4: 809 | resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} 810 | engines: {node: '>= 0.6'} 811 | dev: false 812 | 813 | /cookie-parser/1.4.6: 814 | resolution: {integrity: sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==} 815 | engines: {node: '>= 0.8.0'} 816 | dependencies: 817 | cookie: 0.4.1 818 | cookie-signature: 1.0.6 819 | dev: false 820 | 821 | /cookie-signature/1.0.6: 822 | resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} 823 | dev: false 824 | 825 | /cookie/0.4.1: 826 | resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} 827 | engines: {node: '>= 0.6'} 828 | dev: false 829 | 830 | /cookie/0.5.0: 831 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 832 | engines: {node: '>= 0.6'} 833 | dev: false 834 | 835 | /cors/2.8.5: 836 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 837 | engines: {node: '>= 0.10'} 838 | dependencies: 839 | object-assign: 4.1.1 840 | vary: 1.1.2 841 | dev: false 842 | 843 | /create-require/1.1.1: 844 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 845 | dev: true 846 | 847 | /css-render/0.15.11: 848 | resolution: {integrity: sha512-hnLrHPUndVUTF5nmNPRey6hpixK02IPUGdEsm2xRjvJuewToyrVFx9Nmai8rgfVzhTFo5SJVh2PHAtzaIV8JKw==} 849 | dependencies: 850 | '@emotion/hash': 0.8.0 851 | '@types/node': 17.0.45 852 | csstype: 3.0.11 853 | dev: false 854 | 855 | /cssesc/3.0.0: 856 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 857 | engines: {node: '>=4'} 858 | hasBin: true 859 | dev: true 860 | 861 | /csstype/2.6.21: 862 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} 863 | 864 | /csstype/3.0.11: 865 | resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} 866 | dev: false 867 | 868 | /date-fns-tz/1.3.7_date-fns@2.29.3: 869 | resolution: {integrity: sha512-1t1b8zyJo+UI8aR+g3iqr5fkUHWpd58VBx8J/ZSQ+w7YrGlw80Ag4sA86qkfCXRBLmMc4I2US+aPMd4uKvwj5g==} 870 | peerDependencies: 871 | date-fns: '>=2.0.0' 872 | dependencies: 873 | date-fns: 2.29.3 874 | dev: false 875 | 876 | /date-fns/2.29.3: 877 | resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} 878 | engines: {node: '>=0.11'} 879 | dev: false 880 | 881 | /debug/2.6.9: 882 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 883 | peerDependencies: 884 | supports-color: '*' 885 | peerDependenciesMeta: 886 | supports-color: 887 | optional: true 888 | dependencies: 889 | ms: 2.0.0 890 | dev: false 891 | 892 | /debug/3.2.7_supports-color@5.5.0: 893 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 894 | peerDependencies: 895 | supports-color: '*' 896 | peerDependenciesMeta: 897 | supports-color: 898 | optional: true 899 | dependencies: 900 | ms: 2.1.3 901 | supports-color: 5.5.0 902 | dev: true 903 | 904 | /debug/4.3.4: 905 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 906 | engines: {node: '>=6.0'} 907 | peerDependencies: 908 | supports-color: '*' 909 | peerDependenciesMeta: 910 | supports-color: 911 | optional: true 912 | dependencies: 913 | ms: 2.1.2 914 | dev: false 915 | 916 | /defined/1.0.1: 917 | resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} 918 | dev: true 919 | 920 | /delayed-stream/1.0.0: 921 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 922 | engines: {node: '>=0.4.0'} 923 | dev: false 924 | 925 | /delegates/1.0.0: 926 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 927 | dev: false 928 | 929 | /depd/2.0.0: 930 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 931 | engines: {node: '>= 0.8'} 932 | dev: false 933 | 934 | /destroy/1.2.0: 935 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 936 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 937 | dev: false 938 | 939 | /detect-libc/2.0.1: 940 | resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} 941 | engines: {node: '>=8'} 942 | dev: false 943 | 944 | /detective/5.2.1: 945 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} 946 | engines: {node: '>=0.8.0'} 947 | hasBin: true 948 | dependencies: 949 | acorn-node: 1.8.2 950 | defined: 1.0.1 951 | minimist: 1.2.7 952 | dev: true 953 | 954 | /didyoumean/1.2.2: 955 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 956 | dev: true 957 | 958 | /diff/4.0.2: 959 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 960 | engines: {node: '>=0.3.1'} 961 | dev: true 962 | 963 | /dlv/1.1.3: 964 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 965 | dev: true 966 | 967 | /dotenv/16.0.3: 968 | resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} 969 | engines: {node: '>=12'} 970 | dev: false 971 | 972 | /ecdsa-sig-formatter/1.0.11: 973 | resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} 974 | dependencies: 975 | safe-buffer: 5.2.1 976 | dev: false 977 | 978 | /ee-first/1.1.1: 979 | resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} 980 | dev: false 981 | 982 | /electron-to-chromium/1.4.283: 983 | resolution: {integrity: sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==} 984 | dev: true 985 | 986 | /emoji-regex/8.0.0: 987 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 988 | dev: false 989 | 990 | /encodeurl/1.0.2: 991 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 992 | engines: {node: '>= 0.8'} 993 | dev: false 994 | 995 | /esbuild-android-64/0.15.11: 996 | resolution: {integrity: sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw==} 997 | engines: {node: '>=12'} 998 | cpu: [x64] 999 | os: [android] 1000 | requiresBuild: true 1001 | optional: true 1002 | 1003 | /esbuild-android-arm64/0.15.11: 1004 | resolution: {integrity: sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ==} 1005 | engines: {node: '>=12'} 1006 | cpu: [arm64] 1007 | os: [android] 1008 | requiresBuild: true 1009 | optional: true 1010 | 1011 | /esbuild-darwin-64/0.15.11: 1012 | resolution: {integrity: sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA==} 1013 | engines: {node: '>=12'} 1014 | cpu: [x64] 1015 | os: [darwin] 1016 | requiresBuild: true 1017 | optional: true 1018 | 1019 | /esbuild-darwin-arm64/0.15.11: 1020 | resolution: {integrity: sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ==} 1021 | engines: {node: '>=12'} 1022 | cpu: [arm64] 1023 | os: [darwin] 1024 | requiresBuild: true 1025 | optional: true 1026 | 1027 | /esbuild-freebsd-64/0.15.11: 1028 | resolution: {integrity: sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg==} 1029 | engines: {node: '>=12'} 1030 | cpu: [x64] 1031 | os: [freebsd] 1032 | requiresBuild: true 1033 | optional: true 1034 | 1035 | /esbuild-freebsd-arm64/0.15.11: 1036 | resolution: {integrity: sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ==} 1037 | engines: {node: '>=12'} 1038 | cpu: [arm64] 1039 | os: [freebsd] 1040 | requiresBuild: true 1041 | optional: true 1042 | 1043 | /esbuild-linux-32/0.15.11: 1044 | resolution: {integrity: sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA==} 1045 | engines: {node: '>=12'} 1046 | cpu: [ia32] 1047 | os: [linux] 1048 | requiresBuild: true 1049 | optional: true 1050 | 1051 | /esbuild-linux-64/0.15.11: 1052 | resolution: {integrity: sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA==} 1053 | engines: {node: '>=12'} 1054 | cpu: [x64] 1055 | os: [linux] 1056 | requiresBuild: true 1057 | optional: true 1058 | 1059 | /esbuild-linux-arm/0.15.11: 1060 | resolution: {integrity: sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A==} 1061 | engines: {node: '>=12'} 1062 | cpu: [arm] 1063 | os: [linux] 1064 | requiresBuild: true 1065 | optional: true 1066 | 1067 | /esbuild-linux-arm64/0.15.11: 1068 | resolution: {integrity: sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw==} 1069 | engines: {node: '>=12'} 1070 | cpu: [arm64] 1071 | os: [linux] 1072 | requiresBuild: true 1073 | optional: true 1074 | 1075 | /esbuild-linux-mips64le/0.15.11: 1076 | resolution: {integrity: sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA==} 1077 | engines: {node: '>=12'} 1078 | cpu: [mips64el] 1079 | os: [linux] 1080 | requiresBuild: true 1081 | optional: true 1082 | 1083 | /esbuild-linux-ppc64le/0.15.11: 1084 | resolution: {integrity: sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg==} 1085 | engines: {node: '>=12'} 1086 | cpu: [ppc64] 1087 | os: [linux] 1088 | requiresBuild: true 1089 | optional: true 1090 | 1091 | /esbuild-linux-riscv64/0.15.11: 1092 | resolution: {integrity: sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw==} 1093 | engines: {node: '>=12'} 1094 | cpu: [riscv64] 1095 | os: [linux] 1096 | requiresBuild: true 1097 | optional: true 1098 | 1099 | /esbuild-linux-s390x/0.15.11: 1100 | resolution: {integrity: sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg==} 1101 | engines: {node: '>=12'} 1102 | cpu: [s390x] 1103 | os: [linux] 1104 | requiresBuild: true 1105 | optional: true 1106 | 1107 | /esbuild-netbsd-64/0.15.11: 1108 | resolution: {integrity: sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A==} 1109 | engines: {node: '>=12'} 1110 | cpu: [x64] 1111 | os: [netbsd] 1112 | requiresBuild: true 1113 | optional: true 1114 | 1115 | /esbuild-openbsd-64/0.15.11: 1116 | resolution: {integrity: sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ==} 1117 | engines: {node: '>=12'} 1118 | cpu: [x64] 1119 | os: [openbsd] 1120 | requiresBuild: true 1121 | optional: true 1122 | 1123 | /esbuild-sunos-64/0.15.11: 1124 | resolution: {integrity: sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw==} 1125 | engines: {node: '>=12'} 1126 | cpu: [x64] 1127 | os: [sunos] 1128 | requiresBuild: true 1129 | optional: true 1130 | 1131 | /esbuild-windows-32/0.15.11: 1132 | resolution: {integrity: sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q==} 1133 | engines: {node: '>=12'} 1134 | cpu: [ia32] 1135 | os: [win32] 1136 | requiresBuild: true 1137 | optional: true 1138 | 1139 | /esbuild-windows-64/0.15.11: 1140 | resolution: {integrity: sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ==} 1141 | engines: {node: '>=12'} 1142 | cpu: [x64] 1143 | os: [win32] 1144 | requiresBuild: true 1145 | optional: true 1146 | 1147 | /esbuild-windows-arm64/0.15.11: 1148 | resolution: {integrity: sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw==} 1149 | engines: {node: '>=12'} 1150 | cpu: [arm64] 1151 | os: [win32] 1152 | requiresBuild: true 1153 | optional: true 1154 | 1155 | /esbuild/0.15.11: 1156 | resolution: {integrity: sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg==} 1157 | engines: {node: '>=12'} 1158 | hasBin: true 1159 | requiresBuild: true 1160 | optionalDependencies: 1161 | '@esbuild/android-arm': 0.15.11 1162 | '@esbuild/linux-loong64': 0.15.11 1163 | esbuild-android-64: 0.15.11 1164 | esbuild-android-arm64: 0.15.11 1165 | esbuild-darwin-64: 0.15.11 1166 | esbuild-darwin-arm64: 0.15.11 1167 | esbuild-freebsd-64: 0.15.11 1168 | esbuild-freebsd-arm64: 0.15.11 1169 | esbuild-linux-32: 0.15.11 1170 | esbuild-linux-64: 0.15.11 1171 | esbuild-linux-arm: 0.15.11 1172 | esbuild-linux-arm64: 0.15.11 1173 | esbuild-linux-mips64le: 0.15.11 1174 | esbuild-linux-ppc64le: 0.15.11 1175 | esbuild-linux-riscv64: 0.15.11 1176 | esbuild-linux-s390x: 0.15.11 1177 | esbuild-netbsd-64: 0.15.11 1178 | esbuild-openbsd-64: 0.15.11 1179 | esbuild-sunos-64: 0.15.11 1180 | esbuild-windows-32: 0.15.11 1181 | esbuild-windows-64: 0.15.11 1182 | esbuild-windows-arm64: 0.15.11 1183 | 1184 | /escalade/3.1.1: 1185 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1186 | engines: {node: '>=6'} 1187 | dev: true 1188 | 1189 | /escape-html/1.0.3: 1190 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1191 | dev: false 1192 | 1193 | /estree-walker/2.0.2: 1194 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1195 | 1196 | /etag/1.8.1: 1197 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1198 | engines: {node: '>= 0.6'} 1199 | dev: false 1200 | 1201 | /evtd/0.2.4: 1202 | resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==} 1203 | dev: false 1204 | 1205 | /express/4.18.2: 1206 | resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} 1207 | engines: {node: '>= 0.10.0'} 1208 | dependencies: 1209 | accepts: 1.3.8 1210 | array-flatten: 1.1.1 1211 | body-parser: 1.20.1 1212 | content-disposition: 0.5.4 1213 | content-type: 1.0.4 1214 | cookie: 0.5.0 1215 | cookie-signature: 1.0.6 1216 | debug: 2.6.9 1217 | depd: 2.0.0 1218 | encodeurl: 1.0.2 1219 | escape-html: 1.0.3 1220 | etag: 1.8.1 1221 | finalhandler: 1.2.0 1222 | fresh: 0.5.2 1223 | http-errors: 2.0.0 1224 | merge-descriptors: 1.0.1 1225 | methods: 1.1.2 1226 | on-finished: 2.4.1 1227 | parseurl: 1.3.3 1228 | path-to-regexp: 0.1.7 1229 | proxy-addr: 2.0.7 1230 | qs: 6.11.0 1231 | range-parser: 1.2.1 1232 | safe-buffer: 5.2.1 1233 | send: 0.18.0 1234 | serve-static: 1.15.0 1235 | setprototypeof: 1.2.0 1236 | statuses: 2.0.1 1237 | type-is: 1.6.18 1238 | utils-merge: 1.0.1 1239 | vary: 1.1.2 1240 | transitivePeerDependencies: 1241 | - supports-color 1242 | dev: false 1243 | 1244 | /fast-glob/3.2.12: 1245 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1246 | engines: {node: '>=8.6.0'} 1247 | dependencies: 1248 | '@nodelib/fs.stat': 2.0.5 1249 | '@nodelib/fs.walk': 1.2.8 1250 | glob-parent: 5.1.2 1251 | merge2: 1.4.1 1252 | micromatch: 4.0.5 1253 | dev: true 1254 | 1255 | /fastq/1.13.0: 1256 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1257 | dependencies: 1258 | reusify: 1.0.4 1259 | dev: true 1260 | 1261 | /fill-range/7.0.1: 1262 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1263 | engines: {node: '>=8'} 1264 | dependencies: 1265 | to-regex-range: 5.0.1 1266 | dev: true 1267 | 1268 | /finalhandler/1.2.0: 1269 | resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} 1270 | engines: {node: '>= 0.8'} 1271 | dependencies: 1272 | debug: 2.6.9 1273 | encodeurl: 1.0.2 1274 | escape-html: 1.0.3 1275 | on-finished: 2.4.1 1276 | parseurl: 1.3.3 1277 | statuses: 2.0.1 1278 | unpipe: 1.0.0 1279 | transitivePeerDependencies: 1280 | - supports-color 1281 | dev: false 1282 | 1283 | /follow-redirects/1.15.2: 1284 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} 1285 | engines: {node: '>=4.0'} 1286 | peerDependencies: 1287 | debug: '*' 1288 | peerDependenciesMeta: 1289 | debug: 1290 | optional: true 1291 | dev: false 1292 | 1293 | /form-data/4.0.0: 1294 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1295 | engines: {node: '>= 6'} 1296 | dependencies: 1297 | asynckit: 0.4.0 1298 | combined-stream: 1.0.8 1299 | mime-types: 2.1.35 1300 | dev: false 1301 | 1302 | /forwarded/0.2.0: 1303 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1304 | engines: {node: '>= 0.6'} 1305 | dev: false 1306 | 1307 | /fraction.js/4.2.0: 1308 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 1309 | dev: true 1310 | 1311 | /fresh/0.5.2: 1312 | resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} 1313 | engines: {node: '>= 0.6'} 1314 | dev: false 1315 | 1316 | /fs-minipass/2.1.0: 1317 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 1318 | engines: {node: '>= 8'} 1319 | dependencies: 1320 | minipass: 3.3.4 1321 | dev: false 1322 | 1323 | /fs.realpath/1.0.0: 1324 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1325 | dev: false 1326 | 1327 | /fsevents/2.3.2: 1328 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1329 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1330 | os: [darwin] 1331 | requiresBuild: true 1332 | optional: true 1333 | 1334 | /function-bind/1.1.1: 1335 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1336 | 1337 | /fuse.js/6.6.2: 1338 | resolution: {integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==} 1339 | engines: {node: '>=10'} 1340 | dev: false 1341 | 1342 | /gauge/3.0.2: 1343 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} 1344 | engines: {node: '>=10'} 1345 | dependencies: 1346 | aproba: 2.0.0 1347 | color-support: 1.1.3 1348 | console-control-strings: 1.1.0 1349 | has-unicode: 2.0.1 1350 | object-assign: 4.1.1 1351 | signal-exit: 3.0.7 1352 | string-width: 4.2.3 1353 | strip-ansi: 6.0.1 1354 | wide-align: 1.1.5 1355 | dev: false 1356 | 1357 | /get-intrinsic/1.1.3: 1358 | resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 1359 | dependencies: 1360 | function-bind: 1.1.1 1361 | has: 1.0.3 1362 | has-symbols: 1.0.3 1363 | dev: false 1364 | 1365 | /glob-parent/5.1.2: 1366 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1367 | engines: {node: '>= 6'} 1368 | dependencies: 1369 | is-glob: 4.0.3 1370 | dev: true 1371 | 1372 | /glob-parent/6.0.2: 1373 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1374 | engines: {node: '>=10.13.0'} 1375 | dependencies: 1376 | is-glob: 4.0.3 1377 | dev: true 1378 | 1379 | /glob/7.2.3: 1380 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1381 | dependencies: 1382 | fs.realpath: 1.0.0 1383 | inflight: 1.0.6 1384 | inherits: 2.0.4 1385 | minimatch: 3.1.2 1386 | once: 1.4.0 1387 | path-is-absolute: 1.0.1 1388 | dev: false 1389 | 1390 | /has-flag/3.0.0: 1391 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1392 | engines: {node: '>=4'} 1393 | dev: true 1394 | 1395 | /has-symbols/1.0.3: 1396 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1397 | engines: {node: '>= 0.4'} 1398 | dev: false 1399 | 1400 | /has-unicode/2.0.1: 1401 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 1402 | dev: false 1403 | 1404 | /has/1.0.3: 1405 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1406 | engines: {node: '>= 0.4.0'} 1407 | dependencies: 1408 | function-bind: 1.1.1 1409 | 1410 | /highlight.js/11.6.0: 1411 | resolution: {integrity: sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==} 1412 | engines: {node: '>=12.0.0'} 1413 | dev: false 1414 | 1415 | /http-errors/2.0.0: 1416 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1417 | engines: {node: '>= 0.8'} 1418 | dependencies: 1419 | depd: 2.0.0 1420 | inherits: 2.0.4 1421 | setprototypeof: 1.2.0 1422 | statuses: 2.0.1 1423 | toidentifier: 1.0.1 1424 | dev: false 1425 | 1426 | /https-proxy-agent/5.0.1: 1427 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 1428 | engines: {node: '>= 6'} 1429 | dependencies: 1430 | agent-base: 6.0.2 1431 | debug: 4.3.4 1432 | transitivePeerDependencies: 1433 | - supports-color 1434 | dev: false 1435 | 1436 | /iconv-lite/0.4.24: 1437 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1438 | engines: {node: '>=0.10.0'} 1439 | dependencies: 1440 | safer-buffer: 2.1.2 1441 | dev: false 1442 | 1443 | /ignore-by-default/1.0.1: 1444 | resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} 1445 | dev: true 1446 | 1447 | /inflight/1.0.6: 1448 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1449 | dependencies: 1450 | once: 1.4.0 1451 | wrappy: 1.0.2 1452 | dev: false 1453 | 1454 | /inherits/2.0.4: 1455 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1456 | dev: false 1457 | 1458 | /ipaddr.js/1.9.1: 1459 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1460 | engines: {node: '>= 0.10'} 1461 | dev: false 1462 | 1463 | /is-binary-path/2.1.0: 1464 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1465 | engines: {node: '>=8'} 1466 | dependencies: 1467 | binary-extensions: 2.2.0 1468 | dev: true 1469 | 1470 | /is-core-module/2.10.0: 1471 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} 1472 | dependencies: 1473 | has: 1.0.3 1474 | 1475 | /is-extglob/2.1.1: 1476 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1477 | engines: {node: '>=0.10.0'} 1478 | dev: true 1479 | 1480 | /is-fullwidth-code-point/3.0.0: 1481 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1482 | engines: {node: '>=8'} 1483 | dev: false 1484 | 1485 | /is-glob/4.0.3: 1486 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1487 | engines: {node: '>=0.10.0'} 1488 | dependencies: 1489 | is-extglob: 2.1.1 1490 | dev: true 1491 | 1492 | /is-number/7.0.0: 1493 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1494 | engines: {node: '>=0.12.0'} 1495 | dev: true 1496 | 1497 | /jsonwebtoken/8.5.1: 1498 | resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} 1499 | engines: {node: '>=4', npm: '>=1.4.28'} 1500 | dependencies: 1501 | jws: 3.2.2 1502 | lodash.includes: 4.3.0 1503 | lodash.isboolean: 3.0.3 1504 | lodash.isinteger: 4.0.4 1505 | lodash.isnumber: 3.0.3 1506 | lodash.isplainobject: 4.0.6 1507 | lodash.isstring: 4.0.1 1508 | lodash.once: 4.1.1 1509 | ms: 2.1.3 1510 | semver: 5.7.1 1511 | dev: false 1512 | 1513 | /jwa/1.4.1: 1514 | resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} 1515 | dependencies: 1516 | buffer-equal-constant-time: 1.0.1 1517 | ecdsa-sig-formatter: 1.0.11 1518 | safe-buffer: 5.2.1 1519 | dev: false 1520 | 1521 | /jws/3.2.2: 1522 | resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} 1523 | dependencies: 1524 | jwa: 1.4.1 1525 | safe-buffer: 5.2.1 1526 | dev: false 1527 | 1528 | /lilconfig/2.0.6: 1529 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 1530 | engines: {node: '>=10'} 1531 | dev: true 1532 | 1533 | /lodash-es/4.17.21: 1534 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 1535 | dev: false 1536 | 1537 | /lodash.includes/4.3.0: 1538 | resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} 1539 | dev: false 1540 | 1541 | /lodash.isboolean/3.0.3: 1542 | resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} 1543 | dev: false 1544 | 1545 | /lodash.isinteger/4.0.4: 1546 | resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} 1547 | dev: false 1548 | 1549 | /lodash.isnumber/3.0.3: 1550 | resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} 1551 | dev: false 1552 | 1553 | /lodash.isplainobject/4.0.6: 1554 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 1555 | dev: false 1556 | 1557 | /lodash.isstring/4.0.1: 1558 | resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} 1559 | dev: false 1560 | 1561 | /lodash.once/4.1.1: 1562 | resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} 1563 | dev: false 1564 | 1565 | /lodash/4.17.21: 1566 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1567 | dev: false 1568 | 1569 | /lru-cache/6.0.0: 1570 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1571 | engines: {node: '>=10'} 1572 | dependencies: 1573 | yallist: 4.0.0 1574 | 1575 | /magic-string/0.25.9: 1576 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1577 | dependencies: 1578 | sourcemap-codec: 1.4.8 1579 | 1580 | /make-dir/3.1.0: 1581 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 1582 | engines: {node: '>=8'} 1583 | dependencies: 1584 | semver: 6.3.0 1585 | dev: false 1586 | 1587 | /make-error/1.3.6: 1588 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1589 | dev: true 1590 | 1591 | /media-typer/0.3.0: 1592 | resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} 1593 | engines: {node: '>= 0.6'} 1594 | dev: false 1595 | 1596 | /merge-descriptors/1.0.1: 1597 | resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} 1598 | dev: false 1599 | 1600 | /merge2/1.4.1: 1601 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1602 | engines: {node: '>= 8'} 1603 | dev: true 1604 | 1605 | /methods/1.1.2: 1606 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1607 | engines: {node: '>= 0.6'} 1608 | dev: false 1609 | 1610 | /micromatch/4.0.5: 1611 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1612 | engines: {node: '>=8.6'} 1613 | dependencies: 1614 | braces: 3.0.2 1615 | picomatch: 2.3.1 1616 | dev: true 1617 | 1618 | /mime-db/1.52.0: 1619 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1620 | engines: {node: '>= 0.6'} 1621 | dev: false 1622 | 1623 | /mime-types/2.1.35: 1624 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1625 | engines: {node: '>= 0.6'} 1626 | dependencies: 1627 | mime-db: 1.52.0 1628 | dev: false 1629 | 1630 | /mime/1.6.0: 1631 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 1632 | engines: {node: '>=4'} 1633 | hasBin: true 1634 | dev: false 1635 | 1636 | /minimatch/3.1.2: 1637 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1638 | dependencies: 1639 | brace-expansion: 1.1.11 1640 | 1641 | /minimist/1.2.7: 1642 | resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} 1643 | dev: true 1644 | 1645 | /minipass/3.3.4: 1646 | resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} 1647 | engines: {node: '>=8'} 1648 | dependencies: 1649 | yallist: 4.0.0 1650 | dev: false 1651 | 1652 | /minizlib/2.1.2: 1653 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 1654 | engines: {node: '>= 8'} 1655 | dependencies: 1656 | minipass: 3.3.4 1657 | yallist: 4.0.0 1658 | dev: false 1659 | 1660 | /mkdirp/1.0.4: 1661 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 1662 | engines: {node: '>=10'} 1663 | hasBin: true 1664 | dev: false 1665 | 1666 | /ms/2.0.0: 1667 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1668 | dev: false 1669 | 1670 | /ms/2.1.2: 1671 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1672 | dev: false 1673 | 1674 | /ms/2.1.3: 1675 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1676 | 1677 | /naive-ui/2.33.5_vue@3.2.41: 1678 | resolution: {integrity: sha512-O87zwOduut3Xk9NzGIX+LZYr6sW/Y0oGuNJ6T2dka+14CtHD9iidi8gdxg6obhMpzdwa3SnlxO7nzDLqmXVUwA==} 1679 | peerDependencies: 1680 | vue: ^3.0.0 1681 | dependencies: 1682 | '@css-render/plugin-bem': 0.15.11_css-render@0.15.11 1683 | '@css-render/vue3-ssr': 0.15.11_vue@3.2.41 1684 | '@types/lodash': 4.14.186 1685 | '@types/lodash-es': 4.17.6 1686 | async-validator: 4.2.5 1687 | css-render: 0.15.11 1688 | date-fns: 2.29.3 1689 | date-fns-tz: 1.3.7_date-fns@2.29.3 1690 | evtd: 0.2.4 1691 | highlight.js: 11.6.0 1692 | lodash: 4.17.21 1693 | lodash-es: 4.17.21 1694 | seemly: 0.3.6 1695 | treemate: 0.3.11 1696 | vdirs: 0.1.8_vue@3.2.41 1697 | vooks: 0.2.12_vue@3.2.41 1698 | vue: 3.2.41 1699 | vueuc: 0.4.49_vue@3.2.41 1700 | dev: false 1701 | 1702 | /nanoid/3.3.4: 1703 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1704 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1705 | hasBin: true 1706 | 1707 | /negotiator/0.6.3: 1708 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1709 | engines: {node: '>= 0.6'} 1710 | dev: false 1711 | 1712 | /node-addon-api/5.0.0: 1713 | resolution: {integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==} 1714 | dev: false 1715 | 1716 | /node-fetch/2.6.7: 1717 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 1718 | engines: {node: 4.x || >=6.0.0} 1719 | peerDependencies: 1720 | encoding: ^0.1.0 1721 | peerDependenciesMeta: 1722 | encoding: 1723 | optional: true 1724 | dependencies: 1725 | whatwg-url: 5.0.0 1726 | dev: false 1727 | 1728 | /node-releases/2.0.6: 1729 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 1730 | dev: true 1731 | 1732 | /nodemon/2.0.20: 1733 | resolution: {integrity: sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==} 1734 | engines: {node: '>=8.10.0'} 1735 | hasBin: true 1736 | dependencies: 1737 | chokidar: 3.5.3 1738 | debug: 3.2.7_supports-color@5.5.0 1739 | ignore-by-default: 1.0.1 1740 | minimatch: 3.1.2 1741 | pstree.remy: 1.1.8 1742 | semver: 5.7.1 1743 | simple-update-notifier: 1.0.7 1744 | supports-color: 5.5.0 1745 | touch: 3.1.0 1746 | undefsafe: 2.0.5 1747 | dev: true 1748 | 1749 | /nopt/1.0.10: 1750 | resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} 1751 | hasBin: true 1752 | dependencies: 1753 | abbrev: 1.1.1 1754 | dev: true 1755 | 1756 | /nopt/5.0.0: 1757 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 1758 | engines: {node: '>=6'} 1759 | hasBin: true 1760 | dependencies: 1761 | abbrev: 1.1.1 1762 | dev: false 1763 | 1764 | /normalize-path/3.0.0: 1765 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1766 | engines: {node: '>=0.10.0'} 1767 | dev: true 1768 | 1769 | /normalize-range/0.1.2: 1770 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1771 | engines: {node: '>=0.10.0'} 1772 | dev: true 1773 | 1774 | /npmlog/5.0.1: 1775 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 1776 | dependencies: 1777 | are-we-there-yet: 2.0.0 1778 | console-control-strings: 1.1.0 1779 | gauge: 3.0.2 1780 | set-blocking: 2.0.0 1781 | dev: false 1782 | 1783 | /object-assign/4.1.1: 1784 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1785 | engines: {node: '>=0.10.0'} 1786 | dev: false 1787 | 1788 | /object-hash/3.0.0: 1789 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1790 | engines: {node: '>= 6'} 1791 | dev: true 1792 | 1793 | /object-inspect/1.12.2: 1794 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 1795 | dev: false 1796 | 1797 | /on-finished/2.4.1: 1798 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1799 | engines: {node: '>= 0.8'} 1800 | dependencies: 1801 | ee-first: 1.1.1 1802 | dev: false 1803 | 1804 | /once/1.4.0: 1805 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1806 | dependencies: 1807 | wrappy: 1.0.2 1808 | dev: false 1809 | 1810 | /parseurl/1.3.3: 1811 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1812 | engines: {node: '>= 0.8'} 1813 | dev: false 1814 | 1815 | /path-is-absolute/1.0.1: 1816 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1817 | engines: {node: '>=0.10.0'} 1818 | dev: false 1819 | 1820 | /path-parse/1.0.7: 1821 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1822 | 1823 | /path-to-regexp/0.1.7: 1824 | resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} 1825 | dev: false 1826 | 1827 | /picocolors/1.0.0: 1828 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1829 | 1830 | /picomatch/2.3.1: 1831 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1832 | engines: {node: '>=8.6'} 1833 | dev: true 1834 | 1835 | /pify/2.3.0: 1836 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1837 | engines: {node: '>=0.10.0'} 1838 | dev: true 1839 | 1840 | /ping/0.4.2: 1841 | resolution: {integrity: sha512-1uAw0bzHtrPbPo2s6no06oZAzY6KqKclEJR1JRZKIHKXKlPdrz9N0/1MPPB+BbrvMjN3Mk0pcod3bfLNZFRo9w==} 1842 | engines: {node: '>=4.0.0'} 1843 | dependencies: 1844 | q: 1.5.1 1845 | underscore: 1.13.6 1846 | dev: false 1847 | 1848 | /postcss-import/14.1.0_postcss@8.4.18: 1849 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 1850 | engines: {node: '>=10.0.0'} 1851 | peerDependencies: 1852 | postcss: ^8.0.0 1853 | dependencies: 1854 | postcss: 8.4.18 1855 | postcss-value-parser: 4.2.0 1856 | read-cache: 1.0.0 1857 | resolve: 1.22.1 1858 | dev: true 1859 | 1860 | /postcss-js/4.0.0_postcss@8.4.18: 1861 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} 1862 | engines: {node: ^12 || ^14 || >= 16} 1863 | peerDependencies: 1864 | postcss: ^8.3.3 1865 | dependencies: 1866 | camelcase-css: 2.0.1 1867 | postcss: 8.4.18 1868 | dev: true 1869 | 1870 | /postcss-load-config/3.1.4_postcss@8.4.18: 1871 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1872 | engines: {node: '>= 10'} 1873 | peerDependencies: 1874 | postcss: '>=8.0.9' 1875 | ts-node: '>=9.0.0' 1876 | peerDependenciesMeta: 1877 | postcss: 1878 | optional: true 1879 | ts-node: 1880 | optional: true 1881 | dependencies: 1882 | lilconfig: 2.0.6 1883 | postcss: 8.4.18 1884 | yaml: 1.10.2 1885 | dev: true 1886 | 1887 | /postcss-nested/5.0.6_postcss@8.4.18: 1888 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} 1889 | engines: {node: '>=12.0'} 1890 | peerDependencies: 1891 | postcss: ^8.2.14 1892 | dependencies: 1893 | postcss: 8.4.18 1894 | postcss-selector-parser: 6.0.10 1895 | dev: true 1896 | 1897 | /postcss-selector-parser/6.0.10: 1898 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 1899 | engines: {node: '>=4'} 1900 | dependencies: 1901 | cssesc: 3.0.0 1902 | util-deprecate: 1.0.2 1903 | dev: true 1904 | 1905 | /postcss-value-parser/4.2.0: 1906 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1907 | dev: true 1908 | 1909 | /postcss/8.4.18: 1910 | resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} 1911 | engines: {node: ^10 || ^12 || >=14} 1912 | dependencies: 1913 | nanoid: 3.3.4 1914 | picocolors: 1.0.0 1915 | source-map-js: 1.0.2 1916 | 1917 | /proxy-addr/2.0.7: 1918 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1919 | engines: {node: '>= 0.10'} 1920 | dependencies: 1921 | forwarded: 0.2.0 1922 | ipaddr.js: 1.9.1 1923 | dev: false 1924 | 1925 | /proxy-from-env/1.1.0: 1926 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 1927 | dev: false 1928 | 1929 | /pstree.remy/1.1.8: 1930 | resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} 1931 | dev: true 1932 | 1933 | /q/1.5.1: 1934 | resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} 1935 | engines: {node: '>=0.6.0', teleport: '>=0.2.0'} 1936 | dev: false 1937 | 1938 | /qs/6.11.0: 1939 | resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} 1940 | engines: {node: '>=0.6'} 1941 | dependencies: 1942 | side-channel: 1.0.4 1943 | dev: false 1944 | 1945 | /queue-microtask/1.2.3: 1946 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1947 | dev: true 1948 | 1949 | /quick-lru/5.1.1: 1950 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 1951 | engines: {node: '>=10'} 1952 | dev: true 1953 | 1954 | /range-parser/1.2.1: 1955 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1956 | engines: {node: '>= 0.6'} 1957 | dev: false 1958 | 1959 | /raw-body/2.5.1: 1960 | resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} 1961 | engines: {node: '>= 0.8'} 1962 | dependencies: 1963 | bytes: 3.1.2 1964 | http-errors: 2.0.0 1965 | iconv-lite: 0.4.24 1966 | unpipe: 1.0.0 1967 | dev: false 1968 | 1969 | /read-cache/1.0.0: 1970 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1971 | dependencies: 1972 | pify: 2.3.0 1973 | dev: true 1974 | 1975 | /readable-stream/3.6.0: 1976 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 1977 | engines: {node: '>= 6'} 1978 | dependencies: 1979 | inherits: 2.0.4 1980 | string_decoder: 1.3.0 1981 | util-deprecate: 1.0.2 1982 | dev: false 1983 | 1984 | /readdirp/3.6.0: 1985 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1986 | engines: {node: '>=8.10.0'} 1987 | dependencies: 1988 | picomatch: 2.3.1 1989 | dev: true 1990 | 1991 | /resolve/1.22.1: 1992 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1993 | hasBin: true 1994 | dependencies: 1995 | is-core-module: 2.10.0 1996 | path-parse: 1.0.7 1997 | supports-preserve-symlinks-flag: 1.0.0 1998 | 1999 | /reusify/1.0.4: 2000 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2001 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2002 | dev: true 2003 | 2004 | /rimraf/3.0.2: 2005 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2006 | hasBin: true 2007 | dependencies: 2008 | glob: 7.2.3 2009 | dev: false 2010 | 2011 | /rollup/2.78.1: 2012 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 2013 | engines: {node: '>=10.0.0'} 2014 | hasBin: true 2015 | optionalDependencies: 2016 | fsevents: 2.3.2 2017 | 2018 | /run-parallel/1.2.0: 2019 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2020 | dependencies: 2021 | queue-microtask: 1.2.3 2022 | dev: true 2023 | 2024 | /safe-buffer/5.2.1: 2025 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2026 | dev: false 2027 | 2028 | /safer-buffer/2.1.2: 2029 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2030 | dev: false 2031 | 2032 | /seemly/0.3.6: 2033 | resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==} 2034 | dev: false 2035 | 2036 | /semver/5.7.1: 2037 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 2038 | hasBin: true 2039 | 2040 | /semver/6.3.0: 2041 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2042 | hasBin: true 2043 | dev: false 2044 | 2045 | /semver/7.0.0: 2046 | resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} 2047 | hasBin: true 2048 | dev: true 2049 | 2050 | /semver/7.3.8: 2051 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 2052 | engines: {node: '>=10'} 2053 | hasBin: true 2054 | dependencies: 2055 | lru-cache: 6.0.0 2056 | 2057 | /send/0.18.0: 2058 | resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} 2059 | engines: {node: '>= 0.8.0'} 2060 | dependencies: 2061 | debug: 2.6.9 2062 | depd: 2.0.0 2063 | destroy: 1.2.0 2064 | encodeurl: 1.0.2 2065 | escape-html: 1.0.3 2066 | etag: 1.8.1 2067 | fresh: 0.5.2 2068 | http-errors: 2.0.0 2069 | mime: 1.6.0 2070 | ms: 2.1.3 2071 | on-finished: 2.4.1 2072 | range-parser: 1.2.1 2073 | statuses: 2.0.1 2074 | transitivePeerDependencies: 2075 | - supports-color 2076 | dev: false 2077 | 2078 | /serve-static/1.15.0: 2079 | resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 2080 | engines: {node: '>= 0.8.0'} 2081 | dependencies: 2082 | encodeurl: 1.0.2 2083 | escape-html: 1.0.3 2084 | parseurl: 1.3.3 2085 | send: 0.18.0 2086 | transitivePeerDependencies: 2087 | - supports-color 2088 | dev: false 2089 | 2090 | /set-blocking/2.0.0: 2091 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 2092 | dev: false 2093 | 2094 | /setprototypeof/1.2.0: 2095 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 2096 | dev: false 2097 | 2098 | /side-channel/1.0.4: 2099 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2100 | dependencies: 2101 | call-bind: 1.0.2 2102 | get-intrinsic: 1.1.3 2103 | object-inspect: 1.12.2 2104 | dev: false 2105 | 2106 | /signal-exit/3.0.7: 2107 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2108 | dev: false 2109 | 2110 | /simple-update-notifier/1.0.7: 2111 | resolution: {integrity: sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==} 2112 | engines: {node: '>=8.10.0'} 2113 | dependencies: 2114 | semver: 7.0.0 2115 | dev: true 2116 | 2117 | /source-map-js/1.0.2: 2118 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2119 | engines: {node: '>=0.10.0'} 2120 | 2121 | /source-map/0.6.1: 2122 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2123 | engines: {node: '>=0.10.0'} 2124 | 2125 | /sourcemap-codec/1.4.8: 2126 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2127 | 2128 | /statuses/2.0.1: 2129 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 2130 | engines: {node: '>= 0.8'} 2131 | dev: false 2132 | 2133 | /string-width/4.2.3: 2134 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2135 | engines: {node: '>=8'} 2136 | dependencies: 2137 | emoji-regex: 8.0.0 2138 | is-fullwidth-code-point: 3.0.0 2139 | strip-ansi: 6.0.1 2140 | dev: false 2141 | 2142 | /string_decoder/1.3.0: 2143 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 2144 | dependencies: 2145 | safe-buffer: 5.2.1 2146 | dev: false 2147 | 2148 | /strip-ansi/6.0.1: 2149 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2150 | engines: {node: '>=8'} 2151 | dependencies: 2152 | ansi-regex: 5.0.1 2153 | dev: false 2154 | 2155 | /supports-color/5.5.0: 2156 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2157 | engines: {node: '>=4'} 2158 | dependencies: 2159 | has-flag: 3.0.0 2160 | dev: true 2161 | 2162 | /supports-preserve-symlinks-flag/1.0.0: 2163 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2164 | engines: {node: '>= 0.4'} 2165 | 2166 | /tailwindcss/3.1.8: 2167 | resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} 2168 | engines: {node: '>=12.13.0'} 2169 | hasBin: true 2170 | dependencies: 2171 | arg: 5.0.2 2172 | chokidar: 3.5.3 2173 | color-name: 1.1.4 2174 | detective: 5.2.1 2175 | didyoumean: 1.2.2 2176 | dlv: 1.1.3 2177 | fast-glob: 3.2.12 2178 | glob-parent: 6.0.2 2179 | is-glob: 4.0.3 2180 | lilconfig: 2.0.6 2181 | normalize-path: 3.0.0 2182 | object-hash: 3.0.0 2183 | picocolors: 1.0.0 2184 | postcss: 8.4.18 2185 | postcss-import: 14.1.0_postcss@8.4.18 2186 | postcss-js: 4.0.0_postcss@8.4.18 2187 | postcss-load-config: 3.1.4_postcss@8.4.18 2188 | postcss-nested: 5.0.6_postcss@8.4.18 2189 | postcss-selector-parser: 6.0.10 2190 | postcss-value-parser: 4.2.0 2191 | quick-lru: 5.1.1 2192 | resolve: 1.22.1 2193 | transitivePeerDependencies: 2194 | - ts-node 2195 | dev: true 2196 | 2197 | /tar/6.1.11: 2198 | resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} 2199 | engines: {node: '>= 10'} 2200 | dependencies: 2201 | chownr: 2.0.0 2202 | fs-minipass: 2.1.0 2203 | minipass: 3.3.4 2204 | minizlib: 2.1.2 2205 | mkdirp: 1.0.4 2206 | yallist: 4.0.0 2207 | dev: false 2208 | 2209 | /to-fast-properties/2.0.0: 2210 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2211 | engines: {node: '>=4'} 2212 | 2213 | /to-regex-range/5.0.1: 2214 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2215 | engines: {node: '>=8.0'} 2216 | dependencies: 2217 | is-number: 7.0.0 2218 | dev: true 2219 | 2220 | /toidentifier/1.0.1: 2221 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 2222 | engines: {node: '>=0.6'} 2223 | dev: false 2224 | 2225 | /touch/3.1.0: 2226 | resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} 2227 | hasBin: true 2228 | dependencies: 2229 | nopt: 1.0.10 2230 | dev: true 2231 | 2232 | /tr46/0.0.3: 2233 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2234 | dev: false 2235 | 2236 | /treemate/0.3.11: 2237 | resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==} 2238 | dev: false 2239 | 2240 | /ts-node/10.9.1_o6ib7qqltxpe7qrskddglns2ga: 2241 | resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} 2242 | hasBin: true 2243 | peerDependencies: 2244 | '@swc/core': '>=1.2.50' 2245 | '@swc/wasm': '>=1.2.50' 2246 | '@types/node': '*' 2247 | typescript: '>=2.7' 2248 | peerDependenciesMeta: 2249 | '@swc/core': 2250 | optional: true 2251 | '@swc/wasm': 2252 | optional: true 2253 | dependencies: 2254 | '@cspotcode/source-map-support': 0.8.1 2255 | '@tsconfig/node10': 1.0.9 2256 | '@tsconfig/node12': 1.0.11 2257 | '@tsconfig/node14': 1.0.3 2258 | '@tsconfig/node16': 1.0.3 2259 | '@types/node': 18.11.0 2260 | acorn: 8.8.0 2261 | acorn-walk: 8.2.0 2262 | arg: 4.1.3 2263 | create-require: 1.1.1 2264 | diff: 4.0.2 2265 | make-error: 1.3.6 2266 | typescript: 4.8.4 2267 | v8-compile-cache-lib: 3.0.1 2268 | yn: 3.1.1 2269 | dev: true 2270 | 2271 | /type-is/1.6.18: 2272 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 2273 | engines: {node: '>= 0.6'} 2274 | dependencies: 2275 | media-typer: 0.3.0 2276 | mime-types: 2.1.35 2277 | dev: false 2278 | 2279 | /typescript/4.8.4: 2280 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} 2281 | engines: {node: '>=4.2.0'} 2282 | hasBin: true 2283 | dev: true 2284 | 2285 | /undefsafe/2.0.5: 2286 | resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} 2287 | dev: true 2288 | 2289 | /underscore/1.13.6: 2290 | resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} 2291 | dev: false 2292 | 2293 | /unpipe/1.0.0: 2294 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 2295 | engines: {node: '>= 0.8'} 2296 | dev: false 2297 | 2298 | /update-browserslist-db/1.0.10_browserslist@4.21.4: 2299 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 2300 | hasBin: true 2301 | peerDependencies: 2302 | browserslist: '>= 4.21.0' 2303 | dependencies: 2304 | browserslist: 4.21.4 2305 | escalade: 3.1.1 2306 | picocolors: 1.0.0 2307 | dev: true 2308 | 2309 | /util-deprecate/1.0.2: 2310 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2311 | 2312 | /utils-merge/1.0.1: 2313 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} 2314 | engines: {node: '>= 0.4.0'} 2315 | dev: false 2316 | 2317 | /v8-compile-cache-lib/3.0.1: 2318 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 2319 | dev: true 2320 | 2321 | /vary/1.1.2: 2322 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 2323 | engines: {node: '>= 0.8'} 2324 | dev: false 2325 | 2326 | /vdirs/0.1.8_vue@3.2.41: 2327 | resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} 2328 | peerDependencies: 2329 | vue: ^3.0.11 2330 | dependencies: 2331 | evtd: 0.2.4 2332 | vue: 3.2.41 2333 | dev: false 2334 | 2335 | /vfonts/0.0.3: 2336 | resolution: {integrity: sha512-nguyw8L6Un8eelg1vQ31vIU2ESxqid7EYmy8V+MDeMaHBqaRSkg3dTBToC1PR00D89UzS/SLkfYPnx0Wf23IQQ==} 2337 | dev: false 2338 | 2339 | /vite/3.1.8: 2340 | resolution: {integrity: sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==} 2341 | engines: {node: ^14.18.0 || >=16.0.0} 2342 | hasBin: true 2343 | peerDependencies: 2344 | less: '*' 2345 | sass: '*' 2346 | stylus: '*' 2347 | terser: ^5.4.0 2348 | peerDependenciesMeta: 2349 | less: 2350 | optional: true 2351 | sass: 2352 | optional: true 2353 | stylus: 2354 | optional: true 2355 | terser: 2356 | optional: true 2357 | dependencies: 2358 | esbuild: 0.15.11 2359 | postcss: 8.4.18 2360 | resolve: 1.22.1 2361 | rollup: 2.78.1 2362 | optionalDependencies: 2363 | fsevents: 2.3.2 2364 | 2365 | /vooks/0.2.12_vue@3.2.41: 2366 | resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==} 2367 | peerDependencies: 2368 | vue: ^3.0.0 2369 | dependencies: 2370 | evtd: 0.2.4 2371 | vue: 3.2.41 2372 | dev: false 2373 | 2374 | /vue-demi/0.13.11_vue@3.2.41: 2375 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} 2376 | engines: {node: '>=12'} 2377 | hasBin: true 2378 | requiresBuild: true 2379 | peerDependencies: 2380 | '@vue/composition-api': ^1.0.0-rc.1 2381 | vue: ^3.0.0-0 || ^2.6.0 2382 | peerDependenciesMeta: 2383 | '@vue/composition-api': 2384 | optional: true 2385 | dependencies: 2386 | vue: 3.2.41 2387 | dev: false 2388 | 2389 | /vue-router/4.1.5_vue@3.2.41: 2390 | resolution: {integrity: sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==} 2391 | peerDependencies: 2392 | vue: ^3.2.0 2393 | dependencies: 2394 | '@vue/devtools-api': 6.4.4 2395 | vue: 3.2.41 2396 | dev: false 2397 | 2398 | /vue-tsc/0.40.13_typescript@4.8.4: 2399 | resolution: {integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==} 2400 | hasBin: true 2401 | peerDependencies: 2402 | typescript: '*' 2403 | dependencies: 2404 | '@volar/vue-language-core': 0.40.13 2405 | '@volar/vue-typescript': 0.40.13 2406 | typescript: 4.8.4 2407 | dev: true 2408 | 2409 | /vue/3.2.41: 2410 | resolution: {integrity: sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==} 2411 | dependencies: 2412 | '@vue/compiler-dom': 3.2.41 2413 | '@vue/compiler-sfc': 3.2.41 2414 | '@vue/runtime-dom': 3.2.41 2415 | '@vue/server-renderer': 3.2.41_vue@3.2.41 2416 | '@vue/shared': 3.2.41 2417 | 2418 | /vueuc/0.4.49_vue@3.2.41: 2419 | resolution: {integrity: sha512-WarAC44a/Yx78CxkAgROYLq+LkAeCGA/6wHidVoFmHLbzyF3SiP2nzRNGD/8zJeJInXv18EnWK6A//eGgMMq8w==} 2420 | peerDependencies: 2421 | vue: ^3.0.11 2422 | dependencies: 2423 | '@css-render/vue3-ssr': 0.15.11_vue@3.2.41 2424 | '@juggle/resize-observer': 3.4.0 2425 | css-render: 0.15.11 2426 | evtd: 0.2.4 2427 | seemly: 0.3.6 2428 | vdirs: 0.1.8_vue@3.2.41 2429 | vooks: 0.2.12_vue@3.2.41 2430 | vue: 3.2.41 2431 | dev: false 2432 | 2433 | /webidl-conversions/3.0.1: 2434 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2435 | dev: false 2436 | 2437 | /whatwg-url/5.0.0: 2438 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2439 | dependencies: 2440 | tr46: 0.0.3 2441 | webidl-conversions: 3.0.1 2442 | dev: false 2443 | 2444 | /wide-align/1.1.5: 2445 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 2446 | dependencies: 2447 | string-width: 4.2.3 2448 | dev: false 2449 | 2450 | /wrappy/1.0.2: 2451 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2452 | dev: false 2453 | 2454 | /xtend/4.0.2: 2455 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2456 | engines: {node: '>=0.4'} 2457 | dev: true 2458 | 2459 | /yallist/4.0.0: 2460 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2461 | 2462 | /yaml/1.10.2: 2463 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2464 | engines: {node: '>= 6'} 2465 | dev: true 2466 | 2467 | /yn/3.1.1: 2468 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 2469 | engines: {node: '>=6'} 2470 | dev: true 2471 | --------------------------------------------------------------------------------