From 70412eace4ede5eb7dc76a343b29bbc5f400007b Mon Sep 17 00:00:00 2001 From: dengqichen Date: Tue, 13 Aug 2024 10:18:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 9 + .env.development | 2 + .env.production | 2 + .eslintignore | 4 + .eslintrc.cjs | 10 + .npmrc | 1 + .prettierignore | 6 + .prettierrc.yaml | 4 + README.md | 1 + application.log | 594 ++ dev-app-update.yml | 3 + electron-builder.yml | 46 + electron.vite.config.ts | 25 + package.json | 62 + pnpm-lock.yaml | 5299 +++++++++++++++++ resources/icon.ico | Bin 0 -> 54210 bytes resources/icon.png | Bin 0 -> 62133 bytes src/main/index.ts | 240 + src/preload/index.d.ts | 8 + src/preload/index.ts | 34 + src/renderer/index.html | 13 + src/renderer/src/App.tsx | 78 + src/renderer/src/app.module.less | 8 + src/renderer/src/assets/app.css | 473 ++ src/renderer/src/assets/icon.ico | Bin 0 -> 54210 bytes src/renderer/src/assets/logo.png | Bin 0 -> 50771 bytes .../src/components/KBreadcrumb.module.less | 7 + src/renderer/src/components/KBreadcrumb.tsx | 13 + .../src/components/card/KDeploymentCard.tsx | 69 + .../components/card/KNamespace.module.less | 30 + .../src/components/card/KNamespace.tsx | 68 + .../src/components/card/KPodCard.module.less | 48 + src/renderer/src/components/card/KPodCard.tsx | 96 + .../src/components/card/KPods.module.less | 30 + src/renderer/src/components/card/KPods.tsx | 45 + .../src/components/logs/KLogs.module.less | 0 src/renderer/src/components/logs/KLogs.tsx | 11 + src/renderer/src/env.d.ts | 12 + src/renderer/src/main.tsx | 17 + src/renderer/src/module/Api.ts | 69 + src/renderer/src/module/Log.ts | 15 + src/renderer/src/pages/AppRouter.tsx | 42 + src/renderer/src/pages/Versions.tsx | 15 + src/renderer/src/pages/index/Dashboard.tsx | 17 + src/renderer/src/pages/k8s/K8sDeployments.tsx | 17 + .../src/pages/k8s/K8sLogs.module.less | 66 + src/renderer/src/pages/k8s/K8sLogs.tsx | 141 + src/renderer/src/pages/k8s/K8sPodList.tsx | 75 + src/renderer/src/pages/k8s/K8sPods.tsx | 21 + src/renderer/src/pages/menu/AppMenu.tsx | 47 + src/renderer/src/response/K8sDeployment.ts | 61 + src/renderer/src/response/K8sNamespace.ts | 18 + src/renderer/src/response/K8sPod.ts | 128 + src/renderer/src/router/index.ts | 83 + src/renderer/src/store/index.ts | 16 + .../src/store/reducer/GlobalReducer.ts | 38 + src/renderer/src/utils/HttpRequest.ts | 59 + src/renderer/src/utils/global.ts | 5 + src/renderer/src/utils/types.ts | 16 + src/renderer/src/utils/utils.ts | 41 + tsconfig.json | 11 + tsconfig.node.json | 14 + tsconfig.web.json | 19 + 63 files changed, 8402 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc.yaml create mode 100644 README.md create mode 100644 application.log create mode 100644 dev-app-update.yml create mode 100644 electron-builder.yml create mode 100644 electron.vite.config.ts create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 resources/icon.ico create mode 100644 resources/icon.png create mode 100644 src/main/index.ts create mode 100644 src/preload/index.d.ts create mode 100644 src/preload/index.ts create mode 100644 src/renderer/index.html create mode 100644 src/renderer/src/App.tsx create mode 100644 src/renderer/src/app.module.less create mode 100644 src/renderer/src/assets/app.css create mode 100644 src/renderer/src/assets/icon.ico create mode 100644 src/renderer/src/assets/logo.png create mode 100644 src/renderer/src/components/KBreadcrumb.module.less create mode 100644 src/renderer/src/components/KBreadcrumb.tsx create mode 100644 src/renderer/src/components/card/KDeploymentCard.tsx create mode 100644 src/renderer/src/components/card/KNamespace.module.less create mode 100644 src/renderer/src/components/card/KNamespace.tsx create mode 100644 src/renderer/src/components/card/KPodCard.module.less create mode 100644 src/renderer/src/components/card/KPodCard.tsx create mode 100644 src/renderer/src/components/card/KPods.module.less create mode 100644 src/renderer/src/components/card/KPods.tsx create mode 100644 src/renderer/src/components/logs/KLogs.module.less create mode 100644 src/renderer/src/components/logs/KLogs.tsx create mode 100644 src/renderer/src/env.d.ts create mode 100644 src/renderer/src/main.tsx create mode 100644 src/renderer/src/module/Api.ts create mode 100644 src/renderer/src/module/Log.ts create mode 100644 src/renderer/src/pages/AppRouter.tsx create mode 100644 src/renderer/src/pages/Versions.tsx create mode 100644 src/renderer/src/pages/index/Dashboard.tsx create mode 100644 src/renderer/src/pages/k8s/K8sDeployments.tsx create mode 100644 src/renderer/src/pages/k8s/K8sLogs.module.less create mode 100644 src/renderer/src/pages/k8s/K8sLogs.tsx create mode 100644 src/renderer/src/pages/k8s/K8sPodList.tsx create mode 100644 src/renderer/src/pages/k8s/K8sPods.tsx create mode 100644 src/renderer/src/pages/menu/AppMenu.tsx create mode 100644 src/renderer/src/response/K8sDeployment.ts create mode 100644 src/renderer/src/response/K8sNamespace.ts create mode 100644 src/renderer/src/response/K8sPod.ts create mode 100644 src/renderer/src/router/index.ts create mode 100644 src/renderer/src/store/index.ts create mode 100644 src/renderer/src/store/reducer/GlobalReducer.ts create mode 100644 src/renderer/src/utils/HttpRequest.ts create mode 100644 src/renderer/src/utils/global.ts create mode 100644 src/renderer/src/utils/types.ts create mode 100644 src/renderer/src/utils/utils.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 tsconfig.web.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3e10c03 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..af76382 --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +VITE_APP_NAME = 'DEV' +VITE_DEPLOY_API_BASE_URL = 'http://127.0.0.1:8081/deploy-ease/' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..8d12788 --- /dev/null +++ b/.env.production @@ -0,0 +1,2 @@ +VITE_APP_DEV = 'dev-api-prd' +VITE_DEPLOY_API_BASE_URL = 'http://devops.iscmtech.com/deploy-ease/' diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..a6f34fe --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +node_modules +dist +out +.gitignore diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..2e678a3 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,10 @@ +module.exports = { + extends: [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:react/jsx-runtime", + "@electron-toolkit/eslint-config-ts/recommended", + "@electron-toolkit/eslint-config-prettier", + "@typescript-eslint/explicit-module-boundary-types" + ] +}; diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..bf2e764 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +shamefully-hoist=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..9c6b791 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +out +dist +pnpm-lock.yaml +LICENSE.md +tsconfig.json +tsconfig.*.json diff --git a/.prettierrc.yaml b/.prettierrc.yaml new file mode 100644 index 0000000..f99263a --- /dev/null +++ b/.prettierrc.yaml @@ -0,0 +1,4 @@ +singleQuote: false +semi: false +printWidth: 100 +trailingComma: none diff --git a/README.md b/README.md new file mode 100644 index 0000000..47bd292 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# deploy-ease-app \ No newline at end of file diff --git a/application.log b/application.log new file mode 100644 index 0000000..1bb82bd --- /dev/null +++ b/application.log @@ -0,0 +1,594 @@ +[2024-08-05T11:23:24.786] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T11:23:50.346] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T11:23:50.348] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T11:23:56.550] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T11:25:17.931] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T11:25:17.933] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T11:25:20.726] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T13:00:39.450] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T13:00:39.452] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T13:00:41.146] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T13:01:28.408] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:01:28.409] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:02:52.481] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:02:54.932] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:02:54.933] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:03:02.957] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:03:04.472] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:03:04.473] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:03:08.362] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:03:09.959] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T13:03:09.959] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T13:03:12.929] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T13:03:55.210] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:03:55.211] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:04:20.609] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:04:22.872] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:04:22.873] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:04:26.488] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:12:28.495] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:12:28.497] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:12:40.290] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:12:55.205] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:12:55.207] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:13:35.306] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:13:37.887] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:13:37.888] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:13:48.580] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:13:51.869] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:13:51.869] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:15:03.850] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:15:06.133] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:15:06.133] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:15:19.490] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:15:22.928] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:15:22.928] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:16:09.478] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm ibp-dev-backend-longi-scp-heuristic-engine-group-1-v1-backend-longi-scp-heuristic-engine-group-1-v1-9645b84cf-jcxdm +[2024-08-05T13:20:04.632] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:20:04.633] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:20:11.464] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:34:30.840] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:34:34.189] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:34:34.239] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:34:42.869] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:34:42.930] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:34:49.925] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:34:49.966] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:35:33.699] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:35:42.869] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:35:54.527] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-867c7f49d8-76m65 +[2024-08-05T13:36:20.053] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:38:08.881] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:38:38.979] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:39:14.441] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:40:12.740] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:40:12.741] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:40:13.075] [INFO] default - KubeConfig is loaded: KubeConfig { + authenticators: [ + AzureAuth {}, + GoogleCloudPlatformAuth {}, + ExecAuth { tokenCache: {}, execFn: [Function: spawnSync] }, + FileAuth { token: null, lastRead: null }, + DelayedOpenIDConnectAuth { delegate: undefined } + ], + contexts: [ + { + cluster: 'kubernetes', + name: '298101684398995518-c380e8dff45a3440b8f8dfda227eccfa6', + user: '298101684398995518', + namespace: undefined + } + ], + clusters: [ + { + caData: 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ2akNDQXRLZ0F3SUJBZ0lDRHhzd0RRWUpLb1pJaHZjTkFRRUxCUUF3YWpFcU1DZ0dBMVVFQ2hNaFl6TTQKTUdVNFpHWm1ORFZoTXpRME1HSTRaamhrWm1SaE1qSTNaV05qWm1FMk1SQXdEZ1lEVlFRTEV3ZGtaV1poZFd4MApNU293S0FZRFZRUURFeUZqTXpnd1pUaGtabVkwTldFek5EUXdZamhtT0dSbVpHRXlNamRsWTJObVlUWXdIaGNOCk1qTXdOVEU1TURJek16QXdXaGNOTkRNd05URTBNREl6T0RVMldqQnFNU293S0FZRFZRUUtFeUZqTXpnd1pUaGsKWm1ZME5XRXpORFF3WWpobU9HUm1aR0V5TWpkbFkyTm1ZVFl4RURBT0JnTlZCQXNUQjJSbFptRjFiSFF4S2pBbwpCZ05WQkFNVElXTXpPREJsT0dSbVpqUTFZVE0wTkRCaU9HWTRaR1prWVRJeU4yVmpZMlpoTmpDQ0FTSXdEUVlKCktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9FTmlzRWtSblNsSDhtRDJFUkFoS2ZWdWkyN0hTUFMKQTViT2lKdDZWNnRxVHhmTWRwR0RIMTVCbFlKL1laMFZyeERGUjVyMkJBREVkcXdsVG10NWozTFVIcXN6MnRoKwp2RzFrY0UyMmhUdFNtR05KQjhjbzA2YWNxaHV6YlhMbEZMQlc5eURNVnNENWc4RFBvZzh4QnFXZGg2NVRqeGx5ClkwZjJLeUVBS2V6YUFzc3RHV0swSDIvU2EvenZlb25GNnBJREtKcHh6SjZOSTZ5dUdlTk5hRkMwYXNTTVRJSjIKZHFGT01uWFpFdmZqTVlhU2QxWk5FdFUweUxkYzEyRDlVRmJUamxMSEZxcG9rYit2a202T0tGNi9iOUhCN0xXNgpsZFZMTFdHUkhrbS81Vmg5NTVnOVJFUUNVYVN4THpiSkwrVzlBU3puWWJlcnc0RUtpWWxjSUkwQ0F3RUFBYU9CCm1UQ0JsakFPQmdOVkhROEJBZjhFQkFNQ0Fxd3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QThCZ2dyQmdFRkJRY0IKQVFRd01DNHdMQVlJS3dZQkJRVUhNQUdHSUdoMGRIQTZMeTlqWlhKMGN5NWhZM011WVd4cGVYVnVMbU52YlM5dgpZM053TURVR0ExVWRId1F1TUN3d0txQW9vQ2FHSkdoMGRIQTZMeTlqWlhKMGN5NWhZM011WVd4cGVYVnVMbU52CmJTOXliMjkwTG1OeWJEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFNTVJOVjF0K1F6TUo5ZDlkekNDZzVULzkKQnI2T2piQVFSeHhodkVDV0JmODVOeEZUWDNYRmMzbVpkcytNeWFRRERhcUhjbzRmNGZHZ3hKRjVldmZ6cWlTZApVUVZYYktVRlFGVVgvZklnNHlDM290NWxSakw3QjR1VDJyYnI0dEhNYkUySy92ZGVUTXVBNUo0Z0pHV0IvRzBqCmtWSldYYmNJVVFDbGZzMUVQZDQ5b2VDdzBianRXOG9HSkt3S2NYYTloK1U1QytCVktTN21LNm9veUFqQ0kzRE4KNW9NS0VCdlM0aElqdFBTYjJlOE5HOWNCaGd2TXRTU2pITGRXaHpINUlrZ013dWJTUldMOEJqRDd1SzVFWmJteQpOMzNMSGFldEFIMTZQM0IvT0F0WGJWcmk2aWM2Q2lLbXBseTdhWnlGcitEeW92b2NpdjNxNFRtZVVwaHNRQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K', + caFile: undefined, + name: 'kubernetes', + server: 'https://10.201.127.46:6443', + skipTLSVerify: false, + tlsServerName: undefined + } + ], + users: [ + { + authProvider: undefined, + certData: 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQwVENDQXJtZ0F3SUJBZ0lDRDNrd0RRWUpLb1pJaHZjTkFRRUxCUUF3YWpFcU1DZ0dBMVVFQ2hNaFl6TTQKTUdVNFpHWm1ORFZoTXpRME1HSTRaamhrWm1SaE1qSTNaV05qWm1FMk1SQXdEZ1lEVlFRTEV3ZGtaV1poZFd4MApNU293S0FZRFZRUURFeUZqTXpnd1pUaGtabVkwTldFek5EUXdZamhtT0dSbVpHRXlNamRsWTJObVlUWXdIaGNOCk1qTXdOVEkwTURZME16QXdXaGNOTWpZd05USXpNRFkwT0RJMVdqQS9NUlV3RXdZRFZRUUtFd3h6ZVhOMFpXMDYKZFhObGNuTXhDVEFIQmdOVkJBc1RBREViTUJrR0ExVUVBeE1TTWprNE1UQXhOamcwTXprNE9UazFOVEU0TUlJQgpJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcU85R3YyRWJsUWt5ZFJmR2FTK0NabndVClMyZXFRaUJTL1JxRlVyRTlxR2dsYWtMS0g3aGZmMjdXZXppVTNzQWJQT2RLUEtSQWpSZy9jcnc4WTRXVTV0clAKWUZIb2IwTnoyMjVWcFl1YUlGWnhIVzRLTTlqSzM1Q0dQNmJDK3FCOXBGV0JxcDl1bkJKS0RKbFBSUUJLUDVucQpRRmx6aG0wQ2E1a2haNXovNWczeitpRlVWck1zazlJWGVDc2dFeE5kMjE1ckRHUUhKRVhkSlB2T2RpVmlJTUF4CmdtNmI5SzRHVUZnRXVWa0tROU1lNTVQQ2NuMnVYbnFZRVA1ckZZSU81SUFtVFlhV016NUJCZnZDTDZiRndocEIKMVR5UHVNWjRkWXZjZkNXVmNFQWpuZDdmMEN0aHdEL2FiYTNsT1JGbTB4UFVLSzRxY1FTM1kxYWhHaURBc1FJRApBUUFCbzRHck1JR29NQTRHQTFVZER3RUIvd1FFQXdJSGdEQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFNCkJnTlZIUk1CQWY4RUFqQUFNRHdHQ0NzR0FRVUZCd0VCQkRBd0xqQXNCZ2dyQmdFRkJRY3dBWVlnYUhSMGNEb3YKTDJObGNuUnpMbUZqY3k1aGJHbDVkVzR1WTI5dEwyOWpjM0F3TlFZRFZSMGZCQzR3TERBcW9DaWdKb1lrYUhSMApjRG92TDJObGNuUnpMbUZqY3k1aGJHbDVkVzR1WTI5dEwzSnZiM1F1WTNKc01BMEdDU3FHU0liM0RRRUJDd1VBCkE0SUJBUUNJV0VSZzFUU3IrUEg2bHh1enhTd2lEWHlGbWoxdXJZays1clhKUVZQSnVmYlF5T2ZremRIUThGWWkKSGQ5bUQxQVVKKzNGQWh1Yyt0aUFzaDZXbW5oK0s3Q1k2K0xJRWZNYm5hWlJzckQ1R1M0YjJMYWJRUE5QWXVXQQoyNjVIWWNwV1BOUE5ENFNWV1VWbGRvNi9TZmdoY2RyZG1jUERMcG56SWUzaTdKQ0NYWEJmbDNjZTdWUXU0Vk53CkVzVGQ0ZURGYTdoTlBWZ25yanVmZjBCNzZjU1hySGJkblEzdmFFcnBGUXh4elNCSnFnQTUwY0gwT21xMXRHUWEKWlZlbzBjWkRpS28rTmdnVm9xVUNtanpab0JZZjRkUmVnQXUzZ3g5eEhqVGRpY0hrRTkrdmNmS2xtRy9xZ01oRQpCbzl5WFVtc0IyUTN1b0UrRkxjZ1VTTmRodXk2Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K', + certFile: undefined, + exec: undefined, + keyData: 'LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBcU85R3YyRWJsUWt5ZFJmR2FTK0NabndVUzJlcVFpQlMvUnFGVXJFOXFHZ2xha0xLCkg3aGZmMjdXZXppVTNzQWJQT2RLUEtSQWpSZy9jcnc4WTRXVTV0clBZRkhvYjBOejIyNVZwWXVhSUZaeEhXNEsKTTlqSzM1Q0dQNmJDK3FCOXBGV0JxcDl1bkJKS0RKbFBSUUJLUDVucVFGbHpobTBDYTVraFo1ei81ZzN6K2lGVQpWck1zazlJWGVDc2dFeE5kMjE1ckRHUUhKRVhkSlB2T2RpVmlJTUF4Z202YjlLNEdVRmdFdVZrS1E5TWU1NVBDCmNuMnVYbnFZRVA1ckZZSU81SUFtVFlhV016NUJCZnZDTDZiRndocEIxVHlQdU1aNGRZdmNmQ1dWY0VBam5kN2YKMEN0aHdEL2FiYTNsT1JGbTB4UFVLSzRxY1FTM1kxYWhHaURBc1FJREFRQUJBb0lCQUFoL3FSNTlveWFYUk51UgpLNkVsQzdsZUtxTTBmdU0rdnc0T3BJQnBmRUdabzdBNTFmTk1ramxWK1NKUDBXVjNZcWRvdDFwZnBRTzBJWlVECkZVS29lTG80YmRCWnJvalNhdVN5STBybHdBWTZjd3hZK2RocjRxRG1vMnBXV0Y3RmJpeXpSSWV4NTUyZ2FldEMKVnpPUWRTdkg4WG4xUmhPUUxsdjlZeW5VUXlkdW5WZndtY0NsM2ZsVjZqY3BoaHJYNmgrNzZjOVRGQXRpUDFlWAprNXNsOVUrZzl5N3ZlbzFEY2s4eXBENnZSMlF1MldKWlZLRDQycG52Y0YrUzlEYlA4UWRFLytlZ0Y5OEhSRitmClBoMHNaa2ErQ3R5dHVOWnVXaW5hN3hBRnI0cDRndXZ2U1RXVm02enpHU3ZhSkJZRC9CSjVQVThieGQ2NGRMNlAKVXVka0d2VUNnWUVBMEc5V09WbHJ5U0ZrMnhhOXk3T0RMSm13QXlJL0J3VkF3c2VUd0VOUjIxT1MxdmV1ajFYWgozc0p3emlubEpBTCt4dm9Sem0xbWljRnlDMUhqM1VZaytPck1IM1RyOW9sWnZ0VFhSbjNZeWtjUEl3Ny9acXlsCkV1dzhrZWZBSVJFZlV5YVlCUzNvOG5DUUtyVDdyWEV2Z0lOWUJGWVFCL0dpSW93Z1NUZ2RMSnNDZ1lFQXozeGIKQWd1c1I4b0ZPWUJ0bnBNZWNXdHp2WjRqTDVyWDIwQTN2bm9qc3hlS2QxdEJ3aTEzRnZjeUI2TDZuQ1NNS24xQQp6MFVJbENGREVqZzA1SHRDc3MzOGRRNHVIUG16eXdob2NiazRBeWdYcHVqNnA2MDdYS3NuN2xiWG9PMnV6SXlKCkp5QWpid2ozejN1UWNsQmhFOXF5UnpjOXN4MUszUGtQajg5MHJxTUNnWUJwSzRScU00QjdYK292MGUyNlZyMmQKUjM3VVZmZFBaNHNodk9vRVhQTjBvMXE0TlFsVE1aSlpIK3NqVzJoUEgyUEdxbTlKcFZIVHVGUCsramJyYzNVOApVOXpqRW0vdFdhaDY3WkloODJYcnlxY01uWWlwR2Z2QTdJb3paS2hCQnc2ek9nb0Nzd09UTU5ETmU3eHg2Mlo0CmhjMW5nclZjRE1RdWdsM1lGQVJFZVFLQmdHNTJhMUZVZTUwZ3ZkVldQWVllRnlnVkorSjhyWWpyckI0TE8ySksKVG5WTGhDbDFTVFlpMUhOQ21iMGRGTVZLWStFL0crRDloTXF3UnJBTmdvTmQ2QzJmb3RlQy9DUHJBTUNJTW1yUgpURFBLQllXVUpkWmRVT3hPSncwcDZOVEJsYjFLMkw0ZXl4NlRMTE9tdWtsUjU4MFZNckxkZ3hpMzhLSmlhdG1LCmZqbDNBb0dBYTlMVDZtTm9qejc1OVB2eCtwNEJoemhRakpSQm1ITUNLdUNoTnFYTkxwTmx3MXJscHluUDFjcXgKNlhjL09iUVdrSHJEVUpUb2VyamZPS05HTkl4cUdOcDdHMm5GVWorT290UElkVEpKU1ErQVNtWU5HSlJWVUJIWQpWYmNLWENSZE1yQTNoNFB2RUl2V0M4d21iZEtaYnBLYUI0NzdVeEF3S2gxYmpEcnU1OWs9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==', + keyFile: undefined, + name: '298101684398995518', + token: undefined, + password: undefined, + username: undefined + } + ], + currentContext: '298101684398995518-c380e8dff45a3440b8f8dfda227eccfa6' +} +[2024-08-05T13:46:19.470] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:46:19.472] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:46:21.474] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:46:37.548] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:46:37.548] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:46:40.377] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:48:31.222] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:48:31.224] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:48:51.460] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:49:00.216] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:49:00.217] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:49:38.157] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T13:49:43.019] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T13:49:43.020] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T13:50:06.197] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:50:06.198] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:50:10.596] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:51:00.695] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:51:00.696] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:52:34.201] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:52:34.202] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:52:54.651] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:52:54.653] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:54:07.567] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:54:11.627] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:54:11.628] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:54:46.603] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:54:50.115] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:54:50.115] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:55:07.495] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T13:55:16.371] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:55:16.372] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:56:02.628] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:56:05.929] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:56:05.929] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:58:45.149] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:58:48.459] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:58:48.459] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:58:55.350] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-backend-longi-scp-algorithm-group-1-v2-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-05T13:59:00.932] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T13:59:00.933] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T13:59:15.775] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv +[2024-08-05T13:59:15.775] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv +[2024-08-05T13:59:18.738] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T13:59:55.927] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv +[2024-08-05T14:00:07.890] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv +[2024-08-05T14:00:07.891] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv +[2024-08-05T14:00:17.042] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:00:17.043] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:00:30.003] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:00:31.860] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv ibp-uat-backend-longi-scp-data-center-group-1-v1-backend-longi-scp-data-center-group-1-v1-694cb5cb6d-6x5kv +[2024-08-05T14:00:34.367] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:00:34.367] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:00:39.474] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:00:45.495] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T14:00:45.495] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T14:00:59.627] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk ibp-dev-backend-longi-datax-executor-group-1-v1-backend-longi-datax-executor-group-1-v1-789b96dc8b-dfvwk +[2024-08-05T14:09:31.025] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-idaas-bsm-group-1-v1-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-05T14:09:31.026] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-idaas-bsm-group-1-v1-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp ibp-uat-backend-longi-scp-idaas-bsm-group-1-v1-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-05T14:09:38.510] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-idaas-bsm-group-1-v1-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp ibp-uat-backend-longi-scp-idaas-bsm-group-1-v1-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-05T14:14:58.111] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-dsl-group-1-v10-backend-longi-scp-dsl-group-1-v10-74cb548dd-hc8t7 +[2024-08-05T14:14:58.113] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-dsl-group-1-v10-backend-longi-scp-dsl-group-1-v10-74cb548dd-hc8t7 ibp-uat-backend-longi-scp-dsl-group-1-v10-backend-longi-scp-dsl-group-1-v10-74cb548dd-hc8t7 +[2024-08-05T14:22:07.040] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-dsl-group-1-v10-backend-longi-scp-dsl-group-1-v10-74cb548dd-hc8t7 ibp-uat-backend-longi-scp-dsl-group-1-v10-backend-longi-scp-dsl-group-1-v10-74cb548dd-hc8t7 +[2024-08-05T14:22:15.410] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:22:15.411] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:23:38.709] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:23:41.988] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:23:41.988] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:23:47.191] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:23:49.072] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:23:49.073] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:24:00.252] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:24:14.696] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:24:14.696] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:24:47.838] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T14:24:49.590] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:24:49.591] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:25:15.913] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:30:09.521] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:30:09.521] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:56:45.558] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:56:48.446] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T14:56:48.446] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:00:51.478] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:00:58.139] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:00:58.139] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:02:13.261] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:02:15.371] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:02:15.372] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:04:15.056] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:04:21.551] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:04:21.551] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:06:02.604] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:06:05.111] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:06:05.111] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:15:03.410] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:15:06.058] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:15:06.058] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:17:37.596] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:17:40.926] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:17:40.927] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:18:10.485] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:18:12.482] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:18:12.483] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:18:21.595] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:18:23.389] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:18:24.925] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T15:18:24.926] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T15:18:41.227] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T15:18:44.054] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:18:44.055] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:20:24.804] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:20:27.102] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:20:27.102] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:24:31.128] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:24:33.607] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:24:33.607] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:24:54.063] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:24:59.756] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:24:59.756] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:25:28.277] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:26:31.829] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:26:31.830] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:32:04.068] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:32:07.880] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:32:07.881] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:32:28.095] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:32:29.945] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:32:29.945] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:32:45.708] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:33:18.711] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:33:18.711] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:33:49.632] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:58:55.115] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:58:55.117] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:58:58.490] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T15:58:59.872] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T15:58:59.872] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T15:59:05.258] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T16:16:29.234] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T16:16:29.236] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T16:16:35.729] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:08.887] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:08.888] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:35.158] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:36.933] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:38.158] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:38.159] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:40.115] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:05:40.115] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:05:42.022] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:43.634] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:05:46.052] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:05:50.042] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:05:52.036] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:06:17.852] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T17:06:18.947] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:09:57.812] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:09:57.812] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:10:00.892] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:34:22.340] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:34:22.341] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:34:25.470] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T17:48:35.946] [INFO] default - 添加了一个窗口 ibp-uat-null-front-scp-font-pro-75795c7794-wzw6w +[2024-08-05T17:48:35.947] [INFO] default - 获取了一个窗口 ibp-uat-null-front-scp-font-pro-75795c7794-wzw6w ibp-uat-null-front-scp-font-pro-75795c7794-wzw6w +[2024-08-05T17:48:39.644] [INFO] default - 销毁了一个窗口 ibp-uat-null-front-scp-font-pro-75795c7794-wzw6w ibp-uat-null-front-scp-font-pro-75795c7794-wzw6w +[2024-08-05T17:48:44.873] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-stone-message-center-group-1-v2-78dbd9bf49-7jr7z +[2024-08-05T17:48:44.874] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-stone-message-center-group-1-v2-78dbd9bf49-7jr7z ibp-uat-null-backend-longi-stone-message-center-group-1-v2-78dbd9bf49-7jr7z +[2024-08-05T17:48:47.416] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-stone-message-center-group-1-v2-78dbd9bf49-7jr7z ibp-uat-null-backend-longi-stone-message-center-group-1-v2-78dbd9bf49-7jr7z +[2024-08-05T18:09:32.721] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T18:09:32.724] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T18:09:34.005] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-05T18:11:03.038] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T18:11:03.038] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T18:11:06.543] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T18:11:08.567] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T18:11:08.568] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T18:12:12.443] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T18:12:12.445] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T18:13:31.962] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-c62rj +[2024-08-05T19:08:11.917] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-05T19:08:11.919] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T00:49:51.068] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T09:37:40.793] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T09:37:40.794] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T09:40:43.564] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:40:43.564] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:40:54.050] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:40:56.588] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T09:42:08.584] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:42:08.585] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:42:55.700] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:43:33.144] [INFO] default - 添加了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:43:33.144] [INFO] default - 获取了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:44:56.638] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T09:44:56.638] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T09:45:27.734] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-algorithm-group-1-v3-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-06T09:45:27.734] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-algorithm-group-1-v3-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s ibp-uat-backend-longi-scp-algorithm-group-1-v3-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-06T09:45:32.305] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-algorithm-group-1-v3-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s ibp-uat-backend-longi-scp-algorithm-group-1-v3-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-06T09:46:41.214] [INFO] default - 添加了一个窗口 ibp-uat-null-front-datax-web-ui-755fc4cf49-vwjqt +[2024-08-06T09:46:41.214] [INFO] default - 获取了一个窗口 ibp-uat-null-front-datax-web-ui-755fc4cf49-vwjqt ibp-uat-null-front-datax-web-ui-755fc4cf49-vwjqt +[2024-08-06T09:46:44.412] [INFO] default - 销毁了一个窗口 ibp-uat-null-front-datax-web-ui-755fc4cf49-vwjqt ibp-uat-null-front-datax-web-ui-755fc4cf49-vwjqt +[2024-08-06T09:51:23.540] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T09:51:31.986] [INFO] default - 销毁了一个窗口 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 ibp-dev-backend-longi-datax-admin-group-1-v2-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-06T09:51:41.697] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-gateway-group-1-v2-585856c59b-wrqhv +[2024-08-06T09:51:41.698] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-gateway-group-1-v2-585856c59b-wrqhv ibp-uat-null-backend-longi-scp-gateway-group-1-v2-585856c59b-wrqhv +[2024-08-06T09:51:48.055] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-gateway-group-1-v2-585856c59b-wrqhv ibp-uat-null-backend-longi-scp-gateway-group-1-v2-585856c59b-wrqhv +[2024-08-06T09:54:19.691] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-customization-engi-cf37c5-v1-696955596b-cj4ct +[2024-08-06T09:54:19.692] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-customization-engi-cf37c5-v1-696955596b-cj4ct ibp-uat-null-backend-longi-scp-customization-engi-cf37c5-v1-696955596b-cj4ct +[2024-08-06T09:54:23.627] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-customization-engi-cf37c5-v1-696955596b-cj4ct ibp-uat-null-backend-longi-scp-customization-engi-cf37c5-v1-696955596b-cj4ct +[2024-08-06T09:54:38.917] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-datax-admin-group-1-v2-867c7f49d8-76m65 +[2024-08-06T09:54:38.918] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-datax-admin-group-1-v2-867c7f49d8-76m65 ibp-uat-null-backend-longi-datax-admin-group-1-v2-867c7f49d8-76m65 +[2024-08-06T09:54:41.619] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-datax-admin-group-1-v2-867c7f49d8-76m65 ibp-uat-null-backend-longi-datax-admin-group-1-v2-867c7f49d8-76m65 +[2024-08-06T09:57:24.715] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T09:57:24.716] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T09:57:37.964] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T09:57:39.887] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-68d9458d4d-h72bz +[2024-08-06T09:57:39.887] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-68d9458d4d-h72bz ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-68d9458d4d-h72bz +[2024-08-06T09:57:43.548] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-68d9458d4d-h72bz ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-68d9458d4d-h72bz +[2024-08-06T10:02:17.761] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-datax-executor-group-1-v2-b6557c66-bg4sp +[2024-08-06T10:02:17.763] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-datax-executor-group-1-v2-b6557c66-bg4sp ibp-uat-null-backend-longi-datax-executor-group-1-v2-b6557c66-bg4sp +[2024-08-06T10:02:19.230] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-datax-executor-group-1-v2-b6557c66-bg4sp ibp-uat-null-backend-longi-datax-executor-group-1-v2-b6557c66-bg4sp +[2024-08-06T15:26:42.213] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T15:26:42.215] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T15:28:03.552] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:28:03.553] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:30:03.718] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:30:09.708] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T15:30:09.709] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T15:50:49.377] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T15:51:12.175] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T15:51:12.175] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T15:51:40.189] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-ffd4c757c-9nvxx +[2024-08-06T15:51:44.632] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:51:44.632] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:53:29.620] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:53:33.356] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:53:33.357] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:54:27.272] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:54:28.918] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:54:28.919] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:56:31.503] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:56:35.352] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:56:35.353] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:56:47.937] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:56:49.537] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:56:49.538] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:57:10.556] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:57:13.096] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:57:13.096] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:58:22.327] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:58:24.167] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:58:24.167] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:59:34.617] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:59:37.305] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T15:59:37.306] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:00:29.004] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:00:31.399] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:00:31.400] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:02:08.650] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:02:13.493] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:02:13.494] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:02:46.402] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:02:48.297] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:02:48.297] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:06:01.618] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:06:03.604] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:06:03.605] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:08:09.152] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:08:12.469] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:08:12.469] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:10:08.586] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:10:10.695] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:10:10.695] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:10:48.096] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:11:22.164] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:11:22.165] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:12:15.434] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:12:17.372] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:12:17.372] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:13:00.350] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:13:02.450] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:13:02.450] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:13:37.496] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:13:46.310] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:13:46.311] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:14:16.139] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:14:19.309] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:14:19.310] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:15:31.134] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:15:35.073] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:15:35.074] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:19:47.358] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:19:47.359] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:20:00.531] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:20:02.195] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:20:02.196] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:20:18.822] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T16:20:27.649] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:20:27.649] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:20:35.653] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:20:44.103] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:20:44.103] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:22:07.724] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:22:07.726] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:23:19.158] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:23:19.159] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:24:31.654] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:24:31.655] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:24:49.961] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:24:49.963] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:29:33.270] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:53:38.725] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T16:53:38.726] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:05:45.685] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:26:38.771] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:26:38.773] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:27:03.514] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:27:19.470] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:27:19.471] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:27:56.279] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:27:58.763] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:27:58.763] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:29:18.100] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-06T17:29:18.102] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-06T17:32:14.860] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-06T17:32:18.771] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-06T17:32:18.772] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-06T17:34:34.711] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:34:34.712] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:35:25.902] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:35:27.382] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:35:27.382] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:37:21.888] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:37:26.899] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-587b8ccd99-9z5pp +[2024-08-06T17:37:26.900] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-587b8ccd99-9z5pp ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-587b8ccd99-9z5pp +[2024-08-06T17:37:35.693] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-587b8ccd99-9z5pp ibp-uat-null-backend-longi-scp-planning-engine-group-1-v1-587b8ccd99-9z5pp +[2024-08-06T17:37:37.555] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:37:37.556] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:37:41.381] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:37:45.683] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-06T17:37:45.684] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-06T17:38:29.442] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-06T17:38:32.166] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-06T17:38:32.166] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-06T17:38:55.450] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-06T17:39:01.275] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-idaas-bsm-group-1-v2-77d4cd6d64-kgvqv +[2024-08-06T17:39:01.276] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-idaas-bsm-group-1-v2-77d4cd6d64-kgvqv ibp-dev-null-backend-longi-scp-idaas-bsm-group-1-v2-77d4cd6d64-kgvqv +[2024-08-06T17:39:15.519] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-idaas-bsm-group-1-v2-77d4cd6d64-kgvqv ibp-dev-null-backend-longi-scp-idaas-bsm-group-1-v2-77d4cd6d64-kgvqv +[2024-08-06T17:39:18.401] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T17:39:18.402] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T17:40:58.624] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T17:41:25.378] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T17:41:25.379] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T17:41:41.242] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T17:41:43.113] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T17:41:43.114] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-06T17:42:51.052] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:42:51.054] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:43:44.914] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:43:44.916] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:44:03.152] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:44:03.154] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:44:22.148] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:44:22.150] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:45:32.481] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:45:32.482] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:46:16.206] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:46:16.208] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:47:04.824] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:47:20.245] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-06T17:47:20.245] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-06T17:47:45.915] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-06T17:48:51.649] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:48:51.651] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:49:24.349] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:49:28.408] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-06T17:49:28.409] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-06T17:49:35.967] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp ibp-uat-null-backend-longi-scp-idaas-bsm-group-1-v1-b47bc4c6c-vzgbp +[2024-08-06T17:49:37.582] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:49:37.582] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:50:20.785] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:50:20.787] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:50:54.262] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:50:54.264] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:51:58.247] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:52:05.022] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:52:05.022] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:53:02.718] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:53:34.813] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:53:34.813] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:54:58.498] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-06T17:55:04.264] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:55:04.264] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:56:43.944] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:56:48.956] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:56:48.957] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:57:10.985] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:57:13.413] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:57:13.413] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:57:19.328] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:57:28.902] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:57:28.902] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:58:03.841] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:58:05.709] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:58:05.710] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:58:10.605] [INFO] default - 销毁了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-vpxwb +[2024-08-06T17:59:18.458] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:59:18.461] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T17:59:48.745] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-dsl-group-1-v4-85d585f8dd-2sgc2 +[2024-08-06T17:59:48.747] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-dsl-group-1-v4-85d585f8dd-2sgc2 ibp-dev-null-backend-longi-scp-dsl-group-1-v4-85d585f8dd-2sgc2 +[2024-08-06T18:00:06.023] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T18:00:06.025] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T18:00:22.194] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T18:00:22.195] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T18:00:41.917] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-06T18:00:41.918] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T09:16:59.662] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T09:16:59.665] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T09:17:23.864] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-tlppv +[2024-08-07T09:17:23.864] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-tlppv ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-tlppv +[2024-08-07T09:18:12.091] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:18:12.093] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:23:57.691] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:24:01.319] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-process-group-1-v3-f95fd5b54-gngtd +[2024-08-07T09:24:01.320] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-process-group-1-v3-f95fd5b54-gngtd ibp-uat-null-backend-longi-scp-process-group-1-v3-f95fd5b54-gngtd +[2024-08-07T09:24:51.139] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:24:51.141] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:28:31.744] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:28:31.746] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:28:34.353] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:29:15.696] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T09:29:15.697] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T09:29:22.102] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T09:58:51.881] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:58:51.883] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:59:06.084] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:59:09.277] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:59:09.277] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:59:21.539] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-8djj7 +[2024-08-07T09:59:23.291] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-07T09:59:23.292] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-07T09:59:36.191] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g ibp-uat-null-backend-longi-scp-performance-batch-group-1-v4-69485758fb-n6q8g +[2024-08-07T11:17:48.706] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T11:17:48.708] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T11:24:58.001] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-07T11:24:58.003] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-algorithm-group-1-v3-7695c69c59-28t2s +[2024-08-07T13:20:39.277] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:20:39.279] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:21:30.729] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:21:35.680] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-07T13:21:35.681] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-07T13:24:10.541] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-meta-group-1-v11-6d4457bf78-krrfr +[2024-08-07T13:24:13.691] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:24:13.692] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:24:33.437] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:24:56.413] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:24:56.415] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:29:04.518] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:29:04.520] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:30:05.179] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:30:08.091] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:30:08.091] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:30:15.506] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:30:57.629] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T13:30:57.629] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-datax-admin-group-1-v2-5db5ddd78b-2h5x9 +[2024-08-07T16:14:13.520] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:14:13.521] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:14:54.291] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:14:56.360] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:14:56.361] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:19:12.093] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:19:13.900] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:19:13.901] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:20:42.311] [INFO] default - 销毁了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:20:43.956] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:20:43.956] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-dsl-group-1-v10-7f6dcd94c6-9nvts +[2024-08-07T16:39:53.134] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-07T16:39:53.137] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-07T16:50:46.198] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-07T16:50:47.972] [INFO] default - 添加了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-07T16:50:47.972] [INFO] default - 获取了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-07T17:09:10.537] [INFO] default - 销毁了一个窗口 ibp-dev-null-backend-longi-scp-algorithm-group-1-v2-7d86759dd5-tw4vw +[2024-08-07T17:09:16.594] [INFO] default - 添加了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T17:09:16.595] [INFO] default - 获取了一个窗口 ibp-uat-null-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T17:14:16.555] [INFO] default - 添加了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr +[2024-08-07T17:14:16.557] [INFO] default - 获取了一个窗口 ibp-uat-backend-longi-scp-meta-group-1-v4-backend-longi-scp-meta-group-1-v4-56f88c4b95-hwbrr diff --git a/dev-app-update.yml b/dev-app-update.yml new file mode 100644 index 0000000..167690d --- /dev/null +++ b/dev-app-update.yml @@ -0,0 +1,3 @@ +provider: generic +url: https://example.com/auto-updates +updaterCacheDirName: deploy-ease-app-updater diff --git a/electron-builder.yml b/electron-builder.yml new file mode 100644 index 0000000..bf7b3c8 --- /dev/null +++ b/electron-builder.yml @@ -0,0 +1,46 @@ +appId: com.electron.app +productName: deploy-ease-app +directories: + buildResources: build +files: + - '!**/.vscode/*' + - '!src/*' + - '!electron.vite.config.{js,ts,mjs,cjs}' + - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}' + - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}' + - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}' +asarUnpack: + - resources/** +win: + icon: "./resources/icon.ico" + executableName: deploy-ease-app +nsis: + artifactName: ${name}-${version}-setup.${ext} + shortcutName: ${productName} + uninstallDisplayName: ${productName} + createDesktopShortcut: always + oneClick: false + allowToChangeInstallationDirectory: true +mac: + entitlementsInherit: build/entitlements.mac.plist + extendInfo: + - NSCameraUsageDescription: Application requests access to the device's camera. + - NSMicrophoneUsageDescription: Application requests access to the device's microphone. + - NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder. + - NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder. + notarize: false +dmg: + artifactName: ${name}-${version}.${ext} +linux: + target: + - AppImage + - snap + - deb + maintainer: dqc.org + category: Utility +appImage: + artifactName: ${name}-${version}.${ext} +npmRebuild: false +publish: + provider: generic + url: https://example.com/auto-updates diff --git a/electron.vite.config.ts b/electron.vite.config.ts new file mode 100644 index 0000000..23bd6b3 --- /dev/null +++ b/electron.vite.config.ts @@ -0,0 +1,25 @@ +import { resolve } from "path"; +import { defineConfig, externalizeDepsPlugin } from "electron-vite"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + main: { + plugins: [externalizeDepsPlugin()] + }, + preload: { + plugins: [externalizeDepsPlugin()] + }, + renderer: { + resolve: { + alias: { + "@renderer": resolve("src/renderer/src") + } + }, + plugins: [ + react() + ], + define: { + "process.env": {} + } + } +}); diff --git a/package.json b/package.json new file mode 100644 index 0000000..8d3b206 --- /dev/null +++ b/package.json @@ -0,0 +1,62 @@ +{ + "name": "deploy-ease-app", + "version": "1.0.0", + "description": "", + "main": "./out/main/index.js", + "author": "Deng qi chen", + "homepage": "", + "scripts": { + "format": "prettier --write .", + "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix", + "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false", + "typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false", + "typecheck": "npm run typecheck:node && npm run typecheck:web", + "start": "electron-vite preview", + "dev": "electron-vite dev --watch", + "build": "npm run typecheck && electron-vite pro build", + "postinstall": "electron-builder install-app-deps", + "build:unpack": "npm run build && electron-builder --dir", + "build:win": "npm run build && electron-builder --win", + "build:mac": "electron-vite build && electron-builder --mac", + "build:linux": "electron-vite build && electron-builder --linux" + }, + "dependencies": { + "@electron-toolkit/preload": "3.0.1", + "@electron-toolkit/utils": "3.0.0", + "@kubernetes/client-node": "0.21.0", + "@reduxjs/toolkit": "2.2.7", + "axios": "1.7.3", + "crypto-js": "4.2.0", + "electron-updater": "6.2.1", + "forever-agent": "0.6.1", + "log4js": "^6.9.1", + "moment": "2.30.1", + "react-redux": "9.1.2", + "react-router-dom": "6.26.0", + "tdesign-react": "1.7.8" + }, + "devDependencies": { + "@electron-toolkit/eslint-config-prettier": "2.0.0", + "@electron-toolkit/eslint-config-ts": "2.0.0", + "@electron-toolkit/tsconfig": "1.0.1", + "@types/log4js": "^2.3.5", + "@types/node": "20.14.14", + "@types/react": "18.3.3", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "4.3.1", + "buffer": "6.0.3", + "electron": "31.3.1", + "electron-builder": "24.13.3", + "electron-vite": "2.3.0", + "eslint": "8.57.0", + "eslint-plugin-react": "7.35.0", + "events": "3.3.0", + "less": "4.2.0", + "pnpm": "9.6.0", + "prettier": "3.3.3", + "react": "18.3.1", + "react-dom": "18.3.1", + "typescript": "5.5.4", + "util": "0.12.5" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..5cbcbd5 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5299 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@electron-toolkit/preload': + specifier: 3.0.1 + version: 3.0.1(electron@31.3.1) + '@electron-toolkit/utils': + specifier: 3.0.0 + version: 3.0.0(electron@31.3.1) + '@kubernetes/client-node': + specifier: 0.21.0 + version: 0.21.0 + '@reduxjs/toolkit': + specifier: 2.2.7 + version: 2.2.7(react-redux@9.1.2)(react@18.3.1) + axios: + specifier: 1.7.3 + version: 1.7.3 + crypto-js: + specifier: 4.2.0 + version: 4.2.0 + electron-updater: + specifier: 6.2.1 + version: 6.2.1 + forever-agent: + specifier: 0.6.1 + version: 0.6.1 + log4js: + specifier: ^6.9.1 + version: 6.9.1 + moment: + specifier: 2.30.1 + version: 2.30.1 + react-redux: + specifier: 9.1.2 + version: 9.1.2(@types/react@18.3.3)(react@18.3.1)(redux@5.0.1) + react-router-dom: + specifier: 6.26.0 + version: 6.26.0(react-dom@18.3.1)(react@18.3.1) + tdesign-react: + specifier: 1.7.8 + version: 1.7.8(react-dom@18.3.1)(react@18.3.1) + +devDependencies: + '@electron-toolkit/eslint-config-prettier': + specifier: 2.0.0 + version: 2.0.0(eslint@8.57.0)(prettier@3.3.3) + '@electron-toolkit/eslint-config-ts': + specifier: 2.0.0 + version: 2.0.0(eslint@8.57.0)(typescript@5.5.4) + '@electron-toolkit/tsconfig': + specifier: 1.0.1 + version: 1.0.1(@types/node@20.14.14) + '@types/log4js': + specifier: ^2.3.5 + version: 2.3.5 + '@types/node': + specifier: 20.14.14 + version: 20.14.14 + '@types/react': + specifier: 18.3.3 + version: 18.3.3 + '@types/react-dom': + specifier: 18.3.0 + version: 18.3.0 + '@vitejs/plugin-react': + specifier: 4.3.1 + version: 4.3.1(vite@5.3.5) + buffer: + specifier: 6.0.3 + version: 6.0.3 + electron: + specifier: 31.3.1 + version: 31.3.1 + electron-builder: + specifier: 24.13.3 + version: 24.13.3(electron-builder-squirrel-windows@24.13.3) + electron-vite: + specifier: 2.3.0 + version: 2.3.0(vite@5.3.5) + eslint: + specifier: 8.57.0 + version: 8.57.0 + eslint-plugin-react: + specifier: 7.35.0 + version: 7.35.0(eslint@8.57.0) + events: + specifier: 3.3.0 + version: 3.3.0 + less: + specifier: 4.2.0 + version: 4.2.0 + pnpm: + specifier: 9.6.0 + version: 9.6.0 + prettier: + specifier: 3.3.3 + version: 3.3.3 + react: + specifier: 18.3.1 + version: 18.3.1 + react-dom: + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) + typescript: + specifier: 5.5.4 + version: 5.5.4 + util: + specifier: 0.12.5 + version: 0.12.5 + +packages: + + /7zip-bin@5.2.0: + resolution: {integrity: sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==} + dev: true + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + dev: true + + /@babel/compat-data@7.25.2: + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.25.2: + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.25.0: + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.25.2: + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.24.8: + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.25.0: + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + dev: true + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + dev: true + + /@babel/parser@7.25.3: + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.25.2 + dev: true + + /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + + /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + + /@babel/runtime@7.24.8: + resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + dev: true + + /@babel/traverse@7.25.3: + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: true + + /@develar/schema-utils@2.6.5: + resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} + engines: {node: '>= 8.9.0'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /@electron-toolkit/eslint-config-prettier@2.0.0(eslint@8.57.0)(prettier@3.3.3): + resolution: {integrity: sha512-L+uG1FvJcAZkPZpSi6B1pmdpyJFyOxWDTjr1Vs47vSryxv/EX1Ch6o4HVsachlDq3fMEkDgojuP2F3ZvVZMoLw==} + peerDependencies: + eslint: '>= 8.0.0' + prettier: '>= 3.0.0' + dependencies: + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.3) + prettier: 3.3.3 + transitivePeerDependencies: + - '@types/eslint' + dev: true + + /@electron-toolkit/eslint-config-ts@2.0.0(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-NGXadMyWH9+ZsgYe/u5E0mqK2qTDq01kKKnyo7oiq/7v/dWoMoPhqSkn69NZvt7WmnFNOm57l71fv6128mAx3Q==} + peerDependencies: + eslint: '>=8.56.0' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + eslint: 8.57.0 + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@electron-toolkit/preload@3.0.1(electron@31.3.1): + resolution: {integrity: sha512-EzoQmpK8jqqU8YnM5jRe0GJjGVJPke2KtANqz8QtN2JPT96ViOvProBdK5C6riCm0j1T8jjAGVQCZLQy9OVoIA==} + peerDependencies: + electron: '>=13.0.0' + dependencies: + electron: 31.3.1 + dev: false + + /@electron-toolkit/tsconfig@1.0.1(@types/node@20.14.14): + resolution: {integrity: sha512-M0Mol3odspvtCuheyujLNAW7bXq7KFNYVMRtpjFa4ZfES4MuklXBC7Nli/omvc+PRKlrklgAGx3l4VakjNo8jg==} + peerDependencies: + '@types/node': '*' + dependencies: + '@types/node': 20.14.14 + dev: true + + /@electron-toolkit/utils@3.0.0(electron@31.3.1): + resolution: {integrity: sha512-GaXHDhiT7KCvMJjXdp/QqpYinq69T/Pdl49Z1XLf8mKGf63dnsODMWyrmIjEQ0z/vG7dO8qF3fvmI6Eb2lUNZA==} + peerDependencies: + electron: '>=13.0.0' + dependencies: + electron: 31.3.1 + dev: false + + /@electron/asar@3.2.10: + resolution: {integrity: sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==} + engines: {node: '>=10.12.0'} + hasBin: true + dependencies: + commander: 5.1.0 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /@electron/get@2.0.3: + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} + engines: {node: '>=12'} + dependencies: + debug: 4.3.6 + 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.2.1: + resolution: {integrity: sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==} + engines: {node: '>= 10.0.0'} + dependencies: + debug: 4.3.6 + fs-extra: 9.1.0 + promise-retry: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@electron/osx-sign@1.0.5: + resolution: {integrity: sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + compare-version: 0.1.2 + debug: 4.3.6 + fs-extra: 10.1.0 + isbinaryfile: 4.0.10 + minimist: 1.2.8 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@electron/universal@1.5.1: + resolution: {integrity: sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==} + engines: {node: '>=8.6'} + dependencies: + '@electron/asar': 3.2.10 + '@malept/cross-spawn-promise': 1.1.1 + debug: 4.3.6 + dir-compare: 3.3.0 + fs-extra: 9.1.0 + minimatch: 3.1.2 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.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 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@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} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.6 + espree: 9.6.1 + globals: 13.24.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 + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + 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 + + /@isaacs/fs-minipass@4.0.1: + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + dependencies: + minipass: 7.1.2 + dev: false + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /@kubernetes/client-node@0.21.0: + resolution: {integrity: sha512-yYRbgMeyQbvZDHt/ZqsW3m4lRefzhbbJEuj8sVXM+bufKrgmzriA2oq7lWPH/k/LQIicAME9ixPUadTrxIF6dQ==} + dependencies: + '@types/js-yaml': 4.0.9 + '@types/node': 20.14.14 + '@types/request': 2.48.12 + '@types/ws': 8.5.12 + byline: 5.0.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + js-yaml: 4.1.0 + jsonpath-plus: 8.1.0 + request: 2.88.2 + rfc4648: 1.5.3 + stream-buffers: 3.0.3 + tar: 7.4.3 + tslib: 2.6.3 + ws: 8.18.0 + optionalDependencies: + openid-client: 5.6.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@malept/cross-spawn-promise@1.1.1: + resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==} + engines: {node: '>= 10'} + dependencies: + cross-spawn: 7.0.3 + dev: true + + /@malept/flatpak-bundler@0.4.0: + resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} + engines: {node: '>= 10.0.0'} + dependencies: + debug: 4.3.6 + fs-extra: 9.1.0 + lodash: 4.17.21 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + optional: true + + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + dev: false + + /@reduxjs/toolkit@2.2.7(react-redux@9.1.2)(react@18.3.1): + resolution: {integrity: sha512-faI3cZbSdFb8yv9dhDTmGwclW0vk0z5o1cia+kf7gCbaCwHI5e+7tP57mJUv22pNcNbeA62GSrPpfrUfdXcQ6g==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18 + react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true + dependencies: + immer: 10.1.1 + react: 18.3.1 + react-redux: 9.1.2(@types/react@18.3.3)(react@18.3.1)(redux@5.0.1) + redux: 5.0.1 + redux-thunk: 3.1.0(redux@5.0.1) + reselect: 5.1.1 + dev: false + + /@remix-run/router@1.19.0: + resolution: {integrity: sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==} + engines: {node: '>=14.0.0'} + dev: false + + /@rollup/rollup-android-arm-eabi@4.20.0: + resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.20.0: + resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.20.0: + resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.20.0: + resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.20.0: + resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} + cpu: [arm] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.20.0: + resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} + cpu: [arm] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.20.0: + resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.20.0: + resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.20.0: + resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.20.0: + resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.20.0: + resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.20.0: + resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.20.0: + resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.20.0: + resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.20.0: + resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.20.0: + resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@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'} + dependencies: + defer-to-connect: 2.0.1 + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.25.2 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + dev: true + + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + dependencies: + '@babel/types': 7.25.2 + dev: true + + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.14.14 + '@types/responselike': 1.0.3 + + /@types/caseless@0.12.5: + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} + dev: false + + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/fs-extra@9.0.13: + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + dependencies: + '@types/node': 20.14.14 + dev: true + + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + /@types/js-yaml@4.0.9: + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + dev: false + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 20.14.14 + + /@types/log4js@2.3.5: + resolution: {integrity: sha512-SwF8LkSHqHy9A8GQ67NAYJiGl8zzP4Qtx65Wa+IOxDGdMHxKeoQZjg7m2M1erIT6VK0DYHpu2aTbdLkdkuMHjw==} + deprecated: This is a stub types definition for log4js (https://github.com/nomiddlename/log4js-node). log4js provides its own type definitions, so you don't need @types/log4js installed! + dependencies: + log4js: 6.9.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: true + + /@types/node@20.14.14: + resolution: {integrity: sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==} + dependencies: + undici-types: 5.26.5 + + /@types/plist@3.0.5: + resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} + requiresBuild: true + dependencies: + '@types/node': 20.14.14 + xmlbuilder: 15.1.1 + dev: true + optional: true + + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + /@types/react-dom@18.3.0: + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + dependencies: + '@types/react': 18.3.3 + dev: true + + /@types/react@18.3.3: + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + /@types/request@2.48.12: + resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} + dependencies: + '@types/caseless': 0.12.5 + '@types/node': 20.14.14 + '@types/tough-cookie': 4.0.5 + form-data: 2.5.1 + dev: false + + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 20.14.14 + + /@types/sortablejs@1.15.8: + resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} + dev: false + + /@types/tinycolor2@1.4.6: + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} + dev: false + + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: false + + /@types/use-sync-external-store@0.0.3: + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + dev: false + + /@types/validator@13.12.0: + resolution: {integrity: sha512-nH45Lk7oPIJ1RVOF6JgFI6Dy0QpHEzq4QecZhvguxYPDwT8c93prCMqAtiIttm39voZ+DDR+qkNnMpJmMBRqag==} + dev: false + + /@types/verror@1.10.10: + resolution: {integrity: sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==} + requiresBuild: true + dev: true + optional: true + + /@types/ws@8.5.12: + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + dependencies: + '@types/node': 20.14.14 + dev: false + + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + requiresBuild: true + dependencies: + '@types/node': 20.14.14 + optional: true + + /@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 + eslint: 8.57.0 + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@7.18.0: + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + dev: true + + /@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.6 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@7.18.0: + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + + /@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4): + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 + 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.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@7.18.0: + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitejs/plugin-react@4.3.1(vite@5.3.5): + resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.3.5(@types/node@20.14.14)(less@4.2.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@xmldom/xmldom@0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dev: true + + /acorn-jsx@5.3.2(acorn@8.12.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.12.1 + dev: true + + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + 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 + + /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'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + /app-builder-bin@4.0.0: + resolution: {integrity: sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==} + dev: true + + /app-builder-lib@24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3): + resolution: {integrity: sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==} + engines: {node: '>=14.0.0'} + peerDependencies: + dmg-builder: 24.13.3 + electron-builder-squirrel-windows: 24.13.3 + dependencies: + '@develar/schema-utils': 2.6.5 + '@electron/notarize': 2.2.1 + '@electron/osx-sign': 1.0.5 + '@electron/universal': 1.5.1 + '@malept/flatpak-bundler': 0.4.0 + '@types/fs-extra': 9.0.13 + async-exit-hook: 2.0.1 + bluebird-lst: 1.0.9 + builder-util: 24.13.1 + builder-util-runtime: 9.2.4 + chromium-pickle-js: 0.2.0 + debug: 4.3.6 + dmg-builder: 24.13.3(electron-builder-squirrel-windows@24.13.3) + ejs: 3.1.10 + electron-builder-squirrel-windows: 24.13.3(dmg-builder@24.13.3) + electron-publish: 24.13.1 + form-data: 4.0.0 + fs-extra: 10.1.0 + hosted-git-info: 4.1.0 + is-ci: 3.0.1 + isbinaryfile: 5.0.2 + js-yaml: 4.1.0 + lazy-val: 1.0.5 + minimatch: 5.1.6 + read-config-file: 6.3.2 + sanitize-filename: 1.6.3 + semver: 7.6.3 + tar: 6.2.1 + temp-file: 3.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + dev: true + + /archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: true + + /archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 2.1.0 + async: 3.2.5 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 + dev: true + + /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'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.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 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: false + + /assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + requiresBuild: true + dev: true + optional: true + + /async-exit-hook@2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} + dev: true + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: false + + /aws4@1.13.0: + resolution: {integrity: sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==} + dev: false + + /axios@1.7.3: + resolution: {integrity: sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: false + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /bluebird-lst@1.0.9: + resolution: {integrity: sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==} + dependencies: + bluebird: 3.7.2 + dev: true + + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + requiresBuild: true + optional: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: true + + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001647 + electron-to-chromium: 1.5.4 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + /buffer-equal@1.0.1: + resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} + engines: {node: '>=0.4'} + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builder-util-runtime@9.2.4: + resolution: {integrity: sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==} + engines: {node: '>=12.0.0'} + dependencies: + debug: 4.3.6 + sax: 1.4.1 + transitivePeerDependencies: + - supports-color + + /builder-util@24.13.1: + resolution: {integrity: sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==} + dependencies: + 7zip-bin: 5.2.0 + '@types/debug': 4.1.12 + app-builder-bin: 4.0.0 + bluebird-lst: 1.0.9 + builder-util-runtime: 9.2.4 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.6 + fs-extra: 10.1.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-ci: 3.0.1 + js-yaml: 4.1.0 + source-map-support: 0.5.21 + stat-mode: 1.0.0 + temp-file: 3.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /byline@5.0.0: + resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} + engines: {node: '>=0.10.0'} + dev: false + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /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'} + 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: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite@1.0.30001647: + resolution: {integrity: sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==} + dev: true + + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: false + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true + + /chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + dev: false + + /chromium-pickle-js@0.2.0: + resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + dev: false + + /cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + optional: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: true + + /compare-version@0.1.2: + resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} + engines: {node: '>=0.10.0'} + dev: true + + /compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /config-file-ts@0.2.6: + resolution: {integrity: sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==} + dependencies: + glob: 10.4.5 + typescript: 5.5.4 + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: true + + /crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + dev: true + + /crc@3.8.0: + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + requiresBuild: true + dependencies: + buffer: 5.7.1 + dev: true + optional: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: false + + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + + /debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /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'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + requiresBuild: true + optional: true + + /dir-compare@3.3.0: + resolution: {integrity: sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==} + dependencies: + buffer-equal: 1.0.1 + minimatch: 3.1.2 + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dmg-builder@24.13.3(electron-builder-squirrel-windows@24.13.3): + resolution: {integrity: sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==} + dependencies: + app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3) + builder-util: 24.13.1 + builder-util-runtime: 9.2.4 + fs-extra: 10.1.0 + iconv-lite: 0.6.3 + js-yaml: 4.1.0 + optionalDependencies: + dmg-license: 1.0.11 + transitivePeerDependencies: + - electron-builder-squirrel-windows + - supports-color + dev: true + + /dmg-license@1.0.11: + resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} + engines: {node: '>=8'} + os: [darwin] + hasBin: true + requiresBuild: true + dependencies: + '@types/plist': 3.0.5 + '@types/verror': 1.10.10 + ajv: 6.12.6 + crc: 3.8.0 + iconv-corefoundation: 1.1.7 + plist: 3.1.0 + smart-buffer: 4.2.0 + verror: 1.10.1 + dev: true + optional: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.24.8 + csstype: 3.1.3 + dev: false + + /dotenv-expand@5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + dev: true + + /dotenv@9.0.2: + resolution: {integrity: sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==} + engines: {node: '>=10'} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + /ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: false + + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.9.2 + dev: true + + /electron-builder-squirrel-windows@24.13.3(dmg-builder@24.13.3): + resolution: {integrity: sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==} + dependencies: + app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3) + archiver: 5.3.2 + builder-util: 24.13.1 + fs-extra: 10.1.0 + transitivePeerDependencies: + - dmg-builder + - supports-color + dev: true + + /electron-builder@24.13.3(electron-builder-squirrel-windows@24.13.3): + resolution: {integrity: sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3) + builder-util: 24.13.1 + builder-util-runtime: 9.2.4 + chalk: 4.1.2 + dmg-builder: 24.13.3(electron-builder-squirrel-windows@24.13.3) + fs-extra: 10.1.0 + is-ci: 3.0.1 + lazy-val: 1.0.5 + read-config-file: 6.3.2 + simple-update-notifier: 2.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - electron-builder-squirrel-windows + - supports-color + dev: true + + /electron-publish@24.13.1: + resolution: {integrity: sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==} + dependencies: + '@types/fs-extra': 9.0.13 + builder-util: 24.13.1 + builder-util-runtime: 9.2.4 + chalk: 4.1.2 + fs-extra: 10.1.0 + lazy-val: 1.0.5 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /electron-to-chromium@1.5.4: + resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} + dev: true + + /electron-updater@6.2.1: + resolution: {integrity: sha512-83eKIPW14qwZqUUM6wdsIRwVKZyjmHxQ4/8G+1C6iS5PdDt7b1umYQyj1/qPpH510GmHEQe4q0kCPe3qmb3a0Q==} + dependencies: + builder-util-runtime: 9.2.4 + fs-extra: 10.1.0 + js-yaml: 4.1.0 + lazy-val: 1.0.5 + lodash.escaperegexp: 4.1.2 + lodash.isequal: 4.5.0 + semver: 7.6.3 + tiny-typed-emitter: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /electron-vite@2.3.0(vite@5.3.5): + resolution: {integrity: sha512-lsN2FymgJlp4k6MrcsphGqZQ9fKRdJKasoaiwIrAewN1tapYI/KINLdfEL7n10LuF0pPSNf/IqjzZbB5VINctg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@swc/core': ^1.0.0 + vite: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + '@swc/core': + optional: true + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + cac: 6.7.14 + esbuild: 0.21.5 + magic-string: 0.30.11 + picocolors: 1.0.1 + vite: 5.3.5(@types/node@20.14.14)(less@4.2.0) + transitivePeerDependencies: + - supports-color + dev: true + + /electron@31.3.1: + resolution: {integrity: sha512-9fiuWlRhBfygtcT+auRd/WdBK/f8LZZcrpx0RjpXhH2DPTP/PfnkC4JB1PW55qCbGbh4wAgkYbf4ExIag8oGCA==} + engines: {node: '>= 12.20.55'} + hasBin: true + requiresBuild: true + dependencies: + '@electron/get': 2.0.3 + '@types/node': 20.14.14 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.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'} + 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 + dev: true + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.2 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + requiresBuild: true + optional: true + + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.3): + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + prettier: 3.3.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.1 + dev: true + + /eslint-plugin-react@7.35.0(eslint@8.57.0): + resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.19 + eslint: 8.57.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 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /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} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.6 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + 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 + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + + /extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.6 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + /extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: false + + /extsprintf@1.4.1: + resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} + engines: {'0': node >=0.6.0} + requiresBuild: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + 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 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + /forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: false + + /form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /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'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.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-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + + /getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + 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@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + 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 + dev: true + + /global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + requiresBuild: true + 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 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + 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 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + 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: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: false + + /har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: false + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + + /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'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + dev: true + + /http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + dev: false + + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + dev: true + + /iconv-corefoundation@1.1.7: + resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} + engines: {node: ^8.11.2 || >=10} + os: [darwin] + requiresBuild: true + dependencies: + cli-truncate: 2.1.0 + node-addon-api: 1.7.2 + dev: true + optional: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /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. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: true + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.9.0 + dev: true + + /is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true + + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: true + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: false + + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + dev: true + + /isbinaryfile@5.0.2: + resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==} + engines: {node: '>= 18.0.0'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isomorphic-ws@5.0.0(ws@8.18.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.18.0 + dev: false + + /isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: false + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + 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 + dev: true + + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + /jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /jose@4.15.9: + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} + requiresBuild: true + dev: false + optional: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + + /jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: false + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: false + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + /jsonpath-plus@8.1.0: + resolution: {integrity: sha512-qVTiuKztFGw0dGhYi3WNqvddx3/SHtyDT0xJaeyz4uP0d1tkpG+0y5uYQ4OcIo1TLAz3PE/qDOW9F0uDt3+CTw==} + engines: {node: '>=14.0.0'} + hasBin: true + dev: false + + /jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: false + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + + /lazy-val@1.0.5: + resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + + /lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + dependencies: + readable-stream: 2.3.8 + dev: true + + /less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.6.3 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + dev: true + + /lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + dev: true + + /lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + dev: false + + /lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + dev: true + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.6 + flatted: 3.3.1 + rfdc: 1.4.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: true + optional: true + + /matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + escape-string-regexp: 4.0.0 + optional: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /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'} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + + /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'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: true + + /minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} + dependencies: + minipass: 7.1.2 + rimraf: 5.0.10 + dev: false + + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: false + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + dev: false + + /moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + dev: true + optional: true + + /node-addon-api@1.7.2: + resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} + requiresBuild: true + dev: true + optional: true + + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + /oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: false + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + requiresBuild: true + dev: false + optional: true + + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + dev: true + + /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'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /oidc-token-hash@5.0.3: + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} + requiresBuild: true + dev: false + optional: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /openid-client@5.6.5: + resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} + requiresBuild: true + dependencies: + jose: 4.15.9 + lru-cache: 6.0.0 + object-hash: 2.2.0 + oidc-token-hash: 5.0.3 + dev: false + optional: true + + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + 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 + dev: true + + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /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==} + dev: true + + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: false + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + requiresBuild: true + dev: true + optional: true + + /plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + dependencies: + '@xmldom/xmldom': 0.8.10 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + dev: true + + /pnpm@9.6.0: + resolution: {integrity: sha512-ONxvuo26NbOTQLlwARLC/h4S8QsXE0cVpKqYzPe7A152/Zgc8Ls4TfqY+NavVIHCvvL0Jmokv6IMNOtxR84LXg==} + engines: {node: '>=18.12'} + hasBin: true + dev: true + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + + /postcss@8.4.40: + resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + requiresBuild: true + dev: true + optional: true + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: false + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + /qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: false + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + /raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: false + + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + /react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + dev: false + + /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==} + dev: false + + /react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==} + peerDependencies: + '@popperjs/core': ^2.0.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + dependencies: + '@popperjs/core': 2.11.8 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-fast-compare: 3.2.2 + warning: 4.0.3 + dev: false + + /react-redux@9.1.2(@types/react@18.3.3)(react@18.3.1)(redux@5.0.1): + resolution: {integrity: sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==} + peerDependencies: + '@types/react': ^18.2.25 + react: ^18.0 + redux: ^5.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + redux: + optional: true + dependencies: + '@types/react': 18.3.3 + '@types/use-sync-external-store': 0.0.3 + react: 18.3.1 + redux: 5.0.1 + use-sync-external-store: 1.2.2(react@18.3.1) + dev: false + + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + dev: true + + /react-router-dom@6.26.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.19.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.26.0(react@18.3.1) + dev: false + + /react-router@6.26.0(react@18.3.1): + resolution: {integrity: sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.19.0 + react: 18.3.1 + dev: false + + /react-transition-group@4.4.5(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.24.8 + 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) + dev: false + + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /read-config-file@6.3.2: + resolution: {integrity: sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==} + engines: {node: '>=12.0.0'} + dependencies: + config-file-ts: 0.2.6 + dotenv: 9.0.2 + dotenv-expand: 5.1.0 + js-yaml: 4.1.0 + json5: 2.2.3 + lazy-val: 1.0.5 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + 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 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + dependencies: + minimatch: 5.1.6 + dev: true + + /redux-thunk@3.1.0(redux@5.0.1): + resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} + peerDependencies: + redux: ^5.0.0 + dependencies: + redux: 5.0.1 + dev: false + + /redux@5.0.1: + resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} + dev: false + + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + 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.4 + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: true + + /request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: false + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /reselect@5.1.1: + resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + dev: false + + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfc4648@1.5.3: + resolution: {integrity: sha512-MjOWxM065+WswwnmNONOT+bD1nXzY9Km6u3kzvnx8F8/HXGZdz3T6e6vZJ8Q/RIMUSp/nxqjH3GwvJDy8ijeQQ==} + dev: false + + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + dependencies: + glob: 10.4.5 + dev: false + + /roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + requiresBuild: true + 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 + + /rollup@4.20.0: + resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.20.0 + '@rollup/rollup-android-arm64': 4.20.0 + '@rollup/rollup-darwin-arm64': 4.20.0 + '@rollup/rollup-darwin-x64': 4.20.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 + '@rollup/rollup-linux-arm-musleabihf': 4.20.0 + '@rollup/rollup-linux-arm64-gnu': 4.20.0 + '@rollup/rollup-linux-arm64-musl': 4.20.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 + '@rollup/rollup-linux-riscv64-gnu': 4.20.0 + '@rollup/rollup-linux-s390x-gnu': 4.20.0 + '@rollup/rollup-linux-x64-gnu': 4.20.0 + '@rollup/rollup-linux-x64-musl': 4.20.0 + '@rollup/rollup-win32-arm64-msvc': 4.20.0 + '@rollup/rollup-win32-ia32-msvc': 4.20.0 + '@rollup/rollup-win32-x64-msvc': 4.20.0 + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /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'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + dependencies: + truncate-utf8-bytes: 1.0.2 + dev: true + + /sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + dependencies: + loose-envify: 1.4.0 + + /semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + requiresBuild: true + optional: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + requiresBuild: true + dev: true + optional: 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 + + /serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + type-fest: 0.13.1 + optional: true + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + /simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.3 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + optional: true + + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + requiresBuild: true + dev: true + optional: true + + /sortablejs@1.15.2: + resolution: {integrity: sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==} + dev: false + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + requiresBuild: true + optional: true + + /sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: false + + /stat-mode@1.0.0: + resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} + engines: {node: '>= 6'} + dev: true + + /stream-buffers@3.0.3: + resolution: {integrity: sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==} + engines: {node: '>= 0.10.0'} + dev: false + + /streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.6 + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: true + + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + dependencies: + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.3 + dev: true + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + 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 + dev: true + + /tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 + dev: false + + /tdesign-icons-react@0.3.4(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-y4QOyqZkkxn7B2HDRHEqOKqQaVzw1ODp9Apu0i7TbpsLnakFYxnQzeTgDYUR7rIzsPrkkzIBkOh8myA9RKrZCQ==} + peerDependencies: + react: '>=16.13.1' + react-dom: '>=16.13.1' + dependencies: + '@babel/runtime': 7.24.8 + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /tdesign-react@1.7.8(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-cEw4fVAkvUAVYsyyb7rCu2X4CvBwMkjpbQVQVgpVasFYMwNwr/pkcUw19jtqhJwaIyMh6UJvn2ps+9A0xC7Hhg==} + peerDependencies: + react: '>=16.13.1' + react-dom: '>=16.13.1' + dependencies: + '@babel/runtime': 7.24.8 + '@popperjs/core': 2.11.8 + '@types/sortablejs': 1.15.8 + '@types/tinycolor2': 1.4.6 + '@types/validator': 13.12.0 + classnames: 2.5.1 + dayjs: 1.11.10 + hoist-non-react-statics: 3.3.2 + lodash: 4.17.21 + mitt: 3.0.1 + raf: 3.4.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.3.1)(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) + sortablejs: 1.15.2 + tdesign-icons-react: 0.3.4(react-dom@18.3.1)(react@18.3.1) + tinycolor2: 1.6.0 + tslib: 2.3.1 + validator: 13.7.0 + dev: false + + /temp-file@3.4.0: + resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} + dependencies: + async-exit-hook: 2.0.1 + fs-extra: 10.1.0 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /tiny-typed-emitter@2.1.0: + resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} + dev: false + + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + dev: false + + /tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + dependencies: + tmp: 0.2.3 + dev: true + + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + dev: false + + /truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + dependencies: + utf8-byte-length: 1.0.5 + dev: true + + /ts-api-utils@1.3.0(typescript@5.5.4): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.5.4 + dev: true + + /tslib@2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: false + + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + requiresBuild: true + optional: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + /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'} + + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + + /use-sync-external-store@1.2.2(react@18.3.1): + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.3.1 + dev: false + + /utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + dev: true + + /uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: false + + /validator@13.7.0: + resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} + engines: {node: '>= 0.10'} + dev: false + + /verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.1 + dev: false + + /verror@1.10.1: + resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} + engines: {node: '>=0.6.0'} + requiresBuild: true + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.1 + dev: true + optional: true + + /vite@5.3.5(@types/node@20.14.14)(less@4.2.0): + resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.14.14 + esbuild: 0.21.5 + less: 4.2.0 + postcss: 8.4.40 + rollup: 4.20.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + 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 + dev: true + + /which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: true + + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /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 + dev: false + + /xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + requiresBuild: true + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + dev: false + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + 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 + dev: true + + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 + dev: true diff --git a/resources/icon.ico b/resources/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..884fd271abc040ecd620aa48e21e658fd8f6c30d GIT binary patch literal 54210 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 literal 0 HcmV?d00001 diff --git a/resources/icon.png b/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bc69d4ba631fbcc3e5322561ddb0b37e91223a35 GIT binary patch literal 62133 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%0D}*&% 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
  • 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 literal 0 HcmV?d00001 diff --git a/src/main/index.ts b/src/main/index.ts new file mode 100644 index 0000000..0644339 --- /dev/null +++ b/src/main/index.ts @@ -0,0 +1,240 @@ +import { app, shell, BrowserWindow, ipcMain } from "electron"; +import { join } from "path"; +import { electronApp, optimizer, is } from "@electron-toolkit/utils"; +import icon from "../../resources/icon.png?asset"; +import store from "../renderer/src/store"; +import { setIsDev } from "../renderer/src/store/reducer/GlobalReducer"; +import { CoreV1Api, KubeConfig } from "@kubernetes/client-node"; +import { httpKubeConfigStr } from "../renderer/src/module/Api"; +import { K8sPod } from "../renderer/src/response/K8sPod"; +import log from "../renderer/src/module/Log"; + + +let kubeConfig: KubeConfig | null = null; +let mainWindow: BrowserWindow; + + +function createWindow(): void { + mainWindow = new BrowserWindow({ + title: "deploy-ease-app", + width: 1400, + height: 800, + show: false, + resizable: true, + autoHideMenuBar: true, + icon: join(__dirname, "../../resources/icon.ico"), + ...(process.platform === "linux" ? { icon } : {}), + webPreferences: { + preload: join(__dirname, "../preload/index.js"), + sandbox: false, + nodeIntegration: true, + contextIsolation: false, + enableRemoteModule: true + } + }); + if (mainWindow == null) { + return; + } + + httpKubeConfigStr().then(async config => { + kubeConfig = new KubeConfig(); + kubeConfig.loadFromString(config); + }); + + mainWindow.on("ready-to-show", () => { + mainWindow.show(); + }); + + mainWindow.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url); + return { action: "deny" }; + }); + mainWindow.webContents.on("did-finish-load", () => { + // mainWindow.webContents.openDevTools(); + // mainWindow.webContents.send('store', store.getState()); + }); + let channelResizeChannelName = "channel-resize-main"; + mainWindow.on("resize", () => { + console.log(mainWindow.getContentSize()); + mainWindow.webContents.send(channelResizeChannelName, mainWindow.getContentSize()); + }); + + if (is.dev && process.env["ELECTRON_RENDERER_URL"]) { + mainWindow.loadURL(process.env["ELECTRON_RENDERER_URL"]); + } else { + mainWindow.loadFile(join(__dirname, "../renderer/index.html")); + } + store.dispatch(setIsDev(is.dev)); + disableDevTools(mainWindow); +} + +function disableDevTools(window: BrowserWindow | null) { + if (is.dev) { + return; + } else { + window?.webContents.on("devtools-opened", () => { + window.webContents.closeDevTools(); // 关闭开发者工具 + }); + } +} + +app.whenReady().then(() => { + electronApp.setAppUserModelId("com.dqc"); + app.on("browser-window-created", (_, window) => { + optimizer.watchWindowShortcuts(window); + }); + createWindow(); + app.on("activate", function() { + if (BrowserWindow.getAllWindows().length === 0) createWindow(); + }); +}); + + +interface OpenedWindow { + windowName: string, + instance: BrowserWindow +} + + +let openedLogWindows: Array = []; + + +function setOpenedLogWindow(windowName: string, instance: BrowserWindow) { + const newWindow: OpenedWindow = { + windowName: windowName, + instance: instance + }; + openedLogWindows.push(newWindow); + log.info(`添加了一个窗口 ${windowName}`); +} + +const getOpenedLogWindow = (windowName: string) => { + for (let i = 0; i < openedLogWindows.length; i++) { + if (windowName === openedLogWindows[i].windowName) { + log.info(`获取了一个窗口 ${windowName}`); + return openedLogWindows[i].instance; + } + } + return null; +}; + +const destroyOpenedLogWindow = (windowName: string) => { + let index = openedLogWindows.findIndex(openedLogWindow => windowName === openedLogWindow.windowName); + if (index !== -1) { + log.info(`销毁了一个窗口 ${windowName}`); + let instance = openedLogWindows[index].instance; + // instance.webContents.removeAllListeners() + instance.destroy(); + openedLogWindows.splice(index, 1); + } +}; +// @ts-ignore +ipcMain.handle("createLogWindow", async (event, args) => { + const pod: K8sPod = args.pod; + let windowName = pod.namespace + "-" + pod.deploymentName + "-" + pod.name; + let windowInstance: BrowserWindow | null = getOpenedLogWindow(windowName); + if (windowInstance != null) { + windowInstance.focus(); + return; + } + const newLogWindow: BrowserWindow = new BrowserWindow({ + title: windowName, + width: 1220, + height: 640, + autoHideMenuBar: true, + webPreferences: { + preload: join(__dirname, "../preload/index.js"), + sandbox: false, + nodeIntegration: false, + gpuAcceleration: true, + enableRemoteModule: true, + contextIsolation: false, + experimentalFeatures: true + } + }); + await setOpenedLogWindow(windowName, newLogWindow); + windowInstance = await getOpenedLogWindow(windowName); + if (windowInstance == null) { + return; + } + if (is.dev && process.env["ELECTRON_RENDERER_URL"]) { + let fullUri = process.env["ELECTRON_RENDERER_URL"] + "#/k8s/pod/log?isFullScreen=true&namespace=" + pod.namespace + "&podName=" + pod.name + "&container=" + pod.container; + windowInstance?.loadURL(fullUri, {}); + } else { + windowInstance?.loadFile(join(__dirname, "../renderer/index.html"), { + hash: "#/k8s/pod/log", + query: { + isFullScreen: "true", + namespace: pod.namespace, + podName: pod.name, + container: pod.container + } + }); + } + let channelResizeChannelName = "channel-resize-" + pod.namespace + "-" + pod.name; + windowInstance?.on("resize", () => { + windowInstance.webContents.send(channelResizeChannelName, windowInstance?.getContentSize()); + }); + windowInstance?.on("closed", () => { + windowInstance.destroy(); + }); + windowInstance?.webContents.on("did-finish-load", () => { + if (kubeConfig == null) { + return; + } + // let coreV1Api = kubeConfig.makeApiClient(CoreV1Api); + // let channelLogName = "channel-log-" + pod.namespace + "-" + pod.name; + // windowInstance.webContents.send(channelLogName, c); + // pollLogs(windowInstance, coreV1Api, pod); + }); + windowInstance?.on("closed", () => { + destroyOpenedLogWindow(windowName); + }); + disableDevTools(windowInstance); +}); + +async function pollLogs(windowInstance: BrowserWindow, api: CoreV1Api, pod: K8sPod) { + if (windowInstance == null) { + return; + } + try { + let channelLogName = "channel-log-" + pod.namespace + "-" + pod.name; + let timestamp = Math.floor(new Date().getTime() / 1000 - (1000 * 5)); + let response = await api.readNamespacedPodLog( + pod.name, + pod.namespace, + pod.container, + false, + false, + 1024000, + "false", + false, + timestamp, + 100, + true + ); + let body = (response).body; + if (body != null && body.length > 0) { + if (!windowInstance.isDestroyed()) { + windowInstance.webContents.send(channelLogName, body); + } + setTimeout(() => { + pollLogs(windowInstance, api, pod); + }, 2000); + } + } catch (err) { + console.error("Error retrieving pod logs:", err); + } +} + +// Quit when all windows are closed, except on macOS. There, it's common +// for applications and their menu bar to stay active until the user quits +// explicitly with Cmd + Q. +app.on("window-all-closed", () => { + 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 require them here. diff --git a/src/preload/index.d.ts b/src/preload/index.d.ts new file mode 100644 index 0000000..a153669 --- /dev/null +++ b/src/preload/index.d.ts @@ -0,0 +1,8 @@ +import { ElectronAPI } from '@electron-toolkit/preload' + +declare global { + interface Window { + electron: ElectronAPI + api: unknown + } +} diff --git a/src/preload/index.ts b/src/preload/index.ts new file mode 100644 index 0000000..d6a1c66 --- /dev/null +++ b/src/preload/index.ts @@ -0,0 +1,34 @@ +import { contextBridge } from "electron"; +import { electronAPI } from "@electron-toolkit/preload"; +import { httpKubeConfigStr } from "../renderer/src/module/Api"; +import { CoreV1Api, KubeConfig } from "@kubernetes/client-node"; +// Custom APIs for renderer +const api = { + async k8sCoreV1Api(): CoreV1Api { + let config = await httpKubeConfigStr(); + let kubeConfig: KubeConfig = new KubeConfig(); + kubeConfig.loadFromString(config); + return kubeConfig.makeApiClient(CoreV1Api); + } +}; + +// Use `contextBridge` APIs to expose Electron APIs to +// renderer only if context isolation is enabled, otherwise +// just add to the DOM global. +if (process.contextIsolated) { + try { + contextBridge.exposeInMainWorld("electron", electronAPI); + contextBridge.exposeInMainWorld("api", api); + } catch (error) { + console.error(error); + } +} else { + // @ts-ignore (define in dts) + window.electron = electronAPI; + // @ts-ignore (define in dts) + window.api = api; +} + + + + diff --git a/src/renderer/index.html b/src/renderer/index.html new file mode 100644 index 0000000..456881f --- /dev/null +++ b/src/renderer/index.html @@ -0,0 +1,13 @@ + + + + + + + + + +
    + + + diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx new file mode 100644 index 0000000..5a130d7 --- /dev/null +++ b/src/renderer/src/App.tsx @@ -0,0 +1,78 @@ +import "./assets/app.css"; +import { Fragment, useEffect, useState } from "react"; +import { Layout, Row, Col } from "tdesign-react"; +import HeadMenu from "tdesign-react/es/menu/HeadMenu"; +import Style from "./app.module.less"; +import AppRouter from "./pages/AppRouter"; +import AppMenus from "./pages/menu/AppMenu"; +import logo from "../src/assets/logo.png"; +import { getUrlHashParams } from "./utils/utils"; + +const { + Content, + Footer, + Aside +} = Layout; + + +export default function App() { + let [windowHeight, setWindowHeight] = useState(586); + let isFullScreen = getIsFullScreen(); + let channelResizeChannelName = "channel-resize-main"; + + // @ts-ignore + function getIsFullScreen() { + let result = getUrlHashParams(window.location.href, "isFullScreen"); + if (Object.keys(result).length === 0) { + return false; + } + return Boolean(result); + } + + useEffect(() => { + // @ts-ignore + window.electron.ipcRenderer.on(channelResizeChannelName, (event, size) => { + setWindowHeight(size[1] - 175); + }); + }, []); + return ( + <> + { + isFullScreen ? ( + + ) : ( + + + + } + > + + + + + + + + +
    + +
    + +
    +
    +
    © 2024 Deng qi chen. All rights reserved.
    +
    +
    +
    + ) + } + + ); +} diff --git a/src/renderer/src/app.module.less b/src/renderer/src/app.module.less new file mode 100644 index 0000000..da5c472 --- /dev/null +++ b/src/renderer/src/app.module.less @@ -0,0 +1,8 @@ +.contentContainer { + padding: 24px 24px 24px 24px; +} + +.container { + overflow-y: scroll; + padding-right: 10px; +} diff --git a/src/renderer/src/assets/app.css b/src/renderer/src/assets/app.css new file mode 100644 index 0000000..3e27a84 --- /dev/null +++ b/src/renderer/src/assets/app.css @@ -0,0 +1,473 @@ +body { + overflow: hidden; + margin: 0; +} + +.container { + padding: 10px 0; + overflow-y: scroll; + height: 600px; +} + +.t-breadcrumb { + margin-bottom: 10px; +} + +:root { + --td-screen-xs: 320px; + --td-screen-sm: 768px; + --td-screen-md: 992px; + --td-screen-lg: 1200px; + --td-screen-xl: 1400px; + --td-screen-xxl: 1880px; +} + +@-moz-document url-prefix() { + .narrow-scrollbar { + scrollbar-color: var(--td-scrollbar-color) transparent; + scrollbar-width: thin; + } +} + +.narrow-scrollbar::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +.narrow-scrollbar::-webkit-scrollbar-thumb { + border: 2px solid transparent; + background-clip: content-box; + background-color: var(--td-scrollbar-color); + border-radius: 15px; +} + +.narrow-scrollbar::-webkit-scrollbar-thumb:vertical:hover, +.narrow-scrollbar::-webkit-scrollbar-thumb:horizontal:hover { + background-color: var(--td-scrollbar-hover-color); +} + +.t-fake-arrow path { + -webkit-transition: d 0.2s; + transition: d 0.2s; + stroke: currentcolor; +} + +.t-fake-arrow--active path { + d: path("M3.75 10.2002L7.99274 5.7998L12.2361 10.0425"); +} + +.t-slide-down-enter-active, +.t-slide-down-leave-active { + -webkit-transition: height 0.2s cubic-bezier(0.38, 0, 0.24, 1); + transition: height 0.2s cubic-bezier(0.38, 0, 0.24, 1); +} + +:root, +:root[theme-mode="light"] { + --td-brand-color-1: #f2f3ff; + --td-brand-color-2: #d9e1ff; + --td-brand-color-3: #b5c7ff; + --td-brand-color-4: #8eabff; + --td-brand-color-5: #618dff; + --td-brand-color-6: #366ef4; + --td-brand-color-7: #0052d9; + --td-brand-color-8: #003cab; + --td-brand-color-9: #002a7c; + --td-brand-color-10: #001a57; + --td-warning-color-1: #fff1e9; + --td-warning-color-2: #ffd9c2; + --td-warning-color-3: #ffb98c; + --td-warning-color-4: #fa9550; + --td-warning-color-5: #e37318; + --td-warning-color-6: #be5a00; + --td-warning-color-7: #954500; + --td-warning-color-8: #713300; + --td-warning-color-9: #532300; + --td-warning-color-10: #3b1700; + --td-error-color-1: #fff0ed; + --td-error-color-2: #ffd8d2; + --td-error-color-3: #ffb9b0; + --td-error-color-4: #ff9285; + --td-error-color-5: #f6685d; + --td-error-color-6: #d54941; + --td-error-color-7: #ad352f; + --td-error-color-8: #881f1c; + --td-error-color-9: #68070a; + --td-error-color-10: #490002; + --td-success-color-1: #e3f9e9; + --td-success-color-2: #c6f3d7; + --td-success-color-3: #92dab2; + --td-success-color-4: #56c08d; + --td-success-color-5: #2ba471; + --td-success-color-6: #008858; + --td-success-color-7: #006c45; + --td-success-color-8: #005334; + --td-success-color-9: #003b23; + --td-success-color-10: #002515; + --td-gray-color-1: #f3f3f3; + --td-gray-color-2: #eee; + --td-gray-color-3: #e8e8e8; + --td-gray-color-4: #ddd; + --td-gray-color-5: #c6c6c6; + --td-gray-color-6: #a6a6a6; + --td-gray-color-7: #8b8b8b; + --td-gray-color-8: #777; + --td-gray-color-9: #5e5e5e; + --td-gray-color-10: #4b4b4b; + --td-gray-color-11: #393939; + --td-gray-color-12: #2c2c2c; + --td-gray-color-13: #242424; + --td-gray-color-14: #181818; + --td-font-white-1: #ffffff; + --td-font-white-2: rgba(255, 255, 255, 0.55); + --td-font-white-3: rgba(255, 255, 255, 0.35); + --td-font-white-4: rgba(255, 255, 255, 0.22); + --td-font-gray-1: rgba(0, 0, 0, 0.9); + --td-font-gray-2: rgba(0, 0, 0, 0.6); + --td-font-gray-3: rgba(0, 0, 0, 0.4); + --td-font-gray-4: rgba(0, 0, 0, 0.26); + --td-brand-color: var(--td-brand-color-7); + --td-warning-color: var(--td-warning-color-5); + --td-error-color: var(--td-error-color-6); + --td-success-color: var(--td-success-color-5); + --td-brand-color-hover: var(--td-brand-color-6); + --td-brand-color-focus: var(--td-brand-color-2); + --td-brand-color-active: var(--td-brand-color-8); + --td-brand-color-disabled: var(--td-brand-color-3); + --td-brand-color-light: var(--td-brand-color-1); + --td-brand-color-light-hover: var(--td-brand-color-2); + --td-warning-color-hover: var(--td-warning-color-4); + --td-warning-color-focus: var(--td-warning-color-2); + --td-warning-color-active: var(--td-warning-color-6); + --td-warning-color-disabled: var(--td-warning-color-3); + --td-warning-color-light: var(--td-warning-color-1); + --td-warning-color-light-hover: var(--td-warning-color-2); + --td-error-color-hover: var(--td-error-color-5); + --td-error-color-focus: var(--td-error-color-2); + --td-error-color-active: var(--td-error-color-7); + --td-error-color-disabled: var(--td-error-color-3); + --td-error-color-light: var(--td-error-color-1); + --td-error-color-light-hover: var(--td-error-color-2); + --td-success-color-hover: var(--td-success-color-4); + --td-success-color-focus: var(--td-success-color-2); + --td-success-color-active: var(--td-success-color-6); + --td-success-color-disabled: var(--td-success-color-3); + --td-success-color-light: var(--td-success-color-1); + --td-success-color-light-hover: var(--td-success-color-2); + --td-mask-active: rgba(0, 0, 0, 0.6); + --td-mask-disabled: rgba(255, 255, 255, 0.6); + --td-bg-color-page: var(--td-gray-color-2); + --td-bg-color-container: #fff; + --td-bg-color-container-hover: var(--td-gray-color-1); + --td-bg-color-container-active: var(--td-gray-color-3); + --td-bg-color-container-select: #fff; + --td-bg-color-secondarycontainer: var(--td-gray-color-1); + --td-bg-color-secondarycontainer-hover: var(--td-gray-color-2); + --td-bg-color-secondarycontainer-active: var(--td-gray-color-4); + --td-bg-color-component: var(--td-gray-color-3); + --td-bg-color-component-hover: var(--td-gray-color-4); + --td-bg-color-component-active: var(--td-gray-color-6); + --td-bg-color-secondarycomponent: var(--td-gray-color-4); + --td-bg-color-secondarycomponent-hover: var(--td-gray-color-5); + --td-bg-color-secondarycomponent-active: var(--td-gray-color-6); + --td-bg-color-component-disabled: var(--td-gray-color-2); + --td-bg-color-specialcomponent: #fff; + --td-text-color-primary: var(--td-font-gray-1); + --td-text-color-secondary: var(--td-font-gray-2); + --td-text-color-placeholder: var(--td-font-gray-3); + --td-text-color-disabled: var(--td-font-gray-4); + --td-text-color-anti: #fff; + --td-text-color-brand: var(--td-brand-color-7); + --td-text-color-link: var(--td-brand-color-8); + --td-border-level-1-color: var(--td-gray-color-3); + --td-component-stroke: var(--td-gray-color-3); + --td-border-level-2-color: var(--td-gray-color-4); + --td-component-border: var(--td-gray-color-4); + --td-shadow-1: 0 1px 10px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 8%), 0 2px 4px -1px rgba(0, 0, 0, 12%); + --td-shadow-2: 0 3px 14px 2px rgba(0, 0, 0, 0.05), 0 8px 10px 1px rgba(0, 0, 0, 6%), 0 5px 5px -3px rgba(0, 0, 0, 10%); + --td-shadow-3: 0 6px 30px 5px rgba(0, 0, 0, 0.05), 0 16px 24px 2px rgba(0, 0, 0, 4%), 0 8px 10px -5px rgba(0, 0, 0, 8%); + --td-shadow-inset-top: inset 0 0.5px 0 #dcdcdc; + --td-shadow-inset-right: inset 0.5px 0 0 #dcdcdc; + --td-shadow-inset-bottom: inset 0 -0.5px 0 #dcdcdc; + --td-shadow-inset-left: inset -0.5px 0 0 #dcdcdc; + --td-table-shadow-color: rgba(0, 0, 0, 0.08); + --td-scrollbar-color: rgba(0, 0, 0, 0.1); + --td-scrollbar-hover-color: rgba(0, 0, 0, 0.3); + --td-scroll-track-color: #fff; +} + +:root[theme-mode="dark"] { + --td-brand-color-1: #1b2f51; + --td-brand-color-2: #173463; + --td-brand-color-3: #143975; + --td-brand-color-4: #103d88; + --td-brand-color-5: #0d429a; + --td-brand-color-6: #054bbe; + --td-brand-color-7: #2667d4; + --td-brand-color-8: #4582e6; + --td-brand-color-9: #699ef5; + --td-brand-color-10: #96bbf8; + --td-warning-color-1: #4f2a1d; + --td-warning-color-2: #582f21; + --td-warning-color-3: #733c23; + --td-warning-color-4: #a75d2b; + --td-warning-color-5: #cf6e2d; + --td-warning-color-6: #dc7633; + --td-warning-color-7: #e8935c; + --td-warning-color-8: #ecbf91; + --td-warning-color-9: #eed7bf; + --td-warning-color-10: #f3e9dc; + --td-error-color-1: #472324; + --td-error-color-2: #5e2a2d; + --td-error-color-3: #703439; + --td-error-color-4: #83383e; + --td-error-color-5: #a03f46; + --td-error-color-6: #c64751; + --td-error-color-7: #de6670; + --td-error-color-8: #ec888e; + --td-error-color-9: #edb1b6; + --td-error-color-10: #eeced0; + --td-success-color-1: #193a2a; + --td-success-color-2: #1a4230; + --td-success-color-3: #17533d; + --td-success-color-4: #0d7a55; + --td-success-color-5: #059465; + --td-success-color-6: #43af8a; + --td-success-color-7: #46bf96; + --td-success-color-8: #80d2b6; + --td-success-color-9: #b4e1d3; + --td-success-color-10: #deede8; + --td-gray-color-1: #f3f3f3; + --td-gray-color-2: #eee; + --td-gray-color-3: #e8e8e8; + --td-gray-color-4: #ddd; + --td-gray-color-5: #c6c6c6; + --td-gray-color-6: #a6a6a6; + --td-gray-color-7: #8b8b8b; + --td-gray-color-8: #777; + --td-gray-color-9: #5e5e5e; + --td-gray-color-10: #4b4b4b; + --td-gray-color-11: #393939; + --td-gray-color-12: #2c2c2c; + --td-gray-color-13: #242424; + --td-gray-color-14: #181818; + --td-font-white-1: rgba(255, 255, 255, 0.9); + --td-font-white-2: rgba(255, 255, 255, 0.55); + --td-font-white-3: rgba(255, 255, 255, 0.35); + --td-font-white-4: rgba(255, 255, 255, 0.22); + --td-font-gray-1: rgba(0, 0, 0, 0.9); + --td-font-gray-2: rgba(0, 0, 0, 0.6); + --td-font-gray-3: rgba(0, 0, 0, 0.4); + --td-font-gray-4: rgba(0, 0, 0, 0.26); + --td-brand-color: var(--td-brand-color-8); + --td-warning-color: var(--td-warning-color-5); + --td-error-color: var(--td-error-color-6); + --td-success-color: var(--td-success-color-5); + --td-brand-color-hover: var(--td-brand-color-7); + --td-brand-color-focus: var(--td-brand-color-2); + --td-brand-color-active: var(--td-brand-color-9); + --td-brand-color-disabled: var(--td-brand-color-3); + --td-brand-color-light: var(--td-brand-color-1); + --td-brand-color-light-hover: var(--td-brand-color-2); + --td-warning-color-hover: var(--td-warning-color-4); + --td-warning-color-focus: var(--td-warning-color-2); + --td-warning-color-active: var(--td-warning-color-6); + --td-warning-color-disabled: var(--td-warning-color-3); + --td-warning-color-light: var(--td-warning-color-1); + --td-warning-color-light-hover: var(--td-warning-color-2); + --td-error-color-hover: var(--td-error-color-5); + --td-error-color-focus: var(--td-error-color-2); + --td-error-color-active: var(--td-error-color-7); + --td-error-color-disabled: var(--td-error-color-3); + --td-error-color-light: var(--td-error-color-1); + --td-error-color-light-hover: var(--td-error-color-2); + --td-success-color-hover: var(--td-success-color-4); + --td-success-color-focus: var(--td-success-color-2); + --td-success-color-active: var(--td-success-color-6); + --td-success-color-disabled: var(--td-success-color-3); + --td-success-color-light: var(--td-success-color-1); + --td-success-color-light-hover: var(--td-success-color-2); + --td-mask-active: rgba(0, 0, 0, 0.4); + --td-mask-disabled: rgba(0, 0, 0, 0.6); + --td-bg-color-page: var(--td-gray-color-14); + --td-bg-color-container: var(--td-gray-color-13); + --td-bg-color-container-hover: var(--td-gray-color-12); + --td-bg-color-container-active: var(--td-gray-color-10); + --td-bg-color-container-select: var(--td-gray-color-9); + --td-bg-color-secondarycontainer: var(--td-gray-color-12); + --td-bg-color-secondarycontainer-hover: var(--td-gray-color-11); + --td-bg-color-secondarycontainer-active: var(--td-gray-color-9); + --td-bg-color-component: var(--td-gray-color-11); + --td-bg-color-component-hover: var(--td-gray-color-10); + --td-bg-color-component-active: var(--td-gray-color-9); + --td-bg-color-secondarycomponent: var(--td-gray-color-10); + --td-bg-color-secondarycomponent-hover: var(--td-gray-color-9); + --td-bg-color-secondarycomponent-active: var(--td-gray-color-8); + --td-bg-color-component-disabled: var(--td-gray-color-12); + --td-bg-color-specialcomponent: transparent; + --td-text-color-primary: var(--td-font-white-1); + --td-text-color-secondary: var(--td-font-white-2); + --td-text-color-placeholder: var(--td-font-white-3); + --td-text-color-disabled: var(--td-font-white-4); + --td-text-color-anti: #fff; + --td-text-color-brand: var(--td-brand-color-8); + --td-text-color-link: var(--td-brand-color-8); + --td-border-level-1-color: var(--td-gray-color-11); + --td-component-stroke: var(--td-gray-color-11); + --td-border-level-2-color: var(--td-gray-color-9); + --td-component-border: var(--td-gray-color-9); + --td-shadow-1: 0 4px 6px rgba(0, 0, 0, 0.06), 0 1px 10px rgba(0, 0, 0, 8%), 0 2px 4px rgba(0, 0, 0, 12%); + --td-shadow-2: 0 8px 10px rgba(0, 0, 0, 0.12), 0 3px 14px rgba(0, 0, 0, 10%), 0 5px 5px rgba(0, 0, 0, 16%); + --td-shadow-3: 0 16px 24px rgba(0, 0, 0, 0.14), 0 6px 30px rgba(0, 0, 0, 12%), 0 8px 10px rgba(0, 0, 0, 20%); + --td-shadow-inset-top: inset 0 0.5px 0 #5e5e5e; + --td-shadow-inset-right: inset 0.5px 0 0 #5e5e5e; + --td-shadow-inset-bottom: inset 0 -0.5px 0 #5e5e5e; + --td-shadow-inset-left: inset -0.5px 0 0 #5e5e5e; + --td-table-shadow-color: rgba(0, 0, 0, 0.55); + --td-scrollbar-color: rgba(255, 255, 255, 0.1); + --td-scrollbar-hover-color: rgba(255, 255, 255, 0.3); + --td-scroll-track-color: #333; +} + +:root { + --td-radius-small: 2px; + --td-radius-default: 3px; + --td-radius-medium: 6px; + --td-radius-large: 9px; + --td-radius-extraLarge: 12px; + --td-radius-round: 999px; + --td-radius-circle: 50%; +} + +:root { + --td-font-family: PingFang SC, Microsoft YaHei, Arial Regular; + --td-font-family-medium: PingFang SC, Microsoft YaHei, Arial Medium; + --td-font-size-link-small: 12px; + --td-font-size-link-medium: 14px; + --td-font-size-link-large: 16px; + --td-font-size-mark-small: 12px; + --td-font-size-mark-medium: 14px; + --td-font-size-body-small: 12px; + --td-font-size-body-medium: 14px; + --td-font-size-body-large: 16px; + --td-font-size-title-small: 14px; + --td-font-size-title-medium: 16px; + --td-font-size-title-large: 20px; + --td-font-size-headline-small: 24px; + --td-font-size-headline-medium: 28px; + --td-font-size-headline-large: 36px; + --td-font-size-display-medium: 48px; + --td-font-size-display-large: 64px; + --td-line-height-link-small: 20px; + --td-line-height-link-medium: 22px; + --td-line-height-link-large: 24px; + --td-line-height-mark-small: 20px; + --td-line-height-mark-medium: 22px; + --td-line-height-body-small: 20px; + --td-line-height-body-medium: 22px; + --td-line-height-body-large: 24px; + --td-line-height-title-small: 22px; + --td-line-height-title-medium: 24px; + --td-line-height-title-large: 28px; + --td-line-height-headline-small: 32px; + --td-line-height-headline-medium: 36px; + --td-line-height-headline-large: 44px; + --td-line-height-display-medium: 56px; + --td-line-height-display-large: 72px; + --td-font-link-small: var(--td-font-size-link-small) / + var(--td-line-height-link-small) var(--td-font-family); + --td-font-link-medium: var(--td-font-size-link-medium) / + var(--td-line-height-link-medium) var(--td-font-family); + --td-font-link-large: var(--td-font-size-link-large) / + var(--td-line-height-link-large) var(--td-font-family); + --td-font-mark-small: 600 var(--td-font-size-mark-small) / + var(--td-line-height-mark-small) var(--td-font-family); + --td-font-mark-medium: 600 var(--td-font-size-mark-medium) / + var(--td-line-height-mark-medium) var(--td-font-family); + --td-font-body-small: var(--td-font-size-body-small) / + var(--td-line-height-body-small) var(--td-font-family); + --td-font-body-medium: var(--td-font-size-body-medium) / + var(--td-line-height-body-medium) var(--td-font-family); + --td-font-body-large: var(--td-font-size-body-large) / + var(--td-line-height-body-large) var(--td-font-family); + --td-font-title-small: 600 var(--td-font-size-title-small) / + var(--td-line-height-title-small) var(--td-font-family); + --td-font-title-medium: 600 var(--td-font-size-title-medium) / + var(--td-line-height-title-medium) var(--td-font-family); + --td-font-title-large: 600 var(--td-font-size-title-large) / + var(--td-line-height-title-large) var(--td-font-family); + --td-font-headline-small: 600 var(--td-font-size-headline-small) / + var(--td-line-height-headline-small) var(--td-font-family); + --td-font-headline-medium: 600 var(--td-font-size-headline-medium) / + var(--td-line-height-headline-medium) var(--td-font-family); + --td-font-headline-large: 600 var(--td-font-size-headline-large) / + var(--td-line-height-headline-large) var(--td-font-family); + --td-font-display-medium: 600 var(--td-font-size-display-medium) / + var(--td-line-height-display-medium) var(--td-font-family); + --td-font-display-large: 600 var(--td-font-size-display-large) / + var(--td-line-height-display-large) var(--td-font-family); +} + +:root { + --td-size-1: 2px; + --td-size-2: 4px; + --td-size-3: 6px; + --td-size-4: 8px; + --td-size-5: 12px; + --td-size-6: 16px; + --td-size-7: 20px; + --td-size-8: 24px; + --td-size-9: 28px; + --td-size-10: 32px; + --td-size-11: 36px; + --td-size-12: 40px; + --td-size-13: 48px; + --td-size-14: 56px; + --td-size-15: 64px; + --td-size-16: 72px; + --td-comp-size-xxxs: var(--td-size-6); + --td-comp-size-xxs: var(--td-size-7); + --td-comp-size-xs: var(--td-size-8); + --td-comp-size-s: var(--td-size-9); + --td-comp-size-m: var(--td-size-10); + --td-comp-size-l: var(--td-size-11); + --td-comp-size-xl: var(--td-size-12); + --td-comp-size-xxl: var(--td-size-13); + --td-comp-size-xxxl: var(--td-size-14); + --td-comp-size-xxxxl: var(--td-size-15); + --td-comp-size-xxxxxl: var(--td-size-16); + --td-pop-padding-s: var(--td-size-2); + --td-pop-padding-m: var(--td-size-3); + --td-pop-padding-l: var(--td-size-4); + --td-pop-padding-xl: var(--td-size-5); + --td-pop-padding-xxl: var(--td-size-6); + --td-comp-paddingLR-xxs: var(--td-size-1); + --td-comp-paddingLR-xs: var(--td-size-2); + --td-comp-paddingLR-s: var(--td-size-4); + --td-comp-paddingLR-m: var(--td-size-5); + --td-comp-paddingLR-l: var(--td-size-6); + --td-comp-paddingLR-xl: var(--td-size-8); + --td-comp-paddingLR-xxl: var(--td-size-10); + --td-comp-paddingTB-xxs: var(--td-size-1); + --td-comp-paddingTB-xs: var(--td-size-2); + --td-comp-paddingTB-s: var(--td-size-4); + --td-comp-paddingTB-m: var(--td-size-5); + --td-comp-paddingTB-l: var(--td-size-6); + --td-comp-paddingTB-xl: var(--td-size-8); + --td-comp-paddingTB-xxl: var(--td-size-10); + --td-comp-margin-xxs: var(--td-size-1); + --td-comp-margin-xs: var(--td-size-2); + --td-comp-margin-s: var(--td-size-4); + --td-comp-margin-m: var(--td-size-5); + --td-comp-margin-l: var(--td-size-6); + --td-comp-margin-xl: var(--td-size-7); + --td-comp-margin-xxl: var(--td-size-8); + --td-comp-margin-xxxl: var(--td-size-10); + --td-comp-margin-xxxxl: var(--td-size-12); +} + +.loading { + display: flex; + justify-content: center; + margin: 20px 0; +} diff --git a/src/renderer/src/assets/icon.ico b/src/renderer/src/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..884fd271abc040ecd620aa48e21e658fd8f6c30d GIT binary patch literal 54210 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
    p3jM)Ny79w$YIt zS3de6lLX1Wyehp^`&s7LD4}#vaa;GyVxtdP--%lD&A|r!;x^}~k6l4uL0&P~3SZwzEV?Cvg!40yY|mQsy-T$(@FgaujFdm7HaQfOp5#RK7bEqL!y8Z!dhJwRJk2y6r=OMrc=Y0OD&_^jv&6Rqd@1 z+sr1Xzzw{{$<0@_#PrL&$_?2M%@L-sooZ6J<#T(%D#B|(aW_HlKDE2kRHLM&)+;kt z+ue4PdtAAC)y#Tmi~s0zihPH6a)sOcA>i#_*mwU^v!J5fM{Bb=v+3zc@#8W})=v-c zQByD)pHJ(RFbw0Re^+C#Px$b$41qN5)mrBg|EBEsI@KNFk&|HlN~iGS_v+!#mS|$Hy?w;ElUOr0h?gF<^WdB2^vX*1d%4L) zMWLaO-lj9Zs_->(Z5k&RUx* z(U2@9-B8^1W@}D3L(Pi@l3Ns3C%Nyl)&y-^lGa~Ze*ffxz9xI+mGal*HB5#JwpcCG z`TDAr=DoCn!jeR(*#ityksT$uoFW^-)^GA8A}5p~VLRm^<;6vHMK9~Ndhe-Wh1>8C z_s-n-ME)*4Jh{;zTwTD;bG&|+Us_S#<;i}NPd!SH6a~r~pZf13KnD7e@{Zo1%K|+X zLxoF;U4DF2%={r{>^p1psGWj44%H%Zuh{(%iL~3@0!?(0C7aqv&OdwYMHN)H+Y-jjLwPfu3WneJcO#92*~M2VrVdA7N| zkZJHi@5&>kMJB5y59ZB+(o~gl57Hg|JYt6~sg3*7#geav3gd6+2x?B z>Bn~|nQ3kuYTmB@U21)luplEGKJPO}Tr$ zy2UD*s43V>&+>2(|M}vio0}7)ti24nsw-A=wn_0_D|XpkH*|HcRa8){&C5f3_UuVM z$#%tXz=&gsrSH;YrEp)WW#B&g+sN)DrI*vImY*{(ambC_Hr=Wxt1Lp-WLNn}V2A7Z zePV7>fvpKLEYd!M7ORcJ`|ppfN)t45ztF^#4t6bPWKWQIG0Ms9pYQMGPrX?Y9=FWz z{rb`fUv+59kgs3E88E#Eb#^eHWWLI3Q||fKM=|A$b#3ty;!js9(#qr6J#*LJlD&gL zLf-mWC@%`Bt5$Dza^)gdS>S)`*__3x@`_r_nu(L%;RV*7xti3B{Sn#WJSCw}isp6s zs{Z(pHCS0%?op{V4;xK# zW~LmQ#Ko|S7cYiIZeK|D*+;|a5fQPzz+~DqG5gjN?t($t!;C(;wuBwmYgGh&qSe_B zG;pv5Np6_!!3uWjF8WGr@F2)8Mq-(^Z+6IMAonKEkJ{%R;$g?r z(2j*xVulWi5jsYm-Z9i%KQ}we6@7BIdSSM30L&{!Wba-E`oX?#y`dG`DjS>fIXCWx zS>AL{A1g0r8%h;k%+@gaFuL7DT(w(M_LblKd@s9L5ZlX7F1`~{J^twCa`9_lu{&ON z53>u+tQ`lKQlCh=f4o$Ep;LPqxgA#9)I>%?N_xWI&CPfhAHh1Qq4tC!sMuH{eNq{@ z$g{_J=hfMVsrC0?UgOV;3Ku$eOqL*}uJfawt~NPx{L1<>=1Nz>&uFaAT|D^ohR0~0 z`p2snjck=wAB)db*$ykZn}?+NeQ^=OOGgru7Ah>s1g0ga*SSP`Fvmw~F@P*z&ZPDT7Nqa>X~U9qZ#6ay@+A%Ir>^QvGV~yYAb94Vu!uvN;I` z7L6P`4l%Csg)6Il&^4j1QXl|^PP03D1ue*;P!;72!DfAN*O3pA>UL(KmKVD)#W{?JHDLuN0zB8%~X{27C6o? zl+-!pI4qgrDe_?t2z6bx+IvD!Et?K1Q^d|saZXB}r{lRM7L#RJG~i;$?njMsk2Vri+o@eN+-{Igwij? zY){rYy5nT@o^)3PDNcG3+KD&rJ@gJE&Qo*FWZ}>S{%Q>q1x?d#S}V)>0Ls2&JK`i3 zimnf;3a~qJdk|)3WN>j2Z4NzdT-2k)N0lJoYj` zo9HgS+qNwIVyAFXxLN5b&G$7eBlU?B#@*U&bO(@PvD@Hoi|pCc2{lgq;c|xN=452^aV~ND0+?K0 znOxl?&%-Gfqa!5~5^Ymn#_7|+*2rNf=7yZ!GuJ15=$uwf8)g0|quuyjjJqx~g{!oQ zmF2);!T#Ao>xQ|Bl__mar0c~CzdH$TF<@j4&x}0nzL!`;;TR}IGvDXZpZcyP(otKR z6(XE%+Ve-0-S!IKROop>ks0yXmmrZH`Owmz6MXYhOze2Ys+UO3>{7z+;5y>qwA-ru zO<|0@A}cqX^A&f7V>gyIG;cI8sWdX(c{%F1@h4>X3agFO>C=oO_h`7@v%G2nktMSG z^!E6z0~Z_~kGQ53o!Fk6HKO^fU|3|`T;ae4M0)e);ponr?}jI+e~-?h9OF+^9AX|t9GBDgzH$!2Xg|9dEYE9_JjBhGez*m5Mkwd92jgeU z@<;wRIybndz31W_F{Uh3Cdl?m{hUU_}Y&2P6fo9GkUrKJ~m zHt65GDnHagZ{e0Xnc<#vnonw&YJ*ZRJ@L)cWf>&Gi(yJT7XAD8Z7{fUMs35D{SD_n z$P4%Pk$be=+IN*nPz|jE)4k_(ZF@^h??N6DE{&KnRjqPh?Syo6D-_7=H_GiRNbzlG z9}6EjxBHs>X+a8mEZu&xm&J^%8Q1p@UX#XzD;q} zg1^gZIxF(pbxwC;bhNI}q(zQH*o>TowCD(_qJ7ta$Wy7;%&SFiNN9-_Qp+gK2`cF% z(>@g<_O{2?zC+R!rzI)cTuuDAjHou=`u{jO>!7N-E)JhdcXyXGN`r)4y1N^t1Sx3* z=|;M{ySuv^K^g=^>F(w`?>EB?Gu%IbbI-nK?X`Z-v(u{HpA7z$zVhJazMJR~If0n3 zE}Xp?KWfdXP_Q8Pod`yE-t2*RZ%6VG0kTY1yHlAXW}N?xZJF&(G;o+RVM}x@F<1oS zYB@(Sfev^v5{K~9Zyu$~U!I*=<$V4jGhATKvLS!y{7!%%9>FZre~sMp*9&H;_8$j+ zcx>CUOn?*-9ztv?M9F_oc$LJP0b3;VB+?fgRtLaNHrawBR|!wg$198x7hgG5m|3D> z=A`ctyz`}P4?|ljwx(=Id;u!TSbf?*-e2DpeN}fg^P&FXd+hVDNkmFifutn{{byiK zMPG!5=70%5oZ0t1`~as7e}$-~zQWNmbWd>E;I%yDgBS0rM``vugBF0P(8K~v1qTNs zTwP!PR|Wlk-epH%4uVZ_dAGmrb4Q{6+~M^hv(2n?^Mls%(R*{dGe)ChegXy^r^Ryd`lio=O0V8ey1{Tj)xCSk~ec zol^ZC=pOXcK`ADMjhHo8f>uvnX>#idkut#o3#4TbU|P zFR6fh>0j*equ;jr0sYn8=lJdQx9lnkpCQ0_^1ESNWg$^pTU*KDT@?y0D+Dv3M4fl} zeL9;jolO!DY%v^hDS3XhsiGAfY_veLWs$qz?1%ML2;xU0y;-VL(iM{HK=VqUdcSKe zY8P5__7qj*2o)Y=f@zE-!x@`cz~f}_@Xi8YccwGQRYNuThg?&G;rJjmaaCdZ=Ln#z^r~w zf`5@!4J(WL^SnRK@U2B;Q&jRH0oxaZk1W1Op(!Y1l}t`q@06ZhDv9}F0=MxQowF`l zd~@#bVi54e--uomnBQb_#}hi42M-K`&b5#B;C0J8#tSSA*9IANPy;X5uh%gw)n zu-4nuC%X3`is_4FQQW^4h-%B2v1e%kVz|!}tYqa_Tq$@gO_0AwULR6V4#SEO9%lFB zcQ2OfDfMEteR8u%kFhuwUWtlrlLr$W0n^mKC@#7%=%uB0#p#qUxMh)coHi^J9Q6U3 z{*&KwB?Y+InqcVo0{(J}enXep`|FnbY!(a{B1Rq6T-FDjm*XbJum{tm_%rt*iknfp5>(i}!cu+b_vrt(0?pxH$Ln z{5TJ$OJtjDw@Ekd5R_Hy{)$Uu>PF;mRY`qUd^%}A zeOP}he7flU+8sZys=Sp#@G&&SR_|kasoq|lqKqEwpF|T@xEAa{Mu-3a6OZ0QCl*Yc z9O|Hk8iXNzcsMP|t9d(aOB#Q1*&TcDLK~-)u|Gxe?PhwuN*r;#(X_&0w45Zm6bq6O z{Ip;n>%9p~XdCq&2)-cibL#cm*v|h*N*CXHLvB(AInu*Q1C}vn)1Y`XG+XRmf7d7I zRic;@@Y0&paxB{IoPYRA1p8vwNhz^VtQCs!uMw@2_}o^CG-+3L#TO*>8fHOE7OM=w zIp(gPpC3(GsTIj;Q{-ei-yC@3%lXYFZG8OCVWDt zRx62vu+Esq$7P}R><7jiP zMLiYx9og%l*@jK);I+olMg~EuBi}~n7G5DHOg-@Ygx>wML5Nc6jT}H4=7A{Fp2_$N zgIfF~G8D3P5?xi)Y;tK{L!}ZZ6YYD2KvQucA#RaKkNuuWoNe69{Wrx<`lEf@Z7Emj zK)EIF#zM^d&Rx%$E9L`oqCeoZ6PF81HufgAqp=ke?3Pd_k)OeW|$A!28tmdw5GZoHS)TQGTKAE5#qePAOI@6#K>s93Z?lnLEH zvGKzs)+(HGt(%u|#4MpzPqW3;+!MbaNeUkAWMG7PmOFBY%Y&DPM-{ADIk+f=+#P;- zX!nVOp>lR$?bd#3ZUsI&Jn)B$ZJJTH7*|>r4$V!unA9mPc9&n^2TVFz3A)iyeM#?( zAH{!|+Nzz_f&dwu*ddH*QkvYwc%*77>^A%f!5(HbwiWFScfw}2`#_R9<)!}h-MgK1 zyS#^oZ(slJ{d9c(I9~VPblCaf%4)AIs;P;$ZPrnhjg9TUA~aU1`0M!}$?juP`}J6? z+?g1HunM}oAaDHMQllq2(OKD-_iS6;$@YHntlYc7i2CtUSQ1gl8$az@I3Q!oEWdOM zaW`(n>7G z8XJ60WOcD9GZu{<771q!hXoTWy}5>Rkr;R5Ru~k8N?C zFCXI5U2NXV+41rqIpbQn`C=`+WI;qH z<`V;UB}A1LTT&G3tRh8p@ZCsi#}TD@&Gy`1O&*sjq!(!gf4I;-sxsKzSQ+m9tvwXQ zxh5ht9nJYXCv($8o`lhSX0oC0x9cI`A|&~b8elc<$^ZixZ{Heqi~#)cqb4RM09d@` z3w(bg;A;{m32ZhElFq2=8A)8COSm`41zc!}}3 z?brK(_iwq;XBLpmt2O))!}4m=h7_sSM<~nXDNo3kI%u7?{!$V&8q3KBe{`Ua?;T5I zsde60Gw5)SHBhc&5p#3ngM}(8qQjdHW}`7(m&cZ|0)jfdS^mrZ^bmwr4Cw4NOvbNc zdiYs`WRv|yTe%Uee!|<7-W&MAdvOIRuUn>)?z@N6pKQ%X8N3{uBeAq57E4W&%{GSe z;}kE>Ep4V&@+}^}9phF^f$szojZ*VUoOL#e4Yo8+7S!U)lufliS*@E_WtBTUqsjZNCr|MhPSI0WjtV z*4mM&#Q)@wpxEO+kHaqt613!+Z5CBOC63pr&XGn(zQKIzBGmTXWgFXLpDIUH*vXTZ zZvnBI4D2^sHd1Oxy7O?GPCq83O6Ps*nH#PMIq(HmZpQL-dA-l;i|S&n`TKAR>XbmNm%tPlnoabeC9a-@AJVk1(6rur1*GZvz52!Azy^aMZ1ej~RgP5$hxiq-W%l&QsEvi^qi5+QVyq7&mcg4JyVxxz5bcS$$qwrjpKA$Ax3#Ez&Xk=*dV9t>A zwL*R@yx7{V{%O{*?Uy|6TV5M{MyzqXwifWZW2Y2wmVqaEU$y)q_Y6Eme6bd^Mz4Ia zDxKe8xqe8b%Zq@NA;=_7*(&!RrVPl}wc~wxS-X@{&V|k*ZR96Koc6qJjh!f=N3s2t z&(c>gzh<}lXq3p_h1j$G{SFLHd4WrmQ!&2lw)3=?IiagFZIow6V|r-2DS?w(JU0+6 zq&(ChyOjwS7LFYj11g#6cFPqPrH)ldtfIYK^d06#eGnR*N+~eDGm zUaWJp8j?x*YS4%l;u@E58;i#mhjoZt;#!WKV5j-F`qqD#(DQF9qdwes%G; zYq3&ASwZfi{Q76uSW)#<(Rl6{G*P7Dr(1<^$e8n7&@PgVVhc4y^rt$g12cm>5-uN& zF1{B|5OR6Awvw&Hk@%23Y}x%7Z;|_@8AZ|CpWA~{wl!F00H(gc{h-kNENvgFYHn?=Pyn1nRx zXWqZ&-hnATc*sF%RG;HnNEA1*%_+vFLOp4E6toYhA)#1QX3+hwJd1=Zf#dwwp&dD9 zO~v+ZF@-MO>3UD;mc|6{*MHPtks@CaBYCjI?g1l65^Mx<1d%7!Cd7o?X{JA9m>9Oo z9lulb|HS*2AyG>+agU#rJ2He7R#K-BK%~>P9~>|oeI##hf4V8bthjC7a-%X8PMV`0 z7#a$dv@Vw=%BJf}4m4_43zfmA8c5V>mc#cR3?fJMfgP3(LxRXdO947jiLxNA zZUnk)ns8x~aujVr;}3XVQMVp>@nxZB!nda{nU!KgIWa5j9KU|GL$Fb*Z7syhW1h8buW1N_@S3MZM3xcrk37$VV(G6 zxrv9~OW=_-ZjP@H8n*r|WFvk)p6BEFe2{nE`~ioCIdaB2zir2~_6Gh|;-GBz-BKMh z_tLJ1LbQlczJ#y4kW#sJb&-z7uES+DwN`hX>}O5BgWM>1F)0_QQt7@&+uA?WHaI5k z&QhcBJ?4_9nV z`wP<4i3qWMkN-nrr#|NqztcmES}Q8GaK%{G_r!iJL&HcAr4(@5`SB`w*{78f(WIuS zZkqoi(Ebe$_-~>6rf*)$g(MBVcP^|h2}LbZdmCyalkadngztNY7F+8lLqN=G!1vpC!}X0n z@Y!F&ITBm%8c z&t>uX6Ek~_Iq$xW@8!~E(b4P!B_7(&ZJKG*Pe}ZhF|s5^XASE_{_jn4IJ}=3`sfV3 z{vai)qr$gNWhd0p<40;z!fd`tM!MORQ@L3KDH*PP?hSm- zCAs2DF>B&nS=9KbwhUPuD^yTWEdaMgw6eEB`7qSTJDQyeLk00!lisgL*Dn=m>EVJb zx)_+p)zPVUjRazzYM}>%@4D|SO5;ZZe}W^J zwjufhfi_AD&Y#HCuJL&B;CXLP$}A8&YcXSF_g44l+Q;F6fdP~0g(*7cFVkBYwyWWg z;v+Y1l1zo&Wvy^!a*-(jtE|-emuYQ!P(lQU0QG1^&?;*01nRZSRn>t1GwHl&4EMfHn{*L?YP*CbBo+!oVIOZi|vgsW+6G z=bNXo-HKcwSDLEEKPPtIrK=t`gu?C}9_Bn!JUp{Ibs-dJ;>u1sd9z+fO0csoR{N={ zWF*a`|LnlyTq}+rd3mFz zq=)4Mz!YVmr1fiWXx`-8$&S>p|KMdw)giXE)#tDY9vgbbQ+!$}5|pU8sWO)rp*Kvi>UF$UC=n+l`;}5okVvU4=CJX9-?paJxST3eJtBN0i@;p}3$o^X3s?0juTVM-23{pXQ4 zbJZ0WpMr83-8B%%6Jd^b1*rRO4~F_8fNppb&O$S}^$V2gv^scs{6aWZI|4yC6Xw~h z`b^6uVhi)`E<_afc4viZslQhnqlNOxcQ`%zrkY~WLup|HFi0q#=7`lR&7C+~6+R*z z;eIhQk&UrMJ3_d^`X_NTWjVtHvFt~#{su5OAA1aCB%@P=8Mia{6e;Lu3uX>TWwho$ zmSyOoI)q{5mN0G>^!r=E;M`pKZ!*LD8+dYt72kHOb`92iTgq>r{N6S%`m8!)e%_y$ zgZ%(nP`~Tv)tKd(h$O-jwu&#R7CopZYeGFVLTxMopwWt{i6LVB`D5sPgBi65FQTCi z9btBxRkT$CFekJ`B|p58cRTokrUXwW-!p)}FG<~Nv!hcuXOsK}h_{%lysM!%ZB)h5 z?4^BDPp$q~)WbL>wf97z$E^p-D?U~LREy70h#5b?Tr)3a7A91s$%N$8tv^+K;7w`#i~UjSE9OO!Cv|38UgU(WpMhi zG`CmJd=(wYLnFW#R}ebX1cLVR#f$^7)c8Je;*|cRi9JV#{;tBQc}wJ5CX?!o(mP0* zx44`6DCvxq7}e&E z@gBQ0r5ca;LW;fh2eE&J_3fj4RVA>aM#JHh5Q|a{U{Oq752OHxb!)cL(|QsXW6moeweG&<~`RAQ!Y%3G}~3|eQAlOr@W zk(n0j>j(i>m4Qypl_jG$D5O4Hwk`WXNOZ$E&}Y#p$HsQolHa7C14eV++`=X?*x zgL|k~L$c~3C;{u13oWC zKXhEvP%DFSHL*X_AgJZ0+;rHB#TQE;Fn;?|ATE3;gwIut%cf9(ArW0hPBvC1Fn*M7 zWp`5C(=%QriAi>@sDhK|(oAC0DiCHV>&bR)1PUvG4Y4hARu$sr{yS&qT}H|I1#Nov z@AmD-yb}4U56jcuL#YY~{{@pH^_$~#wIezP8!c#RRid>9_YUNvqy5IV0ivms>6-)@ zAS>9l%sQLU(0=z4Ess0p67qZby2??We|o6(^cyFOH?TWx*~q} z!niGKSxILxr(3Xp;BB6(UaWK;ODoM!5C;7R)hn>hQtJp#EK6_Oxsb?AD#E9Lr1TYG zv*>>~pMlY9sTmasmc@aa`d4S8w+;k*31WGCd|UsXrbqcFp|eYfIKjw2(s8#527tp< zhB#M-g35(wTg6JCl!da^H)cS4@|g?B5cW(m1{*rBCdS5;FN?|D6L_;hNYZ+;V=ib_ z>2>tlRER)uIc$nXiMMKZiY}vI`E|5SQe)$)Z`ix1JW=&luQ=Po6s$Z{-}1(@eYrP( zbu-a~1ba|{i>k?F=I3s>zk+?^ar3@xN z73+9&q(4Q@vM0f6Z1b62bc()-YRiZ1fm8H*Il(_l2P$d^j7p6=94y9?%;@K{fA#0m z_OZXk>b=T3eYDp2J!3>|F#B&P3npuk(T1H9C>&~=WdNFZe4SV3x$AMk28szx#7I8t z-wgFst~#VBb&4J%i~#5h3_Lt(Q)b!(tdu@nS$U2mjjB~(noMX+v2B_Vc1gw7%@3T4 zHA)2=Shh6%sq~+Tbq7BjJS(c&B7w~zQu~5oN*^*@cQ{B+Bq`tQ=4#ABV58KuEg-&U<5=b@qq1OxI@yF;WkzCf0voCYFgKyzo`?M z5&0&!ty3}&8W}J@+LpAqAHa+&XZh|{lG%3+E-SrGa3XF{v7~pVdGhh`nSvXR|FRAs zJK+zCnKVs0J2DEg&!Fa=zXy3^x|>zku2Wd8opCghul29&9;f^{9A72<s>y7i)a@kkO!4 ziru8C3K4#nxnKk9Ir^<*L|vpNoRjL@=xw4GQ?^1v=C&l<=C9h*vR@-x!eUa!3~^sy zA%2})SeO4Ini6#gDq2F@`6%GeLqip)%iD3+hdnX9&iGKYMMq}$xo=K4qHTCl4Hrv` zixD?oUvB3wr$wf}KxWH6!E0~kJbfkK2ZSsFZPO&0GnfW~#-Lfao*JPuV$@=j_Xgb^ zr+%x9oKpOU^I~;%oZ`=flgenTu!m5e{$5Eoq zQHJaSP)l)_uR@4wI!@S4S8uqkIaZek2wnEmF=&5GBUtleG3nyWVf_*B^5VEovluq$ zW{Ryeg-ZiHsKBCs{KS|TJ~I9SbEhSI4fr^`oj5ijgj@OOlm1 z!K+_OEj?-M@Jz3!uZNvnP+)3I!yD6V>=FryxMQOTRVRGz@&yC@5=>n!PVREq@swGO$z|ZlCnpP)c)eKwXdS+;USy4Vo#8c&Bx(tt^8o78@5|F>QwC8k4tgO_uD;S!~4VhxQ-&1+C&qH4B-mJ3N4F2$kk#qrBZG6J_nyW-p~Tf|UO2&}PE zm}gC*EEqlSCY&JrN-hI|ccb?OA`;sY$Vrw29nU8=-A%O?WS`YG4#mZ!ZewPqaj1tU z-pHi^L@<6U9}@$q4o@X_IQbFJu&iQ#pT1rd9j%xsS6$oy|4FcDD54{r1rz}j2~+CM zGK*NWAVFvWE&n(}IV|JXiInBz@b8qqVU_7LxATr}GsrsC``3bvI?{=rHZa4T$#EqQQ4a->Gva)>_t1AomG4GJt`Fy6(>+uTLLdkH$09`n-B8 z70*RU_8`SmL`eh|1*ys){;{T|=j#>vHl%{z>&O8+=G+M|NdI_>KowA*l?fz_*XmY9 zsw9{)$SgrpnT7tTetJosYu$QcN}N8`Eb{n4+{)6m+KBUQT=+}IZhKooL*itYB|Yvt zN$Z2D*Q3=}_Np*Xg?wxJ=64LN_o9p)Ub*zNCi`!?^ehbD>{)IWweG7JHOF)%|(bK-N`?D<{@+x<~*xbL8AQAXXSCVq5&HDv_ zL;Y|gGn2P>3Z>>B`nE)ev%KAekxaTYnMR;y)nsVJ`#}`g9$lB#^c<*R$=_F+29%Gk zah=kEVmw&RxW3F565(U--A^lPsH$xU)5^Zyn8knM+`o!cIdiA=ubasAV*Wb9dl|x0 zVyDG~nlG6{6B<{1KQVaQ^+MeEx-@Q;K1hM^ir(`mw0QdGCeogOHQ^64|33u{4Wt1& zyze(%;?%s+LGuhR{TCbYKvhvvXh)g` zN9atr%JtaLn+W?03SnyvEce}9mC)1fS8u&`*W;FqzSrx*;rrR?oEgtg~Dyss+0yMt4vW1OH)92tTycxtn$Q31-94cA9zFOV9==EeNOXT!J&EvGm@;wbhZn>2_n2NPst_uR6S=iWXF(zH-KN;+? z(q7)@emRsGVebB}y*Ph9>Bfl(%WBcdf`gX>LUo@FvbBA4*g;!{X6~K+x|N zq6s|1q=Ylr!PG0~Le{R++4~?vU;o62_n1xZbnkx?)|UpnrYKShoe#0R(%Ub4bhF`F zNq@*L21Rp#+iwpB@TiBMV9^5s_p1Q}?+@JoricnTZYUT0A+HR}mKv(CPLT zzP`Gmij`ppY?kXJ8yXrm2f}bcKLfu~_6PJrG9@NF6wx{EI$P5JVpkyS5Q@v71eFV` z>TIud?~k-7XgkP@(Mt=|K@eku>Y3oTeUR6f-P|WNb*nFqliXHtvoAKCg55LQ98WU; zF8FiZbAR>qw!3M4&}VtUP*phjJ_1=wAf5Zi0)MO>a&9w_2cZ(p!bHTkq`uMdKCR!l zlVyFGos2Tz#4>=9OcLRpX7v0!Y;iIhjWgQ$n1fEQMDAf2c^S&$uV0o1Z0`Nc$K&m5 zxakT3L0HZ7AiQWCRmIYsjcDYQxI{6kkG?Y5sjLJ?BQF*PeG2>nzNInFBe9tBJMCCh zvx)d3cKVi6#4ZsymeJjoV8jNA8Z?P{_{7RHVMj`}f>ma#K~y3$KcmfR6Z(Hl==JR_ zZLADc`sAOk$CCit)xDDwsnf0X&(`7e^oBrm|fz1_zW8vd;FfO zc=w1xw%yqie+uf3x*HWQho8TTTXsKu>BdWVd>1i}4ZuJ%hi|@?b#ra3HJQPQoyO`# zD$#ub%BX!vNe&GH@Ieh+MJlyB;tZgjG106p(54ioCsMfmD>v&O**p2xqz*I$&8 z=q2)*nd&!VprVf*^k_c%JoELFmoM7JrFA3+y3%3?$@krc@7)e;{ls%5=$-*WzZk!Z zA-@q3q4`)0x0FQ!(_^&mL38ujSI{t_4tHJdji3wh;ZvuvaoXdcprr#CE{7w$2f+o9 zUKAcwQ8|}RD^it~Mg(UizKg~_Ai%I^-+J(#9sw$Ni^kMfzSlKR7jyz z!I4LN*Zi7T^Ry>6W{DV&s(%x8jO4}WtRhv(R|=SzGZ^KrOBTS1g_hM+a7gjSJ2%Q9SjDIdX2?E0)hk==O6nJ6tbZNd%G) zY~f3Cs`Bmg+3D*LZ%FW7Q>I{0LR>PduGq4TR)(Nkl#S<6#<8{pK$bDE&m|(|#Ax=W z;l)hR#xNOc>(aLjW=29H*6~sBUZUeDqHS!8u`4T-DP}k^^;ikoiSXyuRG;>p1@Cd7C2vs^Z?WB*3YI=7mTD-rI-1IrCRcfYV*=5D4G4|$IDe!8(S6Hi5G&Z_`N-yDqAmttWN&WUTJFma0Y+8%I7}2+>;~dF7>X+uo zu?IBl@&7Uz$hi4b;X@d8fD3V)d+PlMK;Z{~m%f6!f@VBR%g2iaM?-AxFgE5!q0Ne* zlp&N7tBZ>vAyI!mUTG{i6u=3ClbePG`q>$W>4M*7?NUD7 ziV%0*mrfhvi6Lppg{Wa;1wk2qt)wUA?$X?Yrl&e5*SBtvaJSeT%GIX(%x;fAC-rO} zBbBm*_M;eRGnHuLN2xNE`neTBQtcDyO#EzPGqAb2S;AoWwo}eQ<$LPb!^$B)!kHtj zh(Tt(x7ojMm@!D}d8D@4W_w@As-OcZU7xQ4$(Z~xK16vWDY8cc8IYs=rsYQ$kToz4 zOFOx$$?R~ph<>f0l@8X_)SNHzR=8nfTfIj@%LGeK9)KkCh)GhNmTFM37x#In{t&yQ zsuR-V@~TNMs%saUIm+Xo>B-K~UcGRS?f20s{Gn!fti~>WYv&~G!CV}qBotTKf8^zU zE!T$t32JD*1aA#wz~?!rp53X`Z=S6(Y@b=y?ZVLzqL3D%(B^l;0QR2RtA`1XTDHqG zCbOwG)oJkb#MN8@gJItf!lmp6?Yvy#Oz?Tw=Bt)<{o6lf{VjYt;~4h!|T5PN3XQE0r+ias#plKX>%tK-by)IB%aNLoWQ_uIi6j zhzCG+1Q-l;8YZStE*D+%hoFKeP^Fn7LixYrX@3}C%Mi?soHR& zkVuL5Q zcbob?>+J>kh1Jh5#RW*xj{phX=w-qr+k|y$%!(Y49Fg1_2bo%JHDCyhiche#;o|$W z>r~x0RQ}HApHCVL$+sJH`Q@jKZAOA}eW8x4eV*?Y zMrE?G$GVG-DyC`{xMWH3j11VDm>YW4h~v6tCX zEA~M?;xnZ#`=pnTR0`~Un^!dFHmtS~qbV5!Ko%)=KC0{;_n!SP$$^vt#$)qvo2&LSkFo{ODFUrORw~&{AE^c}*5xb|<)KPVnXe_b1a%nB% z68V_W@P)qhB@+j<9A*HaXSRNaqaLOno=Va`PJ-rG!p%>o)cx&;x^X!MV-&vTj&TLu zLFO;$nCT1~t1kD~?k>+=%ov+>m}>Xjofm!T1Y}MI7h7yOWs~iWSl2!Z?ACx}xNWIM z9fY~vzjqZbXd&ju6fHK5mM&u=g+-z;!bo$_4|1AtbmUy!DB6Zhwbrfe>F+Lc4yiW^ z7E%Q3kF&S)gP|NI8wU7=JP!t2h)i>C|zahJ7%798UuV|L~Tfx6HYOc8FOrSumDtw86{9QLGY15yxr?~Yy*7TwHe$=PyR3;qG1CLeyN|&*B0k&ly`oe- zOv9aEvJ-S4f%#E*L^HhWE||MTGfv{8^>)Ivos>n8t_Jln4uqg4jV2ZebUf%p3~|%f zqDUNeesw1Am%=S#x`LdM912PJ73ICX)$Bor&}%=6;8Gcm90d6qRJF9bKHdZcoOb&d zL3%noE<-~dz}R7T>)djjPhrpa>)GOLw2h9(O?TJR3GwOO?(3$HT)vV$_kndZX>3_P z)lZlmMnNSfvD6|fb1rcU`tNGyTp?V-nZ++Vx87Vj@t1OLx3Z>X$i9o8VW7oIncM2c z;esw(M<1f(JqtQJMTjGYqC#j6neZZe2!L`S8P46tA8P0E2R*-^t#clO>ON+=xVSjq zuDfkN-)@8?XSJIF)vjj-KIA+9DX_YEQx%wdID~E1+wfD(a4=sFPJFTXkGv1JBTUo0xY5v{w#Vg1w+{e-Syq&xpGD!Qp00v>sCe_7hq zMFE;k+blXp6>o)QEDXtQiN`KM=MBWy=gQKj%WmH*>A1Zry5R@o#hb1w-*Tu{}5dC9y#aje{N(_x^F_jH?ZS+LBG&(d@p8wyt(o- z7O&0HfA0MR1^NhrLpp@$s!hSJ?I^*shr{Y^ZP574hEKhX%!cEURlPD_`OTHk&M-|g%(j$lB?zgZgga?_hDOUPdzw2$b8eqKox?q3Y zx}@(c=YW{G0N?QK+FB1B Fr)YzsQd*A;P;~MTM;$f+^yS9E9);1oVIg?@9CF!tR zL0;CtuX+b!S7aC=U%?&5Z}5Zwif?<=AXLG$lBivwWkA*k{wfo|#RG=*<87Y-M~$0d8W#Pkmk= z3lje1OGne-p?n0P!o9scA}6!AR~S^KNab49y&w%04sImzA?6K$X0DJn=bFZi!_U}`#`t3^l7qK zg|Nr&lM2n&gMng*e$8RXlrM4e2)f)7F~^&iS6q8+B08QpYDg0%n_kVIry&)4 zF3jYeRd6pmE+D_5M27F}%j4(bBI0=6%=~;%z2!7bssi}+5Mc!(+##5hMc|JfwlaVj zkhS@bzvi`Fkx-Kp04oDapLNot3Z*u>^e3ER39 zk+7Y*O&1|0GI&TY`bT8KL9i#opFF=paQ9!#d!ies*lV1PO9|5m5CxHvmnz<+ja0oNlU5QzX?C;NVg6geQZFlNSy zhZ1CxM!yC*OY|(Vngv55|8)+oZf-t-zx3Datl0Ycdc~oDWWH*&H9=>f%i+RL&~e1H zdFeA~y8+%SpmXRy$|3vpX}7e!Jssv(I>@bxXCq0HrcuPUy@bX%cBRMm`^f$^7jc+d z`F1`w*Le55$_b?t6+?W=nPBqDqS3Jmd&&tUCbXlD`JxPjulI%l1S%FOGN+4IBZv%9 zFYNW8We{`#y9#(*6ig>5;*KHUad3ftDe&ZroI?Ry5H|zaN6=05Txz0A09I@Ph?sTy zhczSrJ|xO{)S}eO!BGJTgFZgM*=CWug zLm%%g#{h71a{A8|D{q6dv%TYENkc<&(BUi%<|x68leoRTeT+FXNsa@*LIeR@9(dl! z+vcx>w)P-Br9dwZmhn0uQ~+ME45z1F2#|d@?^7yCLP8?W)0mBy=87pJfyFJ%8PKs} z<9&ma_Dy@!B!6^{&5=q#rEN5{2xE*Ug_gvzAI8;U$Muzy=^vbol&Dnnp8>&no}U_y zdt`h(e4pIi;Yu|Q^g>|@y%7Ol(4CPFT8e-@kYofQ?BA`RK%3ub2W{S@ncXx)mPDZIs3InTFtO`RYDpyCv-nW?6{f)JgKX;Ng;@Vzf z^soBIg$qJu@b(8#PNKZiwqwN2Q}Jx6goVj zY}J?qufNf^o_6crXWicVoUK8XH&m;y7sCO(NFu4}RY!tK)&GuWkk1ZnhJXb7L z^k8uvOC}6TpH(EfL#NET1T{kF-vkLN&L!FB%%qW<&oyd&Tvij@5C?P?J3EXfG%QK( z{BsG-@uCwa25+y)?|85&XCpdEK^n~Ppr<|T2~!~ezlU29G}tCt=%u1F4tt*;gisQ! zo_=H3TVLytMGbmIMy~DKYDPtAxo~3%L&}iC6LTc*24*z&AY>??c9C~N%b%wOJd`Y5 z&)dU+Y&dp66CGzB?sw&^^wh6F(hB+S+J@&ILtqPtgPmO^t=vS9gUuVLCzHh84Q5L> zw_WWR9Bbf(lpw~kN<11MES3bf#j`C{6801wlJoP><~qVysNH4xaCM(Qp3vAG;RBp9 zV`z6nqOJEV#INxb2UM*&-#*C&9RH_(R4`qF@<= ztNGQE!lDFEFq{M$RggULe_gRrg)6mG{N%Czz%srC(3iqqqWG*3`)A%L_@sP1kbYYX zdp8yeLqpf6Usz%M4jWZ@?}k!z0^9du6VvTfRr9*C5$Kvk+-H8`wmnAZmom*!aVRWY;14Uc@+$nag^TmyZVqXUY2kquH z`4tLaWiF~x+S#<}?hT>1I{nf-dO2kxUpK&=AfQ(l%fL4&gsb>rdUF{+r!7YK9V2Jc zcE11**MGSyHSxi6M!cMZBl#>EZwCp=fdsrbCCe(mPIZ5&omkVe3gnF`noQT63uTig zWQV|P)+|LGRwokF)N6=pyxaSr_9TW9D9VaUgVw@TR`idu$ca3Mh| z0&O17@xey-wnrJhiC8MS7n;ailP}3vs=%h>0}&rwe&X>_wJ%LDL6JRVWWu?g1>cDb zicE2z=tD7H9Crw@!A`49kqI=6?#9V-D$>`(FjC_jX7GJ~dH_=eXY>=ZM+y6)ABXwW z!l^o85R*Zcv3(0kGV+#-3u016gJR2|+v(S^v_{W|@gW>8hfMjw}<_bV`SWfYfM2x_dMR-OT_|N<3`{BKq z<}V!0LNfjMJ1O-8T-RlCv(B35O;muuqy6l$(ARsd+qDOeB9p1gWN8YcL~M|S`l}4N zk0u8S!pp3aUwKGWR$^##kXf<5+^k9SPICNl49v~jJAeDuL`Hf9+eLI%o~YJ~;>^nv z`;^>$7j9*zJ8+780G+0k>gPLA3{m%S=`(YDz5sxMIU6qI`3e#8f@bybrQrz{=}@ZQ z#X~X7V!+je@}1PuftjcS3jWWrrQ$f|VOAXXh`Fyilz!R`Y&WqaID$+Gk*rPw1%f+^ z7$SzwzTx{4VLB1Pig%aYnWIDcuC<>#c-+2-X1PMHlY{9TK_^?&U?U9*%PBUvaF z5uo?(-N)9}oSAC#XfSr#+tid+Liic}=O(?W3Ud{uB_8qlHTr9+_f#@HybnyjU0Xj? zJox30qF^aBB3B|Rw5kOpf7M9~6nc;TtUKGYR>bCM7EcK{9^dC^^6V3RqtnZ4(F-?} z#7vvQP7-2i)P5C5Z<`Z#f&SB;+k6}<66)uPf7{%!J@I$KiKi) zg#~G)_Z$UNB>&{z;WNvY|Kjt31bl4q}usP)|`cvS!{fE_Q)uLHqi&m0ner#O}csS}QWY5I!GW#u-?@&>kTCyE3h{F}TteSUp-mmlAK|Fj}X`TRdthv*stq+yA3{U^J{nCr{V znh)b;{DSPk)<1*SBh=;tK~sJbqjb;6$Vlv~JPrNEGW}&q&?Ftrz|;ihlg!RK17zGkKag9CLLe zo+o`%?gzEnVD%Qet{1fH_j3%9kVF&Ok&&VWVz_@(-4MPKQmIICJh^Y_L@s1CcHT`& zo2pS(n`;9TtTiRK)vDP8$Jg`qS({&6q^8rLCyxx-n*7R@lYP^AQ)-l8C%pUWrqT0& z(B28cQ=g|SpQ_|8h0BjyFNgdl_J#6z--#lXT-2g##veH;b9_}JVVxNq<+I+(5IKYn zo`FC$iPcvJ@;|--SrL*4&SldV>3`aq7jF5)vkeNRut3LJxUZIWaR9oQe*n zh5&H)*3Ad9;D{nFE1L+mcX4|eg)zyW!*0qc$9qZrIF4g~H2KvEemmHY&b97e#qb9P z9H*z229rkMk*o$i37cyW;Lnw=JDjikL%5aiP{pUnnFEN!TN3M(x%{sx(SP00nMQT* zL^E9W_hOE=FK66bn@%xu=CzaJqZ`}yp5Ri#_c|`!Up#vTx1$56vwz7RbHN<5e15pL zVKg~bPnEv0i`p3Ve~F@vcsR#J@H;YzZp$yec_G<_(jA>m ziGZ9Gy`h0!2@ceKT@6s-RF1E98b)y|ebPq#8fd^21*!|z==d!^Cb6!=13(u)*n!cH zy;;TP3J$$}>E^D~RAZbnWs-7R$4T+ykT7FVAbVf6kHo>4_0Xi=ezCPs;7EeM;L;9* zzUEeIl{s>&>PVUC(#NR;1OVHvgM&7$oR9v#A`QqY^ zw*XBqI6U3P25e1z)c-X%H>aV=3#wVHX;sjz#yB^}gW{$%&vQ zz2V$Vq@CRJ4sg$tsc3E4`O%oqDLZQEOk;pispL(`%nzaCR@I`Mq>S~K%&EYSnHja) ztUn1!$;^HN3PAS!ciJt4?$T;#_(w1boO{7DiuD3W zv!<7TAR0xX#{_p(Ea<8q{k2%smiWAx2_XYR1`ilK+7#83nFYBCZk^WM+Ds!xPc*{B}%>d`aMf@drYR?;%4l+Q?mER;I=(|>Vc#baDYP0Q02lncSFYtRM^;^8- z_c1Rn)MNju!D$G42wV=%TB6r3aA{-VhA@CE@7tU$T}{AT=w{bxO~8XO8x1o|+ffoX z&f9p3P>_Am3wC|<3*02|ySuyBou^}d6BQ<}d)e&hUPYCy%2lc4=X3G&@lwTRyL1D} zyhHQ`WkJwq7o^#~TY+O=NgrvZTPgQGa(U4~!%ZpwU+g4s@trs~uT&FC9!?|>EM(^Y zK9SepTcxUj$NVs7=8Qyb4Rq)8oJI^24*OfxId`r7+(0xdX!19^TKxC50HOAb z`^mgU{>+l1`ApEGu4IGbN++sWAx-6vEaur$nRZTh!Y>uB?U38w^l{*p9_@%*UmvZI z)tb@cgfte$_0PFC3er)3actqws3EEI&1ZRNo(rg=kNc0+@rNX$xk!WPUZuZzCNq1h z;f93e1~mQO?}{@JmI~CmkOQ6p@LZ1|oFWasH#8*6y06arthCT_U*`oZukcG*u0jLD z2eJvxKW4_AU(U>@d0@^DVI`DVEugfc4Ma}_%p33wG*c*kA}}6fP9sNOvW8hAYi7GD zBg(!=J@m}xfUGjvi=cvHnEasaQ#tO4qSI3IWs?8Mt=U0B&{kfk`PW$M6~($|yEg#8 zL@HnxvHJ05ZTfXJU(89>neQphM1PCh;@`Pw^#1p6fzk8W=P*jFyl_g0Kka--3x>_z zAZONS$D#>U)6T$oy`rkBSFm|W3CvxfQ1M;d4KRE>J``Lb(Jk;=e+Q=xVhQFi?Z!qtDPmK$36 z5`{!I-h>-kPT)Q%3z4YZ4c?vhaE7F8DAKna_{D6`lRyF1?aH1UJ6GzQ@U*n^MHtVX zIrW9kP#mYtf7Q@S-nD_Q;bCN+Q3gt~K(j4%b8|NgOQ_HgfJh|9VfFyURfjCzYh8)} z;rX}knTN^pC%@c34rj8Rs1aBYSKwdWRfeoy407V+Peg=P+Sp!YmFlp2M>FR~Oduz~ zSa;pL$Hoh&2|BoW9a)>ZAAo*F#nO4HLo&e5R@_?lgj78TkX)Kw?bA$GMF5g6ESaA) z>-k%y1j*0NFDFwCT^H4h0t==R#ne}Cya)iRDhXp#Qx5vK7tN$s|J_Jwl;6WSv`#s_ zOLTc(Bi)gt_Ut>$KANjzN9KWc?40*U33n<3>&98gL|gO9a+gMzKCi4+A0nCc8=PaXJ^FO zOh6z|(l3TFEzdV-2evHnwK6_-`|;!KgdRi4?kpxik9lHETB?Q+C)bjih%2E1huR^! z%76FvtA8XGV0SU0=+N)Hc<|fgOi!sqP~n9}qle_NFIVRZfn(VNRDcbw0XV90u03#` zVIp6&E9Q~Fq0gZq@iF(E~wnXV{?uy1YL&|#?%CvLgVbD0m4x#V>xM%h?0 zZR&=Ls4C7{bIzM~WHo(aezi@2y%Z7(O{8OKA%y>zK+0aHIAJakV{KtbU=} z_AlYXm*9xWP4U|U@^{C>N((2ad-E56{4V_j*&zZDJzVw?4_q&3sR1!=kl%g)J~VO; zAhss*!b3%KZ*S9>EiVrYB@JmchwyoVm8B5}>Ycg=`6aQBB#=%w7>GQkj@w4V(kr?M>IoBt z8%x74BEnA+HssG1z#H>ND!~EO1e$TCfTi2uIMd}4F&9{u&uU9)8dWD*57zD{3~n2o z%$u%L(bU~0D)pJ=KAaVrAX-K3C|+yCPEYc_AE*z&*xc6iy1DIYNrp_^UXiGY8^xrF z^A6BL;Q4-GKFyd^k=^}6*5EP{r#7s6%I3ba{MW93g@0dWp0fPKh1Rx43{%g|%n&Rh zpWE85RhmARVgyTRsWWvt=O){(ZZJd|03*afBDS(!>eBo>PK#$1H(<+DBKYI@&sP;n zCazcF*;+rhVc3hE5?`(sA!)d0bw82mtosiobPa1f{+1mteD3W{sZs;XXup3w3o;jX z!6D*p%gFr)`?c&uo4)`PawClG;|s7`djqV25OABz7&BsQqplJkbYXU->B`4}LB(wc zGo8jk{0c-pM*#LdE+Iq*m1w-~WoSyQF3PDrSQ(TvKJ(%gO-2HJ-g>*hTJSG`G05nd z!CwnO%4u9qYwqj`>#1wQ?&qEHWla1cvE77_iwAVVH`kqK6R4)VJ4pG!uNBOG{{A+8 z_in{nK}Ub$K$y0%O16ZyqazyPt8hJhS@$rGNK8(MoZ)G zn**z+$dejUb@G2@ZjBWQJT{@F%rEaPbR#`hb-?W60T756*}Bgj(J?fW+oAk{1bB|O z0w^&-8VPC>xQaLd%?L_M_p;{Sl3ayTS~k~E#;t%M36ym%djgHqB+y8fLdTyT zA!qlDl_vLa#+?JtZffc-Uv{R`vHcarQs85>*hY#-vD;E{~1uq)#uD5@M~ zGo|MRv%Z)J#C`3&Y^QChs;YARkP^*eHv$0U8&6aejppO$zd;gZJ~5x|2ygp8GF5&} z`9Sv|8K}b;4;_2DNdvQ9!d)?e?wwprKGf9lg8b#KA;P$@Pl6|nzdHTOwk59Y_QPW? zZEohfJ54A5JUqz5EY$+X5nBl?H%br5*bl%6k+<;2t0#{|rfiyBAhGlAtduszn{Jp> z>!mPxX5HH=k9s!-8>h|rr1>(ul7$5e74}r`+6n;PFR@+8%V`Qc^FDJC4lR{}g?EiR z2U{{~EUw>p{wObq%VOLs2`qiMF^>#EICaz=qBd&!zTLSwZN7Ov`|^yXIG^Ioa*xpI zrocP&663yuC@cWLpqdr@;<1mad*xPHQ5!IsWQT!Mz7Ga7O)o7ReqVNC*@431VqB2- znl1Tn7N;=@w*`#xk0l zG0N?5zWkv(L7%qL+8si*+Y_?@cJ0gtB#CJCxZEgRCrFKUPx3kMaL1dg1Bd6bAmIRG z`wX%q4Q{#qy9=cN^v;`?icP7p3rn)|S^929&{OW!^a0hXf;c>Ct1WL=%K_KP&@{nI zF0-xZ<%si*Oz+neekUjEvFgubw-V9Yu=XJWk^SGa0qsvo@G96S+zAu#Reqp`zwpqI z(nUg!I3-RGgJ~{8|6AdWh8oa{(mQd=Ixn`WZm{LL1!{bVLo7EN zyUG;7hXuIHKw@;%C?Wpo>W~)RY^;0_@}y%hSJ*6j>ECyQI*{+~Xu|G1VU!8C@(T!< z1iQ9{z^$%_(&T~AkDl7xt%ng*W1@EpM5?cc`SyrpoP6qnOBt@Q(c*5t+B2K5h@`(f zr4($@Dn@`V#M7I%*5dP4D;v-lhsz2C9(<);-Vz!m+r(ftZf>AkkL`(xqWKbAQ2Ju) z;&v;)bsG#Whm8)m`7*;JctQT05I>mE`-Ph|H8k3I| zmOZi;)g71gHmQ8`#46>(DO-veq0)cSN40&9Pj*DrBGU<(8;$5|CGv7T_gA8zY)_Op z)?@(aEq@2f{lNNAZ^VY$4-rhmPvdL;-o%ydQZfmKyw3P}(B2F+YddbVDEb1-AzeH60 z-t+itr1-OB$?NpF0rz8G(tQ;OS6nnDl3*TMw&O#$-xcm{;QT-l=?a?)-a~B^rsoVR z^N}>Z1*~kyt86=&@#sf~ZJlzfjqVVi7d1>Z%6+-h=^H%DfWi$~HFXkF23?jXCnxBY z5X@IF?~y(An^u6!l8`)hrt|AN)m`59+Jm$GxBnPBwZr_OJnx1>X=5|)^8DU8)Dh8t zA~z}e%B>aVnyUG=NKPrb3duzwA|+*}Ln!w0;UW=~qB~OfTc2uoI0BMfeA1ILcd+wx z?mV;(G1Q@|65+I6)GHTv52ZYCC$V|?-1!ICN+!e$GbScN<^gNNC?VEVgELdgl9l1z z%0XK?Xueqp{K+<;r<&Ag0{xD0Vxpg{3R<9O60hG-u=&A>IIWxL$5w)$+hrzH!zkMa zujEu0Cr9QH>21Bs8)~=R@W%8a$)k52VApxDv6k{=i>sWnTP}1HR6#I;-K6CT*Sxu9 z=8p*wQR4{?p05s23jGOZ4o5e-S0gc%m0U1~K^DS3CNRhlugOHjh?O9RPZ>S>s46sn z-lR|sz+JzTOn8_})D?)!@}4&ch_(gW+zGBDgt4zSJ&pMT*;_~wuj9|lorNybmcDhN zFDmGQ*N0%pr@9~{8`;|W_}1h#oY?iVPCPNUySlyoZEF%XS*y2Am$AabToN!3i&Hsc z?~;MIvZo}mukVrxg%bda&ZAE0ZVO$q04}1jN{iAN{4ZQSe+qlu9Q;Pn7ar*^B217< zlrOv012_2e{^=gI16igG1#UdGSUK@uyR|Qa$c~JsWx(wQt73u?t$o+|@!d|k>!mVM2Q|GREo@BthYX)Qug$bqZGSvoVY8J7Nmp{E2 zx|6-b_WJsM)KZVYHssMD!oAJJ9wN;LS9Ib|Ziv4l*`!K=(fswXJReNu?FLPY3X=|x zxhi-p&mD_|&0i%%oSAaGA7Or=c89UJ5SRHnj>H``iskxuBx+SpIQAxDrqg=mvSNG#46 zP6IlSy8;|XhMqT;!{?Z&kpM_iNN+40{VK>_dMRptdU>pS(Q{K8&`N0oOfabuQw&v& z5I87(5&@M^d1BkDQS(&fR$JF5^p{C!G$o_1^>4RiS^C#0i$FCl4<4TiR{x_qYCC$Y zmUlt>g>e=^K7)l9+d&kj@?~!n!w+0%=TcGNU-YwN`;*K~-!1de#mjec*Bt7r5skj5 z6Rm#RDPtSAl5tRUga9>HpgbhFY#?Oe;5OY_oSw_+tzOf5el=c!(abku=vC)#-cwhG zf%^m4RRP$C&Db~xM20=8fpJL9zDt8#)vgd4N%yS?G(i5atdpZbNj0-?EX6Zg{f?B) zdBYMP&Fa6FQ*YfD_a5mEVKAvy6J?LPn|YTv{?DPr7a7={C2JvGX)he^hr8zxQu{bI zjnU?#5lOLChdh-~3g}esL2>?Et5!YclkudJyzhk21^Dws^$E>c<5rDn^y#R1N0?=Q zFSj-K%gN3Cb;)&?;;%6Nk0G~H0FL{n;4RPMeS*L@B8lpXRQPT7UTi*j*P#HT)K-YP ze16VfS(k3=P+ELuLPdKodjd0w_iESt<>ONL%54NrFx27C)Dxd_g@*R-RliW_hYuq` zAw&H6c~H70*HViYZj2J7#$?;(JsQJDN=hm&CWhNs|GKWWV@TQ3j|risHcYikcebQm72?;QT#pGjmtbGZ{S*nTm|ESlxT#9}Vj$SlQrq7xBu9hMC+BVBL}h-n$MVG(gF2|WkK>G) zP=ABPeMP}TlVE0H5oHk1I1t22pa6*HYHRR@S-$^3tU7WLwDA*FJl#$h?)I+O1ezKp z@>4Q9kIzgMYR~WYu8kr!6O%n&Yc!EzMe(%WoTv!H*RxU{oF0i=L2YuP>l$)U?OG$m zZE#-_)R+2d8%d1z*Bb9URJ8@#CX4}J(*esxZq>r#lR zL_mKxy_M#H{|D&n+Pbap+;=EqV@bp&8B?@vm^&!?*#=rhsN(2G+H-$+aqV3r%KeKt zx6+t2EiDa1Ys-xIVyuMz83rs`7qL)7g&9uq{s`N2-Ro6;KZkmm_x&t~NLl6B$DXDe z86lM*r+-FCG)8aT_?fm~5MUIUT{fBYr9U|$3!g_E;+ifPe$KE8zKq#ehc-sa$%r~m zzfcs_#{L6Kw!juVjgradS!F@o*nV!BCQnj6;X|n+d1si6;PsFH?NL77b=$Bfo(UQzW9V|?xvbz| zz;;}1jxT(EiE$XqA4nZ>23u&>y;1vXn2?~8G#ua&W?$Q7lu2Re$I<``k~x14mPk%! z_Utkbb9#yk__7~IEpv?>-m!e!9~ypM){;GZ?XkP` z@d+&eY6k5tPj^MM?;$judOb!RMSr&nfk$SrcNLFPPNXct1E#`G2`YdN)7f}S!S+bJ z45x#iKiOwUW<`9i+xs(3R|S})_N`X*-BVwE(r_GxkOSdF6i;x7J8juy$Ni4OJn>1E z>wLB(QsE(~^YRbewtuP*kk^^dXyd>)H=l#+nE3YX_~786?lLR@5q^YwhE!g&1)Lhq zwGxv#6ns8ET3X7~PLl1XiX($)gzT#9XM29l+b=7mEv6R|+|~r|HE*A)^lwK=ZHT;g zF1BXdNSL<`$SN-@dj=+FHNFqyEbRj!ODZ5SDQRMDjWtO6zr6yHMww`!P>%&@9kqlU~VhAa5E zbdg&}E*5Vs?lWam0-&9kj)kRsdfNDrcH=7JC-Ra|(m^Hg7J!)Z8ra_6&|9h;Cf?Y)q^pg><=s*~X5_BYER z5nArEE)WbemI;^xb~eHzg0o}1sCojYJ!YvrmTSIzGEX!P2pRA{Z_AZCS|Bi=-uCOW te~9?*7@X-w|5mMd{F(Uw^>U=VAJN}HI{aMXnHvB;o~Y`m)GFCV{SSV#nqU9` literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/logo.png b/src/renderer/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5e3f13e1c22d3345f93b048d40051c08ded6d22c GIT binary patch literal 50771 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 z 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 U { + return ; +}; + +export default KBreadcrumbComponent; diff --git a/src/renderer/src/components/card/KDeploymentCard.tsx b/src/renderer/src/components/card/KDeploymentCard.tsx new file mode 100644 index 0000000..4f41a3a --- /dev/null +++ b/src/renderer/src/components/card/KDeploymentCard.tsx @@ -0,0 +1,69 @@ +import React from "react"; +import { Card, Avatar, Tag, Dropdown, Button, Statistic } from "tdesign-react"; +import { MoreIcon } from "tdesign-icons-react"; +import { K8sDeployment } from "../../response/K8sDeployment"; +import Style from "./KPodCard.module.less"; +import { useNavigate } from "react-router-dom"; +import moment from "moment/moment"; + +const KDeploymentCard = ({ deployment }: { deployment: K8sDeployment }) => { + const navigate = useNavigate(); + const deploymentCreateTime = moment(new Date(deployment.creationTimestamp)); + function clickDropdown(data) { + let value = data.value; + if (value.type === "podList") { + navigate("/k8s/pods/" + value.namespace + "/" + value.deploymentName); + } + } + return ( + + {deployment.namespace} + + ) + } + avatar={ + + Deployment + + } + content={ +
    {deployment?.name}
    + } + footer={ +
    +
    {deployment?.imageName}
    + + + +
    + } + > + +
    {deployment?.name}
    +
    {deploymentCreateTime.format("YYYY-MM-DD HH:mm:ss")}
    +
    + ); +}; + +export default React.memo(KDeploymentCard); diff --git a/src/renderer/src/components/card/KNamespace.module.less b/src/renderer/src/components/card/KNamespace.module.less new file mode 100644 index 0000000..c6b99df --- /dev/null +++ b/src/renderer/src/components/card/KNamespace.module.less @@ -0,0 +1,30 @@ + + +.loading { + display: flex; + justify-content: center; + margin: 20px 0; + min-height: 300px; +} + +.radioContainer { + background: #ffffff; + padding: 20px; + flex: 1; + display: flex; + margin-right: 10px; +} + +.radioLeft { + flex: 0.1; + line-height: 32px; +} + +.radioRight { + text-align: right; + flex: 0.9; +} + +.cardContainer { + margin-right: 10px; +} diff --git a/src/renderer/src/components/card/KNamespace.tsx b/src/renderer/src/components/card/KNamespace.tsx new file mode 100644 index 0000000..b201899 --- /dev/null +++ b/src/renderer/src/components/card/KNamespace.tsx @@ -0,0 +1,68 @@ +import { Radio, Col, Divider, Loading, Row } from "tdesign-react"; +import { K8sDeployment } from "../../response/K8sDeployment"; +import KDeploymentCard from "../../components/card/KDeploymentCard"; +import Style from "./KNamespace.module.less"; +import React, { useEffect, useState } from "react"; +import { httpDeployments, httpNamespaces } from "../../module/Api"; +import { K8sNamespace } from "../../response/K8sNamespace"; + + +const KNamespaceComponent: React.FC = () => { + let [loading, setLoading] = useState(false); + let [namespaces, setNamespaces] = useState([]); + let [deployments, setDeployments] = useState([]); + let [defaultNamespace, setDefaultNamespace] = useState(''); + useEffect(() => { + httpNamespaces().then((data) => { + setNamespaces(data); + changeNamespace(false, data[0].name); + }); + }, []); + + function changeNamespace(loading: boolean, namespaceName: string) { + setLoading(loading); + setDefaultNamespace(namespaceName); + httpDeployments(namespaceName).then((data) => { + setLoading(!loading); + setDeployments(data); + }); + } + + return ( + <> +
    +
    + 集群筛选 +
    +
    + { + changeNamespace(false, data); + }}> + {namespaces.map((namespace, index) => ( + {namespace.name} + ))} + +
    +
    + + { + !loading ? ( +
    + +
    + ) : ( +
    + + {deployments?.map((deployment, index) => ( + + + + ))} + +
    + ) + } + + ); +}; +export default KNamespaceComponent; diff --git a/src/renderer/src/components/card/KPodCard.module.less b/src/renderer/src/components/card/KPodCard.module.less new file mode 100644 index 0000000..e619dae --- /dev/null +++ b/src/renderer/src/components/card/KPodCard.module.less @@ -0,0 +1,48 @@ +.panel { + cursor: pointer; +} + +.name { + font-size: 16px; + font-weight: 400; + color: var(--td-text-color-primary); + min-height: 45px; + margin-top: 10px; +} + +.description { + color: var(--td-text-color-secondary); + font-size: 13px; + line-height: 20px; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + margin-bottom: 10px; + margin-top: 10px; + position: relative; +} + +.namespaceContainer { + position: absolute; + top: 0; + right: 0; + height: 20px; +} + +.imageName { + color: var(--td-text-color-secondary); + font-size: 12px; + line-height: 20px; + text-overflow: ellipsis; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + height: 90px; +} + +.footer { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/renderer/src/components/card/KPodCard.tsx b/src/renderer/src/components/card/KPodCard.tsx new file mode 100644 index 0000000..d30931f --- /dev/null +++ b/src/renderer/src/components/card/KPodCard.tsx @@ -0,0 +1,96 @@ +import React from "react"; +import { Card, Tag, Dropdown, Button, Statistic, Row, Col } from "tdesign-react"; +import { MoreIcon } from "tdesign-icons-react"; +import Style from "./KPodCard.module.less"; +import { K8sPod } from "../../response/K8sPod"; +import moment from "moment"; + +const KPodCard = ({ pod }: { pod: K8sPod }) => { + let cpuUsage: number = Math.floor(pod.cpuUsage * 100) / 100; + let memoryUsage: number = Math.floor(pod.memoryUsage / 1024 / 1024 / 1024 * 100) / 100; + let limits: number = Math.floor(pod.limits / 1024 / 1024 / 1024 * 100) / 100; + let podCreateTime = moment(new Date(pod.creationTimestamp)); + function clickDropdown(data) { + window.electron.ipcRenderer.invoke("createLogWindow", data.value); + } + + return ( + <> + {pod?.name} + // ) + // } + // avatar={ + // {pod.namespace} + // } + footer={ + + + + + { + limits > 0 ? ( + + + + ) : ( + + + + ) + } + + + + + + + + } + > + + +
    + {pod?.name} +
    +
    + {podCreateTime.format("YYYY-MM-DD HH:mm:ss")} + + {pod.namespace} + +
    + +
    + + + + + + + + + + +
    + + ); +}; + +export default React.memo(KPodCard); diff --git a/src/renderer/src/components/card/KPods.module.less b/src/renderer/src/components/card/KPods.module.less new file mode 100644 index 0000000..c6b99df --- /dev/null +++ b/src/renderer/src/components/card/KPods.module.less @@ -0,0 +1,30 @@ + + +.loading { + display: flex; + justify-content: center; + margin: 20px 0; + min-height: 300px; +} + +.radioContainer { + background: #ffffff; + padding: 20px; + flex: 1; + display: flex; + margin-right: 10px; +} + +.radioLeft { + flex: 0.1; + line-height: 32px; +} + +.radioRight { + text-align: right; + flex: 0.9; +} + +.cardContainer { + margin-right: 10px; +} diff --git a/src/renderer/src/components/card/KPods.tsx b/src/renderer/src/components/card/KPods.tsx new file mode 100644 index 0000000..281e57a --- /dev/null +++ b/src/renderer/src/components/card/KPods.tsx @@ -0,0 +1,45 @@ +import React, { useEffect, useState } from "react"; +import { Col, Loading, Row } from "tdesign-react"; +import Style from "./KPods.module.less"; +import { httpPods } from "../../module/Api"; +import { K8sPod } from "../../response/K8sPod"; +import KPodCard from "./KPodCard"; + + +interface IKPodsComponent { + namespace: string | undefined, + deploymentName: string | undefined +} + +const KPodsComponent: React.FC = ({ namespace, deploymentName }) => { + let [loading, setLoading] = useState(false); + let [pods, setPods] = useState([]); + useEffect(() => { + httpPods(namespace, deploymentName).then((data) => { + setLoading(!loading); + setPods(data); + }); + }, []); + return ( + <> + { + !loading ? ( +
    + +
    + ) : ( +
    + + {pods?.map((pod, index) => ( + + + + ))} + +
    + ) + } + + ); +}; +export default KPodsComponent; diff --git a/src/renderer/src/components/logs/KLogs.module.less b/src/renderer/src/components/logs/KLogs.module.less new file mode 100644 index 0000000..e69de29 diff --git a/src/renderer/src/components/logs/KLogs.tsx b/src/renderer/src/components/logs/KLogs.tsx new file mode 100644 index 0000000..60aee0b --- /dev/null +++ b/src/renderer/src/components/logs/KLogs.tsx @@ -0,0 +1,11 @@ +import React from "react"; + +const KLogsComponent = ({ logs }: { logs: string }) => { + return ( +
    +            {logs}
    +        
    + ); +}; + +export default React.memo(KLogsComponent); diff --git a/src/renderer/src/env.d.ts b/src/renderer/src/env.d.ts new file mode 100644 index 0000000..6dfa2f6 --- /dev/null +++ b/src/renderer/src/env.d.ts @@ -0,0 +1,12 @@ +/// + +// export interface ImportMetaEnv { +// readonly VITE_APP_TITLE: string +// readonly VITE_APP_BASE_URL: string +// readonly VITE_APP_TOKEN_KEY?: string +// readonly VITE_UPLOAD_URL?: string +// } +// +// interface ImportMeta { +// readonly env: ImportMetaEnv +// } diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx new file mode 100644 index 0000000..681f772 --- /dev/null +++ b/src/renderer/src/main.tsx @@ -0,0 +1,17 @@ +import ReactDOM from "react-dom/client"; +import App from "./App"; +import { HashRouter } from "react-router-dom"; +import store from "./store"; +import { Provider } from "react-redux"; + +ReactDOM.createRoot(document.getElementById("root") as HTMLElement, { + +}).render( + // + + + + + + // +); diff --git a/src/renderer/src/module/Api.ts b/src/renderer/src/module/Api.ts new file mode 100644 index 0000000..b91fd60 --- /dev/null +++ b/src/renderer/src/module/Api.ts @@ -0,0 +1,69 @@ +import { HttpRequest } from "../utils/HttpRequest"; +import { K8sDeployment } from "../response/K8sDeployment"; +import { K8sPod } from "../response/K8sPod"; +import { K8sNamespace } from "../response/K8sNamespace"; + +const request = new HttpRequest({}); + + +export const httpNamespaces = () => { + return new Promise((resolve, reject) => { + request.get({ + url: "k8s/namespaces" + }).then(data => { + resolve(data); + }).catch(error => { + reject(error); + }); + }); +}; + +export const httpDeployments = (namespace: string) => { + return new Promise((resolve, reject) => { + request.get({ + url: "k8s/deployments/" + namespace + }).then(data => { + resolve(data); + }).catch(error => { + reject(error); + }); + }); +}; + +export const httpPods = (namespace: string | undefined, deploymentName: string | undefined) => { + return new Promise((resolve, reject) => { + request.get({ + url: "k8s/pods/" + namespace + "/" + deploymentName + }).then(data => { + resolve(data); + }).catch(error => { + reject(error); + }); + }); +}; + +export const httpAllPods = (namespace: string | undefined) => { + return new Promise((resolve, reject) => { + request.get({ + url: "k8s/pods/" + namespace + }).then(data => { + resolve(data); + }).catch(error => { + reject(error); + }); + }); +}; + +// @ts-ignore +export const httpKubeConfigStr = () => { + return new Promise((resolve, reject) => { + request.get({ + url: "k8s/kube/config" + }).then(async response => { + // @ts-ignore + resolve(await response); + }).catch(error => { + reject(error); + }); + }); +}; diff --git a/src/renderer/src/module/Log.ts b/src/renderer/src/module/Log.ts new file mode 100644 index 0000000..ebfe859 --- /dev/null +++ b/src/renderer/src/module/Log.ts @@ -0,0 +1,15 @@ +import log4js, { Logger } from "log4js"; + +log4js.configure({ + appenders: { + console: { type: "console" }, + file: { type: "file", filename: "application.log" } + }, + categories: { + default: { appenders: ["console", "file"], level: "info" } + } +}); + +const log: Logger = log4js.getLogger(); + +export default log; diff --git a/src/renderer/src/pages/AppRouter.tsx b/src/renderer/src/pages/AppRouter.tsx new file mode 100644 index 0000000..8489a04 --- /dev/null +++ b/src/renderer/src/pages/AppRouter.tsx @@ -0,0 +1,42 @@ +import "../assets/app.css"; +import React, { Suspense } from "react"; +import { Route, Routes } from "react-router-dom"; +import routers, { IRouter } from "../router"; + +type TRenderRoutes = (routes: IRouter[], parentPath?: string) => React.ReactNode[]; +export const resolve = (path1 = "", path2 = "") => { + let separator = "/"; + if (path1.endsWith("/") || path2.startsWith("/")) { + separator = ""; + } + return `${path1}${separator}${path2}`; +}; + +const renderRoutes: TRenderRoutes = (routes, parentPath = "") => + routes.map((route) => { + const { Component, children } = route; + const currentPath = resolve(parentPath, route.path); + if (Component) { + return ( + + } + /> + ); + } + return children ? renderRoutes(children, currentPath) : null; + }); +export default function AppRouter() { + return ( + + }> + + {renderRoutes(routers)} + + + ); +} diff --git a/src/renderer/src/pages/Versions.tsx b/src/renderer/src/pages/Versions.tsx new file mode 100644 index 0000000..531da69 --- /dev/null +++ b/src/renderer/src/pages/Versions.tsx @@ -0,0 +1,15 @@ +import { useState } from 'react' + +function Versions(): JSX.Element { + const [versions] = useState(window.electron.process.versions) + console.log(window.electron.process) + return ( +
      +
    • Electron v{versions.electron}
    • +
    • Chromium v{versions.chrome}
    • +
    • Node v{versions.node}
    • +
    + ) +} + +export default Versions diff --git a/src/renderer/src/pages/index/Dashboard.tsx b/src/renderer/src/pages/index/Dashboard.tsx new file mode 100644 index 0000000..512d018 --- /dev/null +++ b/src/renderer/src/pages/index/Dashboard.tsx @@ -0,0 +1,17 @@ +import KBreadcrumbComponent from "../../components/KBreadcrumb"; +import React from "react"; + + +const Dashboard: React.FC = () => { + const breadcrumbs: ({ content: string, href: string })[] = [ + { content: "仪表盘", href: "/" }, + { content: "首页", href: "/" } + ]; + return ( + <> + + 首页 + + ); +}; +export default Dashboard; diff --git a/src/renderer/src/pages/k8s/K8sDeployments.tsx b/src/renderer/src/pages/k8s/K8sDeployments.tsx new file mode 100644 index 0000000..1c17253 --- /dev/null +++ b/src/renderer/src/pages/k8s/K8sDeployments.tsx @@ -0,0 +1,17 @@ +import React from "react"; +import KNamespaceComponent from "../../components/card/KNamespace"; +import KBreadcrumbComponent from "../../components/KBreadcrumb"; + +const K8sDeployments: React.FC = () => { + const breadcrumbs: ({ content: string, to: string })[] = [ + { content: "集群", to: "" }, + { content: "服务列表", to: "/k8s/deployments" } + ]; + return ( + <> + + + + ); +}; +export default K8sDeployments; diff --git a/src/renderer/src/pages/k8s/K8sLogs.module.less b/src/renderer/src/pages/k8s/K8sLogs.module.less new file mode 100644 index 0000000..73f26d7 --- /dev/null +++ b/src/renderer/src/pages/k8s/K8sLogs.module.less @@ -0,0 +1,66 @@ +body { + +} + +.logContainer { + overflow-y: scroll; + //width: 100%; + background: black; + padding-left: 10px; + //scroll-behavior: smooth; + //will-change: scroll-position; +} + +pre { + font-family: 'Consolas', monospace; + color: #ffffff; + font-size: 12px; + word-break: break-all; + overflow-wrap: break-word; + white-space: pre; + //scroll-behavior: smooth; + //will-change: scroll-position; +} + +.loadingContainer { + background: #000000; + color: #ffffff; +} + +.logToolsContainer { + position: absolute; + right: 5px; + top: 0; + margin: 0; +} + +.logToolsUnLockedContailer { + font-size: 30px; + color: #0d7a55; + margin-right: 10px; + cursor: pointer; +} + +.logToolsLockedContailer { + font-size: 30px; + margin-right: 10px; + cursor: pointer; + color: #a03f46; +} + +::-webkit-scrollbar { + width: 15px; + background-color: #f5f5f5; +} + +::-webkit-scrollbar-thumb { + background-color: #888; /* 设置滑块背景颜色 */ +} + +::-webkit-scrollbar-track:hover { + background-color: #f1f1f1; /* 设置轨道hover状态时的背景颜色 */ +} + +::-webkit-scrollbar-thumb:hover { + background-color: #555; /* 设置滑块hover状态时的背景颜色 */ +} diff --git a/src/renderer/src/pages/k8s/K8sLogs.tsx b/src/renderer/src/pages/k8s/K8sLogs.tsx new file mode 100644 index 0000000..fb98b20 --- /dev/null +++ b/src/renderer/src/pages/k8s/K8sLogs.tsx @@ -0,0 +1,141 @@ +import React, { useCallback, useEffect, useMemo, useState } from "react"; +import Style from "./K8sLogs.module.less"; +import { getUrlHashParams } from "../../utils/utils"; +import { Col, Loading, Row } from "tdesign-react"; +import { CoreV1Api } from "@kubernetes/client-node"; + +function getK8sCoreV1Api() { + return window.api.k8sCoreV1Api(); +} + + +const K8sLogs: React.FC = () => { + let api = null; + let [coreV1Api, setCoreV1Api] = useState(null); + let [logsContainer, setLogsContainer] = useState(""); + let [windowWidth, setWindowWidth] = useState(1130); + let [windowHeight, setWindowHeight] = useState(601); + let namespace = getUrlHashParams(window.location.href, "namespace"); + let podName = getUrlHashParams(window.location.href, "podName"); + let container = getUrlHashParams(window.location.href, "container"); + let channelLogName = "channel-log-" + namespace + "-" + podName; + let channelResizeChannelName = "channel-resize-" + namespace + "-" + podName; + let lastLogs = []; + const memoizedFetchData = useCallback(async () => { + console.log(getK8sCoreV1Api()); + return getK8sCoreV1Api(); + }, []); + useEffect(() => { + memoizedFetchData().then((api) => { + setCoreV1Api(api); + }); + console.log(coreV1Api); + }, [memoizedFetchData]); // 使用 memoizedFetchData 作为依赖 + + // getApi(); + + // let response = window.api.getCoreV1Api().readNamespacedPodLog( + // podName, + // namespace + // ); + // let body = (response).body; + // + // useEffect(() => { + // console.log(coreV1Api, "core"); + // }); + // setTimeout(async () => { + // let log = await pollLogs(); + // console.log(log); + // }, 1000); + + async function pollLogs() { + let timestamp = Math.floor(new Date().getTime() / 1000 - (1000 * 5)); + let logs = (await coreV1Api.readNamespacedPodLog( + podName, + namespace, + undefined, + false, + false, + 1024000, + "false", + false, + timestamp, + 100, + true + )).response.body; + console.log(logs); + } + + // window.api.k8sCoreV1Api().then((coreV1Api) => { + // pollLogs(coreV1Api); + // // setCoreV1Api(coreV1Api) + // }); + + // useEffect(() => { + // async function fetchData() { + // await window.api.k8sCoreV1Api().then((coreV1Api) => { + // setCoreV1Api(coreV1Api); + // }); + // } + // fetchData() + // }, []); + + // useEffect(() => { + // pollLogs(); + // }, []); + + // let lastLogs = []; + + + // @ts-ignore + // window.electron.ipcRenderer.on(channelLogName, (event, logs) => { + // let logsSplits = logs.split("\n").filter(line => line.trim() !== ""); + // let filterLog = logsSplits.filter(log => !lastLogs.includes(log)); + // lastLogs = logs; + // setLogsContainer(logsContainer => logsContainer + filterLog.join("\n")); + // console.log(logsContainer.length) + // }); + // // @ts-ignore + window.electron.ipcRenderer.on(channelResizeChannelName, (event, size) => { + setWindowWidth(size[0]); + setWindowHeight(size[1]); + }); + + + return logsContainer === "" ? + ( + + ) : ( + + +
    +
    + {/*{*/} + {/* unLogLockedStatus ? (*/} + {/* logLockedHandler(false)}>*/} + {/* */} + {/* */} + {/* ) : (*/} + {/* logLockedHandler(true)}>*/} + {/* */} + {/* */} + {/* )*/} + {/*}*/} + +
    +
    {logsContainer}
    +
    + +
    + ); +}; +export default K8sLogs; diff --git a/src/renderer/src/pages/k8s/K8sPodList.tsx b/src/renderer/src/pages/k8s/K8sPodList.tsx new file mode 100644 index 0000000..304da73 --- /dev/null +++ b/src/renderer/src/pages/k8s/K8sPodList.tsx @@ -0,0 +1,75 @@ +import React, { useEffect, useState } from "react"; +import KBreadcrumbComponent from "../../components/KBreadcrumb"; +import Style from "../../components/card/KPods.module.less"; +import { Col, Divider, Loading, Radio, Row } from "tdesign-react"; +import KPodCard from "../../components/card/KPodCard"; +import { K8sPod } from "../../response/K8sPod"; +import { httpAllPods, httpNamespaces } from "../../module/Api"; +import { K8sNamespace } from "../../response/K8sNamespace"; + +const K8sPodList: React.FC = () => { + // const params = useParams<{ namespace: string | undefined, deploymentName: string | undefined }>(); + const breadcrumbs: ({ content: string, to?: string })[] = [ + { content: "集群", to: "/" }, + { content: "节点列表", to: "/k8s/deployments" } + ]; + + let [loading, setLoading] = useState(false); + let [namespaces, setNamespaces] = useState([]); + let [defaultNamespace, setDefaultNamespace] = useState(""); + let [pods, setPods] = useState([]); + useEffect(() => { + httpNamespaces().then((data) => { + setNamespaces(data); + changeNamespace(false, data[0].name); + }); + }, []); + + function changeNamespace(loading: boolean, namespaceName: string) { + setLoading(loading); + setDefaultNamespace(namespaceName); + httpAllPods(namespaceName).then((data) => { + setLoading(!loading); + setPods(data); + }); + } + + return ( + <> + +
    +
    + 集群筛选 +
    +
    + { + changeNamespace(false, data); + }}> + {namespaces.map((namespace, index) => ( + {namespace.name} + ))} + +
    +
    + + { + !loading ? ( +
    + +
    + ) : ( +
    + + {pods?.map((pod, index) => ( + + + + ))} + +
    + ) + } + + ); +}; +export default K8sPodList; diff --git a/src/renderer/src/pages/k8s/K8sPods.tsx b/src/renderer/src/pages/k8s/K8sPods.tsx new file mode 100644 index 0000000..242ea3b --- /dev/null +++ b/src/renderer/src/pages/k8s/K8sPods.tsx @@ -0,0 +1,21 @@ +import React from "react"; +import { useParams } from "react-router-dom"; +import KPodsComponent from "../../components/card/KPods"; +import KBreadcrumbComponent from "../../components/KBreadcrumb"; + +const K8sPods: React.FC = () => { + const params = useParams<{ namespace: string | undefined, deploymentName: string | undefined }>(); + const breadcrumbs: ({ content: string, to?: string })[] = [ + { content: "集群", to: "" }, + { content: "服务列表", to: "/#/k8s/deployments" }, + { content: params.deploymentName || "" } + ]; + + return ( + <> + + + + ); +}; +export default K8sPods; diff --git a/src/renderer/src/pages/menu/AppMenu.tsx b/src/renderer/src/pages/menu/AppMenu.tsx new file mode 100644 index 0000000..72a124f --- /dev/null +++ b/src/renderer/src/pages/menu/AppMenu.tsx @@ -0,0 +1,47 @@ +import { useState } from "react"; +import routers, { IRouter } from "../../router"; +import MenuItem from "tdesign-react/es/menu/MenuItem"; +import SubMenu from "tdesign-react/es/menu/SubMenu"; +import { useNavigate } from "react-router-dom"; +import { Menu } from "tdesign-react"; + +export default function AppMenus() { + let [defaultMenu] = useState(window.location.pathname); + const navigate = useNavigate(); + const appMenus = (routes: IRouter[], parentPath: string) => + routes.map((route) => { + let correctUri: string = parentPath == undefined || parentPath === "" ? route?.path : parentPath + "/" + route?.path; + const Icon= route?.meta?.Icon; + if (route?.children == undefined || route?.children?.length == 0) { + if (route?.meta?.hidden) { + return; + } + return ( + navigate(correctUri)} + icon={Icon ? : undefined} + > + {route?.meta?.title} + + ); + } else { + return ( + : undefined} + > + {appMenus(route?.children, route?.path)} + + ); + } + }); + return ( + + {appMenus(routers, "")} + + ); +} diff --git a/src/renderer/src/response/K8sDeployment.ts b/src/renderer/src/response/K8sDeployment.ts new file mode 100644 index 0000000..7a23f12 --- /dev/null +++ b/src/renderer/src/response/K8sDeployment.ts @@ -0,0 +1,61 @@ +export class K8sDeployment { + + private _namespace: string; + + private _name: string; + + private _replicas: string; + + private _creationTimestamp: Date; + + private _imageName: string; + + + constructor(namespace: string, name: string, replicas: string, creationTimestamp: Date, imageName: string) { + this._namespace = namespace; + this._name = name; + this._replicas = replicas; + this._creationTimestamp = creationTimestamp; + this._imageName = imageName; + } + + get namespace(): string { + return this._namespace; + } + + set namespace(value: string) { + this._namespace = value; + } + + get name(): string { + return this._name; + } + + set name(value: string) { + this._name = value; + } + + get replicas(): string { + return this._replicas; + } + + set replicas(value: string) { + this._replicas = value; + } + + get creationTimestamp(): Date { + return this._creationTimestamp; + } + + set creationTimestamp(value: Date) { + this._creationTimestamp = value; + } + + get imageName(): string { + return this._imageName; + } + + set imageName(value: string) { + this._imageName = value; + } +} diff --git a/src/renderer/src/response/K8sNamespace.ts b/src/renderer/src/response/K8sNamespace.ts new file mode 100644 index 0000000..ebf7906 --- /dev/null +++ b/src/renderer/src/response/K8sNamespace.ts @@ -0,0 +1,18 @@ +export class K8sNamespace { + + private _name: string; + + + constructor(name: string) { + this._name = name; + } + + + get name(): string { + return this._name; + } + + set name(value: string) { + this._name = value; + } +} diff --git a/src/renderer/src/response/K8sPod.ts b/src/renderer/src/response/K8sPod.ts new file mode 100644 index 0000000..c2e76be --- /dev/null +++ b/src/renderer/src/response/K8sPod.ts @@ -0,0 +1,128 @@ +export class K8sPod { + + private _namespace: string; + + private _deploymentName: string; + + private _container: string; + + private _limits: number; + + private _requests: number; + + private _restartCount: number; + + private _name: string; + + private _cpuUsage: number; + + private _memoryUsage: number; + + private _imageName: string; + + private _creationTimestamp: Date; + + + constructor(namespace: string, deploymentName: string, container: string, limits: number, requests: number, restartCount: number, name: string, cpuUsage: number, memoryUsage: number, imageName: string, creationTimestamp: Date) { + this._namespace = namespace; + this._deploymentName = deploymentName; + this._container = container; + this._limits = limits; + this._requests = requests; + this._restartCount = restartCount; + this._name = name; + this._cpuUsage = cpuUsage; + this._memoryUsage = memoryUsage; + this._imageName = imageName; + this._creationTimestamp = creationTimestamp; + } + + + get namespace(): string { + return this._namespace; + } + + set namespace(value: string) { + this._namespace = value; + } + + get deploymentName(): string { + return this._deploymentName; + } + + set deploymentName(value: string) { + this._deploymentName = value; + } + + get container(): string { + return this._container; + } + + set container(value: string) { + this._container = value; + } + + get limits(): number { + return this._limits; + } + + set limits(value: number) { + this._limits = value; + } + + get requests(): number { + return this._requests; + } + + set requests(value: number) { + this._requests = value; + } + + get restartCount(): number { + return this._restartCount; + } + + set restartCount(value: number) { + this._restartCount = value; + } + + get name(): string { + return this._name; + } + + set name(value: string) { + this._name = value; + } + + get cpuUsage(): number { + return this._cpuUsage; + } + + set cpuUsage(value: number) { + this._cpuUsage = value; + } + + get memoryUsage(): number { + return this._memoryUsage; + } + + set memoryUsage(value: number) { + this._memoryUsage = value; + } + + get imageName(): string { + return this._imageName; + } + + set imageName(value: string) { + this._imageName = value; + } + + get creationTimestamp(): Date { + return this._creationTimestamp; + } + + set creationTimestamp(value: Date) { + this._creationTimestamp = value; + } +} diff --git a/src/renderer/src/router/index.ts b/src/renderer/src/router/index.ts new file mode 100644 index 0000000..bb6d2be --- /dev/null +++ b/src/renderer/src/router/index.ts @@ -0,0 +1,83 @@ +import React, { lazy } from "react"; +import { BrowserRouterProps } from "react-router-dom"; +import { DashboardIcon, TreeListIcon, ServerIcon, TreeRoundDotVerticalIcon } from "tdesign-icons-react"; + +export interface IRouter { + path: string; + redirect?: string; + Component?: React.FC | (() => any); + meta?: { + title?: string; + Icon?: React.FC; + hidden?: boolean; + single?: boolean; + fullScreen?: boolean; + }; + children?: IRouter[]; +} + +const routes: IRouter[] = [ + { + path: "/", + meta: { + title: "仪表盘", + hidden: false, + Icon: DashboardIcon + }, + Component: lazy(() => import("../pages/index/Dashboard")) + }, + { + path: "/k8s", + meta: { + title: "集群", + hidden: false, + Icon: TreeListIcon + }, + children: [ + { + path: "deployments", + Component: lazy(() => import("../pages/k8s/K8sDeployments")), + meta: { + title: "服务列表", + hidden: false, + Icon: ServerIcon + } + }, + { + path: "podList", + Component: lazy(() => import("../pages/k8s/K8sPodList")), + meta: { + title: "节点列表", + hidden: false, + Icon: TreeRoundDotVerticalIcon + } + }, + { + path: "pods", + Component: lazy(() => import("../pages/k8s/K8sPods")), + meta: { + hidden: true + } + }, + { + path: "pods/:namespace/:deploymentName", + Component: lazy(() => import("../pages/k8s/K8sPods")), + meta: { + hidden: true + } + }, + { + path: "/pod/log", + Component: lazy(() => import("../pages/k8s/K8sLogs")), + meta: { + title: "查看LOG", + hidden: true, + fullScreen: true + } + } + ] + } +]; +const allRoutes = [...routes]; + +export default allRoutes; diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts new file mode 100644 index 0000000..62ac47c --- /dev/null +++ b/src/renderer/src/store/index.ts @@ -0,0 +1,16 @@ +import { configureStore } from "@reduxjs/toolkit"; +import globalSlice from "./reducer/GlobalReducer"; + +const store = configureStore({ + reducer: { + global: globalSlice + }, + middleware: getDefaultMiddleware => getDefaultMiddleware({ + serializableCheck: false + }) +}); + +export type RootState = ReturnType +export type AppDispatch = typeof store.dispatch + +export default store; diff --git a/src/renderer/src/store/reducer/GlobalReducer.ts b/src/renderer/src/store/reducer/GlobalReducer.ts new file mode 100644 index 0000000..9c7e093 --- /dev/null +++ b/src/renderer/src/store/reducer/GlobalReducer.ts @@ -0,0 +1,38 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; + +interface GlobalState { // 定义初始化状态的类型 + isDev: boolean; + kubeConfig: any; +} + +const initialState: GlobalState = { // 初始化状态 + isDev: true, + kubeConfig: undefined +}; +export const globalSlice = createSlice({ + name: "global", + initialState, + reducers: { + setIsDev: (state, action: PayloadAction) => { + state.isDev = action.payload; + }, + // @ts-ignore + getIsDev: (state) => { + return state.isDev; + }, + setKubeConfig: (state, action: PayloadAction) => { + console.log("设置了kubeConfig") + state.kubeConfig = action.payload; + }, + getKubeConfig: (state) => { + return state.kubeConfig; + } + // incrementByAmount: (state, action: PayloadAction) => { + // state.value += action.payload; + // } + } +}); + +export const { setIsDev, getIsDev, setKubeConfig, getKubeConfig } = globalSlice.actions; // 导出操作state的喊出 +// export const selectCount = (state: RootState) => state; +export default globalSlice.reducer; diff --git a/src/renderer/src/utils/HttpRequest.ts b/src/renderer/src/utils/HttpRequest.ts new file mode 100644 index 0000000..32d29f7 --- /dev/null +++ b/src/renderer/src/utils/HttpRequest.ts @@ -0,0 +1,59 @@ +import axios, { AxiosResponse, InternalAxiosRequestConfig } from "axios"; +import type { AxiosInstance, AxiosRequestConfig } from "axios"; +import global from "./global"; +import { RequestConfig, RequestInterceptors } from "./types"; + +export class HttpRequest { + + instance: AxiosInstance; + + interceptorsObj?: RequestInterceptors; + + constructor(config: RequestConfig) { + config.baseURL = global.DEPLOY_API_BASE_URL; + this.instance = axios.create(config); + this.interceptorsObj = config.interceptors; + this.instance.interceptors.request.use((requestConfig: InternalAxiosRequestConfig) => { + return requestConfig; + }, + (error: any) => { + console.error(error); + } + ); + this.instance.interceptors.response.use( + (res: AxiosResponse) => { + return res.data; + }, + (error: any) => { + console.error(error); + } + ); + } + + private request(config: RequestConfig): Promise { + return new Promise((resolve, reject) => { + if (config.interceptors?.requestInterceptors) { + config = config.interceptors.requestInterceptors(config); + } + this.instance.request(config).then((response: AxiosResponse) => { + if (config.interceptors?.responseInterceptors) { + response = config.interceptors.responseInterceptors(response); + } + resolve(response); + }).catch((error: any) => { + reject(error); + }); + }); + } + + get(options: AxiosRequestConfig): Promise { + return this.request({ ...options, method: "GET" }).then((response) => { + if (response.data != null) { + return response.data; + } + return response; + }).catch((error: any) => { + throw new Error(error); + }); + } +} diff --git a/src/renderer/src/utils/global.ts b/src/renderer/src/utils/global.ts new file mode 100644 index 0000000..2ec309a --- /dev/null +++ b/src/renderer/src/utils/global.ts @@ -0,0 +1,5 @@ +export default class Global { + // @ts-ignore + static DEPLOY_API_BASE_URL = import.meta.env.VITE_DEPLOY_API_BASE_URL; +} + diff --git a/src/renderer/src/utils/types.ts b/src/renderer/src/utils/types.ts new file mode 100644 index 0000000..ede8298 --- /dev/null +++ b/src/renderer/src/utils/types.ts @@ -0,0 +1,16 @@ +// types.ts +import type { AxiosRequestConfig, AxiosResponse } from "axios"; + +export interface RequestInterceptors { + // 请求拦截 + requestInterceptors?: (config: AxiosRequestConfig) => AxiosRequestConfig; + requestInterceptorsCatch?: (err: any) => any; + // 响应拦截 + responseInterceptors?: (config: AxiosResponse) => AxiosResponse; + responseInterceptorsCatch?: (err: any) => any; +} + +// 自定义传入的参数 +export interface RequestConfig extends AxiosRequestConfig { + interceptors?: RequestInterceptors; +} diff --git a/src/renderer/src/utils/utils.ts b/src/renderer/src/utils/utils.ts new file mode 100644 index 0000000..99e087d --- /dev/null +++ b/src/renderer/src/utils/utils.ts @@ -0,0 +1,41 @@ +export function getUrlHashParams(url: string, name: string) { + let queryString = url.split("?")[1]; + // 如果没有查询参数,返回空对象 + if (!queryString) { + return {}; + } + // 处理带有 hash 地址的情况 + const hashIndex = queryString.indexOf("#"); + if (hashIndex !== -1) { + queryString = queryString.substring(0, hashIndex); + } + + // 将查询参数字符串解析为键值对 + const queryParams = {}; + queryString.split("&").forEach(param => { + const [key, value] = param.split("="); + // 如果值已经存在,则将其转换为数组存储 + if (queryParams[key]) { + if (Array.isArray(queryParams[key])) { + queryParams[key].push(decodeURIComponent(value)); + } else { + queryParams[key] = [queryParams[key], decodeURIComponent(value)]; + } + } else { + queryParams[key] = decodeURIComponent(value); + } + }); + + // 如果没有指定参数名称,则返回包含所有查询参数的对象 + if (!name) { + return queryParams; + } + + // 如果指定了参数名称 + if (queryParams[name]) { + return queryParams[name]; + } else { + // 参数不存在,返回空字符串 + return ""; + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..9ef5993 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.web.json" + } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..d239cfb --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,14 @@ +{ + "extends": "@electron-toolkit/tsconfig/tsconfig.node.json", + "include": [ + "electron.vite.config.*", + "src/main/**/*", + "src/preload/**/*" + ], + "compilerOptions": { + "composite": true, + "types": [ + "electron-vite/node" + ] + } +} diff --git a/tsconfig.web.json b/tsconfig.web.json new file mode 100644 index 0000000..b4e97a1 --- /dev/null +++ b/tsconfig.web.json @@ -0,0 +1,19 @@ +{ + "extends": "@electron-toolkit/tsconfig/tsconfig.web.json", + "include": [ + "src/renderer/src/env.d.ts", + "src/renderer/src/**/*", + "src/renderer/src/**/*.tsx", + "src/preload/*.d.ts" + ], + "compilerOptions": { + "composite": true, + "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "@renderer/*": [ + "src/renderer/src/*" + ] + } + } +}