From 48239801ce122ca9c5f1c698741f802f79c92040 Mon Sep 17 00:00:00 2001 From: babayaga Date: Fri, 4 Jul 2025 20:18:13 +0200 Subject: [PATCH] extensions : gui renderer --- packages/kbot/extensions/gui/.gitattributes | 2 + .../kbot/extensions/gui/.github/FUNDING.yml | 13 + packages/kbot/extensions/gui/.gitignore | 86 + packages/kbot/extensions/gui/.prettierrc | 5 + packages/kbot/extensions/gui/CHANGELOG.md | 567 + .../kbot/extensions/gui/CODE_OF_CONDUCT.md | 128 + packages/kbot/extensions/gui/CONTRIBUTING.md | 19 + packages/kbot/extensions/gui/LICENSE | 21 + packages/kbot/extensions/gui/README.md | 177 + .../kbot/extensions/gui/assets/icons/LICENSE | 3 + .../extensions/gui/assets/icons/chrome.png | Bin 0 -> 1334 bytes .../extensions/gui/assets/icons/electron.png | Bin 0 -> 8335 bytes .../kbot/extensions/gui/assets/icons/erwt.png | Bin 0 -> 3435 bytes .../extensions/gui/assets/icons/license.png | Bin 0 -> 1020 bytes .../extensions/gui/assets/icons/nodejs.png | Bin 0 -> 1189 bytes .../extensions/gui/assets/icons/react.png | Bin 0 -> 1546 bytes .../gui/assets/icons/typescript.png | Bin 0 -> 2641 bytes .../extensions/gui/assets/icons/webpack.png | Bin 0 -> 3143 bytes .../extensions/gui/assets/images/anim_v8.gif | Bin 0 -> 271921 bytes .../extensions/gui/assets/images/appIcon.ico | Bin 0 -> 4286 bytes .../extensions/gui/assets/images/logo.png | Bin 0 -> 3435 bytes .../kbot/extensions/gui/assets/schema.json | 180 + .../kbot/extensions/gui/assets/schema_ui.json | 122 + .../kbot/extensions/gui/eslint.config.json | 18 + packages/kbot/extensions/gui/package.json | 90 + packages/kbot/extensions/gui/pnpm-lock.yaml | 9172 +++++++++++++++++ packages/kbot/extensions/gui/src/main/app.ts | 48 + .../kbot/extensions/gui/src/main/appWindow.ts | 63 + .../extensions/gui/src/main/window/LICENSE | 16 + .../gui/src/main/window/titlebarContext.ts | 74 + .../gui/src/main/window/titlebarContextApi.ts | 17 + .../gui/src/main/window/titlebarIpc.ts | 95 + .../gui/src/main/window/titlebarMenus.ts | 160 + .../gui/src/main/window/windowPreload.ts | 6 + .../kbot/extensions/gui/src/renderer/app.html | 10 + .../gui/src/renderer/appPreload.tsx | 35 + .../gui/src/renderer/appRenderer.tsx | 17 + .../src/renderer/components/Application.tsx | 414 + .../gui/src/renderer/components/icons.ts | 19 + .../gui/src/renderer/styles/app.scss | 358 + .../gui/src/renderer/styles/dark_theme.scss | 57 + .../gui/src/renderer/styles/light_theme.scss | 67 + .../gui/src/renderer/window/ControlButton.tsx | 33 + .../gui/src/renderer/window/LICENSE | 16 + .../gui/src/renderer/window/Titlebar.tsx | 196 + .../src/renderer/window/WindowControls.tsx | 59 + .../gui/src/renderer/window/WindowFrame.tsx | 62 + .../gui/src/renderer/window/schema.json | 182 + .../gui/src/renderer/window/schema_ui.json | 122 + .../gui/src/renderer/window/titlebar.scss | 211 + .../extensions/gui/src/typings/index.d.ts | 4 + .../gui/tools/forge/forge.config.js | 88 + .../gui/tools/webpack/webpack.aliases.js | 12 + .../gui/tools/webpack/webpack.helpers.js | 20 + .../gui/tools/webpack/webpack.main.js | 16 + .../gui/tools/webpack/webpack.plugins.js | 10 + .../gui/tools/webpack/webpack.renderer.js | 22 + .../gui/tools/webpack/webpack.rules.js | 51 + packages/kbot/extensions/gui/tsconfig.json | 28 + 59 files changed, 13191 insertions(+) create mode 100644 packages/kbot/extensions/gui/.gitattributes create mode 100644 packages/kbot/extensions/gui/.github/FUNDING.yml create mode 100644 packages/kbot/extensions/gui/.gitignore create mode 100644 packages/kbot/extensions/gui/.prettierrc create mode 100644 packages/kbot/extensions/gui/CHANGELOG.md create mode 100644 packages/kbot/extensions/gui/CODE_OF_CONDUCT.md create mode 100644 packages/kbot/extensions/gui/CONTRIBUTING.md create mode 100644 packages/kbot/extensions/gui/LICENSE create mode 100644 packages/kbot/extensions/gui/README.md create mode 100644 packages/kbot/extensions/gui/assets/icons/LICENSE create mode 100644 packages/kbot/extensions/gui/assets/icons/chrome.png create mode 100644 packages/kbot/extensions/gui/assets/icons/electron.png create mode 100644 packages/kbot/extensions/gui/assets/icons/erwt.png create mode 100644 packages/kbot/extensions/gui/assets/icons/license.png create mode 100644 packages/kbot/extensions/gui/assets/icons/nodejs.png create mode 100644 packages/kbot/extensions/gui/assets/icons/react.png create mode 100644 packages/kbot/extensions/gui/assets/icons/typescript.png create mode 100644 packages/kbot/extensions/gui/assets/icons/webpack.png create mode 100644 packages/kbot/extensions/gui/assets/images/anim_v8.gif create mode 100644 packages/kbot/extensions/gui/assets/images/appIcon.ico create mode 100644 packages/kbot/extensions/gui/assets/images/logo.png create mode 100644 packages/kbot/extensions/gui/assets/schema.json create mode 100644 packages/kbot/extensions/gui/assets/schema_ui.json create mode 100644 packages/kbot/extensions/gui/eslint.config.json create mode 100644 packages/kbot/extensions/gui/package.json create mode 100644 packages/kbot/extensions/gui/pnpm-lock.yaml create mode 100644 packages/kbot/extensions/gui/src/main/app.ts create mode 100644 packages/kbot/extensions/gui/src/main/appWindow.ts create mode 100644 packages/kbot/extensions/gui/src/main/window/LICENSE create mode 100644 packages/kbot/extensions/gui/src/main/window/titlebarContext.ts create mode 100644 packages/kbot/extensions/gui/src/main/window/titlebarContextApi.ts create mode 100644 packages/kbot/extensions/gui/src/main/window/titlebarIpc.ts create mode 100644 packages/kbot/extensions/gui/src/main/window/titlebarMenus.ts create mode 100644 packages/kbot/extensions/gui/src/main/window/windowPreload.ts create mode 100644 packages/kbot/extensions/gui/src/renderer/app.html create mode 100644 packages/kbot/extensions/gui/src/renderer/appPreload.tsx create mode 100644 packages/kbot/extensions/gui/src/renderer/appRenderer.tsx create mode 100644 packages/kbot/extensions/gui/src/renderer/components/Application.tsx create mode 100644 packages/kbot/extensions/gui/src/renderer/components/icons.ts create mode 100644 packages/kbot/extensions/gui/src/renderer/styles/app.scss create mode 100644 packages/kbot/extensions/gui/src/renderer/styles/dark_theme.scss create mode 100644 packages/kbot/extensions/gui/src/renderer/styles/light_theme.scss create mode 100644 packages/kbot/extensions/gui/src/renderer/window/ControlButton.tsx create mode 100644 packages/kbot/extensions/gui/src/renderer/window/LICENSE create mode 100644 packages/kbot/extensions/gui/src/renderer/window/Titlebar.tsx create mode 100644 packages/kbot/extensions/gui/src/renderer/window/WindowControls.tsx create mode 100644 packages/kbot/extensions/gui/src/renderer/window/WindowFrame.tsx create mode 100644 packages/kbot/extensions/gui/src/renderer/window/schema.json create mode 100644 packages/kbot/extensions/gui/src/renderer/window/schema_ui.json create mode 100644 packages/kbot/extensions/gui/src/renderer/window/titlebar.scss create mode 100644 packages/kbot/extensions/gui/src/typings/index.d.ts create mode 100644 packages/kbot/extensions/gui/tools/forge/forge.config.js create mode 100644 packages/kbot/extensions/gui/tools/webpack/webpack.aliases.js create mode 100644 packages/kbot/extensions/gui/tools/webpack/webpack.helpers.js create mode 100644 packages/kbot/extensions/gui/tools/webpack/webpack.main.js create mode 100644 packages/kbot/extensions/gui/tools/webpack/webpack.plugins.js create mode 100644 packages/kbot/extensions/gui/tools/webpack/webpack.renderer.js create mode 100644 packages/kbot/extensions/gui/tools/webpack/webpack.rules.js create mode 100644 packages/kbot/extensions/gui/tsconfig.json diff --git a/packages/kbot/extensions/gui/.gitattributes b/packages/kbot/extensions/gui/.gitattributes new file mode 100644 index 00000000..04015d25 --- /dev/null +++ b/packages/kbot/extensions/gui/.gitattributes @@ -0,0 +1,2 @@ +*.scss linguist-detectable=false +*.sass linguist-detectable=false diff --git a/packages/kbot/extensions/gui/.github/FUNDING.yml b/packages/kbot/extensions/gui/.github/FUNDING.yml new file mode 100644 index 00000000..5523980b --- /dev/null +++ b/packages/kbot/extensions/gui/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: guasam +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/packages/kbot/extensions/gui/.gitignore b/packages/kbot/extensions/gui/.gitignore new file mode 100644 index 00000000..6ce8d092 --- /dev/null +++ b/packages/kbot/extensions/gui/.gitignore @@ -0,0 +1,86 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock +.DS_Store + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# Webpack +.webpack/ + +# Electron-Forge +out/ diff --git a/packages/kbot/extensions/gui/.prettierrc b/packages/kbot/extensions/gui/.prettierrc new file mode 100644 index 00000000..23b93e53 --- /dev/null +++ b/packages/kbot/extensions/gui/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "jsxSingleQuote": true +} \ No newline at end of file diff --git a/packages/kbot/extensions/gui/CHANGELOG.md b/packages/kbot/extensions/gui/CHANGELOG.md new file mode 100644 index 00000000..aa41df2c --- /dev/null +++ b/packages/kbot/extensions/gui/CHANGELOG.md @@ -0,0 +1,567 @@ +# Change Log + +All notable changes to the project are listed here. + +For more information visit: +https://github.com/codesbiome/electron-react-webpack-typescript-2024 + +
+ +### v8.1.0 + +- ๐ŸŽ‰ Electron version upgraded `v23.0.0`. +- Using `eslint.config.json` as eslint configuration. +- Tweaked app themes colors. +- Upgraded outdated packages: + +| Package | Version | +| ------------------------------------ | --------- | +| electron | `^31.2.1` | +| @electron-forge | `7.4.0` | +| electron-squirrel-startup | `^1.0.1` | +| @pmmmwh/react-refresh-webpack-plugin | `^0.5.15` | +| @typescript-eslint | `^7.16.1` | +| css-loader | `^7.1.2` | +| eslint | `^9.7.0` | +| eslint-plugin-react | `^7.34.4` | +| react-refresh | `^0.14.2` | +| sass | `^1.77.8` | +| sass-loader | `^14.2.1` | +| style-loader | `^4.0.0` | +| typescript | `^5.5.3` | +| webpack | `^5.93.0` | +| react | `^18.3.1` | +| react-dom | `^18.3.1` | + +
+ +### v8.0.0 + +- ๐ŸŽ‰ Application UI and Themes (light/dark). +- Using latest Electron version `v28` +- Changed app accent colors & added credits menu item. +- Integrated `electron-window` components & modules in project's file structure. +- Separated dark/light themes from application stylesheet for easy modification. +- Added `@styles` alias for easily import stylesheets. +- Removed `less-loader` by default from project. +- Removed unused `misc` directory. +- Removed unused `src/common` directory. +- Converted `less` to `scss` for window components stylesheet. +- Updated forge config with more useful hints. +- Upgraded outdated packages to their latest supported versions. + +
+ +### v7.8.0 + +Upgraded outdated packages: + +| Package | Version | +| ------------------------------ | -------- | +| electron | `27.1.2` | +| @electron-forge | `7.1.0` | +| @typescript-eslint | `6.13.1` | +| eslint-plugin-import | `2.29.0` | +| eslint | `8.54.0` | +| less | `4.2.0` | +| sass | `1.69.5` | +| ts-loader | `9.5.1` | +| typescript | `5.3.2` | +| webpack | `5.89.0` | +| react-refresh-webpack-plugin | `0.5.11` | +| fork-ts-checker-webpack-plugin | `9.0.2` | + +
+ +### v7.7.0 + +Upgraded outdated packages: + +| Package | Version | +| ---------------------------- | -------- | +| electron | `26.2.2` | +| @electron-forge | `6.4.2` | +| @typescript-eslint | `6.7.3` | +| eslint-plugin-import | `2.28.1` | +| eslint-plugin-react | `7.33.2` | +| eslint | `8.50.0` | +| less | `4.2.0` | +| sass | `1.68.0` | +| typescript | `5.2.2` | +| webpack | `5.88.2` | +| react-refresh-webpack-plugin | `0.5.11` | + +
+ +### v7.6.0 + +Upgraded outdated packages: + +| Package | Version | +| ------------------ | -------- | +| electron | `25.2.0` | +| @electron-forge | `6.2.1` | +| @typescript-eslint | `6.0.0` | +| eslint | `8.44.0` | +| less-loader | `11.1.3` | +| sass | `1.63.6` | +| sass-loader | `13.3.2` | +| ts-loader | `9.4.4` | +| typescript | `5.1.6` | +| webpack | `5.88.1` | + +
+ +### v7.5.0 + +Upgraded outdated packages: + +| Package | Version | +| ------------------ | -------- | +| electron | `25.0.1` | +| @typescript-eslint | `5.59.9` | +| css-loader | `6.8.1` | +| eslint | `8.42.0` | +| less-loader | `11.1.2` | +| sass | `1.62.1` | +| sass-loader | `13.3.1` | +| style-loader | `3.3.3` | +| ts-loader | `9.4.3` | +| typescript | `5.1.3` | +| webpack | `5.85.1` | + +
+ +### v7.3.3 + +Upgraded outdated packages: + +| Package | Version | | +| ------------------ | -------- | --- | +| electron | `24.1.2` | โฌ†๏ธ | +| @electron-forge | `6.1.1` | โฌ†๏ธ | +| @typescript-eslint | `5.59.0` | โฌ†๏ธ | +| eslint | `8.39.0` | โฌ†๏ธ | +| sass | `1.62.0` | โฌ†๏ธ | +| sass-loader | `13.2.2` | โฌ†๏ธ | +| typescript | `5.0.4` | โฌ†๏ธ | +| webpack | `5.80.0` | โฌ†๏ธ | + +
+ +### v7.3.2 + +Upgraded outdated packages: + +| Package | Version | | +| ------------------ | ---------- | --- | +| electron | `23.2.0` | โฌ†๏ธ | +| eslint | `8.36.0` | โฌ†๏ธ | +| sass | `1.60.0` | โฌ†๏ธ | +| sass-loader | `13.2.1` | โฌ†๏ธ | +| style-loader | `3.3.2` | โฌ†๏ธ | +| typescript | `5.0.2` | โฌ†๏ธ | +| webpack | `5.76.3` | โฌ†๏ธ | +| @types/node | `18.15.10` | โฌ†๏ธ | +| @types/react | `18.0.29` | โฌ†๏ธ | +| @types/react-dom | `18.0.11` | โฌ†๏ธ | +| @typescript-eslint | `5.56.0` | โฌ†๏ธ | + +
+ +### v7.3.1 + +Upgraded outdated packages: + +| Package | Version | | +| ------------------ | --------- | --- | +| electron | `23.1.2` | โฌ†๏ธ | +| eslint | `8.35.0` | โฌ†๏ธ | +| sass | `1.58.3` | โฌ†๏ธ | +| @types/node | `18.14.6` | โฌ†๏ธ | +| @types/react | `18.0.28` | โฌ†๏ธ | +| @types/react-dom | `18.0.11` | โฌ†๏ธ | +| @typescript-eslint | `5.54.0` | โฌ†๏ธ | + +
+ +### v7.3.0 + +- ๐ŸŽ‰ Electron version upgraded `v23.0.0` +- Upgraded outdated packages: + - `electron` upgraded to `v23.0.0` + - `@electron-forge` deps upgraded to `v6.0.5` + - `@typescript-eslint` deps upgraded to `v5.51.0` + - `css-loader` upgraded to `v6.7.3` + - `eslint` upgraded to `v8.33.0` + - `eslint-plugin-import` upgraded to `v2.27.5` + - `eslint-plugin-react` upgraded to `v7.32.2` + - `fork-ts-checker-webpack-plugin` upgraded to `v7.3.0` + - `sass` upgraded to `v1.58.0` + - `typescript` upgraded to `v4.9.5` + +
+ +### v7.2.0 + +- ๐ŸŽ‰ Electron version upgraded `v22.0.0` +- Upgraded outdated packages: + - `electron` upgraded to `v22.0.0` + - `@electron-forge` deps upgraded to `v6.0.4` + - `@pmmmwh/react-refresh-webpack-plugin` upgraded to `v0.5.10` + - `@typescript-eslint` deps upgraded to `v5.46.0` + - `css-loader` upgraded to `v6.7.2` + - `eslint` upgraded to `v8.29.0` + - `sass-loader` upgraded to `v13.2.0` + - `ts-loader` upgraded to `v9.4.2` + - `typescript` upgraded to `v4.9.4` + - `webpack` upgraded to `v5.75.0` + +
+ +### v7.1.0 + +- ๐ŸŽ‰ Electron version upgraded to `v21.2.0` +- Fixed Devtools Console warning message caused by content policy. +- Upgraded forge config plugins format to support latest version. +- Disabled `sandbox` by default in application window. +- Upgraded outdated deps: + - `electron` upgraded to `v21.2.0` + - `@electron-forge` deps upgraded to `v6.0.0-beta.68` + - `@pmmmwh/react-refresh-webpack-plugin` upgraded to `v0.5.8` + - `@typescript-eslint` deps upgraded to `v5.41.0` + - `classnames` upgraded to `v2.3.2` + - `eslint` upgraded to `v8.26.0` + - `eslint-plugin-react` upgraded to `v7.31.10` + - `less-loader` upgraded to `v11.1.0` + - `sass` upgraded to `v1.55.0` + - `sass-loader` upgraded to `v13.1.0` + - `ts-loader` upgraded to `v9.4.1` + - `typescript` upgraded to `v4.8.4` + +
+ +### v7.0.0 + +- ๐Ÿฅณ New layout for default application. +- ๐Ÿค– Overhaul for dark/light themes with new colors. +- Improved transition timing of title menus list. +- Fixed native modules compiling issue with update to related webpack loader. +- Updated forge `devContentSecurityPolicy` config for electron window. +- Upgraded outdated deps: + - `electron` upgraded to `v19.0.14` + - `@electron-forge` deps upgraded to `v6.0.0-beta.65` + - `@typescript-eslint` deps upgraded to `v5.36.1` + - `eslint` upgraded to `v8.23.0` + - `eslint-plugin-react` upgraded to `v7.30.1` + - `sass` upgrded to `v1.54.0` + - `typescript` upgraded to `v4.7.4` + +
+ +### v6.2.0 + +- Upgraded outdated deps: + - `electron` upgraded to `^19.0.9`. + - `@typescript-eslint` deps upgraded to `v5.30.7`. + - `eslint` upgraded to `v8.20.0"`. + - `fork-ts-checker-webpack-plugin` upgraded to `v7.2.13`. + - `sass` upgraded to `v1.54.0`. + - `sass-loader` upgraded to `v13.0.2`. + - `webpack` upgraded to `v5.74.0`. + +
+ +### v6.1.0 + +- ๐ŸŽ‰ Electron version upgraded to `v19.0.6` +- Using `misc/window` for custom window without git submodule. +- Upgraded outdated deps: + - `electron` upgraded to `v19.0.6` + - `@electron-forge` deps upgraded to `v6.0.0-beta.64` + - `@pmmmwh/react-refresh-webpack-plugin` upgraded to `v0.5.7` + - `@types` deps upgraded to latest version + - `@typescript-eslint` deps upgraded to `v5.29.0` + - `eslint` upgraded to `v8.18.0` + - `eslint-plugin-react` upgraded to `v7.30.1` + - `fork-ts-checker-webpack-plugin` upgraded to `v7.2.11` + - `less` upgraded to `v4.1.3` + - `less-loader` upgraded to `v11.0.0` + - `react-refresh` upgraded to `v0.14.0` + - `sass` upgraded to `v1.53.0` + - `sass-loader` upgraded to `v13.0.1` + - `ts-loader` upgraded to `v9.3.1` + - `typescript` upgraded to `v4.7.4` + - `webpack` upgraded to `5.73.0` + +
+ +### v6.0.0 + +- ๐Ÿ™Œ๐Ÿป New Layout for default application. +- ๐ŸŒ‘ Dark mode & ๐Ÿ’ก Light Mode colors. +- ๐ŸŽ‰ Electron version upgraded to `v18.1.0` +- Using `sass/scss` stylesheets by default for project (previously `less` was used). +- Using `React Fast Refresh` for hot reloading, removed old `hot-loader`. +- Titlebar Menus style overrides for improvements with rounded corners. +- Created a new `Theme.scss` file for adjusting light/dark mode color schemes. +- Persist theme state in `localStorage` by default. +- Using `pnpm` instead of `yarn` as package manager for project. +- Upgraded outdated deps: + - `electron` upgraded to `v18.1.0` + - `eslint` upgraded to `v8.13.0` + - `typescript` upgraded to `v4.6.3` + - `webpack` upgraded to `v5.72.0` + - `react` deps upgraded to `v18.0.0` + +
+ +### v5.5.0 + +- Upgraded outdated deps: + - `electron` upgraded to `v17.2.0` + - `eslint` ugpraded to `v8.11.0`, + - `css-loader` upgraded to `v6.7.1` + - `@typescript-eslint/eslint-plugin` deps upgraded to `v5.16.0` + - `eslint-plugin-react` upgraded to `v7.29.4` + - `ts-loader` upgraded to `v9.2.8` + - `typescript` upgraded to `v4.6.3` + - `webpack` upgraded to `v5.70.0` + +
+ +### v5.4.0 + +- ๐ŸŽ‰ Electron core upgraded `v17.0.1` +- Upgraded outdated deps: + - `@hot-loader/react-dom` upgraded to `v17.0.2` + - `webpack` upgraded to `v5.69.1` + - `typescript` upgraded to `v4.5.5` + - `fork-ts-checker-webpack-plugin` upgraded to `v7.2.1` + - `eslint` upgraded to `v8.9.0` + - `css-loader` upgraded to `v6.6.0` + - `@typescript-eslint` deps upgraded to `v5.12.1` + +
+ +### v5.3.0 + +- Electron Window : File menu visible by default +- Upgraded outdated deps: + - `electron` upgraded to `v16.0.7` + - `@electron-forge` deps upgraded to `v6.0.0-beta.63` + - `@types/node` upgraded to `v17.0.8` + - `@typescript-eslint` deps upgraded to `v5.9.1` + - `eslint` upgraded to `v8.6.0` + - `typescript` upgraded to `v4.5.4` + - `webpack` upgraded to `v5.66.0` + +
+ +### v5.2.0 + +- ๐ŸŽ‰ Electron core upgraded `v16` +- Upgraded outdated deps: + - `@typescript-eslint` deps upgraded to `^5.5.0` + - `eslint` upgraded to `^8.4.0` + - `fork-ts-checker-webpack-plugin` upgraded to `^6.5.0` + - `typescript` upgraded to `^4.5.2` + - `webpack` upgraded to `^5.64.4` + +
+ +### v5.1.0 + +- Fix: CSS/LESS `background-image` corrupted image file output. +- Updated: Webpack Rules to load assets using [Webpack v5 Asset Modules](https://webpack.js.org/guides/asset-modules/) instead of `file-loader` +- Fix: Typo in eslint alias map for `@components` +- Updated: Window (submodule) to latest version. +- Removed: Unused contextBridge api declaration. + +
+ +### v5.0.0 + +- Overhauled: Application default layout and styling. +- Overhauled: Project files structure to separate 'main' & 'renderer' modules. +- Added: Custom Window Frame. +- Added: Custom Window Titlebar. +- Added: Custom Menus for Titlebar. +- Added: Window controls for `windows` & `mac` based platform. +- Renamed: `.eslintrc.json` to `.eslintrc` +- Upgraded Outdated deps : + - `eslint` upgraded to `v8.2.0` + - `css-loader` upgraded to `v6.5.1` + - `@typescript-eslint` deps upgraded to `v5.3.0` + - `webpack` upgraded to `v5.62.1` + +
+ +### v4.2.0 + +- ๐ŸŽ‰ Electron core upgraded to version `v15` +- Application colors updated for vue environment +- Fix eslint script +- Default window background color updated. +- Upgrade outdated deps: + - `electron` upgraded to `^15.0.0` + - `@electron-forge` deps upgraded to `6.0.0-beta.61` + - `@types/node` upgraded to `^16.9.6` + - `@typescript-eslint` deps upgraded to `^4.31.2` + - `css-loader` upgraded to `^6.3.0` + +
+ +### v4.1.0 + +- ๐ŸŽ‰ Electron core upgraded to version `v14` +- Update application style properties +- Enable `nativeWindowOpen` for main window +- Remove `enableRemoteModule` from main window +- Fix : Hot reloading issue caused by `liveReload` in webpack devServer +- Added additional Webpack `devServer` configuration in `tools/forge/forge.config.js` +- Upgraded outdated deps: + - `@electron-forge` deps upgraded to `6.0.0-beta.60` + - `@typescript-eslint` deps upgraded to `^4.30.0` + - `@types/react` upgraded to `^17.0.19` + - `electron` upgraded to `^14.0.0` + - `eslint-plugin-import` upgraded to `^2.24.2` + - `eslint-plugin-react` upgraded to `^7.25.1` + - `typescript` upgraded to `^4.4.2` + - `webpack` upgraded to `^5.51.1` + +
+ +### v4.0.1 + +- Update file-loader configuration for `assets` files +- Add packager configuration for app executable file details +- Update `README` with similar useful projects + +
+ +### v4.0.0 + +- Overhaul for Application default layout and styling. +- Default window background color updated. +- Default `minimal` stats output for main & renderer process via webpack. +- Upgraded outdated deps : + - `electron` upgraded to `^13.1.9` + - `@electron-forge` packages upgraded to `6.0.0-beta.59` + - `@typescript-eslint` packages upgraded to `^4.29.2` + - `css-loader` upgraded to `^6.2.0` + - `eslint` upgraded to `^7.32.0` + - `fork-ts-checker-webpack-plugin` upgraded to `^6.3.2` + - `less-loader` upgraded to `10.0.1` + - `style-loader` upgraded to `^3.2.1` + - `ts-loader` upgraded to `9.2.5` + - `typescript` upgraded to `^4.3.5` + - `webpack` upgraded to `^5.50.0` + +
+ +### v3.1.0 + +- Electron core ๐Ÿš€ upgraded to version 13. +- Expose Webpack Ports settings in forge configuration. +- Upgraded outdated packages : + - `electron` upgraded to `^13.0.1` + - `@typescript-eslint` packages upgraded to `^4.26.0` + - `eslint` upgraded to `^7.27.0` + - `css-loader` upgraded to `^5.2.6` + - `ts-loader` upgraded to `8.3.0` + - `typescript` upgraded to `^4.3.2` + - `webpack` upgraded to `^5.38.1` + - `fork-ts-checker-webpack-plugin` upgraded to `^6.2.10` + +
+ +### v3.0.1 + +- Upgraded outdated packages + - `electron'` upgraded to `^12.0.6` + - `react` upgraded to `^17.0.2` + - `react-dom` upgraded to `^17.0.2` + - `css-loader` upgraded to `^5.2.4` + - `eslint` upgraded to `^7.25.0` + - `node-loader` upgraded to `2.0.0` + - `ts-loader` upgraded to `8.2.0` + - `typescript` upgraded to `^4.2.4` + - `webpack` upgraded to `^5.36.2` + +
+ +### v3.0.0 + +- Overhaul for Application component layout and styling. +- Project Files structure updated. +- Move static images to `assets` directory. +- Remove `.prettierignore` file. +- Use `.tsx` file extension for `preload` and `renderer` incase we need to use components. +- Introduce new `assets` webpack alias. +- Modify aliases usage for new project structure. +- Upgraded outdated dependencies + - `electron` upgraded to `12.0.1` + - `css-loader` upgraded to `5.1.3` + - `eslint` upgraded to `7.22.0` + - `less` upgraded to `4.1.1` + - `less-loader` upgraded to `7.3.0` + - `ts-loader` upgraded to `8.0.18` + - `typescript` upgraded to `4.2.3` + - `webpack` upgraded to `5.27.1` + +
+ +### v2.1.0 + +- New Year 2021 ๐ŸŽ‰๐ŸŽŠ +- Upgraded outdated dependencies + - `electron` version upgraded to `11.1.1` + - `react` version upgraded to `17.0.1` + - `hot-loader` version upgraded to `17.0.1` + - `webpack` version upgraded to `5.13.0` + - `typescript` version upgraded to `4.1.3` + - `ts-loader` version upgraded to `8.0.14` + - `css-loader` version upgraded to `5.0.1` + - `style-loader` version upgraded to `2.0.0` + - `less` version upgraded to `4.1.0` + +
+ +### v2.0.2 + +- Upgraded outdated dependencies +- `electron` version upgraded to `10.x` +- `typescript` version upgraded to `4.x` +- `less-loader` version upgraded to `7.x` + +
+ +### v2.0.1 + +- Upgraded outdated dependencies + +
+ +### v2.0.0 + +- Added electron window background color +- Devtools opening on startup is disabled +- Added `preload` script usage (preload.ts) ๐Ÿ‘ +- Moved webpack `aliases` to separate file +- Added new style & color changes to boilerplate layout +- Added prettier configuration files `.prettierrc` `.prettierignore` +- `contextIsolation` is enabled by default +- `nodeIntegration` `enableRemoteModule` `nodeIntegrationInWorker` `nodeIntegrationInSubFrames` are disabled default + +
+ +### v1.0.0 + +- Upgrade package dependencies to latest +- Add hot module replacement (live reload) +- Add linting via ESLint +- Custom webpack configuration +- Custom forge configuration for package/bundle +- Add aliases for project paths +- Image loader to display images diff --git a/packages/kbot/extensions/gui/CODE_OF_CONDUCT.md b/packages/kbot/extensions/gui/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..783a8659 --- /dev/null +++ b/packages/kbot/extensions/gui/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +Repository Discussions. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/packages/kbot/extensions/gui/CONTRIBUTING.md b/packages/kbot/extensions/gui/CONTRIBUTING.md new file mode 100644 index 00000000..f117e469 --- /dev/null +++ b/packages/kbot/extensions/gui/CONTRIBUTING.md @@ -0,0 +1,19 @@ +# Contributing to ERWT + +Thank you for investing your time in contributing to our project! + +Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable. + +
+ +## How to Contribute? + +You can contribute to our project by providing `features/bugfixes/improvements` related Pull Requests. +
+Just make sure to test all the changes you provide before submission anything into this project. + +
+ +## Having a question about this project? + +Feel free to use [Discussions](https://github.com/codesbiome/electron-react-webpack-typescript-2022/discussions) to ask any questions related to this project. diff --git a/packages/kbot/extensions/gui/LICENSE b/packages/kbot/extensions/gui/LICENSE new file mode 100644 index 00000000..8c32180a --- /dev/null +++ b/packages/kbot/extensions/gui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Codesbiome + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/kbot/extensions/gui/README.md b/packages/kbot/extensions/gui/README.md new file mode 100644 index 00000000..3dbd1b5f --- /dev/null +++ b/packages/kbot/extensions/gui/README.md @@ -0,0 +1,177 @@ +# Electron React Webpack Typescript (Custom Titlebar) + +A prebuilt project for creating desktop apps using Electron, React, Webpack & Typescript with hot-reload, easy to use custom import aliases & executable builds for distribution. + +
+ +
+ +Special thanks to [@guasam](https://github.com/guasam) for development of Custom Window, Titlebar, UI/UX etc. + +
+ +## Core Features + +- ๐ŸŒŸ Electron +- ๐ŸŒ€ TypeScript +- โš›๏ธ React +- ๐Ÿฅ— SASS/SCSS Loader +- ๐ŸŽจ CSS Loader +- ๐Ÿ“ธ Image Loader +- ๐Ÿ†Ž Font Loader +- ๐Ÿงน ESLint +- ๐Ÿ“ฆ Electron Forge +- ๐Ÿ“ Custom Window Frame +- ๐Ÿ“ Custom Window Titlebar +- ๐Ÿ“ Custom Window Menubar +- ๐Ÿ”ฑ Webpack & Configuration +- ๐Ÿงฉ Aliases for Project Paths +- ๐Ÿ—ก๏ธ Native (node) Modules Support +- ๐Ÿ”ฅ React Fast Refresh + Webpack HMR +- ๐ŸŒž Dark Mode + Light Mode (Theme) +- ๐ŸŽ Package Bundling (Distribution / Release) + +
+ +## Custom Electron Window Titlebar & Menus + +This project includes [electron-window](https://github.com/guasam/electron-window) as core of custom window components and modules. + +**Following are the list of features it provides :** + +- Custom Titlebar for Electron Window. +- Easily changable platform specific controls for max/min/close buttons using `windows` or `mac` value for `platform` property with `` in renderer. +- Titlebar menus can show/hide by pressing `alt` or `option` key. +- Window frame `title` prop displays in titlebar center when menus are toggeled off. +- Menu entries can be customized in `src/main/window/titlebarMenus.ts` file. +- Menu items and windows controls UI or colors can be customized easily by modifying the `src/renderer/window` components & styles. + +
+ +### Custom Aliases for Paths + +We can use predefined aliases for `import` paths already used in this project. Following are the details: + +| Alias | Target Path | +| ------------- | -------------------------- | +| `@assets` | `/assets` | +| `@main` | `/src/main` | +| `@renderer` | `/src/renderer` | +| `@common` | `/src/common` | +| `@src` | `/src` | +| `@styles` | `/src/renderer/styles` | +| `@components` | `/src/renderer/components` | + + +
+ +### Want to use Vite instead of Webpack bundler? + +Introducing the [ElectroVite](https://github.com/guasam/electrovite-react) project with a brief description below. + +
+ +## Installation + +![status](https://img.shields.io/badge/ERWT-Main%20Version-blue.svg) + +Main version of this project contains files structure in separate context for `main` and `renderer`, with custom electron window, titlebar etc. + +```bash +git clone https://github.com/codesbiome/electron-react-webpack-typescript-2024 +``` + +
+
+ OR +
+
+ +![status](https://img.shields.io/badge/ERWT-Minimal%20Version-0a922a.svg) + +Minimal version of ERWT contains very simple project files structure, no custom window, no custom titlebar & menus. + +```bash +git clone -b minimal https://github.com/codesbiome/electron-react-webpack-typescript-2024 +``` + +
+ +Install dependencies using [pnpm](https://pnpm.io/) or [yarn](https://www.npmjs.com/package/yarn) or [npm](https://www.npmjs.com/) : + +```bash +# using pnpm +pnpm install + +# or using yarn +yarn install + +# or using npm +npm install +``` + +
+ +## Start : Development + +To develop and run your application, you need to run following command. +
+Start electron application for development : + +```bash +yarn start +``` + +
+ +## Lint : Development + +To lint application source code using ESLint via this command : + +```bash +yarn lint +``` + +
+ +## Package : Production + +Customize and package your Electron app with OS-specific bundles (.app, .exe etc) + +```bash +yarn package +``` + +
+ +## Make : Production + +Making is a way of taking your packaged application and making platform specific distributables like DMG, EXE, or Flatpak files (amongst others). + +```bash +yarn make +``` + +
+ +## Publish : Production + +Publishing is a way of taking the artifacts generated by the `make` command and sending them to a service somewhere for you to distribute or use as updates. (This could be your update server or an S3 bucket) + +```bash +yarn publish +``` + +
+ +## Packager & Makers Configuration + +This provides an easy way of configuring your packaged application and making platform specific distributables like DMG, EXE, or Flatpak files. + +This configurations file is available in : + +```bash +tools/forge/forge.config.js +``` + +For further information, you can visit [Electron Forge Configuration](https://www.electronforge.io/configuration) diff --git a/packages/kbot/extensions/gui/assets/icons/LICENSE b/packages/kbot/extensions/gui/assets/icons/LICENSE new file mode 100644 index 00000000..45a8fbba --- /dev/null +++ b/packages/kbot/extensions/gui/assets/icons/LICENSE @@ -0,0 +1,3 @@ +# Attribution + +Thanks to Flaticon \ No newline at end of file diff --git a/packages/kbot/extensions/gui/assets/icons/chrome.png b/packages/kbot/extensions/gui/assets/icons/chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..8232091b957141aec5d38d0059abfee21a8a4a15 GIT binary patch literal 1334 zcmV-61bJ{KduwXu!SNVT0Akea9#0T5bHRpg^S&1fFrctzI#GyMa7Tqb)=t|P#=6W4E z6E)~GQb1e;C;$|I8_{dUzw~QN|2n|FAwl8DO}5&z*W=cPMA$OpLAyW!26QFM1JpdA zg9XI!08jv~M}=95&<6_WDM(j13erSJUMlQ4NuXVz0HZq~H3r>0Aj(I;I@~aL0~jKq zm{Wi~GeOalPxAaU_zp14B>>lStHo>D)uFQvaO5Oe9l0qaCvubFK7xb?IRYsF6kwfI zz>4FqnYL}uMi)(N&!)+lT$+B`P1s3K!F9R;uao>5$=hi9Hj-Z@`4wFlE|Zw?r$zy* zW))f@SDFF_EUzyQe&+bA;)>dGG~^o5kzw>q&g3*b$?aS6aPQ1X4ENo^@bEBaXy7*P zcb!1*g>2Xxbg-Y*5^C7bL=q8joK~UlTm+nrYB6BI)Ai-Tvifo?KUR+P&+_m`QZ%ln z#PDrra>wf>TdA$q_1Q8 zwPmO(ipTGXI<(SR+h}r0{>zn794;&z)#!os76=$%4}og^5dgOf=~* z-XsO6S%BGpKy8T_Qd^3Ux>78yD}%CfBbtpGG{WqQw9 zTQLSr#VE-~5JB>Fp6SEh6S3;ue((GIY(Ej2j67*fvO_O`Kp2-7$6thJV6BEtgKp`GEu!-}q#CMyp@XIVL{9*&A`c#~MIS)|2 zF{`g*l2|3#6roJ~(0(^=c_w12QfA7hY`t=JU&m~bB$N=DNRA}+QdPj^LB!8LM*EoD zD;J5`{~%$D1PVf&A!Sr=sJZ|_-{fFP zWjfl=YyHWs^2z5MAT1J_2$4$}RUW?1!Oprknb@=C7L_R7aK6@@1K1*AFd-0TLSzBY seVgGGyO@+dWC$VPg#rc42mc5B4SXfk)Xeok&;S4c07*qoM6N<$f_#g8dH?_b literal 0 HcmV?d00001 diff --git a/packages/kbot/extensions/gui/assets/icons/electron.png b/packages/kbot/extensions/gui/assets/icons/electron.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ba6433b3aa7078d272d3e74f4dd390ff934abb GIT binary patch literal 8335 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 O0Kn*(=vHfE3I7923-7xC literal 0 HcmV?d00001 diff --git a/packages/kbot/extensions/gui/assets/icons/erwt.png b/packages/kbot/extensions/gui/assets/icons/erwt.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3f4922a12a0be17728d0cbb42187adb7fd5487 GIT binary patch literal 3435 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 N002ovPDHLkV1n6$(8~Y- literal 0 HcmV?d00001 diff --git a/packages/kbot/extensions/gui/assets/icons/license.png b/packages/kbot/extensions/gui/assets/icons/license.png new file mode 100644 index 0000000000000000000000000000000000000000..6161c428ba95bd76ff715a8ec61c0b2d299bff3f GIT binary patch literal 1020 zcmVp?MTvYM9DAtu5H$|acG-I0NWiqs&Q2aoJk!eSlqBEs+n1xh2Gp0%2 zJuZ?=(@a8chH3Sz^6okJ|NE2s?z#8De;ndkc;M9dZE?Rg0z8fAL%@B&?LZB<0xTjr ztJa*WZeI=0K67?;OAG{4={?qqCIy}c1|9vbp>k6E+WX;X`1_^|jGr1GT=Q%1iRdeU z?+9)eucC6S7B9a!^W4leX9FYQ$i3A3)4-#f0e67R<3-6%|HcLb!Iy^~QDZ~ko~?ji zC+U(^Nt9B#xvmCA^P>+~YrX~U*iv|l314M6m&*Oo95T%xK^P20)?{xQ96;r+2nvZ( zV%r7-w(7qtuTzEE+QDK_ywoywGMP($7+F(noD)uARh}{e&J%zYYfZ8Z4nTe^e^Fw!09bJq zGolY0V3+FzRXI^gXBWEV!ysH#l@rc-u*=ZLx*5?Q9Lj!j)dO}KAabp?DyCPBF}7z- zOGHNMmkFm3(fz$@)S4%p@hX2A745pF9pc52sr2q{$%EO{UPNDTRulcj0JD7<7{rUF zgQ@hM_Czw5+$W+1+;2@FdcmkQ=lU=Juv@+8JGA8}S0qyT2DrZ;AyN6>m{@I^KK5>% z#~B2@u7oO_=|=-tzPx5S+ zSf^%GN@o{DdML%+wxFlY5v}@Xnjv~6$OGe@2=Cy3SX$(~c z-UjBnO#%=&Qb-oAcFPx%g{uNbdhq8OEN(E6naEVckCMRUE)&nkD+9-Sh!d|297p9s z$E4_zwPq|cky&5v8`@?Vgo{@6*-j=z<#1*q)3a@7CNdGChdaT=*aPkF&xXET8q3dn zqL0(M94dwI(CM#x!JAP`<-P)nEki&1D#PJu_-lJ@$Acq3mcKYyjXegug~}xhuerk4 qg^hg`SQdC^<;u?et=|IwtN0gx)m5|Q>u!kv0000FxERlaX)efZ>(R^iSizy$b>Ab}iBE zgjc3V&bnFa3)?{-8Gwl4mkC<22V;FSH}OmHe*ri?^Ze7jj{TjRm5&oK$S`UES^d$ZA zSnssH?DX-}rK9HuhO(=D{q}JwJHy(J05gL*ip$Q3!&#AEd8s%u1#a)B<)W|8zHp+a z$GTv!1TZDhwo-tI5e5t%3K-&&GCV%_&iqVAfYaX}J&>`j*?itU z$jl%Dx&bg6Pys>6$gz-!VIUY1 z&8PNBs`NXePXGpM0GxmrV09^-il8`-WHV?4Kn;MBXT^qBGVrz<%Vu{b02Xx$v`WG{ z1w>#2Cc<1@3c*OBEJ-AOTPeU6fvxHY-;M_aK4WVm4Hb~6P-o2wl%0sS&hFk;AWBgM z+3pu;0pU4K^R!}Y-qm{t005HhlTdDE+s@lqQ7~z2(S$g^VgOy%K0GHx#cnqZWPpEG zQc}T4)*0=`0E=UbN_h4~$j)bRY284pJ*ptVB&oPKwy0tN09cs#^L_3QoklYoA&*C)GK zZ+C4tLmrwOp0t9@n}houE0E!I&Ux_MPx)#7RU!R7gw3R%>h&RTTct9a>%zw8jS!EHeWdgNY_8i2-J}4T2h9Bm&k)*}GIE zDn2kif*OcXj3fvliW;T6TR^Z;)WnD{+MNNaCP0LMN=j#W7;RD1sFg~0?vcCQUAEg& zp#Jdwn{&VO-S3<^=blUWpBJ6Z`HhX?0Y9IQK{LiB|2iG~+5;2MIdW{+-w%!5_|K{E zrxZ}@hY|#?&Jz(DjvZ;g{=TcXcNUV@^K_#<)%G!fDFyZqrRCk$mxw+E)HY8#j|@5- zlng$%X4I#@CJt3zq|%)(m~3LYGh(~zGOf}OsyY&o}j9v<=Ood;Or!#tr63` zznCE5hieqno7&DyOQN>>WDk)o;imxgptQY_{S(j@vi20#;1b&%;0osv>VhmcrfhZ%9-gNBO_R`{efEg4|If@u} zGq8(^Y6$#L#ve#4rYEAdyR2A9w>FG7SBzsL*rf|wKt!v}up>wTfLyn%Wz?uXuFa7`AMzwu(e^E)8k1(XzmZkjdP-FTuV z!jFK}GLV=i&EyB!>~w9%e1~=VBDS}-M?3jWp#MKBOo)#0nzEVN-5p0$q~(5IP&d$- zDCVk5RZI;y_$0TN0o3oAUfMpm?VsKpy2OQE1$eHsJR|%4EWpndk~63-YPqwr!E`XA zsknXfneZJhHB{MMh`4v|P1m6(RixJaZkR#5en;{-2sKwIqO0!v50PqVL z9Amk(y+^ar|3N^4fjLZ=6E(d=KJu3EB9K}L5*5-+CcD)@rm&hTZ8p+-b$=5ZRS~=K zy;zI0orr#nSnka+-$@hEf{5uZDbAAq&PKORTAqltgyw^IQN;9yCsK|cMyptNB#FzV znapIUhkz4GGtT;u%s26~F~OZ@X@Ez1@T(iH(^$lf7l^q#4L(A{Cws&iwbXoGsfiM~Ubi z24y;dz_&2-OG8UKhs+rD<mOHhOpmv`#iUjms?-**} z-avG;5gU^ucH^dQI6wRhLCuktcX9s&q(ZyFXpokhxzh_*yd_k{#BXOR1oWD;+y{DM zoV%E?Qd-{d{t4*nfE^Lby|lE;J#g|X<~v^kXzS}`+^2xI4oxjHI*%R! zi4oFFwyxekX+)aE=U^Vk5c8r|@)dpBi9v>+*eID8E#Kt7(K2~>DINRW5U{F8d-^?b z<{8i)**S3HO-N|^Gd;Aj_#Rlqi$r;!U%vjKwFBLp=GQKNb>ZRpH-8WmNFX|X&RQ)UQ9G-zbH z5m}WUt$@?l!y+YZaR@co43Y#ogn+1KomP*7W-)D)7bMrV*9;nU6hf>Q)52^Hsc|wn zH5@Y{R9+CD4zsvIsz4OP;&YiCejt_2WQiC|A%n%CGg%;$5Ap=m@q3V$r1cL;@VIyiFP)tv? zF+xdLDj}wkO2mWNKxyNgr?2qSH;fz=?=7GK}$ryb+BnECz(J62Y-lBaB3( zkuvAoqA`HsMg$@-qXNUU6NQpbNT#yMsHuLjs9uSg@I^l}KqL@>h-qvlnQNwy&S5E- zLXay2S%Ls259Bb%pfXH}sw{7U^2i#qUxSh@ql5_PSHVgcRAELPL z9cFWcJcun2F$L@idkF@o+A2F?uO#geE(}3JAwpNGM0`3&}$cs!Uc6bO}MZ}Yei zqMWc_VMNKD1!;dbk8Qu%S^|tjak5yJ@g1=WNf}>hQR-+HfDml!ZZQqEmDQ$T>^1s^ z4E(kT#_UZRge3iia*x4qOhuR=BNC=2v-PX(#CV%{97_9T>A$UbZDZ&062=H zBw>oUt%HTjwF+cr=J}C2j%i+58pyd>lef&{4>R(Bl<j5v*ZCQoHtlg zy!=jX3A`|{?2$QZ^}WW@S;@IuD!)E@vgvMa2OyuBW4zdS%<>m|%?U-rHv4)_Wpv#@ z+uZiZi-c6?UwbzI_q*x-;9!@I<-yy`Whqs^-0; zYB*b$;k4$x=(aNM)W@sV{by=+)gh0aFU=%-7vkw{Z_%e-FYp|jL#3y*$=OP+j}={S@a2|HNh``S+C!9&-gDW^IGCI$rgj+rusw+Un~7CJ?rk4#!a73 ziHe(BJPZELhX@X9Qfx0;l>-;MJUzaRCJ=LY#Y9yYcudgk+j(SNhXXK@IDixmUMr-0 zDz3P`n;9ul1SdM~Xr%Z_a<;eR)U6Gzsa)8~7^yKBdXoQSid*}~n$x_5W_eHP8g^*K z#RpRBZimEorgY~9o){_C*JYU8vlCW_FOTbLiS*42Fgb?W*A^@ovRd|Zg!HTZ5=)0O zdTvgSK6h^Sw>u*Ev93Sf^mTY)FO5I2(Bu1pp=?Xv=KGfZULfOkPG$nheyOTIFSF$O zmCe2mmuB4Pn`du6%*h&R%wAZn?Hu+RqMXU<;#FCPGNAIf&K6B&@fW83UdxI~8hXuT zrEq~nx-~Wa!)vU~=dxctYI}SjGtFNw$4h=%Qg-HEQY=6AVHrhC)RYW}H}0`6`RvQ` zUHz^Nlvx4!s!;2dv^I6wHeUznjbLfaqpkl$%M%K_2aeD>p7DGfJ8#xJ4F&JE(PQFU z6a4dc@JBA{>{L@K;*M4(dAhvZ7q!fJ6FiJNLWazyD_n)(5WD z(^;Ye0Dzt!l|n~mjCyEmA#ZVN>Puu=D5Qpq0br4#dT0P;3R3_;jdK}ck}z5TnI+)i zAhsX|#wGKF2pRxZc_s@XRy-`h#K0Ub-yQp;z7dPzvfZ(v&NMtt=ncnlsi`73BsGx1 zN{wfc*jP^w%&KHELcoJ15GI+Iz!#H~-LW&gWMr-W3}P`e5J|i{)=MoA6GmH)@fL_+ zj5E%~fkhy?VO&W#f(sGvD`xh=BGN?cSTddBJ1Yy> zxntub5+NA`rBW$Q>Vy-BI3R&ULO2{jM@I();UG@oOQ2*2zS#030|gedL|mbSE8t_) zj8KdqQR0q8H2q)#PdG=*7tgv0aTu5k2|)r5uQq80$Y#yqgo&br8R2Xe2q(Zim@g3{ zSi&4u7$=Yj#BqZELOpl<2LXs{X|y>Rf2s?QHzz_Y@kv6=n03gXqQ#69Aq>)Cu^>^z zf_;(@H7(WF2+7_e7?KD?41plwW1!Z5R2k!lSdFm_!-gc#UxL{za;!kagAjwc zJct8>LOutJnR6rATaX|SA%YR@oMyD3(a3&$u>|6?U_XjG7O@$}<+8~xBw~z9tTW4j z6bnHPa4eDSK!Ra)_OYFu-H^ST3-RN9ihz}{o5Y+Kr4-d5z_w=?hi1rAXXxU zM6eeJ@z!6a6No4es_XEB9pJy4ICJ*9n*9hz8i9H_*MX4DTn~f!NaGSA9cooX&Sn5u z0Qgb77-8G4hK476-eoYQBuS@DK<0rgf|jnsS)JttOAQulaJSvEF6^bAvbCn$?>U=p zOKbI}9;ss#-x)qa<@%Ty9QQr!6B)3r3`@_uWp#vqiMhs)c8R(4^s}ky>Ha6A_PjwY z)>06JB~_9{rMuJMjWj1I&Jufv_OtXh8Q=~5psz$dm1);~3IG(85hzpwz!pW87-!y> z)=E6fSM9Wy*?LeYXob8wVsf{AWw!CxOCPkK?>P{H+Kr_iV=kHeqUUV-HR8)qs)0D6 z-0ogjOCoKR)gBrBOwhxVfGw7KKMz_zyV6Euc;-sKfmx)+zwueNzh` zM?ZF9J_exMp@BYP)QyVqfAl#Xyc%bv4X||WB5r^;^9}lp?11&aVFs`tifEQP?P!OV zOtu$3R_yfy^0g@_@2;EHgY%A`KmW1!=X$4{=mc+jJ; z%AOI2A^&3-w-d_4kD`w*`!(m&H#Qwcc3(0yftn*`qbIpz&UE`C{eQtaZvRvcm})mp zscMy-hP?ijlX(|8s;II43mH6G`uhhDY+7rEj%r%GD5tK;2C#8UGHv7C*2?i7I?NYm z4R#f7mSYCYTCQzn!JM&q!`6qu!cx^IDWjtIs?5QfH$Sd4slON2z;Fg5opvwMpSmv? z4VoI#pMFegOG>ZCoi4vfS#9X^s)&#Sy-YRrEq1EFzz15~IPe8obhJXIN%}kSysRZ8-lJSepZLfD9sokK<>}@Ndg`XgA6=i0QzpAZxpBLEB);Z9~=<0?d z4NZKX4>ZdxJj%I4*#)n=uh8FK`?b)GLtUKWp?zvbrahiN-4Mcq{R0^%@2Bbio1*%9fIEubb=}53l|9(dvk;L6Kd>C3&A+KP6WX zLj0W_SvpyV_&%se`AWs2bycq}Y4bM|r*@pU?0T4f``mVa zkByOg`h8LN^A-}DsycA?{fx*xDL=frcNCYXKcP1&4~oc5+R*i#Yb593ab1DoJYqAt ztS$@NDtYxw#y(L|$cEu#AQ-hPd}Q+3=sNnyfNk*3jGvq(*1BK#dz;+dgwZzEK)2uj z+Tc?1&qYl{A_@{s5653VdWL%@xa-RH2034>EOz0_E;~A-HTDlH2sVJLesQOCptu(O z^9E)2ry&*(W#SI!%N_;>HnJ@XFbyb*?vL|-4DisMzrTjbZ#`?(fpQF9;a-J)>K4pw zKW^XJ{TXCMpg(<2v9IipX*&ESU}2V6OKCcpSN{IQzR)E8rt@iM7^3OB`8z3r`c_5O zT4IkCA&)ZNl^73Jt_V7(J6!5Y8f6y2HY8F{eAHr_=P&b3_{D}j^)Y_%i*$?QkGS4rXli*+v^%j+1<>~2n)(+N-nnDAX zdA6qHu+2HdrY1M<0ln|f#~0tm^K<|$&-_~IvD)y8?;{M;ytb4rr&M2I7SY?$js1*h zab;!f)a%Cso31~9P;<(7c%(#@NAKFl)Ge2mtP5VDLO~t7sENs?=L!tEQxX7fOAc0( zrhVP=ZnkCT?fBC)d2 z=744tdc3uMitbqyJ*+V1ybFFduZM)kZZN&}!~SR0>7Mx+`^E1!BBvvY!6d#fa6ZdO z&);WXq-XbDsa!9()Z9cNH!(DyPX+MG?NNEbY53@;pQn1gnFmY+=5jRej;t$RT}t^x zW%5ohMKyg0`(RYz4t%plxYvJi&qkrVSQC6Bv#MMF&b#b__~tn43Q0Q$?;o|DmC{{( zQ)O1ydB`)W7*ZVv6cOCT@eOx`N?*8gA&Vq?+b{Er`wuo*567A}r1E-o(Ke?+bD z|3g5IPasV2AKe^+fCj?<5a|%oX%YWN%Z21WWTa#y)MR92)&Kgch#X>3NLiHbd zb1DWtD$8=(|AcnZ;o#7*i_oh&(;H>|VgAERPQn~N&ced_A9i+T_W$r!b8v8Q{zpQY zi;JC0JA<2>mzz74J6)DXijg-)lJ7qTC4xHjLihwi)Z{{c=!Gn5g|V@P|05{SO*7NS2{*tO;-OuA$$h@DFy|LhBki26cnar zzGj38W+FId|M6-v%agL;rL!>LvGk9y62-GJ(YH2Buuhn;bl37(|%UD%jUc<*(Z>U{wMN}Vv)v*57=x^OP zztFVz+uGXRw%pSZO4Sh~)p7dWb8g!^G}5OxJelxka$<67ZhmTc zbk@UucD!;fN_xKDe}1lip}=fmVPUbsZ*jhAadG1BNcK`&^3vM+%JbVQ8t7`9;@Z!@ z_4W15t+nlXsqO9Uom%gmot@p?-Myjmz5krF9{lI<@8OR3;o;%Y(b4f@=1H5!$?4_E z`Q_Es)y?JV-E7MJ{r$u5$K&(()6>)QUgPug^Xv2a>&yG=>+9Rg?#FEI_et}=fB$~I zzkUF_zrVi#000O8L=1qH7gJRc5mFRmW?%vZ1_A;i{saSu{O^kHzcbMP$|U0disb)_ zYgluo5k zsigZ3HJ8m~Fqur}O0|^F<#4)O?M$VV!6kDCQ>+Yu5+fAzCey&9kWs5t$d*XwNw-z2 zRY_%KsMk)>lz5|0n z_yRhM`oJQeFP3Wz7W(_X-ye==3KRzVf4)DSulE-Q2L5|WAgB%k&;0`PgFcC&f`ehY z&w-&3#i0&E5$oTBAPHiDgrNys7lFeGur!CENKG}5q9}qFfuWd8CyOD^vLp^-S=TI& zP|QP1CK;vMkH1&a!PmG(!>~b_7jxT-U75^E}V0&hvfWKJ}q_MS+H4Rllq*iXthh zFN$N?z02LVxM(g*Q`N06%Q8v2k8`rzuP!SJ!)dN6U(*6X5lhRfuc~X?ud1`MZbBlYk81t|Yq}8(-D!q38r^}$IePAX zmNoA}(AJ_hc`hCFblRvGVGiG zVhJD4k>mWjw@sfJ4s8F;La=-a-G@U`5vj!7hj)PV4R$s%!?WM#Lrx919xO#c$onAP zFVIA8L84d`6xLk`6J20Zw+r#JyEgbIjTHO_kB5iZkz)QVuV1iF3gPA<@Dai(Ua3!T zs}7xmS{s6dg9t%kCjL*-O1X~`!hjbo{G6@64*6Jx_a*S?$I8rlt`5l02yc7q4j7vPvA!C*z zQ82&&w|sWOnhSjkqVBGaXsD|gw3QZ>GmE9O^Qms6|t!x05+G&)yc*1{jD2hi4>LXiBxp>SHnNSIJ!7}H#Yd!O}| z@NieG3#j#)6b^xFI>+Cx)XYDlHYf_Qcq|VTf1gu8Xhw`jq{PACS?jJ z(^~|1M8lx6K*I|E5+OrM7eNy%(M2E2m7)X(u8aGU$CHaVjGXYjb0N>s>{)u}-t)a% zojlZjD0lC@&7;JU`QG0F_oRPZrc z=id?5g69}l;bXkd&JiAGw!`|2YZZ@H&v-_e{e4 zJ&t(yJmTs9h_&#$;g9e=AvSQ!km-No8R$Ku9{6lB;XliR{64QD_^MCHKg(6FM#Lk5OY28K%n5@7mmW%$)~_)AX&%ANdiqjx22*SVQ(XkpK!wnK1hZm=uyKa4XNG7{24h|X zot%f9L55yXhF(d8-dKdfM}{I+h9XafqF#iecX}&k1{qF-%yk6MM1*Njg=kHN>3D|d zL4_Msh8RhPn?#0KYKB{RhFfoh^I3!ua)#kkg}Fxhxn%}=bOt(Sdig+k`$>8SM0$H| zgoJbk1$}tmS_DQ{M8-};;s79h(IBHt&m-F;qB<(V79ye^E25q!qF&FV-XWtuIo#Qh zz=$p)!muK$K0<1+LhCp~8#F_kJVRSDL)$t-J2pbQK0(Z9 zCa?mhI0I)i1Lq<=hdzA%V)-s~My_r|mRd$fcsd<&c=bt!xnsq9QpJ0J#JNbuhepPS zTgLlN##dIxS3@P#e#C5Dgk@PKfCPXvGsj$CGlo4SL2UaKN zI8%c+QpK~yV4M?!i}M`OsTWXrLruo zvaF-BY^$>Dr?MO`vz(!`U8%ESxiZQwGu@*iw=Mm|yfUJvQX4K)W1-VpsMFe{(mJft zx}ws0s?z$pGI%~RZLqRNxU$ByvL?K;rn0hTy0Ydrvlc$H{$gh@b7il3Wv_20x^-pm zP2?S&=j}yi)B`?q{G{>&tn!1R@x1zESHsg@8vv;V9YN_+9H?uLVi%`D`(YErix{C<4 zi<+`BhAxwnJ&P%_iv>56X}^*Uyi&?H3pce=7{5~3a8mzBmuzDf6I2(G&=fR6mo`He zv`Uq>Ta|W3m3CK^_D+@dUzQF+mz_!#(0G^7S(hC|=Raas+;LU7YnOU>mwIKF`gE82ZIwDqg5oe$hE4;AdRK;f zSB7L)MgyjS2@5N61}h_Bs*#2vjD?7Vu+GuLSv}^mVYe#UZ zrfF*CysIX@YW{xJ_Tf}7PuEUL*RF5XtYz2D(A52fshirWJNT+Qo~}8NuHWgd@3uz9 z|H|W~X|R%Ru*oiZhbex=$^ZN+apf)u_$md)Ed%8#1HUeJ&;&J;&Ssu2Sf@v1IZbY|f#g1tuq-|xNZW5Vk<)mqT^lqlhX=c)? z;G%8Rl4;bjY1E5pH27{d!fj#IX=k@-=ZtCR=4m#aZn58Pcf4+ulWA3`X%(>P5St12 z_9^hmDe%*A;jw8()^7gh?hNK>3)kt4?CA{MZm^DS)|_Z}#%)vdDNC{Ga^>kr%PGr} z>GIU+2-q$t`YtHJEiB_Htk5Zhp6QI(?o5nnXsBt3w`pj)ZqR^jG>K`mu4(I;Y3sXg zCMmShJ@*Zrs;!~?t{1KBcSZ9t?8`SX|wh2p#{M9 z)93Vbe)kyK^c%*7Px|zZ=Jd|%^uF5+Z1}W(=d}Lxw0_DAOw$f% zbAWO*_O-~g9oe*<;P%7w_FvWX+|Tr&-t?fu^^6cib{}Fsf!8 zO1CHBx~~y-qWO9pS#Vs{cZ@1`g63xI-^|4C^#oAw@Eq;r0_-HI?Id~a1OuRU^1)}2 z+ji8ccO(gJ%7t#CU1lnyc9eg1RBCog25t-sZW@Pf8t>oG2<`ZD%!JSEB=hVv>&-Mf z+|1vYNjkb2E!!EL*crXrna%4-i`nsn+9`>fsT|p90^QMJ-l-|wspQ$&%zxu^xl^OD zPVTYO9(d!1ykl#iAryl9)DVfZ(2@oTETCYj&GF#fAw+48S{4Wuy*yB z?r+=9vf$5h6Wp2!{aVY-Dtz1;qTHIr+*-%YS{L4mo$rcx++Rt%)gRea*}8T4xpl?c zb!ENPK)=;sy$v6`4Nkh1o!I65*;S6)4X)c|ZobWAy-g#z%?!Iuv$##lj8zi7bv(Xx zclfOW`mG}TSu*^kD!=uRymcjC&@=72roOs)?(G%r`aAFX_PV;;?E3D!?PmC$R{Hvp zx%xKxosQk@vD>;H{Q8UTok5u0q1)|c`rVPAovFF)3Ax?%-JK1<^zNqI&Y|7TQQhw0 z*X|nr-iF=Y1>aux)n<*{)}!54S=^Qs-|V~G!l&KBv)#U@-x8qC>A`NzLGHlG?w|*5 z9XkHNV0MEIelxCaO^5zaukHX|em+`m{bhGwwC?bCcMAyNh?@RLTJGor|A0JxBj9H% zDQ}aZe=~b`4bFcNL;jd0e~~Tzn4^CY?RSH3?HmsBIC>RR3(Q5Dsk}sKW5f^cObZ0SGMu zWGoOaEYJyK5$>-c1e&1}>LBzS5iGhQobCKsGn1PK|3v^m-pTkEF0An!v*Ii=|2$sa z9Xk-JPY}*j9&TU|3hn_sQvWQL064<_Y_t#-CD93c5wcJ5ESmr_rT)T%0N&oPE1v+) zvEC_v{>%_Y5QB+Pwb~?%*P3 z?}CsLI6hF+C0zvwOh@oWB`DB%TI z;5N(uo)!_lIS>eQ@Ud<1f*`>OZs4gH=&tSH-Ynq0eD5Ax;OWKxRK5QwK;hKCU_)^J z^v~UCgh4jGffGXG%eX#Fd_HhI5PY-#!!83{@BCv0&}+BjEt&){%_7{AB3ORI>#_ee zPU0t9$1D9OP)GkqLjPxCgA>ZZ;^A>3|HgtLwviAxP605&_z46|pN$KNOyz4uAuAjTMf!#oQhq562HuvB zUOcFHEFMmiy=#pT8!`lmK)_V1D7!fx1}`r}o0fDe4$oq@H;P?kE}zfo@dhT%a-kS5 z5cS6D&1#`s#%^(7x#eQIlB-g+*Xr$Nu3m@R z8(ZttsDRiQVXmS zZ50;ud;%k00u_}lUol?GlRym11yhu6rdTw{5>D{&*s=*>W6qza9BmECx4wNNZ3YjjI_?GNEk zT8a&dV#x}p%+J}@b17C07Y76QTaKm{{kH^<9A>EyM%7WUjE)aRrI-~zdbyAnJem%N zb~c_IPNkQqPk=2uFvX1fk%b~PoL00o5e{^9?Xz=Qr39Bl891BTW)zxL7~47p6f-)> zJPelRNl`3^vsW?%5>KQka~kENPM*PInF_)YKN1+n+@1!Si*b`qdEjc6giW3zM=Gg^ zVL=CDLCHy2J_GV386qkROsq!rn?~)SG1TQW>M#V^^`jiyUQ%o8ma+_a{im2+45Mk%%M zX_ht{g%}K;i846}%+?d2d=JaGD8U#)SqVhG(8|m_zPYT1K508Osn`!TKE*WUR_>yC zp4XV7B#(`z1{GpyC5JTl618hF9=X@6Y6zZghZ3AR%+qKBIlT9Aa@D@vdB&n85sc35 zQt;HQt2}TFQZcan28wBAi~@r#8cS=&fO7t>O~ilKS<92(EK3;=9p~H~TlgTxxcWy! zv&?Q-5o41v8EC8V@NJ1=*V-aH21UV39MzZ&g~8oDPBrss>kp=u%NjT5R8Na66S(dC zop?Kzh2g<0vWaUGJAYbZP2baYRgSK|wnYl?5oO>z^?^86MCZsUrBm>;CK&X4lQwGz z7G`f@wxfj*96Klg=i@mR#91R6QW1!i+IhC6v4T%0$wEjw2^R9tWQB(wq$BfaA>FJy zav^Y;hiGyUWLZ!|)V~^YE}=<)vL|pC+zALI_CiOnCYU(3(D*y@l` z7Fn|p9Lh)t(T(~J4hjSvS4H@Cj9`sAIxyrY1h#!5hV+|8BNK`UMz9w#C^^+6G{RC) zOvp6w#1rQf+mawO*a2=pXcl}w0(JnB4&-lg%$ZRG5?tpXG-DuUcO*SX=n%T5@o3HF z<^_54mlCwz6U_@ay?lL*9#bR{@CenJCyUe`F7;q;=*yUn`gO86QX!j(WiW7yX;FSV zJH!q=w4DmTOXW*ft4C(u*1Jsw0uv5Yz&Z;~5?*nP*%){d>L0x+6BlgaPT6F=V6t1R zFB$)R%b*C(6F*`rw4eovVm#7|U^1R67;|9c;h_;Yu90z)Iuh=RD3RtlO-7#fhggm( zS%y&YrmySTv^7Btv8+uP#M5L7VK^&`9H*G%K?=PE5-_E6sw_;92#A^>C_1tv1vBbX z4s2uuuXAmNoOs8?Jvv&EtRRRR6C`Q9swYk2$K6Doslv1%(IlGI=H<37u*8UJ?tX&vn zTjvxI+YHs&%nZggJg6$8$3d7MJjcZ49WLSkvL&oa9Ya8c=@d-Ux5^w^u7rb#r!<}& z%ZeW8#1*+VE0;~T{5$FDShGCnFkNP zF@dvS8E92=Ao|991cXXIg1XiPO#|A6eDFd=isEVP-N(5!)xTU?znV_bc{iO)23aLGYGwe(2JxLPI@)8O6vqdIn(n>GUM2mfEKhJbEGPSG7gcocJ z2C8{P_WmZh`Av|T$arT#YzAl2`0!je502zg5Mu(Y)Y$(PXVy;DyPuSLjXClM)OQ0A z2(N)9f?e*a_X2^XMYxSLdEqn~xnn4kGESwIYYD+Za21&9y9mS*6_=Ink(UHzfgRbI zrs!9KT#|kQgoQIH%M65LenU1AtF)akMT1QQ-8I|?|3`{&u@uK@kaQ_9$S{7p#fw`x zkbC}5LXPnQ)P`m^OZ=ZW0eb5z{mUZ z9Hv09KYHS{-k!nyU?TRySIwBz55OEY65wN0;!LqbDPi7<7*LHfIkjv$Ec}_IYB7Qj z=|&XcwwTyjevGm?e~?E0aoORDySe0pt|SirS?q}y%$A)7MzCtkqwQ}#s`fz#ggB$E zSmJxC^7iS<8Ne*_*?X2#ZA>I99f%_ySpBK@3rZ?%abEaVj?Y%Y&aHfJ)QCECj4Fb& z_fkFeb(SJrbwz;CmtqVzzQbYd=P%Q0wlUMvJxL*`CH)v%wheI=SN z0%q@WDm+W?F`PeFhJ#gau)a?@ z;5y3j`XKlGLj~JmKaAS8Hc05ZLU6k;mN?=yBt96@$3nJ$k_NIL4?lC2osA{hdXpI>W=_M|^1?C$N?CD?eJf?m^TiAQiDDNpl7+my=ztOCTO9xe6$` zMX{%^C;Brc@B<_s!7_U0K>&m~7Q%PHcWXf5ktgbVFkf*%gqSy&M+g#SEvd~ z2+CJDB1ZV9Mz|Pi7>7>a1-6ZmY~Wc$h_DxnU`L2~7K`QI5CfhFfL&FH!&Qj$WcWp< zl&*A`!d8IyMv!u4jOg>WC?nj6yzPigs;FYAsB-J5U-gKftgxEyusE2g2HL2osi>B(n0D-#Sgn|D z@0ixgm|CcqL91ApjF`&kr~<3F9Iv>%thj>cxVfshh3U9O>bPa;xFXrOlCHSTthiC` zu>7SsQtxntkr-90hy$EN?g48r?6|tFgfpH5EuDm8?1bW{ILat6{NRM|Nuck^gx`sT z@5@BMNg(2f1U%HFKb>TV>|_w#WXQ@yn66|nnq;KyWMu6mASQP*JXJDuR5BiIGVZ?s z7H%p5O)9WdGI@3~^<~l@Oe%#=Dr{vk!&NdvbSe!`DhF&bJya^KSITc?Dr-k7mvyp$ zSE|TVGQU)+giJcCRk9RrI)7HGJawwfRl1N@x`a-;Aa%OBRJt~Hs(N<15^N^JR}?u{ zf|^&Nwo;;%SBB14qQ!TH=bxDSjac`|SkJ6j@6K57iA*)s3`^`N0i5h0n%EGX>~OF6 zh^*}B&bW&0tZ}HgUF@u~udHqEZ25-`Pu8hZxtY@su9GsjNo}9O=42ZT&$3NLl zUAZn>iACEvDeUoSRoN}m*_qH;t5n(DQrVqW**#ZTz<#aVVXxf5?40$D-0{D;nn~HE zSh;gwxwTmN^;(&QT=~Dg^2MBCYDL(Kj z_T0#TMySffKC;NPxX)7yy&a41o*NT{jzwPs&JjENZE?)n5+=r z5{cN7yxI~Mys{F$vSOKvve^>%?q7=2Wj?cIel-=1R~1b)BKcKSaj_K{wH2Mb72Q)c znIART*HxpjRpVPV6L587zBMyBbyNIk${!`wG!+$mHEa4+g)w!7)iuSoHPtkA9KZ(*{D5)}cz*eg2!*mcjVN!T8(31gOCT^1%d= z!vycDnc1nEqpO27t=jRex`3~Pf+t6nZ2+R%Htbq9Vplce#x~+!H{xzL6414x;Wv}; zHa_CbHq_MAT;|m6G)nB& z|1pv0mTkZqZpFE6Rm^Qvrfo%+ZB^%O)QoLGE^61_ZdLziSHW*r;Omsr>*VrnXUlD8 z>1`*#Q=ykF(Z}gX*lHHLZCK-Pm3RUb#A)@rX$_cZ4f<`?k!ua-X%4Yzjh1PR?COl$ z>5i-E=D6)ls%=i)&a2aFaKbBg$|)g*5j9$BPuS^X;OnK+@22wUrO53j>FFie?I!r? zCB*4fqVH~*?QE`U?&NJniES<1?gBc%g$X)!o#u3B<6yGFcBa(!PR#U2%5)R__R{V2 zhvW3)_4LpC^snkRc*ynd@>X9^^%ubP-CuXhC-t`3ba&e{U)!`_$aUY~cema4>%#VH z^9&mL3>ts5B=dBBZ*@Vlf*#7$_~`fU$YCzW_AYm~uI4l$#P`6$4R6&9Yuyf_>kfwV z4yyYOMpic*z_k%Ew&YHCO7fNfYA~B~22FBC&3Z;Hc1Ep!Ms0CM?Rkfpbp}M(I(mMp z`0*>n^auApM$Y)r(XT-y>_?>HM`Y?p`qe91BS$9(n1XIm;Q?2@Ag>+M$a8q4-Q$2N4eST8|3RA;;Q|)pS zqk2S z_H!rob60Zen6M$=;r4Qa=Y2VVXScdK0xqW${1SAB54|u4SCwMS%H5u)C$Ex~1&zWhjER2EkSQ+hv*kh5MVP zW&H(WxaM>3MAON1ovL(g_;k_ARq4uf^~*rxn*cnLP16}r6GS|vb;FzTbz6C0yZ$w- zAzMedO}qPbYyWje{&na4b@%vnPrA+E-SrT}O<%jskhpC(`^`YP&9M5-=$Xx=`SqB; z%|!goguU&Q`AuiJ?LfWl+?vhe+s)rQ+Zle_+5Vdqe!F=LyJh+7CHvb}_Uqt68o`5x+O?}I`FSv3yJ}_h1uDi75Di4d3hkzz#VkO!)5yeY{DJfx+C=c z13bX-;_Lx|&h1Z?YtmwlDg`ukYUG9Np zalHx5`~4fkf4$e!v%K?@{?ik}Wk z3zn!1MgSCj`+R>#D33>)1g8)G=eKy5*Zk+_dY7mE=ZAThhrQ>!JD0oP=Nkmq8-f>@ z^CyOeM_k5Jya}ggvS;7l$HLW1j`@wVev^OWPp^AVNDHp_doPIhuJ6Au2#9XC1a9z* zuOIaej`=2xn9r36hfI(#$NG*H)oz&A(Eb=tG6na-74`-bjvSb8l#uS14DLvjZ$^lZ zCYVlUfCv8bGav<5aRb*lgf%HIS1AsC$$KXvL}w=gQ!;^9SOvFB29GcQCzpmhCrW4c z1V^_BXOD@O=igKHg15-IOS^UVib;2Xm`fMivo7LOsXI^xg?UJYS!jk?ScF-)hgrme zDIjvdG^)ZhI>R(3!Zg;wG)}`bUcfW~(cJ3(z((CQxx$_P=DjN3jmg5RebFsA;JJ_Wl_eJCBNeU;XYW$D*!dz z1XAJOdWO$(h0j5U&k^8f#lr7I!1uVpWWCOJ_Wg@-&KCsPXUo8=f8VF9S^x9&_odEg z>BoN=K41kuV3j^#jW1wo*I*mbyUzj8Kkz!s;}U!J^LG3DE*G#d2iThcd_zV;f$we;`I%Y(L2qTRJB9NcR@m@d-+qfmNG^6`o++s4O%;MhAVYU1Ix_>W9?vB6KoW z;NS~X#S;P%E(O*HA7eWZ zlVL-eME78d*cXKu&DXyJhd9yp*CIy>2ZZc;D5~xAH3C~A zYHB6AvSxGWSzv*YV1X&GLK6w`p}dp|8^M5)6+jqGo(cw;n-wem`7NbVh&?-@lA|h* zyiiDeGPRP=Tr)j1%&qSNGPdI~D@TJ-4^!U++CWs(L9x{;sgK4X0z9dFNp@Q85K~$A39qPJ? z(^{U7+v{!DmMQvpMXvVPwAtjJiF1wbW$CUZ^yGKBM{Gj2I9Ov|&2uFPslj~REqHY? zTD?y!$uvBKpi|p(%)e+Kew)mrr?!iNCWMtCiZzr6Q53xa4yYO@-W`jfp52)Wr^hwJ z9lbiYshj3b%M;EG_YjKiL;pGao4r)(Dx2&LRV6PWvYWCZRTGK_PAnD$38Al4NC*Z@ z$qAuf)sG(JN+h-^35Le`_twBuGSON~Jmp_{)5;PJ$F60Kv``ir*0viSCLTKkI1&&u zFrjGSF8x$;Aeo(7hActmwmvyjo#gmRxd3Zm;=`?lkLkQY|s0-1MKch4)E7n-S2_(6k7eJ9u?vK~sfnwX8(hKVRN)RU*K zV)ac>jSbh-MgXSg0rDb&#wj`cjC=4&f~fB`PANS90icN^p|dG!B)jbzsiL!9X_!tY zW_yQ52xq%0)ap;x7HEw+D-=kXCEK9XU%U$x`1a5c_*U(|m&jbOr|w&vj+4Mp*Y=1NAY*R7n+*)=a` z!^c>nk+XvYl2PjzGNrb23*Y!;02LyIS?~lE&N+MGN_L%8aL-UT=^#CuNZLd3+)X)# zo4kNpZL#zBIW^c}E+YPgIv1%myN{$oE{fp&Kmj1hN2m986@saV4yE5XQ+4@nt=>T; z->_X*opfj*$E5yA)uX&;<+Mb$CxZdq!$*}GA)IE4_S_64 zb9SSoqd_8D+LXd{k(}mQt4`sOI)cx$O2cheCVQYe+Q!qEwT_VLxr5L#RkY!c=!~viIL>dInpCJD8^nSu1Yc#zeX^H z8Ho--jn|OWrDdb-fi-)pbl}AKH~Ul@?oWXR>}SS?!^Or?P}7xv&o$$IWcbRROhdEO7b>KZk)Cudfe}Z z*@{FcjMi7;)>|Jh>+nkAB*US?rU2c7WUr9t9x&d{+JU8KVvn(T^OlwxL#LlqyGELA zvBs=HIUH zD&tWPH)${(1T&Ms7VxE&~oCU zQI=Fb@p(I)43t=pBLNKriJ%4}DM$t?AT>jll}sA%dw}vFs2cY=mSlPhyoJCiED(5) zFy?elGc@x;v-P-Otb0n!$VsOY@0h`p*Yyk?uJ*L@y7iuidR3d6K z%j$6@RFBGpaBABk`LxWtMMrI*!_f5wq4EWj>`1x7~ z{2SW`JQ4z-6avE#0l*J_@DD)73qZaIL4^xJ#SgyW55P!>AlQk%`3%984S&fCA>Rxj z^$Q`S4Wau9A^i;@vJJn=3ZbeGpw|juwGH9!_F>`;;pYvZFb?2{iC~Kl5W)))-VR{5 z4B?jyVIhc-5deqC!9>U;#7O)_kjw^eQ3kJG2Je1^7~%UE@dfDWMwt3V81Y6J>BN}H zhuGOgnBhiBibWgX`w&A$kW)r`Mp{qA1^8!0>6bosTHQN$iM@4v>$i_Kb+KkBEwmiIa^F ztBk3?ik^l@2=0jK-;C&gi)h=6ulsZ;gN-Tliz$AKDPc+&Axi#$kTN42|DiEq#xP-_ zC?*vqC6hL>k1S@`Go~{>rrRRnI4Y*gKjJ7i=Bzhnm?ogjHsM;zCobORsy2z%EIIpQ z%qxCOvIH<8l{eu#I_7&LVe>Z@Ksgp*C}CkH6+$Q#f;h1rEa539y=yZOVJ^L^Bkkcb z6;&>MkUH5EIuX-0#dAKv^ESn|Ho<)=7C0jn$TpR_Gm)Mz;cq^XswNXGHkBPN6(lhg z+By-MHkG?F6;3YYh%V&>A?J!eriC&4@2AdAa?1W&svKORq;H}EVWx_3s#1K+AWgVB zNqTN%24;2ovRNWif1>VfrXGB%nSH9!exg-vrrmFcK9guRmn13wFGCPUF*C+F)88_;`!X}SIy0i7FwxF8 zVW%+VFE>T0Fq5Y+C#f)3H+ROdaDlOK5W@Kir>mpAn`Kk>}A@G7pjHnMO9Id_ykcUe03y;Jo&I(OZ&aHFBLurIfWFSmrD zvP7Yhr=U_;3G~fB7q6$>F)|G;F86My^yR*=*1ia_whTA6v~j+O@V>A?F?Z;O2>C7d zKeI>yrwrJ$h<>w(`K5G&pmLe63|OjkL#PbGu#7vR3alTGQl|2Wu5=H+h&(FyNCsTk zJ)I>(P^6rdr-)zLOIt<#mw1p+dyR`H-kryEUqm}!W>i-y7FlKvTV`xo#(rJIURfqI zTg4Mx#M4j(GgyZ7pNFGRdmLGXU0o(_Sw(zVMS@%(y-KCpKGG zpH&rBTh}eo6zfwL{kJ2le^GZwZFittnqHM5Op}RIlbH^d`ng;}W7DF&+r)j{NK%u9 zLYpmZU6xK$)gIc|Pjf#<(|BfGbXVOFP1}%so%d^9kZsfTX5HO<-P3(tFbufv&9>Av zr!C8_ZV#rZ@UI@2rylgS9t@`$h_@cPyB>h49Y(PoX1*Dm7VQYW?w+DN$r){OMnQgwAnXWw677QwEc1Q-EsZh1qShzfBjYXf6))awfDg^h~50x&E3`A{L#(*)y)*}{R2z` z>!a;ru-#Vi?PB!pQ}^vNw{>lI_2~3fwetPzaCHaD{u@HUyEN5Xba`=@ z^8?=Z0}785zK9dS$Rjd~6XEeA;fxc}@}olIBSwr9*7E(&lfy6b(=S8Kk9re{j5C=< z6LyE=w(-;UmK}vlvozKduFC^K%oEY}A0)~q!V+epnr5OFX5yY^YSc&SeJ9%GC)#ai z=|E=^jVEG-W^z(z9D`;`*hY8<=Rc?}@RTfYv@LKfEbxphtQ;(((oWRZPHfMA=yY7z zO;{LgTsT~w=^|R_5?WAVT)0wPXaZQM9ay9;oS8sdC`bV=tO6~p>nwcxE|i2Uu!zt6 z*DN>_E&@C*{IIQmP+b{RSa^CKsc2u=8d|tnT!nQUab;W~Y#d mN7{-mFIHIF>s&Wz8_*ds1duq^^Ptb!>oGCi$AkT1N5FLIbKtRW2&9;^}uO#e+1 z#Uh*)b6mJ_Uuj_3#8F=r8C_L4T$M^(lznc$ieIF4UKy?(eym?fM3^;Ho-_c=>IJRR z7Hy;suUZ~%Y9XOK5--X;uR0>HDm`urps%{LZh8u?y34N$*KYb2tdapQ@A8Z~F)y+$ zFGdM&vLmiCr0#MvFD5MR#u;o{5pL2tZ)z%U#>)U#`I+Y`oOac9X5|=n%l#+I9CxdU zC$5G!rHXcrf_Cc;b{mB@n-CW}9#*yY24jvldj)p$oHmULHci+LO&fLx+ztoScQaZK zbAY=Ui-&p#oBlhSA)@>H6RR7`tGD_N)8Io6Wwv>H@n}&O2p@yTx`Z-?6LD z^^1=WJO9YL?@Wi!I)~3OhiSvR|AdGCK1bm4JG{xe$G4mN$g6>kM=?J|2+`?iz2`>pzL-+CkC`<~;vzN2-& zvwFVM`oG^hpWFMTTY61AKmr&5!#BLcKRm=oyu?pD#aFz=Up&TVyvA=l$9KHPe>})P zyo2aa2q}EXpFGN^yvnaU%eTDCXZ*+?Ja!xWau0mMzdX+8yw2}D&-eVsKR|F_fX@#- z(HFhZAN|FToUIqUhl{$?lln+3Jkn1+)mOdMr+fkop95Sy*LS_we?7w|fXov)%{Oqs;GEP;KIxaf!v}uHzrZ29 zfa$ls>l=XK&-vv8`>*@A#$N#F=RW8Q{pmfain$2~+_XoIvh-!002t_pd$bZ~O-cf*cTl0T@3IRKW;*Kl`tJ>~D1Q z3%ufAeDz!Z7F59tHp#!CZy&~~dthMR5%>xY{&%=ekrb9vW^sbWohr*y++op$ z$I_}G9W~S5Ojd(avTBDHzp}-nN0_)UY+|0$ijEm5J#dI13w!q>i|ZXp;K$gCS?Cy{ zfGQ9fp&|o17%98$z+12xXi71l0%Iav=!Jo?Jyiq#Mln-!@LvYXea{{ zA4$=n1Q8E#1u0KBt3>gO%Kic zK+5g6I*(#CC?0jwktkV%qBS9rn7ZSHDk2*}iC%LEf`u%YnlhM%7S%FROqm4BwLLWsQ?<7aKL~BUJ!%{1Q@W$q7;6xv?E83HMCwz4RFMn zM~xvy7DV^euoh98|1DT9X;lmai2@L2s0B7X^<&gjYy1s3i^1Kgr&TR>H7Jj74XLp^ zf?%qTJC@?Xv67b})XHQn(9Y2-PXTcbW3+R|yHuLNP=Q*s#?Pyz%rUnV*a78NNiFnfrM359-a6*HHn0R4nj}A4o(4PsmAVdq4`C{K>4WLxs zqw!v;Y6Ix2wp)f8Rvbt4mzu1Nrl#CZ(eDhffXf2h zHp4q%7DB{~ExYtC#Ggqw;6l+&F{Y4wL(ID_0Q^zfs#C2sZ*Y$GZm92(7@vtG3Yd5z zg^HLEgo+ok|A^p$AD&21BnO42cOiW>#HCV4WT^lcGwc?aVB67GDR98+Gn0K61s91p z$A2sSrNj^CSpT~qA3-{)rs6BfwG2CjVif1n=ABZ6t|5?`9n3u}6Uo(XLXvSwfe8$gh!hZ@r>!}_f@<@UgR)c+dQpl}4D4Q| zE*M0Tz(+m}X`u)-Bn!DY1a&ma(i+W3!DR{YEg94xO6X(4Bl0Z^6Jtp546q{j;m2YnDT@?d!vjJ1 zfdB~ zUjdWQGe}XdFG#}_Ijo!aD5*{KiIXEAw3Z3u7qM}6q;R@PCrx-mfm+V;F!pikau~r0uz-auY+~*j=y3(C)S;^9=>o9~(O)3;C-0bE^ z|MpgZIi0CJPy6GW=Cs6;fHY(vVT)USAO#&nAPI6v!`O5%!yF*O2{WCSCG)kmT4bpK z9?DV$h=J2l5>=ajvzClX<*7SNi%oeAA;t7URfGt3FTbgQEeUhcgeZ0}`bo-3nbL%% zbRi2_s6rONV4drINEpfb!gf{%v}Od%5zx>X=L80#49RhJbiImEj~Wsfo#+t|ThAlR zx_8eZ@NIphHiTj;p1QI=4gZ$)qE zL_3Wn0r@>C7L+tV512K?!NNk9@ZjD|ckV!1*N@)Sx_V#feoh zVQz5Zij|ne{40r40?3r>EP22;_J=xjjHv_{L?mli!vm&(1~pTdxy(H>1^FI~l%5IY|O2;NlT@fC4n8vqHV>k8%W{U_4eZND8oqFg$<;X`VuwDLe%o zPyr89NI^ZrkmN&;dPGeYjH7pB;`-7T&weKLt3zVPdiW!E0kAcrn>FTM|9Zqq3|Lxe zfW44*!J63Ov2#aP-Iplu`P9tzNwJ~bkPOxX0JqQ}hr@&FT}PYS7c}*^->aL$CVR?N zUU9dHjXP=+AOQUkM*y&08(j|s-StM_vF%IlyDYoUe14*p?M-R`th)dK=*6`Srfqr$ zoZ-y^caWT|mndq0;uYsW#W8+yj8k0W8|T0WHm-q=XFTL0FZstqK5~nn{Ny0_ILlLR zu7=Y&002-+!TT`{co*yeE+=`)VeauF&YbAtaX`?2?s1>59Oz9~y3>;$b&D^Z<49-v z#`*p4`1U&}LofQF1AvX(#alKHPeeGwTd))8-_Pvk2vZb7P&JW-5orip@ zN{{@}E8qCxCjRD&|9sCkU-;3tKJ>Bwm(%Os_vN zYJaWX|C9LNWc%4aK2apUeEcVW|N8$J|Nqbbd?Np-PxK0q^aM~R2vGX&&nN1y`^c~E z#?SmDF#LFL0@1GmBM|m15CSQX12^#dIuHZZZ~ks#-X5?4{|68NS16FbR)v2|dsWl@JP< zPzp)V{WK6PhOqkVj|RWc3uUkd!Eg-2&;Vyp3~jInflwx3@C*^~0GTfh(Gbdl&kCoo z1hfd> z&lYzP7JE?_Ympbn5f{r57*FsUWg;BW@f^u99er^f^`aP&ksG%$8r{$brI8f>aTz;N zAU}~HL(w2d5g|*l8S{}JsnH)_0w3+M6)BPxEpirJksi%47{yT@)lnnaaTw!~BS*3w zJCY>l(IZtc5*rd5_t7T?ukd8DD-I9tVsa*N5-SeRAu(zi6G9?EG9y*8>vFOvwc-H+ zFYSzSDN~~Dgc2n`QYV12AQ_Swi30DKGAkG3?7U7Zy)q;cfF~CVB3)uCp|T!>GKIc! zEeYv2*zzquA|%1l9m|p>tx_MI@!8;VFB{_Q|M>DR4L~d#3m_xXF4OWNe-Uc{^DP5! zG51m~-;pkV(lDtq83)qUKtcjeU^6+hGd+_t`_3^z%r8+Q0g36L{1x09||(;%u5_?)w_PO`_U6Fccs zJJXZYep7yafDXKXKfzNA#xp=k<33@HIbA|F?a(#H(kDg2I_Xn4?UO+1tUE#C1+;(; z_|redGe7~fog{SB)-%-zvo7D$AP|%~|3Sh*9~3tu^h1{{KR<#2o}fQ7G&})xJjoM4 zpFqxBbifQWHcONspmQNDvoeFCL02?8hd>Bglp`D@Xj-c-xaTiR+m0E{1Af?kt^)f|m z;1rBIINA7GgOQq3|s_N*9T%Hb|EM>3tov-_7$*R5>Tg8`zZ4)H_{{ljy8qhQW4=@ zNx@Tv;9WVPT}dHc1#D5=bV5o&Za!!hef2JZoP*OBfPhbU^2GLZ^+gzzsOp08Hl#W(H}^c1le(Cugg+fX6&G7E9d+xZE-% z7{EAzKsd|vMhg~_c9cgi>67-wZni5zMyGBT);l(bbQT3^L*x#|0C;CIZrKO7yk$PJ z;BNWIdOc!zxY%h3v|24K*r#4x!7gtCI`xG%JQidH+1_-w`88m%uvlyCT4sP=Z zdOWyLDeIPmV%MCm z_apw5BW@Q6d{uX~ws$Rf*wCg>E(8v|hi*{EiXF%Tco?+I0FGkDXyEpQ&qS3TiX$54 zVOB|61*s%Llpxyk9$%n*2jYCo6=iReheI_x-BmmGfN~vzZa}GZtk?pi!3@ABIV(bf z*2;gec!X;QbqIh;zLJPKVto>3j6K4E0d_on^$8@HU@Q0ue2t6_NMS|cl|`wOd?=HW zxFM`qLMY@b{|niK%4>x|NSYz)i@z6eXZUZq@R5CTK}R$-QxrFOcn%U*2$qydIRP6; zp$8bilq(mtBqXjh$#f&+XJjD(GN~af;9s!hr%D%qN0>WkrceqPC#hfs5@2|qCQd-e zOy;BtW(0=)wQ4_t0Djq5wRUTFnE<3$pQLyh+Qv~hSBk+yc?;oqnR#Cjp;E@yD;p-S z4q&gmmyae^RP>6kB1)0P_bwMX0&c*YOHw3L5+RVZl6yFDk6>nx0EnA`6n3D5>Bc*R z)pZC;J49(`d**cVSgmqKi8rZpqQQxqK^b5}ilO0raIyf(BfT~SuUN!==A^A%muhPl zB={qF|8`k-d6#RM;0FXCn9-(;3c#Mpb~_A6iXWsBmSJ{&hC%)pbn@7svNCY!v|4J~ zvRPzsdW*Kg*e;&ZWQ*D+g8GKp(>0IUHnpPYBIQv=(1Z4o^0xS2aN>-ys<>IFi!?cA|s7ITqqtd8#SO`AVhi!8XNTIv; zAaQp9o<-tyt{6^j`)!#UC2*M|2*B3}pab+eM?2I!+q=GFV{CIfy=^13sT(b&Qo6_W zAOl=JQ*?3-{J;&o2N3)uq&So*ZgSWUZ6{BiT$i2x|9qX& zBU8*Pz164v#97_i`@3Yb-OWuDk}pQuqdn0N)Y~N)+RO6UL6+ImUBHW!-RIn=n>{+) zUEbdv)#IH=>s{UJJbc%k-hcftR2|!^UE2qq+x-IEn-k&3UEzV0;fLJe-`vs@Ufdg= z;ve4PBOc1oec$Pv-#H%M`yJo^9m&OY-bMc2OFrM-edJ9(H;4z-(f8OUMe&K^2=X>7hbtB+m{^Ud6Vf^pTi)uc z{voHHkum+byFSx}Q08f#hHc*5iGJuSUhOZQ?K58B!`v>TwwHrC#x=p70NU>wA*%y*}*0Uh*TL2K;{4%YNp!dGkHL z^Fd$pL;vh+9>vjq?eRYCQy=x=KJQn*?O)#@F#qc{-Q#V)<8lA*Z(sLwKkxxx-*?~l zgCF>NpZIzI_=UgtZ({b3K9Y65=$*g$za9FgpYN+b_U9h^>%R3>pZi&#;P2l1VP7zq z-|{OT^1&JXv3}{DUhp5^@graT6JP!ppZ*))@Z%r;(_jDBzb^oy#tRJu3vwuk@E}5h z3Kw$tuuwz8gb^iHd>C<}!HX9mI^>w~LPn1iGlFzTa-+$WC|Q>L|2Wd6N|-HazPxEL zCBu_A8S1nsb7xGOGkZ$>sZl6VpFx2xJ=!#>(}YNQ7R?#eD$}P@yH?FQ)M(d^V7dOR zIQ8mQv09;WZHw`3Q-Klc+P#Z6uU@+x_WJ#Mw=dwqdIb|cT-PvS!ipCIZtU1ER** z!iN_Je%yER-OF(|r~TY>^v%;VSGRnfa`wpE9d}>+9dY=>;|Z4^d>(N6zw7tv9&Y>b z@Wk^!*N@NnzW(|6CGUs-A8`HE7NBnfR>og}yB(MpgLpZp|JiWwAy;2}ds+BE0tRfz zVTT@m2x5pLj!0sOCZ335iYl(iVv8=m=wSj6L|~y_8e|A#jymqhV~;-m2qcO!I#*$l z6271yZV>Y2*#kj731yU0PD!PT4=h>N1yydzWtU!lY2u8YVQF82M;d7ynwDt@W}9xl z3FnRp)R>n8ao&k%o_cPW0CZ|9H{XN?CP`a=dmf5tqEwQpXrqok`eLDkju|MD^U?X+ zrJg~`X{Vlki0NIQj!J5yerk#;aDpy4X=t043Tv!!GAe7WwsI+{nE;-dDuumLwju)` z3VUm@#)4YkvC1x+ircD6wmRCYC_bTv6f11V|9}))Jh1`+%#K?stt_&@g98PS z%WkQ;?h3DO(mLzwvzevXffp+LV z?}jmTe=^50iQNJ+00RurK}QEl|DcA-J5T*(!gZlYK@*7B?1&RDY;AKNJgiG~*;`Uf zw8fqUUG2}TZib@CPbe(~AU|lK^b<@dZFb*Nx;)|qeQ@0e3k#5Ng4SFI;dkRt_B^QD z7h7s?y_N%eA^{yJ!g=SO7ooJ&B0ADc>Clwo|M;jGP~zlP@@!Vi!2;|A^nF6;35jyIW};L^{KB| z`|iDW_=}T8-kV-6M8PBQiI0LPYQi5vbV37c&;TUlLIFs4 zz718;08u0nrs=#h~e(focXol52JG{gLhi4;LF z2K)e-%LLfJ;!v{9iO!A?k9ws$r2#5XjM52%bfsG&EQ4goT8faCAmSy5 z5-H1El1POiYM~=oP=Oslz;GwXBnfI(1vZK3mEg-nEl|fp9|Ex%r?aL(8Hzga(c%>4 z%wsLO>BDb^vl+s8B{+p~&Je*f|3o3|9W8IkA(U=tq^={RFEbWKFv@F;6*FTQEmI-_ zC?W+ZTV@BE88AisAexGp=7;XMq3B`r6d--21*}Is>xmMH3ebfF`WVtDrL&f>bLoe= zXaJVVb3~IgQ41|eL&PCZd0oh%Kt(jc3IM|ljx}gFT0IQAt(N1kv z*(_Z!%u6=n#+OIwbZ1zz5ZOfHlDQmeLOexO))KW45hEZ0@^)|n6bNAl8Ngu^>KLL_ z*7cjufCDc6O3~7lGnKWKg?SC|g{CIC86OT`a0}1?Q%nP-BNowSO`OQcCcufr((H@> z8%)nyN0{&b97GNY=P_{;3`$F8QqY1(_78!^|s48DlsJ26=oLCl8`1& zVY19xxIW|npDoCM|MF6B2jO9%l^`mBBYtsY0&I^JryO#JSh-XuTREv!79XI=hUHVx zLKR#lw1-^GAzmUH#T|qs`WWqNFS>cOZ=UJU4qQ_N8?9s>quURl#()8MYy}EjU^Sx( zzFMP_dj+5#NG;INsy;x(wti7M3ou14%C4kaZ7~P8nA{M>m_#0M0@sSSfDxP^3y6Tk z%viu_5Lv*KW)Q9;dcoxk8!>xd=ppz{=~pIud$-|EZ1|{$M?xO}4dNOwoH5am=btEdlM>zy;QbJkDJ)|Bh zgdRcgrNVTi`~ozZG4!JER>`WCh1rYY&G20Wr~!1K2h!|M&nf7Vhy{H>L=_Ox z1PuV6O13xAx~`A?vkhCc?4Mlag-^!Po+xh%elP)I{;kmEKK+hM{fQFb04%@)9e{pO zQhxmR|0u+#aw!)X#+Q7N*EVoAf1z_{4DetngMkR>N7^?c>*4^rr-AYHcoA4^V)TBW z6@QD7A{8h=I+uYVI6nRdgEMFV3P^bj=ok*z8pyYU`;#KVf`LI;eKbfl97u%eH-h@Z za`rP2a$y!_Ar@cZgj4~A1_2{4c!c94g=~=#SxAI%K^9Y}7H+|XPbh{;feJQi+5%B)@YbeHe;aH6%939iG^Linx9OmWd=t z|7^3^ev9~kv8aS4Sc|V{i#>>ob@+>n7>u{5i?Fzf!)J&$g^0+ejLpc5&!~!>$cf;= zimNz{;!%y#h>R$>jL}GqyfTcwSd6{chT&L__jO<8`vB8G$*oeZ2j_bIK z_UL}sn1}jk9@+Sf+qj1*n2gXkklu)m{D>a@c#r_OfDCzq4rz^`6_2wqkHqMX>L`o% zn33(Mk-2!0`1p<#X^!$Zk|J4;8yS+f0geL6jm~J0`v{TR$dUosjRk3wElH3#`I7yJ zkm{k3FgcSA8I-L!kt$h|MtPDR*^$7QluY@ND2b6u$πlJZfJ;`o$OS(W**|B^MS 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 z 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 r7vclZxlI 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∋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 N002ovPDHLkV1n6$(8~Y- literal 0 HcmV?d00001 diff --git a/packages/kbot/extensions/gui/assets/schema.json b/packages/kbot/extensions/gui/assets/schema.json new file mode 100644 index 00000000..b8796934 --- /dev/null +++ b/packages/kbot/extensions/gui/assets/schema.json @@ -0,0 +1,180 @@ +{ + "$ref": "#/definitions/kbot", + "definitions": { + "kbot": { + "type": "object", + "properties": { + "path": { + "type": "string", + "minLength": 1, + "default": ".", + "description": "Target directory" + }, + "prompt": { + "type": "string", + "description": "The prompt. Supports file paths and environment variables.", + "default": "./prompt.md" + }, + "output": { + "type": "string", + "description": "Optional output path for modified files (Tool mode only)" + }, + "dst": { + "type": "string", + "description": "Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for \"completion\" mode" + }, + "each": { + "type": "string", + "description": "Glob pattern to run for each matching file" + }, + "disable": { + "type": "array", + "items": { + "type": "string" + }, + "default": [], + "description": "Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user" + }, + "disableTools": { + "type": "array", + "items": { + "type": "string" + }, + "default": [], + "description": "List of specific tools to disable" + }, + "tools": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "fs", + "git", + "interact", + "terminal", + "search", + "web", + "email", + "user" + ], + "description": "List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user" + }, + "include": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json" + }, + "model": { + "type": "string", + "default": "anthropic/claude-3.5-sonnet", + "description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-instruct | paid\njondurbin/airoboros-l2-70b | paid\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\nopenrouter/auto | paid\ncohere/command | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndatabricks/dbrx-instruct | paid\ndeepseek/deepseek-chat-v2.5 | paid\ndeepseek/deepseek-chat | paid\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-2.0-flash-thinking-exp:free | free\ngoogle/gemini-exp-1114:free | free\ngoogle/gemini-exp-1121:free | free\ngoogle/gemini-exp-1206:free | free\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-flash-1.5-exp | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-pro | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-pro-1.5-exp | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflatebot/mn-mag-mell-r1 | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nliquid/lfm-40b | paid\nlizpreciatior/lzlv-70b-fp16-hf | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-70b-instruct:nitro | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3-8b-instruct:extended | paid\nmeta-llama/llama-3-8b-instruct:free | free\nmeta-llama/llama-3-8b-instruct:nitro | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-405b-instruct:free | free\nmeta-llama/llama-3.1-405b-instruct:nitro | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct:free | free\nmeta-llama/llama-3.1-70b-instruct:nitro | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.2-90b-vision-instruct:free | free\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct:free | free\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct:free | free\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct:nitro | paid\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/mixtral-8x7b-instruct:nitro | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\ngryphe/mythomax-l2-13b | paid\ngryphe/mythomax-l2-13b:extended | paid\ngryphe/mythomax-l2-13b:free | free\ngryphe/mythomax-l2-13b:nitro | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenchat/openchat-7b | paid\nopenchat/openchat-7b:free | free\nteknium/openhermes-2.5-mistral-7b | paid\nperplexity/llama-3.1-sonar-huge-128k-online | paid\nperplexity/llama-3.1-sonar-large-128k-chat | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-chat | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/llama-3-sonar-large-32k-chat | paid\nperplexity/llama-3-sonar-large-32k-online | paid\nperplexity/llama-3-sonar-small-32k-chat | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-2-7b-instruct | paid\nqwen/qwen-2-7b-instruct:free | free\nqwen/qvq-72b-preview | paid\nqwen/qwq-32b-preview | paid\nqwen/qwen-2-vl-72b-instruct | paid\nqwen/qwen-2-vl-7b-instruct | paid\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct | paid\nundi95/remm-slerp-l2-13b | paid\nundi95/remm-slerp-l2-13b:extended | paid\nthedrummer/rocinante-12b | paid\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-70b-hanami-x1 | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nraifle/sorcererlm-8x22b | paid\nundi95/toppy-m-7b | paid\nundi95/toppy-m-7b:free | free\nundi95/toppy-m-7b:nitro | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\nxwin-lm/xwin-lm-70b | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-1106-vision-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4-vision-preview\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n" + }, + "router": { + "type": "string", + "default": "openrouter", + "description": "Router to use: openai or openrouter" + }, + "mode": { + "type": "string", + "enum": [ + "completion", + "tools", + "assistant" + ], + "default": "tools", + "description": "Chat completion mode:\n\t completion, tools, assistant.\n \u001b[32m\u001b[1mcompletion\u001b[22m\u001b[39m: no support for tools, please use --dst parameter to save the output.\n \u001b[32m\u001b[1mtools\u001b[22m\u001b[39m: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode.\n \u001b[32m\u001b[1massistant\u001b[22m\u001b[39m: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files :\n " + }, + "logLevel": { + "type": "number", + "default": 2, + "description": "Logging level for the application" + }, + "profile": { + "type": "string", + "description": "Path to profile for variables. Supports environment variables." + }, + "config": { + "type": "string", + "description": "Path to JSON configuration file (API keys). Supports environment variables." + }, + "dump": { + "type": "string", + "description": "Create a script" + }, + "preferences": { + "type": "string", + "default": "./.kbot/preferences.md", + "description": "Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables." + }, + "logs": { + "type": "string", + "default": "./.kbot", + "description": "Logging directory" + }, + "env": { + "type": "string", + "default": "default", + "description": "Environment (in profile)" + }, + "variables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "filters": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "JSON", + "JSONUnescape", + "JSONPretty", + "AlphaSort", + "code", + "JSONParse", + "trim" + ] + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array" + } + ], + "default": "", + "description": "List of filters to apply to the output.\n Used only in completion mode and a given output file specified with --dst. \n It unwraps by default any code or data in Markdown. \n Choices:\n\tJSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim\n" + }, + "dry": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Dry run - only write out parameters without making API calls" + } + }, + "additionalProperties": true, + "description": "IKBotOptions" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/packages/kbot/extensions/gui/assets/schema_ui.json b/packages/kbot/extensions/gui/assets/schema_ui.json new file mode 100644 index 00000000..deb26b7e --- /dev/null +++ b/packages/kbot/extensions/gui/assets/schema_ui.json @@ -0,0 +1,122 @@ +{ + "ui:submitButtonOptions": { + "props": { + "disabled": false, + "className": "btn btn-info" + }, + "norender": false, + "submitText": "Submit" + }, + "path": { + "ui:description": "Target directory", + "ui:title": "Path", + "ui:placeholder": ".", + "ui:widget": "file" + }, + "prompt": { + "ui:description": "The prompt. Supports file paths and environment variables.", + "ui:title": "Prompt", + "ui:placeholder": "./prompt.md" + }, + "output": { + "ui:description": "Optional output path for modified files (Tool mode only)", + "ui:title": "Output" + }, + "dst": { + "ui:description": "Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for \"completion\" mode", + "ui:title": "Dst" + }, + "each": { + "ui:description": "Glob pattern to run for each matching file", + "ui:title": "Each" + }, + "disable": { + "ui:description": "Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user", + "ui:title": "Disable", + "ui:placeholder": [] + }, + "disableTools": { + "ui:description": "List of specific tools to disable", + "ui:title": "Disabletools", + "ui:placeholder": [] + }, + "tools": { + "ui:description": "List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user", + "ui:title": "Tools", + "ui:placeholder": [ + "fs", + "git", + "interact", + "terminal", + "search", + "web", + "email", + "user" + ] + }, + "include": { + "ui:description": "Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json", + "ui:title": "Include" + }, + "model": { + "ui:description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-instruct | paid\njondurbin/airoboros-l2-70b | paid\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\nopenrouter/auto | paid\ncohere/command | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndatabricks/dbrx-instruct | paid\ndeepseek/deepseek-chat-v2.5 | paid\ndeepseek/deepseek-chat | paid\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-2.0-flash-thinking-exp:free | free\ngoogle/gemini-exp-1114:free | free\ngoogle/gemini-exp-1121:free | free\ngoogle/gemini-exp-1206:free | free\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-flash-1.5-exp | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-pro | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-pro-1.5-exp | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflatebot/mn-mag-mell-r1 | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nliquid/lfm-40b | paid\nlizpreciatior/lzlv-70b-fp16-hf | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-70b-instruct:nitro | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3-8b-instruct:extended | paid\nmeta-llama/llama-3-8b-instruct:free | free\nmeta-llama/llama-3-8b-instruct:nitro | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-405b-instruct:free | free\nmeta-llama/llama-3.1-405b-instruct:nitro | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct:free | free\nmeta-llama/llama-3.1-70b-instruct:nitro | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.2-90b-vision-instruct:free | free\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct:free | free\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct:free | free\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct:nitro | paid\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/mixtral-8x7b-instruct:nitro | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\ngryphe/mythomax-l2-13b | paid\ngryphe/mythomax-l2-13b:extended | paid\ngryphe/mythomax-l2-13b:free | free\ngryphe/mythomax-l2-13b:nitro | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenchat/openchat-7b | paid\nopenchat/openchat-7b:free | free\nteknium/openhermes-2.5-mistral-7b | paid\nperplexity/llama-3.1-sonar-huge-128k-online | paid\nperplexity/llama-3.1-sonar-large-128k-chat | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-chat | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/llama-3-sonar-large-32k-chat | paid\nperplexity/llama-3-sonar-large-32k-online | paid\nperplexity/llama-3-sonar-small-32k-chat | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-2-7b-instruct | paid\nqwen/qwen-2-7b-instruct:free | free\nqwen/qvq-72b-preview | paid\nqwen/qwq-32b-preview | paid\nqwen/qwen-2-vl-72b-instruct | paid\nqwen/qwen-2-vl-7b-instruct | paid\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct | paid\nundi95/remm-slerp-l2-13b | paid\nundi95/remm-slerp-l2-13b:extended | paid\nthedrummer/rocinante-12b | paid\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-70b-hanami-x1 | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nraifle/sorcererlm-8x22b | paid\nundi95/toppy-m-7b | paid\nundi95/toppy-m-7b:free | free\nundi95/toppy-m-7b:nitro | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\nxwin-lm/xwin-lm-70b | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-1106-vision-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4-vision-preview\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n", + "ui:title": "Model", + "ui:placeholder": "anthropic/claude-3.5-sonnet" + }, + "router": { + "ui:description": "Router to use: openai or openrouter", + "ui:title": "Router", + "ui:placeholder": "openrouter" + }, + "mode": { + "ui:description": "Chat completion mode:\n\t completion, tools, assistant.\n \u001b[32m\u001b[1mcompletion\u001b[22m\u001b[39m: no support for tools, please use --dst parameter to save the output.\n \u001b[32m\u001b[1mtools\u001b[22m\u001b[39m: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode.\n \u001b[32m\u001b[1massistant\u001b[22m\u001b[39m: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files :\n ", + "ui:title": "Mode", + "ui:placeholder": "tools" + }, + "logLevel": { + "ui:description": "Logging level for the application", + "ui:title": "Loglevel", + "ui:placeholder": 2 + }, + "profile": { + "ui:description": "Path to profile for variables. Supports environment variables.", + "ui:title": "Profile" + }, + "config": { + "ui:description": "Path to JSON configuration file (API keys). Supports environment variables.", + "ui:title": "Config" + }, + "dump": { + "ui:description": "Create a script", + "ui:title": "Dump" + }, + "preferences": { + "ui:description": "Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables.", + "ui:title": "Preferences", + "ui:placeholder": "./.kbot/preferences.md" + }, + "logs": { + "ui:description": "Logging directory", + "ui:title": "Logs", + "ui:placeholder": "./.kbot" + }, + "env": { + "ui:description": "Environment (in profile)", + "ui:title": "Env", + "ui:placeholder": "default" + }, + "variables": { + "ui:title": "Variables", + "ui:placeholder": {} + }, + "filters": { + "ui:description": "List of filters to apply to the output.\n Used only in completion mode and a given output file specified with --dst. \n It unwraps by default any code or data in Markdown. \n Choices:\n\tJSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim\n", + "ui:title": "Filters", + "ui:placeholder": [] + }, + "dry": { + "ui:description": "Dry run - only write out parameters without making API calls", + "ui:title": "Dry", + "ui:placeholder": false + } +} \ No newline at end of file diff --git a/packages/kbot/extensions/gui/eslint.config.json b/packages/kbot/extensions/gui/eslint.config.json new file mode 100644 index 00000000..2e2c493c --- /dev/null +++ b/packages/kbot/extensions/gui/eslint.config.json @@ -0,0 +1,18 @@ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": ["eslint:recommended", "plugin:react/recommended"], + "parser": "@typescript-eslint/parser", + "settings": { + "react": { + "version": "latest" + } + }, + "rules": { + "react/prop-types": "off", + "@typescript-eslint/no-var-requires": "off" + } +} diff --git a/packages/kbot/extensions/gui/package.json b/packages/kbot/extensions/gui/package.json new file mode 100644 index 00000000..bd457967 --- /dev/null +++ b/packages/kbot/extensions/gui/package.json @@ -0,0 +1,90 @@ +{ + "name": "erwt", + "productName": "ERWT", + "version": "8.1.0", + "description": "Robust project for developing Desktop Application with Electron, React, Webpack & TypeScript.", + "main": ".webpack/main", + "scripts": { + "start": "cross-env NODE_ENV=development electron-forge start", + "package": "electron-forge package", + "make": "electron-forge make", + "publish": "electron-forge publish", + "lint": "eslint src/ --ext .ts,.js,.tsx,.jsx" + }, + "keywords": [ + "electron boilerplate", + "minimal", + "electron-webpack", + "electron-react", + "electron-typescript", + "hmr", + "boilerplate", + "2024", + "ERWT" + ], + "author": { + "name": "codesbiome", + "url": "https://github.com/codesbiome" + }, + "contributors": [ + { + "name": "guasam", + "url": "https://github.com/guasam" + } + ], + "repository": { + "type": "git", + "url": "https://github.com/codesbiome/electron-react-webpack-typescript-2024" + }, + "license": "MIT", + "config": { + "forge": "./tools/forge/forge.config.js" + }, + "devDependencies": { + "@electron-forge/cli": "7.4.0", + "@electron-forge/maker-deb": "7.4.0", + "@electron-forge/maker-rpm": "7.4.0", + "@electron-forge/maker-squirrel": "7.4.0", + "@electron-forge/maker-zip": "7.4.0", + "@electron-forge/plugin-webpack": "7.4.0", + "@marshallofsound/webpack-asset-relocator-loader": "^0.5.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", + "@types/node": "^20.14.11", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@types/webpack-env": "^1.18.5", + "@typescript-eslint/eslint-plugin": "^7.16.1", + "@typescript-eslint/parser": "^7.16.1", + "@vercel/webpack-asset-relocator-loader": "1.7.3", + "classnames": "^2.5.1", + "cross-env": "^7.0.3", + "css-loader": "^7.1.2", + "electron": "^31.2.1", + "eslint": "^9.7.0", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-react": "^7.34.4", + "file-loader": "^6.2.0", + "fork-ts-checker-webpack-plugin": "^9.0.2", + "json-loader": "^0.5.7", + "node-loader": "^2.0.0", + "react-refresh": "^0.14.2", + "sass": "^1.77.8", + "sass-loader": "^14.2.1", + "style-loader": "^4.0.0", + "ts-loader": "9.5.1", + "typescript": "^5.5.3", + "webpack": "^5.93.0" + }, + "dependencies": { + "@plastichub/fs": "^0.13.41", + "@plastichub/osr-commons": "^0.5.2", + "@rjsf/core": "^5.24.1", + "@rjsf/mui": "^5.24.1", + "@rjsf/utils": "^5.24.1", + "@rjsf/validator-ajv8": "^5.24.1", + "electron-squirrel-startup": "^1.0.1", + "react": "^18.3.1", + "react-dom": "^18.3.1" + } +} diff --git a/packages/kbot/extensions/gui/pnpm-lock.yaml b/packages/kbot/extensions/gui/pnpm-lock.yaml new file mode 100644 index 00000000..0681195f --- /dev/null +++ b/packages/kbot/extensions/gui/pnpm-lock.yaml @@ -0,0 +1,9172 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@plastichub/fs': + specifier: ^0.13.41 + version: 0.13.41 + '@plastichub/osr-commons': + specifier: ^0.5.2 + version: 0.5.2 + '@rjsf/core': + specifier: ^5.24.1 + version: 5.24.1(@rjsf/utils@5.24.1(react@18.3.1))(react@18.3.1) + '@rjsf/mui': + specifier: ^5.24.1 + version: 5.24.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/icons-material@6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@rjsf/core@5.24.1(@rjsf/utils@5.24.1(react@18.3.1))(react@18.3.1))(@rjsf/utils@5.24.1(react@18.3.1))(react@18.3.1) + '@rjsf/utils': + specifier: ^5.24.1 + version: 5.24.1(react@18.3.1) + '@rjsf/validator-ajv8': + specifier: ^5.24.1 + version: 5.24.1(@rjsf/utils@5.24.1(react@18.3.1)) + electron-squirrel-startup: + specifier: ^1.0.1 + version: 1.0.1 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@electron-forge/cli': + specifier: 7.4.0 + version: 7.4.0(encoding@0.1.13) + '@electron-forge/maker-deb': + specifier: 7.4.0 + version: 7.4.0 + '@electron-forge/maker-rpm': + specifier: 7.4.0 + version: 7.4.0 + '@electron-forge/maker-squirrel': + specifier: 7.4.0 + version: 7.4.0 + '@electron-forge/maker-zip': + specifier: 7.4.0 + version: 7.4.0 + '@electron-forge/plugin-webpack': + specifier: 7.4.0 + version: 7.4.0 + '@marshallofsound/webpack-asset-relocator-loader': + specifier: ^0.5.0 + version: 0.5.0 + '@pmmmwh/react-refresh-webpack-plugin': + specifier: ^0.5.15 + version: 0.5.15(react-refresh@0.14.2)(type-fest@4.22.0)(webpack-dev-server@5.0.4(webpack@5.93.0))(webpack@5.93.0) + '@types/node': + specifier: ^20.14.11 + version: 20.14.11 + '@types/react': + specifier: ^18.3.3 + version: 18.3.3 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + '@types/webpack-env': + specifier: ^1.18.5 + version: 1.18.5 + '@typescript-eslint/eslint-plugin': + specifier: ^7.16.1 + version: 7.16.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3) + '@typescript-eslint/parser': + specifier: ^7.16.1 + version: 7.16.1(eslint@9.7.0)(typescript@5.5.3) + '@vercel/webpack-asset-relocator-loader': + specifier: 1.7.3 + version: 1.7.3 + classnames: + specifier: ^2.5.1 + version: 2.5.1 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + css-loader: + specifier: ^7.1.2 + version: 7.1.2(webpack@5.93.0) + electron: + specifier: ^31.2.1 + version: 31.2.1 + eslint: + specifier: ^9.7.0 + version: 9.7.0 + eslint-import-resolver-alias: + specifier: ^1.1.2 + version: 1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0) + eslint-plugin-react: + specifier: ^7.34.4 + version: 7.34.4(eslint@9.7.0) + file-loader: + specifier: ^6.2.0 + version: 6.2.0(webpack@5.93.0) + fork-ts-checker-webpack-plugin: + specifier: ^9.0.2 + version: 9.0.2(typescript@5.5.3)(webpack@5.93.0) + json-loader: + specifier: ^0.5.7 + version: 0.5.7 + node-loader: + specifier: ^2.0.0 + version: 2.0.0(webpack@5.93.0) + react-refresh: + specifier: ^0.14.2 + version: 0.14.2 + sass: + specifier: ^1.77.8 + version: 1.77.8 + sass-loader: + specifier: ^14.2.1 + version: 14.2.1(sass@1.77.8)(webpack@5.93.0) + style-loader: + specifier: ^4.0.0 + version: 4.0.0(webpack@5.93.0) + ts-loader: + specifier: 9.5.1 + version: 9.5.1(typescript@5.5.3)(webpack@5.93.0) + typescript: + specifier: ^5.5.3 + version: 5.5.3 + webpack: + specifier: ^5.93.0 + version: 5.93.0 + +packages: + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.5': + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.5': + resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.5': + resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.5': + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} + engines: {node: '>=6.9.0'} + + '@electron-forge/cli@7.4.0': + resolution: {integrity: sha512-a+zZv3ja/IxkJzNyx4sOHSZv6DPV85S0PEVF6pcRjUpbDL5r+DxjRFsNc0Nq4UIWyFm1nw7RWoPdd9uDst4Tvg==} + engines: {node: '>= 16.4.0'} + hasBin: true + + '@electron-forge/core-utils@7.4.0': + resolution: {integrity: sha512-9RLG0F9SX466TpkaTcW+V15KmnGuTpmr7NKMRlngtHXmnkBUJz4Mxp1x33WZLgL90dJrxrRgHSfVBtA4lstDPw==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/core@7.4.0': + resolution: {integrity: sha512-pYHKpB2CKeQgWsb+gox+FPkEvP+6Q2zGj2eZtgZRtKppoWIXrHIpOtcm6FllJ/gZ5u4AsQzVIYReAHGaBa0osw==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/maker-base@7.4.0': + resolution: {integrity: sha512-LwWS4VPdwjISl1KpLhmM1Qr1M3sRTTQ/RsX+GlFd7cQ1W/FsgxMjaTG4Od1d+a5CGVTh3s6X2g99TSUfxjOveg==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/maker-deb@7.4.0': + resolution: {integrity: sha512-npWea3IpGeu96xNqJpsCOYX6V4E+HY6u/okeTUzUOMX96UteT14MecdUefMam158glRTX84k2ryh7WcBoOa4mg==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/maker-rpm@7.4.0': + resolution: {integrity: sha512-N64Yh/K/91GzIk28T1jKsCGgYaquDuhXcEJW+TkVyP5tPZ9aTz9SjXLBxAg8WhcroArAZEsVyPOFKthmFzAUuA==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/maker-squirrel@7.4.0': + resolution: {integrity: sha512-mCQyufnSNfjffiKho59ZqVg4W601zGOl6h01OyfDwjOU/G4iQtpnnDEOXGe26q7OVT5ORb1WDnfyGgBeJ6Ge7g==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/maker-zip@7.4.0': + resolution: {integrity: sha512-UGbMdpuK/P29x1FFRWNOs3bNz+7QNFWVWyTM5hcWqib66cNuUmoaPifQyuwW2POIrIohrxlzLK87/i9Zc8g4dA==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/plugin-base@7.4.0': + resolution: {integrity: sha512-LcTNtEc2YaWvhhqWVIfdJ+J0/krSgc2dqYAHhOH2aLUSm9End3dKO/PZ1Y6DPsiPiJKHnSLBJ/XBN/16NY4Sjw==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/plugin-webpack@7.4.0': + resolution: {integrity: sha512-ziMSsLmN84Ki55jPOg2ei2pmqFzcB4xaX/lXiirGRj+o70M/EL6YQSuLNLRjdS/242oO8uvlmdp4uPEmYZmiCw==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/publisher-base@7.4.0': + resolution: {integrity: sha512-PiJk4RfaC55SnVnteLW2ZIQNM9DpGOi6YoUn5t8i9UcVp2rFIdya7bJY/b9u1hwubm4d5+TdypMVEuJjM44CJQ==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/shared-types@7.4.0': + resolution: {integrity: sha512-5Ehy6enUjBaU08odf9u9TOhmOVXlqobzMvKUixtkdAWgV1XZAUJmn+p21xhj0IkO92MQiXMGv66w9pDNjRT8uQ==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/template-base@7.4.0': + resolution: {integrity: sha512-3YWdRSGzQfQPQkQxStn2wkJ/SuNGGKo9slwFJGvqMV+Pbx3/M/hYi9sMXOuaqVZgeaBp8Ap27yFPxaIIOC3vcA==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/template-vite-typescript@7.4.0': + resolution: {integrity: sha512-wdByG807VWcUd81E6572b/G/Ki8gb+GrCIWxO7Cl3qBa+yNaU1sHhBwB1RyTbQy1r8ubSBtsWrRD1J/yzHKWoQ==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/template-vite@7.4.0': + resolution: {integrity: sha512-YPVyCGiBKmZPCxK/Bd2louV3PBcxI2nT2+tRKP+mlEHOWrxbZIfmZSR2lIAFvK/ALKlwUKROdmlwyi7ZcdT7JQ==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/template-webpack-typescript@7.4.0': + resolution: {integrity: sha512-O5gwjNSGFNRdJWyiCtevcOBDPAMhgOPvLORh9qR1GcjyTutWwHWmZzycqH+MmkhpQPgrAYDEeipXcOQhSbzNZA==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/template-webpack@7.4.0': + resolution: {integrity: sha512-W558AEGwQrwEtKIbIJPPs0LIsaC/1Vncj5NgqKehEMJjBb0KQq4hwBu/6dauQrfun4jRCOp7LV+OVrf5XPJ7QA==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/tracer@7.4.0': + resolution: {integrity: sha512-F4jbnDn4yIZjmky1FZ6rgBKTM05AZQQfHkyJW2hdS4pDKJjdKAqWytoZKDi1/S6Cr6tN+DD0TFGD3V0i6HPHYQ==} + engines: {node: '>= 14.17.5'} + + '@electron-forge/web-multi-logger@7.4.0': + resolution: {integrity: sha512-XHKs37q4S8BzH1lTKhuOFO6k4R7XdrsZfox+qlp4HpiYKw8yq4rcasB0zUO5YKZ2aTJ1t79X1jxSJb5qhImdHA==} + engines: {node: '>= 16.4.0'} + + '@electron/asar@3.2.10': + resolution: {integrity: sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==} + engines: {node: '>=10.12.0'} + hasBin: true + + '@electron/get@2.0.3': + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} + engines: {node: '>=12'} + + '@electron/get@3.1.0': + resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==} + engines: {node: '>=14'} + + '@electron/notarize@2.3.2': + resolution: {integrity: sha512-zfayxCe19euNwRycCty1C7lF7snk9YwfRpB5M8GLr1a4ICH63znxaPNAubrMvj0yDvVozqfgsdYpXVUnpWBDpg==} + engines: {node: '>= 10.0.0'} + + '@electron/osx-sign@1.3.1': + resolution: {integrity: sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==} + engines: {node: '>=12.0.0'} + hasBin: true + + '@electron/packager@18.3.3': + resolution: {integrity: sha512-hGXzwbUdxv49XvlYwlVPC6W6j6WaXUAzKkYyyTeiwdhxvHFMfQSEJxVHsQpqMFzZZ7wrr7iqiokOFZ/qkgEzUQ==} + engines: {node: '>= 16.13.0'} + hasBin: true + + '@electron/rebuild@3.6.0': + resolution: {integrity: sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==} + engines: {node: '>=12.13.0'} + hasBin: true + + '@electron/universal@2.0.1': + resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} + engines: {node: '>=16.4'} + + '@electron/windows-sign@1.1.3': + resolution: {integrity: sha512-OqVSdAe+/88fIjvTDWiy+5Ho1nXsiBhE5RTsIQ6M/zcxcDAEP2TlQCkOyusItnmzXRN+XTFaK9gKhiZ6KGyXQw==} + engines: {node: '>=14.14'} + hasBin: true + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.3.1': + resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/styled@11.14.0': + resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.17.0': + resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.7.0': + resolution: {integrity: sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@gar/promisify@1.1.3': + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.0.4': + resolution: {integrity: sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.2.0': + resolution: {integrity: sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@malept/cross-spawn-promise@1.1.1': + resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==} + engines: {node: '>= 10'} + + '@malept/cross-spawn-promise@2.0.0': + resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} + engines: {node: '>= 12.13.0'} + + '@marshallofsound/webpack-asset-relocator-loader@0.5.0': + resolution: {integrity: sha512-X50R97SiDNTpOckiplghBo63Vo8GxSsr98s3VTwEu3qyVr+TY4I91KRtKelEj2OAfgMnkTymw89+psFVq8aB1g==} + + '@mui/core-downloads-tracker@6.3.1': + resolution: {integrity: sha512-2OmnEyoHpj5//dJJpMuxOeLItCCHdf99pjMFfUFdBteCunAK9jW+PwEo4mtdGcLs7P+IgZ+85ypd52eY4AigoQ==} + + '@mui/icons-material@6.3.1': + resolution: {integrity: sha512-nJmWj1PBlwS3t1PnoqcixIsftE+7xrW3Su7f0yrjPw4tVjYrgkhU0hrRp+OlURfZ3ptdSkoBkalee9Bhf1Erfw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@mui/material': ^6.3.1 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/material@6.3.1': + resolution: {integrity: sha512-ynG9ayhxgCsHJ/dtDcT1v78/r2GwQyP3E0hPz3GdPRl0uFJz/uUTtI5KFYwadXmbC+Uv3bfB8laZ6+Cpzh03gA==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@mui/material-pigment-css': ^6.3.1 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@mui/material-pigment-css': + optional: true + '@types/react': + optional: true + + '@mui/private-theming@6.3.1': + resolution: {integrity: sha512-g0u7hIUkmXmmrmmf5gdDYv9zdAig0KoxhIQn1JN8IVqApzf/AyRhH3uDGx5mSvs8+a1zb4+0W6LC260SyTTtdQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/styled-engine@6.3.1': + resolution: {integrity: sha512-/7CC0d2fIeiUxN5kCCwYu4AWUDd9cCTxWCyo0v/Rnv6s8uk6hWgJC3VLZBoDENBHf/KjqDZuYJ2CR+7hD6QYww==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/system@6.3.1': + resolution: {integrity: sha512-AwqQ3EAIT2np85ki+N15fF0lFXX1iFPqenCzVOSl3QXKy2eifZeGd9dGtt7pGMoFw5dzW4dRGGzRpLAq9rkl7A==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/types@7.2.21': + resolution: {integrity: sha512-6HstngiUxNqLU+/DPqlUJDIPbzUBxIVHb1MmXP0eTWDIROiCR2viugXpEif0PPe2mLqqakPzzRClWAnK+8UJww==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/utils@6.3.1': + resolution: {integrity: sha512-sjGjXAngoio6lniQZKJ5zGfjm+LD2wvLwco7FbKe1fu8A7VIFmz2SwkLb+MDPLNX1lE7IscvNNyh1pobtZg2tw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@npmcli/fs@2.1.2': + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + '@npmcli/move-file@2.0.1': + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@plastichub/core@0.2.6': + resolution: {integrity: sha512-DF2IUZu6cw8+iVnFv2BFvd+s/7DYfrfXh7o3Uhg0IjbZ/QOIXY21URarnMQoTl9NEwUKN8ZZIHJmOIulT8helg==} + + '@plastichub/fs@0.13.41': + resolution: {integrity: sha512-anWgtIZnXKhZ0X3eWqrGVc4a3JiOlPZOUhT8knDS5r7cAlZNpdKv1qEaG50V5GkD2cKBm0IGSz7kJdmkGJheLQ==} + engines: {node: '>= 8.0.0'} + + '@plastichub/osr-commons@0.5.2': + resolution: {integrity: sha512-bd92Ed0Dc80VTDaeNboRXeTwtRV7IcAQikJ9awUjSdV9j8NT6LooY/KfOwlX8UvUrBEmFnqZQKoRmfMrJCHXow==} + engines: {node: '>= 14.0.0'} + + '@pmmmwh/react-refresh-webpack-plugin@0.5.15': + resolution: {integrity: sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <5.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x || 5.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@rjsf/core@5.24.1': + resolution: {integrity: sha512-x3oZ9MfoBA4SPKhvNkqagqnjUbSKuT3gGW3NgH+cowAma33fYs9/hfhPUOvXySdPqh0layuLlnI1W5MHeBmVzg==} + engines: {node: '>=14'} + peerDependencies: + '@rjsf/utils': ^5.24.x + react: ^16.14.0 || >=17 + + '@rjsf/mui@5.24.1': + resolution: {integrity: sha512-yDloYZnwg/PYtjaQTBDSmW/nGeM+9koyngmST7LRCTe3yB2uQ4p4UYAMCG4chehWCxPO2zDowYMjejmYE6cfdg==} + engines: {node: '>=14'} + peerDependencies: + '@emotion/react': ^11.7.0 + '@emotion/styled': ^11.6.0 + '@mui/icons-material': ^5.2.0 || ^6.0.0 + '@mui/material': ^5.2.2 || ^6.0.0 + '@rjsf/core': ^5.24.x + '@rjsf/utils': ^5.24.x + react: '>=17' + + '@rjsf/utils@5.24.1': + resolution: {integrity: sha512-A25fFj/TNz5bKikCIs20DiedKAalLuAQ7vUX9VQkD2hps5C9YVr0dJgSlsPa5kzl6lQMaRsNouTx8E1ZdLV2fg==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.14.0 || >=17 + + '@rjsf/validator-ajv8@5.24.1': + resolution: {integrity: sha512-p6URehglU9yFUAoQXE1ryqZjLYSjc6qdbiUfCVvEFAzUuMECsIFomz2hH3CPlt10K72sAFdzwVvrKn1iWTnxDw==} + engines: {node: '>=14'} + peerDependencies: + '@rjsf/utils': ^5.24.x + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@8.56.10': + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/express-serve-static-core@4.19.5': + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/http-proxy@1.17.14': + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@20.14.11': + resolution: {integrity: sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + + '@types/react-transition-group@4.4.12': + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + peerDependencies: + '@types/react': '*' + + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + + '@types/webpack-env@1.18.5': + resolution: {integrity: sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==} + + '@types/ws@8.5.11': + resolution: {integrity: sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript-eslint/eslint-plugin@7.16.1': + resolution: {integrity: sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.16.1': + resolution: {integrity: sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.16.1': + resolution: {integrity: sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.16.1': + resolution: {integrity: sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.16.1': + resolution: {integrity: sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@7.16.1': + resolution: {integrity: sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.16.1': + resolution: {integrity: sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.16.1': + resolution: {integrity: sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@vercel/webpack-asset-relocator-loader@1.7.3': + resolution: {integrity: sha512-vizrI18v8Lcb1PmNNUBz7yxPxxXoOeuaVEjTG9MjvDrphjiSxFZrRJ5tIghk+qdLFRCXI5HBCshgobftbmrC5g==} + + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-html@0.0.9: + resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + asar@3.2.0: + resolution: {integrity: sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==} + engines: {node: '>=10.12.0'} + deprecated: Please use @electron/asar moving forward. There is no API change, just a package name change + hasBin: true + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + author-regex@1.0.0: + resolution: {integrity: sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==} + engines: {node: '>=0.8'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.23.2: + resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + caniuse-lite@1.0.30001642: + resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + chromium-pickle-js@0.2.0: + resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + compare-version@0.1.2: + resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} + engines: {node: '>=0.10.0'} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + compute-gcd@1.2.1: + resolution: {integrity: sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==} + + compute-lcm@1.1.2: + resolution: {integrity: sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + core-js-pure@3.37.1: + resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-dirname@0.1.0: + resolution: {integrity: sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + cross-zip@4.0.1: + resolution: {integrity: sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ==} + engines: {node: '>=12.10'} + + cryptr@6.3.0: + resolution: {integrity: sha512-TA4byAuorT8qooU9H8YJhBwnqD151i1rcauHfJ3Divg6HmukHB2AYMp0hmjv2873J2alr4t15QqC7zAnWFrtfQ==} + + css-loader@7.1.2: + resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.27.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + dir-compare@4.2.0: + resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-installer-common@0.10.3: + resolution: {integrity: sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA==} + engines: {node: '>= 10.0.0'} + + electron-installer-debian@3.2.0: + resolution: {integrity: sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw==} + engines: {node: '>= 10.0.0'} + os: [darwin, linux] + hasBin: true + + electron-installer-redhat@3.4.0: + resolution: {integrity: sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw==} + engines: {node: '>= 10.0.0'} + os: [darwin, linux] + hasBin: true + + electron-squirrel-startup@1.0.1: + resolution: {integrity: sha512-sTfFIHGku+7PsHLJ7v0dRcZNkALrV+YEozINTW8X1nM//e5O3L+rfYuvSW00lmGHnYmUjARZulD8F2V8ISI9RA==} + + electron-to-chromium@1.4.829: + resolution: {integrity: sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==} + + electron-winstaller@5.3.1: + resolution: {integrity: sha512-oM8BW3a8NEqG0XW+Vx3xywhk0DyDV4T0jT0zZfWt0IczNT3jHAAvQWBorF8osQDplSsCyXXyxrsrQ8cY0Slb/A==} + engines: {node: '>=8.0.0'} + + electron@31.2.1: + resolution: {integrity: sha512-g3CLKjl4yuXt6VWm/KpgEjYYhFiCl19RgUn8lOC8zV/56ZXAS3+mqV4wWzicE/7vSYXs6GRO7vkYRwrwhX3Gaw==} + engines: {node: '>= 12.20.55'} + hasBin: true + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + env-var@7.5.0: + resolution: {integrity: sha512-mKZOzLRN0ETzau2W2QXefbFjo5EF4yWq28OyKb9ICdeNhHJlOE/pHHnz4hdYJ9cNZXcJHo5xN4OT4pzuSHSNvA==} + engines: {node: '>=10'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-import-resolver-alias@1.1.2: + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} + peerDependencies: + eslint-plugin-import: '>=1.4.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-react@7.34.4: + resolution: {integrity: sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.7.0: + resolution: {integrity: sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + express-ws@5.0.2: + resolution: {integrity: sha512-0uvmuk61O9HXgLhGl3QhNSEtRsQevtmbL94/eILaliEADZBHZOQUAiHFrGPrgsjikohyrmSG5g+sCfASTt0lkQ==} + engines: {node: '>=4.5.0'} + peerDependencies: + express: ^4.0.0 || ^5.0.0-alpha.1 + + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-loader@6.2.0: + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + filename-reserved-regex@2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + + filenamify@4.3.0: + resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} + engines: {node: '>=8'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + flora-colossus@2.0.0: + resolution: {integrity: sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==} + engines: {node: '>= 12'} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + + fork-ts-checker-webpack-plugin@9.0.2: + resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + galactus@1.0.0: + resolution: {integrity: sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==} + engines: {node: '>= 12'} + + gar@1.0.4: + resolution: {integrity: sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-folder-size@2.0.1: + resolution: {integrity: sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==} + hasBin: true + + get-installed-path@2.1.1: + resolution: {integrity: sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-info@1.0.0: + resolution: {integrity: sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==} + engines: {node: '>= 4.0'} + + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + glob-base@0.3.0: + resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==} + engines: {node: '>=0.10.0'} + + glob-parent@2.0.0: + resolution: {integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@11.0.1: + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-webpack-plugin@5.6.0: + resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-middleware@2.0.6: + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + immutable@4.3.6: + resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-dotfile@1.0.3: + resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==} + engines: {node: '>=0.10.0'} + + is-extglob@1.0.0: + resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@2.0.1: + resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-network-error@1.1.0: + resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + engines: {node: '>=16'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jackspeak@4.0.2: + resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + engines: {node: 20 || >=22} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-loader@0.5.7: + resolution: {integrity: sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-compare@0.2.2: + resolution: {integrity: sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==} + + json-schema-merge-allof@0.8.1: + resolution: {integrity: sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==} + engines: {node: '>=12.0.0'} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + junk@3.1.0: + resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} + engines: {node: '>=8'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + launch-editor@2.8.0: + resolution: {integrity: sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + listr2@7.0.2: + resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} + engines: {node: '>=16.0.0'} + + load-json-file@2.0.0: + resolution: {integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==} + engines: {node: '>=4'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + engines: {node: 20 || >=22} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + map-age-cleaner@0.1.3: + resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} + engines: {node: '>=6'} + + markdown-to-jsx@7.7.3: + resolution: {integrity: sha512-o35IhJDFP6Fv60zPy+hbvZSQMmgvSGdK5j8NRZ7FeZMY+Bgqw+dSg7SC1ZEzC26++CiOUCqkbq96/c3j/FfTEQ==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + + matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + mem@4.3.0: + resolution: {integrity: sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==} + engines: {node: '>=6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + memfs@4.9.3: + resolution: {integrity: sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==} + engines: {node: '>= 4.0.0'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abi@3.65.0: + resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==} + engines: {node: '>=10'} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-api-version@0.2.0: + resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + + node-loader@2.0.0: + resolution: {integrity: sha512-I5VN34NO4/5UYJaUBtkrODPWxbobrE4hgDqPrjB25yPkonFhCmZ146vTH+Zg417E9Iwoh1l/MbRs1apc5J295Q==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^5.0.0 + + node-releases@2.0.17: + resolution: {integrity: sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==} + + nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-keys@0.4.0: + resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-defer@1.0.0: + resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} + engines: {node: '>=4'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-is-promise@2.1.0: + resolution: {integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==} + engines: {node: '>=6'} + + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-retry@6.2.0: + resolution: {integrity: sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==} + engines: {node: '>=16.17'} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-author@2.0.0: + resolution: {integrity: sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==} + engines: {node: '>=0.10.0'} + + parse-glob@3.0.4: + resolution: {integrity: sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==} + engines: {node: '>=0.10.0'} + + parse-json@2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-type@2.0.0: + resolution: {integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==} + engines: {node: '>=4'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pe-library@1.0.1: + resolution: {integrity: sha512-nh39Mo1eGWmZS7y+mK/dQIqg7S1lp38DpRxkyoHf0ZcUs/HDc+yyTjuOtTvSMZHmfSLuSQaX945u05Y2Q6UWZg==} + engines: {node: '>=14', npm: '>=7'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.0.5: + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.0: + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-selector-parser@6.1.1: + resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} + + postject@1.0.0-alpha.6: + resolution: {integrity: sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==} + engines: {node: '>=14.0.0'} + hasBin: true + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + progress-stream@1.2.0: + resolution: {integrity: sha512-MIBPjZz6oGNSw5rn2mSp+nP9FGoaVo6QsPyPVEaD4puilz5hZNa3kfnrlqRNYFsugslbU3An4mnkLLtZOaWvrA==} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-is@19.0.0: + resolution: {integrity: sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==} + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-binary-file-arch@1.0.6: + resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} + hasBin: true + + read-pkg-up@2.0.0: + resolution: {integrity: sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==} + engines: {node: '>=4'} + + read-pkg@2.0.0: + resolution: {integrity: sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==} + engines: {node: '>=4'} + + readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resedit@2.0.2: + resolution: {integrity: sha512-UKTnq602iVe+W5SyRAQx/WdWMnlDiONfXBLFg/ur4QE4EQQ8eP7Jgm5mNXdK12kKawk1vvXPja2iXKqZiGDW6Q==} + engines: {node: '>=14', npm: '>=7'} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-package@1.0.1: + resolution: {integrity: sha512-rzB7NnQpOkPHBWFPP3prUMqOP6yg3HkRGgcvR+lDyvyHoY3fZLFLYDkPXh78SPVBAE6VTCk/V+j8we4djg6o4g==} + engines: {node: '>=4', npm: '>=2'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@5.0.9: + resolution: {integrity: sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==} + engines: {node: 14 >=14.20 || 16 >=16.20 || >=18} + hasBin: true + + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + + roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + + sass-loader@14.2.1: + resolution: {integrity: sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + + sass@1.77.8: + resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slide@1.1.6: + resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + speedometer@0.1.4: + resolution: {integrity: sha512-phdEoDlA6EUIVtzwq1UiNMXDUogczp204aYF/yfOhjNePWFfIpBJ1k5wLMuXQhEOOMjuTJEcc4vdZa+vuP+n/Q==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-outer@1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + + style-loader@4.0.0: + resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.27.0 + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + + sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + temp@0.9.4: + resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} + engines: {node: '>=6.0.0'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.31.3: + resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thingies@1.21.0: + resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + + through2@0.2.3: + resolution: {integrity: sha512-mLa8Bn2mZurjyomGKWRu3Bo2mvoQojFks9NvOK8H+k4kDJNkdEqG522KFZsEFBEl6rKkxTgFbE5+OPcgfvPEHA==} + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + tiny-each-async@2.0.3: + resolution: {integrity: sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==} + + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tree-dump@1.0.2: + resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + trim-repeated@1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-loader@9.5.1: + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + tslog@3.3.4: + resolution: {integrity: sha512-N0HHuHE0e/o75ALfkioFObknHR5dVchUad4F0XyFf3gXJYB++DewEzwGI/uIOM216E5a43ovnRNEeQIq9qgm4Q==} + engines: {node: '>=10'} + + tslog@4.9.3: + resolution: {integrity: sha512-oDWuGVONxhVEBtschLf2cs/Jy8i7h1T+CpdkTNWQgdAF7DhRo2G8vMCgILKe7ojdEkLhICWgI1LYSSKaJsRgcw==} + engines: {node: '>=16'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@4.22.0: + resolution: {integrity: sha512-hxMO1k4ip1uTVGgPbs1hVpYyhz2P91A6tQyH2H9POx3U6T3MdhIcfY8L2hRu/LRmzPFdfduOS0RIDjFlP2urPw==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + username@5.1.0: + resolution: {integrity: sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==} + engines: {node: '>=8'} + + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate.io-array@1.0.6: + resolution: {integrity: sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==} + + validate.io-function@1.0.2: + resolution: {integrity: sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==} + + validate.io-integer-array@1.0.0: + resolution: {integrity: sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==} + + validate.io-integer@1.0.5: + resolution: {integrity: sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==} + + validate.io-number@1.0.3: + resolution: {integrity: sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-dev-middleware@5.3.4: + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + webpack-dev-middleware@7.2.1: + resolution: {integrity: sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-dev-server@4.15.2: + resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-dev-server@5.0.4: + resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.93.0: + resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@1.3.4: + resolution: {integrity: sha512-SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + + xtend@2.1.2: + resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} + engines: {node: '>=0.4'} + + xterm-addon-fit@0.5.0: + resolution: {integrity: sha512-DsS9fqhXHacEmsPxBJZvfj2la30Iz9xk+UKjhQgnYNkrUIN5CYLbw7WEfz117c7+S86S/tpHPfvNxJsF5/G8wQ==} + deprecated: This package is now deprecated. Move to @xterm/addon-fit instead. + peerDependencies: + xterm: ^4.0.0 + + xterm-addon-search@0.8.2: + resolution: {integrity: sha512-I1863mjn8P6uVrqm/X+btalVsqjAKLhnhpbP7SavAOpEkI1jJhbHU2UTp7NjeRtcKTks6UWk/ycgds5snDSejg==} + deprecated: This package is now deprecated. Move to @xterm/addon-search instead. + peerDependencies: + xterm: ^4.0.0 + + xterm@4.19.0: + resolution: {integrity: sha512-c3Cp4eOVsYY5Q839dR5IejghRPpxciGmLWWaP9g+ppfMeBChMeLa1DCA+pmX/jyDZ+zxFOmlJL/82qVdayVoGQ==} + deprecated: This package is now deprecated. Move to @xterm/xterm instead. + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yarn-or-npm@3.0.1: + resolution: {integrity: sha512-fTiQP6WbDAh5QZAVdbMQkecZoahnbOjClTQhzv74WX5h2Uaidj1isf9FDes11TKtsZ0/ZVfZsqZ+O3x6aLERHQ==} + engines: {node: '>=8.6.0'} + hasBin: true + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-to-json-schema@3.24.1: + resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} + peerDependencies: + zod: ^3.24.1 + + zod-to-ts@1.2.0: + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + +snapshots: + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/generator@7.26.5': + dependencies: + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.26.5': + dependencies: + '@babel/types': 7.26.5 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 + + '@babel/traverse@7.26.5': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.5 + '@babel/template': 7.25.9 + '@babel/types': 7.26.5 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.5': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@electron-forge/cli@7.4.0(encoding@0.1.13)': + dependencies: + '@electron-forge/core': 7.4.0(encoding@0.1.13) + '@electron-forge/shared-types': 7.4.0 + '@electron/get': 3.1.0 + chalk: 4.1.2 + commander: 4.1.1 + debug: 4.3.5 + fs-extra: 10.1.0 + listr2: 7.0.2 + semver: 7.6.3 + transitivePeerDependencies: + - bluebird + - encoding + - supports-color + + '@electron-forge/core-utils@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + '@electron/rebuild': 3.6.0 + '@malept/cross-spawn-promise': 2.0.0 + chalk: 4.1.2 + debug: 4.3.5 + find-up: 5.0.0 + fs-extra: 10.1.0 + log-symbols: 4.1.0 + semver: 7.6.3 + yarn-or-npm: 3.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/core@7.4.0(encoding@0.1.13)': + dependencies: + '@electron-forge/core-utils': 7.4.0 + '@electron-forge/maker-base': 7.4.0 + '@electron-forge/plugin-base': 7.4.0 + '@electron-forge/publisher-base': 7.4.0 + '@electron-forge/shared-types': 7.4.0 + '@electron-forge/template-base': 7.4.0 + '@electron-forge/template-vite': 7.4.0 + '@electron-forge/template-vite-typescript': 7.4.0 + '@electron-forge/template-webpack': 7.4.0 + '@electron-forge/template-webpack-typescript': 7.4.0 + '@electron-forge/tracer': 7.4.0 + '@electron/get': 3.1.0 + '@electron/packager': 18.3.3 + '@electron/rebuild': 3.6.0 + '@malept/cross-spawn-promise': 2.0.0 + chalk: 4.1.2 + debug: 4.3.5 + fast-glob: 3.3.2 + filenamify: 4.3.0 + find-up: 5.0.0 + fs-extra: 10.1.0 + got: 11.8.6 + interpret: 3.1.1 + listr2: 7.0.2 + lodash: 4.17.21 + log-symbols: 4.1.0 + node-fetch: 2.7.0(encoding@0.1.13) + progress: 2.0.3 + rechoir: 0.8.0 + resolve-package: 1.0.1 + semver: 7.6.3 + source-map-support: 0.5.21 + sudo-prompt: 9.2.1 + username: 5.1.0 + yarn-or-npm: 3.0.1 + transitivePeerDependencies: + - bluebird + - encoding + - supports-color + + '@electron-forge/maker-base@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + fs-extra: 10.1.0 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/maker-deb@7.4.0': + dependencies: + '@electron-forge/maker-base': 7.4.0 + '@electron-forge/shared-types': 7.4.0 + optionalDependencies: + electron-installer-debian: 3.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/maker-rpm@7.4.0': + dependencies: + '@electron-forge/maker-base': 7.4.0 + '@electron-forge/shared-types': 7.4.0 + optionalDependencies: + electron-installer-redhat: 3.4.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/maker-squirrel@7.4.0': + dependencies: + '@electron-forge/maker-base': 7.4.0 + '@electron-forge/shared-types': 7.4.0 + fs-extra: 10.1.0 + optionalDependencies: + electron-winstaller: 5.3.1 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/maker-zip@7.4.0': + dependencies: + '@electron-forge/maker-base': 7.4.0 + '@electron-forge/shared-types': 7.4.0 + cross-zip: 4.0.1 + fs-extra: 10.1.0 + got: 11.8.6 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/plugin-base@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/plugin-webpack@7.4.0': + dependencies: + '@electron-forge/core-utils': 7.4.0 + '@electron-forge/plugin-base': 7.4.0 + '@electron-forge/shared-types': 7.4.0 + '@electron-forge/web-multi-logger': 7.4.0 + chalk: 4.1.2 + debug: 4.3.5 + fast-glob: 3.3.2 + fs-extra: 10.1.0 + html-webpack-plugin: 5.6.0(webpack@5.93.0) + listr2: 7.0.2 + webpack: 5.93.0 + webpack-dev-server: 4.15.2(debug@4.3.5)(webpack@5.93.0) + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - bluebird + - bufferutil + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + + '@electron-forge/publisher-base@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/shared-types@7.4.0': + dependencies: + '@electron-forge/tracer': 7.4.0 + '@electron/packager': 18.3.3 + '@electron/rebuild': 3.6.0 + listr2: 7.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/template-base@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.3.5 + fs-extra: 10.1.0 + username: 5.1.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/template-vite-typescript@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + '@electron-forge/template-base': 7.4.0 + fs-extra: 10.1.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/template-vite@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + '@electron-forge/template-base': 7.4.0 + fs-extra: 10.1.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/template-webpack-typescript@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + '@electron-forge/template-base': 7.4.0 + fs-extra: 10.1.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/template-webpack@7.4.0': + dependencies: + '@electron-forge/shared-types': 7.4.0 + '@electron-forge/template-base': 7.4.0 + fs-extra: 10.1.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/tracer@7.4.0': + dependencies: + chrome-trace-event: 1.0.4 + + '@electron-forge/web-multi-logger@7.4.0': + dependencies: + express: 4.19.2 + express-ws: 5.0.2(express@4.19.2) + xterm: 4.19.0 + xterm-addon-fit: 0.5.0(xterm@4.19.0) + xterm-addon-search: 0.8.2(xterm@4.19.0) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@electron/asar@3.2.10': + dependencies: + commander: 5.1.0 + glob: 7.2.3 + minimatch: 3.1.2 + + '@electron/get@2.0.3': + dependencies: + debug: 4.3.5 + env-paths: 2.2.1 + fs-extra: 8.1.0 + got: 11.8.6 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@electron/get@3.1.0': + dependencies: + debug: 4.3.5 + env-paths: 2.2.1 + fs-extra: 8.1.0 + got: 11.8.6 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@electron/notarize@2.3.2': + dependencies: + debug: 4.3.5 + fs-extra: 9.1.0 + promise-retry: 2.0.1 + transitivePeerDependencies: + - supports-color + + '@electron/osx-sign@1.3.1': + dependencies: + compare-version: 0.1.2 + debug: 4.3.5 + fs-extra: 10.1.0 + isbinaryfile: 4.0.10 + minimist: 1.2.8 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + + '@electron/packager@18.3.3': + dependencies: + '@electron/asar': 3.2.10 + '@electron/get': 3.1.0 + '@electron/notarize': 2.3.2 + '@electron/osx-sign': 1.3.1 + '@electron/universal': 2.0.1 + '@electron/windows-sign': 1.1.3 + debug: 4.3.5 + extract-zip: 2.0.1 + filenamify: 4.3.0 + fs-extra: 11.2.0 + galactus: 1.0.0 + get-package-info: 1.0.0 + junk: 3.1.0 + parse-author: 2.0.0 + plist: 3.1.0 + resedit: 2.0.2 + resolve: 1.22.8 + semver: 7.6.3 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - supports-color + + '@electron/rebuild@3.6.0': + dependencies: + '@malept/cross-spawn-promise': 2.0.0 + chalk: 4.1.2 + debug: 4.3.5 + detect-libc: 2.0.3 + fs-extra: 10.1.0 + got: 11.8.6 + node-abi: 3.65.0 + node-api-version: 0.2.0 + node-gyp: 9.4.1 + ora: 5.4.1 + read-binary-file-arch: 1.0.6 + semver: 7.6.3 + tar: 6.2.1 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron/universal@2.0.1': + dependencies: + '@electron/asar': 3.2.10 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.3.5 + dir-compare: 4.2.0 + fs-extra: 11.2.0 + minimatch: 9.0.5 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + + '@electron/windows-sign@1.1.3': + dependencies: + cross-dirname: 0.1.0 + debug: 4.3.5 + fs-extra: 11.2.0 + minimist: 1.2.8 + postject: 1.0.0-alpha.6 + transitivePeerDependencies: + - supports-color + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/runtime': 7.26.0 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.3.1': + dependencies: + '@emotion/memoize': 0.9.0 + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.0 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.1.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.0 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.3.1 + '@emotion/react': 11.14.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + transitivePeerDependencies: + - supports-color + + '@emotion/unitless@0.10.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@eslint-community/eslint-utils@4.4.0(eslint@9.7.0)': + dependencies: + eslint: 9.7.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint/config-array@0.17.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.5 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.5 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.7.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@gar/promisify@1.1.3': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsonjoy.com/base64@1.1.2(tslib@2.6.3)': + dependencies: + tslib: 2.6.3 + optional: true + + '@jsonjoy.com/json-pack@1.0.4(tslib@2.6.3)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.6.3) + '@jsonjoy.com/util': 1.2.0(tslib@2.6.3) + hyperdyperid: 1.2.0 + thingies: 1.21.0(tslib@2.6.3) + tslib: 2.6.3 + optional: true + + '@jsonjoy.com/util@1.2.0(tslib@2.6.3)': + dependencies: + tslib: 2.6.3 + optional: true + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@malept/cross-spawn-promise@1.1.1': + dependencies: + cross-spawn: 7.0.3 + optional: true + + '@malept/cross-spawn-promise@2.0.0': + dependencies: + cross-spawn: 7.0.3 + + '@marshallofsound/webpack-asset-relocator-loader@0.5.0': + dependencies: + sourcemap-codec: 1.4.8 + + '@mui/core-downloads-tracker@6.3.1': {} + + '@mui/icons-material@6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.0 + '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.0 + '@mui/core-downloads-tracker': 6.3.1 + '@mui/system': 6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/types': 7.2.21(@types/react@18.3.3) + '@mui/utils': 6.3.1(@types/react@18.3.3)(react@18.3.1) + '@popperjs/core': 2.11.8 + '@types/react-transition-group': 4.4.12(@types/react@18.3.3) + clsx: 2.1.1 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 19.0.0 + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + + '@mui/private-theming@6.3.1(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.0 + '@mui/utils': 6.3.1(@types/react@18.3.3)(react@18.3.1) + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.3 + + '@mui/styled-engine@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.0 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + + '@mui/system@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.0 + '@mui/private-theming': 6.3.1(@types/react@18.3.3)(react@18.3.1) + '@mui/styled-engine': 6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@mui/types': 7.2.21(@types/react@18.3.3) + '@mui/utils': 6.3.1(@types/react@18.3.3)(react@18.3.1) + clsx: 2.1.1 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + + '@mui/types@7.2.21(@types/react@18.3.3)': + optionalDependencies: + '@types/react': 18.3.3 + + '@mui/utils@6.3.1(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.0 + '@mui/types': 7.2.21(@types/react@18.3.3) + '@types/prop-types': 15.7.14 + clsx: 2.1.1 + prop-types: 15.8.1 + react: 18.3.1 + react-is: 19.0.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@npmcli/fs@2.1.2': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.6.3 + + '@npmcli/move-file@2.0.1': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@plastichub/core@0.2.6': + dependencies: + deepmerge: 4.3.1 + tslog: 3.3.4 + + '@plastichub/fs@0.13.41': + dependencies: + '@plastichub/core': 0.2.6 + denodeify: 1.2.1 + errno: 0.1.8 + glob: 10.4.5 + mime: 2.6.0 + minimatch: 3.1.2 + mkdirp: 0.5.6 + progress-stream: 1.2.0 + q: 1.5.1 + rimraf: 6.0.1 + write-file-atomic: 1.3.4 + yargs: 17.7.2 + + '@plastichub/osr-commons@0.5.2': + dependencies: + '@plastichub/core': 0.2.6 + '@plastichub/fs': 0.13.41 + cryptr: 6.3.0 + env-var: 7.5.0 + fast-glob: 3.3.2 + filenamify: 4.3.0 + glob: 11.0.1 + is-glob: 4.0.3 + parse-glob: 3.0.4 + sanitize-filename: 1.6.3 + tslog: 4.9.3 + typescript: 5.7.3 + yargs: 17.7.2 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + zod-to-ts: 1.2.0(typescript@5.7.3)(zod@3.24.1) + + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@4.22.0)(webpack-dev-server@5.0.4(webpack@5.93.0))(webpack@5.93.0)': + dependencies: + ansi-html: 0.0.9 + core-js-pure: 3.37.1 + error-stack-parser: 2.1.4 + html-entities: 2.5.2 + loader-utils: 2.0.4 + react-refresh: 0.14.2 + schema-utils: 4.2.0 + source-map: 0.7.4 + webpack: 5.93.0 + optionalDependencies: + type-fest: 4.22.0 + webpack-dev-server: 5.0.4(webpack@5.93.0) + + '@popperjs/core@2.11.8': {} + + '@rjsf/core@5.24.1(@rjsf/utils@5.24.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@rjsf/utils': 5.24.1(react@18.3.1) + lodash: 4.17.21 + lodash-es: 4.17.21 + markdown-to-jsx: 7.7.3(react@18.3.1) + nanoid: 3.3.7 + prop-types: 15.8.1 + react: 18.3.1 + + '@rjsf/mui@5.24.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/icons-material@6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@rjsf/core@5.24.1(@rjsf/utils@5.24.1(react@18.3.1))(react@18.3.1))(@rjsf/utils@5.24.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@emotion/react': 11.14.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/icons-material': 6.3.1(@mui/material@6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/material': 6.3.1(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rjsf/core': 5.24.1(@rjsf/utils@5.24.1(react@18.3.1))(react@18.3.1) + '@rjsf/utils': 5.24.1(react@18.3.1) + react: 18.3.1 + + '@rjsf/utils@5.24.1(react@18.3.1)': + dependencies: + json-schema-merge-allof: 0.8.1 + jsonpointer: 5.0.1 + lodash: 4.17.21 + lodash-es: 4.17.21 + react: 18.3.1 + react-is: 18.3.1 + + '@rjsf/validator-ajv8@5.24.1(@rjsf/utils@5.24.1(react@18.3.1))': + dependencies: + '@rjsf/utils': 5.24.1(react@18.3.1) + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + lodash: 4.17.21 + lodash-es: 4.17.21 + + '@sindresorhus/is@4.6.0': {} + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@tootallnate/once@2.0.0': {} + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.14.11 + + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 20.14.11 + + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.14.11 + '@types/responselike': 1.0.3 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 4.19.5 + '@types/node': 20.14.11 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.14.11 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 8.56.10 + '@types/estree': 1.0.5 + + '@types/eslint@8.56.10': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.5': {} + + '@types/express-serve-static-core@4.19.5': + dependencies: + '@types/node': 20.14.11 + '@types/qs': 6.9.15 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.5 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 + + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 20.14.11 + optional: true + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.14.11 + optional: true + + '@types/html-minifier-terser@6.1.0': {} + + '@types/http-cache-semantics@4.0.4': {} + + '@types/http-errors@2.0.4': {} + + '@types/http-proxy@1.17.14': + dependencies: + '@types/node': 20.14.11 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 20.14.11 + + '@types/mime@1.3.5': {} + + '@types/minimatch@5.1.2': + optional: true + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 20.14.11 + + '@types/node@20.14.11': + dependencies: + undici-types: 5.26.5 + + '@types/parse-json@4.0.2': {} + + '@types/prop-types@15.7.12': {} + + '@types/prop-types@15.7.14': {} + + '@types/qs@6.9.15': {} + + '@types/range-parser@1.2.7': {} + + '@types/react-dom@18.3.0': + dependencies: + '@types/react': 18.3.3 + + '@types/react-transition-group@4.4.12(@types/react@18.3.3)': + dependencies: + '@types/react': 18.3.3 + + '@types/react@18.3.3': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 20.14.11 + + '@types/retry@0.12.0': {} + + '@types/retry@0.12.2': + optional: true + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.14.11 + + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.21 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 20.14.11 + '@types/send': 0.17.4 + + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 20.14.11 + + '@types/webpack-env@1.18.5': {} + + '@types/ws@8.5.11': + dependencies: + '@types/node': 20.14.11 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 20.14.11 + optional: true + + '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3)': + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.16.1(eslint@9.7.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/type-utils': 7.16.1(eslint@9.7.0)(typescript@5.5.3) + '@typescript-eslint/utils': 7.16.1(eslint@9.7.0)(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.16.1 + eslint: 9.7.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.3) + optionalDependencies: + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.16.1 + debug: 4.3.5 + eslint: 9.7.0 + optionalDependencies: + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.16.1': + dependencies: + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/visitor-keys': 7.16.1 + + '@typescript-eslint/type-utils@7.16.1(eslint@9.7.0)(typescript@5.5.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.3) + '@typescript-eslint/utils': 7.16.1(eslint@9.7.0)(typescript@5.5.3) + debug: 4.3.5 + eslint: 9.7.0 + ts-api-utils: 1.3.0(typescript@5.5.3) + optionalDependencies: + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.16.1': {} + + '@typescript-eslint/typescript-estree@7.16.1(typescript@5.5.3)': + dependencies: + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/visitor-keys': 7.16.1 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.3) + optionalDependencies: + typescript: 5.5.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.16.1(eslint@9.7.0)(typescript@5.5.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.3) + eslint: 9.7.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.16.1': + dependencies: + '@typescript-eslint/types': 7.16.1 + eslint-visitor-keys: 3.4.3 + + '@vercel/webpack-asset-relocator-loader@1.7.3': + dependencies: + resolve: 1.22.8 + + '@webassemblyjs/ast@1.12.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + + '@webassemblyjs/helper-api-error@1.11.6': {} + + '@webassemblyjs/helper-buffer@1.12.1': {} + + '@webassemblyjs/helper-numbers@1.11.6': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + + '@webassemblyjs/helper-wasm-section@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + + '@webassemblyjs/ieee754@1.11.6': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.6': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.6': {} + + '@webassemblyjs/wasm-edit@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + + '@webassemblyjs/wasm-gen@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wasm-opt@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + + '@webassemblyjs/wasm-parser@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wast-printer@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + + '@xmldom/xmldom@0.8.10': {} + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abbrev@1.1.1: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-import-attributes@1.9.5(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + + ansi-html-community@0.0.8: {} + + ansi-html@0.0.9: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@2.0.0: {} + + are-we-there-yet@3.0.1: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + + array-flatten@1.1.1: {} + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.toreversed@1.1.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + asar@3.2.0: + dependencies: + chromium-pickle-js: 0.2.0 + commander: 5.1.0 + glob: 7.2.3 + minimatch: 3.1.2 + optionalDependencies: + '@types/glob': 7.2.0 + optional: true + + at-least-node@1.0.0: {} + + author-regex@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.26.0 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + batch@0.6.1: {} + + big.js@5.2.2: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.7.2: {} + + body-parser@1.20.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour-service@1.2.1: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + boolbase@1.0.0: {} + + boolean@3.2.0: + optional: true + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.23.2: + dependencies: + caniuse-lite: 1.0.30001642 + electron-to-chromium: 1.4.829 + node-releases: 2.0.17 + update-browserslist-db: 1.1.0(browserslist@4.23.2) + + buffer-crc32@0.2.13: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + optional: true + + bytes@3.0.0: {} + + bytes@3.1.2: {} + + cacache@16.1.3: + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.1.0 + infer-owner: 1.0.4 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.2.1 + unique-filename: 2.0.1 + transitivePeerDependencies: + - bluebird + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.3 + + caniuse-lite@1.0.30001642: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@2.0.0: {} + + chrome-trace-event@1.0.4: {} + + chromium-pickle-js@0.2.0: + optional: true + + classnames@2.5.1: {} + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + clean-stack@2.2.0: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-spinners@2.9.2: {} + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + optional: true + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone@1.0.4: {} + + clsx@2.1.1: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + colorette@2.0.20: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@5.1.0: {} + + commander@8.3.0: {} + + commander@9.5.0: {} + + compare-version@0.1.2: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.53.0 + + compression@1.7.4: + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + compute-gcd@1.2.1: + dependencies: + validate.io-array: 1.0.6 + validate.io-function: 1.0.2 + validate.io-integer-array: 1.0.0 + + compute-lcm@1.1.2: + dependencies: + compute-gcd: 1.2.1 + validate.io-array: 1.0.6 + validate.io-function: 1.0.2 + validate.io-integer-array: 1.0.0 + + concat-map@0.0.1: {} + + connect-history-api-fallback@2.0.0: {} + + console-control-strings@1.1.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.6.0: {} + + core-js-pure@3.37.1: {} + + core-util-is@1.0.3: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@8.3.6(typescript@5.5.3): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.5.3 + + cross-dirname@0.1.0: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-spawn@6.0.5: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cross-zip@4.0.1: {} + + cryptr@6.3.0: {} + + css-loader@7.1.2(webpack@5.93.0): + dependencies: + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.39) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.39) + postcss-modules-scope: 3.2.0(postcss@8.4.39) + postcss-modules-values: 4.0.0(postcss@8.4.39) + postcss-value-parser: 4.2.0 + semver: 7.6.3 + optionalDependencies: + webpack: 5.93.0 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.5: + dependencies: + ms: 2.1.2 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-browser-id@5.0.0: + optional: true + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + optional: true + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: + optional: true + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delegates@1.0.0: {} + + denodeify@1.2.1: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + destroy@1.2.0: {} + + detect-libc@2.0.3: {} + + detect-node@2.1.0: {} + + dir-compare@4.2.0: + dependencies: + minimatch: 3.1.2 + p-limit: 3.1.0 + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.26.0 + csstype: 3.1.3 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-installer-common@0.10.3: + dependencies: + '@malept/cross-spawn-promise': 1.1.1 + asar: 3.2.0 + debug: 4.3.5 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + parse-author: 2.0.0 + semver: 7.6.3 + tmp-promise: 3.0.3 + optionalDependencies: + '@types/fs-extra': 9.0.13 + transitivePeerDependencies: + - supports-color + optional: true + + electron-installer-debian@3.2.0: + dependencies: + '@malept/cross-spawn-promise': 1.1.1 + debug: 4.3.5 + electron-installer-common: 0.10.3 + fs-extra: 9.1.0 + get-folder-size: 2.0.1 + lodash: 4.17.21 + word-wrap: 1.2.5 + yargs: 16.2.0 + transitivePeerDependencies: + - supports-color + optional: true + + electron-installer-redhat@3.4.0: + dependencies: + '@malept/cross-spawn-promise': 1.1.1 + debug: 4.3.5 + electron-installer-common: 0.10.3 + fs-extra: 9.1.0 + lodash: 4.17.21 + word-wrap: 1.2.5 + yargs: 16.2.0 + transitivePeerDependencies: + - supports-color + optional: true + + electron-squirrel-startup@1.0.1: + dependencies: + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + + electron-to-chromium@1.4.829: {} + + electron-winstaller@5.3.1: + dependencies: + '@electron/asar': 3.2.10 + debug: 4.3.5 + fs-extra: 7.0.1 + lodash: 4.17.21 + temp: 0.9.4 + optionalDependencies: + '@electron/windows-sign': 1.1.3 + transitivePeerDependencies: + - supports-color + optional: true + + electron@31.2.1: + dependencies: + '@electron/get': 2.0.3 + '@types/node': 20.14.11 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encodeurl@1.0.2: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.17.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@2.2.0: {} + + env-paths@2.2.1: {} + + env-var@7.5.0: {} + + err-code@2.0.3: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-iterator-helpers@1.0.19: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + + es-module-lexer@1.5.4: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + es6-error@4.1.1: + optional: true + + escalade@3.1.2: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)): + dependencies: + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0) + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.15.0 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint@9.7.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.16.1(eslint@9.7.0)(typescript@5.5.3) + eslint: 9.7.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.7.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint@9.7.0) + hasown: 2.0.2 + is-core-module: 2.15.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.16.1(eslint@9.7.0)(typescript@5.5.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-react@7.34.4(eslint@9.7.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.19 + eslint: 9.7.0 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@8.0.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.0.0: {} + + eslint@9.7.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.17.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.7.0 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.5 + escape-string-regexp: 4.0.0 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + execa@1.0.0: + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + exponential-backoff@3.1.1: {} + + express-ws@5.0.2(express@4.19.2): + dependencies: + express: 4.19.2 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + express@4.19.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + extract-zip@2.0.1: + dependencies: + debug: 4.3.5 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.1: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-loader@6.2.0(webpack@5.93.0): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.93.0 + + filename-reserved-regex@2.0.0: {} + + filenamify@4.3.0: + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-root@1.1.0: {} + + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flat@5.0.2: {} + + flatted@3.3.1: {} + + flora-colossus@2.0.0: + dependencies: + debug: 4.3.5 + fs-extra: 10.1.0 + transitivePeerDependencies: + - supports-color + + follow-redirects@1.15.6(debug@4.3.5): + optionalDependencies: + debug: 4.3.5 + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.2.1: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.5.3)(webpack@5.93.0): + dependencies: + '@babel/code-frame': 7.24.7 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 8.3.6(typescript@5.5.3) + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.6.3 + tapable: 2.2.1 + typescript: 5.5.3 + webpack: 5.93.0 + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + optional: true + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-monkey@1.0.6: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + galactus@1.0.0: + dependencies: + debug: 4.3.5 + flora-colossus: 2.0.0 + fs-extra: 10.1.0 + transitivePeerDependencies: + - supports-color + + gar@1.0.4: + optional: true + + gauge@4.0.4: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + get-caller-file@2.0.5: {} + + get-folder-size@2.0.1: + dependencies: + gar: 1.0.4 + tiny-each-async: 2.0.3 + optional: true + + get-installed-path@2.1.1: + dependencies: + global-modules: 1.0.0 + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-package-info@1.0.0: + dependencies: + bluebird: 3.7.2 + debug: 2.6.9 + lodash.get: 4.4.2 + read-pkg-up: 2.0.0 + transitivePeerDependencies: + - supports-color + + get-stream@4.1.0: + dependencies: + pump: 3.0.0 + + get-stream@5.2.0: + dependencies: + pump: 3.0.0 + + get-stream@6.0.1: {} + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + + glob-base@0.3.0: + dependencies: + glob-parent: 2.0.0 + is-glob: 2.0.1 + + glob-parent@2.0.0: + dependencies: + is-glob: 2.0.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.5: + dependencies: + foreground-child: 3.2.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + + glob@11.0.1: + dependencies: + foreground-child: 3.2.1 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-agent@3.0.0: + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.6.3 + serialize-error: 7.0.1 + optional: true + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handle-thing@2.0.1: {} + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + has-unicode@2.0.1: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + html-entities@2.5.2: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.31.3 + + html-webpack-plugin@5.6.0(webpack@5.93.0): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + optionalDependencies: + webpack: 5.93.0 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + http-cache-semantics@4.1.1: {} + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-parser-js@0.5.8: {} + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + http-proxy-middleware@2.0.6(@types/express@4.17.21)(debug@4.3.5): + dependencies: + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1(debug@4.3.5) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.7 + optionalDependencies: + '@types/express': 4.17.21 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1(debug@4.3.5): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.6(debug@4.3.5) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + hyperdyperid@1.2.0: + optional: true + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + icss-utils@5.1.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + ieee754@1.2.1: {} + + ignore@5.3.1: {} + + immutable@4.3.6: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + infer-owner@1.0.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + interpret@3.1.1: {} + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.2.0: {} + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-arrayish@0.2.1: {} + + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.15.0: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-docker@2.2.1: {} + + is-docker@3.0.0: + optional: true + + is-dotfile@1.0.3: {} + + is-extglob@1.0.0: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@2.0.1: + dependencies: + is-extglob: 1.0.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + optional: true + + is-interactive@1.0.0: {} + + is-lambda@1.0.1: {} + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-network-error@1.1.0: + optional: true + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@3.0.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-unicode-supported@0.1.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-weakset@2.0.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + optional: true + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isbinaryfile@4.0.10: {} + + isexe@2.0.0: {} + + isobject@3.0.1: {} + + iterator.prototype@1.1.2: + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@4.0.2: + dependencies: + '@isaacs/cliui': 8.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.14.11 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@1.1.0: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-loader@0.5.7: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-compare@0.2.2: + dependencies: + lodash: 4.17.21 + + json-schema-merge-allof@0.8.1: + dependencies: + compute-lcm: 1.1.2 + json-schema-compare: 0.2.2 + lodash: 4.17.21 + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: + optional: true + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonpointer@5.0.1: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + + junk@3.1.0: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + launch-editor@2.8.0: + dependencies: + picocolors: 1.0.1 + shell-quote: 1.8.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lines-and-columns@1.2.4: {} + + listr2@7.0.2: + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.4.1 + wrap-ansi: 8.1.0 + + load-json-file@2.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 2.2.0 + pify: 2.3.0 + strip-bom: 3.0.0 + + loader-runner@4.3.0: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.get@4.4.2: {} + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@5.0.1: + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lower-case@2.0.2: + dependencies: + tslib: 2.6.3 + + lowercase-keys@2.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@11.0.2: {} + + lru-cache@7.18.3: {} + + make-fetch-happen@10.2.1: + dependencies: + agentkeepalive: 4.5.0 + cacache: 16.1.3 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 9.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + map-age-cleaner@0.1.3: + dependencies: + p-defer: 1.0.0 + + markdown-to-jsx@7.7.3(react@18.3.1): + dependencies: + react: 18.3.1 + + matcher@3.0.0: + dependencies: + escape-string-regexp: 4.0.0 + optional: true + + media-typer@0.3.0: {} + + mem@4.3.0: + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 2.1.0 + p-is-promise: 2.1.0 + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + + memfs@4.9.3: + dependencies: + '@jsonjoy.com/json-pack': 1.0.4(tslib@2.6.3) + '@jsonjoy.com/util': 1.2.0(tslib@2.6.3) + tree-dump: 1.0.2(tslib@2.6.3) + tslib: 2.6.3 + optional: true + + merge-descriptors@1.0.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.53.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@2.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + minimalistic-assert@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@1.0.2: + dependencies: + minipass: 3.3.6 + + minipass-fetch@2.1.2: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + nice-try@1.0.5: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.6.3 + + node-abi@3.65.0: + dependencies: + semver: 7.6.3 + + node-abort-controller@3.1.1: {} + + node-api-version@0.2.0: + dependencies: + semver: 7.6.3 + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-forge@1.3.1: {} + + node-gyp@9.4.1: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 10.2.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.6.3 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + node-loader@2.0.0(webpack@5.93.0): + dependencies: + loader-utils: 2.0.4 + webpack: 5.93.0 + + node-releases@2.0.17: {} + + nopt@6.0.0: + dependencies: + abbrev: 1.1.1 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-url@6.1.0: {} + + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npmlog@6.0.2: + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.2: {} + + object-keys@0.4.0: {} + + object-keys@1.1.1: {} + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + obuf@1.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@10.1.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + optional: true + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + p-cancelable@2.1.1: {} + + p-defer@1.0.0: {} + + p-finally@1.0.0: {} + + p-is-promise@2.1.0: {} + + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-retry@6.2.0: + dependencies: + '@types/retry': 0.12.2 + is-network-error: 1.1.0 + retry: 0.13.1 + optional: true + + p-try@1.0.0: {} + + p-try@2.2.0: {} + + package-json-from-dist@1.0.0: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-author@2.0.0: + dependencies: + author-regex: 1.0.0 + + parse-glob@3.0.4: + dependencies: + glob-base: 0.3.0 + is-dotfile: 1.0.3 + is-extglob: 1.0.0 + is-glob: 2.0.1 + + parse-json@2.2.0: + dependencies: + error-ex: 1.3.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-passwd@1.0.0: {} + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + + path-to-regexp@0.1.7: {} + + path-type@2.0.0: + dependencies: + pify: 2.3.0 + + path-type@4.0.0: {} + + pe-library@1.0.1: {} + + pend@1.2.0: {} + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + pify@2.3.0: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + plist@3.1.0: + dependencies: + '@xmldom/xmldom': 0.8.10 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + + possible-typed-array-names@1.0.0: {} + + postcss-modules-extract-imports@3.1.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + postcss-modules-local-by-default@4.0.5(postcss@8.4.39): + dependencies: + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-selector-parser: 6.1.1 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + postcss-selector-parser: 6.1.1 + + postcss-modules-values@4.0.0(postcss@8.4.39): + dependencies: + icss-utils: 5.1.0(postcss@8.4.39) + postcss: 8.4.39 + + postcss-selector-parser@6.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.39: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + postject@1.0.0-alpha.6: + dependencies: + commander: 9.5.0 + + prelude-ls@1.2.1: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + + process-nextick-args@2.0.1: {} + + progress-stream@1.2.0: + dependencies: + speedometer: 0.1.4 + through2: 0.2.3 + + progress@2.0.3: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + prr@1.0.1: {} + + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + q@1.5.1: {} + + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + + queue-microtask@1.2.3: {} + + quick-lru@5.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-is@19.0.0: {} + + react-refresh@0.14.2: {} + + react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.0 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-binary-file-arch@1.0.6: + dependencies: + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + read-pkg-up@2.0.0: + dependencies: + find-up: 2.1.0 + read-pkg: 2.0.0 + + read-pkg@2.0.0: + dependencies: + load-json-file: 2.0.0 + normalize-package-data: 2.5.0 + path-type: 2.0.0 + + readable-stream@1.1.14: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + rechoir@0.8.0: + dependencies: + resolve: 1.22.8 + + reflect.getprototypeof@1.0.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + which-builtin-type: 1.1.3 + + regenerator-runtime@0.14.1: {} + + regexp.prototype.flags@1.5.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + relateurl@0.2.7: {} + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resedit@2.0.2: + dependencies: + pe-library: 1.0.1 + + resolve-alpn@1.2.1: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-package@1.0.1: + dependencies: + get-installed-path: 2.1.1 + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + retry@0.13.1: {} + + reusify@1.0.4: {} + + rfdc@1.4.1: {} + + rimraf@2.6.3: + dependencies: + glob: 7.2.3 + optional: true + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.9: + dependencies: + glob: 10.4.5 + optional: true + + rimraf@6.0.1: + dependencies: + glob: 11.0.1 + package-json-from-dist: 1.0.0 + + roarr@2.15.4: + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.4 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + optional: true + + run-applescript@7.0.0: + optional: true + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safer-buffer@2.1.2: {} + + sanitize-filename@1.6.3: + dependencies: + truncate-utf8-bytes: 1.0.2 + + sass-loader@14.2.1(sass@1.77.8)(webpack@5.93.0): + dependencies: + neo-async: 2.6.2 + optionalDependencies: + sass: 1.77.8 + webpack: 5.93.0 + + sass@1.77.8: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.6 + source-map-js: 1.2.0 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.2.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + semver-compare@1.0.0: + optional: true + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-error@7.0.1: + dependencies: + type-fest: 0.13.1 + optional: true + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shell-quote@1.8.1: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slide@1.1.6: {} + + smart-buffer@4.2.0: {} + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + socks-proxy-agent@7.0.0: + dependencies: + agent-base: 6.0.2 + debug: 4.3.5 + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + source-map-js@1.2.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + sourcemap-codec@1.4.8: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.18 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + + spdx-license-ids@3.0.18: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.3.5 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.3.5 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + speedometer@0.1.4: {} + + sprintf-js@1.1.3: {} + + ssri@9.0.1: + dependencies: + minipass: 3.3.6 + + stackframe@1.3.4: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.matchall@4.0.11: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} + + strip-eof@1.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-outer@1.0.1: + dependencies: + escape-string-regexp: 1.0.5 + + style-loader@4.0.0(webpack@5.93.0): + dependencies: + webpack: 5.93.0 + + stylis@4.2.0: {} + + sudo-prompt@9.2.1: {} + + sumchecker@3.0.1: + dependencies: + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tapable@2.2.1: {} + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + temp@0.9.4: + dependencies: + mkdirp: 0.5.6 + rimraf: 2.6.3 + optional: true + + terser-webpack-plugin@5.3.10(webpack@5.93.0): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.3 + webpack: 5.93.0 + + terser@5.31.3: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-table@0.2.0: {} + + thingies@1.21.0(tslib@2.6.3): + dependencies: + tslib: 2.6.3 + optional: true + + through2@0.2.3: + dependencies: + readable-stream: 1.1.14 + xtend: 2.1.2 + + thunky@1.1.0: {} + + tiny-each-async@2.0.3: + optional: true + + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.3 + optional: true + + tmp@0.2.3: + optional: true + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + tree-dump@1.0.2(tslib@2.6.3): + dependencies: + tslib: 2.6.3 + optional: true + + trim-repeated@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + + ts-api-utils@1.3.0(typescript@5.5.3): + dependencies: + typescript: 5.5.3 + + ts-loader@9.5.1(typescript@5.5.3)(webpack@5.93.0): + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.17.0 + micromatch: 4.0.7 + semver: 7.6.3 + source-map: 0.7.4 + typescript: 5.5.3 + webpack: 5.93.0 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.6.3: {} + + tslog@3.3.4: + dependencies: + source-map-support: 0.5.21 + + tslog@4.9.3: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.13.1: + optional: true + + type-fest@1.4.0: {} + + type-fest@4.22.0: + optional: true + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typescript@5.5.3: {} + + typescript@5.7.3: {} + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + undici-types@5.26.5: {} + + unique-filename@2.0.1: + dependencies: + unique-slug: 3.0.0 + + unique-slug@3.0.0: + dependencies: + imurmurhash: 0.1.4 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.1.0(browserslist@4.23.2): + dependencies: + browserslist: 4.23.2 + escalade: 3.1.2 + picocolors: 1.0.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + username@5.1.0: + dependencies: + execa: 1.0.0 + mem: 4.3.0 + + utf8-byte-length@1.0.5: {} + + util-deprecate@1.0.2: {} + + utila@0.4.0: {} + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate.io-array@1.0.6: {} + + validate.io-function@1.0.2: {} + + validate.io-integer-array@1.0.0: + dependencies: + validate.io-array: 1.0.6 + validate.io-integer: 1.0.5 + + validate.io-integer@1.0.5: + dependencies: + validate.io-number: 1.0.3 + + validate.io-number@1.0.3: {} + + vary@1.1.2: {} + + watchpack@2.4.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webidl-conversions@3.0.1: {} + + webpack-dev-middleware@5.3.4(webpack@5.93.0): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.93.0 + + webpack-dev-middleware@7.2.1(webpack@5.93.0): + dependencies: + colorette: 2.0.20 + memfs: 4.9.3 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.2.0 + optionalDependencies: + webpack: 5.93.0 + optional: true + + webpack-dev-server@4.15.2(debug@4.3.5)(webpack@5.93.0): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.11 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.19.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21)(debug@4.3.5) + ipaddr.js: 2.2.0 + launch-editor: 2.8.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 5.3.4(webpack@5.93.0) + ws: 8.18.0 + optionalDependencies: + webpack: 5.93.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-dev-server@5.0.4(webpack@5.93.0): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.11 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.19.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21)(debug@4.3.5) + ipaddr.js: 2.2.0 + launch-editor: 2.8.0 + open: 10.1.0 + p-retry: 6.2.0 + rimraf: 5.0.9 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.2.1(webpack@5.93.0) + ws: 8.18.0 + optionalDependencies: + webpack: 5.93.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + optional: true + + webpack-merge@5.10.0: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + webpack-sources@3.2.3: {} + + webpack@5.93.0: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.0 + es-module-lexer: 1.5.4 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.93.0) + watchpack: 2.4.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-builtin-type@1.1.3: + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + wildcard@2.0.1: {} + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@1.3.4: + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + slide: 1.1.6 + + ws@7.5.10: {} + + ws@8.18.0: {} + + xmlbuilder@15.1.1: {} + + xtend@2.1.2: + dependencies: + object-keys: 0.4.0 + + xterm-addon-fit@0.5.0(xterm@4.19.0): + dependencies: + xterm: 4.19.0 + + xterm-addon-search@0.8.2(xterm@4.19.0): + dependencies: + xterm: 4.19.0 + + xterm@4.19.0: {} + + y18n@5.0.8: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@20.2.9: + optional: true + + yargs-parser@21.1.1: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + optional: true + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yarn-or-npm@3.0.1: + dependencies: + cross-spawn: 6.0.5 + pkg-dir: 4.2.0 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yocto-queue@0.1.0: {} + + zod-to-json-schema@3.24.1(zod@3.24.1): + dependencies: + zod: 3.24.1 + + zod-to-ts@1.2.0(typescript@5.7.3)(zod@3.24.1): + dependencies: + typescript: 5.7.3 + zod: 3.24.1 + + zod@3.24.1: {} diff --git a/packages/kbot/extensions/gui/src/main/app.ts b/packages/kbot/extensions/gui/src/main/app.ts new file mode 100644 index 00000000..666cf8a0 --- /dev/null +++ b/packages/kbot/extensions/gui/src/main/app.ts @@ -0,0 +1,48 @@ +import { app, BrowserWindow } from 'electron'; +import { createAppWindow } from './appWindow'; + +/** Handle creating/removing shortcuts on Windows when installing/uninstalling. */ +if (require('electron-squirrel-startup')) { + app.quit(); +} + +/** + * This method will be called when Electron has finished + * initialization and is ready to create browser windows. + * Some APIs can only be used after this event occurs. + */ +app.on('ready', createAppWindow); + +/** + * Emitted when the application is activated. Various actions can + * trigger this event, such as launching the application for the first time, + * attempting to re-launch the application when it's already running, + * or clicking on the application's dock or taskbar icon. + */ +app.on('activate', () => { + /** + * On OS X it's common to re-create a window in the app when the + * dock icon is clicked and there are no other windows open. + */ + if (BrowserWindow.getAllWindows().length === 0) { + createAppWindow(); + } +}); + +/** + * Emitted when all windows have been closed. + */ +app.on('window-all-closed', () => { + /** + * On OS X it is common for applications and their menu bar + * to stay active until the user quits explicitly with Cmd + Q + */ + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +/** + * In this file you can include the rest of your app's specific main process code. + * You can also put them in separate files and import them here. + */ diff --git a/packages/kbot/extensions/gui/src/main/appWindow.ts b/packages/kbot/extensions/gui/src/main/appWindow.ts new file mode 100644 index 00000000..57b8f1fa --- /dev/null +++ b/packages/kbot/extensions/gui/src/main/appWindow.ts @@ -0,0 +1,63 @@ +import { app, BrowserWindow } from 'electron'; +import path from 'path'; +import { registerTitlebarIpc } from '@main/window/titlebarIpc'; + +// Electron Forge automatically creates these entry points +declare const APP_WINDOW_WEBPACK_ENTRY: string; +declare const APP_WINDOW_PRELOAD_WEBPACK_ENTRY: string; + +let appWindow: BrowserWindow; + +/** + * Create Application Window + * @returns {BrowserWindow} Application Window Instance + */ +export function createAppWindow(): BrowserWindow { + // Create new window instance + appWindow = new BrowserWindow({ + width: 800, + height: 600, + backgroundColor: '#202020', + show: false, + autoHideMenuBar: true, + frame: false, + titleBarStyle: 'hidden', + icon: path.resolve('assets/images/appIcon.ico'), + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + nodeIntegrationInWorker: false, + nodeIntegrationInSubFrames: false, + preload: APP_WINDOW_PRELOAD_WEBPACK_ENTRY, + sandbox: false, + }, + }); + + // Load the index.html of the app window. + appWindow.loadURL(APP_WINDOW_WEBPACK_ENTRY); + + // Show window when its ready to + appWindow.on('ready-to-show', () => appWindow.show()); + + // Register Inter Process Communication for main process + registerMainIPC(); + + // Close all windows when main window is closed + appWindow.on('close', () => { + appWindow = null; + app.quit(); + }); + + return appWindow; +} + +/** + * Register Inter Process Communication + */ +function registerMainIPC() { + /** + * Here you can assign IPC related codes for the application window + * to Communicate asynchronously from the main process to renderer processes. + */ + registerTitlebarIpc(appWindow); +} diff --git a/packages/kbot/extensions/gui/src/main/window/LICENSE b/packages/kbot/extensions/gui/src/main/window/LICENSE new file mode 100644 index 00000000..56bb0ec1 --- /dev/null +++ b/packages/kbot/extensions/gui/src/main/window/LICENSE @@ -0,0 +1,16 @@ +Copyright (c) 2021-2022 Guasam + +This software is provided "as-is", without any express or implied warranty. In no event +will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial +applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you +wrote the original software. If you use this software in a product, an acknowledgment +in the product documentation would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be misrepresented +as being the original software. + +3. This notice may not be removed or altered from any source distribution. \ No newline at end of file diff --git a/packages/kbot/extensions/gui/src/main/window/titlebarContext.ts b/packages/kbot/extensions/gui/src/main/window/titlebarContext.ts new file mode 100644 index 00000000..24295263 --- /dev/null +++ b/packages/kbot/extensions/gui/src/main/window/titlebarContext.ts @@ -0,0 +1,74 @@ +/** + * Copyright (c) 2021, Guasam + * + * This software is provided "as-is", without any express or implied warranty. In no event + * will the authors be held liable for any damages arising from the use of this software. + * Read the LICENSE file for more details. + * + * @author : guasam + * @project : Electron Window + * @package : Titlebar IPC (Renderer Process) + */ + +import { ipcRenderer } from 'electron'; + +const titlebarContext = { + exit() { + ipcRenderer.invoke('window-close'); + }, + undo() { + ipcRenderer.invoke('web-undo'); + }, + redo() { + ipcRenderer.invoke('web-redo'); + }, + cut() { + ipcRenderer.invoke('web-cut'); + }, + copy() { + ipcRenderer.invoke('web-copy'); + }, + paste() { + ipcRenderer.invoke('web-paste'); + }, + delete() { + ipcRenderer.invoke('web-delete'); + }, + select_all() { + ipcRenderer.invoke('web-select-all'); + }, + reload() { + ipcRenderer.invoke('web-reload'); + }, + force_reload() { + ipcRenderer.invoke('web-force-reload'); + }, + toggle_devtools() { + ipcRenderer.invoke('web-toggle-devtools'); + }, + actual_size() { + ipcRenderer.invoke('web-actual-size'); + }, + zoom_in() { + ipcRenderer.invoke('web-zoom-in'); + }, + zoom_out() { + ipcRenderer.invoke('web-zoom-out'); + }, + toggle_fullscreen() { + ipcRenderer.invoke('web-toggle-fullscreen'); + }, + minimize() { + ipcRenderer.invoke('window-minimize'); + }, + toggle_maximize() { + ipcRenderer.invoke('window-toggle-maximize'); + }, + open_url(url: string) { + ipcRenderer.invoke('open-url', url); + }, +}; + +export type TitlebarContextApi = typeof titlebarContext; + +export default titlebarContext; diff --git a/packages/kbot/extensions/gui/src/main/window/titlebarContextApi.ts b/packages/kbot/extensions/gui/src/main/window/titlebarContextApi.ts new file mode 100644 index 00000000..3fc7a297 --- /dev/null +++ b/packages/kbot/extensions/gui/src/main/window/titlebarContextApi.ts @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2021, Guasam + * + * This software is provided "as-is", without any express or implied warranty. In no event + * will the authors be held liable for any damages arising from the use of this software. + * Read the LICENSE file for more details. + * + * @author : guasam + * @project : Electron Window + * @package : Titlebar Context API + */ + +import { TitlebarContextApi } from './titlebarContext'; + +const context: TitlebarContextApi = (window as any).electron_window?.titlebar; + +export default context; diff --git a/packages/kbot/extensions/gui/src/main/window/titlebarIpc.ts b/packages/kbot/extensions/gui/src/main/window/titlebarIpc.ts new file mode 100644 index 00000000..12204961 --- /dev/null +++ b/packages/kbot/extensions/gui/src/main/window/titlebarIpc.ts @@ -0,0 +1,95 @@ +/** + * Copyright (c) 2021, Guasam + * + * This software is provided "as-is", without any express or implied warranty. In no event + * will the authors be held liable for any damages arising from the use of this software. + * Read the LICENSE file for more details. + * + * @author : guasam + * @project : Electron Window + * @package : Titlebar IPC (Main Process) + */ + +import { BrowserWindow, ipcMain, shell } from 'electron'; + +export const registerTitlebarIpc = (mainWindow: BrowserWindow) => { + ipcMain.handle('window-minimize', () => { + mainWindow.minimize(); + }); + + ipcMain.handle('window-maximize', () => { + mainWindow.maximize(); + }); + + ipcMain.handle('window-toggle-maximize', () => { + if (mainWindow.isMaximized()) { + mainWindow.unmaximize(); + } else { + mainWindow.maximize(); + } + }); + + ipcMain.handle('window-close', () => { + mainWindow.close(); + }); + + ipcMain.handle('web-undo', () => { + mainWindow.webContents.undo(); + }); + + ipcMain.handle('web-redo', () => { + mainWindow.webContents.redo(); + }); + + ipcMain.handle('web-cut', () => { + mainWindow.webContents.cut(); + }); + + ipcMain.handle('web-copy', () => { + mainWindow.webContents.copy(); + }); + + ipcMain.handle('web-paste', () => { + mainWindow.webContents.paste(); + }); + + ipcMain.handle('web-delete', () => { + mainWindow.webContents.delete(); + }); + + ipcMain.handle('web-select-all', () => { + mainWindow.webContents.selectAll(); + }); + + ipcMain.handle('web-reload', () => { + mainWindow.webContents.reload(); + }); + + ipcMain.handle('web-force-reload', () => { + mainWindow.webContents.reloadIgnoringCache(); + }); + + ipcMain.handle('web-toggle-devtools', () => { + mainWindow.webContents.toggleDevTools(); + }); + + ipcMain.handle('web-actual-size', () => { + mainWindow.webContents.setZoomLevel(0); + }); + + ipcMain.handle('web-zoom-in', () => { + mainWindow.webContents.setZoomLevel(mainWindow.webContents.zoomLevel + 0.5); + }); + + ipcMain.handle('web-zoom-out', () => { + mainWindow.webContents.setZoomLevel(mainWindow.webContents.zoomLevel - 0.5); + }); + + ipcMain.handle('web-toggle-fullscreen', () => { + mainWindow.setFullScreen(!mainWindow.fullScreen); + }); + + ipcMain.handle('open-url', (e, url) => { + shell.openExternal(url); + }); +}; diff --git a/packages/kbot/extensions/gui/src/main/window/titlebarMenus.ts b/packages/kbot/extensions/gui/src/main/window/titlebarMenus.ts new file mode 100644 index 00000000..df61753f --- /dev/null +++ b/packages/kbot/extensions/gui/src/main/window/titlebarMenus.ts @@ -0,0 +1,160 @@ +/** + * Copyright (c) 2021, Guasam + * + * This software is provided "as-is", without any express or implied warranty. In no event + * will the authors be held liable for any damages arising from the use of this software. + * Read the LICENSE file for more details. + * + * @author : guasam + * @project : Electron Window + * @package : Titlebar Menu Items + */ + +export type TitlebarMenuItem = { + name: string; + action?: string; + shortcut?: string; + value?: string | number; + items?: TitlebarMenuItem[]; +}; + +export type TitlebarMenu = { + name: string; + items: TitlebarMenuItem[]; +}; + +const titlebarMenus: TitlebarMenu[] = [ + { + name: 'File', + items: [ + { + name: 'Exit', + action: 'exit', + }, + ], + }, + { + name: 'Edit', + items: [ + { + name: 'Undo', + action: 'undo', + shortcut: 'Ctrl+Z', + }, + { + name: 'Redo', + action: 'redo', + shortcut: 'Ctrl+Y', + }, + { + name: '__', + }, + { + name: 'Cut', + action: 'cut', + shortcut: 'Ctrl+X', + }, + { + name: 'Copy', + action: 'copy', + shortcut: 'Ctrl+C', + }, + { + name: 'Paste', + action: 'paste', + shortcut: 'Ctrl+V', + }, + { + name: 'Delete', + action: 'delete', + }, + { + name: '__', + }, + { + name: 'Select All', + action: 'select_all', + shortcut: 'Ctrl+A', + }, + ], + }, + { + name: 'View', + items: [ + { + name: 'Reload', + action: 'reload', + shortcut: 'Ctrl+R', + }, + { + name: 'Force Reload', + action: 'force_reload', + shortcut: 'Ctrl+Shift+R', + }, + { + name: 'Toogle Developer Tools', + action: 'toggle_devtools', + shortcut: 'Ctrl+Shift+I', + }, + { + name: '__', + }, + { + name: 'Actual Size', + action: 'actual_size', + shortcut: 'Ctrl+0', + }, + { + name: 'Zoom In', + action: 'zoom_in', + shortcut: 'Ctrl++', + }, + { + name: 'Zoom Out', + action: 'zoom_out', + shortcut: 'Ctrl+-', + }, + { + name: '__', + }, + { + name: 'Toggle Fullscreen', + action: 'toggle_fullscreen', + shortcut: 'F11', + }, + ], + }, + { + name: 'Window', + items: [ + { + name: 'Maximize', + action: 'toggle_maximize', + shortcut: 'Toggle' + }, + { + name: 'Minimize', + action: 'minimize', + shortcut: 'Ctrl+M', + }, + { + name: 'Close', + action: 'exit', + shortcut: 'Ctrl+W', + }, + ], + }, + { + name: 'Credits', + items: [ + { + name: 'Guasam', + action: 'open_url', + value: 'https://github.com/guasam', + shortcut: '@guasam', + }, + ], + }, +]; + +export default titlebarMenus; diff --git a/packages/kbot/extensions/gui/src/main/window/windowPreload.ts b/packages/kbot/extensions/gui/src/main/window/windowPreload.ts new file mode 100644 index 00000000..b0263ea0 --- /dev/null +++ b/packages/kbot/extensions/gui/src/main/window/windowPreload.ts @@ -0,0 +1,6 @@ +import { contextBridge } from 'electron'; +import titlebarContext from './titlebarContext'; + +contextBridge.exposeInMainWorld('electron_window', { + titlebar: titlebarContext, +}); diff --git a/packages/kbot/extensions/gui/src/renderer/app.html b/packages/kbot/extensions/gui/src/renderer/app.html new file mode 100644 index 00000000..5196f8c5 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/app.html @@ -0,0 +1,10 @@ + + + + + ERWT Boilerplate + + +

+ + diff --git a/packages/kbot/extensions/gui/src/renderer/appPreload.tsx b/packages/kbot/extensions/gui/src/renderer/appPreload.tsx new file mode 100644 index 00000000..0db4ae47 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/appPreload.tsx @@ -0,0 +1,35 @@ +import '@main/window/windowPreload'; + +// Say something +console.log('[ERWT] : Preload execution started'); + +// Get versions +window.addEventListener('DOMContentLoaded', () => { + const app = document.getElementById('app'); + const { env } = process; + const versions: Record = {}; + + // ERWT Package version + versions['erwt'] = env['npm_package_version']; + versions['license'] = env['npm_package_license']; + + // Process versions + for (const type of ['chrome', 'node', 'electron']) { + versions[type] = process.versions[type].replace('+', ''); + } + + // NPM deps versions + for (const type of ['react']) { + const v = env['npm_package_dependencies_' + type]; + if (v) versions[type] = v.replace('^', ''); + } + + // NPM @dev deps versions + for (const type of ['webpack', 'typescript']) { + const v = env['npm_package_devDependencies_' + type]; + if (v) versions[type] = v.replace('^', ''); + } + + // Set versions to app data + app.setAttribute('data-versions', JSON.stringify(versions)); +}); diff --git a/packages/kbot/extensions/gui/src/renderer/appRenderer.tsx b/packages/kbot/extensions/gui/src/renderer/appRenderer.tsx new file mode 100644 index 00000000..0c40f4bd --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/appRenderer.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import WindowFrame from '@renderer/window/WindowFrame'; +import Application from '@components/Application'; + +// Say something +console.log('[ERWT] : Renderer execution started'); + +// Application to Render +const app = ( + + + +); + +// Render application in DOM +createRoot(document.getElementById('app')).render(app); diff --git a/packages/kbot/extensions/gui/src/renderer/components/Application.tsx b/packages/kbot/extensions/gui/src/renderer/components/Application.tsx new file mode 100644 index 00000000..0e323c3a --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/components/Application.tsx @@ -0,0 +1,414 @@ +import * as path from 'path'; +import * as fs from 'fs'; +import { sync as read } from '@plastichub/fs/read'; +import { sync as write } from '@plastichub/fs/write'; +import { sync as mkdir } from '@plastichub/fs/dir'; +import { sync as exists } from '@plastichub/fs/exists'; +import React, { useEffect, useState } from 'react'; +import '@styles/app.scss'; +import icons from '@components/icons'; + +import Form from '@rjsf/mui' +import { RJSFSchema } from '@rjsf/utils'; +import validator from '@rjsf/validator-ajv8'; + +// const json = require('json-loader!schema.json'); + +//const schema2 = require('./schema.json'); +//const ui = require('./ui.json'); + +// https://github.com/codesbiome/electron-react-webpack-typescript-2024 +const uiSchema:any = +{ + "ui:submitButtonOptions": { + "props": { + "disabled": false, + "className": "btn btn-info" + }, + "norender": false, + "submitText": "Submit" + }, + "path": { + "ui:description": "Target directory", + "ui:title": "Path", + "ui:placeholder": ".", + "ui:widget": "file" + }, + "prompt": { + "ui:description": "The prompt. Supports file paths and environment variables.", + "ui:title": "Prompt", + "ui:placeholder": "./prompt.md" + }, + "output": { + "ui:description": "Optional output path for modified files (Tool mode only)", + "ui:title": "Output" + }, + "dst": { + "ui:description": "Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for \"completion\" mode", + "ui:title": "Dst" + }, + "each": { + "ui:description": "Glob pattern to run for each matching file", + "ui:title": "Each" + }, + "disable": { + "ui:description": "Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user", + "ui:title": "Disable", + "ui:placeholder": [] + }, + "disableTools": { + "ui:description": "List of specific tools to disable", + "ui:title": "Disabletools", + "ui:placeholder": [] + }, + "tools": { + "ui:description": "List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user", + "ui:title": "Tools", + "ui:placeholder": [ + "fs", + "git", + "interact", + "terminal", + "search", + "web", + "email", + "user" + ] + }, + "include": { + "ui:description": "Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json", + "ui:title": "Include" + }, + "model": { + "ui:description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-instruct | paid\njondurbin/airoboros-l2-70b | paid\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\nopenrouter/auto | paid\ncohere/command | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndatabricks/dbrx-instruct | paid\ndeepseek/deepseek-chat-v2.5 | paid\ndeepseek/deepseek-chat | paid\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-2.0-flash-thinking-exp:free | free\ngoogle/gemini-exp-1114:free | free\ngoogle/gemini-exp-1121:free | free\ngoogle/gemini-exp-1206:free | free\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-flash-1.5-exp | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-pro | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-pro-1.5-exp | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflatebot/mn-mag-mell-r1 | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nliquid/lfm-40b | paid\nlizpreciatior/lzlv-70b-fp16-hf | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-70b-instruct:nitro | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3-8b-instruct:extended | paid\nmeta-llama/llama-3-8b-instruct:free | free\nmeta-llama/llama-3-8b-instruct:nitro | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-405b-instruct:free | free\nmeta-llama/llama-3.1-405b-instruct:nitro | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct:free | free\nmeta-llama/llama-3.1-70b-instruct:nitro | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.2-90b-vision-instruct:free | free\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct:free | free\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct:free | free\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct:nitro | paid\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/mixtral-8x7b-instruct:nitro | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\ngryphe/mythomax-l2-13b | paid\ngryphe/mythomax-l2-13b:extended | paid\ngryphe/mythomax-l2-13b:free | free\ngryphe/mythomax-l2-13b:nitro | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenchat/openchat-7b | paid\nopenchat/openchat-7b:free | free\nteknium/openhermes-2.5-mistral-7b | paid\nperplexity/llama-3.1-sonar-huge-128k-online | paid\nperplexity/llama-3.1-sonar-large-128k-chat | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-chat | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/llama-3-sonar-large-32k-chat | paid\nperplexity/llama-3-sonar-large-32k-online | paid\nperplexity/llama-3-sonar-small-32k-chat | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-2-7b-instruct | paid\nqwen/qwen-2-7b-instruct:free | free\nqwen/qvq-72b-preview | paid\nqwen/qwq-32b-preview | paid\nqwen/qwen-2-vl-72b-instruct | paid\nqwen/qwen-2-vl-7b-instruct | paid\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct | paid\nundi95/remm-slerp-l2-13b | paid\nundi95/remm-slerp-l2-13b:extended | paid\nthedrummer/rocinante-12b | paid\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-70b-hanami-x1 | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nraifle/sorcererlm-8x22b | paid\nundi95/toppy-m-7b | paid\nundi95/toppy-m-7b:free | free\nundi95/toppy-m-7b:nitro | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\nxwin-lm/xwin-lm-70b | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-1106-vision-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4-vision-preview\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n", + "ui:title": "Model", + "ui:placeholder": "anthropic/claude-3.5-sonnet" + }, + "router": { + "ui:description": "Router to use: openai or openrouter", + "ui:title": "Router", + "ui:placeholder": "openrouter" + }, + "mode": { + "ui:description": "Chat completion mode:\n\t completion, tools, assistant.\n \u001b[32m\u001b[1mcompletion\u001b[22m\u001b[39m: no support for tools, please use --dst parameter to save the output.\n \u001b[32m\u001b[1mtools\u001b[22m\u001b[39m: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode.\n \u001b[32m\u001b[1massistant\u001b[22m\u001b[39m: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files :\n ", + "ui:title": "Mode", + "ui:placeholder": "tools" + }, + "logLevel": { + "ui:description": "Logging level for the application", + "ui:title": "Loglevel", + "ui:placeholder": 2 + }, + "profile": { + "ui:description": "Path to profile for variables. Supports environment variables.", + "ui:title": "Profile" + }, + "config": { + "ui:description": "Path to JSON configuration file (API keys). Supports environment variables.", + "ui:title": "Config" + }, + "dump": { + "ui:description": "Create a script", + "ui:title": "Dump" + }, + "preferences": { + "ui:description": "Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables.", + "ui:title": "Preferences", + "ui:placeholder": "./.kbot/preferences.md" + }, + "logs": { + "ui:description": "Logging directory", + "ui:title": "Logs", + "ui:placeholder": "./.kbot" + }, + "env": { + "ui:description": "Environment (in profile)", + "ui:title": "Env", + "ui:placeholder": "default" + }, + "variables": { + "ui:title": "Variables", + "ui:placeholder": {} + }, + "filters": { + "ui:description": "List of filters to apply to the output.\n Used only in completion mode and a given output file specified with --dst. \n It unwraps by default any code or data in Markdown. \n Choices:\n\tJSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim\n", + "ui:title": "Filters", + "ui:placeholder": [] + }, + "dry": { + "ui:description": "Dry run - only write out parameters without making API calls", + "ui:title": "Dry", + "ui:placeholder": false + } +} +const schema: RJSFSchema = { + "$ref": "#/definitions/kbot", + "definitions": { + "kbot": { + "type": "object", + "properties": { + "path": { + "type": "string", + "minLength": 1, + "default": ".", + "description": "Target directory" + }, + "prompt": { + "type": "string", + "description": "The prompt. Supports file paths and environment variables.", + "default": "./prompt.md" + }, + "output": { + "type": "string", + "description": "Optional output path for modified files (Tool mode only)" + }, + "dst": { + "type": "string", + "description": "Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for \"completion\" mode" + }, + "each": { + "type": "string", + "description": "Glob pattern to run for each matching file" + }, + "disable": { + "type": "array", + "items": { + "type": "string" + }, + "default": [], + "description": "Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user" + }, + "disableTools": { + "type": "array", + "items": { + "type": "string" + }, + "default": [], + "description": "List of specific tools to disable" + }, + "tools": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "fs", + "git", + "interact", + "terminal", + "search", + "web", + "email", + "user" + ], + "description": "List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user" + }, + "include": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json" + }, + "model": { + "type": "string", + "default": "anthropic/claude-3.5-sonnet", + "description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-instruct | paid\njondurbin/airoboros-l2-70b | paid\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\nopenrouter/auto | paid\ncohere/command | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndatabricks/dbrx-instruct | paid\ndeepseek/deepseek-chat-v2.5 | paid\ndeepseek/deepseek-chat | paid\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-2.0-flash-thinking-exp:free | free\ngoogle/gemini-exp-1114:free | free\ngoogle/gemini-exp-1121:free | free\ngoogle/gemini-exp-1206:free | free\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-flash-1.5-exp | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-pro | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-pro-1.5-exp | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflatebot/mn-mag-mell-r1 | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nliquid/lfm-40b | paid\nlizpreciatior/lzlv-70b-fp16-hf | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-70b-instruct:nitro | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3-8b-instruct:extended | paid\nmeta-llama/llama-3-8b-instruct:free | free\nmeta-llama/llama-3-8b-instruct:nitro | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-405b-instruct:free | free\nmeta-llama/llama-3.1-405b-instruct:nitro | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct:free | free\nmeta-llama/llama-3.1-70b-instruct:nitro | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.2-90b-vision-instruct:free | free\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct:free | free\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct:free | free\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct:nitro | paid\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/mixtral-8x7b-instruct:nitro | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\ngryphe/mythomax-l2-13b | paid\ngryphe/mythomax-l2-13b:extended | paid\ngryphe/mythomax-l2-13b:free | free\ngryphe/mythomax-l2-13b:nitro | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenchat/openchat-7b | paid\nopenchat/openchat-7b:free | free\nteknium/openhermes-2.5-mistral-7b | paid\nperplexity/llama-3.1-sonar-huge-128k-online | paid\nperplexity/llama-3.1-sonar-large-128k-chat | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-chat | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/llama-3-sonar-large-32k-chat | paid\nperplexity/llama-3-sonar-large-32k-online | paid\nperplexity/llama-3-sonar-small-32k-chat | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-2-7b-instruct | paid\nqwen/qwen-2-7b-instruct:free | free\nqwen/qvq-72b-preview | paid\nqwen/qwq-32b-preview | paid\nqwen/qwen-2-vl-72b-instruct | paid\nqwen/qwen-2-vl-7b-instruct | paid\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct | paid\nundi95/remm-slerp-l2-13b | paid\nundi95/remm-slerp-l2-13b:extended | paid\nthedrummer/rocinante-12b | paid\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-70b-hanami-x1 | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nraifle/sorcererlm-8x22b | paid\nundi95/toppy-m-7b | paid\nundi95/toppy-m-7b:free | free\nundi95/toppy-m-7b:nitro | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\nxwin-lm/xwin-lm-70b | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-1106-vision-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4-vision-preview\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n" + }, + "router": { + "type": "string", + "default": "openrouter", + "description": "Router to use: openai or openrouter" + }, + "mode": { + "type": "string", + "enum": [ + "completion", + "tools", + "assistant" + ], + "default": "tools", + "description": "Chat completion mode:\n\t completion, tools, assistant.\n \u001b[32m\u001b[1mcompletion\u001b[22m\u001b[39m: no support for tools, please use --dst parameter to save the output.\n \u001b[32m\u001b[1mtools\u001b[22m\u001b[39m: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode.\n \u001b[32m\u001b[1massistant\u001b[22m\u001b[39m: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files :\n " + }, + "logLevel": { + "type": "number", + "default": 2, + "description": "Logging level for the application" + }, + "profile": { + "type": "string", + "description": "Path to profile for variables. Supports environment variables." + }, + "config": { + "type": "string", + "description": "Path to JSON configuration file (API keys). Supports environment variables." + }, + "dump": { + "type": "string", + "description": "Create a script" + }, + "preferences": { + "type": "string", + "default": "./.kbot/preferences.md", + "description": "Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables." + }, + "logs": { + "type": "string", + "default": "./.kbot", + "description": "Logging directory" + }, + "env": { + "type": "string", + "default": "default", + "description": "Environment (in profile)" + }, + "variables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "filters": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "JSON", + "JSONUnescape", + "JSONPretty", + "AlphaSort", + "code", + "JSONParse", + "trim" + ] + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array" + } + ], + "default": "", + "description": "List of filters to apply to the output.\n Used only in completion mode and a given output file specified with --dst. \n It unwraps by default any code or data in Markdown. \n Choices:\n\tJSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim\n" + }, + "dry": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Dry run - only write out parameters without making API calls" + } + }, + "additionalProperties": true, + "description": "IKBotOptions" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +}; + + +const formData = { + title: 'First task', + done: true, +}; + +const Application: React.FC = () => { + const [counter, setCounter] = useState(0); + const [darkTheme, setDarkTheme] = useState(true); + const [versions, setVersions] = useState>({}); + + /** + * On component mount + */ + useEffect(() => { + const useDarkTheme = parseInt(localStorage.getItem('dark-mode')); + if (isNaN(useDarkTheme)) { + setDarkTheme(true); + } else if (useDarkTheme == 1) { + setDarkTheme(true); + } else if (useDarkTheme == 0) { + setDarkTheme(false); + } + + // Apply verisons + const app = document.getElementById('app'); + const versions = JSON.parse(app.getAttribute('data-versions')); + setVersions(versions); + }, []); + + /** + * On Dark theme change + */ + useEffect(() => { + if (darkTheme) { + localStorage.setItem('dark-mode', '1'); + document.body.classList.add('dark-mode'); + } else { + localStorage.setItem('dark-mode', '0'); + document.body.classList.remove('dark-mode'); + } + }, [darkTheme]); + + /** + * Toggle Theme + */ + function toggleTheme() { + setDarkTheme(!darkTheme); + } + + return ( +
+
+
+

ERWT - Electron Boilerplate

+
+
+ +
+ +
+
+ +       + +       + +
+
+
+ ); +}; + +export default Application; diff --git a/packages/kbot/extensions/gui/src/renderer/components/icons.ts b/packages/kbot/extensions/gui/src/renderer/components/icons.ts new file mode 100644 index 00000000..1a3cfdb8 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/components/icons.ts @@ -0,0 +1,19 @@ +import chrome from '@assets/icons/chrome.png'; +import react from '@assets/icons/react.png'; +import typescript from '@assets/icons/typescript.png'; +import erwt from '@assets/icons/erwt.png'; +import electron from '@assets/icons/electron.png'; +import nodejs from '@assets/icons/nodejs.png'; +import webpack from '@assets/icons/webpack.png'; +import license from '@assets/icons/license.png'; + +export default { + chrome, + react, + typescript, + erwt, + electron, + nodejs, + webpack, + license, +}; diff --git a/packages/kbot/extensions/gui/src/renderer/styles/app.scss b/packages/kbot/extensions/gui/src/renderer/styles/app.scss new file mode 100644 index 00000000..f7b60100 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/styles/app.scss @@ -0,0 +1,358 @@ +/** + * Licensed under the MIT License. See LICENSE file in the project root for license information. + * Copyright (c) 2022 Codesbiome, guasam + * + * @author : guasam + * @project : ERWT Boilerplate + * @package : Application Sass Stylesheet +*/ + +@import './dark_theme.scss'; +@import './light_theme.scss'; + +/** + *========================================================================== + * Application Specific Stylesheet + *========================================================================== + * + * Here we use the codes to apply application specific style + */ + +::selection { + background: var(--selection-bgcolor); + color: var(--selection-color); +} + +::-webkit-scrollbar { + width: var(--scroll-width); + + &-track { + background: var(--scroll-track-bgcolor); + } + + &-thumb { + background: var(--scroll-thumb-bgcolor); + } + + &-thumb:hover { + background: var(--scroll-thumb-hover-bgcolor); + } +} + +html, +body, +#app { + height: 100%; +} + +body { + margin: 0; + font-size: var(--app-font-size); + font-family: var(--app-font-family); + color: var(--app-color); + background: var(--app-bgcolor); + line-height: 1.5; +} + +/* Grid texture */ +body { + background-size: 32px 32px; + background-image: + linear-gradient(to right, #7070700d 1px, transparent 1px), + linear-gradient(to bottom, #7070700d 1px, transparent 1px); +} + +h1 { + margin: 0; +} + +#app { + display: flex; + flex-direction: column; + box-sizing: border-box; + user-select: none; + + &.has-border { + border: var(--app-border-color); + } +} + +button { + background: var(--button-bgcolor); + color: var(--button-color); + font-weight: normal; + text-shadow: 0px 1px var(--button-shadow-color); + font-family: var(--app-font-family); + border: var(--button-border); + padding: 0.5rem 1rem; + border-radius: 6px; + font-size: 0.875rem; + cursor: pointer; + display: inline-flex; + justify-content: space-around; + align-items: center; + outline: none; + min-width: 140px; + + &:hover { + background: var(--button-hover-bgcolor); + } + + &:active { + background: var(--button-active-bgcolor); + } + + &>span { + color: var(--button-badge-color); + background-color: var(--button-badge-bgcolor); + font-size: 12px; + width: 24px; + height: 24px; + border-radius: 50%; + display: inline-flex; + align-items: center; + justify-content: center; + display: none; + } + + img { + width: 22px; + opacity: 0.8; + } +} + +.rotate { + animation: rotate 4.5s linear infinite; +} + +@keyframes rotate { + to { + transform: rotate(360deg); + } +} + +.main-heading { + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 2rem; + + img { + margin-right: 1rem; + } + + h1 { + font-size: 1.5rem; + font-weight: 400; + color: var(--erwt-heading-color); + line-height: 1; + text-transform: uppercase; + } +} + +.hidden { + display: none !important; +} + +.center { + text-align: center; +} + +.main-teaser { + position: relative; + display: flex; + line-height: 25px; + font-size: 14px; + color: #d8d8d894; + width: 60%; + margin: 0 auto; + margin-bottom: 3rem; + justify-content: center; + padding: 1rem; + padding-right: 1rem; + border-radius: 0 0 8px 8px; + box-shadow: 0 8px 10px 0px rgba(0, 0, 0, 0.01); +} + +.main-teaser:after { + content: ""; + position: absolute; + top: 0; + width: calc(100% + 40px); + height: 1px; + background: var(--app-accent-color); + left: -20px; + box-shadow: 0 10px 20px 1px rgb(0 0 0 / 85%); + border-radius: 8px; +} + +.versions { + display: flex; + justify-content: space-between; + gap: 1rem; + flex-wrap: wrap; + border-radius: 10px; + box-shadow: 0 0 20px inset rgb(0 0 0 / 3%); + width: 80%; + margin: 0 auto; +} + +.versions .item { + background: #0000003b; + color: #d1d1d1; + width: calc(50% - 1rem); + padding: 6px 12px; + display: flex; + justify-content: space-between; + font-size: 14px; + margin: 0; + box-sizing: border-box; + border-radius: 4px; + + &>* { + display: flex; + } + + &-icon { + width: 20px; + height: 20px; + margin-right: 10px; + opacity: 0.8; + } + + &>span { + color: gray; + text-align: right; + } +} + +#erwt { + // user-select: none; + display: flex; + flex-direction: column; + height: 100%; + justify-content: space-between; + background: var(--erwt-gradient); + + .header { + padding: 4rem 2rem 0rem 2rem; + max-width: 700px; + margin: 0 auto; + } + + .footer { + padding: 2rem; + background: var(--app-footer-bgColor); + padding-bottom: 3rem; + } +} + +/** + *========================================================================== + * Titlebar Overrides for different themes + *========================================================================== + */ + +.window-titlebar { + background: var(--titlebar-bgcolor); + height: auto; + overflow: hidden; + + &-icon { + min-height: 33px; + + img { + border-radius: 50%; + } + } + + .window-title { + color: var(--titlebar-title-color); + } + + .menu-item { + &.active .menu-title { + background: var(--titlebar-menu-title-active-bgcolor); + box-shadow: var(--titlebar-menu-title-shadow); + color: var(--titlebar-color); + border-color: var(--titlebar-menu-title-active-border-color); + border-radius: 4px 4px 0 0; + border-top-color: var(--app-accent-color); + } + } + + .menu-title { + font-weight: normal; + text-shadow: none; + color: var(--titlebar-color); + border-color: transparent; + border-width: 1px 1px 0 1px; + border-style: solid; + padding: 2px 8px; + margin-right: 2px; + border-radius: 4px; + + &:hover { + background-color: var(--titlebar-menu-title-hover-bgcolor); + } + } + + .menu-popup { + display: none; + position: fixed; + background-color: var(--titlebar-popup-bgcolor); + min-width: 70px; + border: var(--titlebar-popup-border); + border-top: 0; + padding: 0.25rem 0; + box-shadow: 4px 10px 10px #0000002e; + z-index: 10000; + border-radius: 0 6px 6px 6px; + + &-item { + padding: 0.3125rem 1rem; + + &:hover { + background: var(--titlebar-popup-item-hover-bgcolor); + + .popup-item-shortcut { + color: var(--titlebar-popup-item-hover-shortcut-color); + } + + .popup-item-name { + color: var(--titlebar-popup-item-hover-color); + } + } + } + } + + .popup-item-separator { + background: var(--titlebar-menu-separator-bgcolor); + } + + .popup-item-name { + padding-right: 2rem; + color: var(--titlebar-popup-item-name-color); + text-shadow: 0px 1px var(--titlebar-popup-item-name-shadow-color); + } + + .popup-item-shortcut { + color: var(--titlebar-popup-item-shortcut-color); + text-shadow: none; + letter-spacing: 0.5px; + } + + &-controls.type-windows .control { + color: var(--titlebar-color); + font-family: Arial, Helvetica, sans-serif; + + &:hover { + color: var(--titlebar-color); + background: var(--titlebar-popup-item-hover-bgcolor); + } + + &.close:hover { + color: #fff; + } + } +} \ No newline at end of file diff --git a/packages/kbot/extensions/gui/src/renderer/styles/dark_theme.scss b/packages/kbot/extensions/gui/src/renderer/styles/dark_theme.scss new file mode 100644 index 00000000..edb6e2b0 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/styles/dark_theme.scss @@ -0,0 +1,57 @@ +/* + *========================================================================= + * ERWT Dark Theme + *========================================================================= + * + * Here we define the Dark Theme (stylesheet) for application. + */ + +:root { + // Application + --app-accent-color: #27954f; + --app-font-size: 16px; + --app-font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', + Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + --app-bgcolor: #1d1d1d; + --app-border-color: #3b3f44; + + // Scrollbar + --scroll-width: 10px; + --scroll-track-bgcolor: #2f2f2f52; + --scroll-thumb-bgcolor: rgba(59, 59, 59, 0.747); + --scroll-thumb-hover-bgcolor: #555; + + // Selection + --selection-bgcolor: var(--app-accent-color); + --selection-color: #fff; + + // Button + --button-color: #fff; + --button-border: 1px solid #222424; + --button-bgcolor: hsl(0, 0%, 22%); + --button-hover-bgcolor: hsl(0, 0%, 24%); + --button-active-bgcolor: hsl(0deg 0% 20%); + --button-shadow-color: #00000078; + + // Titlebar + --titlebar-bgcolor: #252525; + --titlebar-color: hsl(0, 0%, 85%); + --titlebar-title-color: hsl(0, 0%, 85%); + --titlebar-menu-border-color: #2d2c2c; + --titlebar-menu-title-hover-bgcolor: hsl(0deg 0% 12%); + --titlebar-menu-title-active-bgcolor: #1e1e1e; + --titlebar-menu-title-active-border-color: var(--titlebar-menu-border-color); + --titlebar-menu-separator-bgcolor: var(--titlebar-menu-border-color); + --titlebar-popup-bgcolor: #1e1e1e; + --titlebar-popup-border: 1px solid var(--titlebar-menu-border-color); + --titlebar-popup-shadow: 4px 10px 10px rgba(0, 0, 0, 0.2); + --titlebar-popup-item-name-color: hsl(0, 0%, 75%); + --titlebar-popup-item-shortcut-color: hsla(0, 0%, 55%, 0.8); + --titlebar-popup-item-hover-color: hsl(0, 0%, 85%); + --titlebar-popup-item-hover-bgcolor: hsl(0 0% 16.22%); + --titlebar-popup-item-hover-shortcut-color: var(--app-accent-color); + --titlebar-popup-item-name-shadow-color: #151515; + + // ERWT + --erwt-heading-color: #ddddddec; +} \ No newline at end of file diff --git a/packages/kbot/extensions/gui/src/renderer/styles/light_theme.scss b/packages/kbot/extensions/gui/src/renderer/styles/light_theme.scss new file mode 100644 index 00000000..291a974a --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/styles/light_theme.scss @@ -0,0 +1,67 @@ +/* + *========================================================================= + * ERWT Light Theme + *========================================================================= + * + * Light theme for ERWT application. + */ + +body:not(.dark-mode) { + // Application + --app-accent-color: #27954f; + --app-bgcolor: #e2e2e2; + + // Selection + --selection-bgcolor: var(--app-accent-color); + --selection-color: #fff; + + // Scrollbar + --scroll-track-bgcolor: #2f2f2f1f; + --scroll-thumb-bgcolor: rgb(59 59 59 / 30%); + --scroll-thumb-hover-bgcolor: var(--app-accent-color); + + // Button + --button-border: 1px solid #eaeaea; + --button-bgcolor: #fff; + --button-color: #424242; + --button-shadow-color: white; + --button-hover-bgcolor: hsl(0, 0%, 98%); + --button-active-bgcolor: hsl(0, 0%, 96%); + + // Titlebar + --titlebar-bgcolor: #d5d5d5c4; + --titlebar-color: #1f1f1f; + --titlebar-title-color: var(--titlebar-color); + --titlebar-menu-title-hover-bgcolor: #e6e6e69e; + --titlebar-popup-bgcolor: hsl(0deg 0% 99%); + --titlebar-menu-title-active-bgcolor: hsl(0deg 0% 99%); + --titlebar-menu-title-active-border-color: #d3d6d8; + --titlebar-popup-border: 1px solid #d3d6d8; + --titlebar-menu-separator-bgcolor: #d3d6d8; + --titlebar-popup-item-name-color: #0e0e0e; + --titlebar-popup-item-name-shadow-color: rgba(255, 255, 255, 0.8); + --titlebar-popup-item-hover-color: #000000; + --titlebar-popup-item-hover-shortcut-color: var(--app-accent-color); + --titlebar-popup-item-hover-bgcolor: #d6dadea2; + + // ERWT + --erwt-heading-color: #282828; + + // Overrides + .main-teaser { + color: #2e2e2e; + + &:after { + box-shadow: none; + } + } + + .versions .item { + color: #656565; + background: #ffffff5e; + + &>span { + color: #999999; + } + } +} \ No newline at end of file diff --git a/packages/kbot/extensions/gui/src/renderer/window/ControlButton.tsx b/packages/kbot/extensions/gui/src/renderer/window/ControlButton.tsx new file mode 100644 index 00000000..47444338 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/window/ControlButton.tsx @@ -0,0 +1,33 @@ +import classNames from 'classnames'; +import React from 'react'; + +interface IControlButtonProps { + readonly name: string; + readonly path: string; + readonly title: string; +} + +const ControlButton: React.FC< + IControlButtonProps & React.HTMLAttributes +> = (props) => { + const { name, path, title, ...rest } = props; + const { onClick } = rest; + + const className = classNames('control', name); + + return ( +
+ +
+ ); +}; + +export default ControlButton; diff --git a/packages/kbot/extensions/gui/src/renderer/window/LICENSE b/packages/kbot/extensions/gui/src/renderer/window/LICENSE new file mode 100644 index 00000000..56bb0ec1 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/window/LICENSE @@ -0,0 +1,16 @@ +Copyright (c) 2021-2022 Guasam + +This software is provided "as-is", without any express or implied warranty. In no event +will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial +applications, and to alter it and redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you +wrote the original software. If you use this software in a product, an acknowledgment +in the product documentation would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be misrepresented +as being the original software. + +3. This notice may not be removed or altered from any source distribution. \ No newline at end of file diff --git a/packages/kbot/extensions/gui/src/renderer/window/Titlebar.tsx b/packages/kbot/extensions/gui/src/renderer/window/Titlebar.tsx new file mode 100644 index 00000000..1bbe1dd8 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/window/Titlebar.tsx @@ -0,0 +1,196 @@ +/** + * Copyright (c) 2021, Guasam + * + * This software is provided "as-is", without any express or implied warranty. In no event + * will the authors be held liable for any damages arising from the use of this software. + * Read the LICENSE file for more details. + * + * @author : guasam + * @project : Electron Window + * @package : Window Titlebar (Component) + */ + +import React, { createRef, useContext, useEffect, useRef, useState } from 'react'; +import titlebarMenus from '@main/window/titlebarMenus'; +import classNames from 'classnames'; +import WindowControls from './WindowControls'; +import context from '@main/window/titlebarContextApi'; +import { WindowContext } from './WindowFrame'; +import './titlebar.scss'; + +type Props = { + title: string; + mode: 'centered-title'; + icon?: string; +}; + +const Titlebar: React.FC = (props) => { + const activeMenuIndex = useRef(null); + const menusRef = titlebarMenus.map(() => createRef()); + const [menusVisible, setMenusVisible] = useState(true); + const windowContext = useContext(WindowContext); + + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.repeat) return; // Prevent repeatation of toggle when key holding + if (e.altKey) { + // Hiding menus? close active menu popup + if (menusVisible) { + closeActiveMenu(); + } + setMenusVisible(!menusVisible); + } + }; + + document.addEventListener('keydown', handleKeyDown); + + return () => { + document.removeEventListener('keydown', handleKeyDown); + }; + }, [menusVisible, menusRef]); + + useEffect(() => { + function handleClickOutside(event: MouseEvent) { + if (activeMenuIndex.current != null) { + if ( + menusRef[activeMenuIndex.current].current && + !menusRef[activeMenuIndex.current].current?.contains(event.target as Node) + ) { + // console.log('You clicked outside of me!'); + closeActiveMenu(); + } + } + } + + if (activeMenuIndex != null) { + document.addEventListener('mousedown', handleClickOutside); + // console.log('added event'); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + // console.log('remove event'); + }; + }, [activeMenuIndex, menusRef]); + + function showMenu(index: number, e: React.MouseEvent) { + e.stopPropagation(); + e.preventDefault(); + + if (menusRef[index].current?.classList.contains('active')) { + // close.. + closeActiveMenu(); + } else { + // open.. + menusRef[index].current?.classList.add('active'); + activeMenuIndex.current = index; + menusRef[index].current?.parentElement?.classList.add('active'); + } + } + + function onMenuHover(index: number) { + if (activeMenuIndex.current != null) { + menusRef[activeMenuIndex.current].current?.classList.toggle('active'); + menusRef[index].current?.classList.toggle('active'); + menusRef[index].current?.parentElement?.classList.toggle('active'); + menusRef[activeMenuIndex.current].current?.parentElement?.classList.toggle( + 'active', + ); + + activeMenuIndex.current = index; + } + } + + function closeActiveMenu() { + if (activeMenuIndex.current != null) { + menusRef[activeMenuIndex.current].current?.classList.remove('active'); + menusRef[activeMenuIndex.current]?.current?.parentElement?.classList.remove('active'); + activeMenuIndex.current = null; + } + } + + function handleAction(action?: string, value?: string | number) { + closeActiveMenu(); + const c: Record = context; + if (action) { + if (typeof c[action] === 'function') { + c[action](value); + } else { + console.log(`action [${action}] is not available in titlebar context`); + } + } + } + + return ( +
+ {props.icon ? ( +
+ titlebar icon +
+ ) : ( + '' + )} + +
+ {menusVisible ? '' :
{props.title}
} +
+ +
+ {titlebarMenus.map((item, menuIndex) => { + return ( +
+
showMenu(menuIndex, e)} + onMouseEnter={() => onMenuHover(menuIndex)} + onMouseDown={(e) => e.preventDefault()} + > + {item.name} +
+
+ {item.items?.map((menuItem, menuItemIndex) => { + if (menuItem.name === '__') { + return ( +
+ ); + } + + return ( +
+ handleAction(menuItem.action, menuItem.value) + } + onMouseDown={(e) => e.preventDefault()} + > +
{menuItem.name}
+
+ {menuItem.shortcut} +
+
+ ); + })} +
+
+ ); + })} +
+ + +
+ ); +}; + +export default Titlebar; diff --git a/packages/kbot/extensions/gui/src/renderer/window/WindowControls.tsx b/packages/kbot/extensions/gui/src/renderer/window/WindowControls.tsx new file mode 100644 index 00000000..2f97e4a8 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/window/WindowControls.tsx @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2021, Guasam + * + * This software is provided "as-is", without any express or implied warranty. In no event + * will the authors be held liable for any damages arising from the use of this software. + * Read the LICENSE file for more details. + * + * @author : guasam + * @project : Electron Window + * @package : Window Controls - Close, Minimize, Maximize (Component) + */ + +import classNames from 'classnames'; +import React from 'react'; +import context from '@main/window/titlebarContextApi'; + +import ControlButton from './ControlButton'; + +type Props = { + platform: string; + tooltips?: boolean; +}; + +const closePath = + 'M 0,0 0,0.7 4.3,5 0,9.3 0,10 0.7,10 5,5.7 9.3,10 10,10 10,9.3 5.7,5 10,0.7 10,0 9.3,0 5,4.3 0.7,0 Z'; +const maximizePath = 'M 0,0 0,10 10,10 10,0 Z M 1,1 9,1 9,9 1,9 Z'; +const minimizePath = 'M 0,5 10,5 10,6 0,6 Z'; + +const WindowControls: React.FC = (props) => { + return ( +
+ context.minimize()} + path={minimizePath} + title={props.tooltips ? 'Minimize' : null} + /> + context.toggle_maximize()} + path={maximizePath} + title={props.tooltips ? 'Maximize' : null} + /> + context.exit()} + path={closePath} + title={props.tooltips ? 'Close' : null} + /> +
+ ); +}; + +export default WindowControls; diff --git a/packages/kbot/extensions/gui/src/renderer/window/WindowFrame.tsx b/packages/kbot/extensions/gui/src/renderer/window/WindowFrame.tsx new file mode 100644 index 00000000..d809c638 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/window/WindowFrame.tsx @@ -0,0 +1,62 @@ +/** + * Copyright (c) 2021, Guasam + * + * This software is provided "as-is", without any express or implied warranty. In no event + * will the authors be held liable for any damages arising from the use of this software. + * Read the LICENSE file for more details. + * + * @author : guasam + * @project : Electron Window + * @package : Window Frame (Component) + */ + +import React, { useEffect, useRef } from 'react'; +import Titlebar from './Titlebar'; +import logo from '@assets/images/logo.png'; + +type Props = { + title?: string; + borderColor?: string; + platform: 'windows' | 'mac'; + children: React.ReactNode; +}; + +type Context = { + platform: 'windows' | 'mac'; +}; + +export const WindowContext = React.createContext({ + platform: 'windows', +}); + +const WindowFrame: React.FC = (props) => { + const itsRef = useRef(null); + + useEffect(() => { + const { parentElement } = itsRef.current; + parentElement.classList.add('has-electron-window'); + parentElement.classList.add('has-border'); + + // Apply border color if prop given + if (props.borderColor) { + parentElement.style.borderColor = props.borderColor; + } + }, []); + + return ( + + {/* Reference creator */} +
+ {/* Window Titlebar */} + + {/* Window Content (Application to render) */} +
{props.children}
+
+ ); +}; + +export default WindowFrame; diff --git a/packages/kbot/extensions/gui/src/renderer/window/schema.json b/packages/kbot/extensions/gui/src/renderer/window/schema.json new file mode 100644 index 00000000..03c20337 --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/window/schema.json @@ -0,0 +1,182 @@ +[ + { + "$ref": "#/definitions/kbot", + "definitions": { + "kbot": { + "type": "object", + "properties": { + "path": { + "type": "string", + "minLength": 1, + "default": ".", + "description": "Target directory" + }, + "prompt": { + "type": "string", + "description": "The prompt. Supports file paths and environment variables.", + "default": "./prompt.md" + }, + "output": { + "type": "string", + "description": "Optional output path for modified files (Tool mode only)" + }, + "dst": { + "type": "string", + "description": "Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for \"completion\" mode" + }, + "each": { + "type": "string", + "description": "Glob pattern to run for each matching file" + }, + "disable": { + "type": "array", + "items": { + "type": "string" + }, + "default": [], + "description": "Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user" + }, + "disableTools": { + "type": "array", + "items": { + "type": "string" + }, + "default": [], + "description": "List of specific tools to disable" + }, + "tools": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "fs", + "git", + "interact", + "terminal", + "search", + "web", + "email", + "user" + ], + "description": "List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user" + }, + "include": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json" + }, + "model": { + "type": "string", + "default": "anthropic/claude-3.5-sonnet", + "description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-instruct | paid\njondurbin/airoboros-l2-70b | paid\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\nopenrouter/auto | paid\ncohere/command | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndatabricks/dbrx-instruct | paid\ndeepseek/deepseek-chat-v2.5 | paid\ndeepseek/deepseek-chat | paid\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-2.0-flash-thinking-exp:free | free\ngoogle/gemini-exp-1114:free | free\ngoogle/gemini-exp-1121:free | free\ngoogle/gemini-exp-1206:free | free\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-flash-1.5-exp | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-pro | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-pro-1.5-exp | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflatebot/mn-mag-mell-r1 | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nliquid/lfm-40b | paid\nlizpreciatior/lzlv-70b-fp16-hf | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-70b-instruct:nitro | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3-8b-instruct:extended | paid\nmeta-llama/llama-3-8b-instruct:free | free\nmeta-llama/llama-3-8b-instruct:nitro | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-405b-instruct:free | free\nmeta-llama/llama-3.1-405b-instruct:nitro | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct:free | free\nmeta-llama/llama-3.1-70b-instruct:nitro | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.2-90b-vision-instruct:free | free\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct:free | free\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct:free | free\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct:nitro | paid\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/mixtral-8x7b-instruct:nitro | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\ngryphe/mythomax-l2-13b | paid\ngryphe/mythomax-l2-13b:extended | paid\ngryphe/mythomax-l2-13b:free | free\ngryphe/mythomax-l2-13b:nitro | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenchat/openchat-7b | paid\nopenchat/openchat-7b:free | free\nteknium/openhermes-2.5-mistral-7b | paid\nperplexity/llama-3.1-sonar-huge-128k-online | paid\nperplexity/llama-3.1-sonar-large-128k-chat | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-chat | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/llama-3-sonar-large-32k-chat | paid\nperplexity/llama-3-sonar-large-32k-online | paid\nperplexity/llama-3-sonar-small-32k-chat | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-2-7b-instruct | paid\nqwen/qwen-2-7b-instruct:free | free\nqwen/qvq-72b-preview | paid\nqwen/qwq-32b-preview | paid\nqwen/qwen-2-vl-72b-instruct | paid\nqwen/qwen-2-vl-7b-instruct | paid\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct | paid\nundi95/remm-slerp-l2-13b | paid\nundi95/remm-slerp-l2-13b:extended | paid\nthedrummer/rocinante-12b | paid\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-70b-hanami-x1 | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nraifle/sorcererlm-8x22b | paid\nundi95/toppy-m-7b | paid\nundi95/toppy-m-7b:free | free\nundi95/toppy-m-7b:nitro | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\nxwin-lm/xwin-lm-70b | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-1106-vision-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4-vision-preview\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n" + }, + "router": { + "type": "string", + "default": "openrouter", + "description": "Router to use: openai or openrouter" + }, + "mode": { + "type": "string", + "enum": [ + "completion", + "tools", + "assistant" + ], + "default": "tools", + "description": "Chat completion mode:\n\t completion, tools, assistant.\n \u001b[32m\u001b[1mcompletion\u001b[22m\u001b[39m: no support for tools, please use --dst parameter to save the output.\n \u001b[32m\u001b[1mtools\u001b[22m\u001b[39m: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode.\n \u001b[32m\u001b[1massistant\u001b[22m\u001b[39m: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files :\n " + }, + "logLevel": { + "type": "number", + "default": 2, + "description": "Logging level for the application" + }, + "profile": { + "type": "string", + "description": "Path to profile for variables. Supports environment variables." + }, + "config": { + "type": "string", + "description": "Path to JSON configuration file (API keys). Supports environment variables." + }, + "dump": { + "type": "string", + "description": "Create a script" + }, + "preferences": { + "type": "string", + "default": "./.kbot/preferences.md", + "description": "Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables." + }, + "logs": { + "type": "string", + "default": "./.kbot", + "description": "Logging directory" + }, + "env": { + "type": "string", + "default": "default", + "description": "Environment (in profile)" + }, + "variables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "filters": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "JSON", + "JSONUnescape", + "JSONPretty", + "AlphaSort", + "code", + "JSONParse", + "trim" + ] + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array" + } + ], + "default": "", + "description": "List of filters to apply to the output.\n Used only in completion mode and a given output file specified with --dst. \n It unwraps by default any code or data in Markdown. \n Choices:\n\tJSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim\n" + }, + "dry": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ], + "default": false, + "description": "Dry run - only write out parameters without making API calls" + } + }, + "additionalProperties": true, + "description": "IKBotOptions" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" + } +] \ No newline at end of file diff --git a/packages/kbot/extensions/gui/src/renderer/window/schema_ui.json b/packages/kbot/extensions/gui/src/renderer/window/schema_ui.json new file mode 100644 index 00000000..deb26b7e --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/window/schema_ui.json @@ -0,0 +1,122 @@ +{ + "ui:submitButtonOptions": { + "props": { + "disabled": false, + "className": "btn btn-info" + }, + "norender": false, + "submitText": "Submit" + }, + "path": { + "ui:description": "Target directory", + "ui:title": "Path", + "ui:placeholder": ".", + "ui:widget": "file" + }, + "prompt": { + "ui:description": "The prompt. Supports file paths and environment variables.", + "ui:title": "Prompt", + "ui:placeholder": "./prompt.md" + }, + "output": { + "ui:description": "Optional output path for modified files (Tool mode only)", + "ui:title": "Output" + }, + "dst": { + "ui:description": "Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for \"completion\" mode", + "ui:title": "Dst" + }, + "each": { + "ui:description": "Glob pattern to run for each matching file", + "ui:title": "Each" + }, + "disable": { + "ui:description": "Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user", + "ui:title": "Disable", + "ui:placeholder": [] + }, + "disableTools": { + "ui:description": "List of specific tools to disable", + "ui:title": "Disabletools", + "ui:placeholder": [] + }, + "tools": { + "ui:description": "List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user", + "ui:title": "Tools", + "ui:placeholder": [ + "fs", + "git", + "interact", + "terminal", + "search", + "web", + "email", + "user" + ] + }, + "include": { + "ui:description": "Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json", + "ui:title": "Include" + }, + "model": { + "ui:description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-instruct | paid\njondurbin/airoboros-l2-70b | paid\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\nopenrouter/auto | paid\ncohere/command | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndatabricks/dbrx-instruct | paid\ndeepseek/deepseek-chat-v2.5 | paid\ndeepseek/deepseek-chat | paid\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-2.0-flash-thinking-exp:free | free\ngoogle/gemini-exp-1114:free | free\ngoogle/gemini-exp-1121:free | free\ngoogle/gemini-exp-1206:free | free\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-flash-1.5-exp | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-pro | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-pro-1.5-exp | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflatebot/mn-mag-mell-r1 | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nliquid/lfm-40b | paid\nlizpreciatior/lzlv-70b-fp16-hf | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-70b-instruct:nitro | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3-8b-instruct:extended | paid\nmeta-llama/llama-3-8b-instruct:free | free\nmeta-llama/llama-3-8b-instruct:nitro | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-405b-instruct:free | free\nmeta-llama/llama-3.1-405b-instruct:nitro | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct:free | free\nmeta-llama/llama-3.1-70b-instruct:nitro | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.2-90b-vision-instruct:free | free\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct:free | free\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct:free | free\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct:nitro | paid\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/mixtral-8x7b-instruct:nitro | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\ngryphe/mythomax-l2-13b | paid\ngryphe/mythomax-l2-13b:extended | paid\ngryphe/mythomax-l2-13b:free | free\ngryphe/mythomax-l2-13b:nitro | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenchat/openchat-7b | paid\nopenchat/openchat-7b:free | free\nteknium/openhermes-2.5-mistral-7b | paid\nperplexity/llama-3.1-sonar-huge-128k-online | paid\nperplexity/llama-3.1-sonar-large-128k-chat | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-chat | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/llama-3-sonar-large-32k-chat | paid\nperplexity/llama-3-sonar-large-32k-online | paid\nperplexity/llama-3-sonar-small-32k-chat | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-2-7b-instruct | paid\nqwen/qwen-2-7b-instruct:free | free\nqwen/qvq-72b-preview | paid\nqwen/qwq-32b-preview | paid\nqwen/qwen-2-vl-72b-instruct | paid\nqwen/qwen-2-vl-7b-instruct | paid\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct | paid\nundi95/remm-slerp-l2-13b | paid\nundi95/remm-slerp-l2-13b:extended | paid\nthedrummer/rocinante-12b | paid\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-70b-hanami-x1 | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nraifle/sorcererlm-8x22b | paid\nundi95/toppy-m-7b | paid\nundi95/toppy-m-7b:free | free\nundi95/toppy-m-7b:nitro | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\nxwin-lm/xwin-lm-70b | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-1106-vision-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4-vision-preview\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n", + "ui:title": "Model", + "ui:placeholder": "anthropic/claude-3.5-sonnet" + }, + "router": { + "ui:description": "Router to use: openai or openrouter", + "ui:title": "Router", + "ui:placeholder": "openrouter" + }, + "mode": { + "ui:description": "Chat completion mode:\n\t completion, tools, assistant.\n \u001b[32m\u001b[1mcompletion\u001b[22m\u001b[39m: no support for tools, please use --dst parameter to save the output.\n \u001b[32m\u001b[1mtools\u001b[22m\u001b[39m: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode.\n \u001b[32m\u001b[1massistant\u001b[22m\u001b[39m: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files :\n ", + "ui:title": "Mode", + "ui:placeholder": "tools" + }, + "logLevel": { + "ui:description": "Logging level for the application", + "ui:title": "Loglevel", + "ui:placeholder": 2 + }, + "profile": { + "ui:description": "Path to profile for variables. Supports environment variables.", + "ui:title": "Profile" + }, + "config": { + "ui:description": "Path to JSON configuration file (API keys). Supports environment variables.", + "ui:title": "Config" + }, + "dump": { + "ui:description": "Create a script", + "ui:title": "Dump" + }, + "preferences": { + "ui:description": "Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables.", + "ui:title": "Preferences", + "ui:placeholder": "./.kbot/preferences.md" + }, + "logs": { + "ui:description": "Logging directory", + "ui:title": "Logs", + "ui:placeholder": "./.kbot" + }, + "env": { + "ui:description": "Environment (in profile)", + "ui:title": "Env", + "ui:placeholder": "default" + }, + "variables": { + "ui:title": "Variables", + "ui:placeholder": {} + }, + "filters": { + "ui:description": "List of filters to apply to the output.\n Used only in completion mode and a given output file specified with --dst. \n It unwraps by default any code or data in Markdown. \n Choices:\n\tJSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim\n", + "ui:title": "Filters", + "ui:placeholder": [] + }, + "dry": { + "ui:description": "Dry run - only write out parameters without making API calls", + "ui:title": "Dry", + "ui:placeholder": false + } +} \ No newline at end of file diff --git a/packages/kbot/extensions/gui/src/renderer/window/titlebar.scss b/packages/kbot/extensions/gui/src/renderer/window/titlebar.scss new file mode 100644 index 00000000..7a80c9ae --- /dev/null +++ b/packages/kbot/extensions/gui/src/renderer/window/titlebar.scss @@ -0,0 +1,211 @@ +$titlebar-baseSize: 16px; +$titlebar-height: 28px; +$titlebar-bg: #171b21; +$titlebar-iconSize: 16px; +$em: $titlebar-baseSize*1em; + +/* +|-------------------------------------------------------------------------- +| Window Titlebar +|-------------------------------------------------------------------------- +*/ + +.window-titlebar { + display: flex; + align-items: stretch; + font-size: $titlebar-baseSize; + height: $titlebar-height; + background: $titlebar-bg; + -webkit-app-region: drag; + user-select: none; + position: relative; + + &>section { + display: flex; + align-items: center; + } + + &-content { + flex: 1; + font-size: calc($titlebar-baseSize - 3px); + color: #a9b0bb; + + &.centered { + width: 100%; + height: 100%; + position: absolute; + justify-content: center; + } + } + + &-icon { + padding: 0 0.75em; + + img { + width: $titlebar-iconSize; + height: $titlebar-iconSize; + } + } + + .popup-item { + &-name { + padding-right: 2rem; + color: #d8d8d8; + } + + &-shortcut { + color: #73757c; + text-shadow: none; + } + + &-separator { + height: 1px; + background: #3c4043; + margin: 4px 0; + } + } +} + +/* +|-------------------------------------------------------------------------- +| Titlebar Menu +|-------------------------------------------------------------------------- +*/ + +.window-titlebar .menu { + flex: 1; + + &-item { + position: relative; + } + + &-item.active { + .menu-title { + background: #3c4043; + color: #bfbfbf; + } + } + + &-title { + padding: 4px 10px; + font-size: 0.8125rem; + text-shadow: 0px 1px 1px black; + -webkit-app-region: no-drag; + color: #97a0b1; + + &:hover { + background-color: #1f252c; + } + } + + &-popup { + display: none; + position: fixed; + background: #292a2d; + min-width: 70px; + border: 1px solid #3c4043; + padding: 0.25rem 0; + box-shadow: 2px 1px 4px hsla(0, 0%, 0%, 0.5); + z-index: 10000; + + &.active { + display: block; + } + + &-item { + display: flex; + justify-content: space-between; + font-size: 0.8125rem; + text-shadow: 0px 1px 1px black; + padding: 0.375rem 1rem; + + &:hover { + background: #1761cb; + + .popup-item-shortcut { + color: #8cbbff; + } + } + } + } +} + +/* +|-------------------------------------------------------------------------- +| Titlebar Controls (Max, Min, Close) +|-------------------------------------------------------------------------- +*/ + +.window-titlebar-controls { + display: flex; + align-items: stretch; + position: absolute; + right: 0; + top: 0; + bottom: 0; + color: #969799; + + &.type-windows { + .control { + padding: 0 1.15em; + font-size: 0.875em; + display: flex; + height: 100%; + align-items: center; + -webkit-app-region: no-drag; + + &.close:hover { + background: #e10000; + } + + &:hover { + background: #242d38; + color: #d8d9db; + } + } + } + + &.type-mac { + .control { + width: 16px; + height: 16px; + background: #0e0e0e99; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + margin-right: 0.675rem; + color: transparent; + -webkit-app-region: no-drag; + opacity: 0.8; + + &:hover { + opacity: 1; + } + } + + .control.close { + background: #f46d60; + } + + .control.maximize { + background: #59ca56; + } + + .control.minimize { + background: #f9c04e; + } + } +} + +/* +|-------------------------------------------------------------------------- +| Window Content +|-------------------------------------------------------------------------- +*/ + +.window-content { + position: relative; + overflow: auto; + flex: 1; +} \ No newline at end of file diff --git a/packages/kbot/extensions/gui/src/typings/index.d.ts b/packages/kbot/extensions/gui/src/typings/index.d.ts new file mode 100644 index 00000000..de67a001 --- /dev/null +++ b/packages/kbot/extensions/gui/src/typings/index.d.ts @@ -0,0 +1,4 @@ +declare module '*.css'; +declare module '*.png'; +declare module '*.jpg'; +declare module '*.jpeg'; diff --git a/packages/kbot/extensions/gui/tools/forge/forge.config.js b/packages/kbot/extensions/gui/tools/forge/forge.config.js new file mode 100644 index 00000000..c8c0832c --- /dev/null +++ b/packages/kbot/extensions/gui/tools/forge/forge.config.js @@ -0,0 +1,88 @@ +// Forge Configuration +const path = require('path'); +const rootDir = process.cwd(); + +module.exports = { + // Packager Config + packagerConfig: { + // Create asar archive for main, renderer process files + asar: true, + // Set executable name + executableName: 'ERWT', + // Set application copyright + appCopyright: 'ยฉ 2021-2024 Codesbiome, Guasam', + // Set application icon + icon: path.resolve('assets/images/appIcon.ico'), + }, + // Forge Makers + makers: [ + { + // Squirrel.Windows is a no-prompt, no-hassle, no-admin method of installing + // Windows applications and is therefore the most user friendly you can get. + name: '@electron-forge/maker-squirrel', + config: { + name: 'electron-react-typescript-webpack-2022', + }, + }, + { + // The Zip target builds basic .zip files containing your packaged application. + // There are no platform specific dependencies for using this maker and it will run on any platform. + name: '@electron-forge/maker-zip', + platforms: ['darwin'], + }, + { + // The deb target builds .deb packages, which are the standard package format for Debian-based + // Linux distributions such as Ubuntu. + name: '@electron-forge/maker-deb', + config: {}, + }, + { + // The RPM target builds .rpm files, which is the standard package format for + // RedHat-based Linux distributions such as Fedora. + name: '@electron-forge/maker-rpm', + config: {}, + }, + ], + // Forge Plugins + plugins: [ + { + name: '@electron-forge/plugin-webpack', + config: { + // Fix content-security-policy error when image or video src isn't same origin + // Remove 'unsafe-eval' to get rid of console warning in development mode. + devContentSecurityPolicy: `default-src 'self' 'unsafe-inline' data:; script-src 'self' 'unsafe-inline' data:`, + // Webpack Dev Server port + port: 3000, + // Logger port + loggerPort: 9000, + // Main process webpack configuration + mainConfig: path.join(rootDir, 'tools/webpack/webpack.main.js'), + // Renderer process webpack configuration + renderer: { + // Configuration file path + config: path.join(rootDir, 'tools/webpack/webpack.renderer.js'), + // Entrypoints of the application + entryPoints: [ + { + // Window process name + name: 'app_window', + // React Hot Module Replacement (HMR) + rhmr: 'react-hot-loader/patch', + // HTML index file template + html: path.join(rootDir, 'src/renderer/app.html'), + // App Renderer + js: path.join(rootDir, 'src/renderer/appRenderer.tsx'), + // App Preload + preload: { + js: path.join(rootDir, 'src/renderer/appPreload.tsx'), + }, + }, + ], + }, + devServer: { + liveReload: false, + }, + }, + }, + ], +}; diff --git a/packages/kbot/extensions/gui/tools/webpack/webpack.aliases.js b/packages/kbot/extensions/gui/tools/webpack/webpack.aliases.js new file mode 100644 index 00000000..be6a24ed --- /dev/null +++ b/packages/kbot/extensions/gui/tools/webpack/webpack.aliases.js @@ -0,0 +1,12 @@ +const { createWebpackAliases } = require('./webpack.helpers'); + +// Export aliases +module.exports = createWebpackAliases({ + '@assets': 'assets', + '@components': 'src/renderer/components', + '@common': 'src/common', + '@main': 'src/main', + '@renderer': 'src/renderer', + '@src': 'src', + '@styles': 'src/renderer/styles', +}); diff --git a/packages/kbot/extensions/gui/tools/webpack/webpack.helpers.js b/packages/kbot/extensions/gui/tools/webpack/webpack.helpers.js new file mode 100644 index 00000000..def6a40b --- /dev/null +++ b/packages/kbot/extensions/gui/tools/webpack/webpack.helpers.js @@ -0,0 +1,20 @@ +const path = require('path'); +const cwd = process.cwd(); + + +function inDev() { + return process.env.NODE_ENV == 'development'; +} + +function createWebpackAliases (aliases) { + const result = {}; + for (const name in aliases) { + result[name] = path.join(cwd, aliases[name]); + } + return result; +} + +module.exports = { + inDev, + createWebpackAliases, +}; diff --git a/packages/kbot/extensions/gui/tools/webpack/webpack.main.js b/packages/kbot/extensions/gui/tools/webpack/webpack.main.js new file mode 100644 index 00000000..8490d06f --- /dev/null +++ b/packages/kbot/extensions/gui/tools/webpack/webpack.main.js @@ -0,0 +1,16 @@ +module.exports = { + /** + * This is the main entry point for your application, it's the first file + * that runs in the main process. + */ + entry: ['./src/main/app.ts'], + // Put your normal webpack config below here + module: { + rules: require('./webpack.rules'), + }, + resolve: { + extensions: ['.js', '.ts', '.jsx', '.tsx', '.css', '.json'], + alias: require('./webpack.aliases'), + }, + stats: 'minimal', +}; diff --git a/packages/kbot/extensions/gui/tools/webpack/webpack.plugins.js b/packages/kbot/extensions/gui/tools/webpack/webpack.plugins.js new file mode 100644 index 00000000..a478df0a --- /dev/null +++ b/packages/kbot/extensions/gui/tools/webpack/webpack.plugins.js @@ -0,0 +1,10 @@ +const webpack = require('webpack'); +const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); +const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); +const { inDev } = require('./webpack.helpers'); + +module.exports = [ + new ForkTsCheckerWebpackPlugin(), + inDev() && new webpack.HotModuleReplacementPlugin(), + inDev() && new ReactRefreshWebpackPlugin(), +].filter(Boolean); diff --git a/packages/kbot/extensions/gui/tools/webpack/webpack.renderer.js b/packages/kbot/extensions/gui/tools/webpack/webpack.renderer.js new file mode 100644 index 00000000..6d61c92c --- /dev/null +++ b/packages/kbot/extensions/gui/tools/webpack/webpack.renderer.js @@ -0,0 +1,22 @@ +const rules = require('./webpack.rules'); +const plugins = require('./webpack.plugins'); + +module.exports = { + module: { + rules, + }, + plugins: plugins, + resolve: { + extensions: ['.js', '.ts', '.jsx', '.tsx', '.css'], + alias: { + // Custom Aliases + ...require('./webpack.aliases'), + }, + }, + stats: 'minimal', + /** + * Fix: Enable inline-source-map to fix following: + * Dev tools: unable to load source maps over custom protocol + */ + devtool: 'inline-source-map', +}; diff --git a/packages/kbot/extensions/gui/tools/webpack/webpack.rules.js b/packages/kbot/extensions/gui/tools/webpack/webpack.rules.js new file mode 100644 index 00000000..bc1e9909 --- /dev/null +++ b/packages/kbot/extensions/gui/tools/webpack/webpack.rules.js @@ -0,0 +1,51 @@ +module.exports = [ + { + // Add support for native node modules + test: /native_modules\/.+\.node$/, + use: 'node-loader', + }, + { + test: /\.(m?js|node)$/, + parser: { amd: false }, + use: { + loader: '@vercel/webpack-asset-relocator-loader', + options: { + outputAssetBase: 'native_modules', + }, + }, + }, + { + // Typescript loader + test: /\.tsx?$/, + exclude: /(node_modules|\.webpack)/, + use: { + loader: 'ts-loader', + options: { + transpileOnly: true, + }, + }, + }, + { + // CSS Loader + test: /\.css$/, + use: [{ loader: 'style-loader' }, { loader: 'css-loader' }], + }, + { + // SCSS (SASS) Loader + test: /\.s[ac]ss$/i, + use: [ + { loader: 'style-loader' }, + { loader: 'css-loader' }, + { loader: 'sass-loader' }, + ], + }, + { + // Assets loader + // More information here https://webpack.js.org/guides/asset-modules/ + test: /\.(gif|jpe?g|tiff|png|webp|bmp|svg|eot|ttf|woff|woff2)$/i, + type: 'asset', + generator: { + filename: 'assets/[hash][ext][query]', + }, + }, +]; diff --git a/packages/kbot/extensions/gui/tsconfig.json b/packages/kbot/extensions/gui/tsconfig.json new file mode 100644 index 00000000..14c76dbe --- /dev/null +++ b/packages/kbot/extensions/gui/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "jsx": "react", + "allowJs": true, + "target": "ES6", + "module": "ESNext", + "skipLibCheck": true, + "esModuleInterop": true, + "noImplicitAny": true, + "sourceMap": true, + "baseUrl": ".", + "outDir": "dist", + "moduleResolution": "node", + "resolveJsonModule": true, + "paths": { + "*": ["node_modules/*"], + "@assets/*": ["./assets/*"], + "@components/*": ["./src/renderer/components/*"], + "@common/*": ["./src/common/*"], + "@main/*": ["./src/main/*"], + "@renderer/*": ["./src/renderer/*"], + "@src/*": ["./src/*"], + "@misc/*": ["./misc/*"], + "@styles/*": ["./src/renderer/styles/*"] + } + }, + "include": ["src/**/*", "tools/**/*"] +}